From 1d16e6c49e4932adfe549f25742bbee7ed8dbd83 Mon Sep 17 00:00:00 2001 From: Mark Mendoza Date: Fri, 26 Jun 2020 07:48:40 -0700 Subject: [PATCH] Replacing Callable[[T], T] with callback protocol in click (#4045) --- third_party/2and3/click/decorators.pyi | 27 +++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/third_party/2and3/click/decorators.pyi b/third_party/2and3/click/decorators.pyi index 4d7da5fb8..083146965 100644 --- a/third_party/2and3/click/decorators.pyi +++ b/third_party/2and3/click/decorators.pyi @@ -1,13 +1,14 @@ from distutils.version import Version -from typing import Any, Callable, Dict, List, Optional, Tuple, Type, TypeVar, Union, Text, overload +from typing import Any, Callable, Dict, List, Optional, Tuple, Type, TypeVar, Union, Text, overload, Protocol from click.core import Command, Group, Argument, Option, Parameter, Context, _ConvertibleType _T = TypeVar('_T') _F = TypeVar('_F', bound=Callable[..., Any]) -# Until https://github.com/python/mypy/issues/3924 is fixed you can't do the following: -# _Decorator = Callable[[_F], _F] +class _IdentityFunction(Protocol): + def __call__(self, __x: _T) -> _T: ... + _Callback = Callable[ [Context, Union[Option, Parameter], Any], @@ -24,7 +25,7 @@ def pass_obj(__f: _T) -> _T: def make_pass_decorator( object_type: type, ensure: bool = ... -) -> Callable[[_T], _T]: +) -> _IdentityFunction: ... @@ -85,7 +86,7 @@ def argument( is_eager: bool = ..., envvar: Optional[Union[str, List[str]]] = ..., autocompletion: Optional[Callable[[Any, List[str], str], List[Union[str, Tuple[str, str]]]]] = ..., -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -117,7 +118,7 @@ def option( envvar: Optional[Union[str, List[str]]] = ..., # User-defined **kwargs: Any, -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -149,7 +150,7 @@ def option( envvar: Optional[Union[str, List[str]]] = ..., # User-defined **kwargs: Any, -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -181,7 +182,7 @@ def option( envvar: Optional[Union[str, List[str]]] = ..., # User-defined **kwargs: Any, -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -213,7 +214,7 @@ def option( envvar: Optional[Union[str, List[str]]] = ..., # User-defined **kwargs: Any, -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -241,7 +242,7 @@ def confirmation_option( expose_value: bool = ..., is_eager: bool = ..., envvar: Optional[Union[str, List[str]]] = ... -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -269,7 +270,7 @@ def password_option( expose_value: bool = ..., is_eager: bool = ..., envvar: Optional[Union[str, List[str]]] = ... -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -300,7 +301,7 @@ def version_option( expose_value: bool = ..., is_eager: bool = ..., envvar: Optional[Union[str, List[str]]] = ... -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ... @@ -328,5 +329,5 @@ def help_option( expose_value: bool = ..., is_eager: bool = ..., envvar: Optional[Union[str, List[str]]] = ... -) -> Callable[[_F], _F]: +) -> _IdentityFunction: ...