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