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
Changes ------- * #1481: Join the sdist --dist-dir and the build_meta sdist directory argument to point to the same target (meaning the build frontend
#1481: Join the sdist --dist-dir and the build_meta sdist directory argument to point to the same target (meaning the build frontend no longer needs to clean manually the dist dir to avoid multiple sdist presence, and setuptools no longer needs to handle conflicts between the two).
Changes ------- * #1402: Fixed a bug with namespace packages under Python 3.6 when one package in current directory hides another which is installed.
#1402: Fixed a bug with namespace packages under Python 3.6 when one package in current directory hides another which is installed.
#1427: Set timestamp of .egg-info directory whenever egg_info command is run.
#1474: build_meta.get_requires_for_build_sdist now does not include the wheel package anymore.
#1486: Suppress warnings in pkg_resources.handle_ns.
#1479: Remove internal use of six.binary_type.
One column per quarter.
Changes ------- * #1466: Fix handling of Unicode arguments in PEP 517 backend
#1466: Fix handling of Unicode arguments in PEP 517 backend
21 Aug 2018
#1466 : Fix handling of Unicode arguments in PEP 517 backend
Changes ------- * #1465: Fix regression with egg_info command when tagging is used.
#1465: Fix regression with egg_info command when tagging is used.
21 Aug 2018
#1465 : Fix regression with egg_info command when tagging is used.
Changes ------- * #1410: Deprecated upload and register commands. * #1312: Introduced find_namespace_packages() to find PEP 420 namespace packages. *
#1410: Deprecated upload and register commands.
#1312: Introduced find_namespace_packages() to find PEP 420 namespace packages.
#1420: Added find_namespace: directive to config parser.
#1418: Solved race in when creating egg cache directories.
#1450: Upgraded vendored PyParsing from 2.1.10 to 2.2.0.
#1451: Upgraded vendored appdirs from 1.4.0 to 1.4.3.
#1388: Fixed "Microsoft Visual C++ Build Tools" link in exception when Visual C++ not found.
#1389: Added support for scripts which have unicode content.
#1416: Moved several Python version checks over to using six.PY2 and six.PY3.
#1441: Removed spurious executable permissions from files that don't need them.
Breaking Changes ---------------- * #1342: Drop support for Python 3.3. Changes ------- * #1366: In package_index, fixed handling of encoded entities
#1342: Drop support for Python 3.3.
#1366: In package_index, fixed handling of encoded entities in URLs.
#1383: In pkg_resources VendorImporter, avoid removing packages imported from the root.
#1379: Minor doc fixes after actually using the new release process.
#1385: Removed section on non-package data files.
#1403: Fix developer's guide.
#1404: Fix PEP 518 configuration: set build requirements in pyproject.toml to ["wheel"].
Changes ------- * #1359: Support using "file:" to load a PEP 440-compliant package version from a text file. * #1360: Fixed issue with a mismatch betw
#1359: Support using "file:" to load a PEP 440-compliant package version from a text file.
#1360: Fixed issue with a mismatch between the name of the package and the name of the .dist-info file in wheel files
#1364: Add __dir__() implementation to pkg_resources.Distribution() that includes the attributes in the _provider instance variable.
#1365: Take the package_dir option into account when loading the version from a module attribute.
#1353: Added coverage badge to README.
#1356: Made small fixes to the developer guide documentation.
#1357: Fixed warnings in documentation builds and started enforcing that the docs build without warnings in tox.
#1376: Updated release process docs.
#1343: The setuptools specific long_description_content_type, project_urls and provides_extras fields are now set consistently after any distutils setup_keywords calls, allowing them to override values.
#1352: Added tox environment for documentation builds.
#1354: Added towncrier for changelog management.
#1355: Add PR template.
#1368: Fixed tests which failed without network connectivity.
#1369: Added unit tests for PEP 425 compatibility tags support.
#1372: Stop testing Python 3.3 in Travis CI, now that the latest version of wheel no longer installs on it.
* #1340: Update all PyPI URLs to reflect the switch to the new Warehouse codebase. * #1337: In pkg_resources, now support loading resources for module
#1340: Update all PyPI URLs to reflect the switch to the new Warehouse codebase.
#1337: In pkg_resources, now support loading resources for modules loaded by the SourcelessFileLoader.
#1332: Silence spurious wheel related warnings on Windows.
* #1297: Restore Unicode handling for Maintainer fields in metadata.
#1297: Restore Unicode handling for Maintainer fields in metadata.
18 Mar 2018
#1297 : Restore Unicode handling for Maintainer fields in metadata.
* #1296: Setuptools now vendors its own direct dependencies, no longer relying on the dependencies as vendored by pkg_resources. * #296: Removed long-
#1296: Setuptools now vendors its own direct dependencies, no longer relying on the dependencies as vendored by pkg_resources.
#296: Removed long-deprecated support for iteration on Version objects as returned by pkg_resources.parse_version. Removed the SetuptoolsVersion and SetuptoolsLegacyVersion names as well. They should not have been used, but if they were, replace with Version and LegacyVersion from packaging.version.
* #1288: Add support for maintainer in PKG-INFO.
#1288: Add support for maintainer in PKG-INFO.
* #1292: Avoid generating Provides-Extra in metadata when no extra is present (but environment markers are).
#1292: Avoid generating Provides-Extra in metadata when no extra is present (but environment markers are).
17 Mar 2018
#1292 : Avoid generating Provides-Extra in metadata when no extra is present (but environment markers are).
* #1286: Add support for Metadata 2.1 (PEP 566).
#1286: Add support for Metadata 2.1 (PEP 566).
* #1285: Fixed RuntimeError in pkg_resources.parse_requirements on Python 3.7 (stemming from PEP 479).
#1285: Fixed RuntimeError in pkg_resources.parse_requirements on Python 3.7 (stemming from PEP 479).
06 Mar 2018
#1285 : Fixed RuntimeError in pkg_resources.parse_requirements on Python 3.7 (stemming from PEP 479 ).
* #1271: Revert to Cython legacy build_ext behavior for compatibility.
#1271: Revert to Cython legacy build_ext behavior for compatibility.
06 Feb 2018
#1271 : Revert to Cython legacy build_ext behavior for compatibility.
* #1229: Expand imports in build_ext to refine detection of Cython availability. * #1270: When Cython is available, build_ext now uses the new_build_e
#1229: Expand imports in build_ext to refine detection of Cython availability.
#1270: When Cython is available, build_ext now uses the new_build_ext.
04 Feb 2018
#1229 : Expand imports in build_ext to refine detection of Cython availability.
#1270 : When Cython is available, build_ext now uses the new_build_ext.
* #1257: In bdist_egg.scan_module, fix ValueError on Python 3.7.
#1257: In bdist_egg.scan_module, fix ValueError on Python 3.7.
03 Feb 2018
#1257 : In bdist_egg.scan_module, fix ValueError on Python 3.7.
* #1231: Removed warning when PYTHONDONTWRITEBYTECODE is enabled.
#1231: Removed warning when PYTHONDONTWRITEBYTECODE is enabled.
05 Jan 2018
#1231 : Removed warning when PYTHONDONTWRITEBYTECODE is enabled.
* #1210: Add support for PEP 345 Project-URL metadata. * #1207: Add support for long_description_type to setup.cfg declarative config as intended and
#1210: Add support for PEP 345 Project-URL metadata.
#1207: Add support for long_description_type to setup.cfg declarative config as intended and documented.
04 Jan 2018
#1210 : Add support for PEP 345 Project-URL metadata.
#1207 : Add support for long_description_type to setup.cfg declarative config as intended and documented.
* #1232: Fix trailing slash handling in pkg_resources.ZipProvider.
#1232: Fix trailing slash handling in pkg_resources.ZipProvider.
* #1220: Fix data_files handling when installing from wheel.
#1220: Fix data_files handling when installing from wheel.
04 Dec 2017
#1220 : Fix data_files handling when installing from wheel.
* fix Travis' Python 3.3 job.
fix Travis' Python 3.3 job.
* #1212: fix encoding handling of metadata when installing from a wheel.
#1212: fix encoding handling of metadata when installing from a wheel.
26 Nov 2017
#1212 : fix encoding handling of metadata when installing from a wheel.
* #1200: easy_install now support installing from wheels: they will be installed as standalone unzipped eggs.
#1200: easy_install now support installing from wheels: they will be installed as standalone unzipped eggs.
26 Nov 2017
#1200 : easy_install now support installing from wheels: they will be installed as standalone unzipped eggs.
* #1208: Improve error message when failing to locate scripts in egg-info metadata.
#1208: Improve error message when failing to locate scripts in egg-info metadata.
25 Nov 2017
#1208 : Improve error message when failing to locate scripts in egg-info metadata.
* #458: In order to support deterministic builds, Setuptools no longer allows packages to declare install_requires as unordered sequences (sets or dic
#458: In order to support deterministic builds, Setuptools no longer allows packages to declare install_requires as unordered sequences (sets or dicts).
25 Nov 2017
#458 : In order to support deterministic builds, Setuptools no longer allows packages to declare install_requires as unordered sequences (sets or dicts).
* #878: Drop support for Python 2.6. Python 2.6 users should rely on 'setuptools < 37dev'.
#878: Drop support for Python 2.6. Python 2.6 users should rely on 'setuptools < 37dev'.
20 Nov 2017
#878 : Drop support for Python 2.6. Python 2.6 users should rely on ‘setuptools < 37dev’.
* #1190: In SSL support for package index operations, use SNI where available.
#1190: In SSL support for package index operations, use SNI where available.
19 Nov 2017
#1190 : In SSL support for package index operations, use SNI where available.
* #701: Fixed duplicate test discovery on Python 3.
#701: Fixed duplicate test discovery on Python 3.
* #1193: Avoid test failures in bdist_egg when PYTHONDONTWRITEBYTECODE is set.
#1193: Avoid test failures in bdist_egg when PYTHONDONTWRITEBYTECODE is set.
11 Nov 2017
#1193 : Avoid test failures in bdist_egg when PYTHONDONTWRITEBYTECODE is set.
* #1054: Support setup_requires in setup.cfg files.
#1054: Support setup_requires in setup.cfg files.
* #1132: Removed redundant and costly serialization/parsing step in EntryPoint.__init__. * #844: bdist_egg --exclude-source-files now tested and works
#1132: Removed redundant and costly serialization/parsing step in EntryPoint.__init__.
#844: bdist_egg --exclude-source-files now tested and works on Python 3.
09 Nov 2017
#1132 : Removed redundant and costly serialization/parsing step in EntryPoint.init .
#844 : bdist_egg --exclude-source-files now tested and works on Python 3.
* #1143: Added setuptools.build_meta module, an implementation of PEP-517 for Setuptools-defined packages. * #1143: Added dist_info command for produc
#1143: Added setuptools.build_meta module, an implementation of PEP-517 for Setuptools-defined packages.
#1143: Added dist_info command for producing dist_info metadata.
12 Oct 2017
#1143 : Added setuptools.build_meta module, an implementation of PEP-517 for Setuptools-defined packages.
#1143 : Added dist_info command for producing dist_info metadata.
Inspired by #1134, performed substantial refactoring of pkg_resources.find_on_path to facilitate an optimization for paths with many non-version entri
#170: When working with Mercurial checkouts, use Windows-friendly syntax for suppressing output.
Inspired by #1134, performed substantial refactoring of pkg_resources.find_on_path to facilitate an optimization for paths with many non-version entries.
* #1075: Add new Description-Content-Type metadata field. See here for documentation on how to use this field. _ * #1068: Sort files and directories w
#1075: Add new Description-Content-Type metadata field. See here for documentation on how to use this field.
#1068: Sort files and directories when building eggs for deterministic order.
#196: Remove caching of easy_install command in fetch_build_egg. Fixes issue where pytest-runner-N.N would satisfy the installation of pytest.
#1129: Fix working set dependencies handling when replacing conflicting distributions (e.g. when using setup_requires with a conflicting transitive dependency, fix #1124).
#1133: Improved handling of README files extensions and added Markdown to the list of searched READMES.
#1135: Improve performance of pkg_resources import by not invoking access or stat and using os.listdir instead.
* #1131: Make possible using several files within file: directive in metadata.long_description in setup.cfg.
#1131: Make possible using several files within file: directive in metadata.long_description in setup.cfg.
28 Aug 2017
#1131 : Make possible using several files within file: directive in metadata.long_description in setup.cfg .
fix #1105: Fix handling of requirements with environment markers when declared in setup.cfg (same treatment as for #1081).
fix #1105: Fix handling of requirements with environment markers when declared in setup.cfg (same treatment as for #1081).
02 Aug 2017
fix #1105 : Fix handling of requirements with environment markers when declared in setup.cfg (same treatment as for #1081 ).
* #462: Don't assume a directory is an egg by the .egg extension alone.
#462: Don't assume a directory is an egg by the .egg extension alone.
31 Jul 2017
#462 : Don’t assume a directory is an egg by the .egg extension alone.
* #1093: Fix test command handler with extras_require. * #1112, #1091, #1115: Now using Trusty containers in Travis for CI and CD.
#1093: Fix test command handler with extras_require.
#1112, #1091, #1115: Now using Trusty containers in Travis for CI and CD.
30 Jul 2017
#1093 : Fix test command handler with extras_require.
#1112 , #1091 , #1115 : Now using Trusty containers in Travis for CI and CD.
* #1092: pkg_resources now uses inspect.getmro to resolve classes in method resolution order.
#1092: pkg_resources now uses inspect.getmro to resolve classes in method resolution order.
26 Jul 2017
#1092 : pkg_resources now uses inspect.getmro to resolve classes in method resolution order.
* #1102: Restore behavior for empty extras.
#1102: Restore behavior for empty extras.
* #1099: Revert commit a3ec721, restoring intended purpose of extras as part of a requirement declaration.
#1099: Revert commit a3ec721, restoring intended purpose of extras as part of a requirement declaration.
24 Jul 2017
#1099 : Revert commit a3ec721, restoring intended purpose of extras as part of a requirement declaration.
support extras specifiers in install_requires requirements
fix #1086
fix #1087
support extras specifiers in install_requires requirements
23 Jul 2017
fix #1086
fix #1087
support extras specifiers in install_requires requirements
* #1081: Environment markers indicated in install_requires are now processed and treated as nameless extras_require with markers, allowing their metad
#1081: Environment markers indicated in install_requires are now processed and treated as nameless extras_require with markers, allowing their metadata in requires.txt to be correctly generated.
#1053: Tagged commits are now released using Travis-CI build stages, meaning releases depend on passing tests on all supported Python versions (Linux) and not just the latest Python version.
* #1083: Correct py31compat.makedirs to correctly honor exist_ok parameter. * #1083: Also use makedirs compatibility throughout setuptools.
#1083: Correct py31compat.makedirs to correctly honor exist_ok parameter.
#1083: Also use makedirs compatibility throughout setuptools.
13 Jul 2017
#1083 : Correct py31compat.makedirs to correctly honor exist_ok parameter.
#1083 : Also use makedirs compatibility throughout setuptools.
Removed deprecation of and restored support for upload_docs command for sites other than PyPI. Only warehouse is dropping support, but services like d…
#1083: Avoid race condition on directory creation in pkg_resources.ensure_directory.
Removed deprecation of and restored support for upload_docs command for sites other than PyPI. Only warehouse is dropping support, but services like devpi continue to support docs built by setuptools' plugins. See this comment for more context on the motivation for this change.
* #1042: Fix import in py27compat module that still referenced six directly, rather than through the externs module (vendored packages hook).
#1042: Fix import in py27compat module that still referenced six directly, rather than through the externs module (vendored packages hook).
01 Jun 2017
#1042 : Fix import in py27compat module that still referenced six directly, rather than through the externs module (vendored packages hook).
* #1015: Fix test failures on Python 3.7. * #1024: Add workaround for Jython #2581 in monkey module.
#1015: Fix test failures on Python 3.7.
#1024: Add workaround for Jython #2581 in monkey module.
27 Apr 2017
#1015 : Fix test failures on Python 3.7.
#1024 : Add workaround for Jython #2581 in monkey module.
* #992: Revert change introduced in v34.4.1, now considered invalid. * #1016: Revert change introduced in v35.0.0 per #1014, referencing #436. The app
#992: Revert change introduced in v34.4.1, now considered invalid.
#1016: Revert change introduced in v35.0.0 per #1014, referencing #436. The approach had unintended consequences, causing sdist installs to be missing files.
* #436: In egg_info.manifest_maker, no longer read the file list from the manifest file, and instead re-build it on each build. In this way, files rem
#436: In egg_info.manifest_maker, no longer read the file list from the manifest file, and instead re-build it on each build. In this way, files removed from the specification will not linger in the manifest. As a result, any files manually added to the manifest will be removed on subsequent egg_info invocations. No projects should be manually adding files to the manifest and should instead use MANIFEST.in or SCM file finders to force inclusion of files in the manifest.
* #1008: In MSVC support, use always the last version available for Windows SDK and UCRT SDK. * #1008: In MSVC support, fix "vcruntime140.dll" returne
#1008: In MSVC support, use always the last version available for Windows SDK and UCRT SDK.
#1008: In MSVC support, fix "vcruntime140.dll" returned path with Visual Studio 2017.
#992: In msvc.msvc9_query_vcvarsall, ensure the returned dicts have str values and not Unicode for compatibility with os.environ.
* #995: In MSVC support, add support for "Microsoft Visual Studio 2017" and "Microsoft Visual Studio Build Tools 2017". * #999 via #1007: Extend suppo
#995: In MSVC support, add support for "Microsoft Visual Studio 2017" and "Microsoft Visual Studio Build Tools 2017".
#999 via #1007: Extend support for declarative package config in a setup.cfg file to include the options python_requires and py_modules.
* #967 (and #997): Explicitly import submodules of packaging to account for environments where the imports of those submodules is not implied by other
#967 (and #997): Explicitly import submodules of packaging to account for environments where the imports of those submodules is not implied by other behavior.
26 Mar 2017
#967 (and #997 ): Explicitly import submodules of packaging to account for environments where the imports of those submodules is not implied by other behavior.
* #993: Fix documentation upload by correcting rendering of content-type in _build_multipart on Python 3.
#993: Fix documentation upload by correcting rendering of content-type in _build_multipart on Python 3.
11 Mar 2017
#993 : Fix documentation upload by correcting rendering of content-type in _build_multipart on Python 3.
* #988: Trap os.unlink same as os.remove in auto_chmod error handler. * #983: Fixes to invalid escape sequence deprecations on Python 3.6.
#988: Trap os.unlink same as os.remove in auto_chmod error handler.
#983: Fixes to invalid escape sequence deprecations on Python 3.6.
02 Mar 2017
#988 : Trap os.unlink same as os.remove in auto_chmod error handler.
#983 : Fixes to invalid escape sequence deprecations on Python 3.6.
* #941: In the upload command, if the username is blank, default to getpass.getuser(). * #971: Correct distutils findall monkeypatch to match appropri
#941: In the upload command, if the username is blank, default to getpass.getuser().
#971: Correct distutils findall monkeypatch to match appropriate versions (namely Python 3.4.6).
23 Feb 2017
#941 : In the upload command, if the username is blank, default to getpass.getuser() .
#971 : Correct distutils findall monkeypatch to match appropriate versions (namely Python 3.4.6).
* #966: Add support for reading dist-info metadata and thus locating Distributions from zip files. * #968: Allow '+' and '!' in egg fragments so that
#966: Add support for reading dist-info metadata and thus locating Distributions from zip files.
#968: Allow '+' and '!' in egg fragments so that it can take package names that contain PEP 440 conforming version specifiers.
* #953: More aggressively employ the compatibility issue originally added in #706.
#953: More aggressively employ the compatibility issue originally added in #706.
03 Feb 2017
#953 : More aggressively employ the compatibility issue originally added in #706 .
* #930: build_info now accepts two new parameters to optimize and customize the building of C libraries.
#930: build_info now accepts two new parameters to optimize and customize the building of C libraries.
28 Jan 2017
#930 : build_info now accepts two new parameters to optimize and customize the building of C libraries.
* #947: Loosen restriction on the version of six required, restoring compatibility with environments relying on six 1.6.0 and later.
#947: Loosen restriction on the version of six required, restoring compatibility with environments relying on six 1.6.0 and later.
28 Jan 2017
#947 : Loosen restriction on the version of six required, restoring compatibility with environments relying on six 1.6.0 and later.
Your coding agent can read these notes before it upgrades. Set up the MCP server →