From 14691bc3817de6d1494fc79b7774dcd6e74554bc Mon Sep 17 00:00:00 2001 From: Andrii Makarenko Date: Mon, 19 Oct 2026 19:55:48 +0300 Subject: [PATCH] Do not walk into hidden directories in find_py_files() This commit prevents docformatter from traversing into hidden directories that weren't explicitly excluded --- src/docformatter/util.py | 4 ++++ tests/test_utility_functions.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/docformatter/util.py b/src/docformatter/util.py index 61721a2..31c4a95 100644 --- a/src/docformatter/util.py +++ b/src/docformatter/util.py @@ -73,6 +73,10 @@ def is_excluded(name, excluded): dirs[:] = [] continue + dirs[:] = [ + d for d in dirs if not is_hidden(d) and not is_excluded(d, exclude) + ] + files = sorted( [ _file diff --git a/tests/test_utility_functions.py b/tests/test_utility_functions.py index 8c709f9..bcdbbc9 100644 --- a/tests/test_utility_functions.py +++ b/tests/test_utility_functions.py @@ -146,3 +146,22 @@ def test_find_py_files_skips_excluded_directory_and_continues(tmp_path): result = list(find_py_files([str(root)], recursive=True, exclude=["a_excluded"])) assert result == [str(included / "included.py")] + + +@pytest.mark.unit +def test_find_py_files_skips_hidden_directory_recursive(tmp_path): + """Skip hidden directories when recursing even if not in exclude.""" + root = tmp_path / "project" + hidden = root / ".hidden" + nested_hidden = hidden / "nested" + visible = root / "visible" + nested_hidden.mkdir(parents=True) + visible.mkdir(parents=True) + (hidden / "hidden.py").touch() + (nested_hidden / "nested.py").touch() + (visible / "visible.py").touch() + + result = list(find_py_files([str(root)], recursive=True, exclude=None)) + + assert result == [str(visible / "visible.py")] +