把json文件当作配置文件使用时,为了方便对配置文件进行操作而创建的配置文件类库
Project description
ni-config
把json文件当作配置文件使用时,为了方便对配置文件进行操作而创建的配置文件类库
配置文件的内容为json格式。
规范化json内容的实现层面上,主要通过 JSON Schema 对配置文件的json结构进行定义并进行校验实现的。
安装
pip install ni-config
pip install --upgrade ni-config
构建实例
from ni.config import Config
c = Config(desc)
desc | 说明 |
---|---|
str | 不含扩展名的文件名,一般为当前目录下、以”desc“为后缀的文件名,如:server.desc |
dict | 包含“name”、“default”、“schema”定义的词典 |
关于默认值
可以通过set_default方法来初始化配置实例的默认值
Config("server").set_default()
如若想检查目前的设定是否是默认值,可以使用is_default方法
c = Config("server")
c.set_default()
c.is_default()
c.is_default('ip')
如果仅希望检查某个配置是否为默认值,把该配置项作为参数传递给is_default方法,默认不传递参数的情况下,将会对所有配置项进行检查。
若配置项下有多个key,可以通过传递一个list对象来校验具体配置是否为默认值。
{
'server': {
'db': {
'port': 6666
}
},
'ip': '127.0.0.1'
}
c.is_default(['server', 'db', 'port'])
validate
校验配置文件的内容是否与定义的一致。
Config("server").validate()
load_config
加载配置文件内容,并对内容进行校验,如果校验失败,则回退到原来的配置内容。
Config("server").load_config("slaver.cfg")
dump
把配置内容输出到指定文件
Config("server").dump()
Config("server").dump("master.cfg")
Get + Set
对Config对象中的配置进行修订、设置,或者获取相关配置项的信息;进行修改/设置时,会对变更后的配置内容进行有效性校验,如果校验失败,则回退到原来的配置内容。
c = Config("server")
c["ip"] = "192.168.1.101"
print(c["ip"])
"192.168.1.101"
加密型Config:EncryptionConfig
为了更好的保护Config,不那么容易被篡改,在Config的基础上,构建EncryptionConfig。
为了创建一个EncryptionConfig对象,必须为其提供一个Codec;为此,你必须根据自己实际的需要,设计一个Codec的子类。
为了更好的展示其使用方式,我建立了一个EasyCodec,可以通过测试用例中参考其应用方式。
参数校验器:ParameterValidator
为了方便对参数进行校验处理,通过对封装,以便于日常代码中的参数校验使用。
from ni.config import ParameterValidator
validator = ParameterValidator({'x': {"type": ["number", "string"]}})
validator.validates({'b': '231'})
validator.validates({'x': '231'})
validator.validate('x', 231)
版本v0.0.13开始,ParameterValidator.validates支持strict参数,当其为True时,被校验参数必须包含必须的默认参数,否则当作校验失败处理。为兼容之前版本,strict参数的默认值为False。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file ni_config-0.0.15-py3-none-any.whl
.
File metadata
- Download URL: ni_config-0.0.15-py3-none-any.whl
- Upload date:
- Size: 7.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc9f45e5b445d1e14cb935b2815d7351b21061f506c649ee1207d680c0a3916b |
|
MD5 | c4769338c38980436cb60b44ef788010 |
|
BLAKE2b-256 | f65e5098e1e88faae8e405e0c4c30d6236f92b9063667c67bc74b84df15bd64a |