File: python3

package info (click to toggle)
scipy 1.16.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 235,016 kB
  • sloc: cpp: 503,720; python: 345,298; ansic: 195,677; javascript: 89,566; fortran: 56,210; cs: 3,081; f90: 1,150; sh: 857; makefile: 791; pascal: 284; csh: 135; lisp: 134; xml: 56; perl: 51
file content (236 lines) | stat: -rwxr-xr-x 11,525 bytes parent folder | download | duplicates (2)
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
#!/bin/bash
set -efu

PYS=${PYS:-"$(py3versions -s 2>/dev/null)"}
TESTMODE=${TESTMODE:-full}
TESTPKG=${TESTPKG:-}
export HOME=$AUTOPKGTEST_TMP
export TMPDIR=$AUTOPKGTEST_TMP

SUBMODULE=scipy
if [ "x${TESTPKG}" != "x" ]; then
    SUBMODULE="scipy.${TESTPKG}";
fi

MODE=
#if [ "x${TESTMODE}" != "xfull" ]; then
#    MODE="-m full";
#fi

# By default use summary report of tests.
# Set to "-v" for verbose reporting
VERBOSE_TESTS=""

# some tests are expected to fail
# so list tests to skip in array variable SKIP_TEST_LIST
declare -a SKIP_TEST_LIST

# multi-Ellipsis indexing in sparse will be dropped in scipy 1.13
# see https://github.com/scipy/scipy/pull/18541
# it fails tests now so skip and reinstate later for scipy 1.13
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_multiple_ellipsis_slicing)

# some arches fail some tests with specific BLAS implementations
# Bug#1003880: skip test_hermitian_modes with blis on i386 (sparse.linalg._eigen.arpack)
arch=$(dpkg-architecture -qDEB_HOST_ARCH)
ma=$(dpkg-architecture -qDEB_HOST_MULTIARCH)
DEB_HOST_ARCH_BITS=$(dpkg-architecture -q DEB_HOST_ARCH_BITS)

if [ "$arch" = "arm64" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q blis ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_atol[cgs])
fi

if [ "$arch" = "i386" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q atlas ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_propack)
fi

