A simple argparse wrapper.
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.
$ pip install argh
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()
See the complete documentation for details. If it’s not complete enough, feel free to ask your questions or submit bugs.
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/>.