code: def test_estimate_keypoints_norm_type(self):
      ntype = normalization.estimate_keypoints_norm_type(None)
      assert ntype == "None"
  
      for name, dt in zip(
          ["float", "int", "uint"], [np.float32, np.int32, np.uint16]
      ):
          ntype = normalization.estimate_keypoints_norm_type(
              np.zeros((1, 5, 2), dtype=dt)
          )
          assert ntype == "array[%s]" % (name,)
  
      ntype = normalization.estimate_keypoints_norm_type((1, 2))
      assert ntype == "tuple[number,size=2]"
  
      ntype = normalization.estimate_keypoints_norm_type(
          ia.Keypoint(x=1, y=2)
      )
      assert ntype == "Keypoint"
  
      ntype = normalization.estimate_keypoints_norm_type(
          ia.KeypointsOnImage([ia.Keypoint(x=1, y=2)], shape=(1, 1, 3))
      )
      assert ntype == "KeypointsOnImage"
  
      ntype = normalization.estimate_keypoints_norm_type([])
      assert ntype == "iterable[empty]"
  
      for name, dt in zip(
          ["float", "int", "uint"], [np.float32, np.int32, np.uint16]
      ):
          ntype = normalization.estimate_keypoints_norm_type(
              [np.zeros((5, 2), dtype=dt)]
          )
          assert ntype == "iterable-array[%s]" % (name,)
  
      ntype = normalization.estimate_keypoints_norm_type([(1, 2)])
      assert ntype == "iterable-tuple[number,size=2]"
  
      ntype = normalization.estimate_keypoints_norm_type(
          [ia.Keypoint(x=1, y=2)]
      )
      assert ntype == "iterable-Keypoint"
  
      ntype = normalization.estimate_keypoints_norm_type(
          [
              ia.KeypointsOnImage(
                  [ia.Keypoint(x=1, y=2)], shape=(1, 1, 3)
              )
          ]
      )
      assert ntype == "iterable-KeypointsOnImage"
  
      ntype = normalization.estimate_keypoints_norm_type([[]])
      assert ntype == "iterable-iterable[empty]"
  
      ntype = normalization.estimate_keypoints_norm_type([[(1, 2)]])
      assert ntype == "iterable-iterable-tuple[number,size=2]"
  
      ntype = normalization.estimate_keypoints_norm_type(
          [[ia.Keypoint(x=1, y=2)]]
      )
      assert ntype == "iterable-iterable-Keypoint"
  
      # --
      # error cases
      # --
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_keypoints_norm_type(1)
  
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_keypoints_norm_type("foo")
  
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_keypoints_norm_type([1])
  
      # wrong class
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_keypoints_norm_type(
              ia.HeatmapsOnImage(
                  np.zeros((1, 1, 1), dtype=np.float32), shape=(1, 1, 1)
              )
          )
  
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_keypoints_norm_type([[[]]])
  
      # list of list of list of keypoints,
      # only list of list of keypoints is max
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_keypoints_norm_type(
              [[[ia.Keypoint(x=1, y=2)]]]
          )
  
imports: from __future__ import print_function, division, absolute_import
  import sys
  import numpy
  import six.moves
  import imgaug
  import imgaug.augmentables.normalization
  from imgaug.testutils import reseed
label_desc: Use image node_id 20 for calling the TestNormalization obj's underlying member method code with example usage: obj.test_estimate_keypoints_norm_type() without return types