def union(self, other, blend=True):
if not (self.touches(other) or self.any_overlaps(other)):<EOL><INDENT>return self, other<EOL><DEDENT>if self.order == '<STR_LIT>':<EOL><INDENT>top = max(self.top.z, other.top.z)<EOL>bot = min(self.base.z, other.base.z)<EOL><DEDENT>else:<EOL><INDENT>top = min(self.top.z, other.top.z)<EOL>bot = max(self.base.z, other.base.z)<EOL><DEDENT>result = self.copy()<EOL>result.top = top<EOL>result.base = bot<EOL>return result._combine(self, other, blend=blend)<EOL>
Perform the union binary operation. self must at least touch other or
an IntervalError is raised.

If blend is False, you are essentially replacing self with other.

Args:
    other (Interval): The other Interval.
    blend (bool): Whether to blend or not.

Returns:
    Interval. The union of the Interval with the one provided.