A module for building command-line interface from configuration.
Project description
config-argument-parser
A module for building command-line interface from configuration.
Motivation
Configuration files are highly readable and useful for specifying options, but sometimes they are not convenient as command-line interface. However, it requires writing a lot of code to produce a CLI. This module automates the building process, by utilizing the Python standard libraries configparser
and argparse
. It has features below.
- The comments are parsed as help messages. (Most libraries do not preserve the comments.)
- Consistent format between configuration and script provides ease of use.
- Only a few lines are needed to build a CLI.
Usage
Create an example script example.py
:
import args
parser = args.ConfigArgumentParser()
parser.read("config.ini")
# add short options for the first few arguments in order
# default is parser.add_arguments()
parser.add_arguments(shorts="sfb")
parser.parse_args()
print("Configs:", parser.defaults)
print("Args: ", parser.args)
Create a configuration file config.ini
in the same directory:
[DEFAULT]
# Help message of the first argument. Help is optional.
a_string = 'abc'
a_float = 1.23 # inline comments are omitted
# Help can span multiple lines.
# This is another line.
a_boolean = False
an_integer = 0
Show help, python example.py -h
:
usage: example.py [-h] [-s A_STRING] [-f A_FLOAT] [-b]
[--an_integer AN_INTEGER]
optional arguments:
-h, --help show this help message and exit
-s A_STRING, --a_string A_STRING
Help message of the first argument. Help is optional.
(default: abc)
-f A_FLOAT, --a_float A_FLOAT
(default: 1.23)
-b, --a_boolean Help can span multiple lines. This is another line.
(default: False)
--an_integer AN_INTEGER
(default: 0)
Regular run, python example.py
:
Configs: {'a_string': 'abc', 'a_float': 1.23, 'a_boolean': False, 'an_integer': 0}
Args: {'a_string': 'abc', 'a_float': 1.23, 'a_boolean': False, 'an_integer': 0}
Run with options, such as python example.py -b -f 1
:
Configs: {'a_string': 'abc', 'a_float': 1.23, 'a_boolean': False, 'an_integer': 0}
Args: {'a_string': 'abc', 'a_float': 1.0, 'a_boolean': True, 'an_integer': 0}
Installation
Install from PyPI:
python -m pip install --upgrade pip
pip install config-argument-parser
Alternatively, install from source:
git clone https://github.com/yuanx749/config-argument-parser.git
cd config-argument-parser
then install in development mode:
git checkout main
python -m pip install --upgrade pip
pip install -e .
or:
git checkout dev
python -m pip install --upgrade pip
pip install -e .[dev]
pre-commit install
Uninstall:
pip uninstall config-argument-parser
Notes
This package uses Semantic Versioning.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for config-argument-parser-0.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f91cffbaee296ab7c2e34ed84b46aa4322b9f2dd7cc07945ee4da8861bac733c |
|
MD5 | e51987004e83cb6f70b0e6b5065b454a |
|
BLAKE2b-256 | 763ebd874e059bc61b9d0d94d30197d4b1346c95f4a860eaea364301bcbcddde |
Hashes for config_argument_parser-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e66dee98eebac0f1d7b7ca7bf11641e605418578818c938da89add8c0be76236 |
|
MD5 | 3f06212768461e9c9ed20b95574c7094 |
|
BLAKE2b-256 | c27ecbbb67f9732d223e54dff49f0d4bc2bc6b686c381ca1e1bef2a231437c81 |