Upgrading optparse code

Upgrading optparse code

Originally, the argparse module had attempted to maintain compatibility with optparse. However, optparse was difficult to extend transparently, particularly with the changes required to support nargs= specifiers and better usage messages. When most everything in optparse had either been copy-pasted over or monkey-patched, it no longer seemed practical to try to maintain the backwards compatibility.

The argparse module improves on the optparse module in a number of ways including:

  • Handling positional arguments.

  • Supporting subcommands.

  • Allowing alternative option prefixes like + and /.

  • Handling zero-or-more and one-or-more style arguments.

  • Producing more informative usage messages.

  • Providing a much simpler interface for custom type and action.

A partial upgrade path from optparse to argparse: