A library that allows to easily load configuration settings.
Project description
Cfg-Loader
Cfg-Loader is a library that allows to easily load configuration settings. It uses marshmallow to deserialize input data into a target format configuration data.
Main features
input data validation and automatic processing using marshmallow
substitution of environment variables in input data (following docker compose variable substitution syntax)
configuration loading from .yaml file
Requirements
Python>=3.6
A simple example
>>> from cfg_loader import ConfigSchema, BaseConfigLoader
>>> from marshmallow import fields
# Declare your configuration schema
>>> class MyConfigSchema(ConfigSchema):
... setting1 = fields.Str()
... setting2 = fields.Int(required=True)
... setting3 = fields.Float(missing=13.2)
# Declare mapping to substitute environment variable
>>> substitution_mapping = {'FILE_PATH': 'file'}
# Initialize config loader
>>> my_config_loader = BaseConfigLoader(MyConfigSchema, substitution_mapping=substitution_mapping)
# Load configuration
>>> config = my_config_loader.load({'setting1': '/home/folder/${FILE_PATH?:file path required}', 'setting2': '4'})
>>> config == {'setting1': '/home/folder/file', 'setting2': 4, 'setting3': 13.2}
True
# Invalid input data
>>> my_config_loader.load({'setting1': '/home/folder/${FILE_PATH?:file path required}', 'setting3': 13.4})
Traceback (most recent call last):
...
cfg_loader.exceptions.ValidationError: {'setting2': ['Missing data for required field.']}
>>> my_config_loader.load({'setting2': 12, 'setting3': 'string'})
Traceback (most recent call last):
...
cfg_loader.exceptions.ValidationError: {'setting3': ['Not a valid number.']}
# Variable substitution invalid
>>> my_config_loader.load({'setting2': '${UNSET_VARIABLE?Variable "UNSET_VARIABLE" required}'})
Traceback (most recent call last):
...
cfg_loader.exceptions.UnsetRequiredSubstitution: Variable "UNSET_VARIABLE" required
Documentation
Full documentation is available at https://cfg-loader.readthedocs.io/en/stable/.
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 theatro-cfg-loader-0.3.1.tar.gz
.
File metadata
- Download URL: theatro-cfg-loader-0.3.1.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
49bdd77499b601339a35fb2c4dba683f8ece322ab3ca3f09eb6d240411dc3d51
|
|
MD5 |
d1b4c600bd18bef85359186ca101abb8
|
|
BLAKE2b-256 |
d36f5779c3fcf043c99d4c9bbbcf4a46dfe5e69417db3989fcd1dd79913be071
|
File details
Details for the file theatro_cfg_loader-0.3.1-py2.py3-none-any.whl
.
File metadata
- Download URL: theatro_cfg_loader-0.3.1-py2.py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ea7970c91c1a770d0566c3d23fecb5723f5ac3420d8ebfc3d9f6e935e7ddea6f
|
|
MD5 |
ac19cacd7d73d1b3112de0f6c273a004
|
|
BLAKE2b-256 |
f046b7a0280ab85fbb06f5e2981d55cf47197ce6d49760b88ff2ebc406d6fbfa
|