dev-python/pip: Sync with Gentoo

It's from Gentoo commit 26fb1617bbead3a20fbea645e7647ec9982cd38d.
This commit is contained in:
Flatcar Buildbot 2024-11-11 07:05:57 +00:00 committed by Krzesimir Nowak
parent ad9c265357
commit 14173e29ca
5 changed files with 224 additions and 6 deletions

View File

@ -3,3 +3,4 @@ DIST pip-24.1.1.gh.tar.gz 9190972 BLAKE2B 1ce876d2767c1c36bac3237c17a3aced9dd5a3
DIST pip-24.1.2.gh.tar.gz 9192691 BLAKE2B 9b5a07e9f10b5787d668766423d8b3a9dfcc62564673155b80c7bc95ffe79daafa8788d8141f67c76d4098c21922e62fcb2164f72bf580bbeec136786c48d512 SHA512 222a957030e9c51defa6f741f8e176f2a19bd54f0ef664d2e218d3d2c2b5a335c9b7ce4bd1c804133d6116b3fbf37648453cd85f7a2bcf86a5aeb43e22db4b0f
DIST pip-24.1.gh.tar.gz 9188658 BLAKE2B 4a43ff0199d811dd30461e376f655a447f3f706a48dd97fe1d0ccf630f558e72209ccd06d98949a1541cd6b2942a816db23ce8aaa7fbbf9aef429502fb91ab92 SHA512 c60ab329fe91202ff64b5f0f90209085fbf8db0f0a05f0703f952ad69e39e2e3edb5dadc006a3f317cdd4ba4fb5abe56dfbd22792249a2d139702eec272186d1
DIST pip-24.2.gh.tar.gz 9189637 BLAKE2B 6bc7bf69cd3e1edc1898a4476d36b749c037ac10a1614ef3a6bacc0c7debd38de94e0cf6d8a2931b1a7afb2f6f853922fcd62b65d17ac805f22741b7ff6423c6 SHA512 2c44881f62f7b89cedeb0b739409ad67c6144bfdffc347efeb7bcf85aed77bcd7ddd10868d24577fbba0ef84dd752473d6b6dff329b42841939fae2ff2f63d28
DIST pip-24.3.1.gh.tar.gz 9198711 BLAKE2B c70524bfedf46776d5ab8da24754e8177caac6d87cc90aa86b144c0fe9718860fe3d08823f655495c059dbece6e0ecbb2ac8e655cff3124693f64a35deac512e SHA512 9cf5f18eefd559cf27bc026e5206b0028ea77fd904a61fea9a6682b519305c962dd19170b841581bd05ff72192a9c458ec0eba173fa66db0438b046111ff5856

View File

