Skip to content

Commit 295343e

Browse files
committed
link to spec
1 parent 7282eb8 commit 295343e

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

mypy/semanal.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4237,6 +4237,10 @@ def analyze_name_lvalue(
42374237

42384238
if explicit_type and has_explicit_value:
42394239
self.fail("Enum members must be left unannotated", lvalue)
4240+
self.note(
4241+
"See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members",
4242+
lvalue,
4243+
)
42404244

42414245
if (not existing or isinstance(existing.node, PlaceholderNode)) and not outer:
42424246
# Define new variable.

test-data/unit/check-enum.test

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1764,7 +1764,8 @@ class B(A):
17641764
x = 1 # E: Cannot override writable attribute "x" with a final one
17651765

17661766
class A1(Enum):
1767-
x: int = 1 # E: Enum members must be left unannotated
1767+
x: int = 1 # E: Enum members must be left unannotated \
1768+
# N: See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members
17681769
class B1(A1): # E: Cannot extend enum with existing members: "A1"
17691770
pass
17701771

@@ -1779,6 +1780,7 @@ class A3(Enum):
17791780
x: Final[int] # type: ignore
17801781
class B3(A3):
17811782
x = 1 # E: Cannot override final attribute "x" (previously declared in base class "A3")
1783+
17821784
[builtins fixtures/bool.pyi]
17831785

17841786
[case testEnumNotFinalWithMethodsAndUninitializedValuesStub]
@@ -2191,18 +2193,18 @@ def some_a(a: A):
21912193
from enum import Enum
21922194

21932195
class Medal(Enum):
2194-
gold: int = 1 # E: Enum members must be left unannotated
2196+
gold: int = 1 # E: Enum members must be left unannotated \
2197+
# N: See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members
21952198
silver: str = 2 # E: Enum members must be left unannotated \
2199+
# N: See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members \
21962200
# E: Incompatible types in assignment (expression has type "int", variable has type "str")
21972201
bronze = 3
21982202

2199-
22002203
[case testEnumMemberWithPlaceholder]
22012204
from enum import Enum
22022205

22032206
class Pet(Enum):
22042207
CAT = ...
22052208
DOG: str = ... # E: Enum members must be left unannotated \
2209+
# N: See https://typing.readthedocs.io/en/latest/spec/enums.html#defining-members \
22062210
# E: Incompatible types in assignment (expression has type "ellipsis", variable has type "str")
2207-
2208-
[file test.pyi]

0 commit comments

Comments
 (0)