使用YAML和入口点的配置系统
项目描述
repoze.configuration README
repoze.configuration 是一个软件开发者可以使用的配置系统包。它允许使用 YAML 作为配置语言。可以通过一个或多个Python setuptools入口点将应用程序定义的“指令”插入到 repoze.configuration 中。例如,您可以使用repoze.configuration和自定义“appsettings”指令来理解以下YAML:
--- !appsettings port_number = 8080 reload_templates = true --- !include filename = anotherfile.yml
有关更多文档,请参阅docs/index.rst或http://docs.repoze.org/configuration。
repoze.configuration 更改日志
0.8 (2012-03-29)
这是最后一个将支持Python 2.4 / Python 2.5的版本。
增加了对使用 tox 和 jenkins 的持续集成支持。
添加了别名“setup.py dev”(运行 setup.py develop 并安装 nose 和 coverage)。
repoze.configuration.context.Context 实例现在继承自 dict。之前,上下文对象保证有一个名为 registry 的子属性,该属性假定是字典类型;插值使用此字典来解析名称。为了插值的目的,“registry”现在假定是上下文本身。已为后向兼容性在上下文中添加了一个名为 registry 的属性别名。
声明对象的 registry 属性现在已弃用;相反,应直接使用 declaration.context。
添加了一个类,repoze.configuration.imperative.ImperativeConfig,允许配置对象提供一个基于可发现入口点的指令的命令式API。
0.7 (2010-02-24)
允许 repoze.configuration.context.Context 构造函数接受任意的关键字参数。这些关键字参数被添加到结果上下文对象实例的 __dict__ 中。
repoze.configuration.context.Context.execute 的返回值不再是上下文对象的 registry 属性;而是 None。registry 对象不再是“特殊”的。
0.6 (2009-12-30)
当使用 None 判别符(默认值)调用 context.action 时,它会与其他没有提供判别符的动作发生冲突。
如果 repoze.configuration.directive 入口点的名称以字符“tag:”开头,则将该名称视为 YAML 标签 URI。YAML 标签 URI 可以通过 YAML %TAG 指令在 YAML 文件顶部别名到更短的 !bang! 名称(参见 YAML 全局标签前缀文档)。
目的是鼓励指令编写者注册相同入口点函数的“短名”(一个单词)和标签 URI。这样做意味着配置文件编写者可以可选地使用标签 URI(!<tag:repoze.org,2009:pypes/server>)来代替“短名”(!server),当由于两个不同包中的两个指令具有相同的短名而无法使用短名时。
例如,一个应用程序可以在 setup.py 中的 repoze.configuration.directive 部分中注册 server = pypes.deploy.directives:server 和 tag:repoze.org,2009:pypes/server = pypes.deploy.directives:server。使用上述入口点的配置文件可以等效地在给定的 YAML 文件中使用以下三种形式中的任何一种
# tag alias %TAG !pypes! tag:repoze.org,2009:pypes/ # short name --- !server name: main port: 8082 host: 0.0.0.0 # rely on tag expansion from %TAG directive --- !pypes!server name: main port: 8082 host: 0.0.0.0 # use literal tag URI --- !<tag:repoze.org,2009:pypes/server> name: main port: 8082 host: 0.0.0.0
0.5 (2009-07-26)
添加有关插值的文档。
在控制台上的错误报告中只显示行号(以前同时报告行号和列号,但在大多数调试场景中列号似乎没有意义)。
修复错误报告中行号报告的偏移量错误。
插值变量现在首先尝试使用注册表,但如果失败则回退到“堆栈”值;其中最重要的是 %(here)s;这个插值变量可以在任何配置文件中使用。它将是声明它的配置文件的父目录的绝对路径。任何堆栈变量都将被注册表变量永久覆盖(对于插值目的)。
0.4 (2009-07-25)
完全不兼容。
指令现在接受“声明”对象,而不是“上下文”、“结构”和“节点”。声明对象拥有大部分以前由“上下文”提供的方法,还有一些新的方法。文档已更新。
0.3 (2009-07-24)
向下不兼容:指令现在必须接受三个参数:上下文、结构和节点(之前它们只接受上下文和结构)。
在上下文中添加了 error 方法。
使判别冲突检测真正工作。
在可能的情况下,在判别冲突时显示冲突文件的实际行。
在尝试解决入口点加载时忽略导入错误。
向上下文中添加了一个 popvalue 方法;它像 getvalue 一样工作,但它从提供的结构中弹出值,而不是仅仅获取它。
无法使用 repoze.configuration.context.Context.resolve 将单个点 . 解析到当前包。
在任意字符串值中使用 Python %(interpolation)s 标记允许您替换字符串中的值。例如,在字符串值中使用 “%(here)s” 将尝试从注册表中解析名称“here”作为键。
使用 pyyaml 的 SafeLoader 而不是 Loader:我们实际上不需要能够构建任意的 Python 对象。
0.2 (2009-07-13)
尝试读取任何不是 YAML 映射的指令部分会导致 TypeError(例如,construct_scalar takes no argument 'deep')。
0.1 (2009-06-22)
初始发布。
项目详情
repoze.configuration-0.8.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 4e93ddd7843d5f9c1ab0a0173f4a0713e88a4ed5fac060c29db600b8c0751eb0 |
|
MD5 | 1667da0977d7159a779f7cc95e2ae0aa |
|
BLAKE2b-256 | affc2aa7645f183929d08c11a073515be1028a33375f5705dc7a1a4b434ea59a |