Python#
What licenseal reads in a Python project. The rules that hold for every ecosystem are under How a scan works.
- Registry: PyPI
- Manifests:
pyproject.toml(PEP 621, PEP 735, Poetry),requirements*.txt,setup.cfg,setup.py,Pipfile - Lockfiles:
uv.lock,poetry.lock,Pipfile.lock
What is read#
- Requirements files are those named
requirements*.txtor*-requirements.txt. - A
-rinclude is followed inside the scanned directory, and a setuptoolsfile:directive (install_requires = file: reqs.ininsetup.cfg,[tool.setuptools.dynamic]inpyproject.toml) is followed like one. - Extras are followed, from the
uv.lockedges when there is one.
Dev dependencies#
These count as dev dependencies:
- an extra, a dependency group, or a Poetry group named
dev,test,tests,testing,lint,ci, ordocs, and a dependency group one of those includes; - a requirements file whose name has one of those words set off by
-or_(requirements-dev.txt); Pipfiledev-packages.
Included requirements are dev or production by the file the chain starts from, and those of a file: directive by the option that names the file.
Off-registry dependencies#
These are reported as off-registry dependencies:
- a URL, VCS, or local-path requirement (
name @ <url>,git+https://…,./pkg.whl); - a Poetry
git/url/pathdependency; - a
[tool.uv.sources]git/url/pathentry; - a
PipfileVCS or path entry; - the corresponding sources in
uv.lock,poetry.lock, andPipfile.lock.
Not evaluated#
- PEP 508 environment markers (treated as always true) and
Requires-Python. -cconstraints files are not read, and a requirements file under another name that nothing includes is not scanned.[tool.uv]override-dependenciesandconstraint-dependenciesare not read: see What is not read.
See also#
- Dependency resolution and Versions and estimates, which apply to every ecosystem
- Alternate registries, for a package pinned to a Poetry
sourceor a uv index - Network egress, for the hosts contacted and what each is asked