code: def canonicalize(interval, lower_inc=True, upper_inc=False):
      
      if not interval.discrete:
          raise TypeError('Only discrete ranges can be canonicalized')
  
      if interval.empty:
          return interval
  
      lower, lower_inc = canonicalize_lower(interval, lower_inc)
      upper, upper_inc = canonicalize_upper(interval, upper_inc)
  
      return interval.__class__(
          [lower, upper],
          lower_inc=lower_inc,
          upper_inc=upper_inc,
      )
docs: Convert equivalent discrete intervals to different representations.