NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Simplify your setup.py
Last release 7 months ago
17 Feb 2026
Release timing varies
gaps range from 3 weeks to 1.1 years
Most releases are documented
notes for 47 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
62 releases · first in 2018
Test with py3.14, publish sdist with py3.13
Test with py3.14, publish sdist with py3.13
Removed commands: entrypoints, cleanall
Removed post-version-bump hook support (unused, unnecessary, and was not well documented)
Removed old register hook used with setuptools v50
Removed support for pygradle-style versioning
Internal project modernizations:
Refactored usage of subprocess.run(), removed last left overs from the py2 days
use uv, ruff, enabled more linter rules, etc
Use coveralls_ for test coverage reporting
Removed --deptree flag from redefined check command, this way of visualizing a dependency tree is not useful anymore, please use uv pip tree or hdeps_
Stopped using pkg_resources.
Removed --deptree flag from redefined check command, this way of visualizing a dependency tree is not useful anymore, please use uv pip tree or hdeps_ instead.
One column per quarter.
Adapted CheckCommand to setuptools v77.0.3
Adapted CheckCommand to setuptools v77.0.3
Dropped support for Python 3.6
Nothing published for this version
Use --no-verify with git commit when bumping a version, to support projects with a no-commit-to-branch hook (OK to commit version bump to branch, but
Use --no-verify with git commit when bumping a version, to support projects with a no-commit-to-branch hook (OK to commit version bump to branch, but not other changes)
* Support setuptools 68.2+
Support setuptools 68.2+
.egg files are not published anymore, see https://blog.pypi.org/posts/2023-06-26-deprecate-egg-uploads/
Better support for PEP-517, extract Requires-Dist: from PKG-INFO if requires.txt is missing
.egg files are not published anymore, see https://blog.pypi.org/posts/2023-06-26-deprecate-egg-uploads/
Look for v*.* git tags first, then *.*
Removed support for py2
Look for v*.* git tags first, then *.*
Ignore git tags that do not pass regex ^v?[0-9]+\.[0-9]+, default to 0.0.0 in that case, and issue a WARNING
Allow to configure format of git version tag via the advanced dict-form of versioning, example::
Allow to configure format of git version tag via the advanced dict-form of versioning, example:
versioning={
"main": "{major}.{minor}.{distance}",
"extra": "{dirty}",
"branches": "main",
"version_tag": "v*.*",
},
Protect against hook setup call in ancient setuptools versions
Protect against hook setup call in ancient setuptools versions
Test with 3.10, publish sdist with 3.9
Test with 3.10, publish sdist with 3.9
Do not auto-fill tests_require any more, it is deprecated, see https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#option…
Do not auto-fill tests_require any more, it is deprecated, see https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#optional-dependencies
Do not abstract requirements.in files any more, use them as-is (since they're intended to be a spec for pip-compile_)
Do not abstract requirements.in files any more, use them as-is (since they're intended to be a spec for pip-compile_)
Next minor version of setupmeta will not auto-fill tests_require any more.
Don't try and modify any git url from requirements.txt, it is too much of a moving target and the whole thing is debated: https://github.com/pypa/pip/
Don't try and modify any git url from requirements.txt, it is too much of a moving target and the whole thing is debated: https://github.com/pypa/pip/issues/5898
Do not auto-fill any dependency_links at all
"local" part is always shown now, no need to use "!" character (now deprecated), except for {devcommit} and {dirty} markers, which will not lead to a…
Yield PEP-440_ compliant versions
Versions yielded by setupmeta 3.0 will differ from pre-3.0 versions:
Character "+" is used exclusively to demarcate the local part of the version
Character "." is used exclusively to demarcate local segments (this is not configurable yet, and won't be unless by popular request)
The "main" part remains intact, except for devcommit, furthermore only known PEP-440 "main version part" bits can ever be in the main part (anything that is mistakenly specified to be in the main part gets automatically shifted to the local part)
"local" part is always shown now, no need to use "!" character (now deprecated), except for {devcommit} and {dirty} markers, which will not lead to a local part being shown when exactly on git tag.
See [pep-440.rst](./docs/pep-440.rst) for more details
Don't warn when bumping for the first time (with no git tags yet)
Don't warn when bumping for the first time (with no git tags yet)
Use the most common setuptools.find_packages() call (without arguments)
Moved repo to https://github.com/codrsquad
Respect requirements.in when present
Respect requirements.in when present
Explicitly state python_requires in setup.py to satisfy conda-forge linter
Explicitly state python_requires in setup.py to satisfy conda-forge linter
Bundled tests in sdist, to allow for users wanting to rerun the tests to be able to do so from sdist
Removed commands twine and uber_egg, turns out they're not useful
Removed commands twine and uber_egg, turns out they're not useful
Corrected egg publication for python 2.7
Corrected egg publication for python 2.7
Stop using deprecated imp module with python3
Publish egg for python 3.9, not publishing for 3.5 any more
Corrected support for inlined versions (__version__ = "..." in user's code)
Stop using deprecated imp module with python3
Moved to github actions
Corrected edge case to support git submodules
Corrected edge case to support git submodules
Verify that HEAD is up-to-date when bumping
Verify that HEAD is up-to-date when bumping (#57)
Add legacy hook to ease transition in rare cases.
Further refine hooks (#56)
Add legacy hook to ease transition in rare cases.
Ensure our dist finalization runs first.
Simplify hooks, and fix preprocessing not triggering when not already installed in environment.
Simplify hooks, and fix preprocessing not triggering when not already installed in environment. (#54)
Auto-populate requirements attrs using @ syntax.
Auto-populate requirements attrs using @<filepath> syntax. (#53)
Always ensure a number is added to version parts such as rc, as per PEP-440_
Always ensure a number is added to version parts such as rc, as per PEP-440_
Don't issue warnings related to versioning on fresh new (still empty) repos
Don't issue warnings related to versioning on fresh new (still empty) repos
Don't do full auto-fill when invoked with --name
Don't do full auto-fill when invoked with --name
Added tests, do not try to follow relative paths in requirements.txt (pip doesn't accept them anyway)
Avoid infinite recursion with setup.py --name
Avoid infinite recursion with setup.py --name
Report package name in setup_requires when possible, for local projects referred to via -e /some/folder in a requirements file
Report package name in setup_requires when possible, for local projects referred to via -e /some/folder in a requirements file
Corrected auto-abstract for non-standard version pins such as foo==1.0-rc1+local-part
Corrected auto-abstract for non-standard version pins such as foo==1.0-rc1+local-part
Added more debug tracing to help troubleshoot future issues (SETUPMETA_DEBUG=1 setup.py ...)
Warn if no packages or py_modules are defined (empty package)
Added support for nested requirements: -r foo.txt will be now followed
Added support for nested requirements: -r foo.txt will be now followed
Corrected bug: parsing PKG-INFO files properly
Corrected bug: parsing PKG-INFO files properly
Added requirements_from_text() and requirements_from_file()
Added requirements_from_text() and requirements_from_file()
Use a regex to determine simple pins of the form foo==1.0
Consistently apply auto-abstraction to tests_require as well
Internally use consistent names for install_requires, tests_require and extras_require
Do not use pip anymore to parse requirements.txt
Do not use pip anymore to parse requirements.txt (#49)
Added command uber_egg, to support creating spark_-like "uber eggs"
Added command uber_egg, to support creating spark_-like "uber eggs"
Nothing published for this version
Nothing published for this version
Corrected warning when hardcoded version found does not match git tag
Corrected warning when hardcoded version found does not match git tag
Auto-fill include_package_data when MANIFEST.in is present
Auto-fill include_package_data when MANIFEST.in is present
Try and import latest pip first
Try and import latest pip first
Adapted get_pip() call to pip 20.0 API change
Adapted get_pip() call to pip 20.0 API change
Removed support for python 3.4 (not accepted by pypi anymore)
Nothing published for this version
Corrected handling of version tags such as v0.1.9-rc.1
Corrected handling of version tags such as v0.1.9-rc.1
Corrected packages auto-fill for projects using a direct layout
Corrected packages auto-fill for projects using a direct layout
Fix version pinning when setup_requires is a list
Support project layout similar to pytest's
Support project layout similar to pytest's
Warn when git describe exits with code != 0
Corrected tests for Windows
Removed auto-added License :: OSI Approved classifier
Corrected check --deptree edge cases
RFC: include distance with "{devcommit}"
Correctly mock absence of twine in tests
Bug fix: Correctly initialize .links field in model.py
version: git: use --first-parent with git-describe
Let pip expand req files when not abstracting
Allow to override git describe command via env var GIT_DESCRIBE_COMMAND (just in case)
Fixed incorrect tag mismatch warning with post versioning strategy
Publish .egg for python 3.4 and 3.8
Ignore unparseable requirements.txt
Changed default dirty marker to .dirty (instead of +{commitid})
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Run only if explicitly required via setup_requires=["setupmeta"]
Run only if explicitly required via setup_requires=["setupmeta"]
Properly handle package name (possible dashes) vs top-level module name (no dashes)
Verify that all remote tags are present locally before allowing version bump
Show top level deps in check --deptree's "other" section
Added check --deptree, to show dependency tree of package
Report version as dirty if there staged (but uncommitted changes)
Report version as dirty if there staged (but uncommitted changes)
Show pending changes (if there are any) in setup.py check command
Added a test exercising pip wheel to expose recent dirty determination issue
Rolled back dirty checkout determination, repo with staged files is considered clean again, will have to find another fix for that edge case
Push version bumps only when --push is explicitly specified
Better warnings message, should show proper origination
Always listify setup_requires
Better warnings message, should show proper origination
Corrected dirty determination: repo with staged files is considered dirty until effective commit
Extract all relevant info from PKG-INFO (not just version)
Auto-fill bugtrack_url
Added support for version determination from PKG-INFO
Added {devcommit} versioning strategy token
Added version --show-next
Added {devcommit} versioning strategy token
Added --expand to command explain
Better handling of unicode in README-s and setup.py-s
Fixed setupmeta's own download_url
Your coding agent can read these notes before it upgrades. Set up the MCP server →