blob: 7f1ee9ce686ab9d9b6281bac055a1f73763e7ad6 (
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
133
134
135
136
137
138
|
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{11..14} )
PYTHON_REQ_USE="sqlite"
inherit distutils-r1 optfeature
DESCRIPTION="Optional static typing for Python"
HOMEPAGE="
https://www.mypy-lang.org/
https://github.com/python/mypy/
https://pypi.org/project/mypy/
"
SRC_URI="
https://github.com/python/mypy/archive/v${PV}.tar.gz
-> ${P}.gh.tar.gz
"
LICENSE="MIT"
SLOT="0"
KEYWORDS="amd64 arm arm64 ~loong ppc ppc64 ~riscv ~s390 ~sparc x86"
IUSE="native-extensions"
# stubgen collides with this package: https://bugs.gentoo.org/585594
RDEPEND="
!dev-util/stubgen
>=dev-python/librt-0.8.0[${PYTHON_USEDEP}]
>=dev-python/mypy-extensions-1.0.0[${PYTHON_USEDEP}]
>=dev-python/pathspec-1.0.0[${PYTHON_USEDEP}]
>=dev-python/typing-extensions-4.6.0[${PYTHON_USEDEP}]
"
BDEPEND="
native-extensions? (
${RDEPEND}
dev-python/types-psutil[${PYTHON_USEDEP}]
dev-python/types-setuptools[${PYTHON_USEDEP}]
)
test? (
>=dev-python/attrs-18.0[${PYTHON_USEDEP}]
>=dev-python/filelock-3.3.0[${PYTHON_USEDEP}]
>=dev-python/lxml-4.9.1[${PYTHON_USEDEP}]
)
"
EPYTEST_PLUGINS=()
EPYTEST_XDIST=1
distutils_enable_tests pytest
# frustratingly, mypyc produces non-deterministic output. If ccache is enabled it will be a waste of time,
# but simultaneously it might trash your system and fill up the cache with a giant wave of non-reproducible
# test files (https://github.com/mypyc/mypyc/issues/1014)
export CCACHE_DISABLE=1
PATCHES=(
"${FILESDIR}"/${PN}-1.14.0-no-werror.patch
)
src_prepare() {
distutils-r1_src_prepare
# don't force pytest-xdist, in case user asked for EPYTEST_JOBS=1
sed -i -e '/addopts/s:-nauto::' pyproject.toml || die
}
python_compile() {
local -x MYPY_USE_MYPYC=$(usex native-extensions 1 0)
distutils-r1_python_compile
}
python_test() {
local EPYTEST_DESELECT=(
# the majority of them require Internet (via pip)
mypy/test/testpep561.py
# known broken with assertions enabled
# https://github.com/python/mypy/issues/16043
mypyc/test/test_external.py::TestExternal::test_c_unit_test
mypyc/test/test_run.py::TestRun::run-classes.test::testDelException
mypyc/test/test_run.py::TestRun::run-floats.test::testFloatOps
mypyc/test/test_run.py::TestRun::run-i64.test::testI64GlueMethodsAndInheritance
mypyc/test/test_run.py::TestRunStrictDunderTyping::run-floats.test::testFloatOps_dunder_typing
mypyc/test/test_run.py::TestRun::run-async.test::testRunAsyncMiscTypesInEnvironment
mypyc/test/test_run.py::TestRun::run-bools.test::testBoolOps
mypyc/test/test_run.py::TestRun::run-i64.test::testI64BasicOps
mypyc/test/test_run.py::TestRun::run-i64.test::testI64DefaultArgValues
mypyc/test/test_run.py::TestRun::run-i64.test::testI64ErrorValuesAndUndefined
mypyc/test/test_run.py::TestRun::run-vecs-i64.test::testVecI64BasicOps_librt_experimental
mypyc/test/test_run.py::TestRun::run-vecs-nested.test::testVecNestedBasicOps_librt_experimental
mypyc/test/test_run.py::TestRun::run-vecs-misc.test::testVecMiscBasicOps_librt_experimental
mypyc/test/test_run.py::TestRun::run-vecs-t.test::testVecTBasicOps_librt_experimental
mypyc/test/test_run.py::TestRun::run-librt-strings.test::testLibrtStrings_librt_experimental
# these assume that types-docutils are not installed
mypy/test/testpythoneval.py::PythonEvaluationSuite::pythoneval.test::testIgnoreImportIfNoPython3StubAvailable
mypy/test/testpythoneval.py::PythonEvaluationSuite::pythoneval.test::testNoPython3StubAvailable
# TODO
mypy/test/meta/test_parse_data.py
mypy/test/meta/test_update_data.py
# Unknown SIGBUS, bug #967850
mypyc/test/test_run.py::TestRun::run-classes.test::testBufferRoundTrip_native_libs
)
case ${EPYTHON} in
python3.14*)
EPYTEST_DESELECT+=(
mypyc/test/test_run.py::TestRun::run-async.test::testRunAsyncRefCounting
mypyc/test/test_run.py::TestRun::run-tuples.test::testNamedTupleClassSyntax
)
;;
esac
# Some mypy/test/testcmdline.py::PythonCmdlineSuite tests
# fail with high COLUMNS values
local -x COLUMNS=80
# The tests depend on having in-source compiled extensions if you want to
# test those compiled extensions. Various crucial test dependencies aren't
# installed. Even pyproject.toml is needed because that's where pytest args
# are in. Hack them into the build directory and delete them afterwards.
# See: https://github.com/python/mypy/issues/16143
local -x MYPY_TEST_PREFIX="${S}"
cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
cp -r "${S}"/{conftest.py,pyproject.toml} . || die
local failed=
nonfatal epytest || failed=1
rm -r conftest.py pyproject.toml .mypy_cache || die
[[ ${failed} ]] && die "epytest failed with ${EPYTHON}"
}
pkg_postinst() {
optfeature "dmypy status -v support for memory use" dev-python/psutil
}
|