Skip to main content

把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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

ni_config-0.0.15-py3-none-any.whl (7.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page