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
Issue #236: Corrected regression in execfile implementation for Python 2.6.
Issue #236: Corrected regression in execfile implementation for Python 2.6.
01 Aug 2014
Issue #236 : Corrected regression in execfile implementation for Python 2.6.
Python #7776: (ssl_support) Correct usage of host for validation when tunneling for HTTPS.
Python #7776: (ssl_support) Correct usage of host for validation when tunneling for HTTPS.
06 Jul 2014
Python #7776 : (ssl_support) Correct usage of host for validation when tunneling for HTTPS.
One column per quarter.
Issue #154: pkg_resources will now cache the zip manifests rather than re-processing the same file from disk multiple times, but only if the environme
Issue #154: pkg_resources will now cache the zip manifests rather than re-processing the same file from disk multiple times, but only if the environment variable PKG_RESOURCES_CACHE_ZIP_MANIFESTS is set. Clients that package many modules in the same zip file will see some improvement in startup time by enabling this feature. This feature is not enabled by default because it causes a substantial increase in memory usage.
Issue #185: Make svn tagging work on the new style SVN metadata. Thanks cazabon!
Issue #185: Make svn tagging work on the new style SVN metadata. Thanks cazabon!
Prune revision control directories (e.g .svn) from base path as well as sub-directories.
28 Jun 2014
Issue #185 : Make svn tagging work on the new style SVN metadata. Thanks cazabon!
Prune revision control directories (e.g .svn) from base path as well as sub-directories.
Added a Developer Guide _ to the official documentation.
Added a Developer Guide to the official documentation.
Some code refactoring and cleanup was done with no intended behavioral changes.
During install_egg_info, the generated lines for namespace package .pth files are now processed even during a dry run.
Issue #202: Implemented more robust cache invalidation for the ZipImporter, building on the work in Issue #168. Special thanks to Jurko Gospodnetic an
Issue #202: Implemented more robust cache invalidation for the ZipImporter, building on the work in Issue #168. Special thanks to Jurko Gospodnetic and PJE.
15 Jun 2014
Issue #202 : Implemented more robust cache invalidation for the ZipImporter, building on the work in Issue #168 . Special thanks to Jurko Gospodnetic and PJE.
Issue #220: Restored script templates.
Issue #220: Restored script templates.
Renamed script templates to end with .tmpl now that they no longer need to be processed by 2to3. Fixes spurious syntax errors during build/install.
Renamed script templates to end with .tmpl now that they no longer need to be processed by 2to3. Fixes spurious syntax errors during build/install.
14 Jun 2014
Renamed script templates to end with .tmpl now that they no longer need to be processed by 2to3. Fixes spurious syntax errors during build/install.
Issue #218: Re-release of 3.8.1 to signal that it supersedes 4.x.
Issue #218: Re-release of 3.8.1 to signal that it supersedes 4.x.
Incidentally, script templates were updated not to include the triple-quote escaping.
14 Jun 2014
Issue #218 : Re-release of 3.8.1 to signal that it supersedes 4.x.
Incidentally, script templates were updated not to include the triple-quote escaping.
Nothing published for this version
Issue #210: setup.py develop now copies scripts in binary mode rather than text mode, matching the behavior of the install command.
Issue #210: setup.py develop now copies scripts in binary mode rather than text mode, matching the behavior of the install command.
Nothing published for this version
Extend Issue #197 workaround to include all Python 3 versions prior to 3.2.2.
Extend Issue #197 workaround to include all Python 3 versions prior to 3.2.2.
01 Jun 2014
Extend Issue #197 workaround to include all Python 3 versions prior to 3.2.2.
Issue #213: Use legacy StringIO behavior for compatibility under pbr.
Issue #213: Use legacy StringIO behavior for compatibility under pbr.
Issue #218: Setuptools 3.8.1 superseded 4.0.1, and 4.x was removed from the available versions to install.
Issue #193: Improved handling of Unicode filenames when building manifests.
Issue #193: Improved handling of Unicode filenames when building manifests.
28 May 2014
Issue #193 : Improved handling of Unicode filenames when building manifests.
Issue #203: Honor proxy settings for Powershell downloader in the bootstrap routine.
Issue #203: Honor proxy settings for Powershell downloader in the bootstrap routine.
07 May 2014
Issue #203 : Honor proxy settings for Powershell downloader in the bootstrap routine.
Issue #168: More robust handling of replaced zip files and stale caches. Fixes ZipImportError complaining about a 'bad local header'.
Issue #168: More robust handling of replaced zip files and stale caches. Fixes ZipImportError complaining about a 'bad local header'.
07 May 2014
Issue #168 : More robust handling of replaced zip files and stale caches. Fixes ZipImportError complaining about a ‘bad local header’.
Issue #199: Restored install._install for compatibility with earlier NumPy versions.
Issue #199: Restored install._install for compatibility with earlier NumPy versions.
04 May 2014
Issue #199 : Restored install._install for compatibility with earlier NumPy versions.
Issue #195: Follow symbolic links in find_packages (restoring behavior broken in 3.4).
Issue #195: Follow symbolic links in find_packages (restoring behavior broken in 3.4).
Issue #197: On Python 3.1, PKG-INFO is now saved in a UTF-8 encoding instead of sys.getpreferredencoding to match the behavior on Python 2.6-3.4.
Issue #192: Preferred bootstrap location is now https://bootstrap.pypa.io/ez_setup.py (mirrored from former location).
Issue #184: Correct failure where find_package over-matched packages when directory traversal isn't short-circuited.
Issue #184: Correct failure where find_package over-matched packages when directory traversal isn't short-circuited.
11 Apr 2014
Issue #184 : Correct failure where find_package over-matched packages when directory traversal isn’t short-circuited.
Issue #183: Really fix test command with Python 3.1.
Issue #183: Really fix test command with Python 3.1.
Issue #183: Fix additional regression in test command on Python 3.1.
Issue #183: Fix additional regression in test command on Python 3.1.
06 Apr 2014
Issue #183 : Fix additional regression in test command on Python 3.1.
Issue #180: Fix regression in test command not caught by py.test-run tests.
Issue #180: Fix regression in test command not caught by py.test-run tests.
30 Mar 2014
Issue #180 : Fix regression in test command not caught by py.test-run tests.
Issue #176: Add parameter to the test command to support a custom test runner: --test-runner or -r.
Issue #176: Add parameter to the test command to support a custom test runner: --test-runner or -r.
Issue #177: Now assume most common invocation to install command on platforms/environments without stack support (issuing a warning). Setuptools now installs naturally on IronPython. Behavior on CPython should be unchanged.
Add include parameter to setuptools.find_packages().
Add include parameter to setuptools.find_packages().
BB Pull Request #39: Add support for C++ targets from Cython .pyx files.
BB Pull Request #39: Add support for C++ targets from Cython .pyx files.
Issue #162: Update dependency on certifi to 1.0.1.
Issue #164: Update dependency on wincertstore to 0.2.
14 Mar 2014
BB Pull Request #39 : Add support for C++ targets from Cython .pyx files.
Issue #162 : Update dependency on certifi to 1.0.1.
Issue #164 : Update dependency on wincertstore to 0.2.
Issue #161: Restore Features functionality to allow backward compatibility (for Features) until the uses of that functionality is sufficiently removed
Issue #161: Restore Features functionality to allow backward compatibility (for Features) until the uses of that functionality is sufficiently removed.
08 Mar 2014
Issue #161 : Restore Features functionality to allow backward compatibility (for Features) until the uses of that functionality is sufficiently removed.
Correct typo in previous bugfix.
Correct typo in previous bugfix.
Issue #157: Restore support for Python 2.6 in bootstrap script where zipfile.ZipFile does not yet have support for context managers.
Issue #157: Restore support for Python 2.6 in bootstrap script where zipfile.ZipFile does not yet have support for context managers.
06 Mar 2014
Issue #157 : Restore support for Python 2.6 in bootstrap script where zipfile.ZipFile does not yet have support for context managers.
ez_setup.py now uses zip archive. This approach avoids the potential security vulnerabilities presented by use of tar archives in ez_setup.py. It also…
Issue #125: Prevent Subversion support from creating a ~/.subversion directory just for checking the presence of a Subversion repository.
Issue #12: Namespace packages are now imported lazily. That is, the mere declaration of a namespace package in an egg on sys.path no longer causes it to be imported when pkg_resources is imported. Note that this change means that all of a namespace package's __init__.py files must include a declare_namespace() call in order to ensure that they will be handled properly at runtime. In 2.x it was possible to get away without including the declaration, but only at the cost of forcing namespace packages to be imported early, which 3.0 no longer does.
Issue #148: When building (bdist_egg), setuptools no longer adds __init__.py files to namespace packages. Any packages that rely on this behavior will need to create __init__.py files and include the declare_namespace().
Issue #7: Setuptools itself is now distributed as a zip archive in addition to tar archive. ez_setup.py now uses zip archive. This approach avoids the potential security vulnerabilities presented by use of tar archives in ez_setup.py. It also leverages the security features added to ZipFile.extract in Python 2.7.4.
Issue #65: Removed deprecated Features functionality.
BB Pull Request #28: Remove backport of _bytecode_filenames which is available in Python 2.6 and later, but also has better compatibility with Python 3 environments.
Issue #156: Fix spelling of __PYVENV_LAUNCHER__ variable.
Issue #141: Restored fix for allowing setup_requires dependencies to override installed dependencies during setup.
Issue #141: Restored fix for allowing setup_requires dependencies to override installed dependencies during setup.
Issue #128: Fixed issue where only the first dependency link was honored in a distribution where multiple dependency links were supplied.
Issue #144: Read long_description using codecs module to avoid errors installing on systems where LANG=C.
Issue #144: Read long_description using codecs module to avoid errors installing on systems where LANG=C.
05 Feb 2014
Issue #144 : Read long_description using codecs module to avoid errors installing on systems where LANG=C.
Issue #139: Fix regression in re_finder for CVS repos (and maybe Git repos as well).
Issue #139: Fix regression in re_finder for CVS repos (and maybe Git repos as well).
05 Feb 2014
Issue #139 : Fix regression in re_finder for CVS repos (and maybe Git repos as well).
Issue #129: Suppress inspection of *.whl files when searching for files in a zip-imported file.
Issue #129: Suppress inspection of *.whl files when searching for files in a zip-imported file.
Issue #131: Fix RuntimeError when constructing an egg fetcher.
07 Jan 2014
Issue #129 : Suppress inspection of *.whl files when searching for files in a zip-imported file.
Issue #131 : Fix RuntimeError when constructing an egg fetcher.
Fix NameError during installation with Python implementations (e.g. Jython) not containing parser module.
Fix NameError during installation with Python implementations (e.g. Jython) not containing parser module.
Fix NameError in sdist:re_finder.
29 Dec 2013
Fix NameError during installation with Python implementations (e.g. Jython) not containing parser module.
Fix NameError in sdist:re_finder .
Issue #124: Fixed error in list detection in upload_docs.
Issue #124: Fixed error in list detection in upload_docs.
15 Dec 2013
Issue #124 : Fixed error in list detection in upload_docs.
Issue #121: Exempt lib2to3 pickled grammars from DirectorySandbox.
Issue #121: Exempt lib2to3 pickled grammars from DirectorySandbox.
Issue #41: Dropped support for Python 2.4 and Python 2.5. Clients requiring setuptools for those versions of Python should use setuptools 1.x.
Removed setuptools.command.easy_install.HAS_USER_SITE. Clients expecting this boolean variable should use site.ENABLE_USER_SITE instead.
Removed pkg_resources.ImpWrapper. Clients that expected this class should use pkgutil.ImpImporter instead.
Issue #116: Correct TypeError when reading a local package index on Python 3.
Issue #116: Correct TypeError when reading a local package index on Python 3.
01 Dec 2013
Issue #116 : Correct TypeError when reading a local package index on Python 3.
Issue #114: Use sys.getfilesystemencoding for decoding config in bdist_wininst distributions.
Issue #114: Use sys.getfilesystemencoding for decoding config in bdist_wininst distributions.
Issue #105 and Issue #113: Establish a more robust technique for determining the terminal encoding:
1. Try ``getpreferredencoding`` 2. If that returns US_ASCII or None, try the encoding from ``getdefaultlocale``. If that encoding was a "fallback" because Python could not figure it out from the environment or OS, encoding remains unresolved. 3. If the encoding is resolved, then make sure Python actually implements the encoding. 4. On the event of an error or unknown codec, revert to fallbacks (UTF-8 on Darwin, ASCII on everything else). 5. On the encoding is 'mac-roman' on Darwin, use UTF-8 as 'mac-roman' was a bug on older Python releases. On a side note, it would seem that the encoding only matters for when SVN does not yet support ``--xml`` and when getting repository and svn version numbers. The ``--xml`` technique should yield UTF-8 according to some messages on the SVN mailing lists. So if the version numbers are always 7-bit ASCII clean, it may be best to only support the file parsing methods for legacy SVN releases and support for SVN without the subprocess command would simple go away as support for the older SVNs does.
Issue #27: easy_install will now use credentials from .pypirc if present for connecting to the package index.
Issue #27: easy_install will now use credentials from .pypirc if present for connecting to the package index.
BB Pull Request #21: Omit unwanted newlines in package_index._encode_auth when the username/password pair length indicates wrapping.
Issue #99: Fix filename encoding issues in SVN support.
Issue #99: Fix filename encoding issues in SVN support.
Remove exuberant warning in SVN support when SVN is not used.
Remove exuberant warning in SVN support when SVN is not used.
07 Nov 2013
Remove exuberant warning in SVN support when SVN is not used.
Address security vulnerability in SSL match_hostname check as reported in Python #17997.
Address security vulnerability in SSL match_hostname check as reported in Python #17997.
Prefer backports.ssl_match_hostname for backport implementation if present.
Correct NameError in ssl_support module (socket.error).
Issue #26: Add support for SVN 1.7. Special thanks to Philip Thiem for the contribution.
Issue #26: Add support for SVN 1.7. Special thanks to Philip Thiem for the contribution.
Issue #93: Wheels are now distributed with every release. Note that as reported in Issue #108, as of Pip 1.4, scripts aren't installed properly from wheels. Therefore, if using Pip to install setuptools from a wheel, the easy_install command will not be available.
Setuptools "natural" launcher support, introduced in 1.0, is now officially supported.
Fixed behavior of NameError handling in 'script template (dev).py' (script launcher for 'develop' installs).
Fixed behavior of NameError handling in 'script template (dev).py' (script launcher for 'develop' installs).
ez_setup.py now ensures partial downloads are cleaned up following a failed download.
Distribute #363 and Issue #55: Skip an sdist test that fails on locales other than UTF-8.
Distribute #349: sandbox.execfile now opens the target file in binary mode, thus honoring a BOM in the file when compiled.
Distribute #349: sandbox.execfile now opens the target file in binary mode, thus honoring a BOM in the file when compiled.
18 Sep 2013
Distribute #349 : sandbox.execfile now opens the target file in binary mode, thus honoring a BOM in the file when compiled.
Issue #69: Second attempt at fix (logic was reversed).
Issue #69: Second attempt at fix (logic was reversed).
Issue #77: Fix error in upload command (Python 2.4).
Issue #77: Fix error in upload command (Python 2.4).
Fix NameError in previous patch.
Fix NameError in previous patch.
Issue #69: Correct issue where 404 errors are returned for URLs with fragments in them (such as #egg=).
Issue #69: Correct issue where 404 errors are returned for URLs with fragments in them (such as #egg=).
06 Sep 2013
Issue #69 : Correct issue where 404 errors are returned for URLs with fragments in them (such as #egg=).
Issue #75: Add --insecure option to ez_setup.py to accommodate environments where a trusted SSL connection cannot be validated.
Issue #75: Add --insecure option to ez_setup.py to accommodate environments where a trusted SSL connection cannot be validated.
Issue #76: Fix AttributeError in upload command with Python 2.4.
Issue #71 (Distribute #333): EasyInstall now puts less emphasis on the condition when a host is blocked via --allow-hosts.
Issue #71 (Distribute #333): EasyInstall now puts less emphasis on the condition when a host is blocked via --allow-hosts.
Issue #72: Restored Python 2.4 compatibility in ez_setup.py.
Issue #65: Deprecated the Features functionality.
Issue #60: On Windows, Setuptools supports deferring to another launcher, such as Vinay Sajip's pylauncher (included with Python 3.3) to launch console and GUI scripts and not install its own launcher executables. This experimental functionality is currently only enabled if the SETUPTOOLS_LAUNCHER environment variable is set to "natural". In the future, this behavior may become default, but only after it has matured and seen substantial adoption. The SETUPTOOLS_LAUNCHER also accepts "executable" to force the default behavior of creating launcher executables.
Issue #63: Bootstrap script (ez_setup.py) now prefers Powershell, curl, or wget for retrieving the Setuptools tarball for improved security of the install. The script will still fall back to a simple urlopen on platforms that do not have these tools.
Issue #65: Deprecated the Features functionality.
Issue #52: In VerifyingHTTPSConn, handle a tunnelled (proxied) connection.
This release includes a couple of backward-incompatible changes, but most if not all users will find 1.0 a drop-in replacement for 0.9.
Issue #50: Normalized API of environment marker support. Specifically, removed line number and filename from SyntaxErrors when returned from pkg_resources.invalid_marker. Any clients depending on the specific string representation of exceptions returned by that function may need to be updated to account for this change.
Issue #50: SyntaxErrors generated by pkg_resources.invalid_marker are normalized for cross-implementation consistency.
Removed --ignore-conflicts-at-my-risk and --delete-conflicting options to easy_install. These options have been deprecated since 0.6a11.
Issue #53: Fix NameErrors in _vcs_split_rev_from_url.
Issue #53: Fix NameErrors in _vcs_split_rev_from_url.
Issue #49: Correct AttributeError on PyPy where a hashlib.HASH object does not have a .name attribute.
Issue #49: Correct AttributeError on PyPy where a hashlib.HASH object does not have a .name attribute.
Issue #34: Documentation now refers to bootstrap script in code repository referenced by bookmark.
Add underscore-separated keys to environment markers (markerlib).
Issue #44: Test failure on Python 2.4 when MD5 hash doesn't have a .name attribute.
Issue #44: Test failure on Python 2.4 when MD5 hash doesn't have a .name attribute.
17 Jul 2013
Issue #44 : Test failure on Python 2.4 when MD5 hash doesn’t have a .name attribute.
Python #17980: Fix security vulnerability in SSL certificate validation.
Python #17980: Fix security vulnerability in SSL certificate validation.
15 Jul 2013
Python #17980 : Fix security vulnerability in SSL certificate validation.
Issue #43: Fix issue (introduced in 0.9.1) with version resolution when upgrading over other releases of Setuptools.
Issue #43: Fix issue (introduced in 0.9.1) with version resolution when upgrading over other releases of Setuptools.
15 Jul 2013
Issue #43 : Fix issue (introduced in 0.9.1) with version resolution when upgrading over other releases of Setuptools.
Issue #42: Fix new AttributeError introduced in last fix.
Issue #42: Fix new AttributeError introduced in last fix.
15 Jul 2013
Issue #42 : Fix new AttributeError introduced in last fix.
Issue #42: Fix regression where blank checksums would trigger an AttributeError.
Issue #42: Fix regression where blank checksums would trigger an AttributeError.
15 Jul 2013
Issue #42 : Fix regression where blank checksums would trigger an AttributeError .
Your coding agent can read these notes before it upgrades. Set up the MCP server →