BUG: fix scipy backend pickling after multiple opens#11339
Open
hansu650 wants to merge 1 commit into
Open
Conversation
Author
|
Thanks for the CI feedback. I'm going to close this for now because I don't have time to follow up on the Mypy failure properly. Sorry for the noise. |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #11323.
This fixes a scipy backend pickling regression when multiple datasets are opened
from file-like objects in the same process.
The scipy backend registers a pickle-visible wrapper class for file-like objects.
Re-registering that class on every open can make an earlier dataset refer to a
class object that no longer matches the registered pickle target. This change
registers the wrapper once and reuses it for later file-like opens.
The regression test opens two scipy-backed datasets from the same in-memory
NetCDF payload and verifies that the first dataset can still be pickled and
unpickled.
Validation:
python -m pytest xarray/tests/test_backends.py -k "scipy and pickle"python -m pytest xarray/tests/test_backends.py -k "scipy"python -m ruff check xarray/backends/scipy_.py xarray/tests/test_backends.pygit diff --checkAI assistance:
I used ChatGPT/Codex to help inspect the issue and plan a small local patch. I reviewed the final diff and test results myself and understand the submitted changes.