absl.flags.argparse_flags module
This module provides argparse integration with absl.flags.
argparse_flags.ArgumentParser is a drop-in replacement for argparse.ArgumentParser. It takes care of collecting and defining absl flags in argparse.
Here is a simple example:
# Assume the following absl.flags is defined in another module: # # from absl import flags # flags.DEFINE_string(‘echo’, None, ‘The echo message.’) # parser = argparse_flags.ArgumentParser(
description=’A demo of absl.flags and argparse integration.’)
parser.add_argument(’–header’, help=’Header message to print.’)
# The parser will also accept the absl flag –echo. # The header value is available as args.header just like a regular # argparse flag. The absl flag –echo continues to be available via # absl.flags.FLAGS if you want to access it. args = parser.parse_args()
# Example usages: # ./program –echo=’A message.’ –header=’A header’ # ./program –header ‘A header’ –echo ‘A message.’
Here is another example demonstrates subparsers:
parser = argparse_flags.ArgumentParser(description=’A subcommands demo.’) parser.add_argument(’–header’, help=’The header message to print.’)
subparsers = parser.add_subparsers(help=’The command to execute.’)
- roll_dice_parser = subparsers.add_parser(
‘roll_dice’, help=’Roll a dice.’, # By default, absl flags can also be specified after the sub-command. # To only allow them before sub-command, pass # inherited_absl_flags=None. inherited_absl_flags=None)
roll_dice_parser.add_argument(’–num_faces’, type=int, default=6) roll_dice_parser.set_defaults(command=roll_dice)
shuffle_parser = subparsers.add_parser(‘shuffle’, help=’Shuffle inputs.’) shuffle_parser.add_argument(
‘inputs’, metavar=’I’, nargs=’+’, help=’Inputs to shuffle.’)
shuffle_parser.set_defaults(command=shuffle)
args = parser.parse_args(argv[1:]) args.command(args)
# Example usages: # ./program –echo=’A message.’ roll_dice –num_faces=6 # ./program shuffle –echo=’A message.’ 1 2 3 4
There are several differences between absl.flags and argparse_flags:
Flags defined with absl.flags are parsed differently when using the argparse parser. Notably:
absl.flags allows both single-dash and double-dash for any flag, and doesn’t distinguish them; argparse_flags only allows double-dash for flag’s regular name, and single-dash for flag’s short_name.
Boolean flags in absl.flags can be specified with –bool, –nobool, as well as –bool=true/false (though not recommended); in argparse_flags, it only allows –bool, –nobool.
Help related flag differences: 1) absl.flags does not define help flags, absl.app does that; argparse_flags
defines help flags unless passed with add_help=False.
absl.app supports –helpxml; argparse_flags does not.
argparse_flags supports -h; absl.app does not.
- class absl.flags.argparse_flags.ArgumentParser(**kwargs)[source]
Bases:
ArgumentParserCustom ArgumentParser class to support special absl flags.