Re: [LFS Trac] #5994: setuptools-84.0.0 (Python module)

LFS Trac ([email protected] via lfs-book Mailing List) <[email protected]>
Newsgroups gmane.linux.lfs.book
Message-ID <[email protected]>
#5994: setuptools-84.0.0 (Python module)
-------------------------+-----------------------
 Reporter:  Bruce Dubbs  |       Owner:  lfs-book
     Type:  enhancement  |      Status:  new
 Priority:  normal       |   Milestone:  13.1
Component:  Book         |     Version:  git
 Severity:  normal       |  Resolution:
 Keywords:               |
-------------------------+-----------------------
Comment (by Bruce Dubbs):

 v84.0.0

 Features

 - Newline-separated ``keywords`` and ``platforms``, which are invalid and
   corrupt the generated metadata, 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.

 - ``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.

 - 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.

 - 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.

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

 - 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()``.

 Improved Documentation

 - Clarified what "correspond exactly to the directory structure" means in
 the
   ``packages`` section of the Package Discovery user guide.

 - Documented how ``bdist_wheel``'s ``py_limited_api`` option controls
 ``abi3``
   wheel tagging for extension modules -- by :user:`Himanshuagrawal4`


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

 - 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.

 - 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``.

 - ``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.
-- 
Ticket URL: <https://wiki.linuxfromscratch.org/lfs/ticket/5994#comment:1>
LFS Trac <https://wiki.linuxfromscratch.org/lfs/>
Linux From Scratch: Your Distro, Your Rules.

-- 
http://lists.linuxfromscratch.org/sympa/info/lfs-book
Unsubscribe: See the above information page
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.