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
* #631: Add support for python_requires keyword.
#631: Add support for python_requires keyword.
More style updates. See #660, #661, #641.
More style updates. See #660, #661, #641.
20 Jul 2016
More style updates. See #660 , #661 , #641 .
One column per quarter.
More style updates. See #656, #635, #640,
#659: setup.py now will fail fast and with a helpful error message when the necessary metadata is missing.
More style updates. See #656, #635, #640, #644, #650, #652, and #655.
Updated style in much of the codebase to match community expectations. See #632, #633, #634,
Updated style in much of the codebase to match community expectations. See #632, #633, #634, #637, #639, #638, #642, #648.
14 Jul 2016
Updated style in much of the codebase to match community expectations. See #632 , #633 , #634 , #637 , #639 , #638 , #642 , #648 .
If MSVC++14 is needed setuptools.msvc now redirect user to Visual C++ Build Tools web page.
If MSVC++14 is needed setuptools.msvc now redirect user to Visual C++ Build Tools web page.
04 Jul 2016
If MSVC++14 is needed setuptools.msvc now redirect user to Visual C++ Build Tools web page.
* #625 and #626: Fixes on setuptools.msvc mainly for Python 2 and Linux.
#625 and #626: Fixes on setuptools.msvc mainly for Python 2 and Linux.
03 Jul 2016
#625 and #626 : Fixes on setuptools.msvc mainly for Python 2 and Linux.
Pull Request #174: Add more aggressive support for standalone Microsoft Visual C++ compilers in msvc9compiler patch. Particularly : Windows SDK 6.1 an
Pull Request #174: Add more aggressive support for standalone Microsoft Visual C++ compilers in msvc9compiler patch. Particularly : Windows SDK 6.1 and 7.0 (MSVC++ 9.0), Windows SDK 7.1 (MSVC++ 10.0), Visual C++ Build Tools 2015 (MSVC++14)
Renamed setuptools.msvc9_support to setuptools.msvc.
Re-release of v23.2.0, which was missing the intended commits.
Re-release of v23.2.0, which was missing the intended commits.
#623: Remove used of deprecated 'U' flag when reading manifests.
02 Jul 2016
Re-release of v23.2.0, which was missing the intended commits.
#623 : Remove used of deprecated ‘U’ flag when reading manifests.
Nothing published for this version
* #619: Deprecated tag_svn_revision distribution option.
#619: Deprecated tag_svn_revision distribution option.
* #611: Removed ARM executables for CLI and GUI script launchers on Windows. If this was a feature you cared about, please comment in the ticket. * #6
#611: Removed ARM executables for CLI and GUI script launchers on Windows. If this was a feature you cared about, please comment in the ticket.
#604: Removed docs building support. The project now relies on documentation hosted at https://setuptools.pypa.io/.
* #604: Restore repository for upload_docs command to restore publishing of docs during release.
#604: Restore repository for upload_docs command to restore publishing of docs during release.
03 Jun 2016
#604 : Restore repository for upload_docs command to restore publishing of docs during release.
* #589: Upload releases to pypi.io using the upload hostname and legacy path.
#589: Upload releases to pypi.io using the upload hostname and legacy path.
03 Jun 2016
#589 : Upload releases to pypi.io using the upload hostname and legacy path.
* #589: Releases are now uploaded to pypi.io (Warehouse).
#589: Releases are now uploaded to pypi.io (Warehouse).
* #190: On Python 2, if unicode is passed for packages to build_py command, it will be handled just as with text on Python 3.
#190: On Python 2, if unicode is passed for packages to build_py command, it will be handled just as with text on Python 3.
03 Jun 2016
#190 : On Python 2, if unicode is passed for packages to build_py command, it will be handled just as with text on Python 3.
Intended to be v21.3.0, but jaraco accidentally released as a major bump.
Intended to be v21.3.0, but jaraco accidentally released as a major bump.
#598: Setuptools now lists itself first in the User-Agent for web requests, better following the guidelines in RFC 7231.
Minor fixes to changelog and docs.
Minor fixes to changelog and docs.
* #261: Exclude directories when resolving globs in package_data.
#261: Exclude directories when resolving globs in package_data.
22 May 2016
#261 : Exclude directories when resolving globs in package_data.
* #539: In the easy_install get_site_dirs, honor all paths found in site.getsitepackages.
#539: In the easy_install get_site_dirs, honor all paths found in site.getsitepackages.
21 May 2016
#539 : In the easy_install get_site_dirs, honor all paths found in site.getsitepackages .
* #572: In build_ext, now always import _CONFIG_VARS from distutils rather than from sysconfig to allow distutils.sysconfig.customize_compiler configu
#572: In build_ext, now always import _CONFIG_VARS from distutils rather than from sysconfig to allow distutils.sysconfig.customize_compiler configure the OS X compiler for -dynamiclib.
18 May 2016
#572 : In build_ext, now always import _CONFIG_VARS from distutils rather than from sysconfig to allow distutils.sysconfig.customize_compiler configure the OS X compiler for -dynamiclib .
Removed ez_setup.py from Setuptools sdist. The bootstrap script will be maintained in its own branch and should be generally be retrieved from its can
Removed ez_setup.py from Setuptools sdist. The bootstrap script will be maintained in its own branch and should be generally be retrieved from its canonical location at https://bootstrap.pypa.io/ez_setup.py.
02 May 2016
Removed ez_setup.py from Setuptools sdist. The bootstrap script will be maintained in its own branch and should be generally be retrieved from its canonical location at https://bootstrap.pypa.io/ez_setup.py .
Nothing published for this version
* #548: Update certify version to 2016.2.28 * #545: Safely handle deletion of non-zip eggs in rotate command.
#548: Update certify version to 2016.2.28
#545: Safely handle deletion of non-zip eggs in rotate command.
16 Apr 2016
#548 : Update certify version to 2016.2.28
#545 : Safely handle deletion of non-zip eggs in rotate command.
Issue #544: Fix issue with extra environment marker processing in WorkingSet due to refactor in v20.7.0.
Issue #544: Fix issue with extra environment marker processing in WorkingSet due to refactor in v20.7.0.
15 Apr 2016
Issue #544 : Fix issue with extra environment marker processing in WorkingSet due to refactor in v20.7.0.
Issue #543: Re-release so that latest release doesn't cause déjà vu with distribute and setuptools 0.7 in older environments.
Issue #543: Re-release so that latest release doesn't cause déjà vu with distribute and setuptools 0.7 in older environments.
15 Apr 2016
Issue #543 : Re-release so that latest release doesn’t cause déjà vu with distribute and setuptools 0.7 in older environments.
Refactored extra environment marker processing in WorkingSet.
Refactored extra environment marker processing in WorkingSet.
Issue #533: Fixed intermittent test failures.
Issue #536: In msvc9_support, trap additional exceptions that might occur when importing distutils.msvc9compiler in mingw environments.
Issue #537: Provide better context when package metadata fails to decode in UTF-8.
Issue #523: Restored support for environment markers, now honoring 'extra' environment markers.
Issue #523: Restored support for environment markers, now honoring 'extra' environment markers.
09 May 2016
Issue #523 : Restored support for environment markers, now honoring ‘extra’ environment markers.
Issue #523: Disabled support for environment markers introduced in v20.5.
Issue #523: Disabled support for environment markers introduced in v20.5.
31 Mar 2016
Issue #523 : Disabled support for environment markers introduced in v20.5.
Issue #503: Restore support for PEP 345 environment markers by updating to Packaging 16.6.
Issue #503: Restore support for PEP 345 environment markers by updating to Packaging 16.6.
30 Mar 2016
Issue #503 : Restore support for PEP 345 environment markers by updating to Packaging 16.6 .
Issue #422: Moved hosting to Github _ from Bitbucket _. Issues have been migrated, though all issues and comments are attributed to bb-migration. So i
Issue #422: Moved hosting to Github from Bitbucket. Issues have been migrated, though all issues and comments are attributed to bb-migration. So if you have a particular issue or issues to which you've been subscribed, you will want to "watch" the equivalent issue in Github. The Bitbucket project will be retained for the indefinite future, but Github now hosts the canonical project repository.
Issue #519: Remove import hook when reloading the pkg_resources module.
Issue #519: Remove import hook when reloading the pkg_resources module.
BB Pull Request #184: Update documentation in pkg_resources around new Requirement implementation.
18 Mar 2016
Issue #519 : Remove import hook when reloading the pkg_resources module.
BB Pull Request #184 : Update documentation in pkg_resources around new Requirement implementation.
BB Pull Request #179: pkg_resources.Requirement objects are now a subclass of packaging.requirements.Requirement, allowing any environment markers and
BB Pull Request #179: pkg_resources.Requirement objects are now a subclass of packaging.requirements.Requirement, allowing any environment markers and url (if any) to be affiliated with the requirement
BB Pull Request #179: Restore use of RequirementParseError exception unintentionally dropped in 20.2.
Issue #502: Correct regression in parsing of multiple version specifiers separated by commas and spaces.
Issue #502: Correct regression in parsing of multiple version specifiers separated by commas and spaces.
27 Feb 2016
Issue #502 : Correct regression in parsing of multiple version specifiers separated by commas and spaces.
Update upload_docs command to also honor keyring for password resolution.
Update upload_docs command to also honor keyring for password resolution.
12 Feb 2016
Update upload_docs command to also honor keyring for password resolution.
Added support for using passwords from keyring in the upload command. See the upload docs _ for details.
Added support for using passwords from keyring in the upload command. See the upload docs for details.
11 Feb 2016
Added support for using passwords from keyring in the upload command. See the upload docs for details.
Issue #118: Once again omit the package metadata (egg-info) from the list of outputs in --record. This version of setuptools can no longer be used to
Issue #118: Once again omit the package metadata (egg-info) from the list of outputs in --record. This version of setuptools can no longer be used to upgrade pip earlier than 6.0.
Off-project PR: 0dcee79 _ and f9bd9b9 _ For FreeBSD, also honor root certificates from ca_root_nss _.
Off-project PR: 0dcee79 and f9bd9b9 For FreeBSD, also honor root certificates from ca_root_nss.
03 Feb 2016
Off-project PR: 0dcee79 and f9bd9b9 For FreeBSD, also honor root certificates from ca_root_nss .
Issue #491: Correct regression incurred in 19.4 where a double-namespace package installed using pip would cause a TypeError.
Issue #491: Correct regression incurred in 19.4 where a double-namespace package installed using pip would cause a TypeError.
31 Jan 2016
Issue #491 : Correct regression incurred in 19.4 where a double-namespace package installed using pip would cause a TypeError.
Restore compatibility for PyPy 3 compatibility lost in 19.4.1 addressing Issue #487.
Restore compatibility for PyPy 3 compatibility lost in 19.4.1 addressing Issue #487.
setuptools.launch shim now loads scripts in a new namespace, avoiding getting relative imports from the setuptools package on Python 2.
Added a new entry script setuptools.launch, implementing the shim found in pip.util.setuptools_build. Use this command to launch distutils-only packag
Added a new entry script setuptools.launch, implementing the shim found in pip.util.setuptools_build. Use this command to launch distutils-only packages under setuptools in the same way that pip does, causing the setuptools monkeypatching of distutils to be invoked prior to invoking a script. Useful for debugging or otherwise installing a distutils-only package under setuptools when pip isn't available or otherwise does not expose the desired functionality. For example:
$ python -m setuptools.launch setup.py develop
Issue #488: Fix dual manifestation of Extension class in extension packages installed as dependencies when Cython is present.
Issue #486: Correct TypeError when getfilesystemencoding returns None.
Issue #486: Correct TypeError when getfilesystemencoding returns None.
Issue #139: Clarified the license as MIT.
BB Pull Request #169: Removed special handling of command spec in scripts for Jython.
23 Jan 2016
Issue #486 : Correct TypeError when getfilesystemencoding returns None.
Issue #139 : Clarified the license as MIT.
BB Pull Request #169 : Removed special handling of command spec in scripts for Jython.
Issue #487: Use direct invocation of importlib.machinery in pkg_resources to avoid missing detection on relevant platforms.
Issue #487: Use direct invocation of importlib.machinery in pkg_resources to avoid missing detection on relevant platforms.
23 Jan 2016
Issue #487 : Use direct invocation of importlib.machinery in pkg_resources to avoid missing detection on relevant platforms.
Issue #341: Correct error in path handling of package data files in build_py command when package is empty.
Issue #341: Correct error in path handling of package data files in build_py command when package is empty.
Distribute #323, Issue #141, Issue #207, and BB Pull Request #167: Another implementation of pkg_resources.WorkingSet and pkg_resources.Distribution that supports replacing an extant package with a new one, allowing for setup_requires dependencies to supersede installed packages for the session.
Issue #229: Implement new technique for readily incorporating dependencies conditionally from vendored copies or primary locations. Adds a new depende
Issue #229: Implement new technique for readily incorporating dependencies conditionally from vendored copies or primary locations. Adds a new dependency on six.
06 Jan 2016
Issue #229 : Implement new technique for readily incorporating dependencies conditionally from vendored copies or primary locations. Adds a new dependency on six.
BB Pull Request #163: Add get_command_list method to Distribution.
BB Pull Request #163: Add get_command_list method to Distribution.
BB Pull Request #162: Add missing whitespace to multiline string literals.
25 Dec 2015
BB Pull Request #163 : Add get_command_list method to Distribution.
BB Pull Request #162 : Add missing whitespace to multiline string literals.
Issue #476: Cast version to string (using default encoding) to avoid creating Unicode types on Python 2 clients.
Issue #476: Cast version to string (using default encoding) to avoid creating Unicode types on Python 2 clients.
Issue #477: In Powershell downloader, use explicit rendering of strings, rather than rely on repr, which can be incorrect (especially on Python 2).
Issue #215: The bootstrap script ez_setup.py now automatically detects the latest version of setuptools (using PyPI JSON API) rather than hard-coding
Issue #215: The bootstrap script ez_setup.py now automatically detects the latest version of setuptools (using PyPI JSON API) rather than hard-coding a particular value.
Issue #475: Fix incorrect usage in _translate_metadata2.
Issue #442: Use RawConfigParser for parsing .pypirc file. Interpolated values are no longer honored in .pypirc files.
Issue #442: Use RawConfigParser for parsing .pypirc file. Interpolated values are no longer honored in .pypirc files.
15 Dec 2015
Issue #442 : Use RawConfigParser for parsing .pypirc file. Interpolated values are no longer honored in .pypirc files.
Issue #440: Prevent infinite recursion when a SandboxViolation or other UnpickleableException occurs in a sandbox context with setuptools hidden. Fixe
Issue #440: Prevent infinite recursion when a SandboxViolation or other UnpickleableException occurs in a sandbox context with setuptools hidden. Fixes regression introduced in Setuptools 12.0.
13 Dec 2015
Issue #440 : Prevent infinite recursion when a SandboxViolation or other UnpickleableException occurs in a sandbox context with setuptools hidden. Fixes regression introduced in Setuptools 12.0.
Deprecated egg_info.get_pkg_info_revision.
Deprecated egg_info.get_pkg_info_revision.
Issue #471: Don't rely on repr for an HTML attribute value in package_index.
Issue #419: Avoid errors in FileMetadata when the metadata directory is broken.
Issue #472: Remove deprecated use of 'U' in mode parameter when opening files.
Issue #469: Refactored logic for Issue #419 fix to re-use metadata loading from Provider.
Issue #469: Refactored logic for Issue #419 fix to re-use metadata loading from Provider.
01 Dec 2015
Issue #469 : Refactored logic for Issue #419 fix to re-use metadata loading from Provider.
BB Pull Request #160: Improve detection of gui script in easy_install._adjust_header.
Update dependency on certify.
BB Pull Request #160: Improve detection of gui script in easy_install._adjust_header.
Made test.test_args a non-data property; alternate fix for the issue reported in BB Pull Request #155.
Issue #453: In ez_setup bootstrap module, unload all pkg_resources modules following download.
BB Pull Request #158: Honor PEP-488 when excluding files for namespace packages.
Issue #419 and BB Pull Request #144: Add experimental support for reading the version info from distutils-installed metadata rather than using the version in the filename.
Issue #464: Correct regression in invocation of superclass on old-style class on Python 2.
Issue #464: Correct regression in invocation of superclass on old-style class on Python 2.
24 Nov 2015
Issue #464 : Correct regression in invocation of superclass on old-style class on Python 2.
Issue #439: When installing entry_point scripts under development, omit the version number of the package, allowing any version of the package to be u
Issue #439: When installing entry_point scripts under development, omit the version number of the package, allowing any version of the package to be used.
24 Nov 2015
Issue #439 : When installing entry_point scripts under development, omit the version number of the package, allowing any version of the package to be used.
In preparation for dropping support for Python 3.2, a warning is now logged when pkg_resources is imported on Python 3.2 or earlier Python 3 versions.
In preparation for dropping support for Python 3.2, a warning is now logged when pkg_resources is imported on Python 3.2 or earlier Python 3 versions.
Add support for python_platform_implementation environment marker.
Issue #446: Test command now always invokes unittest, even if no test suite is supplied.
Issue #446: Test command now always invokes unittest, even if no test suite is supplied.
10 Oct 2015
Issue #446 : Test command now always invokes unittest, even if no test suite is supplied.
Correct another regression in setuptools.findall where the fix for Python #12885 was lost.
Correct another regression in setuptools.findall where the fix for Python #12885 was lost.
19 Sep 2015
Correct another regression in setuptools.findall where the fix for Python #12885 was lost.
Issue #425: Correct regression in setuptools.findall.
Issue #425: Correct regression in setuptools.findall.
BB Pull Request #135: Setuptools now allows disabling of the manipulation of the sys.path during the processing of the easy-install.pth file. To do so
BB Pull Request #135: Setuptools now allows disabling of the manipulation of the sys.path during the processing of the easy-install.pth file. To do so, set the environment variable SETUPTOOLS_SYS_PATH_TECHNIQUE to anything but "rewrite" (consider "raw"). During any install operation with manipulation disabled, setuptools packages will be appended to sys.path naturally.
Future versions may change the default behavior to disable manipulation. If so, the default behavior can be retained by setting the variable to "rewrite".
Issue #257: easy_install --version now shows more detail about the installation location and Python version.
Refactor setuptools.findall in preparation for re-submission back to distutils.
Issue #412: More efficient directory search in find_packages.
Issue #412: More efficient directory search in find_packages.
19 Aug 2015
Issue #412 : More efficient directory search in find_packages .
Your coding agent can read these notes before it upgrades. Set up the MCP server →