Skip to main content

No project description provided

Project description

Aparse

pypi tests coverage python

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, bool values both with and without default value.
  • List of int, float, str, bool types.
  • Types with from_str method.
  • dataclass arguments, where the dataclass is expanded into individual parameters
  • Multi-level dataclass arguments.
  • argparse and click libraries 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

MIT

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

aparse-0.0.12.tar.gz (15.7 kB view details)

Uploaded Source

Built Distribution

aparse-0.0.12-py3-none-any.whl (17.2 kB view details)

Uploaded Python 3

File details

Details for the file aparse-0.0.12.tar.gz.

File metadata

  • Download URL: aparse-0.0.12.tar.gz
  • Upload date:
  • Size: 15.7 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.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for aparse-0.0.12.tar.gz
Algorithm Hash digest
SHA256 8f0c10b39b91941945c7b50e28a3afc68393ee31ef28bc2bd5804c114f6a0474
MD5 8cac678fff262d8ede2f53f763a6a9cb
BLAKE2b-256 1abf52d53986cce92e64b213e4086e6703c768507157222d088b6faa8bb6a9cb

See more details on using hashes here.

File details

Details for the file aparse-0.0.12-py3-none-any.whl.

File metadata

  • Download URL: aparse-0.0.12-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for aparse-0.0.12-py3-none-any.whl
Algorithm Hash digest
SHA256 5001725ec6efd8ba4120449e0a06a101382861660d586211c76188a3d8e34a50
MD5 4de0bb1f395b5da3aa5be1f025cf01b8
BLAKE2b-256 a9e608e76bba590318f1d3a8c0b3213b8104b8060f8d6cedbe3f5bce3194e49d

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