argexec 1.0.3

Creator: bradpython12

Last updated:

Add to Cart

Description:

argexec 1.0.3

Argexec



An unobtrusive, elegant mechanism to provide seamless command line interfaces through argparse for Python functions.
All you have to do is decorate your function of choice with @argexec and away you go!
Features

Description parsing from docstring
Argument help parsing from reStructuredText-like docstrings
Argument type enforcement via typeguard from
type hints
Argument default values from function signature
Support for the following argument types:

All builtin primitives (bool, int, float, str, bytes)
Fixed length tuples of a supported type
Variable length tuples of a supported type
Lists of a supported type


Extensible, complex custom type parsing via dynamic_dispatch

Install
You may install this via the argexec package on PyPi:
pip3 install argexec

Usage
The decorator may be applied to any Python function that meets the following requirements:

Is not a member function
Has PEP 484 type hints for all parameters
Does not use *args or **kwargs

Example (foo.py):
#!/usr/bin/python3

from typing import Tuple

from argexec import argexec
from argexec.types import LogLevel

@argexec
def _(w: int, x: Tuple[str, ...], y: LogLevel, z: bool = True):
"""
Hello, world!

:param w: foo.
:param x: bar.
:param y: baz.
:param z: qux.
"""
pass

$ ./foo.py --help
usage: foo.py [-h] [-y] [--no-z] w [x [x ...]]

Hello, world!

positional arguments:
w [int] foo
x [Tuple[str, ...]] bar

optional arguments:
-h, --help show this help message and exit
-y, --y [LogLevel=CRITICAL] baz (more flags for lower level)
--no-z [bool=True] qux

Development
When developing, it is recommended to use Pipenv. To create your development environment:
pipenv install --dev

Testing
TODO

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.