` konfetti'为用python编写的应用程序或库的配置提供了一种独立于框架的方法。

konfetti的Python项目详细描述


codecovBuildVersionPython versionsLicense

说明

konfetti是一个python配置管理系统,具有直观的 API、延迟评估和(a)同步保险库支持。

界面设计和功能的灵感来自decoupleDjangoenvparsedynaconf

主要功能

  • 惰性计算;
  • 内置环境变量支持;
  • 内置异步保险存储访问支持;
  • 测试助手;
  • Django&Flask集成。

延迟评估的好处

  • 更快更简单的测试运行;无需评估整个 如果未使用项目配置
  • 在必要时避免在导入期间进行网络调用;

快速启动

要使用konfetti,您需要定义:

  • 模块或类中的配置变量;
  • 接入点;

设置模块

# app_name/settings/production.pyfromkonfettiimportenv,vaultVAULT_ADDR=env("VAULT_ADDR")VAULT_TOKEN=env("VAULT_TOKEN")DEBUG=env("DEBUG",default=False)DATABASE_URI=vault("path/to/db")

变量名的命名约定为大写,其他变量 将被忽略。要使用Vault,需要指定 VAULT_ADDRVAULT_TOKEN在设置模块中。

接入点

# app_name/settings/__init__.pyfromkonfettiimportKonfig,AsyncVaultBackendconfig=Konfig(vault_backend=AsyncVaultBackend("/secret/team"))

konfetti依赖于KONFETTI_SETTINGS环境变量 在上述情况下,探索您的设置模块:

export KONFETTI_SETTINGS=app_name.settings.production

或者,可以从对象、可导入字符串、映射或json文件启动访问点。

classTestSettings:VALUE="secret"config=Konfig.from_object(TestSettings,...)
config=Konfig.from_object("path.to.settings",...)# If the config is in the same moduleSECRET=vault("/path/to")["secret"]config=Konfig.from_object(__name__,...)
config=Konfig.from_mapping({"SECRET":42},...)
config=Konfig.from_json("/path/to.json")

使用量

带有配置选项的设置模块/类不应该是 直接访问,因为前面提到的功能已经实现 在接入点级别。

fromapp_name.settingsimportconfigasyncdefsomething():awaitconfig.DATABASE_URI# asynchronously taken from Vaultdebug=config.DEBUG# Usual sync access

文档

有关完整文档,请参见https://konfetti.readthedocs.io/en/latest/

或者可以查看存储库中的docs/目录。

python支持

Konfetti支持Python2.7、3.5、3.6、3.7和3.8

许可证

此项目中的代码是根据MIT license授权的。通过向Konfetti投稿,您同意您的投稿将根据其麻省理工学院许可证获得许可。

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

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?