code: def __init__(
      self, a_min: BoundType = None, a_max: BoundType = None
  ) -> None:
      super().__init__()
      self.a_min: tp.Optional[np.ndarray] = None
      self.a_max: tp.Optional[np.ndarray] = None
      for name, value in [("a_min", a_min), ("a_max", a_max)]:
          if value is not None:
              isarray = isinstance(value, (tuple, list, np.ndarray))
              setattr(
                  self,
                  name,
                  np.array(value, copy=False)
                  if isarray
                  else np.array([value]),
              )
      if not (self.a_min is None or self.a_max is None):
          if (self.a_min >= self.a_max).any():
              raise ValueError(
                  f"Lower bounds {a_min} should be strictly smaller than upper bounds {a_max}"
              )
      if self.a_min is None and self.a_max is None:
          raise ValueError("At least one bound must be specified")
      self.shape: tp.Tuple[int, ...] = (
          self.a_min.shape
          if self.a_min is not None
          else self.a_max.shape
      )
  
imports: import uuid
  import itertools
  import numpy
  from scipy import stats
  import nevergrad.common.typing
  from .None import utils
label_desc: Use image node_id 1 to create a new BoundTransform object from inherited base classes: Transform with example: obj = BoundTransform(a_min, a_max)