Update numpy requirement from 1.19.3 to 1.20.3 #180
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There is an ABI compatibility issue on some platforms involving the interaction between the Cython-generated shared object files included in the OpenGL-accelerate 3.1.5 and numpy 1.19.3 PyPI packages which can cause a missing symbol error during import.
This causes friture to throw an exception On MacOS Big Sur and Windows during startup.
Fixes two reports of the issue here: #177
And (probably) this one without the logs also: #170.
(I see the same symptom when I try to install the downloadable fricture dmg file on Big Sur)
I don't have a full understanding of the underlying issue, or a full list of which platforms it affects, but I can confirm from my testing on Big Sur that updating the requirements to numpy 1.20.3 fixes the problem there.
Even without friture, the problem can be reproduced in a clean virtualenv by simply installing both pip packages and trying to import like this:
from OpenGL_accelerate.numpy_formathandler import NumpyHandler
It will fail due to this error:
And then if you silence that one, it runs into this error instead:
My guess is that they may have been compiled with different versions of Cython, where there was a change to the way it handles the pickling of classes (replaces
__reduce_cython__
with__reduce__
at runtime), but not sure how to confirm that since the pip packages only include the.so
files, not the intermediate.c
files.