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

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


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.2.tar.gz (46.3 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for entrypoint2-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a935203b546bda487247f257c26fc25f398b82a2cac63d262d01896963e41b90
MD5 303cb991f8e4908229ba46fb33d238c7
BLAKE2b-256 7ae872c25ef894dcc42dfa63326bf9c4bd0108919fcd44f7447656bab462778c

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