开发人员的配置处理
devconfig的Python项目详细描述
目的
- 提供配置
python2
和python3
应用程序的统一方法 - 方便具有技术背景的开发人员、devops、qa和用户
读数
- yaml tutorial
- http://yaml.org/spec/1.1/
- yaml不是json,也不是数据序列化格式。它是一种对象序列化格式
要求
- 必须支持现成的yaml
- 必须通过递归合并开发人员定义的配置(默认值)和运行时提供的配置配置程序(独立模块或python包)。
- 每个配置层(例如默认值、运行时配置等)必须是嵌套映射
- 合并层的数量是不受限制的,开发人员可以重新定义。
- 层合并顺序可以由开发人员重新定义。
- 必须包含一组yamlconstructors
!url
!date
!datetime
!timedelta
!strjoin
!envvar
!regexp
!filecontent
- 应该包含一组危险的yaml构造函数
!file
!socket
!yamlfile
-按文件路径或url包含yaml
- may具有递归检测的流程构造函数(请参见需求说明)
- 可以包含cli arg映射构造函数
- 应该提供在加载配置之前扩展构造函数集的方法
- 必须提供使用^{
} 和合并配置中的值配置日志记录的方法- 运行时配置路径可以用envvar重新定义(比如
$ CONFIG=./some-config.yml program.py
)- 运行时配置路径可以用cli arg重新定义(如
$ program.py --config=./some-config.yml
)- 应该启用层之间的anchors共享
- 应该不允许重新定义以前层中定义的锚
- 必须支持文件系统路径作为配置路径
- 必须支持
file://
,http(s)://
url作为配置路径- may支持将
ftp://
url作为配置路径- may支持将
git://
url作为配置路径
要求注释
!file
和!socket
被认为是危险的,因为它们不可序列化
!yamlfile
可以在内部引用!class
或!object
和/或导致infinte yaml加载递归或模块加载递归。实施
- 提供
<module>.<config>
子模块,其中包含作为映射的结果配置
是吗???