-
-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Labels
bugSomething isn't workingSomething isn't working
Description
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 ofsetup.py
that was recommended for a while), and/orpyproject.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 arequirements.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
ornoxfile.py
.
- Some other reliable markers of Python project roots are configuration files for Python tools, such as
- 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 asrc/
directory in the project root (though, in the latter case, I'd expect such projects to also be the kind to have asetup.py
,setup.cfg
, orpyproject.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 workingSomething isn't working