feat: add support for custom picklers #2682
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.
This PR adds support for customisation of the pickling
__reduce__
implementation by third-party libraries. The intention is to provide a mechanism fordask-awkward
to intercept serialisation in a form-preserving manner c.f. dask-contrib/dask-awkward#344.The problem in dask-contrib/dask-awkward#344 is that whilst regular users of Awkward Array are likely not that concerned about the form of an array, Dask requires guarantees that the form does not change during transfer between workers. As such, we need an environment-sensitive serialisation mechanism.
The simplest/decoupled way of doing this is to let dask-awkward handle the serialisation, rather than internally making Awkward aware of
dask-awkward
directly.With this PR it is possible to define an
awkward.pickle.reduce
entrypoint that exposes a__reduce_ex__
implementation, e.g. with hatchling:where