code: def irange(self, minimum=None, maximum=None, inclusive=(True, True),
                 reverse=False):
          
          minimum = self._key(minimum) if minimum is not None else None
          maximum = self._key(maximum) if maximum is not None else None
          return self.irange_key(
              min_key=minimum, max_key=maximum,
              inclusive=inclusive, reverse=reverse,
          )
docs: Create an iterator of values between `minimum` and `maximum`.
  
          `inclusive` is a pair of booleans that indicates whether the minimum
          and maximum ought to be included in the range, respectively. The
          default is (True, True) such that the range is inclusive of both
          minimum and maximum.
  
          Both `minimum` and `maximum` default to `None` which is automatically
          inclusive of the start and end of the list, respectively.
  
          When `reverse` is `True` the values are yielded from the iterator in
          reverse order; `reverse` defaults to `False`.