entrypoint2 is an easy to use argparse based command-line interface for python modules, fork of entrypoint. It translates function signature and documentation to argparse configuration.
Links:
- home: https://github.com/ponty/entrypoint2
- documentation: http://entrypoint2.readthedocs.org
- PYPI: https://pypi.python.org/pypi/entrypoint2
Goals:
- simplicity: only one decorator to add to existing code
Features:
- good for protoyping or simple CLI
- generate CLI parameters from function signature
- generate CLI documentation from python documentation
- the decorated function has the same behavior as without the entrypoint2 decorator
- boolean parameters are toggle flags (e.g.
--verbose
)- function signature is preserved so it can be called both from command-line and external module
- function name, doc and module are preserved so it can be used with sphinx autodoc
- sphinx autodoc documentation style is supported:
:param x: this is x
- automatic
--version
flag, which prints version variable from the current module (__version__
,VERSION
, ..)- automatic
--debug
flag, which turns on logging- short flags are generated from long flags automatically (e.g.
--parameter
->-p
)- unit tests
- supported python versions: 2.7, 3.6, 3.7, 3.8
- support for repeating arguments
Similar projects:
- entrypoint
- plac
- baker
- argh
- opster
- commandline
- optfunc: this has the same concept
- commando (1)
- commando (2)
- argparse
- optparse
- plumbum
Example:
from entrypoint2 import entrypoint
__version__ = '3.2'
@entrypoint
def add(one, two=4, three=False):
''' This function adds three numbers.
one: first number to add
two: second number to add
'''
Generated help:
$ python3 -m entrypoint2.examples.hello --help
usage: hello.py [-h] [-t TWO] [--three] [--version] [--debug] one
This function adds two number.
positional arguments:
one first number to add
optional arguments:
-h, --help show this help message and exit
-t TWO, --two TWO second number to add
--three
--version show program's version number and exit
--debug set logging level to DEBUG
Printing version:
$ python3 -m entrypoint2.examples.hello --version
3.2
install:
pip install entrypoint2