From 1d820d48cfb16e78a2858d7687f129c13ff2111f Mon Sep 17 00:00:00 2001 From: Elazar Date: Thu, 15 Sep 2016 00:55:06 +0300 Subject: [PATCH] Add signatures for cast() and NewType (#549) (Mypy ignores these in favor of hard-coded behaviors, but the signatures here may be useful for other tools.) --- stdlib/2.7/typing.pyi | 7 +++++-- stdlib/3/typing.pyi | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/stdlib/2.7/typing.pyi b/stdlib/2.7/typing.pyi index e64fa2ee3..90a22292d 100644 --- a/stdlib/2.7/typing.pyi +++ b/stdlib/2.7/typing.pyi @@ -5,7 +5,6 @@ from abc import abstractmethod, ABCMeta # Definitions of special type checking related constructs. Their definition # are not used, so their value does not matter. -cast = object() overload = object() Any = object() TypeVar = object() @@ -15,7 +14,6 @@ Callable = object() Type = object() builtinclass = object() _promote = object() -NewType = object() # Type aliases @@ -350,8 +348,13 @@ class Pattern(Generic[AnyStr]): def get_type_hints(obj: Callable) -> dict[str, Any]: ... +def cast(tp: Type[_T], obj: Any) -> _T: ... + # Type constructors # NamedTuple is special-cased in the type checker; the initializer is ignored. def NamedTuple(typename: str, fields: Iterable[Tuple[str, Any]], *, verbose: bool = ..., rename: bool = ...) -> Type[tuple]: ... + +def NewType(name: str, tp: Type[_T]) -> Type[_T]: ... + diff --git a/stdlib/3/typing.pyi b/stdlib/3/typing.pyi index b3500fb68..9629020a3 100644 --- a/stdlib/3/typing.pyi +++ b/stdlib/3/typing.pyi @@ -6,7 +6,6 @@ from abc import abstractmethod, ABCMeta # Definitions of special type checking related constructs. Their definition # are not used, so their value does not matter. -cast = object() overload = object() Any = object() TypeVar = object() @@ -17,7 +16,6 @@ Type = object() builtinclass = object() _promote = object() no_type_check = object() -NewType = object() # Type aliases and type constructors @@ -420,8 +418,13 @@ class Pattern(Generic[AnyStr]): def get_type_hints(obj: Callable) -> dict[str, Any]: ... +def cast(tp: Type[_T], obj: Any) -> _T: ... + # Type constructors # NamedTuple is special-cased in the type checker; the initializer is ignored. def NamedTuple(typename: str, fields: Iterable[Tuple[str, Any]], *, verbose: bool = ..., rename: bool = ..., module: str = None) -> Type[tuple]: ... + +def NewType(name: str, tp: Type[_T]) -> Type[_T]: ... +