管理来自配置文件、环境变量、命令行参数、代码默认值或其他源的配置
layeredconfig的Python项目详细描述
完整文档:https://layeredconfig.readthedocs.org/
layeredconfig从文件、环境中编译配置 变量、命令行参数、硬编码默认值或其他 后端,并以简单的方式将其提供给您的代码:
from layeredconfig import (LayeredConfig, Defaults, INIFile, Environment, Commandline) # This represents four different way of specifying the value of the # configuration option "hello": # 1. hard-coded defaults defaults = {"hello": "is it me you're looking for?"} # 2. INI configuration file with open("myapp.ini", "w") as fp: fp.write(""" [__root__] hello = kitty """) # 3. enironment variables import os os.environ['MYAPP_HELLO'] = 'goodbye' # 4.command-line arguments import sys sys.argv = ['./myapp.py', '--hello=world'] # Create a config object that gets settings from these four # sources. config = LayeredConfig(Defaults(defaults), INIFile("myapp.ini"), Environment(prefix="MYAPP_"), Commandline()) # Prints "Hello world!", i.e the value provided by command-line # arguments. Latter sources take precedence over earlier sources. print("Hello %s!" % config.hello)
-
一个灵活的系统使指定资源成为可能。
配置信息,包括来源
优先。包括许多公共源的实现,并且
有一个api用于编写新的api。
- 包括ini文件、yaml文件、json文件的配置源, plist文件,etcd存储(读写),python源文件, 硬编码默认值、命令行选项、环境变量 (只读)。
- 配置可以包括子部分 (即config.downloading.refresh)如果 子节不包含请求的设置,它可以选择 从主配置获取(如果config.module.retry 缺少,config.retry可以改为使用)。
- 您的代码可以更改配置设置(即更新 “lastmodified”设置或类似设置),并且更改可以持久化 (保存)到您选择的后端。
- 已键入配置设置(即,如果设置应包含 日期,它作为 datetime.date对象,而不是str。如果 设置是从自身不提供的后端获取的 类型化数据(即环境变量,它们本身是 仅限字符串),类型强制系统使 指定应如何转换数据。
历史记录
0.3.2(2016-09-26)
- 修复了错误9(自定义节分隔符导致值 检索为列表,而不是单个值)。感谢@numberut 报告这个!
0.3.1(2016-08-31)
- 修正了错误8(用 定义的子节导致初始化崩溃。多亏了 @安山特报告这件事!
- 用于etcdstore的默认uri已更改以反映该端口 应该使用2379而不是4001(这是etcd的默认值 1.*)。
- 已放弃对Python3.2的支持。
0.3.0(2016-08-06)
- 新的staticmethoddump,它返回传递的 配置对象为dict。它也用作可打印的 配置对象的表示(通过__repr__)。
- 任何类型化设置的内部类型不能再是None。
- 如果将layeredconfig子类化,则任何创建的子类都将是 子类的实例,而不是基本的layeredconfig类
- 分层多个配置文件现在可以工作,即使以前 文件可能缺少后面的子部分。
以上都是由“绝地武士”完成的。非常感谢!
许多未报告的错误,主要与Unicode处理和 各种源中的类型转换也被修复。
0.2.2(2016-01-24)
- 修复了在默认配置中使用类 自动强制,其中类的类型不是类型(如 “newint”和将来的其他类的情况 模块)。
- 修复了从多个配置文件加载配置的错误 如果后面的配置缺少 早期的。感谢@badkapitan!
0.2.1(2014-11-26)
- 使命令行源与“部分 已配置“ArgumentParser对象(已配置的分析器 一些,但不是全部,可能的论点)。
0.2.0(2014-11-22)
- 与argparse集成:命令行源现在接受 可选的分析参数,它应该是 argparse.argumentparser对象。argparse的大多数特性,例如 指定参数类型和自动帮助文本
- 用于读取的新源pyfile来自python源的ing配置 文件夹。
- 另一个新的源etcdstore,用于从etcd读取配置 商店。
0.1.0(2014-11-03)
- pypi上的第一个版本。