134 lines
3.5 KiB
Python
134 lines
3.5 KiB
Python
# Copyright 2020 The Abseil Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""Contains type annotations for Flag class."""
|
|
|
|
import copy
|
|
import functools
|
|
|
|
from absl.flags import _argument_parser
|
|
import enum
|
|
|
|
from typing import Text, TypeVar, Generic, Iterable, Type, List, Optional, Any, Union, Sequence
|
|
|
|
_T = TypeVar('_T')
|
|
_ET = TypeVar('_ET', bound=enum.Enum)
|
|
|
|
|
|
class Flag(Generic[_T]):
|
|
|
|
name = ... # type: Text
|
|
default = ... # type: Any
|
|
default_unparsed = ... # type: Any
|
|
default_as_str = ... # type: Optional[Text]
|
|
help = ... # type: Text
|
|
short_name = ... # type: Text
|
|
boolean = ... # type: bool
|
|
present = ... # type: bool
|
|
parser = ... # type: _argument_parser.ArgumentParser[_T]
|
|
serializer = ... # type: _argument_parser.ArgumentSerializer[_T]
|
|
allow_override = ... # type: bool
|
|
allow_override_cpp = ... # type: bool
|
|
allow_hide_cpp = ... # type: bool
|
|
using_default_value = ... # type: bool
|
|
allow_overwrite = ... # type: bool
|
|
allow_using_method_names = ... # type: bool
|
|
|
|
def __init__(self,
|
|
parser: _argument_parser.ArgumentParser[_T],
|
|
serializer: Optional[_argument_parser.ArgumentSerializer[_T]],
|
|
name: Text,
|
|
default: Any,
|
|
help_string: Optional[Text],
|
|
short_name: Optional[Text] = ...,
|
|
boolean: bool = ...,
|
|
allow_override: bool = ...,
|
|
allow_override_cpp: bool = ...,
|
|
allow_hide_cpp: bool = ...,
|
|
allow_overwrite: bool = ...,
|
|
allow_using_method_names: bool = ...) -> None:
|
|
...
|
|
|
|
|
|
@property
|
|
def value(self) -> Optional[_T]: ...
|
|
|
|
def parse(self, argument: Union[_T, Text, None]) -> None: ...
|
|
|
|
def unparse(self) -> None: ...
|
|
|
|
def _parse(self, argument: Any) -> Any: ...
|
|
|
|
def __deepcopy__(self, memo: dict) -> Flag: ...
|
|
|
|
def _get_parsed_value_as_string(self, value: Optional[_T]) -> Optional[Text]:
|
|
...
|
|
|
|
def serialize(self) -> Text: ...
|
|
|
|
def flag_type(self) -> Text: ...
|
|
|
|
|
|
class BooleanFlag(Flag[bool]):
|
|
def __init__(self,
|
|
name: Text,
|
|
default: Any,
|
|
help: Optional[Text],
|
|
short_name: Optional[Text]=None,
|
|
**args: Any) -> None:
|
|
...
|
|
|
|
|
|
|
|
class EnumFlag(Flag[Text]):
|
|
def __init__(self,
|
|
name: Text,
|
|
default: Any,
|
|
help: Optional[Text],
|
|
enum_values: Sequence[Text],
|
|
short_name: Optional[Text] = ...,
|
|
case_sensitive: bool = ...,
|
|
**args: Any):
|
|
...
|
|
|
|
|
|
|
|
class EnumClassFlag(Flag[_ET]):
|
|
|
|
def __init__(self,
|
|
name: Text,
|
|
default: Any,
|
|
help: Optional[Text],
|
|
enum_class: Type[_ET],
|
|
short_name: Optional[Text]=None,
|
|
**args: Any):
|
|
...
|
|
|
|
|
|
|
|
class MultiFlag(Flag[List[_T]]):
|
|
...
|
|
|
|
|
|
class MultiEnumClassFlag(MultiFlag[_ET]):
|
|
def __init__(self,
|
|
name: Text,
|
|
default: Any,
|
|
help_string: Optional[Text],
|
|
enum_class: Type[_ET],
|
|
**args: Any):
|
|
...
|
|
|
|
|