Skip to main content

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

Links:

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 pip

  • install the program:

    # as root
    pip install entrypoint2

Ubuntu

sudo apt-get install python-pip
sudo pip install entrypoint2

Uninstall

# as root
pip uninstall entrypoint2

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

entrypoint2-0.0.4.tar.gz (45.9 kB view details)

Uploaded Source

File details

Details for the file entrypoint2-0.0.4.tar.gz.

File metadata

  • Download URL: entrypoint2-0.0.4.tar.gz
  • Upload date:
  • Size: 45.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for entrypoint2-0.0.4.tar.gz
Algorithm Hash digest
SHA256 ec70078a197603c20feda3ec55a9b6753b10baf7ccd4aa61f636c529b3672621
MD5 b06fbf89e3a99c7700fd3c1218adb40b
BLAKE2b-256 fd32efd92d0b7516c9b72a1764b7d5f6a113500339a0ee06783d0912610f1032

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page