Skip to content

Use dataclass to add type annotations to Extension so that it can easily be extended in setuptools. - #373

Merged
jaraco merged 16 commits into
pypa:mainfrom
abravalheri:type-extension
Jul 11, 2026
Merged

Use dataclass to add type annotations to Extension so that it can easily be extended in setuptools.#373
jaraco merged 16 commits into
pypa:mainfrom
abravalheri:type-extension

Conversation

@abravalheri

@abravalheri abravalheri commented Jul 11, 2025

Copy link
Copy Markdown
Contributor

In pypa/setuptools#5022, there is an effort to add type annotations to setuptools.extension.Extension.

However, right now it basically requires repeating all the __init__ arguments that are already specified in distutils.extension.Extension and all the type annotations.
If any argument changes (added/removed/changed type annotation), that needs to be repeated in setuptools.

There is a discussion in https://github.com/pypa/setuptools/pull/5022/files#r2124429494 about how would it be possible to avoid this duplication and need for manual synchronisation.

This PR is an attempt to use dataclass for that.

I have experimented with other approaches (like attempting to use a TypedDict), but in the end of the day, this approach is what seems to me the most promising.

If I am not mistaken, this should allow backward compatibility. Type checkers are likely to start catching unknown keyword arguments, but I think that is a good thing.

On a related not, I did modify the warning to mention using unknown keywords is deprecated, the reasoning is that removing this lenient behaviour simplifies a lot of stuff and we can use dataclasses by the book.

The docstrings for the properties were basically moved from the existing class docstring.

@abravalheri

abravalheri commented Jul 11, 2025

Copy link
Copy Markdown
Contributor Author

There seems to be an unrelated error in [mypy] distutils/compilers/C/base.py, possibly caused by recent versions of dependencies being released: see https://github.com/pypa/distutils/pull/374/files.

I have rebased this PR on top of #374, so that we can see if the main log fails on not in the majority of the CI workers. Now the same unrelated errors as in #374 (comment) can be found.

Comment thread distutils/compilers/C/base.py Outdated
# function) -- authors of new compiler interface classes are
# responsible for updating 'compiler_class'!
compiler_type: ClassVar[str] = None # type: ignore[assignment]
compiler_type: ClassVar[str] = None

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See #374

@abravalheri
abravalheri marked this pull request as ready for review July 11, 2025 15:52
Comment thread distutils/extension.py Outdated
Comment thread distutils/extension.py Outdated
Comment thread distutils/extension.py Outdated
def __repr__(self):
return f'<{self.__class__.__module__}.{self.__class__.__qualname__}({self.name!r}) at {id(self):#x}>'

# Legal keyword arguments for the Extension constructor

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The phrase "Legal keyword arguments for the Extension constructor" was copied from core.py (not sure if "legal" is the best term to use).

Comment thread distutils/_dataclass.py Outdated
@abravalheri

Copy link
Copy Markdown
Contributor Author

I think that we could use the new dataclass_transform to simplify even further the implementation.

@abravalheri

Copy link
Copy Markdown
Contributor Author

CI errors seem to indicate formatting changes (possibly related to new versions of linters available).

@Avasam

Avasam commented Jan 28, 2026

Copy link
Copy Markdown
Contributor

I think that we could use the new dataclass_transform to simplify even further the implementation.

Neat.

Overall I like how it also brings the doc closer to its declarations (and deduplicates type definitions).

Most of the added functional code is compat code that would later be removed.

CI errors seem to indicate formatting changes (possibly related to new versions of linters available).

There's a pile of different CI issues at the moment, I think we're gonna need them merged with careful review knowing the CI will stay red until all fixed:

