setuptools

Frameworks & LibrariesMIT

setuptools release notes.

Latest v84.0.0 · by setuptoolsWritten in PythonWebsitepypa/setuptoolsRSS

Release activity

Release activity — 9 releases across 8 days in the last year. Each cell is one day; darker means more releases that day. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
MondayNo releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 2026No releases on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 2026No releases on Aug 31, 2026No releases on Sep 7, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026No releases on Aug 25, 2026No releases on Sep 1, 2026No releases on Sep 8, 2026
WednesdayNo releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026No releases on Aug 26, 2026No releases on Sep 2, 2026
ThursdayNo releases on May 28, 2026No releases on Jun 4, 2026No releases on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 2026No releases on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 2026No releases on Aug 20, 2026No releases on Aug 27, 2026No releases on Sep 3, 2026
FridayNo releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026
SaturdayNo releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 20261 release on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 20261 release on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026

9 releases in the last year, busiest day 2

Changelog

What changed from 83 to 84

v84.0.0

Latest
Added 1
  • C compilers gained a Compiler.call method as a thin wrapper over subprocess.check_call with macOS deployment-target env injection
Changed 10
  • Newline-separated keywords and platforms fields are now handled forgivingly with each line treated as a separate item and a deprecation warning emitted
  • Extension is now a dataclass exposing type annotations for its constructor arguments
  • C compiler modules now emit log messages through their own compilers.C.* loggers instead of the distutils root logger
  • C compilers no longer depend on distutils.spawn, distutils.dir_util, distutils.file_util, distutils._modified, or distutils.util.execute/split_quoted; generic helpers are vendored and methods are implemented directly on the standard library
  • Platform-identification helpers (get_platform/get_host_platform/is_mingw) now live in distutils.compilers.platform.detect and macOS deployment-target logic in distutils.compilers.platform.macos
  • Compilers now read their build configuration from the standard library's sysconfig instead of distutils.sysconfig
Fixed 4
  • MSVC linker now passes its arguments through a response file when the command line would exceed the Windows maximum length
  • Cygwin and MinGW compilers now pass -O1 instead of a bare -O
  • copy_file now preserves the full precision of the source's modification time
  • build_ext no longer fails when cross-compiling with a compiler other than MSVC such as MinGW
Deprecated 2
  • Passing unknown keyword arguments to Extension is now deprecated
  • Compiler.spawn is deprecated in favor of the new Compiler.call

From setuptools

