Similar projects
~~~~~~~~~~~~~~~~

Obviously, `Argh` is not the only CLI helper library in the Python world.
It was created when some similar solutions already existed; more appeared
later on.  There are valid reasons behind maintaining most projects.

The list below is nowhere near exhausting; certain items are yet to be
reviewed; the comments should have been more structured.  However, it gives
a picture of the alternatives.

Ideally, we'd need a table with the following columns: supports argparse;
has integrated parser; requires subclassing; supports nested commands;
is bound to an unrelated piece of software; involves "magic" (i.e. undermines
clarity); depends on outdated libraries; has simple API; has unobtrusive API;
supports Python3.  Not every "yes" in this table would count as pro.

* argdeclare_ requires additional classes and lacks support for nested
  commands.
* argparse-cli_ requires additional classes.
* django-boss_ seems to lack support for nested commands and is strictly
  Django-specific.
* entrypoint_ is lightweight but involves a lot of magic and seems to lack
  support for nested commands.
* opster_ and finaloption_ support nested commands but are based on the
  outdated `optparse` library and therefore reimplement some features available
  in `argparse`. They also introduce decorators that don't just decorate
  functions but change their behaviour, which is bad practice.
* simpleopt_ has an odd API and is rather a simple replacement for standard
  libraries than an extension.
* opterator_ is based on the outdated `optparse` and does not support nested
  commands.
* clap_ ships with its own parser and therefore is incompatible with
  `clap`-agnostic code.
* plac_ is a very powerful alternative to `argparse`. I'm not sure if it's
  worth migrating but it is surely very flexible and easy to use.
* baker_
* plumbum_
* docopt_
* aaargh_
* cliff_
* cement_

.. _argdeclare: http://code.activestate.com/recipes/576935-argdeclare-declarative-interface-to-argparse/
.. _argparse-cli: http://code.google.com/p/argparse-cli/
.. _django-boss: https://github.com/zacharyvoase/django-boss/tree/master/src/
.. _entrypoint: http://pypi.python.org/pypi/entrypoint/
.. _opster: http://pypi.python.org/pypi/opster/
.. _finaloption: http://pypi.python.org/pypi/finaloption/
.. _simpleopt: http://pypi.python.org/pypi/simpleopt/
.. _opterator: https://github.com/buchuki/opterator/
.. _clap: http://pypi.python.org/pypi/Clap/
.. _plac: http://micheles.googlecode.com/hg/plac/doc/plac.html
.. _baker: http://pypi.python.org/pypi/Baker/
.. _plumbum: http://plumbum.readthedocs.org/en/latest/cli.html
.. _docopt: http://docopt.org
.. _aaargh: http://pypi.python.org/pypi/aaargh
.. _cliff: http://pypi.python.org/pypi/cliff
.. _cement: http://builtoncement.com/2.0/

