跳转到主要内容

使用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的版本。

  • 增加了对使用 toxjenkins 的持续集成支持。

  • 添加了别名“setup.py dev”(运行 setup.py develop 并安装 nosecoverage)。

  • 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 属性;而是 Noneregistry 对象不再是“特殊”的。

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:servertag: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 (33.7 kB 查看散列)

由以下支持