A simple argparse wrapper.
Project description
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::
@command
def echo(text='hello'):
print text
parser = ArghParser()
parser.add_commands([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.
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/
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_ 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. :-)
.. _Tool: http://pypi.python.org/pypi/tool
.. _OrgTool: http://pypi.python.org/pypi/orgtool
.. _Watchdog: https://github.com/gorakhargosh/watchdog/blob/master/watchdog/watchmedo.py
.. _Poni: https://github.com/melor/poni/commit/14e8ccbb50e9e17b95a2f2a0d2cd0af5d90ca22b
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/>.
===============
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::
@command
def echo(text='hello'):
print text
parser = ArghParser()
parser.add_commands([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.
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/
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_ 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. :-)
.. _Tool: http://pypi.python.org/pypi/tool
.. _OrgTool: http://pypi.python.org/pypi/orgtool
.. _Watchdog: https://github.com/gorakhargosh/watchdog/blob/master/watchdog/watchmedo.py
.. _Poni: https://github.com/melor/poni/commit/14e8ccbb50e9e17b95a2f2a0d2cd0af5d90ca22b
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
Release history Release notifications | RSS feed
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.11.0.tar.gz
(11.0 kB
view details)
File details
Details for the file argh-0.11.0.tar.gz
.
File metadata
- Download URL: argh-0.11.0.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d044fa6dd612201384be11f8ced7505576de8b9916f76cb953da297fae56b9d |
|
MD5 | e06005de5cb0795e2382951bf9e99948 |
|
BLAKE2b-256 | ac5ff69e7aae649b295fe49e15f5fa0ddf0ee6c32f75dbae33c2d9152f6fe060 |