Pipeline FFI types: missing Protocols, ABCs, and capsule helpers
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Bereich
- api, developer-experience
Rechercherichtung
Beginne damit, die bestehenden Implementierungen von TableProviderExportable, CatalogProvider, SchemaProvider, Accumulator und from_pycapsule! mit den benannten Einstiegspunkten in user_defined.py, context.rs, SessionConfig.with_extension und PySessionContext.datafusion_task_context_provider zu vergleichen. Verfolge jeden aufgeführten FFI-Typ und seinen bestehenden Rust-Import oder Capsule-Pfad. Als abgeschlossen gilt dies, wenn die sechs fehlenden typisierten Schnittstellen, der Helper und das Beispiel konsistent abgedeckt sind und die relevanten Tests bestehen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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.
- Vorherrschende Sprache
- Python
- Sterne
- 605
- Forks
- 176
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 8
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/datafusion-python
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
apache/datafusion-python#1757 ·
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
apache/datafusion-python#1726 ·
-
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 88/100
apache/datafusion-python#1691 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/datafusion-python#1644 ·
-
enhancement
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 30/100
apache/datafusion-python#1737 ·
Alle Issues in apache/datafusion-python
Ähnliche Issues
-
bug confirmed issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
open-webui/open-webui#30750 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
enhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
-
good first issue
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100