Pipeline FFI types: missing Protocols, ABCs, and capsule helpers
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Área
- api, developer-experience
Línea de trabajo
Comienza comparando las implementaciones existentes de TableProviderExportable, CatalogProvider, SchemaProvider, Accumulator y from_pycapsule! con los puntos de entrada nombrados en user_defined.py, context.rs, SessionConfig.with_extension y PySessionContext.datafusion_task_context_provider. Traza cada tipo FFI listado y su importación de Rust existente o ruta de capsule. Se considera terminado cuando las seis interfaces tipadas que faltan, el helper y el ejemplo estén cubiertos de forma coherente y pasen las pruebas pertinentes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 605
- Forks
- 176
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 8
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/datafusion-python
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/datafusion-python#1726 ·
-
Dificultad 2/5 Medio día Aptitud para principiantes 88/100
apache/datafusion-python#1691 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/datafusion-python#1644 ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
apache/datafusion-python#1737 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
apache/datafusion-python#1735 · 1 comentario ·
Todos los issues de apache/datafusion-python
Issues similares
-
Add: hunch Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
AbdelStark/awesome-typesafe#104 ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
DiamondLightSource/dodal#2211 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
openml/openml-python#1749 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
sipyourdrink-ltd/bernstein#6191 ·