NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #9 most downloaded on PyPI
Most extensible Python build backend with support for C/C++ extension modules
Last release 1 months ago
08 Aug 2026
Ships unpredictably
gaps range from 9 days to 8 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
10 versions withdrawn
withdrawn after publishing
20 years old
625 releases · first in 2006
Upgrade to vendored packaging 15.3.
Upgrade to vendored packaging 15.3.
Issue #401: Fix failure in test suite.
Issue #401: Fix failure in test suite.
One column per quarter.
Dropped support for builds with Pyrex. Only Cython is supported.
Dropped support for builds with Pyrex. Only Cython is supported.
Issue #288: Detect Cython later in the build process, after setup_requires dependencies are resolved. Projects backed by Cython can now be readily built with a setup_requires dependency. For example:
ext = setuptools.Extension('mylib', ['src/CythonStuff.pyx', 'src/CStuff.c'])
setuptools.setup(
...
ext_modules=[ext],
setup_requires=['cython'],
)
For compatibility with older versions of setuptools, packagers should still include src/CythonMod.c in the source distributions or require that Cython be present before building source distributions. However, for systems with this build of setuptools, Cython will be downloaded on demand.
Issue #396: Fixed test failure on OS X.
BB Pull Request #136: Remove excessive quoting from shebang headers for Jython.
Backed out unintended changes to pkg_resources, restoring removal of deprecated imp module (ref _).
Backed out unintended changes to pkg_resources, restoring removal of deprecated imp module (ref).
08 Jun 2015
Backed out unintended changes to pkg_resources, restoring removal of deprecated imp module ( ref ).
Issue #380: Add support for range operators on environment marker evaluation.
Issue #380: Add support for range operators on environment marker evaluation.
07 Jun 2015
Issue #380 : Add support for range operators on environment marker evaluation.
Issue #378: Do not use internal importlib._bootstrap module.
Issue #378: Do not use internal importlib._bootstrap module.
Issue #390: Disallow console scripts with path separators in the name. Removes unintended functionality and brings behavior into parity with pip.
28 May 2015
Issue #378 : Do not use internal importlib._bootstrap module.
Issue #390 : Disallow console scripts with path separators in the name. Removes unintended functionality and brings behavior into parity with pip.
BB Pull Request #129: Address deprecation warning due to usage of imp module.
BB Pull Request #130: Better error messages for errors in parsed requirements.
BB Pull Request #133: Removed setuptools.tests from the installed packages.
BB Pull Request #129: Address deprecation warning due to usage of imp module.
Issue #373: Provisionally expose pkg_resources._initialize_master_working_set, allowing for imperative re-initialization of the master working set.
Issue #373: Provisionally expose pkg_resources._initialize_master_working_set, allowing for imperative re-initialization of the master working set.
26 Apr 2015
Issue #373 : Provisionally expose pkg_resources._initialize_master_working_set , allowing for imperative re-initialization of the master working set.
Updated to Packaging 15.1 to address Packaging #28.
Updated to Packaging 15.1 to address Packaging #28.
Fix setuptools.sandbox._execfile() with Python 3.1.
15 Apr 2015
Updated to Packaging 15.1 to address Packaging #28 .
Fix setuptools.sandbox._execfile() with Python 3.1.
BB Pull Request #126: DistributionNotFound message now lists the package or packages that required it. E.g.::
BB Pull Request #126: DistributionNotFound message now lists the package or packages that required it. E.g.:
pkg_resources.DistributionNotFound: The 'colorama>=0.3.1' distribution was not found and is required by smlib.log.
Note that zc.buildout once dependended on the string rendering of this message to determine the package that was not found. This expectation has since been changed, but older versions of buildout may experience problems. See Buildout #242 for details.
Issue #364: Replace deprecated usage with recommended usage of EntryPoint.load.
Issue #307: Removed PEP-440 warning during parsing of versions in pkg_resources.Distribution.
Issue #364: Replace deprecated usage with recommended usage of EntryPoint.load.
20 Mar 2015
Issue #307 : Removed PEP-440 warning during parsing of versions in pkg_resources.Distribution .
Issue #364 : Replace deprecated usage with recommended usage of EntryPoint.load .
Issue #254: When creating temporary egg cache on Unix, use mode 755 for creating the directory to avoid the subsequent warning if the directory is gro
Issue #254: When creating temporary egg cache on Unix, use mode 755 for creating the directory to avoid the subsequent warning if the directory is group writable.
15 Mar 2015
Issue #254 : When creating temporary egg cache on Unix, use mode 755 for creating the directory to avoid the subsequent warning if the directory is group writable.
Issue #137: Update Distribution.hashcmp so that Distributions with None for pyversion or platform can be compared against Distributions defining those
Issue #137: Update Distribution.hashcmp so that Distributions with None for pyversion or platform can be compared against Distributions defining those attributes.
15 Mar 2015
Issue #137 : Update Distribution.hashcmp so that Distributions with None for pyversion or platform can be compared against Distributions defining those attributes.
Issue #360: Removed undesirable behavior from test runs, preventing write tests and installation to system site packages.
Issue #360: Removed undesirable behavior from test runs, preventing write tests and installation to system site packages.
14 Mar 2015
Issue #360 : Removed undesirable behavior from test runs, preventing write tests and installation to system site packages.
BB Pull Request #125: Add __ne__ to Requirement class.
BB Pull Request #125: Add __ne__ to Requirement class.
Various refactoring of easy_install.
14 Mar 2015
BB Pull Request #125 : Add ne to Requirement class.
Various refactoring of easy_install.
Bootstrap script now accepts --to-dir to customize save directory or allow for re-use of existing repository of setuptools versions. See BB Pull Reque
Bootstrap script now accepts --to-dir to customize save directory or allow for re-use of existing repository of setuptools versions. See BB Pull Request #112 for background.
Issue #285: easy_install no longer will default to installing packages to the "user site packages" directory if it is itself installed there. Instead, the user must pass --user in all cases to install packages to the user site packages. This behavior now matches that of "pip install". To configure an environment to always install to the user site packages, consider using the "install-dir" and "scripts-dir" parameters to easy_install through an appropriate distutils config file.
Issue #359: Include pytest.ini in the sdist so invocation of py.test on the sdist honors the pytest configuration.
Issue #359: Include pytest.ini in the sdist so invocation of py.test on the sdist honors the pytest configuration.
06 Mar 2015
Issue #359 : Include pytest.ini in the sdist so invocation of py.test on the sdist honors the pytest configuration.
Re-release of 13.0. Intermittent connectivity issues caused the release process to fail and PyPI uploads no longer accept files for 13.0.
Re-release of 13.0. Intermittent connectivity issues caused the release process to fail and PyPI uploads no longer accept files for 13.0.
05 Mar 2015
Re-release of 13.0. Intermittent connectivity issues caused the release process to fail and PyPI uploads no longer accept files for 13.0.
Issue #356: Back out BB Pull Request #119 as it requires Setuptools 10 or later as the source during an upgrade.
Issue #356: Back out BB Pull Request #119 as it requires Setuptools 10 or later as the source during an upgrade.
Removed build_py class from setup.py. According to 892f439d216e, this functionality was added to support upgrades from old Distribute versions, 0.6.5 and 0.6.6.
BB Pull Request #119: Restore writing of setup_requires to metadata (previously added in 8.4 and removed in 9.0).
BB Pull Request #119: Restore writing of setup_requires to metadata (previously added in 8.4 and removed in 9.0).
04 Mar 2015
BB Pull Request #119 : Restore writing of setup_requires to metadata (previously added in 8.4 and removed in 9.0).
Documentation is now linked using the rst.linker package.
Documentation is now linked using the rst.linker package.
Fix setuptools.command.easy_install.extract_wininst_cfg() with Python 2.6 and 2.7.
Issue #354. Added documentation on building setuptools documentation.
Issue #336: Removed deprecation from ez_setup.use_setuptools, as it is clearly still used by buildout's bootstrap. ez_setup remains deprecated for use…
Issue #345: Unload all modules under pkg_resources during ez_setup.use_setuptools().
Issue #336: Removed deprecation from ez_setup.use_setuptools, as it is clearly still used by buildout's bootstrap. ez_setup remains deprecated for use by individual packages.
Simplified implementation of ez_setup.use_setuptools.
BB Pull Request #118: Soften warning for non-normalized versions in Distribution.
BB Pull Request #118: Soften warning for non-normalized versions in Distribution.
10 Feb 2015
BB Pull Request #118 : Soften warning for non-normalized versions in Distribution.
Issue #336: Deprecated ez_setup.use_setuptools.
Issue #339: Correct Attribute reference in cant_write_to_target.
Issue #336: Deprecated ez_setup.use_setuptools.
26 Jan 2015
Issue #339 : Correct Attribute reference in cant_write_to_target .
Issue #336 : Deprecated ez_setup.use_setuptools .
Issue #335: Fix script header generation on Windows.
Issue #335: Fix script header generation on Windows.
Fixed incorrect class attribute in install_scripts. Tests would be nice.
Fixed incorrect class attribute in install_scripts. Tests would be nice.
18 Jan 2015
Fixed incorrect class attribute in install_scripts . Tests would be nice.
Issue #331: Fixed install_scripts command on Windows systems corrupting the header.
Issue #331: Fixed install_scripts command on Windows systems corrupting the header.
18 Jan 2015
Issue #331 : Fixed install_scripts command on Windows systems corrupting the header.
Restore setuptools.command.easy_install.sys_executable for pbr compatibility. For the future, tools should construct a CommandSpec explicitly.
Restore setuptools.command.easy_install.sys_executable for pbr compatibility. For the future, tools should construct a CommandSpec explicitly.
16 Jan 2015
Restore setuptools.command.easy_install.sys_executable for pbr compatibility. For the future, tools should construct a CommandSpec explicitly.
Deprecated easy_install.ScriptWriter.get_writer, replaced by .best() with slightly different semantics (no force_windows flag).
Issue #188: Setuptools now support multiple entities in the value for build.executable, such that an executable of "/usr/bin/env my-python" may be specified. This means that systems with a specified executable whose name has spaces in the path must be updated to escape or quote that value.
Deprecated easy_install.ScriptWriter.get_writer, replaced by .best() with slightly different semantics (no force_windows flag).
Issue #327: Formalize and restore support for any printable character in an entry point name.
Issue #327: Formalize and restore support for any printable character in an entry point name.
06 Jan 2015
Issue #327 : Formalize and restore support for any printable character in an entry point name.
Expose EntryPoint.resolve in place of EntryPoint._load, implementing the simple, non-requiring load. Deprecated all uses of EntryPoint._load except fo…
Expose EntryPoint.resolve in place of EntryPoint._load, implementing the simple, non-requiring load. Deprecated all uses of EntryPoint._load except for calling with no parameters, which is just a shortcut for ep.require(); ep.resolve();.
Apps currently invoking ep.load(require=False) should instead do the following if wanting to avoid the deprecating warning:
getattr(ep, "resolve", lambda: ep.load(require=False))()
Pip #2326: Report deprecation warning at stacklevel 2 for easier diagnosis.
Pip #2326: Report deprecation warning at stacklevel 2 for easier diagnosis.
05 Jan 2015
Pip #2326 : Report deprecation warning at stacklevel 2 for easier diagnosis.
Issue #281: Since Setuptools 6.1 (Issue #268), a ValueError would be raised in certain cases where VersionConflict was raised with two arguments, whic
Issue #281: Since Setuptools 6.1 (Issue #268), a ValueError would be raised in certain cases where VersionConflict was raised with two arguments, which occurred in pkg_resources.WorkingSet.find. This release adds support for indicating the dependent packages while maintaining support for a VersionConflict when no dependent package context is known. New unit tests now capture the expected interface.
Interop #3: Upgrade to Packaging 15.0; updates to PEP 440 so that >1.7 does not exclude 1.7.1 but does exclude 1.7.0 and 1.7.0.post1.
Interop #3: Upgrade to Packaging 15.0; updates to PEP 440 so that >1.7 does not exclude 1.7.1 but does exclude 1.7.0 and 1.7.0.post1.
Issue #323: Fix regression in entry point name parsing.
Issue #323: Fix regression in entry point name parsing.
Deprecated use of EntryPoint.load(require=False). Passing a boolean to a function to select behavior is an anti-pattern. Instead use Entrypoint._load(…
Deprecated use of EntryPoint.load(require=False). Passing a boolean to a function to select behavior is an anti-pattern. Instead use Entrypoint._load().
Substantial refactoring of all unit tests. Tests are now much leaner and re-use a lot of fixtures and contexts for better clarity of purpose.
Issue #320: Added a compatibility implementation of sdist._default_revctrl so that systems relying on that interface do not fail (namely, Ubuntu 12.04
Issue #320: Added a compatibility implementation of sdist._default_revctrl so that systems relying on that interface do not fail (namely, Ubuntu 12.04 and similar Debian releases).
31 Dec 2014
Issue #320 : Added a compatibility implementation of sdist._default_revctrl so that systems relying on that interface do not fail (namely, Ubuntu 12.04 and similar Debian releases).
Issue #319: Fixed issue installing pure distutils packages.
Issue #319: Fixed issue installing pure distutils packages.
30 Dec 2014
Issue #319 : Fixed issue installing pure distutils packages.
Issue #313: Removed built-in support for subversion. Projects wishing to retain support for subversion will need to use a third party library. The ext
Issue #313: Removed built-in support for subversion. Projects wishing to retain support for subversion will need to use a third party library. The extant implementation is being ported to setuptools_svn.
Issue #315: Updated setuptools to hide its own loaded modules during installation of another package. This change will enable setuptools to upgrade (or downgrade) itself even when its own metadata and implementation change.
Prefer vendored packaging library as recommended _.
Prefer vendored packaging library as recommended.
Issue #312: Restored presence of pkg_resources API tests (doctest) to sdist.
Issue #312: Restored presence of pkg_resources API tests (doctest) to sdist.
29 Dec 2014
Issue #312 : Restored presence of pkg_resources API tests (doctest) to sdist.
Issue #314: Disabled support for setup_requires metadata to avoid issue where Setuptools was unable to upgrade over earlier versions.
Issue #314: Disabled support for setup_requires metadata to avoid issue where Setuptools was unable to upgrade over earlier versions.
28 Dec 2014
Issue #314 : Disabled support for setup_requires metadata to avoid issue where Setuptools was unable to upgrade over earlier versions.
Issue #311: Decoupled pkg_resources from setuptools once again. pkg_resources is now a package instead of a module.
Issue #311: Decoupled pkg_resources from setuptools once again. pkg_resources is now a package instead of a module.
24 Dec 2014
Issue #311 : Decoupled pkg_resources from setuptools once again. pkg_resources is now a package instead of a module.
Issue #306: Suppress warnings about Version format except in select scenarios (such as installation).
Issue #306: Suppress warnings about Version format except in select scenarios (such as installation).
18 Dec 2014
Issue #306 : Suppress warnings about Version format except in select scenarios (such as installation).
BB Pull Request #85: Search egg-base when adding egg-info to manifest.
BB Pull Request #85: Search egg-base when adding egg-info to manifest.
18 Dec 2014
BB Pull Request #85 : Search egg-base when adding egg-info to manifest.
Upgrade packaging to 14.5, giving preference to "rc" as designator for release candidates over "c".
Upgrade packaging to 14.5, giving preference to "rc" as designator for release candidates over "c".
PEP-440 warnings are now raised as their own class, pkg_resources.PEP440Warning, instead of RuntimeWarning.
Disabled warnings on empty versions.
Issue #296: Add warning when a version is parsed as legacy. This warning will make it easier for developers to recognize deprecated version numbers.
Upgrade packaging to 14.4, fixing an error where there is a different result for if 2.0.5 is contained within >2.0dev and >2.0.dev even though normalization rules should have made them equal.
Issue #296: Add warning when a version is parsed as legacy. This warning will make it easier for developers to recognize deprecated version numbers.
Issue #296: Restored support for __hash__ on parse_version results.
Issue #296: Restored support for __hash__ on parse_version results.
15 Dec 2014
Issue #296 : Restored support for hash on parse_version results.
Issue #296: Restored support for __getitem__ and sort operations on parse_version result.
Issue #296: Restored support for __getitem__ and sort operations on parse_version result.
14 Dec 2014
Issue #296 : Restored support for getitem and sort operations on parse_version result.
Issue #296: Restore support for iteration over parse_version result, but deprecated that usage with a warning. Fixes failure with buildout.
Issue #296: Restore support for iteration over parse_version result, but deprecated that usage with a warning. Fixes failure with buildout.
13 Dec 2014
Issue #296 : Restore support for iteration over parse_version result, but deprecated that usage with a warning. Fixes failure with buildout.
Implement PEP 440 within pkg_resources and setuptools. This change deprecates some version numbers such that they will no longer be installable withou…
Implement PEP 440 within pkg_resources and setuptools. This change deprecates some version numbers such that they will no longer be installable without using the === escape hatch. See the changes to test_resources for specific examples of version numbers and specifiers that are no longer supported. Setuptools now "vendors" the packaging library.
Issue #80, Issue #209: Eggs that are downloaded for setup_requires, test_requires, etc. are now placed in a ./.eggs directory instead of directly in t
Issue #80, Issue #209: Eggs that are downloaded for setup_requires, test_requires, etc. are now placed in a ./.eggs directory instead of directly in the current directory. This choice of location means the files can be readily managed (removed, ignored). Additionally, later phases or invocations of setuptools will not detect the package as already installed and ignore it for permanent install (See #209).
This change is indicated as backward-incompatible as installations that depend on the installation in the current directory will need to account for the new location. Systems that ignore *.egg will probably need to be adapted to ignore .eggs. The files will need to be manually moved or will be retrieved again. Most use cases will require no attention.
Issue #268: When resolving package versions, a VersionConflict now reports which package previously required the conflicting version.
Issue #268: When resolving package versions, a VersionConflict now reports which package previously required the conflicting version.
11 Oct 2014
Issue #268 : When resolving package versions, a VersionConflict now reports which package previously required the conflicting version.
Issue #262: Fixed regression in pip install due to egg-info directories being omitted. Re-opens Issue #118.
Issue #262: Fixed regression in pip install due to egg-info directories being omitted. Re-opens Issue #118.
29 Sep 2014
Issue #262 : Fixed regression in pip install due to egg-info directories being omitted. Re-opens Issue #118 .
Issue #259: Fixed regression with namespace package handling on single version, externally managed installs.
Issue #259: Fixed regression with namespace package handling on single version, externally managed installs.
27 Sep 2014
Issue #259 : Fixed regression with namespace package handling on single version, externally managed installs.
Issue #237: pkg_resources now uses explicit detection of Python 2 vs. Python 3, supporting environments where builtins have been patched to make Pytho
Issue #237: pkg_resources now uses explicit detection of Python 2 vs. Python 3, supporting environments where builtins have been patched to make Python 3 look more like Python 2.
Issue #240: Based on real-world performance measures against 5.4, zip manifests are now cached in all circumstances. The PKG_RESOURCES_CACHE_ZIP_MANIF
Issue #240: Based on real-world performance measures against 5.4, zip manifests are now cached in all circumstances. The PKG_RESOURCES_CACHE_ZIP_MANIFESTS environment variable is no longer relevant. The observed "memory increase" referenced in the 5.4 release notes and detailed in Issue #154 was likely not an increase over the status quo, but rather only an increase over not storing the zip info at all.
Issue #242: Use absolute imports in svn_utils to avoid issues if the installing package adds an xml module to the path.
Issue #242: Use absolute imports in svn_utils to avoid issues if the installing package adds an xml module to the path.
14 Aug 2014
Issue #242 : Use absolute imports in svn_utils to avoid issues if the installing package adds an xml module to the path.
Issue #239: Fix typo in 5.5 such that fix did not take.
Issue #239: Fix typo in 5.5 such that fix did not take.
Issue #239: Setuptools now includes the setup_requires directive on Distribution objects and validates the syntax just like install_requires and tests
Issue #239: Setuptools now includes the setup_requires directive on Distribution objects and validates the syntax just like install_requires and tests_require directives.
10 Aug 2014
Issue #239 : Setuptools now includes the setup_requires directive on Distribution objects and validates the syntax just like install_requires and tests_require directives.
Your coding agent can read these notes before it upgrades. Set up the MCP server →