Commits

Andy Mikhailenko committed 5261000

Re issue #25: extend the list of similar projects.

New items lack descriptions because there should be a table for comparison
instead of arbitrary comments written by a biased person like moi.

Comments (0)

Files changed (3)

   * Georges Dubus (Python3 support fixes)
   * Roman Ovchinnikov (Debian package)
   * thethomasw (Python2.6 bug reports)
+  * Tuk Bredsdorff (list of similar projects)
   * you? :)
 
 Patches, ideas and any feedback is highly appreciated.
-.. argh documentation master file, created by
-   sphinx-quickstart on Tue Nov  9 23:06:31 2010.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
 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.
 
-`Argh` provides a very simple wrapper for `argparse`. `Argparse` is a very
-powerful tool; `argh` just makes it easy to use.
+`Argh` provides a wrapper for `argparse`. `Argparse` is a very powerful tool;
+`argh` just makes it easy to use.
 
 In a nutshell
 -------------
 
    tutorial
    reference
+   similar
 
 Stability
 ---------
 
 The API may change in the future but there are no such plans yet.
 
-Similar projects
-----------------
+Why this one?
+-------------
 
-* 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.
-
-.. _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
+See :doc:`similar`.
 
 Author
 ------
+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/
+