2727except ImportError :
2828 from typing_extensions import deprecated # Python 3.12
2929
30- from datafusion .catalog import Catalog , CatalogProvider , Table
30+ import pyarrow as pa
31+
32+ from datafusion .catalog import Catalog
3133from datafusion .dataframe import DataFrame
32- from datafusion .expr import SortKey , sort_list_to_raw_sort_list
34+ from datafusion .expr import sort_list_to_raw_sort_list
3335from datafusion .record_batch import RecordBatchStream
34- from datafusion .user_defined import AggregateUDF , ScalarUDF , TableFunction , WindowUDF
3536
3637from ._internal import RuntimeEnvBuilder as RuntimeEnvBuilderInternal
3738from ._internal import SessionConfig as SessionConfigInternal
4748 import polars as pl # type: ignore[import]
4849 import pyarrow as pa # Optional: only needed for type hints
4950
51+ from datafusion .catalog import CatalogProvider , Table
52+ from datafusion .expr import SortKey
5053 from datafusion .plan import ExecutionPlan , LogicalPlan
54+ from datafusion .user_defined import (
55+ AggregateUDF ,
56+ ScalarUDF ,
57+ TableFunction ,
58+ WindowUDF ,
59+ )
5160
5261
5362class ArrowSchemaExportable (Protocol ):
@@ -746,7 +755,7 @@ def from_polars(self, data: pl.DataFrame, name: str | None = None) -> DataFrame:
746755 # https://github.com/apache/datafusion-python/pull/1016#discussion_r1983239116
747756 # is the discussion on how we arrived at adding register_view
748757 def register_view (self , name : str , df : DataFrame ) -> None :
749- """Register a :py:class: `~datafusion.detaframe .DataFrame` as a view.
758+ """Register a :py:class:`~datafusion.dataframe .DataFrame` as a view.
750759
751760 Args:
752761 name (str): The name to register the view under.
@@ -755,16 +764,21 @@ def register_view(self, name: str, df: DataFrame) -> None:
755764 view = df .into_view ()
756765 self .ctx .register_table (name , view )
757766
758- def register_table (self , name : str , table : Table ) -> None :
759- """Register a :py:class: `~datafusion.catalog.Table` as a table.
767+ def register_table (
768+ self ,
769+ name : str ,
770+ table : Table | TableProviderExportable | DataFrame | pa .dataset .Dataset ,
771+ ) -> None :
772+ """Register a :py:class:`~datafusion.Table` with this context.
760773
761- The registered table can be referenced from SQL statement executed against.
774+ The registered table can be referenced from SQL statements executed against
775+ this context.
762776
763777 Args:
764778 name: Name of the resultant table.
765- table: DataFusion table to add to the session context .
779+ table: Any object that can be converted into a :class:`Table` .
766780 """
767- self .ctx .register_table (name , table . table )
781+ self .ctx .register_table (name , table )
768782
769783 def deregister_table (self , name : str ) -> None :
770784 """Remove a table from the session."""
@@ -783,15 +797,17 @@ def register_catalog_provider(
783797 else :
784798 self .ctx .register_catalog_provider (name , provider )
785799
800+ @deprecated ("Use register_table() instead." )
786801 def register_table_provider (
787- self , name : str , provider : TableProviderExportable
802+ self ,
803+ name : str ,
804+ provider : Table | TableProviderExportable | DataFrame | pa .dataset .Dataset ,
788805 ) -> None :
789806 """Register a table provider.
790807
791- This table provider must have a method called ``__datafusion_table_provider__``
792- which returns a PyCapsule that exposes a ``FFI_TableProvider``.
808+ Deprecated: use :meth:`register_table` instead.
793809 """
794- self .ctx . register_table_provider (name , provider )
810+ self .register_table (name , provider )
795811
796812 def register_udtf (self , func : TableFunction ) -> None :
797813 """Register a user defined table function."""
@@ -1176,14 +1192,11 @@ def read_avro(
11761192 self .ctx .read_avro (str (path ), schema , file_partition_cols , file_extension )
11771193 )
11781194
1179- def read_table (self , table : Table ) -> DataFrame :
1180- """Creates a :py:class:`~datafusion.dataframe.DataFrame` from a table.
1181-
1182- For a :py:class:`~datafusion.catalog.Table` such as a
1183- :py:class:`~datafusion.catalog.ListingTable`, create a
1184- :py:class:`~datafusion.dataframe.DataFrame`.
1185- """
1186- return DataFrame (self .ctx .read_table (table .table ))
1195+ def read_table (
1196+ self , table : Table | TableProviderExportable | DataFrame | pa .dataset .Dataset
1197+ ) -> DataFrame :
1198+ """Creates a :py:class:`~datafusion.dataframe.DataFrame` from a table."""
1199+ return DataFrame (self .ctx .read_table (table ))
11871200
11881201 def execute (self , plan : ExecutionPlan , partitions : int ) -> RecordBatchStream :
11891202 """Execute the ``plan`` and return the results."""
0 commit comments