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
orexclusive
functionality of argparse, giveargument
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
orcommand.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)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d5f9be15a81822fe53b05a8e73983267929c55fb65751506c97425b0557bbec |
|
MD5 | 6a8817e3c4ab96d4d2ccef353dfdd7b4 |
|
BLAKE2b-256 | cc6e697dcd8daaa1c47fd4c72419112664c6b7c10af069340390b5932a97ebdc |