Skip to content

--recursive option does not find .py files in sub-directories of packages #9187

Open
@GrimzEcho

Description

@GrimzEcho

Bug description

When running pylint --recursive=y on a directory that contains both a package and a sub-directory, pylint correctly locates and lints all py files, both those in the non-package sub-directory and those in the package.

However, when running pylint --resursive=y on a package that contains both a sub-package and a sub-directory, pylint will not locate or lint any files in the sub-directory.

Example structure:

- tmp
  - src1
    - my_package
      * __init__.py
      * foo.py
    - scripts
      * bar.py
  - src2
    * __init__.py
    - my_package
      * __init__.py
      * foo.py
    - scripts
      * bar.py

The only difference between src1 and src2 is that src2 is a package.

Running pylint --recursive=y ./tmp/src1 will find/lint both foo.py and bar.py.
Running pylint --recursive=y ./tmp/src2 will not find/lint bar.py

Configuration

No response

Command used

pylint --recursive ./src2

Pylint output

************* Module src2.package1.foo
lint-test/src2/package1/foo.py:1:0: C0114: Missing module docstring (missing-module-docstring)
lint-test/src2/package1/foo.py:1:0: C0104: Disallowed name "foo" (disallowed-name)
lint-test/src2/package1/foo.py:2:0: W0107: Unnecessary pass statement (unnecessary-pass)
lint-test/src2/package1/foo.py:1:0: W0611: Unused import sys (unused-import)

Expected behavior

bar.py is linted as intended by #5682

************* Module foo
lint-test/src1/scripts/foo.py:1:0: C0114: Missing module docstring (missing-module-docstring)
lint-test/src1/scripts/foo.py:1:0: C0104: Disallowed name "foo" (disallowed-name)
lint-test/src1/scripts/foo.py:2:0: W0107: Unnecessary pass statement (unnecessary-pass)
lint-test/src1/scripts/foo.py:1:0: W0611: Unused import sys (unused-import)
************* Module package1.foo
lint-test/src1/package1/foo.py:1:0: C0114: Missing module docstring (missing-module-docstring)
lint-test/src1/package1/foo.py:1:0: C0104: Disallowed name "foo" (disallowed-name)
lint-test/src1/package1/foo.py:2:0: W0107: Unnecessary pass statement (unnecessary-pass)
lint-test/src1/package1/foo.py:1:0: W0611: Unused import sys (unused-import)

Pylint version

pylint 2.17.7
astroid 2.15.6
Python 3.7.3 (default, Oct 11 2023, 09:51:27)

OS / Environment

Debian 9

Additional dependencies

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bug 🪲Help wanted 🙏Outside help would be appreciated, good for new contributorsNeeds PRThis issue is accepted, sufficiently specified and now needs an implementation

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions