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) # That's all, folks!
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
It 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
File details
Details for the file argparse_dataclasses-0.1.4.tar.gz
.
File metadata
- Download URL: argparse_dataclasses-0.1.4.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.22.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04a9a4421cb42fe3bb197193522e29c52356665714920dad5fe0f60f3c6bf54c |
|
MD5 | 49626d6bae7d55e66080cbd42ac3d8a1 |
|
BLAKE2b-256 | 87510d52c6a360ff9fd641845a20ed176fbb9daed4b051d5ca300f9a71bd356c |