1
1
from distutils .version import Version
2
- from typing import Any , Callable , Dict , List , Optional , Tuple , Type , TypeVar , Union , Text , overload
2
+ from typing import Any , Callable , Dict , List , Optional , Tuple , Type , TypeVar , Union , Text , overload , Protocol
3
3
4
4
from click .core import Command , Group , Argument , Option , Parameter , Context , _ConvertibleType
5
5
6
6
_T = TypeVar ('_T' )
7
7
_F = TypeVar ('_F' , bound = Callable [..., Any ])
8
8
9
- # Until https://github.com/python/mypy/issues/3924 is fixed you can't do the following:
10
- # _Decorator = Callable[[_F], _F]
9
+ class _IdentityFunction (Protocol ):
10
+ def __call__ (self , __x : _T ) -> _T : ...
11
+
11
12
12
13
_Callback = Callable [
13
14
[Context , Union [Option , Parameter ], Any ],
@@ -24,7 +25,7 @@ def pass_obj(__f: _T) -> _T:
24
25
25
26
def make_pass_decorator (
26
27
object_type : type , ensure : bool = ...
27
- ) -> Callable [[ _T ], _T ] :
28
+ ) -> _IdentityFunction :
28
29
...
29
30
30
31
@@ -85,7 +86,7 @@ def argument(
85
86
is_eager : bool = ...,
86
87
envvar : Optional [Union [str , List [str ]]] = ...,
87
88
autocompletion : Optional [Callable [[Any , List [str ], str ], List [Union [str , Tuple [str , str ]]]]] = ...,
88
- ) -> Callable [[ _F ], _F ] :
89
+ ) -> _IdentityFunction :
89
90
...
90
91
91
92
@@ -117,7 +118,7 @@ def option(
117
118
envvar : Optional [Union [str , List [str ]]] = ...,
118
119
# User-defined
119
120
** kwargs : Any ,
120
- ) -> Callable [[ _F ], _F ] :
121
+ ) -> _IdentityFunction :
121
122
...
122
123
123
124
@@ -149,7 +150,7 @@ def option(
149
150
envvar : Optional [Union [str , List [str ]]] = ...,
150
151
# User-defined
151
152
** kwargs : Any ,
152
- ) -> Callable [[ _F ], _F ] :
153
+ ) -> _IdentityFunction :
153
154
...
154
155
155
156
@@ -181,7 +182,7 @@ def option(
181
182
envvar : Optional [Union [str , List [str ]]] = ...,
182
183
# User-defined
183
184
** kwargs : Any ,
184
- ) -> Callable [[ _F ], _F ] :
185
+ ) -> _IdentityFunction :
185
186
...
186
187
187
188
@@ -213,7 +214,7 @@ def option(
213
214
envvar : Optional [Union [str , List [str ]]] = ...,
214
215
# User-defined
215
216
** kwargs : Any ,
216
- ) -> Callable [[ _F ], _F ] :
217
+ ) -> _IdentityFunction :
217
218
...
218
219
219
220
@@ -241,7 +242,7 @@ def confirmation_option(
241
242
expose_value : bool = ...,
242
243
is_eager : bool = ...,
243
244
envvar : Optional [Union [str , List [str ]]] = ...
244
- ) -> Callable [[ _F ], _F ] :
245
+ ) -> _IdentityFunction :
245
246
...
246
247
247
248
@@ -269,7 +270,7 @@ def password_option(
269
270
expose_value : bool = ...,
270
271
is_eager : bool = ...,
271
272
envvar : Optional [Union [str , List [str ]]] = ...
272
- ) -> Callable [[ _F ], _F ] :
273
+ ) -> _IdentityFunction :
273
274
...
274
275
275
276
@@ -300,7 +301,7 @@ def version_option(
300
301
expose_value : bool = ...,
301
302
is_eager : bool = ...,
302
303
envvar : Optional [Union [str , List [str ]]] = ...
303
- ) -> Callable [[ _F ], _F ] :
304
+ ) -> _IdentityFunction :
304
305
...
305
306
306
307
@@ -328,5 +329,5 @@ def help_option(
328
329
expose_value : bool = ...,
329
330
is_eager : bool = ...,
330
331
envvar : Optional [Union [str , List [str ]]] = ...
331
- ) -> Callable [[ _F ], _F ] :
332
+ ) -> _IdentityFunction :
332
333
...
0 commit comments