From c13805f79414939b976ae4a4f118cdbab21d7eb0 Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Sat, 19 Aug 2017 15:48:33 +0200 Subject: [PATCH 1/5] Add Protocol and runtime to typing_extensions --- third_party/2and3/typing_extensions.pyi | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/third_party/2and3/typing_extensions.pyi b/third_party/2and3/typing_extensions.pyi index 67d671ba1074..61286d312dfb 100644 --- a/third_party/2and3/typing_extensions.pyi +++ b/third_party/2and3/typing_extensions.pyi @@ -11,6 +11,11 @@ from typing import overload as overload from typing import Text as Text from typing import Type as Type from typing import TYPE_CHECKING as TYPE_CHECKING +from typing import TypeVar, Any + +T = TypeVar('T') +class _SpecialForm: + def __getitem__(self, typeargs: Any) -> Any: ... if sys.version_info >= (3, 3): from typing import ChainMap as ChainMap @@ -24,3 +29,7 @@ if sys.version_info >= (3, 5): if sys.version_info >= (3, 6): from typing import AsyncGenerator as AsyncGenerator + +is sys.version_info >= (3, 5, 2) or sys.version_info < (3, 5, 0): + def runtime(cls: T) -> T: ... + Protocol: _SpecialForm = ... From bf6d2f78812a83d01be92b2aa8bfbe45d7fc419a Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Sat, 19 Aug 2017 15:50:53 +0200 Subject: [PATCH 2/5] Use private type variable --- third_party/2and3/typing_extensions.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/2and3/typing_extensions.pyi b/third_party/2and3/typing_extensions.pyi index 61286d312dfb..a63cab8c8a7a 100644 --- a/third_party/2and3/typing_extensions.pyi +++ b/third_party/2and3/typing_extensions.pyi @@ -13,7 +13,7 @@ from typing import Type as Type from typing import TYPE_CHECKING as TYPE_CHECKING from typing import TypeVar, Any -T = TypeVar('T') +_T = TypeVar('_T') class _SpecialForm: def __getitem__(self, typeargs: Any) -> Any: ... @@ -31,5 +31,5 @@ if sys.version_info >= (3, 6): from typing import AsyncGenerator as AsyncGenerator is sys.version_info >= (3, 5, 2) or sys.version_info < (3, 5, 0): - def runtime(cls: T) -> T: ... + def runtime(cls: _T) -> _T: ... Protocol: _SpecialForm = ... From 7ec92dd4c7e966937c1a4331e16f0faa76e1c156 Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Sat, 19 Aug 2017 15:56:54 +0200 Subject: [PATCH 3/5] Fix typo --- third_party/2and3/typing_extensions.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/2and3/typing_extensions.pyi b/third_party/2and3/typing_extensions.pyi index a63cab8c8a7a..ab90e276e3e3 100644 --- a/third_party/2and3/typing_extensions.pyi +++ b/third_party/2and3/typing_extensions.pyi @@ -30,6 +30,6 @@ if sys.version_info >= (3, 5): if sys.version_info >= (3, 6): from typing import AsyncGenerator as AsyncGenerator -is sys.version_info >= (3, 5, 2) or sys.version_info < (3, 5, 0): +if sys.version_info >= (3, 5, 2) or sys.version_info < (3, 5, 0): def runtime(cls: _T) -> _T: ... Protocol: _SpecialForm = ... From 4724705445238a46b1128aea1ffdc6e7d6cb2eac Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Sat, 19 Aug 2017 21:51:54 +0200 Subject: [PATCH 4/5] Bound type variable for runtime to only class objects --- third_party/2and3/typing_extensions.pyi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/third_party/2and3/typing_extensions.pyi b/third_party/2and3/typing_extensions.pyi index ab90e276e3e3..7b26e4216f41 100644 --- a/third_party/2and3/typing_extensions.pyi +++ b/third_party/2and3/typing_extensions.pyi @@ -13,7 +13,7 @@ from typing import Type as Type from typing import TYPE_CHECKING as TYPE_CHECKING from typing import TypeVar, Any -_T = TypeVar('_T') +_TC = TypeVar('_TC', bound=Type[object]) class _SpecialForm: def __getitem__(self, typeargs: Any) -> Any: ... @@ -31,5 +31,5 @@ if sys.version_info >= (3, 6): from typing import AsyncGenerator as AsyncGenerator if sys.version_info >= (3, 5, 2) or sys.version_info < (3, 5, 0): - def runtime(cls: _T) -> _T: ... + def runtime(cls: _TC) -> _TC: ... Protocol: _SpecialForm = ... From 8beda7403291340cfac788a859a1d0f658493750 Mon Sep 17 00:00:00 2001 From: Ivan Levkivskyi Date: Mon, 21 Aug 2017 18:45:33 +0200 Subject: [PATCH 5/5] Conform to version check specification --- third_party/2and3/typing_extensions.pyi | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/third_party/2and3/typing_extensions.pyi b/third_party/2and3/typing_extensions.pyi index 7b26e4216f41..23cb4af45a46 100644 --- a/third_party/2and3/typing_extensions.pyi +++ b/third_party/2and3/typing_extensions.pyi @@ -16,6 +16,8 @@ from typing import TypeVar, Any _TC = TypeVar('_TC', bound=Type[object]) class _SpecialForm: def __getitem__(self, typeargs: Any) -> Any: ... +def runtime(cls: _TC) -> _TC: ... +Protocol: _SpecialForm = ... if sys.version_info >= (3, 3): from typing import ChainMap as ChainMap @@ -29,7 +31,3 @@ if sys.version_info >= (3, 5): if sys.version_info >= (3, 6): from typing import AsyncGenerator as AsyncGenerator - -if sys.version_info >= (3, 5, 2) or sys.version_info < (3, 5, 0): - def runtime(cls: _TC) -> _TC: ... - Protocol: _SpecialForm = ...