4040from datafusion ._internal import DataFrame as DataFrameInternal
4141from datafusion ._internal import ParquetColumnOptions as ParquetColumnOptionsInternal
4242from datafusion ._internal import ParquetWriterOptions as ParquetWriterOptionsInternal
43- from datafusion .expr import Expr , SortExpr , expr_list_to_raw_expr_list , sort_or_default
43+ from datafusion .expr import (
44+ _EXPR_TYPE_ERROR ,
45+ Expr ,
46+ SortExpr ,
47+ expr_list_to_raw_expr_list ,
48+ sort_or_default ,
49+ )
4450from datafusion .plan import ExecutionPlan , LogicalPlan
4551from datafusion .record_batch import RecordBatchStream
4652
@@ -424,10 +430,9 @@ def filter(self, *predicates: Expr) -> DataFrame:
424430 """
425431 df = self .df
426432 for p in predicates :
427- if not isinstance (p , Expr ):
428- error = "Use col() or lit() to construct expressions"
429- raise TypeError (error )
430- df = df .filter (p .expr )
433+ if isinstance (p , str ) or not isinstance (p , Expr ):
434+ raise TypeError (_EXPR_TYPE_ERROR )
435+ df = df .filter (expr_list_to_raw_expr_list (p )[0 ])
431436 return DataFrame (df )
432437
433438 def with_column (self , name : str , expr : Expr ) -> DataFrame :
@@ -441,8 +446,7 @@ def with_column(self, name: str, expr: Expr) -> DataFrame:
441446 DataFrame with the new column.
442447 """
443448 if not isinstance (expr , Expr ):
444- error = "Use col() or lit() to construct expressions"
445- raise TypeError (error )
449+ raise TypeError (_EXPR_TYPE_ERROR )
446450 return DataFrame (self .df .with_column (name , expr .expr ))
447451
448452 def with_columns (
@@ -479,17 +483,14 @@ def _simplify_expression(
479483 elif isinstance (expr , Iterable ) and not isinstance (expr , (str , Expr )):
480484 for inner_expr in expr :
481485 if not isinstance (inner_expr , Expr ):
482- error = "Use col() or lit() to construct expressions"
483- raise TypeError (error )
486+ raise TypeError (_EXPR_TYPE_ERROR )
484487 expr_list .append (inner_expr .expr )
485488 else :
486- error = "Use col() or lit() to construct expressions"
487- raise TypeError (error )
489+ raise TypeError (_EXPR_TYPE_ERROR )
488490 if named_exprs :
489491 for alias , expr in named_exprs .items ():
490492 if not isinstance (expr , Expr ):
491- error = "Use col() or lit() to construct expressions"
492- raise TypeError (error )
493+ raise TypeError (_EXPR_TYPE_ERROR )
493494 expr_list .append (expr .alias (alias ).expr )
494495 return expr_list
495496
@@ -535,8 +536,7 @@ def aggregate(
535536 aggs_exprs = []
536537 for agg in aggs_list :
537538 if not isinstance (agg , Expr ):
538- error = "Use col() or lit() to construct expressions"
539- raise TypeError (error )
539+ raise TypeError (_EXPR_TYPE_ERROR )
540540 aggs_exprs .append (agg .expr )
541541 return DataFrame (self .df .aggregate (group_by_exprs , aggs_exprs ))
542542
@@ -786,8 +786,7 @@ def join_on(
786786 exprs = []
787787 for expr in on_exprs :
788788 if not isinstance (expr , Expr ):
789- error = "Use col() or lit() to construct expressions"
790- raise TypeError (error )
789+ raise TypeError (_EXPR_TYPE_ERROR )
791790 exprs .append (expr .expr )
792791 return DataFrame (self .df .join_on (right .df , exprs , how ))
793792
0 commit comments