Pipeline FFI types: missing Protocols, ABCs, and capsule helpers
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Domaine
- api, developer-experience
Piste de recherche
Commencez par comparer les implémentations existantes de TableProviderExportable, CatalogProvider, SchemaProvider, Accumulator et from_pycapsule! avec les points d’entrée nommés dans user_defined.py, context.rs, SessionConfig.with_extension et PySessionContext.datafusion_task_context_provider. Suivez chaque type FFI listé ainsi que son import Rust existant ou son chemin de capsule. Le travail est terminé lorsque les six interfaces typées manquantes, le helper et l’exemple sont couverts de manière cohérente et que les tests pertinents passent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Python
- Étoiles
- 605
- Forks
- 176
- Merge moyen
- 1 j 23 h
- PR mergées (30 j)
- 8
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/datafusion-python
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
apache/datafusion-python#1757 ·
-
documentation
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
apache/datafusion-python#1726 ·
-
Difficulté 2/5 Une demi-journée Accessibilité débutants 88/100
apache/datafusion-python#1691 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/datafusion-python#1644 ·
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
apache/datafusion-python#1737 ·
Toutes les issues de apache/datafusion-python
Issues similaires
-
bug confirmed issue
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
open-webui/open-webui#30750 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 commentaire ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
-
good first issue
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100