docs: def _dask_or_eager_func(name, eager_module=np, dask_module=dask_array,
                          list_of_args=False, array_args=slice(1),
                          requires_dask=None):
      """Create a function that dispatches to dask for dask array inputs."""
      if dask_module is not None:
          def f(*args, **kwargs):
              if list_of_args:
                  dispatch_args = args[0]
              else:
                  dispatch_args = args[array_args]
              if any(isinstance(a, dask_array.Array) for a in dispatch_args):
                  try:
                      wrapped = getattr(dask_module, name)
                  except AttributeError as e:
                      raise AttributeError("%s: requires dask >=%s" %
                                           (e, requires_dask))
              else:
                  wrapped = getattr(eager_module, name)
              return wrapped(*args, **kwargs)
      else:
          def f(*args, **kwargs):
              return getattr(eager_module, name)(*args, **kwargs)
      return f