配置变得简单:json、encrypted、envvars等。

jsonconfig-tool的Python项目详细描述


Build StatusDependency UpdatesCoverage StatusVersion Status

配置没有比这更容易…

pip install jsonconfig-tool

它是用来干什么的?

  • 管理设置、配置信息、应用程序数据等
  • 管理机密、令牌、密钥、密码等。
  • 管理环境设置。

基本示例

with Config('myapp') as cfg:
    cfg.data = 'Any JSON serializable object ...'
    cfg.pwd.a_secret = 'Encrypted data ...'
    cfg.env.a_variable = 'Environment variables.'

其他示例可以在documentation[1]中找到。

只是头脑清醒

no magic here

在上面的上下文管理器中:

  • data存储在用户的本地应用程序目录中。
  • pwd数据被加密并存储在密钥环保险库中。
  • env数据存储在环境变量中

配置文件位置

Click[2]是用于确定默认应用程序目录的包

默认行为是返回最适合 操作系统。为了给你一个主意,一个名为Foo Bar的应用程序 可能返回以下内容:

Mac OS X:
~/Library/Application Support/Foo Bar

Mac OS X (POSIX):
~/.foo-bar

Unix:
~/.config/foo-bar

Unix (POSIX):
~/.foo-bar

Win XP (roaming):
C:\Documents and Settings\<user>\Local Settings\Application Data\Foo Bar

Win XP (not roaming):
C:\Documents and Settings\<user>\Application Data\Foo Bar

Win 7+ (roaming):
C:\Users\<user>\AppData\Roaming\Foo Bar

Win 7+ (not roaming):
C:\Users\<user>\AppData\Local\Foo Bar

当然,您或用户可以自由重写此行为并设置 去你想去的地方。

加密后端

Keyring[3]是用于管理加密的包。

默认行为是选择 用户平台为了给你一个主意,下面的钥匙圈后端将 可能被退回:

Mac OS X:
Keychain[5]
Unix(安装了secretstorage):
Secret Service[6]
Unix(已安装DBU):
kwallet[7]
窗口:
Windows Credential Locker[8]

当然,您或用户可以自由覆盖默认值用户可以 同时从系统范围内更改其keyring后端首选项 命令行或通过配置文件。然后json配置将使用 用户首选的密钥环后端,除非另有说明

您希望如何提供您的数据?

Box[4]是用于处理数据访问包装器的包

普通的
没有包装有机的,自由范围的数据。如果它是JSON可序列化的 我们会处理的这是默认设置。
盒装
Box[4];一个同时支持这两种功能的Python字典中交付数据 递归点表示法访问和标准字典键访问。如果 你害怕被boxed in,不要惊慌!你可以进去 随时可用,请参阅下面的数据转换部分。
冻结
在aFrozen Box中ICES数据,与装箱的数据相同,但不可变;将 如果其中的所有对象都是不可变的,也可以进行哈希运算。
嵌套
将数据嵌套在默认字典中,该字典可以自动创建 缺少中间密钥。找回的时候也很宽容 字典中的数据;例如,如果密钥 不存在。相反,它将不返回任何值;即使键是嵌套的 多个键丢失。

数据转换

  • BOXEDFROZENNESTED都是dicts或 默认指令你可以在他们之间来回转换 时间。
  • 如果您的数据对象不是 一个映射然后使用PLAIN来释放所有的装饰。 有了PLAIN,就只有你和你的伙伴python了;我们让开。

JSON配置让您可以做自己最擅长的事情

花更多的时间解决现实世界的问题,更少的时间编码,测试和; 解决配置问题

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

推荐PyPI第三方库


热门话题
如何在java中调用Paint组件方法   多层次POM中的java覆盖依赖项/插件管理   java模式识别   JavaSpringMVC+Log4j2定义了Log4j2。未标识非类路径位置中的属性文件   java我们如何将IntelliJ IDEA中的maven和gradle项目与源代码浏览支持集成?   Maven mvn exec:java在Windows上工作,但不是Ubuntu 20   java在Jaxb2Marshaller上使用带有packagesToScan属性的JAXBElement时没有端点适配器   java删除方法和节点   java如何为某些场景创建正则表达式模式   java如何通过gridView中的intent()传递ArrayList数据。setOnItemClickListener()   java UnsupportedClassVersionError 1.7/1.5   java为什么JVM参数是http。tomcat servlet没有使用proxyHost?   java将ArrayList从字母顺序排序到最频繁/最不频繁   java动态字段列表迭代   java如何将字节转换为位?   hadoop java。mapreduce作业中的lang.NullPointerException   javasocketIO无法与Android中的LocationListener一起使用   java在卸载时清除内部存储   java池回收错误2个精灵同时碰撞到一个精灵