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.

Files for argtools, version 0.1.6
Filename, size File type Python version Upload date Hashes
Filename, size argtools-0.1.6.tar.gz (4.8 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page