Skip to main content

A easy-to-use command-line interface generator

Project description

Groom, is an easy-to-use command-line application framework.

This module defines an even much easier way to make user-friendly command-line interfaces than any others else. Once you define a function as the entry point of your application, Groom will automatically detect how to parse sys.argv and apply it to your application. Groom also generates help and usage messages and issue errors when users set invalid arguments to your application.

introduction

Have you never wanted to create CLI tools with python more easily? Groom brings you an easier way to create CLI tools.

Here is an example:

import sys
from groom import positional, optional, Dispatcher

__version__ = '1.0'

def calculate(
    num1: positional(float, "former number", required=True, var_name='N1'),
    num2: positional(float, "latter number", required=True, var_name='N2'),
    operator: optional(str, "operator name", short_name='op')='add'):
  if operator == 'add':
    print(num1 + num2)
    return
  if operator == 'sub':
    print(num1 - num2)
    return
  if operator == 'mul':
    print(num1 * num2)
    return
  if operator == 'div':
    print(num1 / num2)
    return
  print("unknown operator:", operator, file=sys.stderr)

if __name__ == '__main__':
  Dispatcher(
    calculate,
    "calculate one of four arithmetic operations"
  ).dispatch()

…and then, you can call the program like this:

$ python calc.py 1 2 -op div

Once you call this program with -h or --help, Groom displays the help messages:

$ python calc.py -h
calc.py: 1.0

calculate one of four arithmetic operations

Usage:
  calc.py [-v | --version | -h | --help]
  calc.py <N1> <N2>
    [--operator <OPERATOR> | -op <OPERATOR>]

positional parameters:
N1:
  former number
  type: float
  required: True
N2:
  latter number
  type: float
  required: True

parameters:
--operator, -op:
  operator name
  type: str
  required: False
  multiple values: False
  default: add

Groom can handle 6 primitive types such as str, int, float, complex and bool and list of those types. If you specify another as a parameter type, Groom will throw TypeError.

Groom is licensed under the MIT License, for further details see LICENSE.txt.

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

groom-0.1.0b1.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

groom-0.1.0b1-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file groom-0.1.0b1.tar.gz.

File metadata

  • Download URL: groom-0.1.0b1.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.42.1 CPython/3.8.1

File hashes

Hashes for groom-0.1.0b1.tar.gz
Algorithm Hash digest
SHA256 c5e688c00f75d7720a0431d92bbe30e9840b08f1cdaa871aa02d67857331be1c
MD5 3dbc3bde3d89ebf3f1d48cab4da4f157
BLAKE2b-256 171257597aae6537c3288d82d623572c4999261314e328b7cbde3bc676119877

See more details on using hashes here.

File details

Details for the file groom-0.1.0b1-py3-none-any.whl.

File metadata

  • Download URL: groom-0.1.0b1-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.42.1 CPython/3.8.1

File hashes

Hashes for groom-0.1.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 48ec6a2b0618290509179565f9856c6faf54c592a3414b185d34e718d11f2b73
MD5 8970c54ea012d6b45c84f7af93d348c4
BLAKE2b-256 4af0d727c8a987e9e05dd74021afcfdad7970bed0fb964fe85261538a98c47d7

See more details on using hashes here.

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