SimplePath是一个考虑性能的字典查找实用程序/映射器
simplepath的Python项目详细描述
simplepath是用于数据结构查找的库 使用超级简单的表达方式并考虑性能。 “simplepath”是其他一些*path技术上的文字播放 例如xpath、jsonpath、jpath等。
- 自由软件:麻省理工学院许可证
- Github:https://github.com/dealertrack/simplepath
灵感
创作simplepath的灵感来自表演。许多其他的 图书馆专注于进行单一的查找,不管它们是如何下降的 当需要查询大量数据时缩短。
例如,如果需要转换具有某种结构的词典 另一本结构不同的词典 可配置的方法可能是定义配置 其中键将是输出字典的键, 值将是查找表达式以获取适当的数据:
{ "greetings": "foo.greeting", "planet": "foo.[0].planet", ... }
上面的方法很容易实现,但是性能不是很好。 因为每次查找都必须计算查找表达式。 在Dealertrack,我们需要做一些类似的事情 试过jsonpath-rw 有时只需要15秒就可以绘制字典 几百个表情。经过调查,大部分 时间花在ply上。 不幸的是,我们没有找到另一个类似的图书馆 完成了我们需要的一切,并满足了我们的表现 需求,所以simplepath诞生了。
安装
您可以使用pip:
安装simplepath。$ pip install simplepath
快速指南
下面是一个简单的例子。
from simplepath.mapper import Mapper class MyMapper(Mapper): config = { 'greetings': 'example.greetings', 'to': 'example.planets.<find:planet=Earth>.residents', } data = { 'example': { 'greetings': 'Hello', 'planets': [ { 'planet': 'Mars', 'residents': 'martians', }, { 'planet': 'Earth', 'residents': 'people', }, { 'planet': 'Space', 'residents': 'aliens', }, ] } } MyMapper.map_data(data) == { 'greetings': 'Hello', 'to': 'people', }
测试
要运行测试,您需要首先安装测试要求:
$ make install
然后,要运行测试,可以使用nosetests或简单地使用makefile命令:
$ nosetests -sv # or $ make test
历史记录
0.3.5(2018-06-14)
- 修复了将None值映射到ListConfig将导致TypeError的错误
0.3.4(2017-07-28)
- 使用车轮进行分配
- 已从打包中删除测试
- 切换到使用python 3.6与3.5运行travis构建
0.3.3(2016-05-15)
- 修复了全局lut在调用表达式时泄漏数据的错误 在自定义查找中。见#11。
- 切换到使用python 3.5与3.4运行travis构建
0.3.2(2015-09-14)
- 已将AsTypeLookup和ArithmeticLookup注册为as_type和arith查找 在默认查找注册表中
0.3.1(2015-08-28)
- 添加了AsTypeLookup和ArithmeticLookup
0.3.0(2015-07-15)
- 增加了在SimplePath配置中使用列表的能力,该配置将在映射数据中生成列表
0.2.0(2015-06-26)
- 添加了deepvars实用程序,在对对象使用simplepath时非常有用
0.1.1(2015-03-31)
- 修复了包说明中指向回购协议的链接
0.1.0(2015-01-08)
- 首次发布
学分
此实用程序是在dealertrack technologies创建的 (dealertrack GitHub)内部使用,谢谢 允许贡献实用程序的dealertrack 到开源社区。
开发领导
- 米罗斯拉夫·舒伯内茨基-https://github.com/miki725
贡献者
- 恩杜比西奥努拉-https://github.com/NdubisiOnuora
许可证
麻省理工学院许可证(MIT)
版权所有(c)2014,Dealertrack Technologies
兹免费准许任何人取得副本 本软件和相关文档文件(“软件”)的 在软件中不受限制,包括但不限于S公司 使用、复制、修改、转到、发布、分发、再授权和/或出售 软件的副本,并允许软件的用户 在满足以下条件的情况下,可以这样做:
上述版权声明和本许可声明应包括在: 软件的所有副本或大部分。
软件按原样提供,无任何形式的保证,明示或 默示的,包括但不限于适销性保证, 适合某一特定目的和非侵犯性。在任何情况下 作者或版权所有者应对任何索赔、损害或其他 责任,无论是在诉讼或合同中,侵权行为或其他,产生于, 不属于或与软件、使用或其他交易有关 软件。