跳转到主要内容

用于加载配置文件的库

项目描述

PyPI version Python Support Documentation Status Build Status Coverage Status

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_urlsink_path。来自source_url的文件将被自动加载并存储在sink_path中。一个policy参数可以指定是否为load_alwaysload_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 查看哈希值)

上传时间: Python 3

支持者

AWSAWS 云计算和安全赞助商 DatadogDatadog 监控 FastlyFastly CDN GoogleGoogle 下载分析 MicrosoftMicrosoft PSF 赞助商 PingdomPingdom 监控 SentrySentry 错误日志 StatusPageStatusPage 状态页面