Skip to main content

Expose your Python functions to the command line with one easy step!

Project description

Argexec

Build status PyPI PyPI - License

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

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)

Uploaded Source

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

Hashes for argexec-1.0.3.tar.gz
Algorithm Hash digest
SHA256 61f9ae9322e38ae64996848421afbdb018239a99c4e796fe064f172d6c98c3bf
MD5 448635948823309312ea9f70b30b6c2d
BLAKE2b-256 b03ab089133ff2aec45a1dfd58f46996587f978055606607ee98df192fc63783

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