Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Pipeline FFI types: missing Protocols, ABCs, and capsule helpers

Aperta
#1,577 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python, rust

Direzione di ricerca

Inizia confrontando le implementazioni esistenti di TableProviderExportable, CatalogProvider, SchemaProvider, Accumulator e from_pycapsule! con gli entry point indicati in user_defined.py, context.rs, SessionConfig.with_extension e PySessionContext.datafusion_task_context_provider. Traccia ogni tipo FFI elencato e il relativo import Rust esistente o percorso della capsule. Il lavoro è completo quando le sei interfacce tipizzate mancanti, l’helper e l’esempio sono coperti in modo coerente e i test pertinenti hanno esito positivo.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

  1. FFI_TableFunction -- no TableFunctionExportable(Protocol). The duck-typed hasattr check at user_defined.py:1161,1205 should be replaced by a typed protocol mirroring TableProviderExportable.

  2. FFI_TableProvider -- no Python TableProvider(ABC) analogous to CatalogProvider / SchemaProvider. Users implementing a custom table provider in Python have no abstract base class to subclass; the Exportable protocol is the only entry point.

  3. FFI_ExtensionOptions -- no ExtensionOptionsExportable(Protocol). Currently consumed only at the SessionConfig.with_extension call site without a typed protocol describing the expected capsule export.

  4. FFI_TaskContextProvider -- no Python Protocol and no example. Producer-only at PySessionContext.__datafusion_task_context_provider__; nothing imports one.

  5. FFI_TableProviderFactory -- no from_pycapsule helper on RustWrappedPyTableProviderFactory. The capsule decode is inlined at context.rs:728-749 rather than going through the from_pycapsule! macro the other FFI capsule importers use.

  6. WindowUDF -- no Python ABC equivalent to Accumulator for 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.

Lingua principale
Python
Stelle
605
Fork
176
Merge medio
1g 23h
PR unite (30g)
8

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/datafusion-python

Tutte le issue di apache/datafusion-python

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.