From ad00ead2a185f3bc85f5e7579c51efc567920303 Mon Sep 17 00:00:00 2001 From: Brian Weber Date: Wed, 24 May 2017 11:44:20 -0700 Subject: [PATCH] enum.auto checking correctness per #3434 --- test-data/unit/check-enum.test | 11 +++++++++++ test-data/unit/fixtures/bool.pyi | 1 + test-data/unit/fixtures/staticmethod.pyi | 1 + test-data/unit/lib-stub/enum.pyi | 5 +++++ typeshed | 2 +- 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/test-data/unit/check-enum.test b/test-data/unit/check-enum.test index 011580effb35..9005fe844dde 100644 --- a/test-data/unit/check-enum.test +++ b/test-data/unit/check-enum.test @@ -204,6 +204,17 @@ x = x | C.b [out] main:6: error: Incompatible types in assignment (expression has type "int", variable has type "C") +[case testEnumFlagMultiples] +from enum import Flag, auto +class Color(Flag): + RED = auto() + BLUE = auto() + GREEN = auto() + WHITE = RED | BLUE | GREEN +x = Color.RED & Color.BLUE +x = Color.RED or Color.GREEN +x = Color.RED & Color.WHITE + [case testAnonymousEnum] from enum import Enum class A: diff --git a/test-data/unit/fixtures/bool.pyi b/test-data/unit/fixtures/bool.pyi index c4b4f3080f15..aeda8fca5f90 100644 --- a/test-data/unit/fixtures/bool.pyi +++ b/test-data/unit/fixtures/bool.pyi @@ -10,3 +10,4 @@ class bool: pass class int: pass class str: pass class unicode: pass +class ellipsis: pass diff --git a/test-data/unit/fixtures/staticmethod.pyi b/test-data/unit/fixtures/staticmethod.pyi index 5f1013f18213..14254e64dcb1 100644 --- a/test-data/unit/fixtures/staticmethod.pyi +++ b/test-data/unit/fixtures/staticmethod.pyi @@ -17,3 +17,4 @@ class int: class str: pass class unicode: pass class bytes: pass +class ellipsis: pass diff --git a/test-data/unit/lib-stub/enum.pyi b/test-data/unit/lib-stub/enum.pyi index facf519bd5df..971d6e536457 100644 --- a/test-data/unit/lib-stub/enum.pyi +++ b/test-data/unit/lib-stub/enum.pyi @@ -22,7 +22,12 @@ def unique(enumeration: _T) -> _T: pass class Flag(Enum): def __or__(self: _T, other: Union[int, _T]) -> _T: pass + def __and__(self: _T, other: Union[int, _T]) -> _T: pass class IntFlag(int, Flag): def __and__(self: _T, other: Union[int, _T]) -> _T: pass + +class auto(IntFlag): + value = ... + def __init__(self) -> None: pass diff --git a/typeshed b/typeshed index c2e6a6f670f5..890190d3493e 160000 --- a/typeshed +++ b/typeshed @@ -1 +1 @@ -Subproject commit c2e6a6f670f5d75c07eb31cf2509db302825b76d +Subproject commit 890190d3493e7f9cafbe8049a9f7a4dfcd62f94d