summaryrefslogtreecommitdiff
path: root/dev-python/pdm/pdm-2.22.3.ebuild
blob: d8a8156f0d6f740016a2aa3aa06d0a219f533564 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# 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.4.4[${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/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.0[${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/uv
	)
"

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
	)
	[[ ${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
}