class_docstr: Another mock duck array class (like EncapsulateNDArray), but
  designed to be above Dask in the type casting hierarchy (that is,
  WrappedArray wraps Dask Array) and be even more minimal in API.
  Tests that Dask defers properly to upcast types.
code: def __array_ufunc__(self, ufunc, method, *inputs, **kwargs):
      inputs = tuple(self._downcast_args(inputs))
      return type(self)(
          getattr(ufunc, method)(*inputs, **kwargs), **self.attrs
      )
  
imports: from __future__ import annotations
  import operator
  import numpy
  import pytest
  import dask.array
  from dask.array import Array
  from dask.array.chunk_types import is_valid_array_chunk, is_valid_chunk_type
  from dask.array.utils import assert_eq
label_desc: Use image node_id 4 for calling the WrappedArray obj's underlying member method code with example usage: obj.__array_ufunc__(ufunc, method) and returns: type