@@ -4,7 +4,10 @@ from typing import Any, Callable, Dict, List, Optional, Type, TypeVar, Union, Te
4
4
from click .core import Command , Group , Argument , Option , Parameter , Context , _ConvertibleType
5
5
6
6
_T = TypeVar ('_T' )
7
- _Decorator = Callable [[_T ], _T ]
7
+ _F = TypeVar ('_F' , bound = Callable [..., Any ])
8
+
9
+ # Until https://github.com/python/mypy/issues/3924 is fixed you can't do the following:
10
+ # _Decorator = Callable[[_F], _F]
8
11
9
12
_Callback = Callable [
10
13
[Context , Union [Option , Parameter ], Union [bool , int , str ]],
@@ -38,7 +41,7 @@ def command(
38
41
short_help : Optional [str ] = ...,
39
42
options_metavar : str = ...,
40
43
add_help_option : bool = ...,
41
- ) -> _Decorator :
44
+ ) -> Callable [[ _F ], _F ] :
42
45
...
43
46
44
47
@@ -63,7 +66,7 @@ def group(
63
66
add_help_option : bool = ...,
64
67
# User-defined
65
68
** kwargs : Any ,
66
- ) -> _Decorator :
69
+ ) -> Callable [[ _F ], _F ] :
67
70
...
68
71
69
72
@@ -81,7 +84,7 @@ def argument(
81
84
expose_value : bool = ...,
82
85
is_eager : bool = ...,
83
86
envvar : Optional [Union [str , List [str ]]] = ...
84
- ) -> _Decorator :
87
+ ) -> Callable [[ _F ], _F ] :
85
88
...
86
89
87
90
@@ -111,7 +114,7 @@ def option(
111
114
envvar : Optional [Union [str , List [str ]]] = ...,
112
115
# User-defined
113
116
** kwargs : Any ,
114
- ) -> _Decorator :
117
+ ) -> Callable [[ _F ], _F ] :
115
118
...
116
119
117
120
@@ -138,7 +141,7 @@ def confirmation_option(
138
141
expose_value : bool = ...,
139
142
is_eager : bool = ...,
140
143
envvar : Optional [Union [str , List [str ]]] = ...
141
- ) -> _Decorator :
144
+ ) -> Callable [[ _F ], _F ] :
142
145
...
143
146
144
147
@@ -165,7 +168,7 @@ def password_option(
165
168
expose_value : bool = ...,
166
169
is_eager : bool = ...,
167
170
envvar : Optional [Union [str , List [str ]]] = ...
168
- ) -> _Decorator :
171
+ ) -> Callable [[ _F ], _F ] :
169
172
...
170
173
171
174
@@ -195,7 +198,7 @@ def version_option(
195
198
expose_value : bool = ...,
196
199
is_eager : bool = ...,
197
200
envvar : Optional [Union [str , List [str ]]] = ...
198
- ) -> _Decorator :
201
+ ) -> Callable [[ _F ], _F ] :
199
202
...
200
203
201
204
@@ -222,5 +225,5 @@ def help_option(
222
225
expose_value : bool = ...,
223
226
is_eager : bool = ...,
224
227
envvar : Optional [Union [str , List [str ]]] = ...
225
- ) -> _Decorator :
228
+ ) -> Callable [[ _F ], _F ] :
226
229
...
0 commit comments