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
- All builtin primitives (
- 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
*argsor**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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
argexec-1.0.3.tar.gz
(7.2 kB
view details)
File details
Details for the file argexec-1.0.3.tar.gz.
File metadata
- Download URL: argexec-1.0.3.tar.gz
- Upload date:
- Size: 7.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61f9ae9322e38ae64996848421afbdb018239a99c4e796fe064f172d6c98c3bf
|
|
| MD5 |
448635948823309312ea9f70b30b6c2d
|
|
| BLAKE2b-256 |
b03ab089133ff2aec45a1dfd58f46996587f978055606607ee98df192fc63783
|