code: def __next__(self):
      boxes = []
      labels = []
      bboxes = bboxes_data[self.ndim]
      if self.i % 2 == 0:
          boxes.append(
              np.array(
                  [bboxes[0], bboxes[1], bboxes[2]], dtype=np.float32
              )
          )
          labels.append(np.array([1, 2, 3], dtype=np.int32))
          if self.batch_size > 1:
              boxes.append(
                  np.array([bboxes[2], bboxes[1]], dtype=np.float32)
              )
              labels.append(np.array([2, 1], dtype=np.int32))
              for _ in range(self.batch_size - 2):
                  boxes.append(np.array([bboxes[2]], dtype=np.float32))
                  labels.append(np.array([3], dtype=np.int32))
      else:
          boxes.append(np.array([bboxes[2]], dtype=np.float32))
          labels.append(np.array([3], dtype=np.int32))
          if self.batch_size > 1:
              boxes.append(
                  np.array(
                      [bboxes[1], bboxes[2], bboxes[0]],
                      dtype=np.float32,
                  )
              )
              labels.append(np.array([2, 3, 1], dtype=np.int32))
              for i in range(self.batch_size - 2):
                  boxes.append(np.array([bboxes[1]], dtype=np.float32))
                  labels.append(np.array([2], dtype=np.int32))
  
      if self.i < self.n:
          self.i = self.i + 1
          outputs = [boxes]
          if self.produce_labels:
              outputs.append(labels)
          return outputs
      else:
          self.i = 0
          raise StopIteration
  
imports: from nvidia.dali.pipeline import Pipeline
  from nvidia.dali import pipeline_def
  import nvidia.dali.ops
  import nvidia.dali.fn
  import nvidia.dali.types
  import numpy
  import random
label_desc: Use image node_id 4 for calling the BBoxDataIterator obj's underlying member method code with example usage: obj.__next__() and returns: outputs