Pipeline FFI types: missing Protocols, ABCs, and capsule helpers
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 48/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 冷清
调研方向
首先,将现有的 TableProviderExportable、CatalogProvider、SchemaProvider、Accumulator 和 from_pycapsule! 实现与 user_defined.py、context.rs、SessionConfig.with_extension 和 PySessionContext.datafusion_task_context_provider 中命名的入口进行比较。追踪列出的每个 FFI 类型及其现有的 Rust import 或 capsule 路径。六个缺失的类型化接口、helper 和示例都得到一致覆盖,并且相关测试通过后,即视为完成。
由索引模型根据 Issue 内容生成。
描述
Background
A v54 upstream coverage audit identified six FFI-pipeline gaps where DataFusion's FFI types are already imported on the Rust side but the Python surface is incomplete -- either missing a typed Protocol / ABC for users to implement against, or missing a from_pycapsule helper that the rest of the FFI surface uses. These are not v54-specific; they predate the v54 release. Filing this umbrella issue so the gaps are tracked together rather than disappearing into the audit report.
Items
-
FFI_TableFunction-- noTableFunctionExportable(Protocol). The duck-typedhasattrcheck atuser_defined.py:1161,1205should be replaced by a typed protocol mirroringTableProviderExportable. -
FFI_TableProvider-- no PythonTableProvider(ABC)analogous toCatalogProvider/SchemaProvider. Users implementing a custom table provider in Python have no abstract base class to subclass; the Exportable protocol is the only entry point. -
FFI_ExtensionOptions-- noExtensionOptionsExportable(Protocol). Currently consumed only at theSessionConfig.with_extensioncall site without a typed protocol describing the expected capsule export. -
FFI_TaskContextProvider-- no PythonProtocoland no example. Producer-only atPySessionContext.__datafusion_task_context_provider__; nothing imports one. -
FFI_TableProviderFactory-- nofrom_pycapsulehelper onRustWrappedPyTableProviderFactory. The capsule decode is inlined atcontext.rs:728-749rather than going through thefrom_pycapsule!macro the other FFI capsule importers use. -
WindowUDF-- no PythonABCequivalent toAccumulatorfor native Python window UDFs. Users can register a Rust-defined window UDF over FFI but cannot define one in pure Python.
Why deferred
Each item is small in isolation but they form a self-contained cleanup track. The audit grouped them so the work can be picked up together by a contributor focused on FFI ergonomics, rather than scattered across the v54 gap-closure PRs which focus on net-new surface area. Picking up any one item from this list is welcome.
- 主要语言
- Python
- 星标
- 605
- 派生
- 176
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 8
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
apache/datafusion-python 的其他 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 70/100
apache/datafusion-python#1757 ·
-
documentation
难度 2/5 1-3 小时 新手友好度 72/100
apache/datafusion-python#1726 ·
-
难度 2/5 半天 新手友好度 88/100
apache/datafusion-python#1691 ·
-
bug
难度 2/5 1-3 小时 新手友好度 78/100
apache/datafusion-python#1644 ·
-
enhancement
难度 5/5 一周以上 新手友好度 30/100
apache/datafusion-python#1737 ·
查看 apache/datafusion-python 的全部 Issue
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 90/100
learningequality/ricecooker#747 ·
-
难度 2/5 1-3 小时 新手友好度 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
难度 2/5 1-3 小时 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 76/100
run-llama/llama_index#23199 ·
-
难度 2/5 1-3 小时 新手友好度 84/100
KhronosGroup/glTF-Blender-IO#2769 ·