mirror of
https://github.com/astral-sh/ruff
synced 2026-01-21 05:20:49 -05:00
## Summary These types look better rendered as XML than python ## Test Plan <img width="532" height="299" alt="Screenshot 2025-12-16 at 8 40 56 AM" src="https://github.com/user-attachments/assets/42d9abfa-3f4a-44ba-b6b4-6700ab06832d" />
1.2 KiB
1.2 KiB
Binary operations on classes
Union of two classes
Unioning two classes via the | operator is only available in Python 3.10 and later.
[environment]
python-version = "3.10"
class A: ...
class B: ...
reveal_type(A | B) # revealed: <types.UnionType special-form 'A | B'>
Union of two classes (prior to 3.10)
[environment]
python-version = "3.9"
class A: ...
class B: ...
# error: "Operator `|` is not supported between objects of type `<class 'A'>` and `<class 'B'>`"
reveal_type(A | B) # revealed: Unknown
Other binary operations resulting in UnionType
[environment]
python-version = "3.12"
class A: ...
class B: ...
def _(sub_a: type[A], sub_b: type[B]):
reveal_type(A | sub_b) # revealed: <types.UnionType special-form>
reveal_type(sub_a | B) # revealed: <types.UnionType special-form>
reveal_type(sub_a | sub_b) # revealed: <types.UnionType special-form>
class C[T]: ...
class D[T]: ...
reveal_type(C | D) # revealed: <types.UnionType special-form 'C[Unknown] | D[Unknown]'>
reveal_type(C[int] | D[str]) # revealed: <types.UnionType special-form 'C[int] | D[str]'>