code: def testUnaryEllipsis(self):
      self._check_gradient("...->...", ())
      self._check_gradient("...->", ())
      self._check_gradient("->...", ())
  
      # Tests from dask
      self._check_gradient("a...a->a...", (2, 2))
      self._check_gradient("a...a->", (2, 2))
      self._check_gradient("a...a->...", (2, 5, 1, 2))
      self._check_gradient("a...a->a...", (2, 1, 2))
      self._check_gradient("a...a->a...", (2, 3, 4, 5, 2))
  
      self._check_gradient("...ijk->...ki", (3, 4, 5))
      self._check_gradient("...ijk->...ki", (1, 3, 4, 5))
      self._check_gradient("...ijk->...ki", (2, 2, 3, 4, 5))
      self._check_gradient("ab...cd->da...", (3, 5, 2, 3, 4, 2))
  
imports: import numpy
  from tensorflow.python.client import session
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import errors
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import gen_linalg_ops
  from tensorflow.python.ops import gradient_checker_v2
  from tensorflow.python.ops import special_math_ops
  from tensorflow.python.ops import variables
  from tensorflow.python.platform import benchmark
  from tensorflow.python.platform import test
label_desc: Use image node_id 3 for calling the EinsumGradTest obj's underlying member method code with example usage: obj.testUnaryEllipsis() without return types