Skip to content

Fails to detect Python projects that don't have a .py file in their root #105

@jwodder

Description

@jwodder

It appears that kondo (as of commit 69c153b) detects Python projects by looking for a file with a .py extension, at which point the directory in which this file is located is taken as the project root. However, this easily results in false negatives for modern Python packages, in which directories that need cleaning can be located above the directory of .py files.

Note the following about Python projects:

  • If a Python project is intended for distribution on PyPI, it will have a setup.py file (historical and now somewhat discouraged, but there's a lot of history), setup.cfg (declarative form of setup.py that was recommended for a while), and/or pyproject.toml file (new standard) in the project root.
  • If a Python project is not intended for distribution, it may or may not have any of setup.py/setup.cfg/pyproject.toml. If all are absent, the most reliable marker for a project root is probably a requirements.txt file, but this is purely conventional.
    • Some other reliable markers of Python project roots are configuration files for Python tools, such as tox.ini or noxfile.py.
  • Except in very simple or very messy projects, .py files tend to be organized under a directory with the same or similar name to that of the project. This directory is either located in the project root or nested inside a src/ directory in the project root (though, in the latter case, I'd expect such projects to also be the kind to have a setup.py, setup.cfg, or pyproject.toml file).
  • Due to how namespace packages are implemented, it is technically possible for the directory containing the .py files to be located inside one or more levels of otherwise-empty non-src/ directories, though I think it'd be highly unusual to do this if you weren't planning on distributing the project.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions