From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 68E801581D3 for ; Tue, 28 May 2024 04:42:12 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 7578BE2A47; Tue, 28 May 2024 04:42:11 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 54D31E2A47 for ; Tue, 28 May 2024 04:42:11 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 543FB33BDC5 for ; Tue, 28 May 2024 04:42:10 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id ADAE71BDD for ; Tue, 28 May 2024 04:42:08 +0000 (UTC) From: "Michał Górny" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Michał Górny" Message-ID: <1716871273.165b74a6a1ca84e569326259dfe46db455c356df.mgorny@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-python/pipdeptree/files/, dev-python/pipdeptree/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-python/pipdeptree/Manifest dev-python/pipdeptree/files/pipdeptree-2.21.0-pypy.patch dev-python/pipdeptree/pipdeptree-2.21.0.ebuild X-VCS-Directories: dev-python/pipdeptree/ dev-python/pipdeptree/files/ X-VCS-Committer: mgorny X-VCS-Committer-Name: Michał Górny X-VCS-Revision: 165b74a6a1ca84e569326259dfe46db455c356df X-VCS-Branch: master Date: Tue, 28 May 2024 04:42:08 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 4a39ab6d-a627-4441-a888-517f63170a67 X-Archives-Hash: 683ee97e6b79dc7ce19c8e50721874d8 commit: 165b74a6a1ca84e569326259dfe46db455c356df Author: Michał Górny gentoo org> AuthorDate: Tue May 28 04:36:44 2024 +0000 Commit: Michał Górny gentoo org> CommitDate: Tue May 28 04:41:13 2024 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=165b74a6 dev-python/pipdeptree: Bump to 2.21.0 Signed-off-by: Michał Górny gentoo.org> dev-python/pipdeptree/Manifest | 1 + .../pipdeptree/files/pipdeptree-2.21.0-pypy.patch | 134 +++++++++++++++++++++ dev-python/pipdeptree/pipdeptree-2.21.0.ebuild | 51 ++++++++ 3 files changed, 186 insertions(+) diff --git a/dev-python/pipdeptree/Manifest b/dev-python/pipdeptree/Manifest index 88b46781bb9a..b6d8e483130c 100644 --- a/dev-python/pipdeptree/Manifest +++ b/dev-python/pipdeptree/Manifest @@ -1,2 +1,3 @@ DIST pipdeptree-2.16.2.tar.gz 32151 BLAKE2B 18715b0c7835e19bd5b6846922990e321a7e06315642204e7d79375a50b692f87e2ba1ec5884c4f69ff6e8d75e863c8cf372152aca7561ab94ef265d3c1df9fb SHA512 06d72f94a9165fe52cc15b9f539e3adb6da99e4a63cae78928bf68be3499b2828a5d471f270455b94a960ba2fe2f6319f5319c20ed270029a38a81173a7cd403 DIST pipdeptree-2.17.0.tar.gz 34677 BLAKE2B 3f92c4361978d2a6b1ae46d3a7e21aca231d504abf3a3cc8388d64a70fc3853a33edeac091a0b60cd3043d86162f6816292f973e9c8691420f906e946a5c9dac SHA512 1e7a4bc7f2f872e9d3115b413acc791eeb912a6f428fca772e30a3c8164ecfa44bba7e5246f9b65cbc4d34ffcd8050ff795ced3e3f9ad918f134ce052a8e8992 +DIST pipdeptree-2.21.0.tar.gz 39119 BLAKE2B 15f37f997b89477a9e1815a2bf120ce5251e9cf2e4df9195dc76bd7414c0cf7f58c4b8e787649492c9826bda5d3f8df60577b5242af7354ad0e1583eabbf0589 SHA512 3d416683c70861de7b768a69fe59a31173e712ecb752c7948329f787c8e13bc54be544fa4a7d3bfdbf6b164202fa8b07898c6e993a53fe244a5f3d9fa9a00573 diff --git a/dev-python/pipdeptree/files/pipdeptree-2.21.0-pypy.patch b/dev-python/pipdeptree/files/pipdeptree-2.21.0-pypy.patch new file mode 100644 index 000000000000..bbc8ea9d0b9c --- /dev/null +++ b/dev-python/pipdeptree/files/pipdeptree-2.21.0-pypy.patch @@ -0,0 +1,134 @@ +diff --git a/tests/test_non_host.py b/tests/test_non_host.py +index 7049b0c..54ba7fb 100644 +--- a/tests/test_non_host.py ++++ b/tests/test_non_host.py +@@ -16,6 +16,21 @@ + from pytest_mock import MockerFixture + + ++@pytest.fixture(scope="session") ++def expected_venv_pkgs() -> frozenset[str]: ++ implementation = python_implementation() ++ if implementation == "CPython": # pragma: cpython cover ++ expected = {"pip", "setuptools", "wheel"} ++ elif implementation == "PyPy": # pragma: pypy cover ++ expected = {"cffi", "greenlet", "pip", "readline", "hpy", "setuptools", "wheel"} ++ else: # pragma: no cover ++ raise ValueError(implementation) ++ if sys.version_info >= (3, 12): # pragma: >=3.12 cover ++ expected -= {"setuptools", "wheel"} ++ ++ return frozenset(expected) ++ ++ + @pytest.mark.parametrize("args_joined", [True, False]) + def test_custom_interpreter( + tmp_path: Path, +@@ -23,6 +38,7 @@ def test_custom_interpreter( + monkeypatch: pytest.MonkeyPatch, + capfd: pytest.CaptureFixture[str], + args_joined: bool, ++ expected_venv_pkgs: frozenset[str], + ) -> None: + # Delete $PYTHONPATH so that it cannot be passed to the custom interpreter process (since we don't know what + # distribution metadata to expect when it's used). +@@ -32,20 +48,13 @@ def test_custom_interpreter( + result = virtualenv.cli_run([str(tmp_path / "venv"), "--activators", ""]) + py = str(result.creator.exe.relative_to(tmp_path)) + cmd = ["", f"--python={result.creator.exe}"] if args_joined else ["", "--python", py] ++ cmd += ["--all", "--depth", "0"] + mocker.patch("pipdeptree._discovery.sys.argv", cmd) + main() + out, _ = capfd.readouterr() + found = {i.split("==")[0] for i in out.splitlines()} +- implementation = python_implementation() +- if implementation == "CPython": +- expected = {"pip", "setuptools", "wheel"} +- elif implementation == "PyPy": +- expected = {"cffi", "greenlet", "pip", "readline", "setuptools", "wheel"} # pragma: no cover +- else: +- raise ValueError(implementation) +- if sys.version_info >= (3, 12): +- expected -= {"setuptools", "wheel"} +- assert found == expected, out ++ ++ assert expected_venv_pkgs == found, out + + + def test_custom_interpreter_with_local_only( +@@ -54,7 +63,6 @@ def test_custom_interpreter_with_local_only( + capfd: pytest.CaptureFixture[str], + ) -> None: + venv_path = str(tmp_path / "venv") +- + result = virtualenv.cli_run([venv_path, "--system-site-packages", "--activators", ""]) + + cmd = ["", f"--python={result.creator.exe}", "--local-only"] +@@ -63,16 +71,10 @@ def test_custom_interpreter_with_local_only( + main() + out, _ = capfd.readouterr() + found = {i.split("==")[0] for i in out.splitlines()} +- implementation = python_implementation() +- if implementation == "CPython": +- expected = {"pip", "setuptools", "wheel"} +- elif implementation == "PyPy": # pragma: no cover +- expected = {"cffi", "greenlet", "pip", "readline", "setuptools", "wheel"} # pragma: no cover +- else: +- raise ValueError(implementation) # pragma: no cover +- if sys.version_info >= (3, 12): +- expected -= {"setuptools", "wheel"} # pragma: no cover +- assert found == expected, out ++ expected = {"pip", "setuptools", "wheel"} ++ if sys.version_info >= (3, 12): # pragma: >=3.12 cover ++ expected -= {"setuptools", "wheel"} ++ assert expected == found, out + + + def test_custom_interpreter_with_user_only( +@@ -81,7 +83,6 @@ def test_custom_interpreter_with_user_only( + # ensures there is no output when --user-only and --python are passed + + venv_path = str(tmp_path / "venv") +- + result = virtualenv.cli_run([venv_path, "--activators", ""]) + + cmd = ["", f"--python={result.creator.exe}", "--user-only"] +@@ -127,7 +128,7 @@ def test_custom_interpreter_with_user_only_and_system_site_pkgs_enabled( + found = {i.split("==")[0] for i in out.splitlines()} + expected = {"bar"} + +- assert found == expected ++ assert expected == found + + + def test_custom_interpreter_ensure_pythonpath_envar_is_honored( +@@ -135,6 +136,7 @@ def test_custom_interpreter_ensure_pythonpath_envar_is_honored( + mocker: MockerFixture, + monkeypatch: pytest.MonkeyPatch, + capfd: pytest.CaptureFixture[str], ++ expected_venv_pkgs: frozenset[str], + ) -> None: + # ensures that we honor $PYTHONPATH when passing it to the custom interpreter process + venv_path = str(tmp_path / "venv") +@@ -146,19 +148,10 @@ def test_custom_interpreter_ensure_pythonpath_envar_is_honored( + fake_metadata = fake_dist / "METADATA" + with fake_metadata.open("w") as f: + f.write("Metadata-Version: 2.3\n" "Name: foo\n" "Version: 1.2.3\n") +- cmd = ["", f"--python={result.creator.exe}"] ++ cmd = ["", f"--python={result.creator.exe}", "--all", "--depth", "0"] + mocker.patch("pipdeptree._discovery.sys.argv", cmd) + monkeypatch.setenv("PYTHONPATH", str(another_path)) + main() + out, _ = capfd.readouterr() + found = {i.split("==")[0] for i in out.splitlines()} +- implementation = python_implementation() +- if implementation == "CPython": +- expected = {"foo", "pip", "setuptools", "wheel"} +- elif implementation == "PyPy": # pragma: cpython no cover +- expected = {"foo", "cffi", "greenlet", "pip", "readline", "setuptools", "wheel"} +- else: # pragma: no cover +- raise ValueError(implementation) +- if sys.version_info >= (3, 12): # pragma: >=3.12 cover +- expected -= {"setuptools", "wheel"} +- assert found == expected, out ++ assert {*expected_venv_pkgs, "foo"} == found, out diff --git a/dev-python/pipdeptree/pipdeptree-2.21.0.ebuild b/dev-python/pipdeptree/pipdeptree-2.21.0.ebuild new file mode 100644 index 000000000000..ff041b350662 --- /dev/null +++ b/dev-python/pipdeptree/pipdeptree-2.21.0.ebuild @@ -0,0 +1,51 @@ +# Copyright 2022-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=hatchling +PYTHON_COMPAT=( pypy3 python3_{10..12} ) + +inherit distutils-r1 pypi optfeature + +DESCRIPTION="Utility for displaying installed packages in a dependency tree" +HOMEPAGE=" + https://github.com/tox-dev/pipdeptree/ + https://pypi.org/project/pipdeptree/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~riscv" + +RDEPEND=" + >=dev-python/packaging-23.1[${PYTHON_USEDEP}] + >=dev-python/pip-23.1.2[${PYTHON_USEDEP}] +" +BDEPEND=" + dev-python/hatch-vcs[${PYTHON_USEDEP}] + test? ( + dev-python/graphviz[${PYTHON_USEDEP}] + >=dev-python/pytest-console-scripts-1.4.1[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/virtualenv[${PYTHON_USEDEP}] + ) +" + +PATCHES=( + # https://github.com/tox-dev/pipdeptree/pull/369 + "${FILESDIR}/${P}-pypy.patch" +) + +distutils_enable_tests pytest + +python_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + epytest -p pytest_mock -p console-scripts +} + +pkg_postinst() { + optfeature \ + "visualising the dependency graph with --graph-output" \ + dev-python/graphviz +}