Skip to content

Commit f5f399d

Browse files
committed
Refactor _simplify_expression method to enhance type checking for expressions and improve error handling
1 parent 2bed070 commit f5f399d

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

python/datafusion/dataframe.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -476,21 +476,22 @@ def with_columns(
476476
def _simplify_expression(
477477
*exprs: Expr | Iterable[Expr], **named_exprs: Expr
478478
) -> list[expr_internal.Expr]:
479-
expr_list = []
479+
expr_list: list[expr_internal.Expr] = []
480480
for expr in exprs:
481-
if isinstance(expr, str):
481+
if isinstance(expr, str) or (
482+
isinstance(expr, Iterable)
483+
and not isinstance(expr, Expr)
484+
and any(isinstance(inner, str) for inner in expr)
485+
):
482486
raise TypeError(_EXPR_TYPE_ERROR)
483-
if isinstance(expr, Iterable) and not isinstance(expr, Expr):
484-
if any(not isinstance(inner_expr, Expr) for inner_expr in expr):
485-
raise TypeError(_EXPR_TYPE_ERROR)
486-
elif not isinstance(expr, Expr):
487+
try:
488+
expr_list.extend(expr_list_to_raw_expr_list(expr))
489+
except TypeError as err:
490+
raise TypeError(_EXPR_TYPE_ERROR) from err
491+
for alias, expr in named_exprs.items():
492+
if not isinstance(expr, Expr):
487493
raise TypeError(_EXPR_TYPE_ERROR)
488-
expr_list.extend(expr_list_to_raw_expr_list(expr))
489-
if named_exprs:
490-
for alias, expr in named_exprs.items():
491-
if not isinstance(expr, Expr):
492-
raise TypeError(_EXPR_TYPE_ERROR)
493-
expr_list.append(expr.alias(alias).expr)
494+
expr_list.append(expr.alias(alias).expr)
494495
return expr_list
495496

496497
expressions = _simplify_expression(*exprs, **named_exprs)

0 commit comments

Comments
 (0)