No project description provided
Project description
argparse_dataclasses
In this package we'll place some boilerplate code that helps:
- to convert
dataclasses
toargparse
commandline argument parsers; - to convert
argparse
commandline arguments todataclasses
.
Why so? Dozens of times I had to create settings classes for my Python console scripts. Here's some utility boilerplate code that helps to create commandline parsers for dataclasses in a couple of lines = )
How to install
python3 -m pip install argparse-dataclasses
How to use
At first, let's create a simple script simple_example.py
, in which we:
- import some stuff from our module,
- declare a simple
dataclass
- and inherit it from our
CmdParsingMixin
(this adds support for automaticargparse.ArgumentParser
creation.
simple_example.py
from dataclasses import dataclass, field
from argparse_dataclasses import CmdParsingMixin
@dataclass
class SimpleSettings(CmdParsingMixin): #
name: str
num_experiments: int = field(default=1)
settings = SimpleSettings.build_from_commandline()
print(settings)
And let's run this script from commandline:
> python3 simple_example.py
It will give us the error message.
usage: simple_example.py [-h] --name NAME [--num-experiments NUM_EXPERIMENTS]
simple_example.py: error: the following arguments are required: --name
Okay, just as planned. As we can see, we've forgot a required commandline argument. Let's try again
> python3 simple_example.py --name=DJ_BLYATMAN --num-experiments=33
This will print us the settings instance:
SimpleSettings(name='DJ_BLYATMAN', num_experiments=33)
Be careful: use -
in commandline argument names and _
in Python dataclass field names. It does make sense!
Our code works with argparse.ArgumentParser
under the hood, so it also supports --help
commandline argument to explicitly order help message:
> python3 simple_example.py --help
will output the following:
usage: simple_example.py [-h] --name NAME [--num-experiments NUM_EXPERIMENTS]
Creating SimpleSettings instance from commandline args...
optional arguments:
-h, --help show this help message and exit
--name NAME
--num-experiments NUM_EXPERIMENTS``
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
Hashes for argparse_dataclasses-0.1.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcad3e79bc13a9fae0677239bc22ac3807746e4ad09133c4b94ca745e2ee0786 |
|
MD5 | 26c5e0fdcef2dfa599daaab0b7d73fd9 |
|
BLAKE2b-256 | 969f1f809c48b843adb9fc3ba82c86ce386633685eb5c63fb1e2f838513f0941 |