Skip to main content

Python library for reading and writing properties in configuration files

Project description

Avatar

Build Status Security Status Dependencies Status Published Version

CFG-RW

CFG-RW is a Python library for reading and writing properties in configuration files.

Installation

pip3 install cfgrw

Usage

Configuration file

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(values['handlers']) # will print stream,file
print(values['filemode']) # will print w
print(values['level']) # will print info

Environment variables

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(values['handlers']) # will print stream,file
print(values['filemode']) # will print w
print(values['level']) # will print info

Configuration file with Jinja template

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(values['handlers']) # will print stream,file
print(values['filemode']) # will print w
print(values['level']) # will print info

Configuration

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

Colophon

Developer's Guide

Build reports:

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

cfgrw-1.0.0.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cfgrw-1.0.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file cfgrw-1.0.0.tar.gz.

File metadata

  • Download URL: cfgrw-1.0.0.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1014-azure

File hashes

Hashes for cfgrw-1.0.0.tar.gz
Algorithm Hash digest
SHA256 43decedfb9d79ed48bd9d81180b16ea4a549875a77f59de1c32e67c269a2a79b
MD5 3dcb941a7424f66aa92e52945eda16b1
BLAKE2b-256 3b80a4db868995f17a74c173483155d1f4717dc6cb2552dc9b16a7fe2350fcb5

See more details on using hashes here.

File details

Details for the file cfgrw-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: cfgrw-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1014-azure

File hashes

Hashes for cfgrw-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e7af0ba60efc40030bda35b639c6683527290a12cc44cc2f549a6bae4af336d
MD5 d69b095a558b894cdd1a2ab149afef81
BLAKE2b-256 be3bb0690d3ae8ea3b72eeecb31d46a0beeeca9bc747317e3bdbec91c97644a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page