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,25 @@ 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.
752+
753+ Plain :py:class:`~datafusion.dataframe.DataFrame` objects are not supported;
754+ convert them first with :meth:`datafusion.dataframe.DataFrame.into_view` or
755+ :meth:`datafusion.catalog.TableProvider.from_dataframe`.
750756
751757 Args:
752758 name: Name of the resultant table.
753- table: DataFusion table to add to the session context.
759+ table: DataFusion :class:`Table` or :class:`TableProvider` to add to the
760+ session context.
754761 """
755- self .ctx .register_table (name , table .table )
762+ if isinstance (table , Table ):
763+ self .ctx .register_table (name , table .table )
764+ else :
765+ self .ctx .register_table (name , table )
756766
757767 def deregister_table (self , name : str ) -> None :
758768 """Remove a table from the session."""
@@ -772,14 +782,18 @@ def register_catalog_provider(
772782 self .ctx .register_catalog_provider (name , provider )
773783
774784 def register_table_provider (
775- self , name : str , provider : TableProviderExportable
785+ self , name : str , provider : TableProviderExportable | TableProvider
776786 ) -> None :
777787 """Register a table provider.
778788
779- This table provider must have a method called ``__datafusion_table_provider__``
780- which returns a PyCapsule that exposes a ``FFI_TableProvider``.
789+ Deprecated: use :meth:`register_table` instead.
781790 """
782- self .ctx .register_table_provider (name , provider )
791+ warnings .warn (
792+ "register_table_provider is deprecated; use register_table" ,
793+ DeprecationWarning ,
794+ stacklevel = 2 ,
795+ )
796+ self .register_table (name , provider )
783797
784798 def register_udtf (self , func : TableFunction ) -> None :
785799 """Register a user defined table function."""
0 commit comments