setup-cfg-fmt
apply a consistent format to setup.cfg files
installation
pip install setup-cfg-fmt
as a pre-commit hook
See pre-commit for instructions
Sample .pre-commit-config.yaml:
- repo: https://github.com/asottile/setup-cfg-fmt
rev: v3.3.0
hooks:
- id: setup-cfg-fmt
cli
Consult the help for the latest usage:
$ setup-cfg-fmt --help
what does it do?
sets a consistent ordering for attributes
For example, name and version (the most important metadata) will always
appear at the top.
[metadata]
-version = 1.14.4
-name = pre_commit
+name = pre_commit
+version = 1.14.4
normalizes dashes to underscores in project name
pipwill normalize names to dashesfoo_bar=>foo-barpython setup.py sdistproduces a filename with the name verbatimpip wheel .produces a filename with an underscore-normalized name
$ # with dashed name
$ python setup.py sdist && pip wheel -w dist .
...
$ ls dist/ | cat
setup_cfg_fmt-0.0.0-py2.py3-none-any.whl
setup-cfg-fmt-0.0.0.tar.gz
$ # with underscore name
$ python setup.py sdist && pip wheel -w dist .
...
$ ls dist/ | cat
setup_cfg_fmt-0.0.0-py2.py3-none-any.whl
setup_cfg_fmt-0.0.0.tar.gz
This makes it easier to upload packages to pypi since they end up with the same filename prefix.
[metadata]
-name = pre-commit
+name = pre_commit
normalizes dashes to underscores in keys
setuptools allows dashed names but does not document them.
[metadata]
name = pre-commit
-long-description = file: README.md
+long_description = file: README.md
adds long_description if README is present
This will show up on the pypi project page
[metadata]
name = pre_commit
version = 1.14.5
+long_description = file: README.md
+long_description_content_type = text/markdown
adds license_file / license if LICENSE exists
[metadata]
name = pre_commit
version = 1.14.5
+license = MIT
+license_file = LICENSE
set python_requires
A few sources are searched for guessing python_requires:
- the existing
python_requiressetting itself envlistintox.iniif present- python version
classifiersthat are already set - the
--min-py-versionargument
adds python version classifiers
classifiers are generated based on:
- the
python_requiressetting - the
--max-py-versionargument --include-version-classifiersis specified
name = pkg
version = 1.0
+classifiers =
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
+ Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
+ Programming Language :: Python :: 3.11
+ ...
without --include-version-classifiers only the major version will be included:
name = pkg
version = 1.0
+classifiers =
+ Programming Language :: Python :: 3
sorts classifiers
[metadata]
name = pre_commit
version = 1.14.5
classifiers =
- Programming Language :: Python :: 3
+ Programming Language :: Python :: 3
+ Programming Language :: Python :: 3.6
removes empty options in any section
[options]
-dependency_links =
python_requires = >= 3.6.1
related projects
- setup-py-upgrade: automatically migrate
setup.py->setup.cfg
Metadata
Release files for setup-cfg-fmt 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| setup_cfg_fmt-3.3.0.tar.gz | 7.6 kB | Without provenance | Details for setup_cfg_fmt-3.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| setup_cfg_fmt-3.3.0-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for setup_cfg_fmt-3.3.0-py2.py3-none-any.whl |
Total release size: 15.7 kB
Release files / setup_cfg_fmt-3.3.0.tar.gz
| Download URL | setup_cfg_fmt-3.3.0.tar.gz |
|---|---|
| Size | 7.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eeaca667a4d1e48eafff7b36d57f8bbc6561705085f62672b26f211d6b0adcb4
|
|
BLAKE2b-256 checksum How to use checksums |
f53bb7b1b52970b2f309c09428d5b2ba99c405de96c8070a7862f9138bfc521d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / setup_cfg_fmt-3.3.0-py2.py3-none-any.whl
| Download URL | setup_cfg_fmt-3.3.0-py2.py3-none-any.whl |
|---|---|
| Size | 8.1 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
af0c9cde0ddb24b7dbdac1885059550b5070b44289b92bb18e93776a2f408a05
|
|
BLAKE2b-256 checksum How to use checksums |
61aea5e52df3afb248eb51283d9bb4ccc88f3187c20e1412387761da19413bb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for setup-cfg-fmt 3.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.