Skip to content

Commit d9c57fd

Browse files
committed
Handle member access on Type[Any], fix python#3098
1 parent 65b9b0b commit d9c57fd

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

mypy/checkmember.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ def analyze_member_access(name: str,
176176
item = None
177177
if isinstance(typ.item, Instance):
178178
item = typ.item
179+
elif isinstance(typ.item, AnyType):
180+
return AnyType()
179181
elif isinstance(typ.item, TypeVarType):
180182
if isinstance(typ.item.upper_bound, Instance):
181183
item = typ.item.upper_bound

test-data/unit/check-classes.test

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2051,6 +2051,16 @@ class X: pass
20512051
foo(X)
20522052
[out]
20532053

2054+
[case testTypeUsingTypeCTypeAnyMember]
2055+
from typing import Type, Any
2056+
def foo(arg: Type[Any]):
2057+
x = arg.member_name
2058+
# Member acces is ok and types as Any
2059+
reveal_type(x) # E: Revealed type is 'Any'
2060+
# But Type[Any] is distinct from Any
2061+
y: int = arg # E: Incompatible types in assignment (expression has type Type[Any], variable has type "int")
2062+
[out]
2063+
20542064
[case testTypeUsingTypeCTypeNoArg]
20552065
from typing import Type
20562066
def foo(arg: Type):

typeshed

Submodule typeshed updated 133 files

0 commit comments

Comments
 (0)