23个版本 (7个重大更新)
0.7.1 | 2023年11月17日 |
---|---|
0.6.0 | 2023年7月25日 |
0.3.3 | 2023年3月23日 |
0.1.1 | 2022年12月6日 |
0.0.7 | 2022年11月10日 |
#1637 在 数据库接口
2,786 每月下载量
在 14 个crate中使用 (2 个直接使用)
4MB
136K SLoC
Trustfall — 查询几乎所有事物的引擎
Trustfall是一种查询引擎,可以查询任何类型的数据源,从API和数据库到磁盘上的任何文件,甚至是AI模型。
在浏览器中尝试Trustfall
Trustfall游乐场支持对以下公共数据源进行查询:
- HackerNews REST API: https://play.predr.ag/hackernews
- 顶级Rust crate的rustdoc JSON: https://play.predr.ag/rustdoc
例如,此链接 显示了HackerNews查询“哪些GitHub或Twitter用户在评论关于OpenAI的故事?”的结果
在游乐场中,Trustfall配置为作为WASM在客户端运行,在浏览器中执行查询处理的各个方面(解析、编译和执行)。虽然这个演示突出了Trustfall嵌入到目标应用中的能力,但它当然也可以在更传统的客户端-服务器环境中使用。
10分钟技术讲座 + 演示
Trustfall 在《"如何查询(几乎)所有内容"》演讲中有所展示,该演讲在HYTRADBOI 2022会议上进行。
演讲中的演示展示了跨API查询的执行:在 HackerNews 前页的评分 >=10 的项目中使用哪些 GitHub Actions?
该演示在 HackerNews 和 GitHub API 以及 YAML 格式的 GitHub 仓库工作流程文件中执行以下查询:
{
HackerNewsTop(max: 200) {
... on HackerNewsStory {
hn_score: score @filter(op: ">=", value: ["$min_score"]) @output
link {
... on GitHubRepository {
repo_url: url @output
workflows {
workflow: name @output
workflow_path: path @output
jobs {
job: name @output
step {
... on GitHubActionsImportedStep {
step: name @output
action: uses @output
}
}
}
}
}
}
}
}
}
运行演示的说明与源代码一起提供,位于 demo-hytradboi
目录中:链接。
使用Trustfall查询现实世界数据的示例
- HackerNews API,包括查询语言概述和查询 REST API 的示例。
- RSS/Atom 源,展示了如何查询结构化数据,如 RSS/Atom 源。
- 机场天气数据(METAR),展示了如何从航空天气报告中查询 CSV 数据。
Trustfall 还为cargo-semver-checks
语义版本控制检查器提供动力。关于 Trustfall 在此用例中发挥作用的更多细节,请参阅这篇博客文章。
在新的数据源上使用 Trustfall
通过实现BasicAdapter
特质,可以轻松地将新数据源连接起来。
Python 绑定可用,并在对引擎的每次更改时自动构建;最新版本可在此处下载。Python 入门指南即将推出(跟踪问题);同时,最佳资源是 Python 绑定的测试套件。
目录注册
trustfall
是一个门面crate。这是使用 Trustfall 的首选方式。trustfall_core
包含查询引擎的内部实现trustfall_derive
定义了宏,简化了数据源的连接pytrustfall
包含 Trustfall 的 Python 绑定trustfall_wasm
是 Trustfall 的 WASM 构建trustfall_filetests_macros
是一个过程宏,用于生成由文件定义的测试用例:它们确保在给定一个文件指定的输入时,被测试的函数产生的输出等同于另一个文件的内容。experiments
包含各种实验项目,如Trustfall 网络游乐场。
版权所有 2022-至今 Predrag Gruevski。
本文件遵循Apache License 2.0(以下简称“许可证”);除非符合许可证规定,否则不得使用此文件。您可以在以下网址获取许可证副本:http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何形式的保证或条件,无论是明示的还是暗示的。请参阅许可证以了解具体规定许可和限制的具体语言。
当前日期由仓库中最新的提交时间戳确定。通过访问并向此仓库贡献代码、评论或问题,您同意您的所有贡献可以在原作者和/或未来维护者选择的情况下使用、修改、复制和/或重新分发。
依赖项
~6–8MB
~150K SLoC