Since `a` is a `DistArray` and this is a unary ufunc, we know the result will have the exact same `distribution` as the input.  Why don't we just use `a`'s `distribution` inside this call here -- `return DistArray.from_localarrays(new_key, distribution=a.distribution)` ?