Library for loading configuration files
Project description
cfg_load
Loading configuration files is a common task in many projects. This package does the job.
Installation
The recommended way to install cfg_load is:
$ pip install cfg_load[all] --user
Note: You might have to escape [
and ]
in some shells like ZSH.
If you want the latest version:
$ git clone https://github.com/MartinThoma/cfg_load.git; cd cfg_load
$ pip instell -e .[all] --user
Usage
cfg_load
is intended to be used as a library. In your code, it will mostly
be used like this:
import cfg_load
config = cfg_load.load("some/path.yaml")
In order to check if it is doing what you expect, you can use it as a command line tool:
$ cfg_load tests/examples/cifar10_baseline.yaml
{ 'dataset': { 'script_path': '/home/moose/GitHub/cfg_loader/datasets/cifar10_keras.py'},
'evaluate': { 'augmentation_factor': 32,
'batch_size': 1000,
'data_augmentation': { 'channel_shift_range': 0,
'featurewise_center': False,
'height_shift_range': 0.15,
'horizontal_flip': True,
'rotation_range': 0,
'samplewise_center': False,
'samplewise_std_normalization': False,
'shear_range': 0,
'vertical_flip': False,
'width_shift_range': 0.15,
'zca_whitening': False,
'zoom_range': 0}},
'model': { 'script_path': '/home/moose/GitHub/cfg_loader/models/baseline.py'},
'optimizer': { 'initial_lr': 0.0001,
'script_path': '/home/moose/GitHub/cfg_loader/optimizers/adam_keras.py'},
'train': { 'artifacts_path': '/home/moose/GitHub/cfg_loader/artifacts/cifar10_baseline',
'batch_size': 64,
'data_augmentation': { 'channel_shift_range': 0,
'featurewise_center': False,
'height_shift_range': 0.1,
'horizontal_flip': True,
'rotation_range': 0,
'samplewise_center': False,
'samplewise_std_normalization': False,
'shear_range': 0,
'vertical_flip': False,
'width_shift_range': 0.1,
'zca_whitening': False,
'zoom_range': 0},
'epochs': 1000,
'script_path': '/home/moose/GitHub/cfg_loader/train/train_keras.py'}}
You can see that it automatically detected that the file is a YAML file and
when you compare it to cfg_load examples/cifar10_baseline.yaml --raw
you can
also see that it made the paths absolute.
Good Application Practice
import cfg_load
# Load defaults
base_cfg = cfg_load.load("some/path.yaml")
# Overwrite defaults if user defined it
user_cfg = cfg_load.load("other/path.yaml")
user_cfg = base_cfg.update(user_cfg)
# Overwrite user default with environment variables
env_mapping = cfg_load.load("other/env_mapping.yaml")
cfg = user_cfg.apply_env(env_mapping)
Features
- You load your config like this:
cfg = cfg_load.load('examples/test.json')
- No key that starts with
_
will ever be touched. - Keys ending in
_path
will be made absolute. - Don't worry about Unicode.
- Every key
[something]_module_path
triggerscfg_load
to load the file found at[something]_module_path
as a Python module tocfg.modules['something']
. - If an environment variable with the same name as a config key exists, the
take the value of the environment variable. Please note: If the type of
the overwritten key is not str, then
cfg_load
appliesjson.loads
to the environment variable. - Every key ending with
_load_url
has to havesource_url
andsink_path
. Files fromsource_url
will be loaded automatically and stored in thesink_path
. Apolicy
parameter can specify if it should beload_always
orload_if_missing
.
Not there, but planned fo the future:
- Every key
[something]_cfg_path
will triggercfg_load
to search for another config file and append it at[something]
. By this way you can define configuration files recursively.
Development
Check tests with tox
.
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 cfg_load-0.9.0.tar.gz
.
File metadata
- Download URL: cfg_load-0.9.0.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dddd3c68db8a2eeefcfefd8d3554684bdfa8af5f5e62bf1a731da0d2c85d4585 |
|
MD5 | 93020cb9a46906b8a6070886eec61441 |
|
BLAKE2b-256 | 331919e813c5347b7f7e86e9f1ce58df18bfa839d6c7fde300a0980ff4926d91 |
File details
Details for the file cfg_load-0.9.0-py3-none-any.whl
.
File metadata
- Download URL: cfg_load-0.9.0-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 989a6478d569c311da66188b1bb70c23b61b91d7bbe6a2b9be11684a7b78a1e0 |
|
MD5 | a8dcc5be4fea6623da0733cd899efe6f |
|
BLAKE2b-256 | a8948e71b5ad8af827f42d89cdc30a2cd3934eef7368005d2a5d5f4eee4efb37 |