Declarative CLIs with argparse and dataclasses
argparse_dataclass
Declarative CLIs with argparse and dataclasses.
Features
Features marked with a ✓ are currently implemented; features marked with a ⊘ are not yet implemented.
- [✓] Positional arguments
- [✓] Boolean flags
- [✓] Integer, string, float, and other simple types as arguments
- [✓] Default values
- [✓] Arguments with a finite set of choices
- [⊘] Subcommands
- [⊘] Mutually exclusive groups
Examples
Using dataclass decorator
>>> from argparse_dataclass import dataclass
>>> @dataclass
... class Options:
... x: int = 42
... y: bool = False
...
>>> print(Options.parse_args(['--y']))
Options(x=42, y=True)
A simple parser with flags:
>>> from dataclasses import dataclass
>>> from argparse_dataclass import ArgumentParser
>>> @dataclass
... class Options:
... verbose: bool
... other_flag: bool
...
>>> parser = ArgumentParser(Options)
>>> print(parser.parse_args([]))
Options(verbose=False, other_flag=False)
>>> print(parser.parse_args(["--verbose", "--other-flag"]))
Options(verbose=True,