mirror of
				https://github.com/astral-sh/ruff.git
				synced 2025-10-31 12:05:57 +00:00 
			
		
		
		
	
		
			
				
	
	
	
	
		
			841 B
		
	
	
	
	
	
	
	
			
		
		
	
	
			841 B
		
	
	
	
	
	
	
	
Attribute access
Boundness
def _(flag: bool):
    class A:
        always_bound: int = 1
        if flag:
            union = 1
        else:
            union = "abc"
        if flag:
            union_declared: int = 1
        else:
            union_declared: str = "abc"
        if flag:
            possibly_unbound: str = "abc"
    reveal_type(A.always_bound)  # revealed: int
    reveal_type(A.union)  # revealed: Unknown | Literal[1, "abc"]
    reveal_type(A.union_declared)  # revealed: int | str
    # error: [possibly-unbound-attribute] "Attribute `possibly_unbound` on type `<class 'A'>` is possibly unbound"
    reveal_type(A.possibly_unbound)  # revealed: str
    # error: [unresolved-attribute] "Type `<class 'A'>` has no attribute `non_existent`"
    reveal_type(A.non_existent)  # revealed: Unknown
