Size: 1314
Comment: the goals of option parsing and description of current solutions
|
← Revision 9 as of 2021-02-07 21:56:17 ⇥
Size: 2249
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#pragma section-numbers on #pragma heading Option Parsing <<TableOfContents()>> |
|
Line 3: | Line 8: |
Overview of Python modules for option parsing: | == Builtin Tools == Overview of Python modules for option parsing |
Line 9: | Line 16: |
== External tools == | |
Line 10: | Line 18: |
External tools: | |
Line 12: | Line 19: |
* [[gflags]] - Google's remedy for C++ refugees | ||<style="width: 20%;"> '''Name''' ||<style="width: 10%;"> '''[[https://hugovk.github.io/top-pypi-packages/|365 Day Ranking]]''' ||<style="width: 20%;"> '''Latest Release''' || '''Description''' || || [[https://github.com/abseil/abseil-py|Abseil Python Common Libraries]]<<BR>>(pypi: [[https://pypi.org/project/absl-py/|absl-py]]) || 103 || 0.11.0 (2020-10-27) || gflags merged into this || || [[https://palletsprojects.com/p/click/|Click]]<<BR>>(pypi: [[https://pypi.org/project/click/|click]]) || 34 || 7.1.2 (2020-04-27) || create beautiful command line interfaces in a composable way with as little code as necessary || || [[https://typer.tiangolo.com/|Typer]]<<BR>>(pypi: [[https://pypi.org/project/typer/|typer]]) || 2321 || 0.3.2 (2020-08-16) || build great CLIs. Easy to code. Based on Python type hints. || More: |
Line 16: | Line 32: |
=== The goal of option parsing === | == The goal of option parsing == |
Line 27: | Line 44: |
See also ConfigParser. | == See Also == * ConfigParser * CommandlineTools |
1. Builtin Tools
Overview of Python modules for option parsing
getopt - procedural interface in stdlib for refugees from the C camp
optparse - stdlib name for Optik, a revolutionary API for option parsing in Python 2.x
argparse - optparse pumped up for Python 3.x (and included in Python 2.7)
2. External tools
Name |
Latest Release |
Description |
|
103 |
0.11.0 (2020-10-27) |
gflags merged into this |
|
34 |
7.1.2 (2020-04-27) |
create beautiful command line interfaces in a composable way with as little code as necessary |
|
2321 |
0.3.2 (2020-08-16) |
build great CLIs. Easy to code. Based on Python type hints. |
More:
3. The goal of option parsing
The option parsing goal can be split in two parts:
- identifying the command user needs to execute
- changing configuration for the program
For the first part, it will be good if option parsing library could handle 'subcommands'. It is known that 'argparse' can do this and 'optparse' cannot. 'docopt' probably handles this transparently.
For the second thing there should be some strategy to choose how (and which) options are merged into configuration to make the process of program configuration easy for the user and occasional patch contributors.