CFG-RW is a Python library for reading and writing properties in configuration files.
pip3 install cfgrw
CFG-RW can read configuration properties from YAML, JSON, INI, and XML files.
Create a configuration file, e.g. cfgrw.yaml
:
---
handlers: "stream,file"
datefmt: "%Y-%m-%d %H:%M:%S"
filename: "stage/test-integration/test-yaml-conf.log"
filemode: "w"
format: "%(levelname)s %(message)s"
level: "info"
Create CFGRW object with specific conf_file, and read the values of the configuration properties:
from cfgrw import CFGRW
cfgrw = CFGRW(conf_file='path/to/cfgrw.yaml')
values = cfgrw.read(['handlers', 'filemode', 'level'])
print(value['handlers']) # will print stream,file
print(value['filemode']) # will print w
print(value['level']) # will print info
CFG-RW can also read configuration properties from environment variables with a given prefix.
For example, here are the environment variables with prefix CFGRW_
:
export CFGRW_HANDLERS="stream,file"
export CFGRW_DATEFMT="%Y-%m-%d %H:%M:%S"
export CFGRW_FILENAME="stage/test-integration/test-yaml-conf.log"
export CFGRW_FILEMODE="w"
export CFGRW_FORMAT="%(levelname)s %(message)s"
export CFGRW_LEVEL="info"
Create CFGRW object without conf_file, and read the value of the configuration properties with specified prefix:
cfgrw = CFGRW()
values = cfgrw.read(['handlers', 'filemode', 'level'], { 'prefix': 'CFGRW_' })
print(value['handlers']) # will print stream,file
print(value['filemode']) # will print w
print(value['level']) # will print info
CFG-RW can read configuration properties with YAML, JSON, INI, and XML within a Jinja template. You just need to add a .j2
to the configuration file name.
Create a configuration Jinja template, e.g. cfgrw.yaml.j2
:
---
handlers: "{{ env.FOOBAR_HANDLERS }}"
datefmt: "%Y-%m-%d %H:%M:%S"
filename: "stage/test-integration/test-yaml-conf.log"
filemode: "{{ env.FOOBAR_FILEMODE }}"
format: "%(levelname)s %(message)s"
level: "{{ env.FOOBAR_LEVEL }}"
and the following environment variables:
export FOOBAR_HANDLERS="stream,file"
export FOOBAR_FILEMODE="w"
export FOOBAR_LEVEL="info"
Create CFGRW object with specific conf_file, and read the values of the configuration properties:
from cfgrw import CFGRW
cfgrw = CFGRW(conf_file='path/to/cfgrw.yaml.j2')
values = cfgrw.read(['handlers', 'level', 'level'])
print(value['handlers']) # will print stream,file
print(value['filemode']) # will print w
print(value['level']) # will print info
CFG-RW automatically loads the configuration file based on the extension.
Format | Extension |
---|---|
INI | .ini |
JSON | .json |
XML | .xml |
YAML | .yaml or .yml |
Jinja | .ini.j2 or .json.j2 or .xml.j2 or .yaml.j2 or .yml.j2 |
Build reports: