commit:     8c644d3c0d72f78f873b21412e57c694146ddc34
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 19 10:27:15 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Apr 19 10:28:24 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8c644d3c

dev-python/pdm: Fix pytest fixtures to respect Python

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../pdm/files/pdm-2.24.0-respect-python.patch      |  27 ++++
 dev-python/pdm/pdm-2.24.0-r1.ebuild                |  94 ++++++++++++++
 dev-python/pdm/pdm-2.24.0.ebuild                   | 139 ---------------------
 3 files changed, 121 insertions(+), 139 deletions(-)

diff --git a/dev-python/pdm/files/pdm-2.24.0-respect-python.patch 
b/dev-python/pdm/files/pdm-2.24.0-respect-python.patch
new file mode 100644
index 000000000000..2707616263e7
--- /dev/null
+++ b/dev-python/pdm/files/pdm-2.24.0-respect-python.patch
@@ -0,0 +1,27 @@
+From 6ac6bf373db1acee7f51a3d695e8b58e85f11801 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <[email protected]>
+Date: Sat, 19 Apr 2025 11:13:02 +0200
+Subject: [PATCH] Force `sys.executable` in pytest fixture
+
+Fix the pytest fixture to respect `sys.executable` rather than finding
+an arbitrary Python version in `sys.base_prefix`.  No clue why upstream
+changed the logic to do the latter, but it is clearly wrong on Gentoo.
+
+Bug: https://github.com/pdm-project/pdm/issues/3486
+---
+ src/pdm/pytest.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pdm/pytest.py b/src/pdm/pytest.py
+index d23ad4b9..3f50c0f2 100644
+--- a/src/pdm/pytest.py
++++ b/src/pdm/pytest.py
+@@ -407,7 +407,7 @@ def project_no_init(
+     tmp_path.joinpath("caches").mkdir(parents=True)
+     p.global_config["cache_dir"] = tmp_path.joinpath("caches").as_posix()
+     p.global_config["log_dir"] = tmp_path.joinpath("logs").as_posix()
+-    python_path = find_python_in_path(sys.base_prefix)
++    python_path = Path(sys.executable)
+     if python_path is None:
+         raise ValueError("Unable to find a Python path")
+     p._saved_python = python_path.as_posix()

diff --git a/dev-python/pdm/pdm-2.24.0-r1.ebuild 
b/dev-python/pdm/pdm-2.24.0-r1.ebuild
new file mode 100644
index 000000000000..a171eb96cc49
--- /dev/null
+++ b/dev-python/pdm/pdm-2.24.0-r1.ebuild
@@ -0,0 +1,94 @@
+# Copyright 2023-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pdm-backend
+PYTHON_COMPAT=( python3_{10..13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python package and dependency manager supporting the latest PEP 
standards"
+HOMEPAGE="
+       https://pdm-project.org/
+       https://github.com/pdm-project/pdm/
+       https://pypi.org/project/pdm/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+       dev-python/certifi[${PYTHON_USEDEP}]
+       >=dev-python/dep-logic-0.5[${PYTHON_USEDEP}]
+       <dev-python/findpython-1[${PYTHON_USEDEP}]
+       >=dev-python/findpython-0.6.0[${PYTHON_USEDEP}]
+       dev-python/blinker[${PYTHON_USEDEP}]
+       dev-python/filelock[${PYTHON_USEDEP}]
+       >=dev-python/hishel-0.0.32[${PYTHON_USEDEP}]
+       >=dev-python/httpcore-1.0.6[${PYTHON_USEDEP}]
+       dev-python/httpx[${PYTHON_USEDEP}]
+       >=dev-python/id-1.5.0[${PYTHON_USEDEP}]
+       dev-python/installer[${PYTHON_USEDEP}]
+       dev-python/msgpack[${PYTHON_USEDEP}]
+       dev-python/packaging[${PYTHON_USEDEP}]
+       >=dev-python/pbs-installer-2024.4.18[${PYTHON_USEDEP}]
+       dev-python/platformdirs[${PYTHON_USEDEP}]
+       dev-python/pyproject-hooks[${PYTHON_USEDEP}]
+       dev-python/python-dotenv[${PYTHON_USEDEP}]
+       >=dev-python/resolvelib-1.1[${PYTHON_USEDEP}]
+       dev-python/rich[${PYTHON_USEDEP}]
+       dev-python/shellingham[${PYTHON_USEDEP}]
+       dev-python/tomlkit[${PYTHON_USEDEP}]
+       >=dev-python/truststore-0.9[${PYTHON_USEDEP}]
+       >=dev-python/unearth-0.17.5[${PYTHON_USEDEP}]
+       dev-python/virtualenv[${PYTHON_USEDEP}]
+       $(python_gen_cond_dep '
+               dev-python/tomli[${PYTHON_USEDEP}]
+       ' 3.10)
+"
+BDEPEND="
+       ${RDEPEND}
+       test? (
+               dev-python/pytest-mock[${PYTHON_USEDEP}]
+               dev-python/pytest-httpserver[${PYTHON_USEDEP}]
+               dev-python/pytest-httpx[${PYTHON_USEDEP}]
+               dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+               dev-python/uv
+       )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+       local PATCHES=(
+               # https://github.com/pdm-project/pdm/issues/3486
+               "${FILESDIR}/${P}-respect-python.patch"
+       )
+
+       distutils-r1_src_prepare
+
+       # unpin deps
+       sed -i -e 's:,<[0-9.a]*::' pyproject.toml || die
+}
+
+python_test() {
+       local EPYTEST_DESELECT=(
+               # Internet
+               # https://github.com/pdm-project/pdm/pull/3488
+               # (the third one I can't reproduce)
+               
tests/models/test_candidates.py::test_find_candidates_from_find_links
+               
'tests/test_project.py::test_find_interpreters_with_PDM_IGNORE_ACTIVE_VENV[True]'
+               
'tests/models/test_candidates.py::test_expand_project_root_in_url[demo @ 
file:///${PROJECT_ROOT}/tests/fixtures/artifacts/demo-0.0.1.tar.gz]'
+
+               # unhappy about extra packages being installed?
+               # (also fails randomly in venv)
+               tests/cli/test_build.py::test_build_with_no_isolation
+       )
+
+       local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+       epytest  -m "not network and not integration and not path" \
+               -p pytest_mock -p pytest_httpx -p pytest_httpserver
+}

diff --git a/dev-python/pdm/pdm-2.24.0.ebuild b/dev-python/pdm/pdm-2.24.0.ebuild
deleted file mode 100644
index 7903a5d3343c..000000000000
--- a/dev-python/pdm/pdm-2.24.0.ebuild
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright 2023-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_USE_PEP517=pdm-backend
-PYTHON_COMPAT=( python3_{10..13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Python package and dependency manager supporting the latest PEP 
standards"
-HOMEPAGE="
-       https://pdm-project.org/
-       https://github.com/pdm-project/pdm/
-       https://pypi.org/project/pdm/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-RDEPEND="
-       dev-python/certifi[${PYTHON_USEDEP}]
-       >=dev-python/dep-logic-0.5[${PYTHON_USEDEP}]
-       <dev-python/findpython-1[${PYTHON_USEDEP}]
-       >=dev-python/findpython-0.6.0[${PYTHON_USEDEP}]
-       dev-python/blinker[${PYTHON_USEDEP}]
-       dev-python/filelock[${PYTHON_USEDEP}]
-       >=dev-python/hishel-0.0.32[${PYTHON_USEDEP}]
-       >=dev-python/httpcore-1.0.6[${PYTHON_USEDEP}]
-       dev-python/httpx[${PYTHON_USEDEP}]
-       >=dev-python/id-1.5.0[${PYTHON_USEDEP}]
-       dev-python/installer[${PYTHON_USEDEP}]
-       dev-python/msgpack[${PYTHON_USEDEP}]
-       dev-python/packaging[${PYTHON_USEDEP}]
-       >=dev-python/pbs-installer-2024.4.18[${PYTHON_USEDEP}]
-       dev-python/platformdirs[${PYTHON_USEDEP}]
-       dev-python/pyproject-hooks[${PYTHON_USEDEP}]
-       dev-python/python-dotenv[${PYTHON_USEDEP}]
-       >=dev-python/resolvelib-1.1[${PYTHON_USEDEP}]
-       dev-python/rich[${PYTHON_USEDEP}]
-       dev-python/shellingham[${PYTHON_USEDEP}]
-       dev-python/tomlkit[${PYTHON_USEDEP}]
-       >=dev-python/truststore-0.9[${PYTHON_USEDEP}]
-       >=dev-python/unearth-0.17.5[${PYTHON_USEDEP}]
-       dev-python/virtualenv[${PYTHON_USEDEP}]
-       $(python_gen_cond_dep '
-               dev-python/tomli[${PYTHON_USEDEP}]
-       ' 3.10)
-"
-BDEPEND="
-       ${RDEPEND}
-       test? (
-               dev-python/pytest-mock[${PYTHON_USEDEP}]
-               dev-python/pytest-httpserver[${PYTHON_USEDEP}]
-               dev-python/pytest-httpx[${PYTHON_USEDEP}]
-               dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
-               dev-python/uv
-       )
-"
-
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-src_prepare() {
-       distutils-r1_src_prepare
-
-       # unpin deps
-       sed -i -e 's:,<[0-9.a]*::' pyproject.toml || die
-}
-
-python_test() {
-       local EPYTEST_DESELECT=(
-               # Internet
-               'tests/cli/test_build.py::test_build_with_no_isolation[False]'
-               tests/test_project.py::test_access_index_with_auth
-               
"tests/test_project.py::test_find_interpreters_with_PDM_IGNORE_ACTIVE_VENV[True]"
-               tests/cli/test_others.py::test_build_distributions
-               
'tests/models/test_candidates.py::test_expand_project_root_in_url[demo @ 
file:///${PROJECT_ROOT}/tests/fixtures/artifacts/demo-0.0.1.tar.gz]'
-               
'tests/models/test_candidates.py::test_expand_project_root_in_url[-e 
file:///${PROJECT_ROOT}/tests/fixtures/projects/demo-#-with-hash#egg=demo]'
-               
tests/models/test_candidates.py::test_find_candidates_from_find_links
-               tests/cli/test_build.py::test_build_single_module
-               tests/cli/test_build.py::test_build_single_module_with_readme
-               tests/cli/test_build.py::test_build_package
-               tests/cli/test_build.py::test_build_src_package
-               tests/cli/test_build.py::test_build_package_include
-               tests/cli/test_build.py::test_build_src_package_by_include
-               tests/cli/test_build.py::test_build_with_config_settings
-               tests/cli/test_build.py::test_cli_build_with_config_settings
-               tests/cli/test_build.py::test_build_ignoring_pip_environment
-               tests/cli/test_others.py::test_show_self_package
-               tests/cli/test_publish.py::test_publish_and_build_in_one_run
-               "tests/cli/test_hooks.py::test_hooks[build]"
-               "tests/cli/test_hooks.py::test_hooks[publish]"
-               
"tests/cli/test_hooks.py::test_skip_option_from_signal[build-pre_build]"
-               
"tests/cli/test_hooks.py::test_skip_option_from_signal[build-post_build]"
-               
"tests/cli/test_hooks.py::test_skip_option_from_signal[publish-pre_publish]"
-               
"tests/cli/test_hooks.py::test_skip_option_from_signal[publish-pre_build]"
-               
"tests/cli/test_hooks.py::test_skip_option_from_signal[publish-post_build]"
-               
"tests/cli/test_hooks.py::test_skip_option_from_signal[publish-post_publish]"
-               
"tests/cli/test_hooks.py::test_skip_all_option_from_signal[:all-build]"
-               
"tests/cli/test_hooks.py::test_skip_all_option_from_signal[:all-publish]"
-               
"tests/cli/test_hooks.py::test_skip_all_option_from_signal[:pre,:post-build]"
-               
"tests/cli/test_hooks.py::test_skip_all_option_from_signal[:pre,:post-publish]"
-               
"tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[pre-build]"
-               
"tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[pre-publish]"
-               
"tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[post-build]"
-               
"tests/cli/test_hooks.py::test_skip_pre_post_option_from_signal[post-publish]"
-               "tests/cli/test_venv.py::test_conda_backend_create[True]"
-               "tests/cli/test_venv.py::test_conda_backend_create[False]"
-               tests/cli/test_lock.py::test_lock_all_with_excluded_groups
-               
'tests/resolver/test_resolve.py::test_resolve_local_artifacts[sdist]'
-               
'tests/resolver/test_resolve.py::test_resolve_two_extras_from_the_same_package'
-               
'tests/resolver/test_resolve.py::test_resolve_file_req_with_prerelease'
-               # hangs on interactive keyring prompts
-               tests/cli/test_config.py::test_repository_overwrite_default
-               
tests/cli/test_config.py::test_hide_password_in_output_repository
-               tests/cli/test_config.py::test_hide_password_in_output_pypi
-               # junk output, sigh
-               tests/cli/test_others.py::test_info_command_json
-               # why does it try to use python 2.7?!
-               tests/cli/test_run.py::test_import_another_sitecustomize
-               # fails in tinderbox (bug #928964)
-               tests/test_project.py::test_project_packages_path
-               # i guess doesn't expect some dep to be present
-               tests/cli/test_build.py::test_build_with_no_isolation
-               # something messed up about Python detection (possibly others 
too)
-               # https://github.com/pdm-project/pdm/issues/3486
-               tests/cli/test_init.py::test_new_command
-       )
-       [[ ${EPYTHON} != python3.10 ]] && EPYTEST_DESELECT+=(
-               # test seems hardcoded to 3.10
-               tests/test_project.py::test_project_packages_path
-       )
-
-       local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-       epytest  -m "not network and not integration and not path" \
-               -p pytest_mock -p pytest_httpx
-}

Reply via email to