具有嵌套访问、插值和回退功能的字典。它主要用于存储程序的配置。
confdict的Python项目详细描述
confdict
通过递归访问、自引用和回退功能扩展内置python dict的配置字典。目前还没有大量的文档,您可以查看测试以了解所有特性。
示例用法。
>>>fromconfdictimportConfDict>>>cd=ConfDict(# Configuration of ConfDict, these are default values__separator='/',__self_key='.',__parent_key='..',__root_key='...',__key_key='<key>',__interpolation_regex=r'({{([^{}]*)}})',__fallback_key='fallback',# Remaining arguments will directly be stored in underlying dictusers={# fallback dict is used when a key is not found at that level'fallback':{# <key> is evaluated to key of the current level# it is useful when used with fallback'username':'{{<key>}}',# you can use self references'ssh_private_key':'/home/{{username}}/.ssh/id_rsa',},})>>>cdConfDict{'users':{'fallback':{'ssh_private_key':'/home/{{username}}/.ssh/id_rsa','username':'{{<key>}}'}}}>>>cd['users/john/username']'john'>>>cd['users/john/ssh_private_key']'/home/john/.ssh/id_rsa'>>>cd['users/john']ConfDict{'ssh_private_key':'/home/john/.ssh/id_rsa','username':'john'}>>>cd['users/jean']ConfDict{'ssh_private_key':'/home/jean/.ssh/id_rsa','username':'jean'}>>>cd['users/jean']={'username':'jeans_custom_username'}>>>cd['users/jean/ssh_private_key']'/home/jeans_custom_username/.ssh/id_rsa'>>># 'jean' exists now under 'users'>>># there is no partial fallback so there is no 'ssh_private_key'>>>cd['users/jean']ConfDict{'username':'jeans_custom_username'}>>># we can realize fallback as jean to make concrete values>>>cd['users/fallback'].realize('jean')>>>cd['users/jean']ConfDict{'ssh_private_key':'/home/jeans_custom_username/.ssh/id_rsa','username':'jeans_custom_username'}>>># interpolation still works>>>cd['users/jean/username']='jeans_custom_username2'>>>cd['users/jean/ssh_private_key']'/home/jeans_custom_username2/.ssh/id_rsa'
安装
$ pip install confdict
开发
有一个Makefile
来自动执行常用的开发任务。
环境设置
### create a virtualenv for development
$ sudo pip install virtualenv # or your preferred way to install virtualenv
$ make virtualenv # will also install dependencies
$ source env/bin/activate
### run pytest / coverage
$ make test
### before commit
$ make format