轻松管理多个环境中的项目配置。

figa的Python项目详细描述


Figa可以读取多个配置源,包括多种文件格式、环境变量, 甚至是因特网,允许你根据你的需要来配置你的项目。在

Figa支持多种来源,包括:

  • 环境变量
  • Dict对象
  • JSON(.JSON)
  • HOCON(.HOCON,.conf)
  • INI,CFG(.INI,.CFG)
  • YAML(.YAML,.yml)
  • TOML(.TOML)
  • .properties(.properties)属性
  • 互联网资源
$ pip install figa

使用

^{pr2}$

环境检测

您可以实现自己的函数来检测从何处提取配置值。在

@figa.configclassConfig:development="~/config.yml"# use YAML file for config when developingproduction="env","cfg_"# use environment variables with cfg_ prefix in productiondefget_env(self):if"ON_HEROKU"infiga.env:# figa.env is shortcut for os.environreturn"production"else:return"development">>>config=Config()# if no environment is passed, get_env() will be called.

文件类型

默认情况下,配置文件类型将从文件扩展名猜测。 也可以显式设置:

@figa.configclassMyConfig:example="ini","./config.conf"# .conf would be detected as HOCON, but we set to INI

默认值

可以设置将包含在每个环境中的默认值。在

@figa.configclassMyConfig:default={"name":"My App"}dev={"host":"localhost"}prod={"host":"myapp.com"}>>>dev_cfg=MyConfig("dev")>>>prod_cfg=MyConfig("prod")>>>dev_cfg.name==prod_cfg.name# "name" config item is included in bothTrue

所需值和类型检查

在配置类中,可以设置所需的值和类型,当 配置已加载。这有助于确保代码在运行时不会丢失信息。在

@figa.configclassConfig:# two required config values: `string` & `sub.number`__required__={"string":str,"sub":{"number":int}}

如果缺少任何值,将引发错误:

@figa.configclassConfig:# two required config values: `string` & `sub.number`__required__={"string":str,"sub":{"number":int}}missing_vals={# this config is missing sub.number"string":"hello, world","sub":{}}>>>cfg=Config("missing_vals")ValueError:Missingrequireditem'sub.number'

如果可能,Figa会自动为您转换字符串和数字。在

@figa.configclassConfig:__required__={"stringval":str,"numberval":int}values={"stringval":100,"numberval":"42"}>>>cfg=Config("values")>>>cfg.stringval'100'>>>cfg.numberval42

这个项目是在麻省理工学院授权下发布的。请参见LICENSE.md。在

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

推荐PyPI第三方库


热门话题
java使用jain api上的编解码器信息自动创建sdp消息   显示素数误报的java程序   java如何从存储x、y值和整数索引之间的时间变化的两个数组列表创建动画?   java CompletableFuture:转换与组合   具有多个in运算符的java CrudePository findBy方法签名?   java:扩展小程序进程超时   java如何做mvn scm插件匿名pserver cvs访问   java如何在选中项目时将项目从一个活动发送到另一个活动   java存储子网的最佳数据结构,用于将Ip地址与子网匹配   java Jackson序列化以报告无法序列化的字段列表   如何将java mysql连接器导入IntelliJ?   如果java只在构造函数中编写,它是线程安全的集合吗?   java正则表达式捕获组在OR运算符后返回null   java使用Jackson在运行时将实体动态序列化为其ID或完整表示形式