diff --git a/jrnl/exception.py b/jrnl/exception.py index 86140cd9..b4ec2be8 100644 --- a/jrnl/exception.py +++ b/jrnl/exception.py @@ -1,14 +1,18 @@ # Copyright © 2012-2022 jrnl contributors # 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 +if TYPE_CHECKING: + from jrnl.messages import Message + class JrnlException(Exception): """Common exceptions raised by jrnl.""" - def __init__(self, *messages: Message): + def __init__(self, *messages: "Message"): self.messages = messages def print(self) -> None: diff --git a/jrnl/messages/Message.py b/jrnl/messages/Message.py index e4d6176a..bb193f5f 100644 --- a/jrnl/messages/Message.py +++ b/jrnl/messages/Message.py @@ -1,14 +1,17 @@ # Copyright © 2012-2022 jrnl contributors # License: https://www.gnu.org/licenses/gpl-3.0.html +from typing import TYPE_CHECKING from typing import Mapping from typing import NamedTuple from jrnl.messages.MsgStyle import MsgStyle -from jrnl.messages.MsgText import MsgText + +if TYPE_CHECKING: + from jrnl.messages.MsgText import MsgText class Message(NamedTuple): - text: MsgText + text: "MsgText" style: MsgStyle = MsgStyle.NORMAL params: Mapping = {} diff --git a/jrnl/override.py b/jrnl/override.py index 4b6506ee..75a400b9 100644 --- a/jrnl/override.py +++ b/jrnl/override.py @@ -1,14 +1,15 @@ # Copyright © 2012-2022 jrnl contributors # License: https://www.gnu.org/licenses/gpl-3.0.html - -from argparse import Namespace +from typing import TYPE_CHECKING from jrnl.config import make_yaml_valid_dict from jrnl.config import update_config +if TYPE_CHECKING: + from argparse import Namespace # 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. :param overrides: List of configuration key-value pairs collected from the CLI diff --git a/poetry.lock b/poetry.lock index 36475675..9b4d4c65 100644 --- a/poetry.lock +++ b/poetry.lock @@ -112,6 +112,14 @@ python-versions = ">=3.6.0" [package.extras] 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]] name = "click" version = "8.1.3" @@ -257,6 +265,18 @@ isort = ">=4.3.5,<6" [package.extras] 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]] name = "flakeheaven" version = "3.2.0" @@ -1158,7 +1178,7 @@ testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>= [metadata] lock-version = "1.1" python-versions = ">=3.10.0, <3.13" -content-hash = "13e2102b7ddeb9ac4f1f2fddcfa6275d565c3eec9fa8da1b4657a02e20f900c9" +content-hash = "63f39baa62c8641eb6329472de340a9f06d9ffea3096a4095e90f98ce2986f91" [metadata.files] ansiwrap = [ @@ -1283,6 +1303,10 @@ charset-normalizer = [ {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"}, {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 = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {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-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 = [ {file = "flakeheaven-3.2.0-py3-none-any.whl", hash = "sha256:ec5a508c3db64d73128b65cb2a5a2c0a2d9f2e4b435e9fa2bcc03bf0df86da79"}, {file = "flakeheaven-3.2.0.tar.gz", hash = "sha256:225333d7bf309079f19a2c5f02d427fc7558a0d0c065944de88041ca94f5525c"}, diff --git a/pyproject.toml b/pyproject.toml index 695a1ea7..e3c5592f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,6 +47,7 @@ black = { version = ">=21.5b2", allow-prereleases = true } flakeheaven = ">=3.0" flake8-black = ">=0.3.3" flake8-isort = ">=5.0.0" +flake8-type-checking = ">=2.2.0" ipdb = "*" isort = ">=5.10" mkdocs = ">=1.0,<1.3"