You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
While I feel like this is okay and it's actually an improvement, I'm wondering why parsing test_empty_indexing in the linked PR fails. That test function doesn't seem all that complicated and I'm a little worried there's an underlying issue that we might be working around here, especially since there's no test resembling the failure in NumPy.
That test function doesn't seem all that complicated and I'm a little worried there's an underlying issue that we might be working around here, especially since there's no test resembling the failure in NumPy.
The NumPy PR adds a new deprecation warning when accessing the chararray attribute of np.char. The AST parsing does the same getattr and triggers the new deprecation warning, which is treated as an error by NumPy's pytest configuration. This error then gets caught by the try/except in the thread-unsafe detection code and re-raised as a warning. But because NumPy's test suite treats warnings as errors, the warning is treated like an exception and this crashes the test suite.
My fix is to temporarily reset the warning context state while we're doing thread-unsafe detection. Not sure if there's much else we can do?
Hmm, it's a getattr in our own code that triggers this, not in ast.parse or inspect.getsource. We could wrap just the call to visitor.visit in the context manager, but I guess we shouldn't be handling any warnings as errors in the error detection code so let's get this in like this. Maybe we could even move the context manager up a level or two in a follow-up.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.
This fixes an issue seen in a NumPy PR: numpy/numpy#30605
See e.g. this CI run: https://github.com/numpy/numpy/actions/runs/20823926701/job/59819928182?pr=30605#step:9:185
I spent some time trying to write a test but this is sufficiently complicated that I was unable to get it to work using the pytest testing helpers.
I manually verified that this fixes thread-unsafe detection in NumPy but still preserves the warning in the final output.
@lysnikolaou do you think this is OK, or would you do it in a different way?
We'll need a release out to unblock that NumPy PR.