class_docstr: An object representing a range of values between `start` and `end`.
  
  >>> interval2 = hl.Interval(3, 6)
  
  Parameters
  ----------
  start : any type
      Object with type `point_type`.
  end : any type
      Object with type `point_type`.
  includes_start : :obj:`bool`
      Interval includes start.
  includes_end : :obj:`bool`
      Interval includes end.
  
  Note
  ----
  This object refers to the Python value returned by taking or collecting
  Hail expressions, e.g. ``mt.interval.take(5)``. This is rare; it is much
  more common to manipulate the :class:`.IntervalExpression` object, which is
  constructed using the following functions:
  
   - :func:`.interval`
   - :func:`.locus_interval`
   - :func:`.parse_locus_interval`
code: def __init__(
      self,
      start,
      end,
      includes_start=True,
      includes_end=False,
      point_type=None,
  ):
      if point_type is None:
          from hail.expr.expressions import (
              impute_type,
              unify_types_limited,
          )
  
          start_type = impute_type(start)
          end_type = impute_type(end)
          point_type = unify_types_limited(start_type, end_type)
          if point_type is None:
              raise TypeError(
                  "'start' and 'end' have incompatible types: '{}', '{}'.".format(
                      start_type, end_type
                  )
              )
  
      self._point_type = point_type
      self._start = start
      self._end = end
      self._includes_start = includes_start
      self._includes_end = includes_end
  
file_path: hail/hail/python/hail/utils/interval.py
imports: from hail.typecheck import typecheck_method, lazy, nullable, anytype
  import hail
label_desc: Use image node_id 1 to create a new Interval object from inherited base classes: object with example: obj = Interval(start, end, includes_start, includes_end, point_type)