跳转到主要内容

通过环境进行Python应用程序配置

项目描述

Envier

Python应用程序从环境变量中提取配置

概述

Envier是一个Python库,用于以声明性和(最终)12因素应用程序兼容的方式从环境变量中提取配置。

用法

以下示例展示了如何声明使用环境变量MYAPP_DEBUGMYAPP_SERVICE_HOSTMYAPP_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 查看哈希值)

上传时间 Python 3