# Simple example
"""
from distutils.extension import Extension

@Avasam Avasam Jan 29, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why not just... have this code be directly in a file that mypy runs on ? You can use assert_type instead of reveal_type.
For example: https://github.com/python/typeshed/blob/main/stubs/setuptools/%40tests/test_cases/check_setup.py

You can even test for errors, as long as "no-unecessary type ignore" is enabled:
https://github.com/python/typeshed/blob/main/stubs/setuptools/%40tests/test_cases/check_protocols.py

@abravalheri abravalheri Jan 29, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly because I don't like the idea of manually writing the full signature of Extension.__init__ by hand, so that it can be added to the other side of the assertion/comparison :P

This way I can be lazy and just add some meaningful fragments.

And it does not matter much if mypy fails the typecheck due to other files in the project not being fully typed (right now I need to avoid the existing mypy.ini, otherwise reveal_type does not show anything)...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah I glanced over the test too quickly and didn't see it was a dict, not a giant multiline string. Fair enough

@abravalheri

abravalheri commented Jan 29, 2026

Copy link
Copy Markdown
Contributor Author

I have also added test_inference_sanity_check to ensure the overall effect of adopting this approach results on the expected type inference.

jaraco and others added 5 commits July 10, 2026 14:53
# Conflicts:
#	distutils/compilers/C/base.py
#	distutils/extension.py
Main tightened ruff and mypy enforcement since this branch diverged:

- _dataclass.py: add strict= to zip() (ruff B905) and suppress the
  var-annotated error on the reassigned cls parameter (mypy).
- compat/py310.py: import Callable from collections.abc (ruff UP035).
- test_extension.py: normalize the `builtins.` prefix in reveal_type
  output so the inference check is robust across mypy versions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@pytest.mark.filterwarnings("ignore::EncodingWarning") # mypy.api.run
@pytest.mark.parametrize("example,expectations", TYPE_INFERENCE.items())
def test_inference_sanity_check(

@Avasam Avasam Jul 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should be skipped on pypy and cygwin/mingw. Or more generally, "should be skipped if mypy is not installed", which is already how the static types checkers tests work naturally with pytest plugin

jaraco and others added 2 commits July 10, 2026 16:54
On platforms without mypy (e.g. PyPy, cygwin/mingw), importing mypy
raised ModuleNotFoundError and failed the test; use
pytest.importorskip so it skips instead, matching how the
pytest-mypy static type checker tests behave.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On some platforms (e.g. Windows CI) mypy emits ANSI color escapes in
its report, which are injected between "note:" and "Revealed type is"
and broke the substring match. Pass --no-color-output so the report is
plain text everywhere.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@jaraco
jaraco merged commit ebfb2eb into pypa:main Jul 11, 2026
22 checks passed
@abravalheri
abravalheri deleted the type-extension branch July 11, 2026 05:11
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 9, 2026
https://setuptools.pypa.io/en/latest/history.html

v84.0.0
=======

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 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 @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)

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 @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
    dep loyment-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)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 9, 2026
https://setuptools.pypa.io/en/latest/history.html

v84.0.0
=======

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 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 @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)

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 @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
    dep loyment-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)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 9, 2026
https://setuptools.pypa.io/en/latest/history.html

v84.0.0
=======

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 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 @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)

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 @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
    dep loyment-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)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 10, 2026
https://setuptools.pypa.io/en/latest/history.html

v84.0.0
=======

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 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 @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)

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 @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
    dep loyment-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)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
halstead pushed a commit to openembedded/openembedded-core that referenced this pull request Aug 10, 2026
https://setuptools.pypa.io/en/latest/history.html

v84.0.0
=======

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 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 @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)

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 @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
    dep loyment-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)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Aug 11, 2026
v84.0.0
=======

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)
github-actions Bot pushed a commit to aio-libs/aiojobs that referenced this pull request Aug 11, 2026
Updates the requirements on
[setuptools](https://github.com/pypa/setuptools) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
<h1>v83.0.0</h1>
<h2>Features</h2>
<ul>
<li>Require Python 3.10 or later.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Navesz pushed a commit to Navesz/openkartline that referenced this pull request Aug 12, 2026
…in the python-development group (#36)

Updates the requirements on
[setuptools](https://github.com/pypa/setuptools) to permit the latest
version.
Updates `setuptools` to 84.0.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
<h1>v83.0.0</h1>
<h2>Features</h2>
<ul>
<li>Require Python 3.10 or later.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v77.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
neu-ro-github-bot Bot pushed a commit to neuro-inc/apolo-cli that referenced this pull request Aug 12, 2026
)

Updates the requirements on
[setuptools](https://github.com/pypa/setuptools) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
<h1>v83.0.0</h1>
<h2>Features</h2>
<ul>
<li>Require Python 3.10 or later.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to neuro-inc/platform-reports that referenced this pull request Aug 12, 2026
Bumps [setuptools](https://github.com/pypa/setuptools) from 83.0.0 to
84.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=setuptools&package-manager=pip&previous-version=83.0.0&new-version=84.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to aio-libs/aiosignal that referenced this pull request Aug 12, 2026
…0.0 (#872)

Updates the requirements on
[setuptools](https://github.com/pypa/setuptools) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
<h1>v83.0.0</h1>
<h2>Features</h2>
<ul>
<li>Require Python 3.10 or later.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to aio-libs/aiohttp that referenced this pull request Aug 12, 2026
Bumps [setuptools](https://github.com/pypa/setuptools) from 83.0.0 to
84.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=setuptools&package-manager=pip&previous-version=83.0.0&new-version=84.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
github-actions Bot pushed a commit to aio-libs/aiohttp that referenced this pull request Aug 12, 2026
Bumps [setuptools](https://github.com/pypa/setuptools) from 83.0.0 to
84.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=setuptools&package-manager=pip&previous-version=83.0.0&new-version=84.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ftCLI added a commit to ftCLI/FoundryTools-CLI that referenced this pull request Aug 12, 2026
Updates the requirements on
[setuptools](https://github.com/pypa/setuptools) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
<h1>v83.0.0</h1>
<h2>Features</h2>
<ul>
<li>Require Python 3.10 or later.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>
fedonman added a commit to qilimanjaro-tech/qilisdk that referenced this pull request Aug 12, 2026
Bumps [setuptools](https://github.com/pypa/setuptools) from 83.0.0 to
84.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v83.0.0...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=setuptools&package-manager=uv&previous-version=83.0.0&new-version=84.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vyron Vasileiadis <hi@fedonman.com>
joshuawendorf21310 pushed a commit to FusionEMS-Quantum-LLC/Adaptix-Contracts that referenced this pull request Aug 13, 2026
…0.0 (#164)

Updates the requirements on
[setuptools](https://github.com/pypa/setuptools) to permit the latest
version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's
changelog</a>.</em></p>
<blockquote>
<h1>v84.0.0</h1>
<h2>Features</h2>
<ul>
<li>Newline-separated <code>keywords</code> and
<code>platforms</code><code>pypa/setuptools#4887</code><code>old
specification &lt;https://peps.python.org/pep-0345/&gt;</code>_
separated items with spaces and the current one uses commas. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4887">#4887</a>)</li>
<li><code>Extension</code><code>pypa/distutils#373</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5022">#5022</a>)</li>
<li>The C compiler modules now emit log messages through their own
<code>compilers.C.*</code> loggers instead of the distutils root logger,
part of decoupling the compilers package from distutils. The logger
names are normalized to a stable <code>compilers.C.*</code> prefix so
they remain constant as the package migrates toward a standalone
<code>compilers.C</code> distribution. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5266">#5266</a>)</li>
<li>The C compilers gained a <code>Compiler.call</code> method -- a thin
wrapper over <code>subprocess.check_call</code> (with macOS
deployment-target env injection) that is the modern replacement for
<code>Compiler.spawn</code>. The compilers no longer depend on
<code>distutils.spawn</code>, <code>distutils.dir_util</code>,
<code>distutils.file_util</code>, <code>distutils._modified</code>, or
<code>distutils.util.execute</code>/<code>split_quoted</code>: the
generic <code>newer</code>/<code>newer_group</code> and
<code>split_quoted</code> helpers are vendored into the
<code>compilers</code> package, and
<code>Compiler.mkpath</code>/<code>move_file</code>/<code>execute</code>
are implemented directly on the standard library
(<code>os.makedirs</code>/<code>shutil.move</code>). The methods are
retained for backward compatibility. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>The compilers no longer depend on <code>distutils.util</code>,
<code>distutils.version</code>, <code>distutils.compat</code>, or
<code>distutils._macos_compat</code>. The platform-identification
helpers
(<code>get_platform</code>/<code>get_host_platform</code>/<code>is_mingw</code>)
now live in <code>distutils.compilers.platform.detect</code> and the
macOS deployment-target logic and <code>compiler_fixup</code> in
<code>distutils.compilers.platform.macos</code>;
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code>. <code>distutils.util</code>
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.) (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now read their build configuration from the standard
library's <code>sysconfig</code> instead of
<code>distutils.sysconfig</code>. Per-compiler customization --
previously <code>distutils.sysconfig.customize_compiler</code> -- has
moved into <code>Compiler.configure_system()</code>: a no-op on the base
class, with <code>UnixCCompiler</code> applying the
compiler/flag/archiver settings CPython recorded in
<code>sysconfig</code> (and the usual
<code>CC</code>/<code>CFLAGS</code>/<code>LDSHARED</code>/… environment
overrides). <code>distutils.sysconfig.customize_compiler</code> is
retained as a thin wrapper that calls
<code>compiler.configure_system()</code>. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5269">#5269</a>)</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>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. (<a
href="https://redirect.github.com/pypa/setuptools/issues/4177">#4177</a>)</li>
<li>The Cygwin and MinGW compilers now pass <code>-O1</code> instead of
a bare <code>-O</code>. The two are equivalent to GCC, but
<code>cc1</code> rejected the bare form when building 32-bit extensions
with <code>-m32</code>. -- by :user:<code>dchaudhari7177</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4873">#4873</a>)</li>
<li><code>copy_file</code><code>pypa/distutils#379</code><a
href="https://redirect.github.com/pypa/setuptools/issues/5079">#5079</a>)</li>
<li>Setuptools wheels no longer bundled the project's own test modules.
-- by :user:<code>itscloud0</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/5212">#5212</a>)</li>
<li><code>build_ext</code> no longer fails when cross-compiling with a
compiler other than MSVC (such as MinGW). <code>Compiler</code> now
provides a no-op
<code>initialize()</code><code>pypa/distutils#399</code></li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Clarified what &quot;correspond exactly to the directory
structure&quot; means in
the <code>packages</code> section of the Package Discovery user guide.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/4109">#4109</a>)</li>
<li>Documented how <code>bdist_wheel</code>'s
<code>py_limited_api</code> option controls
<code>abi3</code> wheel tagging for extension modules -- by
:user:<code>Himanshuagrawal4</code> (<a
href="https://redirect.github.com/pypa/setuptools/issues/4741">#4741</a>)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li><code>Compiler.spawn</code> is deprecated in favor of the new
<code>Compiler.call</code>. <code>call</code> raises native
<code>subprocess</code> exceptions; <code>spawn</code> remains as a shim
that emits a <code>DeprecationWarning</code> and translates them to
<code>DistutilsExecError</code>. The MSVC <code>spawn</code>
compatibility shim for third-party monkeypatches predating the
<code>env</code> argument (numpy.distutils before 1.19, per <a
href="https://redirect.github.com/pypa/distutils/issues/15">pypa/distutils#15</a>)
has been removed. <code>distutils.spawn.spawn</code> is likewise reduced
to a thin wrapper around <code>subprocess.check_call</code>: it no
longer resolves <code>cmd[0]</code> via <code>shutil.which</code>
(<code>subprocess</code> searches <code>PATH</code> itself) nor injects
<code>MACOSX_DEPLOYMENT_TARGET</code> (that now lives with the
compilers, the only callers to which it applied). (<a
href="https://redirect.github.com/pypa/setuptools/issues/5267">#5267</a>)</li>
<li>Building an extension with a <code>MACOSX_DEPLOYMENT_TARGET</code>
lower than the interpreter's configured value now raises
<code>compilers.errors.PlatformError</code> instead of
<code>distutils.errors.DistutilsPlatformError</code> (the macOS
deployment-target check moved into the compilers package).
<code>CygwinCCompiler.gcc_version</code> returns a
<code>packaging.version.Version</code> rather than the removed
<code>distutils.version.LooseVersion</code>. Completing the transition
begun in <a
href="https://redirect.github.com/pypa/distutils/issues/246">pypa/distutils#246</a>,
<code>UnixCCompiler.runtime_library_dir_option</code> now returns the
<code>[&quot;-Wl,--enable-new-dtags&quot;,
&quot;-Wl,-rpath,&lt;dir&gt;&quot;]</code> list directly for GNU ld
rather than collapsing it into a single string, and the temporary
<code>distutils.compat.consolidate_linker_args</code> shim has been
removed. (<a
href="https://redirect.github.com/pypa/setuptools/issues/5268">#5268</a>)</li>
<li>The compilers now define their own exception vocabulary instead of
borrowing distutils' framework errors. Language-agnostic exceptions
(<code>Error</code>, <code>UnknownFileType</code>, and a new
<code>PlatformError</code>) live at
<code>distutils.compilers.errors</code>, leaving room for future
<code>compilers.&lt;language&gt;</code> siblings; the C/C++-specific
<code>CompileError</code>/<code>LinkError</code>/<code>LibError</code>/<code>PreprocessError</code>
remain in <code>distutils.compilers.C.errors</code>. The compilers now
raise <code>compilers.errors.PlatformError</code> where they previously
raised
<code>distutils.errors.DistutilsPlatformError</code>/<code>DistutilsModuleError</code>,
and <code>compilers._modified.newer</code> raises the stdlib
<code>FileNotFoundError</code>. <code>distutils.errors</code> keeps its
own framework exceptions and re-exports the compiler ones
(<code>CCompilerError</code>, <code>CompileError</code>, etc.) for
backward compatibility; because <code>CCompilerError</code> is
<code>compilers.errors.Error</code>, code catching it (as distutils'
top-level handlers do) still catches the new <code>PlatformError</code>.
(<a
href="https://redirect.github.com/pypa/setuptools/issues/5270">#5270</a>)</li>
<li><code>customize_compiler</code> now asserts that the
compiler-related config variables (<code>CC</code>, <code>CXX</code>,
<code>CFLAGS</code>, etc.) resolve to strings, raising
<code>AssertionError</code> if any are unexpectedly
<code>None</code><code>pypa/distutils#363</code></li>
</ul>
<h1>v83.0.0</h1>
<h2>Features</h2>
<ul>
<li>Require Python 3.10 or later.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/setuptools/commit/72e919a8b10aaafc041205d4e3ae0e6a2e1e5f87"><code>72e919a</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5293">#5293</a>
from pypa/bugfix/integration-pip-flit-backend</li>
<li><a
href="https://github.com/pypa/setuptools/commit/1b2970113fd6cda8d4bcac5a1ef6ff865bff62ee"><code>1b29701</code></a>
Select the top-level pyproject.toml when reading build requirements</li>
<li><a
href="https://github.com/pypa/setuptools/commit/bb1b38189eed960bdb4f4789926472d05e43d335"><code>bb1b381</code></a>
Bump version: 83.0.0 → 84.0.0</li>
<li><a
href="https://github.com/pypa/setuptools/commit/ee6fdd710e9f466ea06777b4eca32083fdfc9376"><code>ee6fdd7</code></a>
Sync with distutils @ e8eb87855 (<a
href="https://redirect.github.com/pypa/setuptools/issues/5292">#5292</a>)</li>
<li><a
href="https://github.com/pypa/setuptools/commit/2a4a9e4e377ea11a418aa53b9a3cf567fd69df16"><code>2a4a9e4</code></a>
Merge remote-tracking branch 'origin/main' into distutils-e8eb87855</li>
<li><a
href="https://github.com/pypa/setuptools/commit/cbd1195692917f432ddc2b56babbf2e536f4fd68"><code>cbd1195</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/pypa/setuptools/commit/bd3594ebfe6c18e161bbc90ef2a91d19881464b1"><code>bd3594e</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/setuptools/issues/5287">#5287</a>
from Avasam/Configuring-lint.flake8-comprehensions.a...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/f02e90a821fee92ff5ee2bf0d681b70cf24ebbb0"><code>f02e90a</code></a>
Configure C408 to allow dict(a=1) rather than disabling it</li>
<li><a
href="https://github.com/pypa/setuptools/commit/c55f52bdb7f952f9ccbd824100c7830dbed5546f"><code>c55f52b</code></a>
Configuring
lint.flake8-comprehensions.allow-dict-calls-with-keyword-argument...</li>
<li><a
href="https://github.com/pypa/setuptools/commit/e9904b0c7e5e249b535832b88efa847ee097de3a"><code>e9904b0</code></a>
Match the distutils sdist base type for the user_options override</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/setuptools/compare/v82.0.1...v84.0.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants