简单的配置工具。从yaml、json或xml获取配置。

figgyp的Python项目详细描述


figgypy
=


[![在Gitter上聊天](https://badges.gitter.im/theherk/figgypy.svg)](https://gitter.im/theherk/figgypy?utm_source=badge&utm_medium=badge&utm_campaign=pr badge&utm_content=badge)
[![构建状态](https://travis ci.org/theherk/figgypy.svg)(https://travis ci.org/theherk/figgypy)

它将在安装时安装python gnupg。如果默认情况下系统上没有gnupg(可能是),则需要安装它。如果缺少这两个选项中的任何一个,配置工具仍然可以工作,它只是不会解密机密。

usage
----


或者
cfg.values['somevalue']
;或者
cfg.values.get('somevalue',可选的默认值)
;或者
figgypy py.getfigypypypy.get('somevalue','somevalue',可选的默认值)
`````








`` python
ypy导入配置,set_config
cfg=config(config_file='config.yaml')
figgypy.set_config(cfg)

b.py
import figgypy
figgypy.get_value('somevalue')
````

你甚至不需要使用文件。例如:


```python
import figgypypy
cfg=figgypypypypypypypypypypypypypypypypypypypypypypypy.config()
cfg.set'u value('somedict',{'a':'aye','b':'bee'}
`````




虽然默认情况下是开启解密功能的,但可以关闭解密功能,尽管在默认情况下是开启解密功能的:


````python
import figgypypypypypypypypypypypypypypypypypypypypypypypy假的,decrypt_kms=false)
cfg.decrypt_kms=true
像这样:

`` python
``在shashared.py
import figgypy
cfg=figgypy.config()
figgypy.set_config(cfg)


``在worker.py
import figgypy
figgypy
cfg=get_config()
``在worker.py
>
这些更改还应使应用程序中的测试更容易,因为在测试中,您可以在同一个对象上重新加载不同的配置:

``python
import figgypy
from mylib import totest
totest.config_file='tests/resources/config.yaml'
```

figgypy<;1.0.0(仍受支持)

```python
from figgypy import config
cfg=config(conf_file)
````


config对象只能用文件名、相对路径或绝对路径创建。
如果只提供名称或相对路径,请按以下顺序查找:

1。当前目录
2。` ~/.config/<;文件名>;`
3。`/etc/<;文件名>;`

以及`/etc/your_package/config.yaml`.

每个属性都是一个具有剩余嵌套结构的字典。

请参阅下面的示例。


--


\json

``json
{
"db":{
"url":"mydburl.com",
"name":"mydbname",
"user":"myusername",
"pass":"correctHorseBatteryStable"
"log":{
"file":"/var/log/cool廑project.log",
"level":"info"
}
}
`````

cfg=config('theabove.json')

xml version="1.0"encoding="utf-8"?>;
<;config>;
<;db>;
<;url>;mydburl.com<;/url>;
<;name>;mydbname<;/name>;
<;user>;myusername<;/user>;
<;pass>;correctHorseBatteryStable<;/pass>;
<;db>;
<;log>;
<;file>;
<;level>;info<;level>;
<;/log>;
<;/log>;
<;/config>;
``````

cfg=config('theave.xml')

/>
``yaml
db:
url:mydburl.com
name:mydbname
user:myusername
pass:correctHorseBatteryStable
log:
file:/var/log/cool_project.log
level:info
````

cfg=config('theabove.yaml')

这将生成具有"db"属性的对象"cfg"`和"log",每个都是字典。这与json是完全相同的行为,考虑到yaml和json的密切关系,这是有意义的。

secrets
--
可以使用gpg在配置文件中存储pgp和kms加密的机密。

``yaml
db:
host:db.heck.ya
pass:
-开始PGP消息-----
>版本:gnupg v2


hqimazf92zrouzl3raagwexav8+pc2lqisequfqqqy0pu3xcumxnfzp+hpu
gb0lsaexz136p436p430p430p430p94hfxxx7gqoqit/2fububuucsugeq122xyzdtv
ep/24wpvqpcvv9pdtk82a41bqb82a8jjjb13zzzzzzzyhappvyhappntcwkwk4/gfr
/gfr
jmqqax5qx5qqqqqqqqqq是的CCJ886ueqi2V7+VXNK+QQQQQQQQQQQQQQQQQQQQSW0DCVD792/Si/CTZNSJBMWWR81CSEQJJ++4O5WWJOP3Y
ZQVG/FXEDDRI2AX2CX7JKX2DCSRQQQQQQQQ5L6LJ16LJQX2YKX2YK+NI
LBJ55CP2LHLX9QFB+Kglue9GDKU9GGQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQDDMX0V7YGYTAMZ3
3za+ogi+hl/+4wx2gm+bom2ww对一个国家来说,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家是一个国家,一个国家,一个国家是一个国家,一个国家是一个国家,一个国家,一个国家是一个国家,一个国家,一个国家,一个国家是一个国家,一个国家,一个国家,一个国家,一个国家是一个国家,一个国家,一个国家是一个国家,一个国家br/>saer9ykqbp0y85lbhuwnwppphq2zy8wb71tfye6vbp5qjoxiqp/qgwjt/3jhcy+t
5k7r6xqvdvbsu1avflegapknzn94i+gswq===
=qude
----结束pgp消息-----
`````

如果使用json,则需要换行。我用"cat the above.yaml seria-j-`.

`` json
{
"db":{
"host":"db.heck.ya",
"pass":"-开始pgp消息-----中国人在94HFX7GQOZGT/2号机组上的QOZD22XYZDTV\NEP/24WPVQPCVIP9PDTK82A41BQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWJJJJJ13ZZZZZZZZYHAPWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWJJJJJJJJJJJJ2ACXH7JK2XDCSRQZXKTNG2QZMWWQATB5LB6LJ型X2YK+NI+NI\NLBY5CP2LHLNXA9QFB+KgluemnH9GDKU9GDKU5QBDOS6RCEUQK/ATDDMX0V7YYGYGYTAMZ3\N3ZA+OGI+HL/+4WX2GM+BOM2WWRIYYISU9K1HMI1/ONUI/3HR1H10I/3HR1NCL8RGB4Q液化石油气\NYRRT7LulRu4VGYYXLuII3UTUUU3UJNPO3D8LFX8N8P1LLS9VV9VQ\nVRVVVVVxRNWSRNWWWWWWWWWWWWWWWWW9GGG6YG6ogcyjyrems3ih6h2obi3gavj2x0mg75\nm9jstu/yytd8gcm3s+3r三峡库区ZK1GBDZ0PJB+U6G43QQ8/VQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ配置文件的键。

``` yaml
db:
host:db.heck.ya
pass:
kms:kms加密值
````

S值。

这很简单,对吧?现在,这个值将被解密并可用,就像您在配置文件中键入的值一样。


默认为"gpg"。
+`figgypy_gpg_homedir'是gpg home。基本上在哪里找钥匙圈。默认为`~/.gnupg/`.
+`figgypy_gpg_keyring`保存密钥的文件。默认为"pubring.gpg";可能需要为"pubring.kbx"。



-1}

gpg<
gpg{'homedir':'noplace/like/home',
'keyring':'publibing.kbx'}
cfg=figgypy.config('config.yaml',aws_-aws_-config,gpg_-config=gpg_-config)
```














echo-n"您的超级机密密码"gpg--encrypt--armor-r key_id


必要时将生成的护甲添加到配置中。如果你用的是yaml,这很简单。下面是一个示例:

kms

aws kms encrypt--密钥id'别名/密钥'--明文"您的秘密"--查询密文blob--输出文本

或者别名/密钥别名,可选的aws配置)
```

如果您想将json、xml或yaml转换为相同的三种格式,seria是一个很好的工具。

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

推荐PyPI第三方库


热门话题
Javafx扩展切换按钮   java在类B中引用类a的公共最终静态字符串会增加已编译类B的大小吗?   java获取JavaFX场景图上的所有阶段   javascript | WebVIew |在何处实现上传脚本   java testNG优先级和依赖冲突   编译后找不到java类路径文件   java自定义编译时错误   java Log4J 2属性配置不工作   java Android。向Google Sheet脚本发送POST请求   java多播socket加入/离开组、发送、接收线程安全   java排除war文件myeclipse中的文件   java从数字中删除数字,但它只在我们选择第一个数字时起作用   java如何使文本在textview中闪烁   java如何在springboot中从未经授权的响应中删除变量   java JDialog关闭按钮事件   在ListView已满时加载java视图   java客户机-服务器程序中的socket客户机如何向服务器发送连续消息而不从服务器接收回复消息?   在java中使用带有重写方法的throws子句时出现异常获取错误?   多线程Java,FileWriter(file,true)不附加到文件中