Skip to main content

A simple argparse wrapper.

Project description

Did you ever say “argh” trying to remember the details of optparse or argparse API? If yes, this package may be useful for you. It provides a very simple wrapper for argparse with support for hierarchical commands that can be bound to modules or classes. Argparse can do it; argh makes it easy.

In a nutshell

Here’s a list of features that argh adds to argparse:

  • mark a function as a CLI command and specify its arguments before the parser is instantiated;

  • nested commands made easy: no messing with subparsers (though they are of course used under the hood);

  • infer agrument type from the default value;

  • infer command name from function name;

  • add an alias root command help for the --help argument;

  • enable passing unwrapped arguments to certain functions instead of a argparse.Namespace object.

Argh is fully compatible with argparse. You can mix argh-agnostic and argh-aware code. Just keep in mind that argh.dispatch does some extra work that a custom dispatcher may not do.

Installation

$ pip install argh

Example

A very simple application with one command:

from argh import *

@dispatch_command
@arg('name')
def main(args):
    return 'Hello ' + args.name

An application with multiple commands:

@command
def echo(text='hello'):
    print text

@command
def another_echo(text='hi there'):
    print text

parser = ArghParser()
parser.add_commands([echo, another_echo])

if __name__ == '__main__':
    parser.dispatch()

The powerful API of argparse is also available:

@arg('text', default='hello world', nargs='+', help='The message')
def echo(args):
    print args.text

The approaches can be safely combined.

Dependencies

Argh runs on Python 2.x (since 2.6, incl. PyPy) and 3.x. See documentation.

Documentation

See the complete documentation for details. If it’s not complete enough, feel free to ask your questions or submit bugs.

Author

Originally written by Andrey Mikhaylenko in 2010.

See file AUTHORS for a complete authors list of this application.

Please feel free to submit patches, report bugs or request features:

http://bitbucket.org/neithere/argh/issues/

Here’s the discussion group:

http://groups.google.com/group/argh-users

Real-life usage

Among applications that use argh are Tool, OrgTool, Watchdog, Poni, Pyg, Barman and more. Well, there’s probably no need to keep a complete and up-to-date list. Still, please let me know anyway if you use argh in your project. I’ll be glad to know. :-)

Licensing

Argh is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Argh is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with Argh. If not, see <http://gnu.org/licenses/>.

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

argh-0.18.0.tar.gz (16.1 kB view details)

Uploaded Source

File details

Details for the file argh-0.18.0.tar.gz.

File metadata

  • Download URL: argh-0.18.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for argh-0.18.0.tar.gz
Algorithm Hash digest
SHA256 ea1100b156a30a475c61396f865aa42d9d73f8774eaf549d1cc50d97f32ecd38
MD5 ef5633f181c48d7a28eead049814791e
BLAKE2b-256 23a2aec5f0afe10bf96b42d30138943abf998052f74566eb609a45529fa5106b

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