Last updated:
0 purchases
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
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.