Skip to main content

No project description provided

Project description

argparse_dataclasses

In this package we'll place some boilerplate code that helps:

  • to convert dataclasses to argparse commandline argument parsers;
  • to convert argparse commandline arguments to dataclasses.

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 automatic argparse.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

argparse_dataclasses-0.1.4.tar.gz (3.8 kB view details)

Uploaded Source

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

Hashes for argparse_dataclasses-0.1.4.tar.gz
Algorithm Hash digest
SHA256 04a9a4421cb42fe3bb197193522e29c52356665714920dad5fe0f60f3c6bf54c
MD5 49626d6bae7d55e66080cbd42ac3d8a1
BLAKE2b-256 87510d52c6a360ff9fd641845a20ed176fbb9daed4b051d5ca300f9a71bd356c

See more details on using hashes here.

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