code: def fromfunction(
      func, chunks="auto", shape=None, dtype=None, **kwargs
  ):
      dtype = dtype or float
      chunks = normalize_chunks(chunks, shape, dtype=dtype)
  
      inds = tuple(range(len(shape)))
  
      arrs = [
          arange(s, dtype=dtype, chunks=c)
          for s, c in zip(shape, chunks)
      ]
      arrs = meshgrid(*arrs, indexing="ij")
  
      args = sum(zip(arrs, itertools.repeat(inds)), ())
  
      res = blockwise(func, inds, *args, token="fromfunction", **kwargs)
  
      return res
  
imports: from __future__ import annotations
  import itertools
  from collections.abc import Sequence
  from functools import partial
  from itertools import product
  from numbers import Integral, Number
  import numpy
  from tlz import sliding_window
  from dask.array import chunk
  from dask.array.backends import array_creation_dispatch
  from dask.array.core import Array, asarray, block, blockwise, broadcast_arrays, broadcast_to, concatenate, normalize_chunks, stack
  from dask.array.numpy_compat import AxisError
  from dask.array.ufunc import greater_equal, rint
  from dask.array.utils import meta_from_array
  from dask.array.wrap import empty, full, ones, zeros
  from dask.base import tokenize
  from dask.highlevelgraph import HighLevelGraph
  from dask.utils import cached_cumsum, derived_from, is_cupy_type
label_desc: Use image node_id 15 for calling a global function with example usage: fromfunction(func, chunks, shape, dtype) and returns: res