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")] +