eapp.make_flags_parser

eapp.make_flags_parser#

etils.eapp.make_flags_parser(cls: etils.eapp.dataclass_flags._DataclassT, *, prog: str | None = None, description: str | None = None) collections.abc.Callable[[list[str]], etils.eapp.dataclass_flags._DataclassT][source]#

Dataclass flag parser for absl.

Allow to define CLI flags through dataclasses.

Usage:

@dataclasses.dataclass
class Args:
  user: str
  verbose: bool = False


def main(args: Args):
  if args.verbose:
    print(args.user)


if __name__ == '__main__':
  app.run(main, flags_parser=eapp.make_flags_parser(Args))

Allow to call your program with my_program –user=$USER –verbose

This is a wrapper around simple_parsing (lebrice/SimpleParsing). See documentation for details.

Parameters:
  • cls – Dataclass containing the arguments to be parsed

  • prog – Program name. Forwarded to argparse.ArgumentParser

  • description – Description (auto-extracted from the __main__ docstring) Forwarded to argparse.ArgumentParser

Returns:

flags_parser function, for app.run(main, flags_parser=…).