Add type-checking plugin to linting checks (#1629)

* add type-checking plugin for flakeheaven

* update lock file

* fix type-checking issues in current codebase

* run linters
This commit is contained in:
Jonathan Wren 2022-11-03 07:18:35 -07:00 committed by GitHub
parent cb7e0ed289
commit c1eb0c54a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 45 additions and 8 deletions

View file

@ -1,14 +1,18 @@
# Copyright © 2012-2022 jrnl contributors # Copyright © 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html # License: https://www.gnu.org/licenses/gpl-3.0.html
from jrnl.messages import Message from typing import TYPE_CHECKING
from jrnl.output import print_msg from jrnl.output import print_msg
if TYPE_CHECKING:
from jrnl.messages import Message
class JrnlException(Exception): class JrnlException(Exception):
"""Common exceptions raised by jrnl.""" """Common exceptions raised by jrnl."""
def __init__(self, *messages: Message): def __init__(self, *messages: "Message"):
self.messages = messages self.messages = messages
def print(self) -> None: def print(self) -> None:

View file

@ -1,14 +1,17 @@
# Copyright © 2012-2022 jrnl contributors # Copyright © 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html # License: https://www.gnu.org/licenses/gpl-3.0.html
from typing import TYPE_CHECKING
from typing import Mapping from typing import Mapping
from typing import NamedTuple from typing import NamedTuple
from jrnl.messages.MsgStyle import MsgStyle from jrnl.messages.MsgStyle import MsgStyle
from jrnl.messages.MsgText import MsgText
if TYPE_CHECKING:
from jrnl.messages.MsgText import MsgText
class Message(NamedTuple): class Message(NamedTuple):
text: MsgText text: "MsgText"
style: MsgStyle = MsgStyle.NORMAL style: MsgStyle = MsgStyle.NORMAL
params: Mapping = {} params: Mapping = {}

View file

@ -1,14 +1,15 @@
# Copyright © 2012-2022 jrnl contributors # Copyright © 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html # License: https://www.gnu.org/licenses/gpl-3.0.html
from typing import TYPE_CHECKING
from argparse import Namespace
from jrnl.config import make_yaml_valid_dict from jrnl.config import make_yaml_valid_dict
from jrnl.config import update_config from jrnl.config import update_config
if TYPE_CHECKING:
from argparse import Namespace
# import logging # import logging
def apply_overrides(args: Namespace, base_config: dict) -> dict: def apply_overrides(args: "Namespace", base_config: dict) -> dict:
"""Unpack CLI provided overrides into the configuration tree. """Unpack CLI provided overrides into the configuration tree.
:param overrides: List of configuration key-value pairs collected from the CLI :param overrides: List of configuration key-value pairs collected from the CLI

30
poetry.lock generated
View file

@ -112,6 +112,14 @@ python-versions = ">=3.6.0"
[package.extras] [package.extras]
unicode-backport = ["unicodedata2"] unicode-backport = ["unicodedata2"]
[[package]]
name = "classify-imports"
version = "4.2.0"
description = "Utilities for refactoring imports in python-like syntax."
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]] [[package]]
name = "click" name = "click"
version = "8.1.3" version = "8.1.3"
@ -257,6 +265,18 @@ isort = ">=4.3.5,<6"
[package.extras] [package.extras]
test = ["pytest"] test = ["pytest"]
[[package]]
name = "flake8-type-checking"
version = "2.2.0"
description = "A flake8 plugin for managing type-checking imports & forward references"
category = "dev"
optional = false
python-versions = ">=3.8"
[package.dependencies]
classify-imports = "*"
flake8 = "*"
[[package]] [[package]]
name = "flakeheaven" name = "flakeheaven"
version = "3.2.0" version = "3.2.0"
@ -1158,7 +1178,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=
[metadata] [metadata]
lock-version = "1.1" lock-version = "1.1"
python-versions = ">=3.10.0, <3.13" python-versions = ">=3.10.0, <3.13"
content-hash = "13e2102b7ddeb9ac4f1f2fddcfa6275d565c3eec9fa8da1b4657a02e20f900c9" content-hash = "63f39baa62c8641eb6329472de340a9f06d9ffea3096a4095e90f98ce2986f91"
[metadata.files] [metadata.files]
ansiwrap = [ ansiwrap = [
@ -1283,6 +1303,10 @@ charset-normalizer = [
{file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"}, {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"},
{file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"}, {file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"},
] ]
classify-imports = [
{file = "classify_imports-4.2.0-py2.py3-none-any.whl", hash = "sha256:dbbc264b70a470ed8c6c95976a11dfb8b7f63df44ed1af87328bbed2663f5161"},
{file = "classify_imports-4.2.0.tar.gz", hash = "sha256:7abfb7ea92149b29d046bd34573d247ba6e68cc28100c801eba4af17964fc40e"},
]
click = [ click = [
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
@ -1355,6 +1379,10 @@ flake8-isort = [
{file = "flake8-isort-5.0.0.tar.gz", hash = "sha256:e336f928c7edc509684930ab124414194b7f4e237c712af8fcbdf49d8747b10c"}, {file = "flake8-isort-5.0.0.tar.gz", hash = "sha256:e336f928c7edc509684930ab124414194b7f4e237c712af8fcbdf49d8747b10c"},
{file = "flake8_isort-5.0.0-py3-none-any.whl", hash = "sha256:c73f9cbd1bf209887f602a27b827164ccfeba1676801b2aa23cb49051a1be79c"}, {file = "flake8_isort-5.0.0-py3-none-any.whl", hash = "sha256:c73f9cbd1bf209887f602a27b827164ccfeba1676801b2aa23cb49051a1be79c"},
] ]
flake8-type-checking = [
{file = "flake8_type_checking-2.2.0-py3-none-any.whl", hash = "sha256:c7d9d7adc6cd635a5a1a7859e5e0140f4f8f1705982a22db45872dd9acd49753"},
{file = "flake8_type_checking-2.2.0.tar.gz", hash = "sha256:f7972fc9102f3f632ace1f4b1c5c20b900b8b7b529f04bb6c1fe0a11801e9658"},
]
flakeheaven = [ flakeheaven = [
{file = "flakeheaven-3.2.0-py3-none-any.whl", hash = "sha256:ec5a508c3db64d73128b65cb2a5a2c0a2d9f2e4b435e9fa2bcc03bf0df86da79"}, {file = "flakeheaven-3.2.0-py3-none-any.whl", hash = "sha256:ec5a508c3db64d73128b65cb2a5a2c0a2d9f2e4b435e9fa2bcc03bf0df86da79"},
{file = "flakeheaven-3.2.0.tar.gz", hash = "sha256:225333d7bf309079f19a2c5f02d427fc7558a0d0c065944de88041ca94f5525c"}, {file = "flakeheaven-3.2.0.tar.gz", hash = "sha256:225333d7bf309079f19a2c5f02d427fc7558a0d0c065944de88041ca94f5525c"},

View file

@ -47,6 +47,7 @@ black = { version = ">=21.5b2", allow-prereleases = true }
flakeheaven = ">=3.0" flakeheaven = ">=3.0"
flake8-black = ">=0.3.3" flake8-black = ">=0.3.3"
flake8-isort = ">=5.0.0" flake8-isort = ">=5.0.0"
flake8-type-checking = ">=2.2.0"
ipdb = "*" ipdb = "*"
isort = ">=5.10" isort = ">=5.10"
mkdocs = ">=1.0,<1.3" mkdocs = ">=1.0,<1.3"