blob: 1cab76b3b2db32f960f0836d227497e45a76f3c0 (
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
139
140
141
142
143
144
|
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_EXT=1
DISTUTILS_USE_PEP517=meson-python
PYTHON_COMPAT=( python3_{10..13} pypy3 )
PYTHON_REQ_USE="threads(+)"
FORTRAN_NEEDED=lapack
inherit distutils-r1 flag-o-matic fortran-2 pypi
DESCRIPTION="Fast array and numerical python library"
HOMEPAGE="
https://numpy.org/
https://github.com/numpy/numpy/
https://pypi.org/project/numpy/
"
LICENSE="BSD"
SLOT="0/2"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
# +lapack because the internal fallbacks are pretty slow. Building without blas
# is barely supported anyway, see bug #914358.
IUSE="+lapack"
RDEPEND="
lapack? (
>=virtual/cblas-3.8
>=virtual/lapack-3.8
)
"
BDEPEND="
${RDEPEND}
>=dev-build/meson-1.1.0
>=dev-python/cython-3.0.6[${PYTHON_USEDEP}]
lapack? (
virtual/pkgconfig
)
test? (
$(python_gen_cond_dep '
>=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
' 'python*')
dev-python/charset-normalizer[${PYTHON_USEDEP}]
>=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
>=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
)
"
EPYTEST_XDIST=1
distutils_enable_tests pytest
python_prepare_all() {
# bug #922457
filter-lto
# https://github.com/numpy/numpy/issues/25004
append-flags -fno-strict-aliasing
distutils-r1_python_prepare_all
}
python_configure_all() {
DISTUTILS_ARGS=(
-Dallow-noblas=$(usex !lapack true false)
-Dblas=$(usev lapack cblas)
-Dlapack=$(usev lapack lapack)
# TODO: cpu-* options
)
}
python_test() {
local EPYTEST_DESELECT=(
# Very disk-and-memory-hungry
numpy/lib/tests/test_io.py::TestSaveTxt::test_large_zip
numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_fid
numpy/lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
# Precision problems
numpy/_core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
# Runs the whole test suite recursively, that's just crazy
numpy/core/tests/test_mem_policy.py::test_new_policy
numpy/typing/tests/test_typing.py
# Uses huge amount of memory
numpy/core/tests/test_mem_overlap.py
'numpy/core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
)
if [[ $(uname -m) == armv8l ]]; then
# Degenerate case of arm32 chroot on arm64, bug #774108
EPYTEST_DESELECT+=(
numpy/core/tests/test_cpu_features.py::Test_ARM_Features::test_features
)
fi
case ${EPYTHON} in
python3.13)
EPYTEST_DESELECT+=(
numpy/_core/tests/test_nditer.py::test_iter_refcount
numpy/_core/tests/test_limited_api.py::test_limited_api
numpy/f2py/tests/test_f2py2e.py::test_gh22819_cli
)
;&
python3.12)
EPYTEST_DESELECT+=(
# flaky
numpy/f2py/tests/test_crackfortran.py
numpy/f2py/tests/test_data.py::TestData::test_crackedlines
numpy/f2py/tests/test_data.py::TestDataF77::test_crackedlines
numpy/f2py/tests/test_f2py2e.py::test_gen_pyf
)
;;
esac
if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
# depends on importing numpy.random from system namespace
EPYTEST_DESELECT+=(
'numpy/random/tests/test_extending.py::test_cython'
)
fi
if has_version ">=dev-python/setuptools-74[${PYTHON_USEDEP}]"; then
# msvccompiler removal
EPYTEST_DESELECT+=(
numpy/tests/test_public_api.py::test_all_modules_are_expected_2
numpy/tests/test_public_api.py::test_api_importable
)
EPYTEST_IGNORE+=(
numpy/distutils/tests/test_mingw32ccompiler.py
numpy/distutils/tests/test_system_info.py
)
fi
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
epytest
}
python_install_all() {
local DOCS=( LICENSE.txt README.md THANKS.txt )
distutils-r1_python_install_all
}
|