Skip to main content

A collection of decorators to build command-line tools with minimal effort

Project description

Argtools

Description

A collection of decorators wrapping argparse module for building command-line tools with minimal effort.

Quick start

Installation

$ pip install argtools

Building a simple command-line tool

# examples/test.py
from argtools import command, argument

@command
@argument('foo', help='a positional arugment')
@argument('--bar', default=3, help='an optional argument')
def main(args):
    """ One line description here

    Write details here (printed with --help|-h)
    """
    print args.bar
    print args.foo
    return 1  # return code


if __name__ == '__main__':
    command.run()
$ python test.py
$ python test.py -v   # Increasing the verbosity of logging module

The argument decorator has the same api as argparse.ArgumentParser.add_argument. See http://docs.python.org/dev/library/argparse.html for details.

Building subcommands

# examples/subtest.py
from argtools import command, argument

@command.add_sub
def foo(args):
    """ This is foo
    """
    print 'foo'


@command.add_sub
def bar(args):
    """ This is bar
    """
    print 'bar'


@command.add_sub(name=baz)  # set different name
def bar(args):
    """ This is baz
    """
    print 'baz'

if __name__ == '__main__':
    command.run()
$ python test.py foo      # print foo
$ python test.py bar      # print bar
$ python test.py bar -h   # print help text of bar subcommand

Other features

  • In command.run(), the logging module is setup. You can control the verbosity with options: -v, -vv, ..
  • In command.run(), SIGPIPE occured inside of wrapped function will be ignored to ease piping.
  • To use group or exclusive functionality of argparse, give argument objects (e.g. arg1, arg2, arg3) as @argument.group(arg1, arg2, arg3) or @argument.exclusive(arg1, arg2, arg3), respectively (documentation is #TODO).
  • Builtin options: -v, --verbose and --debug can be turned off by setting command.add_verbose = False or command.add_debug = False

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

argtools-0.1.6.tar.gz (4.8 kB view details)

Uploaded Source

File details

Details for the file argtools-0.1.6.tar.gz.

File metadata

  • Download URL: argtools-0.1.6.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.0

File hashes

Hashes for argtools-0.1.6.tar.gz
Algorithm Hash digest
SHA256 0d5f9be15a81822fe53b05a8e73983267929c55fb65751506c97425b0557bbec
MD5 6a8817e3c4ab96d4d2ccef353dfdd7b4
BLAKE2b-256 cc6e697dcd8daaa1c47fd4c72419112664c6b7c10af069340390b5932a97ebdc

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