Skip to content

Commit 7eab8a4

Browse files
stubtest: Add support for setting enum members to "..." (#16807)
Unblock python/typeshed#11299
1 parent 75b68fa commit 7eab8a4

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

mypy/stubtest.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1093,6 +1093,13 @@ def verify_var(
10931093
runtime_type = get_mypy_type_of_runtime_value(runtime.value)
10941094
if runtime_type is not None and is_subtype_helper(runtime_type, stub.type):
10951095
should_error = False
1096+
# We always allow setting the stub value to ...
1097+
proper_type = mypy.types.get_proper_type(stub.type)
1098+
if (
1099+
isinstance(proper_type, mypy.types.Instance)
1100+
and proper_type.type.fullname == "builtins.ellipsis"
1101+
):
1102+
should_error = False
10961103

10971104
if should_error:
10981105
yield Error(

mypy/test/teststubtest.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,6 +1139,25 @@ def baz(x=Flags3(0)): pass
11391139
""",
11401140
error=None,
11411141
)
1142+
yield Case(
1143+
runtime="""
1144+
import enum
1145+
class SomeObject: ...
1146+
1147+
class WeirdEnum(enum.Enum):
1148+
a = SomeObject()
1149+
b = SomeObject()
1150+
""",
1151+
stub="""
1152+
import enum
1153+
class SomeObject: ...
1154+
class WeirdEnum(enum.Enum):
1155+
_value_: SomeObject
1156+
a = ...
1157+
b = ...
1158+
""",
1159+
error=None,
1160+
)
11421161
yield Case(
11431162
stub="""
11441163
class Flags4(enum.Flag):

0 commit comments

Comments
 (0)