if [ "$arch" = "i386" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q blis ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_hermitian_modes test_svd_linop \
	test_complex_nonsymmetric_modes test_standard_nonsymmetric_starting_vector test_general_nonsymmetric_starting_vector \
	test_complex test_simple_overdet_complex test_random_complex_exact test_random_complex_overdet \
	test_value_subsets test_bug_6139 test_atol[cgs] test_propack test_various_drivers_standard \
	test_trsyl test_gelsy test_hetrd test_hegst test_pftri \
	test_pptrs_pptri_pptrf_ppsv_ppcon[complex test_gees_trsen[complex64] test_gges_tgsen[complex64] \
	test_dtypes test_trcon test_size_0 test_splu test_matmat test_eigh test_two_generic_matrix_inputs \
	test_sylvester test_cython test_sy_he_tri test_gbcon test_gh23278)
fi

if [ "$arch" = "armhf" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q openblas ; then
    # test_large_rank_deficient in scipy/optimize/tests/test_lsq_linear.py times out or segfaults with openblas on armhf
    # and other TestTRF tests time out
    # test_disp in optimize/tests/test_linprog.py times out with openblas on armhf
    #
    # armhf with openblas is generally flakey. Use atlas or blis instead.
    #
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_large_rank_deficient TestTRF test_disp test_m_eq_n_sparse test_magic_square2 \
		    test_numerical_jac test_with_bounds test_bvp test_solver_selection \
		    test_pdist_calling_conventions test_pdist_dtype_equivalence test_striding \
		    test_array_smoothing test_cholesky test_Small test_failure_to_run_iterations \
		    test_cdist_dtype_equivalence test_cdist_out test_cdist_calling_conventions \
		    test_MikotaPair test_diagonal[100-4-3] test_maxit test_precond_inverse[case1] test_svds_parameter_k_which[LM-5] \
		    test_svd_random_state_2[random_state test_svd_random_state_3 test_svd_return_singular_vectors[shape1-True] \
		    test_random_exact test_random_complex_exact test_random_tall_left test_random_tall_right \
		    test_L1 test_L3 test_L4 test_L7 test_svd_linop test_ElasticRod \
		    test_examples test_orcsd_uncsd[float64] test_small_sigma_sparse[float32-shape1] test_small_sigma2[float] \
		    test_interpolation_misfit_1d test_cossin_separate test_orcsd_uncsd \
		    test_eigs_consistency[20-0.001] test_random_initial_float32 test_tpqrt_tpmqrt \
		    test_pdist_out test_lsqr_basic test_pascal test_atol_rtol test_sygst \
		    test_various_drivers_standard test_various_drivers_generalized test_broyden1 test_broyden2 \
		    test_gejsv_general test_BFGS_skip_update test_tolerance_float32 \
		    test_m_gt_n test_pteqr test_SR1_skip_update test_symmetric_starting_vector)
fi

if [ "$arch" = "armhf" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q atlas ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_aligned_mem)
fi

# segfaults in test_lsq_linear.py::TestBVLS
# see https://ci.debian.net/data/autopkgtest/testing/armhf/s/scipy/25114019/log.gz
if [ "$arch" = "armhf" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q blis ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_large_rank_deficient)
fi

if [ "$arch" = "armel" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_aligned_mem test_decomp test_brunnermunzel_normal_dist test_sparse_dense_divide)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_some_code_paths test_gh12218)
fi


# https://github.com/scipy/scipy/issues/17839#issuecomment-1399492309
if [ "$arch" = "armhf" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_woodbury test_complex_data test_scale_invariance \
		    test_extreme_domains test_polynomial_reproduction test_vector_data \
		    test_interpolation_misfit_2d test_smoothing_limit test_pickleable \
		    test_equivalent_to_rbf_interpolator test_rosenbrock_with_no_exception \
		    test_gh12218 test_random_state \
		    test_against_anderson_gumbel_r test_bootstrap_against_R test_bootstrap_against_itself_1samp)
fi

# some tests broken on i386, see https://github.com/scipy/scipy/issues/17839
if [ "$arch" = "i386" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_find_peaks_exact test_find_peaks_withnoise \
		    test_x0_equals_Mb[bicgstab] test_rv_sample test_location_scale[pdf \
		    test_examples[True-float64] test_pdf_nolan_samples test_cdf_nolan_samples \
		    ellint_rg_xy0_ipp-ellint_rg_xy0 test_hermitian test_random_state \
		    test_against_anderson_gumbel_r test_bootstrap_against_R test_bootstrap_against_itself_1samp \
		    test_svd_gesdd_nofegfault)
fi

# Bug#1017864 test_kolmogorov.py segfaults on i386 (including hurd)
if [ "$arch" = "i386" ] || [ "$arch" = "hurd-i386" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} TestSmirnovp)
fi

# integrate/_ivp/tests/test_ivp.py fail on mips64el
# see https://github.com/scipy/scipy/issues/16883
# https://github.com/scipy/scipy/issues/17839#issuecomment-1400636840
if [ "$arch" = "mips64el" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_first_step test_classes test_integrator test_double_integrator)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_nanminmax TestExpmFrechet)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_2x2_input test_nx2x2_input test_random_matrices_and_powers)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_nan_inputs[airye] test_nan_inputs[sph_harm])

    # mips64el fails test_cython (special test_extending) with numpy 1.26
    # but will pass with numpy 2 due to complex type changes
    # see https://github.com/scipy/scipy/issues/21393
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_cython)
fi

if [ "$arch" = "ppc64el" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_cossin test_cossin_separate testInitialization)
fi

if [ "$arch" = "ppc64el" ] || [ "$arch" = "arm64" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_svds_parameter_tol)
fi

if [ "$arch" = "ppc64el" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q atlas ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_bug_6139 test_svd_v0 test_svd_random_state test_svd_random_state_2)
fi

