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
_pathwill be made absolute. - Don't worry about Unicode.
- Every key
[something]_module_pathtriggerscfg_loadto load the file found at[something]_module_pathas 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_loadappliesjson.loadsto the environment variable. - Every key ending with
_load_urlhas to havesource_urlandsink_path. Files fromsource_urlwill be loaded automatically and stored in thesink_path. Apolicyparameter can specify if it should beload_alwaysorload_if_missing.
Not there, but planned fo the future:
- Every key
[something]_cfg_pathwill triggercfg_loadto 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|