4646 import pandas as pd
4747 import polars as pl
4848
49+ from datafusion import TableProvider
4950 from datafusion .plan import ExecutionPlan , LogicalPlan
5051
5152
@@ -734,7 +735,7 @@ def from_polars(self, data: pl.DataFrame, name: str | None = None) -> DataFrame:
734735 # https://github.com/apache/datafusion-python/pull/1016#discussion_r1983239116
735736 # is the discussion on how we arrived at adding register_view
736737 def register_view (self , name : str , df : DataFrame ) -> None :
737- """Register a :py:class: `~datafusion.detaframe .DataFrame` as a view.
738+ """Register a :py:class:`~datafusion.dataframe .DataFrame` as a view.
738739
739740 Args:
740741 name (str): The name to register the view under.
@@ -743,16 +744,21 @@ def register_view(self, name: str, df: DataFrame) -> None:
743744 view = df .into_view ()
744745 self .ctx .register_table (name , view )
745746
746- def register_table (self , name : str , table : Table ) -> None :
747- """Register a :py:class: `~datafusion.catalog.Table` as a table .
747+ def register_table (self , name : str , table : Table | TableProvider ) -> None :
748+ """Register a :py:class:`~datafusion.catalog.Table` or ``TableProvider`` .
748749
749- The registered table can be referenced from SQL statement executed against.
750+ The registered table can be referenced from SQL statements executed against
751+ this context.
750752
751753 Args:
752754 name: Name of the resultant table.
753- table: DataFusion table to add to the session context.
755+ table: DataFusion :class:`Table` or :class:`TableProvider` to add to the
756+ session context.
754757 """
755- self .ctx .register_table (name , table .table )
758+ if isinstance (table , Table ):
759+ self .ctx .register_table (name , table .table )
760+ else :
761+ self .ctx .register_table (name , table )
756762
757763 def deregister_table (self , name : str ) -> None :
758764 """Remove a table from the session."""
@@ -772,14 +778,18 @@ def register_catalog_provider(
772778 self .ctx .register_catalog_provider (name , provider )
773779
774780 def register_table_provider (
775- self , name : str , provider : TableProviderExportable
781+ self , name : str , provider : TableProviderExportable | TableProvider
776782 ) -> None :
777783 """Register a table provider.
778784
779- This table provider must have a method called ``__datafusion_table_provider__``
780- which returns a PyCapsule that exposes a ``FFI_TableProvider``.
785+ Deprecated: use :meth:`register_table` instead.
781786 """
782- self .ctx .register_table_provider (name , provider )
787+ warnings .warn (
788+ "register_table_provider is deprecated; use register_table" ,
789+ DeprecationWarning ,
790+ stacklevel = 2 ,
791+ )
792+ self .register_table (name , provider )
783793
784794 def register_udtf (self , func : TableFunction ) -> None :
785795 """Register a user defined table function."""
0 commit comments