Path: blob/main/py-polars/tests/unit/operations/arithmetic/utils.py
6940 views
from __future__ import annotations12from typing import Any34import polars as pl567def exec_op_with_series(lhs: pl.Series, rhs: pl.Series, op: Any) -> pl.Series:8v: pl.Series = op(lhs, rhs)9return v101112def exec_op_with_expr(lhs: pl.Series, rhs: pl.Series, op: Any) -> pl.Series:13return pl.select(lhs).lazy().select(op(pl.first(), rhs)).collect().to_series()141516def exec_op_with_expr_no_type_coercion(17lhs: pl.Series, rhs: pl.Series, op: Any18) -> pl.Series:19optimizations = pl.QueryOptFlags()20optimizations._pyoptflags.type_coercion = False21return (22pl.select(lhs)23.lazy()24.select(op(pl.first(), rhs))25.collect(optimizations=optimizations)26.to_series()27)282930BROADCAST_LEN = 3313233def broadcast_left(34l: pl.Series, # noqa: E74135r: pl.Series,36o: pl.Series,37) -> tuple[pl.Series, pl.Series, pl.Series]:38return l.new_from_index(0, BROADCAST_LEN), r, o.new_from_index(0, BROADCAST_LEN)394041def broadcast_right(42l: pl.Series, # noqa: E74143r: pl.Series,44o: pl.Series,45) -> tuple[pl.Series, pl.Series, pl.Series]:46return l, r.new_from_index(0, BROADCAST_LEN), o.new_from_index(0, BROADCAST_LEN)474849def broadcast_both(50l: pl.Series, # noqa: E74151r: pl.Series,52o: pl.Series,53) -> tuple[pl.Series, pl.Series, pl.Series]:54return (55l.new_from_index(0, BROADCAST_LEN),56r.new_from_index(0, BROADCAST_LEN),57o.new_from_index(0, BROADCAST_LEN),58)596061def broadcast_none(62l: pl.Series, # noqa: E74163r: pl.Series,64o: pl.Series,65) -> tuple[pl.Series, pl.Series, pl.Series]:66return l, r, o676869BROADCAST_SERIES_COMBINATIONS = [70broadcast_left,71broadcast_right,72broadcast_both,73broadcast_none,74]7576EXEC_OP_COMBINATIONS = [77exec_op_with_series,78exec_op_with_expr,79exec_op_with_expr_no_type_coercion,80]818283