From a8cfde79c42cdfb0ef2958e26591e291a00f6850 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Thu, 27 Sep 2018 09:27:41 -0700 Subject: [PATCH] Use structural inference for enum34 EnumMeta. (#2490) Fixes python/mypy#5577. --- third_party/2/enum.pyi | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/third_party/2/enum.pyi b/third_party/2/enum.pyi index c41677861..34200894b 100644 --- a/third_party/2/enum.pyi +++ b/third_party/2/enum.pyi @@ -8,10 +8,11 @@ _S = TypeVar('_S', bound=Type[Enum]) # This is a temporary workaround to allow multiple creation of enums with builtins # such as str as mixins, which due to the handling of ABCs of builtin types, cause # spurious inconsistent metaclass structure. See #1595. -class EnumMeta(ABCMeta, Iterable[Enum], Sized, Reversible[Enum], Container[Enum]): +# Structurally: Iterable[T], Reversible[T], Container[T] where T is the enum itself +class EnumMeta(ABCMeta): def __iter__(self: Type[_T]) -> Iterator[_T]: ... def __reversed__(self: Type[_T]) -> Iterator[_T]: ... - def __contains__(self, member: Any) -> bool: ... + def __contains__(self: Type[_T], member: Any) -> bool: ... def __getitem__(self: Type[_T], name: str) -> _T: ... @property def __members__(self: Type[_T]) -> Mapping[str, _T]: ...