code: def test_estimate_bounding_boxes_norm_type(self):
      ntype = normalization.estimate_bounding_boxes_norm_type(None)
      assert ntype == "None"
  
      for name, dt in zip(
          ["float", "int", "uint"], [np.float32, np.int32, np.uint16]
      ):
          ntype = normalization.estimate_bounding_boxes_norm_type(
              np.zeros((1, 5, 4), dtype=dt)
          )
          assert ntype == "array[%s]" % (name,)
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          (1, 2, 3, 4)
      )
      assert ntype == "tuple[number,size=4]"
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          ia.BoundingBox(x1=1, y1=2, x2=3, y2=4)
      )
      assert ntype == "BoundingBox"
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          ia.BoundingBoxesOnImage(
              [ia.BoundingBox(x1=1, y1=2, x2=3, y2=4)], shape=(1, 1, 3)
          )
      )
      assert ntype == "BoundingBoxesOnImage"
  
      ntype = normalization.estimate_bounding_boxes_norm_type([])
      assert ntype == "iterable[empty]"
  
      for name, dt in zip(
          ["float", "int", "uint"], [np.float32, np.int32, np.uint16]
      ):
          ntype = normalization.estimate_bounding_boxes_norm_type(
              [np.zeros((5, 4), dtype=dt)]
          )
          assert ntype == "iterable-array[%s]" % (name,)
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          [(1, 2, 3, 4)]
      )
      assert ntype == "iterable-tuple[number,size=4]"
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          [ia.BoundingBox(x1=1, y1=2, x2=3, y2=4)]
      )
      assert ntype == "iterable-BoundingBox"
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          [
              ia.BoundingBoxesOnImage(
                  [ia.BoundingBox(x1=1, y1=2, x2=3, y2=4)],
                  shape=(1, 1, 3),
              )
          ]
      )
      assert ntype == "iterable-BoundingBoxesOnImage"
  
      ntype = normalization.estimate_bounding_boxes_norm_type([[]])
      assert ntype == "iterable-iterable[empty]"
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          [[(1, 2, 3, 4)]]
      )
      assert ntype == "iterable-iterable-tuple[number,size=4]"
  
      ntype = normalization.estimate_bounding_boxes_norm_type(
          [[ia.BoundingBox(x1=1, y1=2, x2=3, y2=4)]]
      )
      assert ntype == "iterable-iterable-BoundingBox"
  
      # --
      # error cases
      # --
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_bounding_boxes_norm_type(1)
  
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_bounding_boxes_norm_type(
              "foo"
          )
  
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_bounding_boxes_norm_type([1])
  
      # wrong class
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_bounding_boxes_norm_type(
              ia.HeatmapsOnImage(
                  np.zeros((1, 1, 1), dtype=np.float32), shape=(1, 1, 1)
              )
          )
  
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_bounding_boxes_norm_type(
              [[[]]]
          )
  
      # list of list of list of bounding boxes,
      # only list of list of bounding boxes is max
      with self.assertRaises(AssertionError):
          _ntype = normalization.estimate_bounding_boxes_norm_type(
              [[[ia.BoundingBox(x1=1, y1=2, x2=3, y2=4)]]]
          )
  
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 21 for calling the TestNormalization obj's underlying member method code with example usage: obj.test_estimate_bounding_boxes_norm_type() without return types