A library for building simple CLIs from dataclasses
Project description
datacli
datacli
is a library for building simple command line interfaces from
dataclasses. It is built on argparse
and has no dependencies.
Usage
A picture code snippet speaks a thousand words:
# person.py
from dataclasses import dataclass, field
from datacli import datacli
@dataclass
class Person:
name: str
age: int = 30
args = datacli(Person)
print(args)
$ python person.py --name "Jeremy"
Person(name="Jeremy", age=30)
$ python person.py --name "Jeremy" --age 20
Person(name="Jeremy", age=20)
$ python person.py --help
usage: test.py [-h] --name NAME [--age AGE]
optional arguments:
-h, --help show this help message and exit
--name NAME
--age AGE
Field names
Short and long field names (-a
or --foo-bar
) can be modified through the
data-class field metadata, for example,
# person.py
from dataclasses import dataclass, field
from datacli import datacli
@dataclass
class Person:
name: str = field(metadata={"short_name": "-n"})
age: int = field(metadata={"short_name": "-a", "long_name": "--years"})
args = datacli(Person)
print(args)
$ python person.py -n "Jeremy" -a 20
Person(name="Jeremy", age=20)
$ python person.py --name "Jeremy" --years 30
Person(name="Jeremy", age=30)
$ python person.py --help
usage: test.py [-h] --name NAME --age AGE
optional arguments:
-h, --help show this help message and exit
-n, --name NAME
-a, --age YEARS
If you want to use defaults with field names, you should use the default
or
default_factory
arguments to field()
, for example,
age: int = field(default=20, metadata={"short_name": "-a"})
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dataclass-cli-0.1.1.tar.gz
(2.4 kB
view details)
File details
Details for the file dataclass-cli-0.1.1.tar.gz
.
File metadata
- Download URL: dataclass-cli-0.1.1.tar.gz
- Upload date:
- Size: 2.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aca5b9420e866899625a710819b8048eb6927fd926a7c1528fafa682ef035c1a |
|
MD5 | feb79313ef198d833745cb87882e1705 |
|
BLAKE2b-256 | 57d7d3d19af35805046bb84cae4141fd2976cf0b1ae008596d59bdb19662ebd0 |