# avoid segfaults and other failures on riscv64
# run for default python only to avoid global timeout
if [ "$arch" = "riscv64" ]; then
    PYS=`py3versions -d 2>/dev/null`
    VERBOSE_TESTS="-v"
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_kmeans2_high_dim test_krandinit test_kmeans2_kpp_high_dim)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_banded_ode_solvers test_singular_term test_vode test_zvode test_odeint_banded_jacobian test_odeint_banded_jac)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_vector test_iterative_refinements_dense)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_sine_weighted_finite test_sine_weighted_infinite test_cosine_weighted_infinite)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_scalar test_integrate_ppoly test_compare_dense_and_sparse)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_maxiter_worsening[lgmres] test_milp_timeout_16545)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} TestLogM TestExp test_expm)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_random_matrices_and_powers test_2x2_input test_nx2x2_input)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_zoh test_foh test_transferfunction)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_zerospolesgain test_discrete_approx test_simo_tf test_multioutput)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_simo_tf test_multioutput TestC2dLti TestC2dInvariants)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_second_order test_integrator test_double_integrator)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_jordan_block test_array_like TestStep test_operators)
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_nan_inputs[airye] test_nan_inputs[sph_harm])
fi

if [ "$arch" = "riscv64" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q atlas ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_bug_6139 test_aligned_mem)
fi

if [ "$arch" = "s390x" ]; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_maxiter_worsening test_atol[bicg] test_distance_transform_cdt05)
fi

if [ "$arch" = "s390x" ] && update-alternatives --query libblas.so.3-$ma | sed -n "/^Value:/p" | grep -q atlas ; then
    SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_bug_6139 test_solver_select test_aligned_mem)
fi

# stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ncf-arg74] test fails with IntegrationWarning
# https://github.com/scipy/scipy/issues/14519
SKIP_TEST_LIST=(${SKIP_TEST_LIST[@]} test_cont_basic[500-200-ncf-arg74])

SKIP_TESTS=""
list_initialised=0
for t in ${SKIP_TEST_LIST[@]}; do
    if [ ${list_initialised} = 0 ]; then
	SKIP_TESTS=$t
	list_initialised=1
    else
	SKIP_TESTS="${SKIP_TESTS} or $t"
    fi
done
if [ "x${SKIP_TESTS}" != "x" ]; then
    SKIP_TESTS="not ( ${SKIP_TESTS} )"
fi
echo "skipping tests with SKIP_TEST_LIST=${SKIP_TEST_LIST[@]}"


# some datasets tests use network access
declare -a NET_TEST_LIST
NET_TEST_LIST=(${NET_TEST_LIST[@]} test_existence_all test_ascent test_face test_electrocardiogram)

NET_TESTS=""
list_initialised=0
for t in ${NET_TEST_LIST[@]}; do
    if [ ${list_initialised} = 0 ]; then
	NET_TESTS=$t
	list_initialised=1
    else
	NET_TESTS="${NET_TESTS} or $t"
    fi
done
NETMODE=${NETMODE:-OFF}
if [ "x${NETMODE}" = "xOFF" ]; then
    NET_TESTS="not ( ${NET_TESTS} )"
fi

echo "Controlling tests with  \"${NET_TESTS} and ${SKIP_TESTS}\""

cd $TMPDIR
for py in $PYS; do
    echo "=== Testing: $py $TESTPKG ==="

    # if we need to report a bug upstream, they will ask for this information
    echo "\$ $py -c \"import sys, scipy, numpy; print(scipy.__version__, numpy.__version__, sys.version_info); scipy.show_config()\""
    # (must be run away from source)
    (cd /; $py -c "import sys, scipy, numpy; print(scipy.__version__, numpy.__version__, sys.version_info); scipy.show_config()")

    $py -c "import ${SUBMODULE}; ${SUBMODULE}.test(extra_argv=['-k', '${NET_TESTS} and ${SKIP_TESTS}', '--durations=20', '${VERBOSE_TESTS}'])" 2>&1
    echo "=== Done: $py $TESTPKG ==="
done