Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Latest scipy (1.15) will make pytest tests fail #618

Closed
bmaranville opened this issue Jan 3, 2025 · 4 comments · Fixed by #621
Closed

Latest scipy (1.15) will make pytest tests fail #618

bmaranville opened this issue Jan 3, 2025 · 4 comments · Fixed by #621

Comments

@bmaranville
Copy link
Contributor

There is a conflict between pytest (specifically, with the assert-rewrites enabled, which is the default) and the scipy version released today (v1.15).

The problem can be avoided by running pytest with --assert=plain argument.

Running pytest on sasmodels with that version of scipy gives spurious errors:

========================================================== test session starts ===========================================================
platform darwin -- Python 3.11.10, pytest-8.3.4, pluggy-1.5.0 -- /Users/bbm/mambaforge/envs/sasview/bin/python3.11
cachedir: .pytest_cache
PySide6 6.4.3 -- Qt runtime 6.4.3 -- Qt compiled 6.4.3
rootdir: /Users/bbm/dev/sasmodels
configfile: pytest.ini
testpaths: sasmodels
plugins: qt-4.4.0, mock-3.14.0, anyio-4.6.2.post1
collected 111 items / 2 errors                                                                                                           

================================================================= ERRORS =================================================================
_______________________________________________ ERROR collecting sasmodels/bumps_model.py ________________________________________________
sasmodels/bumps_model.py:38: in <module>
    from bumps.parameter import Parameter as BumpsParameter, Reference # type: ignore
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../bumps/bumps/parameter.py:33: in <module>
    from . import bounds as mbounds
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../bumps/bumps/bounds.py:65: in <module>
    from scipy.stats import norm as normal_distribution
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/stats/__init__.py:653: in <module>
    from ._mgc import multiscale_graphcorr
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/stats/_mgc.py:7: in <module>
    from scipy.ndimage import _measurements
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/ndimage/__init__.py:156: in <module>
    from ._support_alternative_backends import *
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/ndimage/_support_alternative_backends.py:65: in <module>
    delegator = getattr(_delegators, func_name + "_signature")
E   AttributeError: module 'scipy.ndimage._delegators' has no attribute '@py_builtins_signature'
_______________________________________________ ERROR collecting sasmodels/bumps_model.py ________________________________________________
sasmodels/bumps_model.py:38: in <module>
    from bumps.parameter import Parameter as BumpsParameter, Reference # type: ignore
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../bumps/bumps/parameter.py:33: in <module>
    from . import bounds as mbounds
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../bumps/bumps/bounds.py:65: in <module>
    from scipy.stats import norm as normal_distribution
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/stats/__init__.py:653: in <module>
    from ._mgc import multiscale_graphcorr
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/stats/_mgc.py:7: in <module>
    from scipy.ndimage import _measurements
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/ndimage/__init__.py:156: in <module>
    from ._support_alternative_backends import *
<frozen importlib._bootstrap>:1176: in _find_and_load
    ???
<frozen importlib._bootstrap>:1147: in _find_and_load_unlocked
    ???
<frozen importlib._bootstrap>:690: in _load_unlocked
    ???
../../mambaforge/envs/sasview/lib/python3.11/site-packages/_pytest/assertion/rewrite.py:184: in exec_module
    exec(co, module.__dict__)
../../mambaforge/envs/sasview/lib/python3.11/site-packages/scipy/ndimage/_support_alternative_backends.py:65: in <module>
    delegator = getattr(_delegators, func_name + "_signature")
E   AttributeError: module 'scipy.ndimage._delegators' has no attribute '@py_builtins_signature'
======================================================== short test summary info =========================================================
ERROR sasmodels/bumps_model.py - AttributeError: module 'scipy.ndimage._delegators' has no attribute '@py_builtins_signature'
ERROR sasmodels/bumps_model.py - AttributeError: module 'scipy.ndimage._delegators' has no attribute '@py_builtins_signature'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=========================================================== 2 errors in 3.26s ============================================================
@bmaranville
Copy link
Contributor Author

@bmaranville
Copy link
Contributor Author

It looks like setting python_files = *.py in pytest.ini causes it to run pytest on every python source file it finds anywhere, including in dependencies. A more targeted value is probably appropriate, like doc/**/*.py example/**/*.py sasmodels/**/*.py

@jamescrake-merani
Copy link

This seems to be causing the CI tests to fail as well.

@pkienzle
Copy link
Contributor

I would rather preserve assertion rewriting. It turns this:

    def test_assert_rewrite():
        a, b = 1, 2
>       assert a == b
E       AssertionError

into:

    def test_assert_rewrite():
        a, b = 1, 2
>       assert a == b
E       assert 1 == 2

I'll try @bmaranville's targeted suggestion.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants