Spaces:
Sleeping
Sleeping
# Copyright 2017 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. | |
"""This package is used to define and parse command line flags. | |
This package defines a *distributed* flag-definition policy: rather than | |
an application having to define all flags in or near main(), each Python | |
module defines flags that are useful to it. When one Python module | |
imports another, it gains access to the other's flags. (This is | |
implemented by having all modules share a common, global registry object | |
containing all the flag information.) | |
Flags are defined through the use of one of the DEFINE_xxx functions. | |
The specific function used determines how the flag is parsed, checked, | |
and optionally type-converted, when it's seen on the command line. | |
""" | |
import getopt | |
import os | |
import re | |
import sys | |
import types | |
import warnings | |
from absl.flags import _argument_parser | |
from absl.flags import _defines | |
from absl.flags import _exceptions | |
from absl.flags import _flag | |
from absl.flags import _flagvalues | |
from absl.flags import _helpers | |
from absl.flags import _validators | |
__all__ = ( | |
'DEFINE', | |
'DEFINE_flag', | |
'DEFINE_string', | |
'DEFINE_boolean', | |
'DEFINE_bool', | |
'DEFINE_float', | |
'DEFINE_integer', | |
'DEFINE_enum', | |
'DEFINE_enum_class', | |
'DEFINE_list', | |
'DEFINE_spaceseplist', | |
'DEFINE_multi', | |
'DEFINE_multi_string', | |
'DEFINE_multi_integer', | |
'DEFINE_multi_float', | |
'DEFINE_multi_enum', | |
'DEFINE_multi_enum_class', | |
'DEFINE_alias', | |
# Flag validators. | |
'register_validator', | |
'validator', | |
'register_multi_flags_validator', | |
'multi_flags_validator', | |
'mark_flag_as_required', | |
'mark_flags_as_required', | |
'mark_flags_as_mutual_exclusive', | |
'mark_bool_flags_as_mutual_exclusive', | |
# Flag modifiers. | |
'set_default', | |
'override_value', | |
# Key flag related functions. | |
'declare_key_flag', | |
'adopt_module_key_flags', | |
'disclaim_key_flags', | |
# Module exceptions. | |
'Error', | |
'CantOpenFlagFileError', | |
'DuplicateFlagError', | |
'IllegalFlagValueError', | |
'UnrecognizedFlagError', | |
'UnparsedFlagAccessError', | |
'ValidationError', | |
'FlagNameConflictsWithMethodError', | |
# Public classes. | |
'Flag', | |
'BooleanFlag', | |
'EnumFlag', | |
'EnumClassFlag', | |
'MultiFlag', | |
'MultiEnumClassFlag', | |
'FlagHolder', | |
'FlagValues', | |
'ArgumentParser', | |
'BooleanParser', | |
'EnumParser', | |
'EnumClassParser', | |
'ArgumentSerializer', | |
'FloatParser', | |
'IntegerParser', | |
'BaseListParser', | |
'ListParser', | |
'ListSerializer', | |
'EnumClassListSerializer', | |
'CsvListSerializer', | |
'WhitespaceSeparatedListParser', | |
'EnumClassSerializer', | |
# Helper functions. | |
'get_help_width', | |
'text_wrap', | |
'flag_dict_to_args', | |
'doc_to_help', | |
# The global FlagValues instance. | |
'FLAGS', | |
) | |
# Initialize the FLAGS_MODULE as early as possible. | |
# It's only used by adopt_module_key_flags to take SPECIAL_FLAGS into account. | |
_helpers.FLAGS_MODULE = sys.modules[__name__] | |
# Add current module to disclaimed module ids. | |
_helpers.disclaim_module_ids.add(id(sys.modules[__name__])) | |
# DEFINE functions. They are explained in more details in the module doc string. | |
# pylint: disable=invalid-name | |
DEFINE = _defines.DEFINE | |
DEFINE_flag = _defines.DEFINE_flag | |
DEFINE_string = _defines.DEFINE_string | |
DEFINE_boolean = _defines.DEFINE_boolean | |
DEFINE_bool = DEFINE_boolean # Match C++ API. | |
DEFINE_float = _defines.DEFINE_float | |
DEFINE_integer = _defines.DEFINE_integer | |
DEFINE_enum = _defines.DEFINE_enum | |
DEFINE_enum_class = _defines.DEFINE_enum_class | |
DEFINE_list = _defines.DEFINE_list | |
DEFINE_spaceseplist = _defines.DEFINE_spaceseplist | |
DEFINE_multi = _defines.DEFINE_multi | |
DEFINE_multi_string = _defines.DEFINE_multi_string | |
DEFINE_multi_integer = _defines.DEFINE_multi_integer | |
DEFINE_multi_float = _defines.DEFINE_multi_float | |
DEFINE_multi_enum = _defines.DEFINE_multi_enum | |
DEFINE_multi_enum_class = _defines.DEFINE_multi_enum_class | |
DEFINE_alias = _defines.DEFINE_alias | |
# pylint: enable=invalid-name | |
# Flag validators. | |
register_validator = _validators.register_validator | |
validator = _validators.validator | |
register_multi_flags_validator = _validators.register_multi_flags_validator | |
multi_flags_validator = _validators.multi_flags_validator | |
mark_flag_as_required = _validators.mark_flag_as_required | |
mark_flags_as_required = _validators.mark_flags_as_required | |
mark_flags_as_mutual_exclusive = _validators.mark_flags_as_mutual_exclusive | |
mark_bool_flags_as_mutual_exclusive = _validators.mark_bool_flags_as_mutual_exclusive | |
# Flag modifiers. | |
set_default = _defines.set_default | |
override_value = _defines.override_value | |
# Key flag related functions. | |
declare_key_flag = _defines.declare_key_flag | |
adopt_module_key_flags = _defines.adopt_module_key_flags | |
disclaim_key_flags = _defines.disclaim_key_flags | |
# Module exceptions. | |
# pylint: disable=invalid-name | |
Error = _exceptions.Error | |
CantOpenFlagFileError = _exceptions.CantOpenFlagFileError | |
DuplicateFlagError = _exceptions.DuplicateFlagError | |
IllegalFlagValueError = _exceptions.IllegalFlagValueError | |
UnrecognizedFlagError = _exceptions.UnrecognizedFlagError | |
UnparsedFlagAccessError = _exceptions.UnparsedFlagAccessError | |
ValidationError = _exceptions.ValidationError | |
FlagNameConflictsWithMethodError = _exceptions.FlagNameConflictsWithMethodError | |
# Public classes. | |
Flag = _flag.Flag | |
BooleanFlag = _flag.BooleanFlag | |
EnumFlag = _flag.EnumFlag | |
EnumClassFlag = _flag.EnumClassFlag | |
MultiFlag = _flag.MultiFlag | |
MultiEnumClassFlag = _flag.MultiEnumClassFlag | |
FlagHolder = _flagvalues.FlagHolder | |
FlagValues = _flagvalues.FlagValues | |
ArgumentParser = _argument_parser.ArgumentParser | |
BooleanParser = _argument_parser.BooleanParser | |
EnumParser = _argument_parser.EnumParser | |
EnumClassParser = _argument_parser.EnumClassParser | |
ArgumentSerializer = _argument_parser.ArgumentSerializer | |
FloatParser = _argument_parser.FloatParser | |
IntegerParser = _argument_parser.IntegerParser | |
BaseListParser = _argument_parser.BaseListParser | |
ListParser = _argument_parser.ListParser | |
ListSerializer = _argument_parser.ListSerializer | |
EnumClassListSerializer = _argument_parser.EnumClassListSerializer | |
CsvListSerializer = _argument_parser.CsvListSerializer | |
WhitespaceSeparatedListParser = _argument_parser.WhitespaceSeparatedListParser | |
EnumClassSerializer = _argument_parser.EnumClassSerializer | |
# pylint: enable=invalid-name | |
# Helper functions. | |
get_help_width = _helpers.get_help_width | |
text_wrap = _helpers.text_wrap | |
flag_dict_to_args = _helpers.flag_dict_to_args | |
doc_to_help = _helpers.doc_to_help | |
# Special flags. | |
_helpers.SPECIAL_FLAGS = FlagValues() | |
DEFINE_string( | |
'flagfile', '', | |
'Insert flag definitions from the given file into the command line.', | |
_helpers.SPECIAL_FLAGS) # pytype: disable=wrong-arg-types | |
DEFINE_string('undefok', '', | |
'comma-separated list of flag names that it is okay to specify ' | |
'on the command line even if the program does not define a flag ' | |
'with that name. IMPORTANT: flags in this list that have ' | |
'arguments MUST use the --flag=value format.', | |
_helpers.SPECIAL_FLAGS) # pytype: disable=wrong-arg-types | |
#: The global FlagValues instance. | |
FLAGS = _flagvalues.FLAGS | |