• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
15"""Defines type annotations for _flagvalues."""
16
17
18from absl.flags import _flag
19
20from typing import Any, Dict, Generic, Iterable, Iterator, List, Optional, Sequence, Text, Type, TypeVar
21
22
23class FlagValues:
24
25  def __getitem__(self, name: Text) -> _flag.Flag:  ...
26
27  def __setitem__(self, name: Text, flag: _flag.Flag) -> None:  ...
28
29  def __getattr__(self, name: Text) -> Any:  ...
30
31  def __setattr__(self, name: Text, value: Any) -> Any:  ...
32
33  def __call__(
34      self,
35      argv: Sequence[Text],
36      known_only: bool = ...,
37  ) -> List[Text]: ...
38
39  def __contains__(self, name: Text) -> bool: ...
40
41  def __copy__(self) -> Any: ...
42
43  def __deepcopy__(self, memo) -> Any: ...
44
45  def __delattr__(self, flag_name: Text) -> None: ...
46
47  def __dir__(self) -> List[Text]: ...
48
49  def __getstate__(self) -> Any: ...
50
51  def __iter__(self) -> Iterator[Text]: ...
52
53  def __len__(self) -> int: ...
54
55  def get_help(self,
56               prefix: Text = ...,
57               include_special_flags: bool = ...) -> Text:
58    ...
59
60
61  def set_gnu_getopt(self, gnu_getopt: bool = ...) -> None: ...
62
63  def is_gnu_getopt(self) -> bool: ...
64
65  def flags_by_module_dict(self) -> Dict[Text, List[_flag.Flag]]: ...
66
67  def flags_by_module_id_dict(self) -> Dict[Text, List[_flag.Flag]]: ...
68
69  def key_flags_by_module_dict(self) -> Dict[Text, List[_flag.Flag]]: ...
70
71  def register_flag_by_module(
72    self, module_name: Text, flag: _flag.Flag) -> None: ...
73
74  def register_flag_by_module_id(
75    self, module_id: Text, flag: _flag.Flag) -> None: ...
76
77  def register_key_flag_for_module(
78    self, module_name: Text, flag: _flag.Flag) -> None: ...
79
80  def get_key_flags_for_module(self, module: Any) -> List[_flag.Flag]: ...
81
82  def find_module_defining_flag(
83    self, flagname: Text, default: Any = ...) -> Any:
84    ...
85
86  def find_module_id_defining_flag(
87    self, flagname: Text, default: Any = ...) -> Any:
88    ...
89
90  def append_flag_values(self, flag_values: Any) -> None: ...
91
92  def remove_flag_values(self, flag_values: Any) -> None: ...
93
94  def validate_all_flags(self) -> None: ...
95
96  def set_default(self, name: Text, value: Any) -> None: ...
97
98  def is_parsed(self) -> bool: ...
99
100  def mark_as_parsed(self) -> None: ...
101
102  def unparse_flags(self) -> None: ...
103
104  def flag_values_dict(self) -> Dict[Text, Any]: ...
105
106  def module_help(self, module: Any) -> Text: ...
107
108  def main_module_help(self) -> Text: ...
109
110  def get_flag_value(self, name: Text, default: Any) -> Any: ...
111
112  def read_flags_from_files(
113    self, argv: List[Text], force_gnu: bool = ...) -> List[Text]: ...
114
115  def flags_into_string(self) -> Text: ...
116
117  def append_flags_into_file(self, filename: Text) -> None:...
118
119  # outfile is Optional[fileobject]
120  def write_help_in_xml_format(self, outfile: Any = ...) -> None: ...
121
122
123FLAGS = ...  # type: FlagValues
124
125
126_T = TypeVar('_T')  # The type of parsed default value of the flag.
127
128# We assume that default and value are guaranteed to have the same type.
129class FlagHolder(Generic[_T]):
130  def __init__(
131    self,
132    flag_values: FlagValues,
133    # NOTE: Use Flag instead of Flag[T] is used to work around some superficial
134    # differences between Flag and FlagHolder typing.
135    flag: _flag.Flag,
136    ensure_non_none_value: bool=False) -> None: ...
137
138  @property
139  def name(self) -> Text: ...
140
141  @property
142  def value(self) -> _T: ...
143
144  @property
145  def default(self) -> _T: ...
146
147  @property
148  def present(self) -> bool: ...
149