argh / README

Agrh, argparse!
===============

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;
* nesed 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::

    @arg('text')  # signature is same as ArgumentParser.add_argument
    def echo(args):
        print args.text
    
    parser = ArghParser()
    parser.add_commands([echo])

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

Documentation
-------------

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

.. _complete documentation: http://packages.python.org/argh

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/

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/>.
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.