1from types import ModuleType
2from typing import IO, Any, Callable, Dict, Iterable, List, Optional, Sequence, Text, Union
3
4class Error(Exception): ...
5
6FlagsError = Error
7
8class DuplicateFlag(FlagsError): ...
9class CantOpenFlagFileError(FlagsError): ...
10class DuplicateFlagCannotPropagateNoneToSwig(DuplicateFlag): ...
11
12class DuplicateFlagError(DuplicateFlag):
13    def __init__(self, flagname: str, flag_values: FlagValues, other_flag_values: FlagValues = ...) -> None: ...
14
15class IllegalFlagValueError(FlagsError): ...
16
17IllegalFlagValue = IllegalFlagValueError
18
19class UnrecognizedFlag(FlagsError): ...
20
21class UnrecognizedFlagError(UnrecognizedFlag):
22    def __init__(self, flagname: str, flagvalue: str = ...) -> None: ...
23
24def get_help_width() -> int: ...
25
26GetHelpWidth = get_help_width
27
28def text_wrap(text: str, length: int = ..., indent: str = ..., firstline_indent: str = ..., tabs: str = ...) -> str: ...
29
30TextWrap = text_wrap
31
32def doc_to_help(doc: str) -> str: ...
33
34DocToHelp = doc_to_help
35
36class FlagValues:
37    def __init__(self) -> None: ...
38    def UseGnuGetOpt(self, use_gnu_getopt: bool = ...) -> None: ...
39    def is_gnu_getopt(self) -> bool: ...
40    IsGnuGetOpt = is_gnu_getopt
41    # TODO dict type
42    def FlagDict(self) -> Dict[Any, Any]: ...
43    def flags_by_module_dict(self) -> Dict[str, List[Flag]]: ...
44    FlagsByModuleDict = flags_by_module_dict
45    def flags_by_module_id_dict(self) -> Dict[int, List[Flag]]: ...
46    FlagsByModuleIdDict = flags_by_module_id_dict
47    def key_flags_by_module_dict(self) -> Dict[str, List[Flag]]: ...
48    KeyFlagsByModuleDict = key_flags_by_module_dict
49    def find_module_defining_flag(self, flagname: str, default: str = ...) -> str: ...
50    FindModuleDefiningFlag = find_module_defining_flag
51    def find_module_id_defining_flag(self, flagname: str, default: int = ...) -> int: ...
52    FindModuleIdDefiningFlag = find_module_id_defining_flag
53    def append_flag_values(self, flag_values: FlagValues) -> None: ...
54    AppendFlagValues = append_flag_values
55    def remove_flag_values(self, flag_values: FlagValues) -> None: ...
56    RemoveFlagValues = remove_flag_values
57    def __setitem__(self, name: str, flag: Flag) -> None: ...
58    def __getitem__(self, name: str) -> Flag: ...
59    def __getattr__(self, name: str) -> Any: ...
60    def __setattr__(self, name: str, value: Any) -> None: ...
61    def __delattr__(self, flag_name: str) -> None: ...
62    def set_default(self, name: str, value: Any) -> None: ...
63    SetDefault = set_default
64    def __contains__(self, name: str) -> bool: ...
65    has_key = __contains__
66    def __iter__(self) -> Iterable[str]: ...
67    def __call__(self, argv: List[str], known_only: bool = ...) -> List[str]: ...
68    def reset(self) -> None: ...
69    Reset = reset
70    def RegisteredFlags(self) -> List[str]: ...
71    def flag_values_dict(self) -> Dict[str, Any]: ...
72    FlagValuesDict = flag_values_dict
73    def __str__(self) -> str: ...
74    def GetHelp(self, prefix: str = ...) -> str: ...
75    def module_help(self, module: Union[ModuleType, str]) -> str: ...
76    ModuleHelp = module_help
77    def main_module_help(self) -> str: ...
78    MainModuleHelp = main_module_help
79    def get(self, name: str, default: Any) -> Any: ...
80    def ShortestUniquePrefixes(self, fl: Dict[str, Flag]) -> Dict[str, str]: ...
81    def ExtractFilename(self, flagfile_str: str) -> str: ...
82    def read_flags_from_files(self, argv: List[str], force_gnu: bool = ...) -> List[str]: ...
83    ReadFlagsFromFiles = read_flags_from_files
84    def flags_into_string(self) -> str: ...
85    FlagsIntoString = flags_into_string
86    def append_flags_into_file(self, filename: str) -> None: ...
87    AppendFlagsIntoFile = append_flags_into_file
88    def write_help_in_xml_format(self, outfile: IO[str] = ...) -> None: ...
89    WriteHelpInXMLFormat = write_help_in_xml_format
90    # TODO validator: gflags_validators.Validator
91    def AddValidator(self, validator: Any) -> None: ...
92    def is_parsed(self) -> bool: ...
93    IsParsed = is_parsed
94
95FLAGS: FlagValues
96
97class Flag:
98    name: str
99    default: Any
100    default_as_str: str
101    value: Any
102    help: str
103    short_name: str
104    boolean = False
105    present = False
106    parser: ArgumentParser
107    serializer: ArgumentSerializer
108    allow_override = False
109    def __init__(
110        self,
111        parser: ArgumentParser,
112        serializer: ArgumentSerializer,
113        name: str,
114        default: Optional[str],
115        help_string: str,
116        short_name: str = ...,
117        boolean: bool = ...,
118        allow_override: bool = ...,
119    ) -> None: ...
120    def Parse(self, argument: Any) -> Any: ...
121    def Unparse(self) -> None: ...
122    def Serialize(self) -> str: ...
123    def SetDefault(self, value: Any) -> None: ...
124    def Type(self) -> str: ...
125    def WriteInfoInXMLFormat(self, outfile: IO[str], module_name: str, is_key: bool = ..., indent: str = ...) -> None: ...
126
127class ArgumentParser(object):
128    syntactic_help: str
129    # TODO what is this
130    def parse(self, argument: Any) -> Any: ...
131    Parser = parse
132    def flag_type(self) -> str: ...
133    Type = flag_type
134    def WriteCustomInfoInXMLFormat(self, outfile: IO[str], indent: str) -> None: ...
135
136class ArgumentSerializer:
137    def Serialize(self, value: Any) -> Text: ...
138
139class ListSerializer(ArgumentSerializer):
140    def __init__(self, list_sep: str) -> None: ...
141    def Serialize(self, value: List[Any]) -> str: ...
142
143def register_validator(
144    flag_name: str, checker: Callable[[Any], bool], message: str = ..., flag_values: FlagValues = ...
145) -> None: ...
146
147RegisterValidator = register_validator
148
149def mark_flag_as_required(flag_name: str, flag_values: FlagValues = ...) -> None: ...
150
151MarkFlagAsRequired = mark_flag_as_required
152
153def mark_flags_as_required(flag_names: Iterable[str], flag_values: FlagValues = ...) -> None: ...
154
155MarkFlagsAsRequired = mark_flags_as_required
156
157def mark_flags_as_mutual_exclusive(flag_names: Iterable[str], required: bool = ..., flag_values: FlagValues = ...) -> None: ...
158
159MarkFlagsAsMutualExclusive = mark_flags_as_mutual_exclusive
160
161def DEFINE(
162    parser: ArgumentParser,
163    name: str,
164    default: Any,
165    help: str,
166    flag_values: FlagValues = ...,
167    serializer: ArgumentSerializer = ...,
168    **args: Any,
169) -> None: ...
170def DEFINE_flag(flag: Flag, flag_values: FlagValues = ...) -> None: ...
171def declare_key_flag(flag_name: str, flag_values: FlagValues = ...) -> None: ...
172
173DECLARE_key_flag = declare_key_flag
174
175def adopt_module_key_flags(module: ModuleType, flag_values: FlagValues = ...) -> None: ...
176
177ADOPT_module_key_flags = adopt_module_key_flags
178
179def DEFINE_string(name: str, default: Optional[str], help: str, flag_values: FlagValues = ..., **args: Any) -> None: ...
180
181class BooleanParser(ArgumentParser):
182    def Convert(self, argument: Any) -> bool: ...
183    def Parse(self, argument: Any) -> bool: ...
184
185class BooleanFlag(Flag):
186    def __init__(self, name: str, default: Optional[bool], help: str, short_name: str = ..., **args: Any) -> None: ...
187
188def DEFINE_boolean(name: str, default: Optional[bool], help: str, flag_values: FlagValues = ..., **args: Any) -> None: ...
189
190DEFINE_bool = DEFINE_boolean
191
192class HelpFlag(BooleanFlag):
193    def __init__(self) -> None: ...
194    def Parse(self, arg: Any) -> None: ...
195
196class HelpXMLFlag(BooleanFlag):
197    def __init__(self) -> None: ...
198    def Parse(self, arg: Any) -> None: ...
199
200class HelpshortFlag(BooleanFlag):
201    def __init__(self) -> None: ...
202    def Parse(self, arg: Any) -> None: ...
203
204class NumericParser(ArgumentParser):
205    def IsOutsideBounds(self, val: float) -> bool: ...
206    def Parse(self, argument: Any) -> float: ...
207    def WriteCustomInfoInXMLFormat(self, outfile: IO[str], indent: str) -> None: ...
208    def Convert(self, argument: Any) -> Any: ...
209
210class FloatParser(NumericParser):
211    number_article: str
212    number_name: str
213    syntactic_help: str
214    def __init__(self, lower_bound: float = ..., upper_bound: float = ...) -> None: ...
215    def Convert(self, argument: Any) -> float: ...
216
217def DEFINE_float(
218    name: str,
219    default: Optional[float],
220    help: str,
221    lower_bound: float = ...,
222    upper_bound: float = ...,
223    flag_values: FlagValues = ...,
224    **args: Any,
225) -> None: ...
226
227class IntegerParser(NumericParser):
228    number_article: str
229    number_name: str
230    syntactic_help: str
231    def __init__(self, lower_bound: int = ..., upper_bound: int = ...) -> None: ...
232    def Convert(self, argument: Any) -> int: ...
233
234def DEFINE_integer(
235    name: str,
236    default: Optional[int],
237    help: str,
238    lower_bound: int = ...,
239    upper_bound: int = ...,
240    flag_values: FlagValues = ...,
241    **args: Any,
242) -> None: ...
243
244class EnumParser(ArgumentParser):
245    def __init__(self, enum_values: List[str]) -> None: ...
246    def Parse(self, argument: Any) -> Any: ...
247
248class EnumFlag(Flag):
249    def __init__(
250        self, name: str, default: Optional[str], help: str, enum_values: List[str], short_name: str, **args: Any
251    ) -> None: ...
252
253def DEFINE_enum(
254    name: str, default: Optional[str], enum_values: Iterable[str], help: str, flag_values: FlagValues = ..., **args: Any
255) -> None: ...
256
257class BaseListParser(ArgumentParser):
258    def __init__(self, token: str = ..., name: str = ...) -> None: ...
259    def Parse(self, argument: Any) -> List[Any]: ...
260
261class ListParser(BaseListParser):
262    def __init__(self) -> None: ...
263
264class WhitespaceSeparatedListParser(BaseListParser):
265    def __init__(self) -> None: ...
266
267def DEFINE_list(name: str, default: Optional[List[str]], help: str, flag_values: FlagValues = ..., **args: Any) -> None: ...
268def DEFINE_spaceseplist(
269    name: str, default: Optional[List[str]], help: str, flag_values: FlagValues = ..., **args: Any
270) -> None: ...
271
272class MultiFlag(Flag):
273    def __init__(self, *args: Any, **kwargs: Any) -> None: ...
274    def Parse(self, arguments: Any) -> None: ...
275    def Serialize(self) -> str: ...
276
277def DEFINE_multi_string(
278    name: str, default: Optional[Union[str, List[str]]], help: str, flag_values: FlagValues = ..., **args: Any
279) -> None: ...
280
281DEFINE_multistring = DEFINE_multi_string
282
283def DEFINE_multi_integer(
284    name: str,
285    default: Optional[Union[int, List[int]]],
286    help: str,
287    lower_bound: int = ...,
288    upper_bound: int = ...,
289    flag_values: FlagValues = ...,
290    **args: Any,
291) -> None: ...
292
293DEFINE_multi_int = DEFINE_multi_integer
294
295def DEFINE_multi_float(
296    name: str,
297    default: Optional[Union[float, List[float]]],
298    help: str,
299    lower_bound: float = ...,
300    upper_bound: float = ...,
301    flag_values: FlagValues = ...,
302    **args: Any,
303) -> None: ...
304def DEFINE_multi_enum(
305    name: str,
306    default: Optional[Union[Sequence[str], str]],
307    enum_values: Sequence[str],
308    help: str,
309    flag_values: FlagValues = ...,
310    case_sensitive: bool = ...,
311    **args: Any,
312) -> None: ...
313