Features
  • Newline-separated keywords and platforms, which are invalid and corrupt the generated metadata (pypa/setuptools#4887), are now handled forgivingly: each line is treated as a separate item and a deprecation warning is emitted. Newlines were never a valid separator for these fields -- the old specification <https://peps.python.org/pep-0345/>_ separated items with spaces and the current one uses commas. (#4887)
  • Extension is now a dataclass, exposing type annotations for its constructor arguments so subclasses (e.g. in Setuptools) can inherit them without redeclaring each parameter. Passing unknown keyword arguments is now deprecated. (pypa/distutils#373) (#5022)
  • The C compiler modules now emit log messages through their own compilers.C.* loggers instead of the distutils root logger, part of decoupling the compilers package from distutils. The logger names are normalized to a stable compilers.C.* prefix so they remain constant as the package migrates toward a standalone compilers.C distribution. (#5266)
  • The C compilers gained a Compiler.call method -- a thin wrapper over subprocess.check_call (with macOS deployment-target env injection) that is the modern replacement for Compiler.spawn. The compilers no longer depend on distutils.spawn, distutils.dir_util, distutils.file_util, distutils._modified, or distutils.util.execute/split_quoted: the generic newer/newer_group and split_quoted helpers are vendored into the compilers package, and Compiler.mkpath/move_file/execute are implemented directly on the standard library (os.makedirs/shutil.move). The methods are retained for backward compatibility. (#5267)
  • The compilers no longer depend on distutils.util, distutils.version, distutils.compat, or distutils._macos_compat. The platform-identification helpers (get_platform/get_host_platform/is_mingw) now live in distutils.compilers.platform.detect and the macOS deployment-target logic and compiler_fixup in distutils.compilers.platform.macos; CygwinCCompiler.gcc_version returns a packaging.version.Version. distutils.util re-exports the platform/macOS helpers from their new homes for backward compatibility rather than keeping duplicate copies. (sysconfig lookups still route through distutils pending its own decoupling.) (#5268)
  • The compilers now read their build configuration from the standard library's sysconfig instead of distutils.sysconfig. Per-compiler customization -- previously distutils.sysconfig.customize_compiler -- has moved into Compiler.configure_system(): a no-op on the base class, with UnixCCompiler applying the compiler/flag/archiver settings CPython recorded in sysconfig (and the usual CC/CFLAGS/LDSHARED/… environment overrides). distutils.sysconfig.customize_compiler is retained as a thin wrapper that calls compiler.configure_system(). (#5269)
Bugfixes
  • The MSVC linker now passes its arguments through a response file when the command line would exceed the Windows maximum length, fixing failures when linking a large number of objects. (#4177)
  • The Cygwin and MinGW compilers now pass -O1 instead of a bare -O. The two are equivalent to GCC, but cc1 rejected the bare form when building 32-bit extensions with -m32. -- by :user:dchaudhari7177 (#4873)
  • copy_file now preserves the full precision of the source's modification time, so a copy is no longer considered older than its source on filesystems with sub-second timestamp resolution. (pypa/distutils#379) (#5079)
  • Setuptools wheels no longer bundled the project's own test modules. -- by :user:itscloud0 (#5212)
  • build_ext no longer fails when cross-compiling with a compiler other than MSVC (such as MinGW). Compiler now provides a no-op initialize() that non-MSVC compilers inherit. (pypa/distutils#399)
Improved Documentation
  • Clarified what "correspond exactly to the directory structure" means in the packages section of the Package Discovery user guide. (#4109)
  • Documented how bdist_wheel's py_limited_api option controls abi3 wheel tagging for extension modules -- by :user:Himanshuagrawal4 (#4741)
Deprecations and Removals
  • Compiler.spawn is deprecated in favor of the new Compiler.call. call raises native subprocess exceptions; spawn remains as a shim that emits a DeprecationWarning and translates them to DistutilsExecError. The MSVC spawn compatibility shim for third-party monkeypatches predating the env argument (numpy.distutils before 1.19, per pypa/distutils#15) has been removed. distutils.spawn.spawn is likewise reduced to a thin wrapper around subprocess.check_call: it no longer resolves cmd[0] via shutil.which (subprocess searches PATH itself) nor injects MACOSX_DEPLOYMENT_TARGET (that now lives with the compilers, the only callers to which it applied). (#5267)
  • Building an extension with a MACOSX_DEPLOYMENT_TARGET lower than the interpreter's configured value now raises compilers.errors.PlatformError instead of distutils.errors.DistutilsPlatformError (the macOS deployment-target check moved into the compilers package). CygwinCCompiler.gcc_version returns a packaging.version.Version rather than the removed distutils.version.LooseVersion. Completing the transition begun in pypa/distutils#246, UnixCCompiler.runtime_library_dir_option now returns the ["-Wl,--enable-new-dtags", "-Wl,-rpath,<dir>"] list directly for GNU ld rather than collapsing it into a single string, and the temporary distutils.compat.consolidate_linker_args shim has been removed. (#5268)
  • The compilers now define their own exception vocabulary instead of borrowing distutils' framework errors. Language-agnostic exceptions (Error, UnknownFileType, and a new PlatformError) live at distutils.compilers.errors, leaving room for future compilers.<language> siblings; the C/C++-specific CompileError/LinkError/LibError/PreprocessError remain in distutils.compilers.C.errors. The compilers now raise compilers.errors.PlatformError where they previously raised distutils.errors.DistutilsPlatformError/DistutilsModuleError, and compilers._modified.newer raises the stdlib FileNotFoundError. distutils.errors keeps its own framework exceptions and re-exports the compiler ones (CCompilerError, CompileError, etc.) for backward compatibility; because CCompilerError is compilers.errors.Error, code catching it (as distutils' top-level handlers do) still catches the new PlatformError. (#5270)
  • customize_compiler now asserts that the compiler-related config variables (CC, CXX, CFLAGS, etc.) resolve to strings, raising AssertionError if any are unexpectedly None rather than failing later with a less clear error. (pypa/distutils#363)
View originalPermalink
How v84.0.0 went

v83.0.0

Changed 1
  • Require Python 3.10 or later
Fixed 1
  • MANIFEST.in matching via FileList is now insensitive to Unicode normalization form so patterns match files regardless of whether they are stored in NFC or NFD form
Removed 1
  • Removed dry_run support

From setuptools

Features
  • Require Python 3.10 or later.
Bugfixes
  • MANIFEST.in matching (via FileList) is now insensitive to Unicode normalization form. A pattern authored in one form (e.g. NFC, as typically saved by editors) now matches a file whose name is stored on disk in another (e.g. NFD, as produced by macOS APFS/HFS+). Previously an exclude, global-exclude, recursive-exclude, or prune rule could silently fail to drop a non-ASCII-named file from the source distribution, publishing it despite the exclusion -- see GHSA-h35f-9h28-mq5c.
Deprecations and Removals
  • Synced with pypa/distutils@d7633fbed including removal of dry_run support (pypa/distutils#334).
View originalPermalink
How v83.0.0 went

v82.0.1

Changed 1
  • Add advice about how to improve predictability when installing sdists
Fixed 2
  • Fix the loading of launcher manifest.xml file
  • Replaced deprecated json.__version__ with fixture in tests

From setuptools

Bugfixes
  • Fix the loading of launcher manifest.xml file. (#5047)
  • Replaced deprecated json.__version__ with fixture in tests. (#5186)
Improved Documentation
  • Add advice about how to improve predictability when installing sdists. (#5168)
Misc
  • #4941, #5157, #5169, #5175
View originalPermalink
How v82.0.1 went

v82.0.0

Removed 1
  • pkg_resources has been removed from Setuptools

From setuptools

Deprecations and Removals
  • pkg_resources has been removed from Setuptools. Most common uses of pkg_resources have been superseded by the importlib.resources <https://docs.python.org/3/library/importlib.resources.html>_ and importlib.metadata <https://docs.python.org/3/library/importlib.metadata.html>_ projects. Projects and environments relying on pkg_resources for namespace packages or other behavior should depend on older versions of setuptools. (#3085)
View originalPermalink
How v82.0.0 went

v75.3.4

Fixed 1
  • Reverted distutils changes that broke the monkey patching of command classes
Security 1
  • Backport CVE-47273 from 78.1.1 for Python 3.8

From setuptools

Bugfixes
  • Backport CVE-47273 from 78.1.1 for Python 3.8. (#4946)
  • Reverted distutils changes that broke the monkey patching of command classes. (#4902)
View originalPermalink
How v75.3.4 went

v81.0.0

Removed 1
  • Removed support for the --dry-run parameter to setup.py

From setuptools

Deprecations and Removals
  • Removed support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (#4872)
View originalPermalink
How v81.0.0 went

v80.10.2

Fixed 1
  • Update vendored dependencies

From setuptools

Bugfixes
  • Update vendored dependencies. (#5159)
Misc
  • #5115, #5128
View originalPermalink
How v80.10.2 went

v75.3.3

Security 1
  • Backported security fix for package index to 75.3.x for Python 3.8

From setuptools

Bugfixes
  • Backported security fix for package index to 75.3.x for Python 3.8. (#5009)
View originalPermalink
How v75.3.3 went

v80.9.0

Added 1
  • Set a deadline for the removal of pkg_resources later this year (December)
Changed 1
  • Removed reliance on pkg_resources in test_wheel

From setuptools

Features
  • Set a deadline for the removal of pkg_resources later this year (December). (#3085)
  • Removed reliance on pkg_resources in test_wheel. (#3085)
View originalPermalink
How v80.9.0 went

v80.8.0

Added 1
  • Restore explicit LICENSE file
Changed 1
  • Replaced more references to pkg_resources with importlib equivalents in wheel module
Removed 1
  • Removed no longer used build dependency on coherent.licensed

From setuptools

Features
  • Replaced more references to pkg_resources with importlib equivalents in wheel odule. (#3085)
  • Restore explicit LICENSE file. (#5001)
  • Removed no longer used build dependency on coherent.licensed. (#5003)
View originalPermalink
How v80.8.0 went
View all

Discussion

If you publish setuptools, you can claim this product by proving you administer its repository.