| # 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 _argument_parser.py.""" |
| |
| |
| from typing import Text, TypeVar, Generic, Iterable, Type, List, Optional, Sequence, Any |
| |
| import enum |
| |
| _T = TypeVar('_T') |
| _ET = TypeVar('_ET', bound=enum.Enum) |
| |
| |
| class ArgumentSerializer(Generic[_T]): |
| def serialize(self, value: _T) -> Text: ... |
| |
| |
| # The metaclass of ArgumentParser is not reflected here, because it does not |
| # affect the provided API. |
| class ArgumentParser(Generic[_T]): |
| |
| syntactic_help: Text |
| |
| def parse(self, argument: Text) -> Optional[_T]: ... |
| |
| def flag_type(self) -> Text: ... |
| |
| |
| # Using bound=numbers.Number results in an error: b/153268436 |
| _N = TypeVar('_N', int, float) |
| |
| |
| class NumericParser(ArgumentParser[_N]): |
| |
| def is_outside_bounds(self, val: _N) -> bool: ... |
| |
| def parse(self, argument: Text) -> _N: ... |
| |
| def convert(self, argument: Text) -> _N: ... |
| |
| |
| class FloatParser(NumericParser[float]): |
| |
| def __init__(self, lower_bound:Optional[float]=None, |
| upper_bound:Optional[float]=None) -> None: |
| ... |
| |
| |
| class IntegerParser(NumericParser[int]): |
| |
| def __init__(self, lower_bound:Optional[int]=None, |
| upper_bound:Optional[int]=None) -> None: |
| ... |
| |
| |
| class BooleanParser(ArgumentParser[bool]): |
| ... |
| |
| |
| class EnumParser(ArgumentParser[Text]): |
| def __init__(self, enum_values: Sequence[Text], case_sensitive: bool=...) -> None: |
| ... |
| |
| |
| |
| class EnumClassParser(ArgumentParser[_ET]): |
| |
| def __init__(self, enum_class: Type[_ET], case_sensitive: bool=...) -> None: |
| ... |
| |
| @property |
| def member_names(self) -> Sequence[Text]: ... |
| |
| |
| class BaseListParser(ArgumentParser[List[Text]]): |
| def __init__(self, token: Text, name:Text) -> None: ... |
| |
| # Unlike baseclass BaseListParser never returns None. |
| def parse(self, argument: Text) -> List[Text]: ... |
| |
| |
| |
| class ListParser(BaseListParser): |
| def __init__(self) -> None: |
| ... |
| |
| |
| |
| class WhitespaceSeparatedListParser(BaseListParser): |
| def __init__(self, comma_compat: bool=False) -> None: |
| ... |
| |
| |
| |
| class ListSerializer(ArgumentSerializer[List[Text]]): |
| list_sep = ... # type: Text |
| |
| def __init__(self, list_sep: Text) -> None: |
| ... |
| |
| |
| class EnumClassListSerializer(ArgumentSerializer[List[Text]]): |
| def __init__(self, list_sep: Text, **kwargs: Any) -> None: |
| ... |
| |
| |
| class CsvListSerializer(ArgumentSerializer[List[Any]]): |
| |
| def __init__(self, list_sep: Text) -> None: |
| ... |
| |
| |
| class EnumClassSerializer(ArgumentSerializer[_ET]): |
| def __init__(self, lowercase: bool) -> None: |
| ... |