docs: def left_of(self, other):
          """
          Test if this range `other` is strictly left of `other`.
  
              >>> intrange(1, 5).left_of(intrange(5, 10))
              True
              >>> intrange(1, 10).left_of(intrange(5, 10))
              False
  
          The bitwise right shift operator ``<<`` is overloaded for this operation
          too.
  
              >>> intrange(1, 5) << intrange(5, 10)
              True
  
          The choice of overloading ``<<`` might seem strange, but it is to mimick
          PostgreSQL's operators for ranges. As this is not obvious the use of
          ``<<`` is discouraged.
  
          :param other: Range to test against.
          :return: ``True`` if this range is completely to the left of ``other``.
          """
  
          if not self.is_valid_range(other):
              msg = (
                  "Left of is not supported for '{}', provide a proper range "
                  "class").format(other.__class__.__name__)
              raise TypeError(msg)
  
          return self < other and not self.overlap(other)