Skip to content

Commit

Permalink
Fix the first known party path expansion
Browse files Browse the repository at this point in the history
  • Loading branch information
kjagiello committed Aug 14, 2020
1 parent f7c7bdc commit 2a3afd1
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 13 deletions.
7 changes: 3 additions & 4 deletions isort/deprecated/finders.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,14 +85,13 @@ def __init__(self, config: Config) -> None:
regexp = "^" + known_pattern.replace("*", ".*").replace("?", ".?") + "$"
self.known_patterns.append((re.compile(regexp), placement))

@staticmethod
def _parse_known_pattern(pattern: str) -> List[str]:
def _parse_known_pattern(self, pattern: str) -> List[str]:
"""Expand pattern if identified as a directory and return found sub packages"""
if pattern.endswith(os.path.sep):
patterns = [
filename
for filename in os.listdir(pattern)
if os.path.isdir(os.path.join(pattern, filename))
for filename in os.listdir(os.path.join(self.config.directory, pattern))
if os.path.isdir(os.path.join(self.config.directory, pattern, filename))
]
else:
patterns = [pattern]
Expand Down
7 changes: 3 additions & 4 deletions isort/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -523,14 +523,13 @@ def section_comments(self) -> Tuple[str, ...]:
self._section_comments = tuple(f"# {heading}" for heading in self.import_headings.values())
return self._section_comments

@staticmethod
def _parse_known_pattern(pattern: str) -> List[str]:
def _parse_known_pattern(self, pattern: str) -> List[str]:
"""Expand pattern if identified as a directory and return found sub packages"""
if pattern.endswith(os.path.sep):
patterns = [
filename
for filename in os.listdir(pattern)
if os.path.isdir(os.path.join(pattern, filename))
for filename in os.listdir(os.path.join(self.directory, pattern))
if os.path.isdir(os.path.join(self.directory, pattern, filename))
]
else:
patterns = [pattern]
Expand Down
17 changes: 12 additions & 5 deletions tests/test_isort.py
Original file line number Diff line number Diff line change
Expand Up @@ -1072,27 +1072,33 @@ def test_thirdy_party_overrides_standard_section() -> None:
assert test_output == "import os\nimport sys\n\nimport profile.test\n"


def test_known_pattern_path_expansion() -> None:
def test_known_pattern_path_expansion(tmpdir) -> None:
"""Test to ensure patterns ending with path sep gets expanded
and nested packages treated as known patterns.
"""
src_dir = tmpdir.mkdir("src")
src_dir.mkdir("foo")
src_dir.mkdir("bar")
test_input = (
"from kate_plugin import isort_plugin\n"
"import sys\n"
"import isort.settings\n"
"from foo import settings\n"
"import bar\n"
"import this\n"
"import os\n"
)
test_output = isort.code(
code=test_input,
default_section="THIRDPARTY",
known_first_party=["./", "this", "kate_plugin", "isort"],
known_first_party=["src/", "this", "kate_plugin"],
directory=str(tmpdir),
)
test_output_old_finder = isort.code(
code=test_input,
default_section="FIRSTPARTY",
old_finders=True,
known_first_party=["./", "this", "kate_plugin", "isort"],
known_first_party=["src/", "this", "kate_plugin"],
directory=str(tmpdir),
)
assert (
test_output_old_finder
Expand All @@ -1101,8 +1107,9 @@ def test_known_pattern_path_expansion() -> None:
"import os\n"
"import sys\n"
"\n"
"import isort.settings\n"
"import bar\n"
"import this\n"
"from foo import settings\n"
"from kate_plugin import isort_plugin\n"
)
)
Expand Down

0 comments on commit 2a3afd1

Please sign in to comment.