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 hashes)

Uploaded Source

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