多级统一配置
项目描述
适用于Python的多级统一配置
您有一个(Python)程序需要从配置文件(目前支持JSON和YAML)和命令行[待办:环境变量]读取配置
您想能够序列化和反序列化配置
基本用法
configuration.Configuration类是一个扩展optparse.OptionParser的抽象基类。配置的形式由设置子类的options属性决定。options是一个字典,形式如下
{'name': {<value>}}
name是配置选项的名称,value是一个给出选项形式的dict。
Configuration将这些选项转换为OptionParser选项。
value的选项包括
帮助:该选项的内容(翻译为命令行帮助)
默认值:选项的默认值
必需:如果为真值,则此选项必须在配置中存在。如果required是一个字符串,则当选项不存在时将显示它。如果已定义默认值,则不需要required,因为将使用默认值
类型:选项的类型。用于控制选项的解析
标志:一个列表,如果存在,将被用作命令行标志。否则,将使用以--开头的前缀选项名称。要禁用作为命令行选项,请使用空列表[]
此外,您可以扩展Configuration并在value字典中的options有额外的有用项。
有关示例,请参阅http://k0s.org/mozilla/hg/configuration/file/c831eb58fb52/tests/example.py#l7
配置文件
配置文件对以下方面很有用:(个人看法) A. 复杂设置;B. 可重现性;C. 能够共享运行时配置。后者在配置不包含特定于机器的信息(例如,可执行文件的路径可能因机器而异)或配置可以从命令行覆盖时最有用。
configuration 具有将配置(导出)和从可插拔的格式集中反序列化的能力。默认情况下,--dump <filename> 将从命令行选项和加载的配置文件收集到的结果配置导出到由文件扩展名指定的格式(示例:--dump mydumpfile.json 将使用 JSON 格式)。选项的标志,例如 --dump,可以通过将 dump 参数传递给 Configuration 构造函数来设置。
Configuration 实例也可以反序列化数据。通常使用配置的情况是你想要从配置文件中读取。默认情况下,Configuration 实例读取要加载的配置文件的定位参数。如果你将 load 参数指定给 Configuration 构造函数,则将使用此选项。同样,文件扩展名将用于确定格式。
configuration 包 需要 json``(``simplejson 在较老的 python)和 PyYAML,因此如果你安装了此包,这些序列化/反序列化程序将可用。
扩展 Configuration
configuration 被设计成可插拔的。虽然你开箱即用就获得了一组有用的行为,但大多数 configuration 处理器都可以被操纵以执行你想要的操作。
Configuration 构造函数接受一个参数 types,它是一个字典,以类型为键,将 Configuration.options 转换为 optparse 选项的可调用对象。如果 Configuration.options 的类型未指定(或为 None),则使用默认值(除非你覆盖此值)(configuration.base_cli)。如果不传递,则 Configuration 实例使用 configuration.types。
types 中的可调用对象应接受选项名称和值字典,并应返回实例化 optparse.Option 所必需的参数和关键字参数。
Configuration 构造函数还接受一个选项 configuration_providers,它是要使用的序列化/反序列化程序列表。这些应该是具有以下对象的列表:使用扩展的列表、一个 read(filename) 方法来加载配置,以及一个 write(config, filename) 方法来写入配置。如果 read 存在,则提供者可以序列化。
待办事项
另请参阅
Jeff Hammel
项目详情
configuration-0.4.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d35cd73d51496f4061b32dba8411703593f46b96bf116b474e0efc975c277d0d |
|
MD5 | c310e26eda6ea502850e1b6d33ce4f0e |
|
BLAKE2b-256 | 366e22a6b49e30c6931867389841895f3fee617a4b121fcfc9c9a4441c0d0fa4 |