@@ -20,15 +20,14 @@ use crate::{
2020 common:: data_type:: PyScalarValue ,
2121 dataframe:: PyDataFrame ,
2222 dataset:: Dataset ,
23- errors:: { py_datafusion_err , PyDataFusionError , PyDataFusionResult } ,
23+ errors:: { PyDataFusionError , PyDataFusionResult } ,
2424 table:: PyTableProvider ,
2525 TokioRuntime ,
2626} ;
2727use datafusion:: {
2828 common:: ScalarValue , datasource:: TableProvider , execution:: context:: SessionContext ,
2929 logical_expr:: Volatility ,
3030} ;
31- use datafusion_ffi:: table_provider:: { FFI_TableProvider , ForeignTableProvider } ;
3231use pyo3:: prelude:: * ;
3332use pyo3:: { exceptions:: PyValueError , types:: PyCapsule } ;
3433use std:: {
@@ -134,12 +133,8 @@ pub(crate) fn table_provider_from_pycapsule(
134133) -> PyResult < Option < Arc < dyn TableProvider > > > {
135134 if obj. hasattr ( "__datafusion_table_provider__" ) ? {
136135 let capsule = obj. getattr ( "__datafusion_table_provider__" ) ?. call0 ( ) ?;
137- let capsule = capsule. downcast :: < PyCapsule > ( ) . map_err ( py_datafusion_err) ?;
138- validate_pycapsule ( capsule, "datafusion_table_provider" ) ?;
139-
140- let provider = unsafe { capsule. reference :: < FFI_TableProvider > ( ) } ;
141- let provider: ForeignTableProvider = provider. into ( ) ;
142- Ok ( Some ( Arc :: new ( provider) as Arc < dyn TableProvider > ) )
136+ let provider = PyTableProvider :: from_capsule ( capsule) ?;
137+ Ok ( Some ( provider. into_inner ( ) ) )
143138 } else {
144139 Ok ( None )
145140 }
0 commit comments