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