@@ -1469,22 +1469,22 @@ class NonEmptyFlag(Flag):
1469
1469
class NonEmptyIntFlag(IntFlag):
1470
1470
x = 1
1471
1471
1472
- class ErrorEnumWithValue(NonEmptyEnum): # E: Cannot inherit from final class "NonEmptyEnum"
1472
+ class ErrorEnumWithValue(NonEmptyEnum): # E: Cannot extend enum with existing members: "NonEmptyEnum"
1473
1473
x = 1 # E: Cannot override final attribute "x" (previously declared in base class "NonEmptyEnum")
1474
- class ErrorIntEnumWithValue(NonEmptyIntEnum): # E: Cannot inherit from final class "NonEmptyIntEnum"
1474
+ class ErrorIntEnumWithValue(NonEmptyIntEnum): # E: Cannot extend enum with existing members: "NonEmptyIntEnum"
1475
1475
x = 1 # E: Cannot override final attribute "x" (previously declared in base class "NonEmptyIntEnum")
1476
- class ErrorFlagWithValue(NonEmptyFlag): # E: Cannot inherit from final class "NonEmptyFlag"
1476
+ class ErrorFlagWithValue(NonEmptyFlag): # E: Cannot extend enum with existing members: "NonEmptyFlag"
1477
1477
x = 1 # E: Cannot override final attribute "x" (previously declared in base class "NonEmptyFlag")
1478
- class ErrorIntFlagWithValue(NonEmptyIntFlag): # E: Cannot inherit from final class "NonEmptyIntFlag"
1478
+ class ErrorIntFlagWithValue(NonEmptyIntFlag): # E: Cannot extend enum with existing members: "NonEmptyIntFlag"
1479
1479
x = 1 # E: Cannot override final attribute "x" (previously declared in base class "NonEmptyIntFlag")
1480
1480
1481
- class ErrorEnumWithoutValue(NonEmptyEnum): # E: Cannot inherit from final class "NonEmptyEnum"
1481
+ class ErrorEnumWithoutValue(NonEmptyEnum): # E: Cannot extend enum with existing members: "NonEmptyEnum"
1482
1482
pass
1483
- class ErrorIntEnumWithoutValue(NonEmptyIntEnum): # E: Cannot inherit from final class "NonEmptyIntEnum"
1483
+ class ErrorIntEnumWithoutValue(NonEmptyIntEnum): # E: Cannot extend enum with existing members: "NonEmptyIntEnum"
1484
1484
pass
1485
- class ErrorFlagWithoutValue(NonEmptyFlag): # E: Cannot inherit from final class "NonEmptyFlag"
1485
+ class ErrorFlagWithoutValue(NonEmptyFlag): # E: Cannot extend enum with existing members: "NonEmptyFlag"
1486
1486
pass
1487
- class ErrorIntFlagWithoutValue(NonEmptyIntFlag): # E: Cannot inherit from final class "NonEmptyIntFlag"
1487
+ class ErrorIntFlagWithoutValue(NonEmptyIntFlag): # E: Cannot extend enum with existing members: "NonEmptyIntFlag"
1488
1488
pass
1489
1489
[builtins fixtures/bool.pyi]
1490
1490
@@ -1588,13 +1588,17 @@ class NonEmptyIntFlag(IntFlag):
1588
1588
class NonEmptyEnumMeta(EnumMeta):
1589
1589
x = 1
1590
1590
1591
- class ErrorEnumWithoutValue(NonEmptyEnum): # E: Cannot inherit from final class "NonEmptyEnum"
1591
+ class ErrorEnumWithoutValue(NonEmptyEnum): # E: Cannot inherit from final class "NonEmptyEnum" \
1592
+ # E: Cannot extend enum with existing members: "NonEmptyEnum"
1592
1593
pass
1593
- class ErrorIntEnumWithoutValue(NonEmptyIntEnum): # E: Cannot inherit from final class "NonEmptyIntEnum"
1594
+ class ErrorIntEnumWithoutValue(NonEmptyIntEnum): # E: Cannot inherit from final class "NonEmptyIntEnum" \
1595
+ # E: Cannot extend enum with existing members: "NonEmptyIntEnum"
1594
1596
pass
1595
- class ErrorFlagWithoutValue(NonEmptyFlag): # E: Cannot inherit from final class "NonEmptyFlag"
1597
+ class ErrorFlagWithoutValue(NonEmptyFlag): # E: Cannot inherit from final class "NonEmptyFlag" \
1598
+ # E: Cannot extend enum with existing members: "NonEmptyFlag"
1596
1599
pass
1597
- class ErrorIntFlagWithoutValue(NonEmptyIntFlag): # E: Cannot inherit from final class "NonEmptyIntFlag"
1600
+ class ErrorIntFlagWithoutValue(NonEmptyIntFlag): # E: Cannot inherit from final class "NonEmptyIntFlag" \
1601
+ # E: Cannot extend enum with existing members: "NonEmptyIntFlag"
1598
1602
pass
1599
1603
class ErrorEnumMetaWithoutValue(NonEmptyEnumMeta): # E: Cannot inherit from final class "NonEmptyEnumMeta"
1600
1604
pass
@@ -1692,13 +1696,13 @@ class NonEmptyIntFlag(IntFlag):
1692
1696
x = 1
1693
1697
def method(self) -> None: pass
1694
1698
1695
- class ErrorEnumWithoutValue(NonEmptyEnum): # E: Cannot inherit from final class "NonEmptyEnum"
1699
+ class ErrorEnumWithoutValue(NonEmptyEnum): # E: Cannot extend enum with existing members: "NonEmptyEnum"
1696
1700
pass
1697
- class ErrorIntEnumWithoutValue(NonEmptyIntEnum): # E: Cannot inherit from final class "NonEmptyIntEnum"
1701
+ class ErrorIntEnumWithoutValue(NonEmptyIntEnum): # E: Cannot extend enum with existing members: "NonEmptyIntEnum"
1698
1702
pass
1699
- class ErrorFlagWithoutValue(NonEmptyFlag): # E: Cannot inherit from final class "NonEmptyFlag"
1703
+ class ErrorFlagWithoutValue(NonEmptyFlag): # E: Cannot extend enum with existing members: "NonEmptyFlag"
1700
1704
pass
1701
- class ErrorIntFlagWithoutValue(NonEmptyIntFlag): # E: Cannot inherit from final class "NonEmptyIntFlag"
1705
+ class ErrorIntFlagWithoutValue(NonEmptyIntFlag): # E: Cannot extend enum with existing members: "NonEmptyIntFlag"
1702
1706
pass
1703
1707
[builtins fixtures/bool.pyi]
1704
1708
@@ -1707,7 +1711,7 @@ from enum import Enum
1707
1711
1708
1712
class A(Enum):
1709
1713
class Inner: pass
1710
- class B(A): pass # E: Cannot inherit from final class "A"
1714
+ class B(A): pass # E: Cannot extend enum with existing members: "A"
1711
1715
[builtins fixtures/bool.pyi]
1712
1716
1713
1717
[case testEnumFinalSpecialProps]
@@ -1765,12 +1769,12 @@ class B(A):
1765
1769
1766
1770
class A1(Enum):
1767
1771
x: int = 1
1768
- class B1(A1): # E: Cannot inherit from final class "A1"
1772
+ class B1(A1): # E: Cannot extend enum with existing members: "A1"
1769
1773
pass
1770
1774
1771
1775
class A2(Enum):
1772
1776
x = 2
1773
- class B2(A2): # E: Cannot inherit from final class "A2"
1777
+ class B2(A2): # E: Cannot extend enum with existing members: "A2"
1774
1778
pass
1775
1779
1776
1780
# We leave this `Final` without a value,
@@ -1788,12 +1792,12 @@ import lib
1788
1792
from enum import Enum
1789
1793
class A(Enum):
1790
1794
x: int
1791
- class B(A): # E: Cannot inherit from final class "A"
1795
+ class B(A): # E: Cannot extend enum with existing members: "A"
1792
1796
x = 1 # E: Cannot override writable attribute "x" with a final one
1793
1797
1794
1798
class C(Enum):
1795
1799
x = 1
1796
- class D(C): # E: Cannot inherit from final class "C"
1800
+ class D(C): # E: Cannot extend enum with existing members: "C"
1797
1801
x: int # E: Cannot assign to final name "x"
1798
1802
[builtins fixtures/bool.pyi]
1799
1803
@@ -1811,3 +1815,56 @@ reveal_type(A.int.value) # N: Revealed type is "Literal[1]?"
1811
1815
reveal_type(A.bool.value) # N: Revealed type is "Literal[False]?"
1812
1816
reveal_type(A.tuple.value) # N: Revealed type is "Tuple[Literal[1]?]"
1813
1817
[builtins fixtures/tuple.pyi]
1818
+
1819
+ [case testFinalWithPrivateAssignment]
1820
+ import enum
1821
+ class Some(enum.Enum):
1822
+ __priv = 1
1823
+
1824
+ class Other(Some): # Should pass
1825
+ pass
1826
+ [builtins fixtures/tuple.pyi]
1827
+
1828
+ [case testFinalWithDunderAssignment]
1829
+ import enum
1830
+ class Some(enum.Enum):
1831
+ __some__ = 1
1832
+
1833
+ class Other(Some): # Should pass
1834
+ pass
1835
+ [builtins fixtures/tuple.pyi]
1836
+
1837
+ [case testFinalWithSunderAssignment]
1838
+ import enum
1839
+ class Some(enum.Enum):
1840
+ _some_ = 1
1841
+
1842
+ class Other(Some): # Should pass
1843
+ pass
1844
+ [builtins fixtures/tuple.pyi]
1845
+
1846
+ [case testFinalWithMethodAssignment]
1847
+ import enum
1848
+ from typing import overload
1849
+ class Some(enum.Enum):
1850
+ def lor(self, other) -> bool:
1851
+ pass
1852
+
1853
+ ror = lor
1854
+
1855
+ class Other(Some): # Should pass
1856
+ pass
1857
+
1858
+
1859
+ class WithOverload(enum.IntEnum):
1860
+ @overload
1861
+ def meth(self, arg: int) -> int: pass
1862
+ @overload
1863
+ def meth(self, arg: str) -> str: pass
1864
+ def meth(self, arg): pass
1865
+
1866
+ alias = meth
1867
+
1868
+ class SubWithOverload(WithOverload): # Should pass
1869
+ pass
1870
+ [builtins fixtures/tuple.pyi]
0 commit comments