def __sub__(self, other):
		"""
		Return the segment that is that part of self which is not
		contained in other.  Raises ValueError if the result cannot
		be represented as a single segment.
		"""
		if (self[1] <= other[0]) or (self[0] >= other[1]):
			# self and other do not intersect
			return self
		if (self in other) or ((self[0] < other[0]) and (self[1] > other[1])):
			# result is not exactly 1 segment
			raise ValueError(other)
		if self[0] < other[0]:
			return tuple.__new__(self.__class__, (self[0], other[0]))
		return tuple.__new__(self.__class__, (other[1], self[1]))
def __sub__ ( self , other ) : if ( self [ 1 ] <= other [ 0 ] ) or ( self [ 0 ] >= other [ 1 ] ) : return self if ( self in other ) or ( ( self [ 0 ] < other [ 0 ] ) and ( self [ 1 ] > other [ 1 ] ) ) : raise ValueError ( other ) if self [ 0 ] < other [ 0 ] : return tuple . __new__ ( self . __class__ , ( self [ 0 ] , other [ 0 ] ) ) return tuple . __new__ ( self . __class__ , ( other [ 1 ] , self [ 1 ] ) )
Return the segment that is that part of self which is not
		contained in other.  Raises ValueError if the result cannot
		be represented as a single segment.