Aparse
Aparse is a python argparse extension with support for typing. It has support for argparse and click
libraries. It uses function signatures to automatically register arguments to parsers.
Please refer to the documentation.
The following features are currently supported:
- Arguments with
int,float,str,boolvalues both with and without default value. - List of
int,float,str,booltypes. - Types with
from_strmethod. dataclassarguments, where the dataclass is expanded into individual parameters- Multi-level
dataclassarguments. argparseandclicklibraries are fully supported.- For
argparse, when classes are used, it supports traversing inheritance chain. - For
argparse, custom prefixes can be used for groups of parameters. - Callbacks before and after arguments are parsed.
- Conditional arguments, where the type of arguments depends on the value of another argument.
Why aparse
Why not argparse? Aparse does not force you to replace your argparse code. In fact, it was designed to extend argparse. You can combine the original argparse code and in some parts of the code, you can let aparse generate the arguments automatically.
Furthermore, aparse allows you to use conditional parameter parsing, which cannot be achieved with pure argparse.
Why not click? Same as with argparse, aparse extends click in such a way, that you can combine the original code with aparse. With aparse, you don't have to decorate your commands with all options, but you can let aparse manage them for you.
Why not docopt? With docopt you have to keep documentation in sync with your code. Aparse uses the signatures instead, which allows you to validate your code with a typechecker.
Installation
Install the library from pip:
$ pip install aparse
Getting started
Using argparse library
Extend a function with @add_argparse_arguments decorator to add arguments automatically:
import argparse
from aparse import add_argparse_arguments
@add_argparse_arguments()
def example(arg1: str, arg2: int = 5):
pass
parser = argparse.ArgumentParser()
parser = example.add_argparse_arguments(parser)
args = parser.parse_args()
# Call example with args
example.from_argparse_arguments(args)
Extend a class with @add_argparse_arguments decorator to construct it automatically:
import argparse
from aparse import add_argparse_arguments
@add_argparse_arguments()
class Example:
def __init__(self, arg1: str, arg2: int = 5):
pass
parser = argparse.ArgumentParser()
parser = Example.add_argparse_arguments(parser)
args = parser.parse_args()
# Construct Example with args
instance = Example.from_argparse_arguments(args)
Using click library
Import aparse.click instead of click and let aparse register all
the arguments and options:
# python main.py --arg1 test --arg2 4
from aparse import click
@click.command()
def example(arg1: str, arg2: int = 5):
pass
example()
When using click.groups:
# python main.py example --arg1 test --arg2 4
from aparse import click
@click.group()
def main():
pass
@main.command('example')
def example(arg1: str, arg2: int = 5):
pass
main()
For further details please look at the documentation.
License
Metadata
Release files for aparse 0.0.19
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aparse-0.0.19.tar.gz | 16.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aparse-0.0.19-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.7 kB
Release files / aparse-0.0.19.tar.gz
| Download URL | aparse-0.0.19.tar.gz |
|---|---|
| Size | 16.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b378be615ba9ca519edae16cfa023b2c3da2fbc6cbb479be4e1053c0fdb768de
|
|
BLAKE2b-256 checksum How to use checksums |
4df299ead635273d26cfbe341a32df847b894393ccc3d05381aaed67b68d4c1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.8
|
Release files / aparse-0.0.19-py3-none-any.whl
| Download URL | aparse-0.0.19-py3-none-any.whl |
|---|---|
| Size | 17.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6a7cb4e4f08fd5ee54aa796ffb60a39441b09f208d11c5400a896dfc02fa4e49
|
|
BLAKE2b-256 checksum How to use checksums |
1acb6ed609d944d74c1fdc080a5e1ac730f24d3a9beca167234fabf8b447d95e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.10.8
|
Security for aparse 0.0.19
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.