mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-31 20:08:19 +00:00 
			
		
		
		
	![github-actions[bot]](/assets/img/avatar_default.png) cafb96aa7a
			
		
	
	
		cafb96aa7a
		
			
		
	
	
	
	
		
			
			Close and reopen this PR to trigger CI --------- Co-authored-by: typeshedbot <> Co-authored-by: David Peter <mail@david-peter.de>
		
			
				
	
	
	
	
		
			1,002 B
		
	
	
	
	
	
	
	
			
		
		
	
	
			1,002 B
		
	
	
	
	
	
	
	
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: UnionType
Union of two classes (prior to 3.10)
[environment]
python-version = "3.9"
class A: ...
class B: ...
# error: "Operator `|` is unsupported 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: UnionType
    reveal_type(sub_a | B)  # revealed: UnionType
    reveal_type(sub_a | sub_b)  # revealed: UnionType
class C[T]: ...
class D[T]: ...
reveal_type(C | D)  # revealed: UnionType
reveal_type(C[int] | D[str])  # revealed: UnionType