conda-forge / scipy-feedstock

A conda-smithy repository for scipy.
BSD 3-Clause "New" or "Revised" License
6 stars 36 forks source link

Clean-up skips, fails & hangs #196

Closed h-vetinari closed 2 years ago

h-vetinari commented 2 years ago

Follow up to #195 & #194.

conda-forge-linter commented 2 years ago

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

h-vetinari commented 2 years ago

I think the most urgent at the moment is fixing pypy on windows. That contains by far the most failures (which aren't QEMU-related as on PPC). CC @mattip

Regarding PPC, I'm thinking if switching to cos7 (hopefully getting a less buggy QEMU) would make sense...

h-vetinari commented 2 years ago

Regarding PPC, I'm thinking if switching to cos7 (hopefully getting a less buggy QEMU) would make sense...

I wasn't thinking straight, PPC is on cos7 already. Also, QEMU isn't coming through the OS, but through the docker image...

@isuruf Before I upset devs by raising an issue on the wrong repo - if I wanted to raise an issue about the PPC failures here, would https://github.com/multiarch/qemu-user-static be the right place to raise it?

h-vetinari commented 2 years ago

Here are the more detailed errors for the two failures on unix+pypy:

=================================== FAILURES ===================================
________________________ TestCdist.test_cdist_refcount _________________________
[gw2] darwin -- Python 3.7.12 $PREFIX/bin/python
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/site-packages/scipy/spatial/tests/test_distance.py:673: in test_cdist_refcount
    assert all(weak_ref() is None for weak_ref in weak_refs)
E   assert False
E    +  where False = all(<generator object TestCdist.test_cdist_refcount.<locals>.<genexpr> at 0x00007fd5d9781260>)
        kwargs     = {}
        metric     = 'braycurtis'
        self       = <scipy.spatial.tests.test_distance.TestCdist object at 0x00007fd5f8541bb0>
        sup        = <numpy.testing._private.utils.suppress_warnings object at 0x00007fd5f8541c90>
        weak_refs  = [<weakref at 0x00007fd5d3e89360; dead>, <weakref at 0x00007fd5d3e89380; dead>, <weakref at 0x00007fd5d3e893a0; dead>]
_____________________ TestBeta.test_boost_eval_issue_14606 _____________________
[gw1] darwin -- Python 3.7.12 $PREFIX/bin/python
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/site-packages/scipy/stats/tests/test_distributions.py:2904: in test_boost_eval_issue_14606
    stats.beta.ppf(q, a, b)
E   Failed: DID NOT WARN. No warnings of type (<class 'RuntimeWarning'>,) was emitted. The list of emitted warnings is: [UserWarning('Error in function boost::math::tgamma<d>(d,d): Series evaluation exceeded %1% iterations, giving up now.')].
        a          = 100000000000.0
        b          = 10000000000000.0
        q          = 0.995
        self       = <scipy.stats.tests.test_distributions.TestBeta object at 0x00007f88f4c9f0c0>

Test sources:

h-vetinari commented 2 years ago

Here's the output of the one test failure on aarch+cpython:

=================================== FAILURES ===================================
_________________________ TestF77Mismatch.test_lapack __________________________
[gw1] linux -- Python 3.9.7 $PREFIX/bin/python
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/lib/python3.9/site-packages/scipy/linalg/tests/test_build.py:50: in test_lapack
    deps = f.grep_dependencies(flapack.__file__,
        f          = <scipy.linalg.tests.test_build.FindDependenciesLdd object at 0x56782eb100>
        self       = <scipy.linalg.tests.test_build.TestF77Mismatch object at 0x56782eb760>
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/lib/python3.9/site-packages/scipy/linalg/tests/test_build.py:32: in grep_dependencies
    stdout = self.get_dependencies(file)
        deps       = ['libg2c', 'libgfortran']
        file       = '/home/conda/feedstock_root/build_artifacts/scipy_1636463706185/_test_env_placehold_placehold_placehold_placehold_plac...ehold_placehold_placehold_placehold_/lib/python3.9/site-packages/scipy/linalg/_flapack.cpython-39-aarch64-linux-gnu.so'
        self       = <scipy.linalg.tests.test_build.FindDependenciesLdd object at 0x56782eb100>
../_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/lib/python3.9/site-packages/scipy/linalg/tests/test_build.py:27: in get_dependencies
    raise RuntimeError("Failed to check dependencies for %s" % file)
E   RuntimeError: Failed to check dependencies for $PREFIX/lib/python3.9/site-packages/scipy/linalg/_flapack.cpython-39-aarch64-linux-gnu.so
        file       = '/home/conda/feedstock_root/build_artifacts/scipy_1636463706185/_test_env_placehold_placehold_placehold_placehold_plac...ehold_placehold_placehold_placehold_/lib/python3.9/site-packages/scipy/linalg/_flapack.cpython-39-aarch64-linux-gnu.so'
        p          = <Popen: returncode: 1 args: ['ldd', '/home/conda/feedstock_root/build_artifa...>
        self       = <scipy.linalg.tests.test_build.FindDependenciesLdd object at 0x56782eb100>
        stderr     = b''
        stdout     = b'\tnot a dynamic executable\n'

PyPy on aarch got killed for some reason...

isuruf commented 2 years ago

Before I upset devs by raising an issue on the wrong repo - if I wanted to raise an issue about the PPC failures here, would https://github.com/multiarch/qemu-user-static be the right place to raise it?

No, that's where the static binaries are compiled. Btw, I'm not sure if it's qemu fault or an openblas fault with qemu or something else.

h-vetinari commented 2 years ago

For win+pypy, the errors are pretty bad - i.e. the function calls themselves succeed but the results are numerical garbage; as an example:

E   AssertionError: 
E   Arrays are not almost equal to 6 decimals
E   
E   Mismatched elements: 4 / 4 (100%)
E   Max absolute difference: 1.
E   Max relative difference: 1.
E    x: array([2., 0., 2., 0.])
E    y: array([1., 1., 1., 1.])

Notably, the large majority of the 369 errors happen in the stats module:

``` FAILED integrate/tests/test_quadpack.py::TestNQuad::test_fixed_limits FAILED integrate/tests/test_quadpack.py::TestNQuad::test_matching_tplquad FAILED integrate/tests/test_quadpack.py::TestNQuad::test_variable_limits FAILED integrate/tests/test_quadpack.py::TestQuad::test_triple_integral - Ass... FAILED interpolate/tests/test_interpolate.py::TestNdPPoly::test_integrate_2d FAILED optimize/tests/test__shgo.py::TestShgoArguments::test_7_3_minkwargs - ... FAILED optimize/tests/test_minpack.py::TestFSolve::test_concurrent_no_gradient FAILED optimize/tests/test_minpack.py::TestFSolve::test_concurrent_with_gradient FAILED optimize/tests/test_minpack.py::TestFSolve::test_pressure_network_no_gradient FAILED optimize/tests/test_minpack.py::TestFSolve::test_pressure_network_with_gradient FAILED optimize/tests/test_minpack.py::TestFSolve::test_reentrant_Dfunc - Ass... FAILED optimize/tests/test_minpack.py::TestFSolve::test_reentrant_func - Asse... FAILED optimize/tests/test_minpack.py::TestRootHybr::test_pressure_network_no_gradient FAILED optimize/tests/test_minpack.py::TestRootHybr::test_pressure_network_with_gradient FAILED optimize/tests/test_minpack.py::TestRootHybr::test_pressure_network_with_gradient_combined FAILED optimize/tests/test_optimize.py::TestOptimizeSimple::test_minimize_callback_copies_array[tnc] FAILED optimize/tests/test_optimize.py::TestOptimizeSimple::test_minimize_callback_copies_array[trust-krylov] FAILED optimize/tests/test_optimize.py::TestOptimizeSimple::test_respect_maxiter[trust-krylov] FAILED optimize/tests/test_optimize.py::test_x_overwritten_user_function - As... FAILED optimize/tests/test_tnc.py::TestTnc::test_minimize_tnc38 - AssertionEr... FAILED optimize/tests/test_tnc.py::TestTnc::test_tnc38 - AssertionError: FAILED optimize/tests/test_trustregion.py::TestTrustRegionSolvers::test_solver_concordance FAILED optimize/tests/test_trustregion_krylov.py::TestKrylovQuadraticSubproblem::test_for_interior_convergence FAILED optimize/tests/test_trustregion_krylov.py::TestKrylovQuadraticSubproblem::test_for_the_easy_case FAILED optimize/tests/test_trustregion_krylov.py::TestKrylovQuadraticSubproblem::test_for_the_hard_case FAILED optimize/tests/test_trustregion_krylov.py::TestKrylovQuadraticSubproblem::test_for_very_close_to_zero FAILED optimize/tests/test_zeros.py::TestBasic::test_brenth - AssertionError: FAILED optimize/tests/test_zeros.py::TestBasic::test_brentq - AssertionError: FAILED spatial/tests/test_distance.py::TestCdist::test_cdist_refcount - asser... FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-alpha-arg0] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-arcsine-arg2] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-argus-arg3] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-betaprime-arg5] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-cauchy-arg9] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-cosine-arg12] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-distname107-arg107] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-exponnorm-arg18] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-exponpow-arg19] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-exponweib-arg20] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-fatiguelife-arg22] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-fisk-arg23] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-foldcauchy-arg24] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-foldnorm-arg25] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gamma-arg26] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gausshyper-arg27] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-genexpon-arg28] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-genextreme-arg29] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-genhalflogistic-arg32] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-genhyperbolic-arg33] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-geninvgauss-arg34] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gennorm-arg36] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-genpareto-arg38] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gilbrat-arg39] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gompertz-arg40] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gumbel_l-arg41] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-gumbel_r-arg42] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-halfgennorm-arg37] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-hypsecant-arg46] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-invgauss-arg48] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-invweibull-arg49] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-johnsonsb-arg50] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-johnsonsu-arg51] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-kappa3-arg56] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-ksone-arg57] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-kstwo-arg58] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-kstwobign-arg59] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-laplace-arg60] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-laplace_asymmetric-arg61] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-logistic-arg65] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-lognorm-arg67] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-maxwell-arg70] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-norm-arg77] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-norminvgauss-arg78] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-powerlognorm-arg82] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-powernorm-arg83] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-rayleigh-arg84] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-recipinvgauss-arg86] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-semicircular-arg89] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-skewnorm-arg91] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-t-arg93] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-trapezoid-arg94] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-triang-arg95] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-tukeylambda-arg99] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-vonmises-arg101] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-vonmises_line-arg102] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-wald-arg103] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-weibull_max-arg104] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-weibull_min-arg105] FAILED stats/tests/test_continuous_basic.py::test_cont_basic[500-200-wrapcauchy-arg106] FAILED stats/tests/test_continuous_basic.py::test_methods_with_lists[levy_stable-args64-logpdf] FAILED stats/tests/test_continuous_basic.py::test_methods_with_lists[studentized_range-args93-isf] FAILED stats/tests/test_continuous_basic.py::test_methods_with_lists[studentized_range-args93-pdf] FAILED stats/tests/test_continuous_basic.py::test_moments[alpha-arg0-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[anglit-arg1-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[arcsine-arg2-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[argus-arg3-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[beta-arg4-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[betaprime-arg5-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[bradford-arg6-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[burr-arg7-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[burr12-arg8-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[cauchy-arg9-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[chi-arg10-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[chi2-arg11-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[cosine-arg12-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[crystalball-arg13-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[dgamma-arg14-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[distname109-arg109-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[dweibull-arg15-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[erlang-arg16-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[expon-arg17-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[exponnorm-arg18-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[exponpow-arg19-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[exponweib-arg20-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[f-arg21-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[fatiguelife-arg22-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[fisk-arg23-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[foldcauchy-arg24-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[foldnorm-arg25-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gamma-arg26-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gausshyper-arg27-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[genexpon-arg28-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[genextreme-arg29-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gengamma-arg30-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gengamma-arg31-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[genhalflogistic-arg32-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[genhyperbolic-arg33-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[geninvgauss-arg34-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[genlogistic-arg35-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gennorm-arg36-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[genpareto-arg38-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gilbrat-arg39-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gompertz-arg40-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gumbel_l-arg41-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[gumbel_r-arg42-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[halfcauchy-arg43-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[halfgennorm-arg37-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[halflogistic-arg44-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[halfnorm-arg45-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[hypsecant-arg46-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[invgamma-arg47-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[invgauss-arg48-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[invweibull-arg49-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[johnsonsb-arg50-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[johnsonsu-arg51-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kappa3-arg56-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kappa4-arg52-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kappa4-arg53-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kappa4-arg54-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kappa4-arg55-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[ksone-arg57-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kstwo-arg58-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[kstwobign-arg59-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[laplace-arg60-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[laplace_asymmetric-arg61-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[levy-arg62-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[levy_l-arg63-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[loggamma-arg64-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[logistic-arg65-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[loglaplace-arg66-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[lognorm-arg67-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[loguniform-arg68-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[lomax-arg69-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[maxwell-arg70-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[mielke-arg71-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[moyal-arg72-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[nakagami-arg73-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[ncf-arg74-True-False-False] FAILED stats/tests/test_continuous_basic.py::test_moments[nct-arg76-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[ncx2-arg77-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[norm-arg78-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[norminvgauss-arg79-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[pareto-arg80-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[pearson3-arg81-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[powerlaw-arg82-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[powerlognorm-arg83-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[powernorm-arg84-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[rayleigh-arg85-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[rdist-arg86-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[recipinvgauss-arg87-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[reciprocal-arg88-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[rice-arg89-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[semicircular-arg90-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[skewcauchy-arg91-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[skewnorm-arg92-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[t-arg94-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[trapezoid-arg95-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[triang-arg96-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[truncexpon-arg97-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[truncnorm-arg98-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[truncnorm-arg99-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[tukeylambda-arg100-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[uniform-arg101-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[vonmises_line-arg104-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[wald-arg105-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[weibull_max-arg106-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[weibull_min-arg107-True-True-False] FAILED stats/tests/test_continuous_basic.py::test_moments[wrapcauchy-arg108-True-True-False] FAILED stats/tests/test_distributions.py::TestBeta::test_boost_eval_issue_14606 FAILED stats/tests/test_distributions.py::TestExpect::test_beta - AssertionEr... FAILED stats/tests/test_distributions.py::TestExpect::test_norm - AssertionEr... FAILED stats/tests/test_distributions.py::TestKSTwo::test_isf_of_sf - Asserti... FAILED stats/tests/test_distributions.py::TestKSTwo::test_isf_of_sf_sqrtn - A... FAILED stats/tests/test_distributions.py::TestKSTwo::test_ppf - AssertionError: FAILED stats/tests/test_distributions.py::TestKSTwo::test_ppf_of_cdf - Assert... FAILED stats/tests/test_distributions.py::TestKSTwo::test_ppf_of_cdf_sqrtn - ... FAILED stats/tests/test_distributions.py::TestLevyStable::test_pdf_nolan_samples FAILED stats/tests/test_distributions.py::TestNormInvGauss::test_ppf - Assert... FAILED stats/tests/test_distributions.py::TestPearson3::test_negative_cdf_bug_11186 FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result0] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result2] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result4] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result6] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result7] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result8] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result11] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result18] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result19] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result20] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result21] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result22] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result23] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result24] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result25] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result26] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result27] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result28] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result29] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result30] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result31] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result32] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result33] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result34] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result35] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result36] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result37] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result38] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result39] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result40] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result41] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result42] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result43] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result44] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result45] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result46] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result47] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result48] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result49] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result50] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result51] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result52] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result53] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result54] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result55] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result56] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result57] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result58] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result59] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result60] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result61] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result62] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result63] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result64] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result65] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result66] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result67] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result68] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result69] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result70] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_mp[case_result71] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_r[r_case_result0] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_r[r_case_result1] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_cdf_against_tables FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_moment_against_mp[case_result1] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_moment_against_mp[case_result2] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_moment_against_mp[case_result3] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_moment_against_mp[case_result4] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result0] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result1] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result2] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result3] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result4] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result5] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result6] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result7] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result9] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result11] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result13] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result16] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result18] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result19] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result20] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result21] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result22] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result23] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result24] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result25] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result26] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result27] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result28] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result29] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result30] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result31] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result32] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result33] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result34] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result35] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result36] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result37] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result38] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result39] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result40] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result41] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result42] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result43] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result44] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result45] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result46] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result47] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result48] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result49] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result50] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result51] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result52] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result53] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result54] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result55] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result56] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result57] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result58] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result59] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result60] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result61] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result62] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result63] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result64] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result65] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result66] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result67] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result68] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result69] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result70] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_against_mp[case_result71] FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_pdf_integration FAILED stats/tests/test_distributions.py::TestStudentizedRange::test_ppf_against_tables FAILED stats/tests/test_distributions.py::test_crystalball_entropy - Assertio... FAILED stats/tests/test_distributions.py::test_ncx2_tails_ticket_955 - Assert... FAILED stats/tests/test_fit.py::test_cont_fit[MM-wrapcauchy-arg106] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_interval_exact_k0[less-0.05631351-0.2588656] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_interval_exact_k0[two-sided-0.07604122-0.3084971] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_interval_exact_k_is_n[greater-9.536743e-07-0.7411344] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_interval_exact_k_is_n[two-sided-9.536743e-07-0.6915029] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_intervals1[greater-0.9004695898947-0.1366613252458672-1.0] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_intervals1[less-0.148831050443-0.0-0.2772002496709138] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_intervals1[two-sided-0.2983720970096-0.1266555521019559-0.2918426890886281] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_intervals2[greater-0.9987146-0.008860761-1.0] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_intervals2[less-0.005656361-0.0-0.1872093] FAILED stats/tests/test_morestats.py::TestBinomTest::test_confidence_intervals2[two-sided-0.01191714-0.006872485-0.202706269] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[argus-shapes3] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[betaprime-shapes5] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[exponnorm-shapes18] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[foldcauchy-shapes24] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[foldnorm-shapes25] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[genexpon-shapes28] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[invgauss-shapes48] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[recipinvgauss-shapes87] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[vonmises-shapes102] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[vonmises_line-shapes103] FAILED stats/tests/test_stats.py::TestNumericalInverseHermite::test_basic[wald-shapes104] ```
h-vetinari commented 2 years ago

Btw, I'm not sure if it's qemu fault or an openblas fault with qemu or something else.

Just to be sure I understand correctly - you said the errors don't happen on native hardware (which matches that the tests were passing on Travis). What else other than the emulation could be the cause then?

Or do you mean it's an interaction issue between QEMU & openblas (or similar)?

rgommers commented 2 years ago

Here's the output of the one test failure on aarch+cpython:

Thanks, looks like that needs skipping. This page may have a relevant explanation: " ldd reports incorrectly "not a dynamic executable" when the executable's loader is not present". We're cross-compiling here and running the tests under QEMU, so invoking ldd in a subprocess isn't going to give the right result I guess.

isuruf commented 2 years ago

Or do you mean it's an interaction issue between QEMU & openblas (or similar)?

Probably. Can you try netlib instead of openblas?

h-vetinari commented 2 years ago

So, I had already cut down the test suite on PPC to a pitiful three smallish modules (as most remaining errors had been coming from fft),

================== 3 failed, 155 passed, 4 skipped in 36.08s ===================

But even with netlib, the same failures (as with openblas) remain. And it's not something minor like bad accuracy; at least with the error below, it's (1st & 2nd) columns getting switched

E   AssertionError: 
E   Not equal to tolerance rtol=1e-07, atol=1e-10
E   
E   Mismatched elements: 6 / 20 (30%)
E   Max absolute difference: 7.
E   Max relative difference: 1.5
E    x: array([[  2.,   5., 138.,   2.],
E          [  3.,   4., 219.,   2.],
E          [  0.,   7., 255.,   3.],...
E    y: array([[  5.,   2., 138.,   2.],
E          [  4.,   3., 219.,   2.],
E          [  7.,   0., 255.,   3.],...
rgommers commented 2 years ago

Here's the output of the one test failure on aarch+cpython:

Thanks, looks like that needs skipping.

Removed it completely instead, it is no longer needed: https://github.com/scipy/scipy/pull/15010

h-vetinari commented 2 years ago

Can you try netlib instead of openblas?

This didn't bring any change either, unfortunately - even on netlib, the errors remain. And switched columns (see above) is pretty substantial... Assuming there's no other component left (unless it's a shared code path between netlib & openblas), we should probably raise an issue with QEMU?

h-vetinari commented 2 years ago

@mattip, would you have some cycles to dig into the pypy errors here? Is there a way I could help with that?

Unix:

FAILED spatial/tests/test_distance.py::TestCdist::test_cdist_refcount - asser...
FAILED stats/tests/test_distributions.py::TestBeta::test_boost_eval_issue_14606
= 2 failed, 32821 passed, 2093 skipped, 105 xfailed, 10 xpassed, 41 warnings in 1638.50s (0:27:18) =

Windows:

= 117 failed, 32228 passed, 2571 skipped, 104 xfailed, 11 xpassed, 142 warnings in 3485.47s (0:58:05) =

Sometimes the windows pipeline actually times out completely, being killed in a test where there might be some self-referential deadlock(?) in combination with a list comprehension:

  File "C:\bld\scipy_1637807031363\_test_env\lib\site-packages\scipy\integrate\quadpack.py", line 463, in _quad
    return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
  File "C:\bld\scipy_1637807031363\_test_env\lib_pypy\_functools.py", line 80, in __call__
    return self._func(*(self._args + fargs), **fkeywords)
  File "C:\bld\scipy_1637807031363\_test_env\lib\site-packages\scipy\integrate\quadpack.py", line 874, in integrate
    opt['points'] = [x for x in opt['points'] if low <= x <= high]
  File "C:\bld\scipy_1637807031363\_test_env\lib\site-packages\scipy\integrate\quadpack.py", line 874, in <listcomp>
    opt['points'] = [x for x in opt['points'] if low <= x <= high]

+++++++++++++++++++++++++++++++++++ Timeout ++++++++++++++++++++++++++++++++++++
integrate/tests/test_quadpack.py::TestNQuad::test_fixed_limits 
mattip commented 2 years ago

FAILED stats/tests/test_distributions.py::TestBeta::test_boost_eval_issue_14606

That test is for converting a boostpython error into a warning. Apparently PyPy does not hit the code path to create the boost-python warning in the first place. I would suggest here too skipping the test on PyPy at least until SciPy expressly supports PyPy.

with pytest.warns(RuntimeWarning):
    stats.beta.ppf(q, a, b)
mattip commented 2 years ago

I can try to figure out what is going on with windows + pypy + scipy.

mattip commented 2 years ago

Weird. The TestNQuad::test_fixed_limits hangs on windows + pypy but takes about 1s on windows + cpython

h-vetinari commented 2 years ago

Weird. The TestNQuad::test_fixed_limits hangs on windows + pypy but takes about 1s on windows + cpython

Have a look at the CI on master, there you get a detailed traceback after it gets killed in the timeout.

I don't know if this occurrence is flaky, it's also possible that the addition of -nauto here prevents it from showing up in the log.

mattip commented 2 years ago

I wonder if the two failures are connected. One theory might be that for the same reason boost does not raise an error, the optimization test never converges/fails

mattip commented 2 years ago

Can we try disabling pythran on windows to see if that is better? Somehow this was all working for #180 with scipy 1.7.1

h-vetinari commented 2 years ago

Can we try disabling pythran on windows to see if that is better?

Thanks for the PR!

Somehow this was all working for #180 with scipy 1.7.1

Well, without the sys.exit-wrapper, we were potentially ignoring errors - checking the CI for #180 indeed shows that test_cdist_refcount was already failing then, but nothing else. Which seems to indicate that the other ~110 errors come from building with pythran support...

mattip commented 2 years ago

Here is a summary of the latest failures. All the pypy tests crashed when starting tests. Maybe worth restarting tests? I don't remember seeing that elsewhere

run failures
linux_64 pypy crashed when starting tests
linux_aarch64 cpython 3 failures [0]
linux_aarch64 pypy crashed when starting tests
linux_ppc64le cpython 622 failures
linux_ppc64le pypy crashed when starting tests
win_64 pypy crashed when starting tests
osx_64 pypy crashed when starting tests
[0] ``` FAILED linalg/tests/test_decomp_ldl.py::test_ldl_type_size_combinations - Fai... FAILED optimize/tests/test_lsq_linear.py::TestTRF::test_large_rank_deficient FAILED optimize/tests/test_lsq_linear.py::TestBVLS::test_large_rank_deficient ```
h-vetinari commented 2 years ago

Which seems to indicate that the other ~110 errors come from building with pythran support...

Welp, seems things have gotten worse when building without pythran now?!

= 247 failed, 32096 passed, 2571 skipped, 105 xfailed, 10 xpassed, 280 warnings in 3210.55s (0:53:30) =
mattip commented 2 years ago

I appealed for help to the scipy issue tracker, let's see if someone can come up with a theory as to what is going on.

h-vetinari commented 2 years ago

The pypy stuff will need some more investigation once the migrator comes around, but for now I've rolled the changes from here into #201.