Changes
🚀 Performance improvements
- refactor: Cache, reuse
Implementation._backend_version(#2764)
✨ Enhancements
- enh!: simplify exceptions, consistently raise InvalidOperationError instead of ShapeError/OrderDependentExprError/LengthChangingExprError (#2752)
- feat: Add
Expr.dt.offset_by()(#2733) - enh: allow for
over(order_by=...)forrank(#2746) - fix: Respect session time zone when casting to
Datetimefor PySpark (#2780) - enh: Support casting to Duration, and Datetime with different units, for DuckDB (#2782)
- feat: Add support for
quantileandewm_meanin over context (#2774) - feat: Support
DataFrame().lazy("ibis")(#2771)
🛠️ Other improvements
- ci(ruff): Autofix
"utf-8"encoding for windows (#2770) - chore: xfail cudf offset_by (#2797)
- ci: cudf tests fixup (#2795)
- chore: use
descendingandnulls_lastfor duckdbwindow_expression(#2791) - ci: unxfail truncate tests for pyspark by checking local results (#2794)
- chore: fixup error message for duckdb nightly (#2792)
- chore: clean assorted (#2787)
- chore: use _with_elementwise more for DuckDB/spark-like (#2784)
- fix: type annotation default for
named: Literal[False]was missing inDataFrame.iter_rows(#2778) - refactor: Cache, reuse
Implementation._backend_version(#2764) - ci: remove sqlglot pin, pin chatlas (#2777)
- chore: Re-sync
_compliantexports (#2773) - refactor: Move
_reuse_seriestoEagerExprwhenever possible (#2765)
Thank you to all our contributors for making this release possible!
@FBruzzesi, @MarcoGorelli, @dangotbanned, @dependabot[bot], @raisadz and dependabot[bot]