From 4f51a4f2fcc5a87d90a7916d4ab1b077aca7d871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Miedzi=C5=84ski?= Date: Wed, 8 Mar 2017 01:42:06 +0100 Subject: [PATCH] Improve ABCMeta.register signature (#962) * Improve ABCMeta.register signature * Fix ABCMeta.register return type for Python 3.3+ --- stdlib/2/abc.pyi | 5 ++--- stdlib/3/abc.pyi | 9 +++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/stdlib/2/abc.pyi b/stdlib/2/abc.pyi index 3ae3b522b..a2d270f76 100644 --- a/stdlib/2/abc.pyi +++ b/stdlib/2/abc.pyi @@ -1,4 +1,4 @@ -from typing import Any, Dict, Set, Union, Tuple +from typing import Any, Dict, Set, Tuple, Type import _weakrefset # mypy has special processing for ABCMeta and abstractmethod. @@ -21,8 +21,7 @@ class ABCMeta(type): def __instancecheck__(cls: "ABCMeta", instance: Any) -> Any: ... def __subclasscheck__(cls: "ABCMeta", subclass: Any) -> Any: ... def _dump_registry(cls: "ABCMeta", *args: Any, **kwargs: Any) -> None: ... - # TODO: subclass: Union["ABCMeta", type, Tuple[type, ...]] - def register(cls: "ABCMeta", subclass: Any) -> None: ... + def register(cls: "ABCMeta", subclass: Type[Any]) -> None: ... class _C: pass diff --git a/stdlib/3/abc.pyi b/stdlib/3/abc.pyi index 80287e1b3..86a97f00a 100644 --- a/stdlib/3/abc.pyi +++ b/stdlib/3/abc.pyi @@ -1,10 +1,15 @@ -from typing import Any +from typing import Any, Type, TypeVar import sys # Stubs for abc. +_T = TypeVar('_T') + # Thesee definitions have special processing in type checker. class ABCMeta(type): - def register(cls: "ABCMeta", subclass: Any) -> None: ... + if sys.version_info >= (3, 3): + def register(cls: "ABCMeta", subclass: Type[_T]) -> Type[_T]: ... + else: + def register(cls: "ABCMeta", subclass: Type[Any]) -> None: ... abstractmethod = object() abstractproperty = object()