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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无JPA的纯Hibernate ORM java SpringBoot配置   安卓会生成一组唯一的java数字   java我的自定义阵列列表每次启动时都会崩溃我不确定为什么会一直崩溃   Java继承;将子类传递给超类的抽象方法   java从没有if语句的数组中获取instanceof type   java中使用对象的温度转换   存储库接口的JavaSpringDataMongoDBeanXML配置   java JAXWS为iBM websphere、iBM web服务客户端添加寻址   数组试图返回Java中两个对象的面积之和   apache Spark java:columnNameOfCorruptRecord和badRecordsPath在加载csv时不工作   java无法创建。txt文件   java Hibernate与MySQL插入查询不一致   不考虑java Hazelcast分布式地图的最大大小   bash Java如何在父进程中设置环境变量