一个用于区分JSON和XML等树型文件的实用程序。
graphtage的Python项目详细描述
图表
Graphtage是一个命令行实用程序,underlying library 用于语义上比较和合并树状结构,如JSON、XML、HTML、YAML和CSS文件。它的名字是 “图形”和“嫁接”的组合体-后者是将两棵树连接在一起的园艺实践 他们一起成长。在
在
安装
$ pip3 install graphtage
命令行用法
输出格式
Graphtage对与的文件类型分离的树的中间表示形式执行is分析
输入文件。这意味着,例如,您可以将JSON文件与YAML文件进行比较。另外,输出格式可以是
不同于输入格式。默认情况下,Graphtage将以与
第一个输入文件。但是,例如,可以区分两个JSON文件,并在YAML中格式化输出。有几个
指定这些转换的命令行参数;有关详细信息,请检查--help
输出。在
默认情况下,Graphtage会使用尽可能多的换行符和缩进来打印输出。在
^{pr2}$使用--join-lists
或-jl
选项取消列表项后的换行符:
{"foo":[1,2,3],"bar":"baz"}
同样,使用--join-dict-items
或-jd
选项来抑制dict中键/值对后的换行符:
{"foo":[1,2,3],"bar":"baz"}
使用--condensed
或{
{"foo":[1,2,3],"bar":"baz"}
--only-edits
或-e
选项将打印出编辑列表,而不是将它们应用到输入文件中。在
匹配选项
默认情况下,Graphtage尝试匹配字典中所有可能的元素对。虽然在计算上是可行的,
对于具有巨大词典的输入文件,这有时会很麻烦。改为使用--no-key-edits
或-k
选项
只尝试匹配共享同一个键的字典项,从而大大减少了计算量。同样地
--no-list-edits
或{--no-list-edits-when-same-length
或-ll
选项是-l
的一个不那么激烈的版本,它对列表的行为正常
长度不同,但对于长度相同的列表,其行为类似于-l
。在
ANSI颜色
默认情况下,Graphtage只有在从TTY运行时才会在输出中使用ANSI color。例如,如果你想
要让Graphtage从脚本或管道发出彩色输出,请使用--color
或-c
参数。禁用偶数颜色
在TTY上运行时,使用--no-color
。在
HTML输出
Graphtage可以选择使用--html
选项在HTML中发出diff。在
$ graphtage --html original.json modified.json > diff.html
状态和日志
默认情况下,Graphtage将状态消息和进度条打印到STDERR。要取消此操作,请使用--no-status
选项。要另外禁止除关键日志消息之外的所有日志消息,请使用--quiet
。日志消息的细粒度控制是
通过--log-level
选项。在
为什么图形存在?在
用无序元素来区分树状结构是很困难的。假设您要比较两个JSON文件。 有limited tools available,它们有效地等价于 规范化JSON(例如,按键对字典元素排序)并执行标准的diff。这并不总是总是这样 足够了。对于exmaple,如果字典中的某个键发生了更改,但其值没有更改,则是传统的diff will的结论是整个key/value对被新的替换了,尽管惟一的变化是key 本身。有关详细信息,请参见our documentation。在
将Graphtage用作库
有关详细信息,请参见our documentation。在
延伸图
Graphtage设计为可扩展的;可以轻松定义新的文件类型,以及新的节点类型、编辑类型, 格式化程序和打印机。请参见our documentation 更多信息。在
完整的API文档可用here。在
许可证和确认书ts公司
这项研究是由国防部提供部分资金的Trail of Bits开发的 SafeDocs项目下的高级研究项目局(DARPA),作为Galois的分包商。 它是根据GNU Lesser General Public License v3.0授权的。 Contact us如果你在寻找条款的例外。 ©2020,比特追踪。在
- 项目
标签: