Why ?#

can handle many kinds of argument-parsing patterns that are either very awkward, difficult, or impossible with other parsing libraries. In particular, we emphasize the following qualities:

Versatile#

provides high-level functionality equivalent to other parsers. But unlike other parsers, it permits low-level customization to handle arbitrarily complex parsing patterns. There are many parsing patterns that can handle which are not possible with other parsing libraries.

Type-safe#

uses type annotations as much as Python allows. Types are checked using MyPy and exported with the package so that users can also benefit from the type system. Furthermore, with rare exceptions, avoids mutations and side-effects and preserves referential transparency. This makes it easier for the type-checker and for the user to reason about the code.

Concise#

provides many syntactic shortcuts for cutting down boilerplate:

Lightweight#

is written in pure python with no dependencies (excepting pytypeclass which was written expressly for this library and has no dependencies). will not introduce dependency conflicts and it installs in a flash.