code: def test_gather_per_row_2d(self):
      indices = [[1, 2, 0], [2, 1, 0]]
      names = [["a", "b", "c"], ["d", "e", "f"]]
      gathered_names = utils.gather_per_row(
          inputs=names, indices=indices
      )
      self.assertAllEqual(
          gathered_names, [[b"b", b"c", b"a"], [b"f", b"e", b"d"]]
      )
  
      indices = [[2, 0], [1, 0]]
      gathered_names = utils.gather_per_row(
          inputs=names, indices=indices
      )
      self.assertAllEqual(gathered_names, [[b"c", b"a"], [b"e", b"d"]])
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import math
  import tensorflow
  from tensorflow_ranking.python import utils
label_desc: Use image node_id 2 for calling the UtilsTest obj's underlying member method code with example usage: obj.test_gather_per_row_2d() without return types