diff --git a/third_party/2and3/click/decorators.pyi b/third_party/2and3/click/decorators.pyi index 2df9506acf7a..930d1d78bc75 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(_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: ...