Simple layered configuraion tool
Project description
Compendium
Overview
Compendium is a layered configuration management tool. It has the capability to manage configuration files writen in JSON, TOML, XML and YAML. Settings from these configuration files can then be managed easily with the help of dpath.
Documentation
https://kuwv.github.io/python-compendium/
Install
pip install compendium
Manage a configuration file
>>> import os
>>> from compendium import ConfigFile
>>> basedir = os.path.join(os.getcwd(), 'tests')
>>> filepath = os.path.join(basedir, 'config.toml')
>>> cfg = ConfigFile(filepath)
>>> settings = cfg.load()
Simple lookup for title
>>> settings['/title']
'TOML Example'
Query values within list
>>> settings.values('/servers/**/ip')
['10.0.0.1', '10.0.0.2']
Check the current server IP address
>>> settings['/database/server']
'192.168.1.1'
Update the server IP address
>>> settings['/database/server'] = '192.168.1.2'
>>> settings['/database/server']
'192.168.1.2'
Check the database max connections
>>> settings['/database/connection_max']
5000
Delete the max connections
>>> del settings['/database/connection_max']
Check that the max connections have been removed
>>> settings.get('/database/connection_max')
Manage multiple layered configurations
The ConfigManager
is a layered dictionary mapping. It allows multiple
configurations to be loaded from various files. Settings from each file
is overlapped in order so that the first setting found will be used.
>>> import os
>>> from compendium import ConfigManager
Reference config files from examples
>>> basedir = os.path.join(os.getcwd(), 'examples', 'config_manager')
>>> config1 = os.path.join(basedir, 'config1.toml')
>>> config2 = os.path.join(basedir, 'config2.toml')
Retrieve settings from config files
>>> cfg = ConfigManager(name='app', filepaths=[config1, config2])
Get using dpath
>>> cfg.get('/default/foo2')
'bar2'
Lookup with multi-query
>>> cfg.lookup('/example/settings/foo', '/default/foo')
'baz'
Manage nested configurations
>>> import os
>>> from anytree import RenderTree
>>> from compendium.config_manager import ConfigManager, TreeConfigManager
>>> basedir = os.path.join(os.getcwd(), 'examples', 'tree')
>>> cfg = TreeConfigManager(
... name='fruit',
... basedir=basedir,
... filename='node.toml',
... load_root=True,
... load_children=True,
... )
>>> cfg.defaults == {}
True
>>> 'succulant' in cfg['/fruit/children']
True
>>> succulant = cfg.get_config('/fruit/succulant')
>>> succulant.name
'succulant'
Manage configurations using Hierarchy File System (HFS)
TBD
Development
python -m venv .vev
pip install -e .[dev]
python -m doctest README.md
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
File details
Details for the file compendium-0.1.3.post9.tar.gz
.
File metadata
- Download URL: compendium-0.1.3.post9.tar.gz
- Upload date:
- Size: 37.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 426e9e5189116bfffe81b2c5ef8681a30851b8fa2be4afa459318dc260a82a5b |
|
MD5 | b7ceed444cb642acf706793558885663 |
|
BLAKE2b-256 | f5c5284089ec1114f1a03e51dc5d9530f04cdf8f3ddac6f0daa9171b53c02a0e |
File details
Details for the file compendium-0.1.3.post9-py3-none-any.whl
.
File metadata
- Download URL: compendium-0.1.3.post9-py3-none-any.whl
- Upload date:
- Size: 26.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.0 CPython/3.11.9
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c55802d6a1fddf5773738642a968b2781e56e5552eb5b1349bb713aae06e3464 |
|
MD5 | a348cf9c8bea1affe8688cf5cc05c2de |
|
BLAKE2b-256 | 7bb6343cadcac234153e0fe845bd6f15fb00fe90bab8cc3b815d268339b01181 |