跳转到主要内容

通用配置机制

项目描述

概述

infi.conf 是一个用于存储、加载和操作配置的通用机制。

使用方法

基础

给定一个类似这样的文件

>>> f = open("/tmp/my_file.cfg", "w")
>>> _ = f.write("""
... CONFIG = {
...    "a" : {
...       "b" : 2,
...    }
... }""")
>>> f.close()

获取配置对象是通过

>>> from infi.conf import Config
>>> c = Config.from_filename("/tmp/my_file.cfg")
>>> c.root.a.b
2

从其他来源加载

您也可以从字符串加载

>>> c = Config.from_string("CONFIG = {'a' : 2}")
>>> c.root.a
2

设置路径

设置路径是通过设置项目完成的

>>> c['a'] = 3
>>> c.root.a
3

不允许设置之前不存在的路径,除非您分配一个配置对象

>>> c['b'] = 3 #doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
 ...
CannotSetValue: Cannot set key 'b'

>>> c['b'] = Config(2)
>>> c.root.b
2

也可以通过 root 代理进行分配

>>> c.root.a = 3
>>> c.root.a
3

备份/恢复

每次您想要在更改之前保存配置并在以后恢复它时,都可以使用 backup()restore() 来实现。它们像栈一样工作,因此它们推入和弹出状态

>>> c = Config({"value":2})
>>> c['value']
2
>>> c.backup()
>>> c['value'] = 3
>>> c['value']
3
>>> c.backup()
>>> c['value'] = 4
>>> c['value']
4
>>> c.restore()
>>> c['value']
3
>>> c.restore()
>>> c['value']
2

实用工具

路径分配

您可以通过路径分配将配置分配给,例如

>>> c = Config(dict(a=dict(b=dict(c=3))))
>>> from infi.conf.utils import assign_path
>>> assign_path(c, "a.b.c", 4)
>>> c.root.a.b.c
4

表达式路径分配

在某些情况下,您可能希望接收如下字符串

a.b.c=2

并在配置的上下文中理解它们。这可能是由于它们来自命令行、覆盖文件或任何其他来源。 infi.conf 的实用工具提供了一个用于此的功能

>>> from infi.conf.utils import assign_path_expression
>>> assign_path_expression(c, "a.b.c=2")
>>> c.root.a.b.c
'2'

请注意,在此方法中,类型始终为字符串。如果你的叶子节点已有值,可以使用deduce_type标志从当前值推导类型。

>>> c['a']['b']['c'] = 3
>>> assign_path_expression(c, 'a.b.c=666', deduce_type=True)
>>> c.root.a.b.c
666

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

infi.conf-0.0.16.tar.gz (4.3 kB 查看哈希值)

上传时间

支持者