python的声明性配置设置。
declare-config的Python项目详细描述
声明配置
此python模块允许使用声明性语法定义 配置文件。它还支持诸如默认 配置值、嵌套配置设置(和嵌套默认值),以及 各种其他有用的自动糖。
示例:
from pathlib import Path
from declare_config import Configuration,
Setting, \
configuration_source, \
enable_nested_settings
@configuration_provider("$MYAPP_CONFIG")
@configuration_provider("./myapp.yaml")
@configuration_provider("~/init/myapp.yaml")
@configuration_provider("~/.myapp.yaml")
@enable_nested_settings
@enable_expanduser
class MyAppSettings(declare_config.Configuration):
'''Settings for myapp.'''
homepage = Setting('urls.root')
api_root = Setting('urls.api_root', '${homepage}/api')
timeout_ms = Setting('timeout_ms', 5000, int)
log_file = Setting("log_location", ~/logs/myapp.log", Path)
settings = MyAppSettings.load()
上面的代码定义了示例应用程序的配置文件。它
定义在以下情况下搜索配置文件的四个位置
MyAppSettings.load()
被调用:首先它将检查
文件位置的环境变量$MYAPP_CONFIG
,如果没有
定义了这样的环境变量,它将检查其他三个文件
配置文件的位置。只要找到一个有效的文件
位置,它将从该文件加载设置。
由于@enable_nested_settings
装饰符,允许设置
相互引用(默认定义允许引用其他
设置)通过${setting_name}
语法。所有设置都有类型
信息和@enable_expanduser
装饰器确保
设置声明为文件系统路径,将展开~/
目录
到用户的主目录。
目前只支持yaml配置文件,尽管有计划 添加对json和ini语法的支持。
开发
依赖项由pipenv
管理。为安装依赖项
开发,从项目根目录运行pipenv install --dev
。
要使用覆盖率运行一次测试,请使用项目中的pipenv run pytest
根。要在开发期间连续运行测试,请运行pipenv run ptw
相反。
要上载到pypi,请使用版本和任何新的依赖项更新setup.py
然后运行pipenv run python setup.py upload
。