Class to get options from command line and config file
Project description
Python class to get options from command line and config file
Free software: MIT license
Documentation: https://optini.readthedocs.io.
Features
Aggressively conventional defaults
- Collect configuration from command line, config file, and defaults
Configuration hierarchy: command line > config file > defaults
- Interface is a module-level variable: optini.opt
Module-level interface allows libraries to access config
- Access config options through module-level dotmap interface
Example: optini.opt.verbose
- Derives command line options from option names
Example: “verbose” => -v and –verbose
- Single flag to support (mostly) conventional logging options
(-v, -d, -q, -L, -F LOGFILE)
Single flag to support I/O options (-i input and -o output)
Supports top-level ini section without a header
Uses standard libraries under the hood (logging, argparse, configparser)
Limitations
Only top-level code (such as UI script) should initialize Config
Examples
Define one boolean option, someopt, which defaults to false; users can specify -s at the command line, or put someopt = true in the config file.
import optini
optini.spec.someopt.help = 'Set a flag'
# implies -s and --someopt command line options
desc = 'This code does a thing'
optini.Config(appname='myapp', file=True, desc=desc)
if optini.opt.someopt:
print("someopt flag is set")
Config file defaults to ~/.<appname>.ini
Enable logging config:
import logging
import optini
optini.Config(appname='something', logging=True)
# the verbose (-v) option enables info messages
logging.info('this is an info message')
# the debug (-d) option enables debug messages
logging.debug('this is a debug message')
# the Log (-L) option writes logs to file (default: <appname>.log)
Option Specification Format
Nested data structure (either dict or dotmap is valid)
The top level key is the option name
- To configure each option, specify second level keys:
- helpstr, default=None
for argparse usage message, default config file comments
- typetype, default=bool
type hint for parsers
Supported: bool, str, int, float
- default, default=None
the default value for the option
- required, default=False
Declare the option mandatory at the command line
- shortstr
Short form command line option (example: -v)
- longstr
Long form command line option (example: –verbose)
- configfilebool
Specify False for command line only options
Second level keys, apart from configfile, are passed to argparse
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
Project details
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
File details
Details for the file optini-0.5.0.tar.gz
.
File metadata
- Download URL: optini-0.5.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c57c7505d8cf8e3d40b794a843706a28f1e845cb0972325b250ff1d99b3ddfb4 |
|
MD5 | fa51bd246ad69663aed572cc7543dc14 |
|
BLAKE2b-256 | 2a62de20e95dce53fd22d7c4ffec73bc0cbec996b889927364de0592977a3965 |
File details
Details for the file optini-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: optini-0.5.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: python-requests/2.31.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55645d4c3797a5bd276db0380fc112493dc1c65e0cc52c855397246b67b7fded |
|
MD5 | ad368b9e5a4cebd001852ceb7ec0b9c6 |
|
BLAKE2b-256 | a17af24516225eab0c6209c66f45b337cf2d494847305e3eed978a3388aef192 |