通过环境进行Python应用程序配置
项目描述
Envier
Python应用程序从环境变量中提取配置
概述
Envier是一个Python库,用于以声明性和(最终)12因素应用程序兼容的方式从环境变量中提取配置。
用法
以下示例展示了如何声明使用环境变量MYAPP_DEBUG
、MYAPP_SERVICE_HOST
和MYAPP_SERVICE_PORT
的应用程序配置。
>>> from envier import Env
>>>
>>> class GlobalConfig(Env):
>>> __prefix__ = "myapp"
>>>
>>> debug_mode = Env.var(bool, "debug", default=False)
>>>
>>> service_host = Env.var(str, "service.host", default="localhost")
>>> service_port = Env.var(int, "service.port", default=3000)
>>>
>>> _is_default_port = Env.der(bool, lambda c: c.service_port == c.spec.service_port.default)
>>>
>>> config = GlobalConfig()
>>> config.service_port
3000
>>> config._is_default_port
True
配置也可以嵌套以创建命名空间
>>> from envier import Env
>>>
>>> class ServiceConfig(Env):
>>> __prefix__ = "service"
>>>
>>> host = Env.var(str, "host", default="localhost")
>>> port = Env.var(int, "port", default=3000)
>>>
>>> class GlobalConfig(Env):
>>> __prefix__ = "myapp"
>>>
>>> debug_mode = Env.var(bool, "debug", default=False)
>>>
>>> service = ServiceConfig
>>>
>>> config = GlobalConfig()
>>> config.service.port
3000
通过在GlobalConfig
内部声明ServiceConfig
子类,并设置类属性__item__
为子配置应分配的项的名称,可以隐式地获得相同的配置。
>>> from envier import Env
>>>
>>> class GlobalConfig(Env):
>>> __prefix__ = "myapp"
>>>
>>> debug_mode = Env.var(bool, "debug", default=False)
>>>
>>> class ServiceConfig(Env):
>>> __item__ = __prefix__ = "service"
>>>
>>> host = Env.var(str, "host", default="localhost")
>>> port = Env.var(int, "port", default=3000)
>>>
>>> config = GlobalConfig()
>>> config.service.port
3000
类型检查
该库附带一个mypy
插件,允许进行类型检查。如果您想使用它,要么使用mypy
额外功能安装库,要么确保已安装mypy
,然后向mypy
配置中的额外插件列表添加envier.mypy
。
路线图
- 添加对环境文件的支持。
- 依赖类型提示,因为不再支持Python的旧版本。
- 派生可能需要评估顺序。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码分发
envier-0.5.2.tar.gz (9.5 kB 查看哈希值)
构建版本
envier-0.5.2-py3-none-any.whl (10.1 kB 查看哈希值)