Formalities, features, benefits and drawbacks
This project basically consists of a simple module dataparsers.py with few
functions that allows to define typed arguments parsers in a single place, based
on dataclasses.
Formalities
The main strategy of the module is based on the same approach of the
package datargs, which consists in using
the
metadata attribute of the dataclass fields
to store argument parameters. Some additional features of this project have
already been contributed back upstream.
There are a lot of alternative libraries out there that do similar things. The
README file of the
datargs repository provides a good
list for existing solutions and differences.
I could also add to that list the libraries
Python fire and the
package dargparser, just to
give few examples.
Features and benefits
Use this project if you want particular added features, such as:
Support for argument groups and mutually exclusive argument groups
Define all interface in one single place
More control over the interface display
More control over the argument flag
--creationMore similarity with
argparsemoduleMore simplicity
The simplicity is mentioned because it is just a simple module
dataparsers.py
that doesn’t have any additional dependency (it is pure Python) which can be
downloaded directly and placed in your CLI scripts folder to import from.
In deed, the module consists of a 315 lines
IPython code cell region
(i.e., starts and ends with a #%% line comment block), that can also be placed
on top of your “single file” CLI script to directly distribute. The used names
are just the few
provided functions,
the stdlib imports and Class (a TypeVar).
Additionally, this project also provides a
stub file (.pyi)
that can be used by type checkers but, moreover, may be used by some code
editors to give helper documentation including the related docs of argparse
methods, which are also provided in this project’s documentation, for
convenience. The stub file can be downloaded directly but it is installed with
the module by default.
Drawbacks
Unlike the datargs package, dataparsers doesn’t support:
The library
attrs(only works with pure pythondataclasses)Enums classesComplex types (Sequences, Optionals, and Literals)
If you want any of these features, use the
package datargs. If you need the added
features of dataparsers, use this module instead.