NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #10 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
…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 specif…
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 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)
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 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 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)
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 Himanshuagrawal4 (#4741)
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)
One column per quarter.
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
Require Python 3.10 or later.
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.
Synced with pypa/distutils@d7633fbed including removal of dry_run support (pypa/distutils#334).
Replaced deprecated json.__version__ with fixture in tests.
Fix the loading of launcher manifest.xml file. (#5047)
Replaced deprecated json.__version__ with fixture in tests. (#5186)
Add advice about how to improve predictability when installing sdists. (#5168)
#4941, #5157, #5169, #5175
pkg_resources has been removed from Setuptools. Most common uses of pkg_resources have been superseded by the importlib.resources _ and importlib.meta
pkg_resources has been removed from Setuptools. Most common uses of pkg_resources have been superseded by the importlib.resources and importlib.metadata projects. Projects and environments relying on pkg_resources for namespace packages or other behavior should depend on older versions of setuptools. (#3085)
Removed support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, addi
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)
Bugfixes -------- - Update vendored dependencies. (#5159) Misc ---- - #5115, #5128
Update vendored dependencies. (#5159)
#5115, #5128
25 Jan 2026
Update vendored dependencies. ( #5159 )
#5115 , #5128
Misc ---- - #5152
Set a deadline for the removal of pkg_resources later this year (December).
Set a deadline for the removal of pkg_resources later this year (December). (#3085)
Removed reliance on pkg_resources in test_wheel. (#3085)
26 May 2025
Set a deadline for the removal of pkg_resources later this year (December). ( #3085 )
Removed reliance on pkg_resources in test_wheel. ( #3085 )
Replaced more references to pkg_resources with importlib equivalents in wheel odule.
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)
Only attempt to fetch eggs for unsatisfied requirements.
Only attempt to fetch eggs for unsatisfied requirements. (#4998)
In installer, when discovering egg dists, let metadata discovery search each egg. (#4998)
14 May 2025
Only attempt to fetch eggs for unsatisfied requirements. ( #4998 )
In installer, when discovering egg dists, let metadata discovery search each egg. ( #4998 )
Removed usage of pkg_resources from installer. Set an official deadline on the installer deprecation to 2025-10-31.
Removed usage of pkg_resources from installer. Set an official deadline on the installer deprecation to 2025-10-31. (#4997)
#4996
14 May 2025
Removed usage of pkg_resources from installer. Set an official deadline on the installer deprecation to 2025-10-31. ( #4997 )
#4996
Added a build dependency on coherent.licensed to inject the declared license text at build time.
Added a build dependency on coherent.licensed to inject the declared license text at build time. (#4981)
#4995
14 May 2025
Added a build dependency on coherent.licensed to inject the declared license text at build time. ( #4981 )
#4995
Simplified the error reporting in editable installs.
Simplified the error reporting in editable installs. (#4984)
09 May 2025
Simplified the error reporting in editable installs. ( #4984 )
Restored select attributes in easy_install for temporary pbr compatibility.
Restored select attributes in easy_install for temporary pbr compatibility. (#4976)
04 May 2025
Restored select attributes in easy_install for temporary pbr compatibility. ( #4976 )
Removed easy_install and package_index modules.
Removed easy_install and package_index modules. (#917)
Restored license declaration in package metadata. See jaraco/skeleton#171. (#4956)
03 May 2025
Removed easy_install and package_index modules. ( #917 )
Restored license declaration in package metadata. See jaraco/skeleton#171. ( #4956 )
Restored support for install_scripts --executable (and classic behavior for the executable for those invocations). Instead, build_editable provides th
Restored support for install_scripts --executable (and classic behavior for the executable for those invocations). Instead, build_editable provides the portable form of the executables for downstream installers to rewrite. (#4934)
Added a deadline of Oct 31 to the setup.py install deprecation.
Added a deadline of Oct 31 to the setup.py install deprecation.
With setup.py install --prefix=..., fall back to distutils install rather than failing. Note that running setup.py install is deprecated. (#3143)
Fixed index_url logic in develop compatibility shim.
Fixed index_url logic in develop compatibility shim. (#4966)
29 Apr 2025
Fixed index_url logic in develop compatibility shim. ( #4966 )
Update test to honor new behavior in importlib_metadata 8.7.
Update test to honor new behavior in importlib_metadata 8.7. (#4961)
Removed support for the easy_install command including the sandbox module. (#2908)
Develop command no longer uses easy_install, but instead defers execution to pip (which then will re-invoke Setuptools via PEP 517 to build the editable wheel). Most of the options to develop are dropped. This is the final warning before the command is dropped completely in a few months. Use-cases relying on 'setup.py develop' should pin to older Setuptools version or migrate to modern build tooling. (#4955)
Merge with pypa/distutils@24bd3179b including fix for pypa/distutils#355.
Merge with pypa/distutils@24bd3179b including fix for pypa/distutils#355.
23 Apr 2025
Merge with pypa/distutils@24bd3179b including fix for pypa/distutils#355 .
Removed support for 'legacy-editable' installs.
Removed support for 'legacy-editable' installs. (#917)
20 Apr 2025
Removed support for ‘legacy-editable’ installs. ( #917 )
More fully sanitized the filename in PackageIndex._download.
More fully sanitized the filename in PackageIndex._download. (#4946)
19 Apr 2025
More fully sanitized the filename in PackageIndex._download. ( #4946 )
Restore access to _get_vc_env with a warning.
Restore access to _get_vc_env with a warning. (#4874)
25 Mar 2025
Restore access to _get_vc_env with a warning. ( #4874 )
Postponed removals of deprecated dash-separated and uppercase fields in setup.cfg. All packages with deprecated configurations are advised to move bef…
Postponed removals of deprecated dash-separated and uppercase fields in setup.cfg. All packages with deprecated configurations are advised to move before 2026. (#4911)
24 Mar 2025
Postponed removals of deprecated dash-separated and uppercase fields in setup.cfg . All packages with deprecated configurations are advised to move before 2026. ( #4911 )
Misc ---- - #4909
Temporarily convert error for license glob patterns containing ../ into a deprecation warning to allow an accomodation period.
Temporarily convert error for license glob patterns containing ../ into a deprecation warning to allow an accomodation period. (#4896)
Better error messages for packaging.licenses import errors in environments with packaging<24.2. The import statement was also deferred to spare users that are not using license expressions. (#4898)
Avoided eagerly raising an exception when license-files is defined simultaneously inside and outside of pyproject.toml. Instead we rely on the existing deprecation error. (#4899)
Manually fix news fragment entries causing CI to crash when building docs.
Manually fix news fragment entries causing CI to crash when building docs. (#4891)
19 Mar 2025
Manually fix news fragment entries causing CI to crash when building docs. ( #4891 )
In setuptools.msvc.EnvironmentInfo, now honor the correct paths when on an ARM host.
In setuptools.msvc.EnvironmentInfo, now honor the correct paths when on an ARM host. (#4786)
Restored implicit distutils.ccompiler import for g-ir-scanner. (#4871)
Restore distutils.ccompiler.compiler_class -- by Avasam (#4876)
17 Mar 2025
In setuptools.msvc.EnvironmentInfo, now honor the correct paths when on an ARM host. ( #4786 )
Restored implicit distutils.ccompiler import for g-ir-scanner. ( #4871 )
Restore distutils.ccompiler.compiler_class – by @Avasam ( #4876 )
Synced with pypa/distutils@5589d7527 including a simplified shebang generation when building scripts (#4863).
Synced with pypa/distutils@5589d7527 including a simplified shebang generation when building scripts (#4863). (#4865)
09 Mar 2025
Synced with pypa/distutils@5589d7527 including a simplified shebang generation when building scripts ( #4863 ). ( #4865 )
Fix ImportError in distutils when configuring for linking.
Fix ImportError in distutils when configuring for linking. (#4866)
08 Mar 2025
Fix ImportError in distutils when configuring for linking. ( #4866 )
Synced with pypa/distutils@91f75bb98 including exporting of PyInit_pkg (pypa/distutils#327) and a refactoring of the compiler classes into distutils.c
Synced with pypa/distutils@91f75bb98 including exporting of PyInit_pkg (pypa/distutils#327) and a refactoring of the compiler classes into distutils.compilers (pypa/distutils#295). (#4852)
08 Mar 2025
Synced with pypa/distutils@91f75bb98 including exporting of PyInit_pkg ( pypa/distutils#327 ) and a refactoring of the compiler classes into distutils.compilers ( pypa/distutils#295 ). ( #4852 )
Fixed pkg_resources.require(...) to also consider standardised dist-info directories.
Fixed pkg_resources.require(...) to also consider standardised dist-info directories. (#4856)
26 Feb 2025
Fixed pkg_resources.require(...) to also consider standardised dist-info directories. ( #4856 )
Fix wheel file naming to follow binary distribution specification -- by di
Fix wheel file naming to follow binary distribution specification -- by di (#4766)
Fixed crash generating error message printed when building wheels for the free-threaded build using the limited API. -- by ngoldbaum (#4809)
Fix documentation for recent CFLAGS distutils change. -- by thesamesam (#4836)
25 Feb 2025
Fix wheel file naming to follow binary distribution specification – by @di ( #4766 )
Fixed crash generating error message printed when building wheels for the free-threaded build using the limited API. – by @ngoldbaum ( #4809 )
Fix documentation for recent CFLAGS distutils change. – by @thesamesam ( #4836 )
Implemented Dynamic field for core metadata (as introduced in PEP 643). The existing implementation is currently experimental and the exact approach m
Implemented Dynamic field for core metadata (as introduced in PEP 643). The existing implementation is currently experimental and the exact approach may change in future releases. (#4698)
08 Jan 2025
Implemented Dynamic field for core metadata (as introduced in PEP 643 ). The existing implementation is currently experimental and the exact approach may change in future releases. ( #4698 )
Synced with pypa/distutils@c97a3db2f including better support for free threaded Python on Windows (pypa/distutils#310), improved typing support, and l
Synced with pypa/distutils@c97a3db2f including better support for free threaded Python on Windows (pypa/distutils#310), improved typing support, and linter accommodations. (#4478)
Synced with pypa/distutils@ff11eed0c including bugfix for duplicate CFLAGS and adaption to support Python 3.13 is_abs in the C compiler (#4669). (#4790)
Preserve original PKG-INFO into METADATA when creating wheel (instead of calling wheel.metadata.pkginfo_to_metadata). This helps to be more compliant
Preserve original PKG-INFO into METADATA when creating wheel (instead of calling wheel.metadata.pkginfo_to_metadata). This helps to be more compliant with the flow specified in PEP 517. (#4701)
Changed the WindowsSdkVersion, FrameworkVersion32 and FrameworkVersion64 properties of setuptools.msvc.PlatformInfo to return an empty tuple instead of None as a fallthrough case -- by Avasam (#4754)
Removed support for SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION, as it is deemed prone to errors.
Removed support for SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION, as it is deemed prone to errors. (#4746)
13 Nov 2024
Removed support for SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION , as it is deemed prone to errors. ( #4746 )
Added support for the environment variable SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION=true, allowing users to bypass the validation of pyproject
Added support for the environment variable SETUPTOOLS_DANGEROUSLY_SKIP_PYPROJECT_VALIDATION=true, allowing users to bypass the validation of pyproject.toml. This option should be used only as a last resort when resolving dependency issues, as it may lead to improper functioning. Users who enable this setting are responsible for ensuring that pyproject.toml complies with setuptools requirements. (#4611)
Attention!
This environment variable was removed in a later version of setuptools.
Require Python 3.9 or later. (#4718)
Remove dependency on importlib_resources and the vendored copy of the library. Instead, setuptools consistently rely on stdlib's importlib.resources (available on Python 3.9+). (#4718)
Setuptools' bdist_wheel implementation no longer produces wheels with the m SOABI flag (pymalloc-related). This flag was removed on Python 3.8+ (see sys.abiflags). (#4718)
Updated vendored packaging version to 24.2. (#4740)
Merge with pypa/distutils@251797602, including fix for dirutil.mkpath handling in pypa/distutils#304.
Merge pull request #5171 from cclauss/ruff-v0.15.0
Merge pull request #5171 from cclauss/ruff-v0.15.0
Upgrade from ruff v0.12.0 to v0.15.0
Backport CVE-47273 from 78.1.1 for Python 3.8. (#4946)
Reverted distutils changes that broke the monkey patching of command classes. (#4902)
08 Feb 2026
Backport CVE-47273 from 78.1.1 for Python 3.8. ( #4946 )
Reverted distutils changes that broke the monkey patching of command classes. ( #4902 )
Backported security fix for package index to 75.3.x for Python 3.8.
Backported security fix for package index to 75.3.x for Python 3.8. (#5009)
14 Jan 2026
Backported security fix for package index to 75.3.x for Python 3.8. ( #5009 )
Fixed version error in changelog.
Fixed version error in changelog.
Fix wheel file naming to follow binary distribution specification -- by di
Fix wheel file naming to follow binary distribution specification -- by di (#4877)
11 Mar 2025
Fix wheel file naming to follow binary distribution specification – by @di ( #4877 )
Ensured methods in setuptools.modified preferably raise a consistent distutils.errors.DistutilsError type (except in the deprecated use case of SETUPT…
Allowed using dict as an ordered type in setuptools.dist.check_requirements -- by Avasam (#4575)
Ensured methods in setuptools.modified preferably raise a consistent distutils.errors.DistutilsError type (except in the deprecated use case of SETUPTOOLS_USE_DISTUTILS=stdlib) -- by Avasam (#4567)
Fix the ABI tag when building a wheel using the debug build of Python 3.13 on Windows. Previously, the ABI tag was missing the "d" flag. (#4674)
Fix clashes for optional-dependencies in pyproject.toml and extra_requires in setup.cfg/setup.py. As per PEP 621, optional-dependencies have to be honoured and dynamic behaviour is not allowed. (#4696)
#4560
Made errors when parsing Distribution data more explicit about the expected type (tuple[str, ...] | list[str]) -- by Avasam
Made errors when parsing Distribution data more explicit about the expected type (tuple[str, ...] | list[str]) -- by Avasam (#4578)
Fix a TypeError when a Distribution's old included attribute was a tuple -- by Avasam (#4578)
Add workaround for bdist_wheel --dist-info-dir errors when customisation does not inherit from setuptools. (#4684)
16 Oct 2024
Made errors when parsing Distribution data more explicit about the expected type ( tuple[str, ...] | list[str] ) – by @Avasam ( #4578 )
Fix a TypeError when a Distribution ’s old included attribute was a tuple – by @Avasam ( #4578 )
Add workaround for bdist_wheel --dist-info-dir errors when customisation does not inherit from setuptools. ( #4684 )
Deprecated bdist_wheel.universal configuration.
Deprecated bdist_wheel.universal configuration. (#4617)
Removed reference to upload_docs module in entry points. (#4650)
16 Sep 2024
Deprecated bdist_wheel.universal configuration. ( #4617 )
Removed reference to upload_docs module in entry points. ( #4650 )
Declare also the dependencies used by distutils (adds jaraco.collections).
Declare also the dependencies used by distutils (adds jaraco.collections).
Removed upload_docs command. (#2971)
Merge with pypa/distutils@7283751. Removed the register and upload commands and the config module that backs them (pypa/distutils#294). Removed the borland compiler. Replaced vendored dependencies with natural dependencies. Cygwin C compiler now gets compilers from sysconfig (pypa/distutils#296). (#4649)
Fix cross-platform compilation using distutils._msvccompiler.MSVCCompiler -- by saschanaz and Avasam
Fix cross-platform compilation using distutils._msvccompiler.MSVCCompiler -- by saschanaz and Avasam (#4648)
15 Sep 2024
Fix cross-platform compilation using distutils._msvccompiler.MSVCCompiler – by @saschanaz and @Avasam ( #4648 )
Removed degraded and deprecated test_integration (easy_install) from the test suite.
Fixed TypeError in sdist filelist processing by adding support for pathlib Paths for the build_base. (#4615)
Removed degraded and deprecated test_integration (easy_install) from the test suite. (#4632)
Fixed TypeError in msvc.EnvironmentInfo.return_env when no runtime redistributables are installed.
Fixed TypeError in msvc.EnvironmentInfo.return_env when no runtime redistributables are installed. (#1902)
03 Sep 2024
Fixed TypeError in msvc.EnvironmentInfo.return_env when no runtime redistributables are installed. ( #1902 )
Added support for defining ext-modules via pyproject.toml (EXPERIMENTAL, may change in future releases).
Added support for defining ext-modules via pyproject.toml (EXPERIMENTAL, may change in future releases). (#4568)
Merge with pypa/distutils@3dcdf8567, removing the duplicate vendored copy of packaging. (#4622)
Restored setuptools.msvc.Environmentinfo as it is used externally. (#4625)
…support (#4600, pypa/distutils#289), removal of deprecated legacy MSVC compiler modules (pypa/distutils#287), suppressing of errors when the home dire…
Changed the type of error raised by setuptools.command.easy_install.CommandSpec.from_param on unsupported argument from AttributeError to TypeError -- by Avasam (#4548)
Added detection of ARM64 variant of MSVC -- by saschanaz (#4553)
Made setuptools.package_index.Credential a typing.NamedTuple -- by Avasam (#4585)
Reraise error from setuptools.command.easy_install.auto_chmod instead of nonsensical TypeError: 'Exception' object is not subscriptable -- by Avasam (#4593)
Fully typed all collection attributes in pkg_resources -- by Avasam (#4598)
Automatically exclude .tox|.nox|.venv directories from sdist. (#4603)
Removed the monkeypatching of distutils._msvccompiler. Now all compiler logic is consolidated in distutils. (#4600)
Synced with pypa/distutils@58fe058e4, including consolidating Visual Studio 2017 support (#4600, pypa/distutils#289), removal of deprecated legacy MSVC compiler modules (pypa/distutils#287), suppressing of errors when the home directory is missing (pypa/distutils#278), removal of wininst binaries (pypa/distutils#282). (#4606)
#4592
Remove abc.ABCMeta metaclass from abstract classes. pypa/setuptools#4503 _ had an unintended consequence of causing potential TypeError: metaclass con
Remove abc.ABCMeta metaclass from abstract classes. pypa/setuptools#4503 had an unintended consequence of causing potential TypeError: metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases -- by Avasam (#4579)
Mark abstract base classes and methods with abc.ABC and abc.abstractmethod -- by Avasam
Mark abstract base classes and methods with abc.ABC and abc.abstractmethod -- by Avasam (#4503)
Changed the order of type checks in setuptools.command.easy_install.CommandSpec.from_param to support any collections.abc.Iterable of str param -- by Avasam (#4505)
Prevent an error in bdist_wheel if compression is set to a str (even if valid) after finalizing options but before running the command. -- by Avasam (#4383)
Raises an exception when py_limited_api is used in a build with Py_GIL_DISABLED. This is currently not supported (python/cpython#111506). (#4420)
Synced with pypa/distutils@30b7331 including fix for modified check on empty sources (pypa/distutils#284).
setuptools is replacing the usages of ordered_set with simple instances of dict[Hashable, None]. This is done to remove the extra dependency and it is possible because since Python 3.7, dict maintain insertion order. (#4574)
#4534, #4546, #4554, #4559, #4565
Merged with pypa/distutils@b7ee725f3 including: Support for Pathlike objects in data files and extensions (pypa/distutils#272, pypa/distutils#237), na
Merged with pypa/distutils@b7ee725f3 including: Support for Pathlike objects in data files and extensions (pypa/distutils#272, pypa/distutils#237), native support for C++ compilers (pypa/distutils#228) and removed unused get_msvcr() (pypa/distutils#274). (#4538)
Restore the tests command and deprecate access to the module.
Restore the tests command and deprecate access to the module. (#4519) (#4520)
29 Jul 2024
Restore the tests command and deprecate access to the module. ( #4519 ) ( #4520 )
The test command has been removed. Users relying on 'setup.py test' will need to migrate to another test runner or pin setuptools before this version.
The test command has been removed. Users relying on 'setup.py test' will need to migrate to another test runner or pin setuptools before this version. (#931)
Added return types to typed public functions -- by Avasam
Added return types to typed public functions -- by Avasam
Marked pkg_resources as py.typed -- by Avasam (#4409)
#4492
21 Jul 2024
Added return types to typed public functions – by @Avasam
Marked pkg_resources as py.typed – by @Avasam ( #4409 )
#4492
Removed lingering unused code around Distribution._patched_dist.
Removed lingering unused code around Distribution._patched_dist. (#4489)
19 Jul 2024
Removed lingering unused code around Distribution._patched_dist. ( #4489 )
Reset the backports module when enabling vendored packages.
Reset the backports module when enabling vendored packages. (#4476)
18 Jul 2024
Reset the backports module when enabling vendored packages. ( #4476 )
Include all vendored files in the sdist.
Include all vendored files in the sdist. (#4480)
18 Jul 2024
Include all vendored files in the sdist. ( #4480 )
Your coding agent can read these notes before it upgrades. Set up the MCP server →