#trustfall #query-engine #query-language #data-source #macro #query-api #python

trustfall_derive

为trustfall查询引擎提供派生宏

5个不稳定版本

0.3.1 2023年7月28日
0.3.0 2023年3月5日
0.2.1 2023年2月21日
0.2.0 2023年2月20日
0.0.1 2023年2月17日

#8 in #trustfall

Download history 527/week @ 2024-03-30 437/week @ 2024-04-06 762/week @ 2024-04-13 659/week @ 2024-04-20 476/week @ 2024-04-27 522/week @ 2024-05-04 560/week @ 2024-05-11 640/week @ 2024-05-18 633/week @ 2024-05-25 502/week @ 2024-06-01 591/week @ 2024-06-08 691/week @ 2024-06-15 657/week @ 2024-06-22 648/week @ 2024-06-29 583/week @ 2024-07-06 768/week @ 2024-07-13

2,736 每月下载量
用于 13 个crate(通过 trustfall

Apache-2.0

24KB
244

Trustfall — 查询(几乎)任何数据源的引擎

Trustfall 是一个查询引擎,可以查询任何类型的数据源,从API和数据库到磁盘上的任何类型的文件——甚至是AI模型。

在您的浏览器中尝试Trustfall

Trustfall沙盒支持运行针对公共数据源的查询,例如

例如,此链接 展示了HackerNews查询的结果:“哪些GitHub或Twitter用户在评论有关OpenAI的故事?”

在游乐场中,Trustfall被配置为以WASM的形式在客户端运行,在浏览器内执行查询处理的各个方面(解析、编译和执行)。虽然这个演示突出了Trustfall嵌入目标应用的能力,但它当然也可以在更传统的客户端-服务器环境中使用。

10分钟技术讨论 + 演示

Trustfall在HYTRADBOI 2022会议上的“如何查询(几乎)一切”演讲中被提及。点击这里查看演讲

Terminal recording of running cargo run --release -- query example_queries/actions_in_repos_with_min_10_hn_pts.ron in the demo-hytradboi demo project. The system returns the first 20 results of the query in 6.36 seconds."

演讲中的演示展示了跨API查询的执行:“哪些GitHub Actions被用于HackerNews首页上得分大于等于10的项目?”

该演示在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目录中找到:[链接](https://github.com/obi1kenobi/trustfall/blob/bd46fda813377ae65bac8b32b513ab7ce04c6eb4/trustfall_derive/demo-hytradboi)。

使用Trustfall查询现实世界数据的示例

  • 包括查询语言概述和查询REST API的示例。[HackerNews API](https://github.com/obi1kenobi/trustfall/blob/bd46fda813377ae65bac8b32b513ab7ce04c6eb4/trustfall_derive/trustfall/examples/hackernews/)
  • 包括如何查询RSS/Atom馈送的示例。[RSS/Atom feeds](https://github.com/obi1kenobi/trustfall/blob/bd46fda813377ae65bac8b32b513ab7ce04c6eb4/trustfall_derive/trustfall/examples/feeds/)
  • 包括如何从航空天气报告中查询CSV数据的示例。[机场天气数据(METAR)](https://github.com/obi1kenobi/trustfall/blob/bd46fda813377ae65bac8b32b513ab7ce04c6eb4/trustfall_derive/trustfall/examples/weather)

Trustfall还驱动了语义版本控制检查器cargo-semver-checks。关于Trustfall在该用例中扮演的角色,更多详细信息可在[这篇博客文章](https://predr.ag/blog/speeding-up-rust-semver-checking-by-over-2000x/)中找到。

使用Trustfall处理新的数据源

将新数据源连接起来的最简单方法是实现BasicAdapter特质

Python绑定可用,并且会在每次对引擎的更改时自动构建;最新版本可在此处下载:[链接](https://github.com/obi1kenobi/trustfall/releases)。Python入门指南即将推出([跟踪问题](https://github.com/obi1kenobi/trustfall/issues/16));在此期间,最佳资源是Python绑定的测试套件

目录注册

  • trustfall是一个门面crate。这是使用Trustfall的首选方式。
  • trustfall_core包含查询引擎的内部实现
  • trustfall_derive定义了简化数据源连接的宏
  • pytrustfall包含Trustfall的Python绑定
  • trustfall_wasm是Trustfall的WASM构建版本
  • trustfall_filetests_macros 是一个过程宏,用于生成由文件定义的测试用例:它们确保在给定的测试函数输入一个文件指定的输入时,产生的输出与另一个文件的 内容等效。
  • experiments 包含各种实验项目,例如 Trustfall web playground

版权所有 2022-至今 Predrag Gruevski。

根据 Apache 许可证 2.0 版(“许可证”);除非遵守许可证,否则不得使用此文件。您可以在 https://apache.ac.cn/licenses/LICENSE-2.0 获取许可证副本。

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何形式(明示或暗示)的保证或条件。有关许可证下权限和限制的特定语言,请参阅许可证。

当前日期由存储库中最新的提交时间戳确定。通过访问,并向此存储库贡献代码、评论或问题,您同意您所有的贡献可以在任何由项目的原始作者和/或未来的维护者选择的情况下使用、修改、复制和/或重新分发。

依赖项

~295–750KB
~18K SLoC