-
-
Notifications
You must be signed in to change notification settings - Fork 7.9k
Fix PyPy wheels and tests #20848
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
Fix PyPy wheels and tests #20848
Conversation
Unfortunately that is to be expected. Test suites are typically 2x slower on PyPy since the JIT does not really kick in on small code samples, and the base interpreter is about 2x slower than CPython |
Thanks! |
This now works around the last failures; if we want to enable PyPy testing (maybe scheduled instead of on every build?), we can. |
PyPy does not correctly define `PyErr_SetFromWindowsErr`: https://foss.heptapod.net/pypy/pypy/-/issues/3533
These tests look at reference counts of objects, which are meaningless for PyPy (and also Jython).
PyPy adds an additional frame for `functools.wraps`, with `_functools` as the name, which causes the code to decide we're no longer in Matplotlib code too early, and not find `print_figure`. This causes warnings about unexpected arguments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
+/- comment on docstrings
In CPython, `inspect.getdoc` returns some default string for `__init__`, but on PyPy, it returns None, when using `-OO`. https://foss.heptapod.net/pypy/pypy/-/issues/3534
It does not support calls to Tkinter from different threads: https://foss.heptapod.net/pypy/pypy/-/issues/1929
Some of these worked (by fluke?) in CPython, but didn't work in PyPy. The NumPy function ensures GC is run enough times on PyPy to be really cleared.
This is necessary to get the latest PyPy, which implements `METH_FASTCALL`.
PR Summary
Test build of wheels is here: https://github.com/QuLogic/matplotlib/actions/runs/1137857541
Fixes #20637.
This also fixes all tests except for the
Animation
cleanup ones, which may be a bug in PyPy.Should we enable testing on PyPy in CI? Note, it is quite a bit slower for me, but I don't know how long it will take on CI.
Fixes #19160.
PR Checklist
pytest
passes).flake8
on changed files to check).flake8-docstrings
and runflake8 --docstring-convention=all
).doc/users/next_whats_new/
(follow instructions in README.rst there).doc/api/next_api_changes/
(follow instructions in README.rst there).