From 2abab2a91ae4c2f9b31fb589ee0b6cd7a91dd7d7 Mon Sep 17 00:00:00 2001 From: dgw Date: Wed, 18 Jun 2025 21:36:01 -0500 Subject: [PATCH] Add I301 check for `if TYPE_CHECKING:` separated from other imports --- flake8_import_order/styles.py | 11 ++++++++++- tests/test_cases/type_checking_orphaned.py | 11 +++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/test_cases/type_checking_orphaned.py diff --git a/flake8_import_order/styles.py b/flake8_import_order/styles.py index 5240477..95f420b 100644 --- a/flake8_import_order/styles.py +++ b/flake8_import_order/styles.py @@ -48,6 +48,7 @@ def _check(self, previous_import, previous, current_import): and current_import.type_checking ): yield from self._check_I300(previous_import, current_import) + yield from self._check_I301(previous_import, current_import) previous_import = None if previous_import is not None: yield from self._check_I100(previous_import, current_import) @@ -78,13 +79,21 @@ def _check_I101(self, current_import): # noqa: N802 ) def _check_I300(self, previous_import, current_import): # noqa: N802 - if current_import.lineno - previous_import.end_lineno != 3: + if current_import.lineno - previous_import.end_lineno < 3: yield Error( current_import.lineno, "I300", "TYPE_CHECKING block should have one newline above.", ) + def _check_I301(self, previous_import, current_import): # noqa: N802 + if current_import.lineno - previous_import.end_lineno > 3: + yield Error( + current_import.lineno, + "I301", + "TYPE_CHECKING block should have no more than one newline above.", + ) + def _check_I100(self, previous_import, current_import): # noqa: N802 previous_key = self.import_key(previous_import) current_key = self.import_key(current_import) diff --git a/tests/test_cases/type_checking_orphaned.py b/tests/test_cases/type_checking_orphaned.py new file mode 100644 index 0000000..0488168 --- /dev/null +++ b/tests/test_cases/type_checking_orphaned.py @@ -0,0 +1,11 @@ +# cryptography edited google pep8 smarkets +from typing import TYPE_CHECKING + +import pytest + +from . import localpackage + +CONST = localpackage.CONST + +if TYPE_CHECKING: + import ast # I301