用于加载配置文件的库
项目描述
cfg_load
在许多项目中,加载配置文件是一项常见任务。这个包就完成了这个任务。
安装
安装cfg_load的推荐方法是
$ pip install cfg_load[all] --user
注意:您可能需要在像ZSH之类的某些shell中转义[
和]
。
如果您想使用最新版本
$ git clone https://github.com/MartinThoma/cfg_load.git; cd cfg_load
$ pip instell -e .[all] --user
用法
cfg_load
旨在作为库使用。在您的代码中,它通常将像这样使用
import cfg_load
config = cfg_load.load("some/path.yaml")
为了检查它是否按预期工作,您可以将其用作命令行工具
$ 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'}}
您可以看到它自动检测到文件是YAML文件,并且当您将其与cfg_load examples/cifar10_baseline.yaml --raw
进行比较时,您还可以看到它已将路径转换为绝对路径。
良好的应用实践
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)
功能
- 您可以这样加载配置:
cfg = cfg_load.load('examples/test.json')
- 以
_
开头的键将永远不会被触及。 - 以
_path
结尾的键将被转换为绝对路径。 - 不用担心Unicode。
- 每个
[something]_module_path
键都会触发cfg_load
将位于[something]_module_path
的文件作为Python模块加载到cfg.modules['something']
中。 - 如果存在与配置键同名环境变量,则取该环境变量的值。请注意:如果覆盖键的类型不是str,则
cfg_load
将应用json.loads
到环境变量。 - 每个以
_load_url
结尾的键都必须有source_url
和sink_path
。来自source_url
的文件将被自动加载并存储在sink_path
中。一个policy
参数可以指定是否为load_always
或load_if_missing
。
目前尚未实现,但计划在未来实现
- 每个以
[something]_cfg_path
结尾的键都会触发cfg_load
在[something]
处查找另一个配置文件并将其附加。通过这种方式,您可以递归地定义配置文件。
开发
使用tox
检查测试。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
cfg_load-0.9.0.tar.gz (10.7 kB 查看哈希值)
构建分布
cfg_load-0.9.0-py3-none-any.whl (10.7 kB 查看哈希值)
关闭
cfg_load-0.9.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dddd3c68db8a2eeefcfefd8d3554684bdfa8af5f5e62bf1a731da0d2c85d4585 |
|
MD5 | 93020cb9a46906b8a6070886eec61441 |
|
BLAKE2b-256 | 331919e813c5347b7f7e86e9f1ce58df18bfa839d6c7fde300a0980ff4926d91 |
关闭
cfg_load-0.9.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 989a6478d569c311da66188b1bb70c23b61b91d7bbe6a2b9be11684a7b78a1e0 |
|
MD5 | a8dcc5be4fea6623da0733cd899efe6f |
|
BLAKE2b-256 | a8948e71b5ad8af827f42d89cdc30a2cd3934eef7368005d2a5d5f4eee4efb37 |