easy to use command-line interface for python modules, fork of entrypoint
Project description
entrypoint2 is an easy to use command-line interface for python modules, fork of entrypoint
Background
There are tons of command-line handling modules but none of them can generate a CLI interface for a very simple function like this without duplicating the existing code and without making the function from other modules unusable:
def add(one, two=4, three=False): ''' description one: description two: description three: description '''
Best solution I could find is entrypoint, but there is no link to development site, so I forked the project. The only big disadvantage of entrypoint: it destroys the function signature, therefore the function can not be called from other modules.
Goals
the decorated function should have the same behavior as without the entrypoint2 decorator
generate CLI parameters from function signature
generate CLI documentation from python documentation
boolean parameters should be toggle flags
generate short flags from long flags: --long -> -l
automatic –version flag
Similar projects
Features
- Additional features over original entrypoint:
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 automatically (e.g. --parameter -> -p)
unit tests
- Known problems:
Python 3 is not supported
there are more decorators in the module inherited from original entrypoint, but only @entrypoint is tested.
Autocompletion is not supported
Basic usage
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:
$ python -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:
$ python -m entrypoint2.examples.hello --version 3.2
Installation
General
install setuptools or pip
install the program:
if you have setuptools installed:
# as root easy_install entrypoint2
if you have pip installed:
# as root pip install entrypoint2
Ubuntu
sudo apt-get install python-setuptools sudo easy_install entrypoint2
Uninstall
# as root pip uninstall entrypoint2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.