1# Copyright 2020 The Abseil Authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14"""This modules contains type annotated stubs for DEFINE functions."""
15
16
17from absl.flags import _argument_parser
18from absl.flags import _flag
19from absl.flags import _flagvalues
20
21import enum
22
23from typing import Text, List, Any, TypeVar, Optional, Union, Type, Iterable, overload
24
25_T = TypeVar('_T')
26_ET = TypeVar('_ET', bound=enum.Enum)
27
28
29def DEFINE(
30    parser: _argument_parser.ArgumentParser[_T],
31    name: Text,
32    default: Any,
33    help: Optional[Text],
34    # Explicitly replacing ... with _flagvalues.FLAGS causes pytype to
35    # not like the syntax.
36    flag_values : _flagvalues.FlagValues = ...,
37    serializer: Optional[_argument_parser.ArgumentSerializer[_T]] = None,
38    module_name: Optional[Text] = None,
39    **args: Any) -> _flagvalues.FlagHolder[Optional[_T]]:
40  ...
41
42
43
44def DEFINE_flag(
45    flag: _flag.Flag[_T],
46    flag_values: _flagvalues.FlagValues = ...,
47    module_name: Optional[Text] = None) -> _flagvalues.FlagHolder[Optional[_T]]:
48  ...
49
50@overload
51def DEFINE_string(
52    name: Text,
53    default: None,
54    help: Optional[Text],
55    flag_values: _flagvalues.FlagValues = ...,
56    **args: Any) -> _flagvalues.FlagHolder[Optional[Text]]:
57  ...
58
59@overload
60def DEFINE_string(
61    name: Text,
62    default: Text,
63    help: Optional[Text],
64    flag_values: _flagvalues.FlagValues = ...,
65    **args: Any) -> _flagvalues.FlagHolder[Text]:
66  ...
67
68@overload
69def DEFINE_boolean(
70    name : Text,
71    default: None,
72    help: Optional[Text],
73    flag_values: _flagvalues.FlagValues = ...,
74    module_name: Optional[Text] = None,
75    **args: Any) -> _flagvalues.FlagHolder[Optional[bool]]:
76  ...
77
78@overload
79def DEFINE_boolean(
80    name : Text,
81    default: Union[Text, bool, int],
82    help: Optional[Text],
83    flag_values: _flagvalues.FlagValues = ...,
84    module_name: Optional[Text] = None,
85    **args: Any) -> _flagvalues.FlagHolder[bool]:
86  ...
87
88@overload
89def DEFINE_float(
90    name: Text,
91    default: None,
92    help: Optional[Text],
93    lower_bound: Optional[float] = None,
94    upper_bound: Optional[float] = None,
95    flag_values: _flagvalues.FlagValues = ...,
96    **args: Any) -> _flagvalues.FlagHolder[Optional[float]]:
97  ...
98
99@overload
100def DEFINE_float(
101    name: Text,
102    default: Union[float, Text],
103    help: Optional[Text],
104    lower_bound: Optional[float] = None,
105    upper_bound: Optional[float] = None,
106    flag_values: _flagvalues.FlagValues = ...,
107    **args: Any) -> _flagvalues.FlagHolder[float]:
108  ...
109
110
111@overload
112def DEFINE_integer(
113    name: Text,
114    default: None,
115    help: Optional[Text],
116    lower_bound: Optional[int] = None,
117    upper_bound: Optional[int] = None,
118    flag_values: _flagvalues.FlagValues = ...,
119    **args: Any) -> _flagvalues.FlagHolder[Optional[int]]:
120  ...
121
122@overload
123def DEFINE_integer(
124    name: Text,
125    default: Union[int, Text],
126    help: Optional[Text],
127    lower_bound: Optional[int] = None,
128    upper_bound: Optional[int] = None,
129    flag_values: _flagvalues.FlagValues = ...,
130    **args: Any) -> _flagvalues.FlagHolder[int]:
131  ...
132
133@overload
134def DEFINE_enum(
135    name : Text,
136    default: None,
137    enum_values: Iterable[Text],
138    help: Optional[Text],
139    flag_values: _flagvalues.FlagValues = ...,
140    module_name:  Optional[Text] = None,
141    **args: Any) -> _flagvalues.FlagHolder[Optional[Text]]:
142  ...
143
144@overload
145def DEFINE_enum(
146    name : Text,
147    default: Text,
148    enum_values: Iterable[Text],
149    help: Optional[Text],
150    flag_values: _flagvalues.FlagValues = ...,
151    module_name:  Optional[Text] = None,
152    **args: Any) -> _flagvalues.FlagHolder[Text]:
153  ...
154
155@overload
156def DEFINE_enum_class(
157    name: Text,
158    default: None,
159    enum_class: Type[_ET],
160    help: Optional[Text],
161    flag_values: _flagvalues.FlagValues = ...,
162    module_name: Optional[Text] = None,
163    case_sensitive: bool = ...,
164    **args: Any) -> _flagvalues.FlagHolder[Optional[_ET]]:
165  ...
166
167@overload
168def DEFINE_enum_class(
169    name: Text,
170    default: Union[_ET, Text],
171    enum_class: Type[_ET],
172    help: Optional[Text],
173    flag_values: _flagvalues.FlagValues = ...,
174    module_name: Optional[Text] = None,
175    case_sensitive: bool = ...,
176    **args: Any) -> _flagvalues.FlagHolder[_ET]:
177  ...
178
179
180@overload
181def DEFINE_list(
182    name: Text,
183    default: None,
184    help: Text,
185    flag_values: _flagvalues.FlagValues  = ...,
186    **args: Any) -> _flagvalues.FlagHolder[Optional[List[Text]]]:
187  ...
188
189@overload
190def DEFINE_list(
191    name: Text,
192    default: Union[Iterable[Text], Text],
193    help: Text,
194    flag_values: _flagvalues.FlagValues  = ...,
195    **args: Any) -> _flagvalues.FlagHolder[List[Text]]:
196  ...
197
198@overload
199def DEFINE_spaceseplist(
200    name: Text,
201    default: None,
202    help: Text,
203    comma_compat: bool = False,
204    flag_values: _flagvalues.FlagValues = ...,
205    **args: Any) -> _flagvalues.FlagHolder[Optional[List[Text]]]:
206  ...
207
208@overload
209def DEFINE_spaceseplist(
210    name: Text,
211    default: Union[Iterable[Text], Text],
212    help: Text,
213    comma_compat: bool = False,
214    flag_values: _flagvalues.FlagValues = ...,
215    **args: Any) -> _flagvalues.FlagHolder[List[Text]]:
216  ...
217
218@overload
219def DEFINE_multi(
220    parser : _argument_parser.ArgumentParser[_T],
221    serializer: _argument_parser.ArgumentSerializer[_T],
222    name: Text,
223    default: None,
224    help: Text,
225    flag_values:_flagvalues.FlagValues = ...,
226    module_name: Optional[Text] = None,
227    **args: Any) -> _flagvalues.FlagHolder[Optional[List[_T]]]:
228  ...
229
230@overload
231def DEFINE_multi(
232    parser : _argument_parser.ArgumentParser[_T],
233    serializer: _argument_parser.ArgumentSerializer[_T],
234    name: Text,
235    default: Union[Iterable[_T], _T, Text],
236    help: Text,
237    flag_values:_flagvalues.FlagValues = ...,
238    module_name: Optional[Text] = None,
239    **args: Any) -> _flagvalues.FlagHolder[List[_T]]:
240  ...
241
242@overload
243def DEFINE_multi_string(
244    name: Text,
245    default: None,
246    help: Text,
247    flag_values: _flagvalues.FlagValues = ...,
248    **args: Any) -> _flagvalues.FlagHolder[Optional[List[Text]]]:
249  ...
250
251@overload
252def DEFINE_multi_string(
253    name: Text,
254    default: Union[Iterable[Text], Text],
255    help: Text,
256    flag_values: _flagvalues.FlagValues = ...,
257    **args: Any) -> _flagvalues.FlagHolder[List[Text]]:
258  ...
259
260@overload
261def DEFINE_multi_integer(
262    name: Text,
263    default: None,
264    help: Text,
265    lower_bound: Optional[int] = None,
266    upper_bound: Optional[int] = None,
267    flag_values: _flagvalues.FlagValues = ...,
268    **args: Any) -> _flagvalues.FlagHolder[Optional[List[int]]]:
269  ...
270
271@overload
272def DEFINE_multi_integer(
273    name: Text,
274    default: Union[Iterable[int], int, Text],
275    help: Text,
276    lower_bound: Optional[int] = None,
277    upper_bound: Optional[int] = None,
278    flag_values: _flagvalues.FlagValues = ...,
279    **args: Any) -> _flagvalues.FlagHolder[List[int]]:
280  ...
281
282@overload
283def DEFINE_multi_float(
284    name: Text,
285    default: None,
286    help: Text,
287    lower_bound: Optional[float] = None,
288    upper_bound: Optional[float] = None,
289    flag_values: _flagvalues.FlagValues = ...,
290    **args: Any) -> _flagvalues.FlagHolder[Optional[List[float]]]:
291  ...
292
293@overload
294def DEFINE_multi_float(
295    name: Text,
296    default: Union[Iterable[float], float, Text],
297    help: Text,
298    lower_bound: Optional[float] = None,
299    upper_bound: Optional[float] = None,
300    flag_values: _flagvalues.FlagValues = ...,
301    **args: Any) -> _flagvalues.FlagHolder[List[float]]:
302  ...
303
304
305@overload
306def DEFINE_multi_enum(
307    name: Text,
308    default: None,
309    enum_values: Iterable[Text],
310    help: Text,
311    flag_values: _flagvalues.FlagValues = ...,
312    **args: Any) -> _flagvalues.FlagHolder[Optional[List[Text]]]:
313  ...
314
315@overload
316def DEFINE_multi_enum(
317    name: Text,
318    default: Union[Iterable[Text], Text],
319    enum_values: Iterable[Text],
320    help: Text,
321    flag_values: _flagvalues.FlagValues = ...,
322    **args: Any) -> _flagvalues.FlagHolder[List[Text]]:
323  ...
324
325@overload
326def DEFINE_multi_enum_class(
327    name: Text,
328    default: None,
329    enum_class: Type[_ET],
330    help: Text,
331    flag_values: _flagvalues.FlagValues = ...,
332    module_name: Optional[Text] = None,
333    **args: Any) -> _flagvalues.FlagHolder[Optional[List[_ET]]]:
334  ...
335
336@overload
337def DEFINE_multi_enum_class(
338    name: Text,
339    default: Union[Iterable[_ET], _ET, Text],
340    enum_class: Type[_ET],
341    help: Text,
342    flag_values: _flagvalues.FlagValues = ...,
343    module_name: Optional[Text] = None,
344    **args: Any) -> _flagvalues.FlagHolder[List[_ET]]:
345  ...
346
347
348
349def DEFINE_alias(
350    name: Text,
351    original_name: Text,
352    flag_values: _flagvalues.FlagValues = ...,
353    module_name: Optional[Text] = None) -> _flagvalues.FlagHolder[Any]:
354  ...
355
356
357
358def declare_key_flag(flag_name: Text,
359                     flag_values: _flagvalues.FlagValues = ...) -> None:
360  ...
361
362
363
364def adopt_module_key_flags(module: Any,
365                           flag_values: _flagvalues.FlagValues = ...) -> None:
366  ...
367
368
369
370def disclaim_key_flags() -> None:
371  ...
372