code: def np_fn(op, indexer, x, y):  # pylint: disable=no-self-argument
      x = x.copy()
      x[indexer] = {
          UpdateOps.UPDATE: lambda: y,
          UpdateOps.ADD: lambda: x[indexer] + y,
          # UpdateOps.MUL: lambda: x[indexer] * y,
          UpdateOps.MIN: lambda: onp.minimum(x[indexer], y),
          UpdateOps.MAX: lambda: onp.maximum(x[indexer], y),
      }[op]()
      return x
  
imports: import collections
  import enum
  from functools import partial
  import itertools
  import unittest
  from absl.testing import absltest
  from absl.testing import parameterized
  import numpy
  from tensorflow.python.framework import config
  from tensorflow.python.ops.numpy_ops.tests.config import config
  import tensorflow.python.ops.numpy_ops.tests.extensions
  import tensorflow.python.ops.numpy_ops.tests.np_wrapper
  import tensorflow.python.ops.numpy_ops.tests.test_util
  from tensorflow.python.util import nest
label_desc: Use image node_id 1 for calling the UpdateOps obj's underlying member method code with example usage: obj.np_fn(op, indexer, x, y) and returns: x