Parse command line arguments by defining dataclasses
Project description
TypedArgs
Strong type args.
This project is inspired by TeXitoi/structopt.
Install
From pypi
pip install typed-args
If you want to use it on python 3.5 and 3.6 please install dataclasses
:
pip install dataclasses
Usage
import argparse
from dataclasses import dataclass
import typed_args as ta
"""
argparse
"""
parser = argparse.ArgumentParser()
parser.add_argument(
'data', metavar='DIR', type=str,
help='path to dataset'
)
parser.add_argument(
'-a', '--arch', metavar='ARCH', default='resnet18', type=str,
help='model architecture (default: resnet18)'
)
parser.add_argument(
'-j', '--workers', default=4, metavar='N', type=int, dest='num_workers',
help='number of data loading workers (default: 4)'
)
"""
TypedArgs
"""
@dataclass
class Args(ta.TypedArgs):
data: str = ta.add_argument(
metavar='DIR', type=str, help='path to dataset'
)
arch: str = ta.add_argument(
'-a', '--arch', metavar='ARCH', default='resnet18', type=str,
help='model architecture (default: resnet18)'
)
num_workers: int = ta.add_argument(
'-j', '--workers', default=4, metavar='N', type=int,
help='number of data loading workers (default: 4)'
)
def test_args():
data = '/path/to/dataset'
arch = 'resnet50'
num_workers = 8
argv = f'{data} -a {arch} --workers {num_workers}'.split()
"""
from_args = parse_args, from_known_args = parse_known_args
"""
typed_args = Args.from_args(argv)
args = parser.parse_args(argv)
assert args.arch == typed_args.arch
assert args.data == typed_args.data
assert args.num_workers == typed_args.num_workers
if __name__ == "__main__":
test_args()
Limitation
Currently, we don't support add_group
and sub parser
, but we will.
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
typed-args-0.5.2.tar.gz
(4.9 kB
view hashes)
Built Distribution
Close
Hashes for typed_args-0.5.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e130013ca65e306db9b9dcb41644bc30e2878f4356262484502e3661a3ecc5c |
|
MD5 | dde8d80ce5f724148b4a5ef20ddcaea0 |
|
BLAKE2b-256 | fbbc646a468a8613f611040e063f07e5d115981c8ffef5f1fa7c1bf4c0de57b2 |