Add __getstate__ and __setstate__ methods to allow pickling. Addresses #19 #20
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.
As discussed in #19, the dask arrays currently returned by
ND2file.to_dask()
cannot be pickled, which limits the use of these returned dask arrays.The reason why the pickling fails is due to the cythonized
_rdr
. This PR adds a__getstate__
method that removes_rdr
from the items to be pickled and a__setstate__
method that re-creates a_rdr
from the path.I can't build the python package as I don't have the C code for the Nikon SDK. So far I tested this by monkey-patching a pip-installed nd2 package with these two methods.
I am not sure whether the way I hanlde the
.closed
attribute is correct.