Expose your Python functions to the command line with one easy step!
Project description
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
*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
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
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 |