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 a new decorator for embarrassingly parallel computations to be collapsed into a single node in the high-level dask graph.
This is basically a curried decorator version of
dask_awkward.map_partitions
. Thus, this decorator comes with the same caveats asdask_awkward.map_partitions
regarding the mapped function:In addition, the decorator accepts two more arguments to ease the pain of writing
if ak.backend(array) == "typetracer": ...
conditions. The arguments areneeds
andout_like
.needs
takes a dictionary that maps arguments of the function signature (which are awkward arrays) to an utterable of slices that should be touched respectively.out_like
skips the function execution during typetracing pass and "mocks" the output array as whateverout_like
is.An example is given with this untraceable function (it's untraceable because of the
numpy
conversion):Here,
muons.pt
will be forcefully touched during typetracing and the output is mocked asak.Array([0.0])
.In general, these two arguments are not needed as typetracing should work in most cases. Only in cases where it doesn't they might come in handy.