@ -25,14 +25,10 @@ index 57dd7e68a..af2af9ffa 100644
def install_pth_link(
venv: VirtualEnvironment, project_name: str, lib_dir: Path
) -> None:
@@ -430,7 +423,6 @@ def virtualenv_template(
pip_src: Path,
@@ -431,3 +424,2 @@ def virtualenv_template(
setuptools_install: Path,
wheel_install: Path,
- coverage_install: Path,
) -> Iterator[VirtualEnvironment]:
venv_type: VirtualEnvironmentType
if request.config.getoption("--use-venv"):
@@ -457,13 +449,6 @@ def virtualenv_template(
[os.fspath(venv.bin / "python"), "setup.py", "-q", "develop"], cwd=pip_editable
)

View File

@ -0,0 +1,47 @@
From 8cfd050f615a4bad699ec55d4cb19b1f1dc4137e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Sat, 9 Nov 2024 16:41:40 +0100
Subject: [PATCH] Override rich.console pipe handler for rich 13.8.0+
Explicitly override `rich.console.Console.on_broken_pipe()` to reraise
the original exception, to bring the behavior of rich 13.8.0+ in line
with older versions. The new versions instead close output fds and exit
with error instead, which prevents pip's pipe handler from firing.
This is the minimal change needed to make pip's test suite pass after
upgrading vendored rich.
Bug #13006
Bug #13072
---
src/pip/_internal/utils/logging.py | 9 ++++++++-
2 files changed, 8 insertions(+), 1 deletion(-)
create mode 100644 news/13072.trivial.rst
diff --git a/src/pip/_internal/utils/logging.py b/src/pip/_internal/utils/logging.py
index 41f6eb51a..be17add5d 100644
--- a/src/pip/_internal/utils/logging.py
+++ b/src/pip/_internal/utils/logging.py
@@ -137,12 +137,19 @@ class IndentedRenderable:
yield Segment("\n")
+class PipConsole(Console):
+ def on_broken_pipe(self) -> None:
+ # Reraise the original exception, rich 13.8.0+ exits by default
+ # instead, preventing our handler from firing.
+ raise BrokenPipeError() from None
+
+
class RichPipStreamHandler(RichHandler):
KEYWORDS: ClassVar[Optional[List[str]]] = []
def __init__(self, stream: Optional[TextIO], no_color: bool) -> None:
super().__init__(
- console=Console(file=stream, no_color=no_color, soft_wrap=True),
+ console=PipConsole(file=stream, no_color=no_color, soft_wrap=True),
show_time=False,
show_level=False,
show_path=False,
--
2.47.0

View File

@ -26,7 +26,7 @@ LICENSE="MIT"
# bundled deps
LICENSE+=" Apache-2.0 BSD BSD-2 ISC LGPL-2.1+ MPL-2.0 PSF-2"
SLOT="0"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~sparc x86"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~m68k ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="test-rust"
# see src/pip/_vendor/vendor.txt
@ -58,6 +58,7 @@ BDEPEND="
dev-python/pretend[${PYTHON_USEDEP}]
dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
dev-python/pytest-xdist[${PYTHON_USEDEP}]
<dev-python/rich-13.8[${PYTHON_USEDEP}]
dev-python/scripttest[${PYTHON_USEDEP}]
dev-python/tomli-w[${PYTHON_USEDEP}]
dev-python/virtualenv[${PYTHON_USEDEP}]

View File

@ -0,0 +1,173 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# please bump dev-python/ensurepip-pip along with this package!
DISTUTILS_USE_PEP517=setuptools
PYTHON_TESTED=( python3_{10..13} )
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" pypy3 )
PYTHON_REQ_USE="ssl(+),threads(+)"
inherit bash-completion-r1 distutils-r1
DESCRIPTION="The PyPA recommended tool for installing Python packages"
HOMEPAGE="
https://pip.pypa.io/en/stable/
https://pypi.org/project/pip/
https://github.com/pypa/pip/
"
SRC_URI="
https://github.com/pypa/pip/archive/${PV}.tar.gz -> ${P}.gh.tar.gz
"
LICENSE="MIT"
# bundled deps
LICENSE+=" Apache-2.0 BSD BSD-2 ISC LGPL-2.1+ MPL-2.0 PSF-2"
SLOT="0"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~m68k ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
IUSE="test-rust"
# see src/pip/_vendor/vendor.txt
RDEPEND="
>=dev-python/cachecontrol-0.14.0[${PYTHON_USEDEP}]
>=dev-python/distlib-0.3.9[${PYTHON_USEDEP}]
>=dev-python/distro-1.9.0[${PYTHON_USEDEP}]
>=dev-python/msgpack-1.0.8[${PYTHON_USEDEP}]
>=dev-python/packaging-24.2[${PYTHON_USEDEP}]
>=dev-python/platformdirs-4.2.1[${PYTHON_USEDEP}]
>=dev-python/pyproject-hooks-1.0.0[${PYTHON_USEDEP}]
>=dev-python/requests-2.32.0[${PYTHON_USEDEP}]
>=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
>=dev-python/resolvelib-1.0.1[${PYTHON_USEDEP}]
>=dev-python/setuptools-69.5.1[${PYTHON_USEDEP}]
$(python_gen_cond_dep '
>=dev-python/tomli-2.0.1[${PYTHON_USEDEP}]
' 3.10)
>=dev-python/truststore-0.10.0[${PYTHON_USEDEP}]
>=dev-python/typing-extensions-4.12.2[${PYTHON_USEDEP}]
"
BDEPEND="
${RDEPEND}
test? (
$(python_gen_cond_dep '
dev-python/ensurepip-setuptools
dev-python/ensurepip-wheel
dev-python/freezegun[${PYTHON_USEDEP}]
dev-python/pretend[${PYTHON_USEDEP}]
dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
dev-python/pytest-xdist[${PYTHON_USEDEP}]
dev-python/scripttest[${PYTHON_USEDEP}]
dev-python/tomli-w[${PYTHON_USEDEP}]
dev-python/virtualenv[${PYTHON_USEDEP}]
dev-python/werkzeug[${PYTHON_USEDEP}]
dev-python/wheel[${PYTHON_USEDEP}]
test-rust? (
dev-python/cryptography[${PYTHON_USEDEP}]
)
dev-vcs/git
' "${PYTHON_TESTED[@]}")
)
"
distutils_enable_tests pytest
python_prepare_all() {
local PATCHES=(
"${FILESDIR}/pip-23.1-no-coverage.patch"
# prepare to unbundle dependencies
"${FILESDIR}/pip-24.1-unbundle.patch"
# https://github.com/pypa/pip/pull/13073
"${FILESDIR}/pip-24.3.1-rich-13.8.patch"
)
distutils-r1_python_prepare_all
# unbundle dependencies
rm -r src/pip/_vendor || die
find -name '*.py' -exec sed -i \
-e 's:from pip\._vendor import:import:g' \
-e 's:from pip\._vendor\.:from :g' \
{} + || die
if use test; then
local wheels=(
"${BROOT}"/usr/lib/python/ensurepip/{setuptools,wheel}-*.whl
)
mkdir tests/data/common_wheels/ || die
cp "${wheels[@]}" tests/data/common_wheels/ || die
fi
}
python_compile_all() {
# 'pip completion' command embeds full $0 into completion script, which confuses
# 'complete' and causes QA warning when running as "${PYTHON} -m pip".
# This trick sets correct $0 while still calling just installed pip.
local pipcmd='import sys; sys.argv[0] = "pip"; __file__ = ""; from pip._internal.cli.main import main; sys.exit(main())'
"${EPYTHON}" -c "${pipcmd}" completion --bash > completion.bash || die
"${EPYTHON}" -c "${pipcmd}" completion --zsh > completion.zsh || die
}
python_test() {
if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
einfo "Skipping tests on ${EPYTHON}"
return 0
fi
local EPYTEST_DESELECT=(
tests/functional/test_inspect.py::test_inspect_basic
# Internet
tests/functional/test_config_settings.py::test_backend_sees_config_via_sdist
tests/functional/test_install.py::test_double_install_fail
tests/functional/test_install.py::test_install_sdist_links
tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
# broken by system site-packages use
tests/functional/test_check.py::test_basic_check_clean
tests/functional/test_check.py::test_check_skip_work_dir_pkg
tests/functional/test_check.py::test_check_complicated_name_clean
tests/functional/test_check.py::test_check_development_versions_are_also_considered
tests/functional/test_freeze.py::test_freeze_with_setuptools
tests/functional/test_pip_runner_script.py::test_runner_work_in_environments_with_no_pip
tests/functional/test_uninstall.py::test_basic_uninstall_distutils
tests/unit/test_base_command.py::test_base_command_global_tempdir_cleanup
tests/unit/test_base_command.py::test_base_command_local_tempdir_cleanup
tests/unit/test_base_command.py::test_base_command_provides_tempdir_helpers
# broken by unbundling
"tests/functional/test_debug.py::test_debug[vendored library versions:]"
tests/functional/test_debug.py::test_debug__library_versions
tests/functional/test_python_option.py::test_python_interpreter
tests/functional/test_uninstall.py::test_uninstall_non_local_distutils
)
local EPYTEST_IGNORE=(
# requires proxy.py
tests/functional/test_proxy.py
)
if ! has_version "dev-python/cryptography[${PYTHON_USEDEP}]"; then
EPYTEST_DESELECT+=(
tests/functional/test_install.py::test_install_sends_client_cert
tests/functional/test_install_config.py::test_do_not_prompt_for_authentication
tests/functional/test_install_config.py::test_prompt_for_authentication
tests/functional/test_install_config.py::test_prompt_for_keyring_if_needed
)
fi
local -x PIP_DISABLE_PIP_VERSION_CHECK=1
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
local EPYTEST_XDIST=1
# rerunfailures because test suite breaks if packages are installed
# in parallel
epytest -m "not network" -o tmp_path_retention_policy=all \
-p rerunfailures --reruns=5
}
python_install_all() {
local DOCS=( AUTHORS.txt docs/html/**/*.rst )
distutils-r1_python_install_all
newbashcomp completion.bash pip
insinto /usr/share/zsh/site-functions
newins completion.zsh _pip
}