Skip to main content

Argparse generator from dataclass

Project description

Current PyPi Version Supported Python Versions codecov docs tests style

pip install argklass

Features

Compact argparse definition

@dataclass
class MyArguments:
   a  : str                                                    # Positional
   b  : int                = 20                                # My argument
   c  : bool               = False                             # My argument
   d  : int                = choice(0, 1, 2, 3, 4, default=1)  # choices
   e  : List[int]          = argument(default=[0])             # list
   f  : Optional[int]      = None                              # Optional
   p  : Tuple[int, int]    = (1, 1)                            # help p
   g  : Color              = Color.RED                         # help g
   s  : SubArgs            = SubArgs                           # helps group
   cmd: Union[cmd1, cmd2]  = subparsers(cmd1=cmd1, cmd2=cmd2)  # Command subparser

parser = ArgumentParser()
parser.add_arguments(MyArguments)
args = parser.parse_args()

Lower level interface, that gives you back all of argparse power

@dataclass
class SubArgs:
   aa: str = argument(default="123")


@dataclass
class cmd1:
   args: str = "str1"


@dataclass
class cmd2:
   args: str = "str2"


@dataclass
class MyArguments:
   a: str                  = argument(help="Positional")
   b: int                  = argument(default=20, help="My argument")
   c: bool                 = argument(action="store_true", help="My argument")
   d: int                  = argument(default=1, choices=[0, 1, 2, 3, 4], help="choices")
   e: List[int]            = argument(default=[0], help="list")
   f: Optional[int]        = argument(default=None, help="Optional")
   p: Tuple[int, int]      = argument(default=(1, 1), help="help p")
   g: Color                = argument(default=Color.RED, help="help g")
   s: SubArgs              = group(default=SubArgs, help="helps group")
   cmd: Union[cmd1, cmd2]  = subparsers(cmd1=cmd1, cmd2=cmd2)

parser = ArgumentParser()
parser.add_arguments(MyArguments)
args = parser.parse_args()

Save and load from configuration files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

argklass-1.0.1.tar.gz (15.6 kB view hashes)

Uploaded Source

Built Distribution

argklass-1.0.1-py3-none-any.whl (16.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page