code: def __init__(self, *limits):
      if not limits:
          msg = "{}lim(), is missing limits"
          raise PlotnineError(msg.format(self.aesthetic))
      elif len(limits) == 1:
          limits = limits[0]
  
      series = pd.Series(limits)
  
      # Type of transform
      if not any(x is None for x in limits) and limits[0] > limits[1]:
          self.trans = "reverse"
      elif array_kind.continuous(series):
          self.trans = "identity"
      elif array_kind.discrete(series):
          self.trans = None
      elif array_kind.datetime(series):
          self.trans = "datetime"
      elif array_kind.timedelta(series):
          self.trans = "timedelta"
      else:
          msg = f"Unknown type {type(limits[0])} of limits"
          raise TypeError(msg)
  
      self.limits = limits
      self.limits_series = series
  
imports: import sys
  from contextlib import suppress
  import pandas
  from .._utils import array_kind
  from ..exceptions import PlotnineError
  from ..geoms import geom_blank
  from ..mapping.aes import ALL_AESTHETICS, aes
  from ..scales.scales import make_scale
label_desc: Use image node_id 1 to create a new _lim object  with example: obj = _lim()