Feature update for python310-pip

Announcement ID: SUSE-FU-2022:3302-1
Rating: moderate
References:
Affected Products:
  • Basesystem Module 15-SP4
  • openSUSE Leap 15.4
  • Python 3 Module 15-SP4
  • SUSE Linux Enterprise Desktop 15 SP4
  • SUSE Linux Enterprise High Performance Computing 15 SP4
  • SUSE Linux Enterprise Real Time 15 SP4
  • SUSE Linux Enterprise Server 15 SP4
  • SUSE Linux Enterprise Server for SAP Applications 15 SP4
  • SUSE Manager Proxy 4.3
  • SUSE Manager Retail Branch Server 4.3
  • SUSE Manager Server 4.3

An update that contains one feature and has one fix can now be installed.

Description:

This feature update for python310-pip and python-rpm-macros provides:

python310-pip:

Upgrade from version 20.2.4 to version 22.0.4 (jsc#SLE-24539)

  • Adjust SPEC file to generate python310 module only
  • Avoid cycle: BuildRequire ca-certificates only in tests
  • This version is not compatible with Python 3.6 and thus not suitable for SUSE Linux Enterprise 15.
  • Drop the doctype check, that presented a warning for index pages that use non-compliant HTML 5.
  • Print the exception via rich.traceback, when running with --debug.
  • Only calculate topological installation order, for packages that are going to be installed/upgraded.
  • This error occurred when determining the installation order for a very specific combination of upgrading of already installed packages, change of dependencies and fetching some packages from a package index. This combination was especially common in Read the Docs' builds.
  • Use html.parser by default, instead of falling back to html5lib when --use-deprecated=html5lib is not passed.
  • Clarify that using per-requirement overrides disables the usage of wheels.
  • Instead of failing on index pages that use non-compliant HTML 5, print a deprecation warning and fall back to html5lib-based parsing for now. This simplifies the migration for non-compliant index pages, by letting such indexes function with a warning.
  • Accept lowercase <!doctype html> on index pages.
  • Properly handle links parsed by html5lib, when using --use-deprecated=html5lib.
  • Changed PackageFinder to parse HTML documents using the stdlib :class:html.parser.HTMLParser class instead of the html5lib package.
  • For now, the deprecated html5lib code remains and can be used with the --use-deprecated=html5lib command line option. However, it will be removed in a future pip release.
  • Completely replace :pypi:tox in our development workflow, with :pypi:nox.
  • Deprecate alternative progress bar styles, leaving only on and off as available choices.
  • Drop support for Python 3.6.
  • Disable location mismatch warnings on Python versions prior to 3.10.
  • These warnings were helping identify potential issues as part of the sysconfig -> distutils transition, and we no longer need to rely on reports from older Python versions for information on the transition.
  • Utilize rich for presenting pip's default download progress bar.
  • Present a better error message when an invalid wheel file is encountered, providing more context where the invalid wheel file is.
  • Documents the --require-virtualenv flag for pip install.
  • pip install <tab> autocompletes paths.
  • Allow Python distributors to opt-out from or opt-in to the sysconfig installation scheme backend by setting sysconfig._PIP_USE_SYSCONFIG to True or False.
  • Make it possible to deselect tests requiring cryptography package on systems where it cannot be installed.
  • Start using Rich for presenting error messages in a consistent format.
  • Improve presentation of errors from subprocesses.
  • Forward pip's verbosity configuration to VCS tools to control their output accordingly.
  • Optimize installation order calculation to improve performance when installing requirements that form a complex dependency graph with a large amount of edges.
  • When a package is requested by the user for upgrade, correctly identify that the extra-ed variant of that same package depended by another user-requested package is requesting the same package, and upgrade it accordingly.
  • Prevent pip from installing yanked releases unless explicitly pinned via the == or === operators.
  • Stop backtracking on build failures, by instead surfacing them to the user and aborting immediately. This behaviour provides more immediate feedback when a package cannot be built due to missing build dependencies or platform incompatibility.
  • Silence Value for <location> does not match warning caused by an erroneous patch in Slackware-distributed Python 3.9.
  • Fix an issue where pip did not consider dependencies with and without extras to be equal
  • Always refuse installing or building projects that have no pyproject.toml nor setup.py.
  • Tweak running-as-root detection, to check os.getuid if it exists, on Unix-y and non-Linux/non-MacOS machines.
  • When installing projects with a pyproject.toml in editable mode, and the build backend does not support :pep:660, prepare metadata using prepare_metadata_for_build_wheel instead of setup.py egg_info. Also, refuse installing projects that only have a setup.cfg and no setup.py nor pyproject.toml. These restore the pre-21.3 behaviour.
  • Restore compatibility of where configuration files are loaded from on MacOS
  • Upgrade pep517 to 0.12.0
  • Improve deprecation warning regarding the copying of source trees when installing from a local directory.
  • Suppress location mismatch warnings when pip is invoked from a Python source tree, so ensurepip does not emit warnings on CPython make install.
  • On Python 3.10 or later, the installation scheme backend has been changed to use sysconfig. This is to anticipate the deprecation of distutils in Python 3.10, and its scheduled removal in 3.12. For compatibility considerations, pip installations running on Python 3.9 or lower will continue to use distutils.
  • Remove the --build-dir option and aliases, one last time.
  • In-tree builds are now the default. --use-feature=in-tree-build is now ignored. --use-deprecated=out-of-tree-build may be used temporarily to ease the transition.
  • Un-deprecate source distribution re-installation behaviour.
  • Replace vendored appdirs with platformdirs.
  • Support PEP 610 &lt;https://www.python.org/dev/peps/pep-0610/&gt;_ to detect editable installs in pip freeze and pip list. The pip list column output has a new Editable project location column, and the JSON output has a new editable_project_location field.
  • pip freeze will now always fallback to reporting the editable project location when it encounters a VCS error while analyzing an editable requirement. Before, it sometimes reported the requirement as non-editable.
  • pip show now sorts Requires and Required-By alphabetically.
  • Do not raise error when there are no files to remove with pip cache purge/remove. Instead log a warning and continue (to log that we removed 0 files).
  • When backtracking during dependency resolution, prefer the dependencies which are involved in the most recent conflict. This can significantly reduce the amount of backtracking required.
  • Cache requirement objects, to improve performance reducing reparses of requirement strings.
  • Support editable installs for projects that have a pyproject.toml and use a build backend that supports :pep:660.
  • When a revision is specified in a Git URL, use git's partial clone feature to speed up source retrieval.
  • Add a --debug flag, to enable a mode that doesn't log errors and propagates them to the top level instead. This is primarily to aid with debugging pip's crashes.
  • If a host is explicitly specified as trusted by the user (via the --trusted-host option), cache HTTP responses from it in addition to HTTPS ones.
  • Present a better error message, when a file: URL is not found.
  • Fix the auth credential cache to allow for the case in which the index url contains the username, but the password comes from an external source, such as keyring.
  • Fix double unescape of HTML data-requires-python and data-yanked attributes.
  • New resolver: Fixes depth ordering of packages during resolution, e.g. a dependency 2 levels deep will be ordered before a dependency 3 levels deep.

python-rpm-macros:

Update from version 20220106.80d3756 to version 20220809.cf8a7b8 (bsc#1201041) - Pass --ignore-installed to pip install in %pyproject_install - restore end-of-line in alternative scriptlets - make python_flavored_alternatives less verbose - Move install of libalts from sciptlets to python_clone -a - hard-code %py_ver - print proper error on missing python interpreter - Update compile-macros.sh - Create python_flavored_alternatives and use for testing - Switch primary_interpreter from python38 to python310 - Avoid bashism in %() - Fix flavor executable substitution - Keep python38 as primary python3 - Add python310 to the buildset - Move python39 to the primary place in %pythons - Disable python36 flavor in Factory buildset - Add python310 flavor macros to compile set

Patch Instructions:

To install this SUSE update use the SUSE recommended installation methods like YaST online_update or "zypper patch".
Alternatively you can run the command listed for your product:

  • openSUSE Leap 15.4
    zypper in -t patch openSUSE-SLE-15.4-2022-3302=1
  • Basesystem Module 15-SP4
    zypper in -t patch SUSE-SLE-Module-Basesystem-15-SP4-2022-3302=1
  • Python 3 Module 15-SP4
    zypper in -t patch SUSE-SLE-Module-Python3-15-SP4-2022-3302=1

Package List:

  • openSUSE Leap 15.4 (noarch)
    • python310-pip-22.0.4-150400.3.3.1
    • python-rpm-macros-20220809.cf8a7b8-150400.3.3.1
    • python-rpm-generators-20220809.cf8a7b8-150400.3.3.1
  • Basesystem Module 15-SP4 (noarch)
    • python-rpm-macros-20220809.cf8a7b8-150400.3.3.1
    • python-rpm-generators-20220809.cf8a7b8-150400.3.3.1
  • Python 3 Module 15-SP4 (noarch)
    • python310-pip-22.0.4-150400.3.3.1

References: