# Polars 1.33.0-beta.1 — Python Polars 1.33.0-beta.1 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-08-28 - Version: 1.33.0-beta.1 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.33.0-beta.1 - Permalink: https://whatsnew.fyi/product/polars/releases/1.33.0-beta.1 - Labels: Pre-release What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **removed** — Remove, deprecate or change eager Exprs to be lazy compatible - **changed** — Always simplify order requirements in IR - **changed** — Basic de-duplication of filter expressions - **changed** — Cache the IR in pipe_with_schema - **changed** — Lower arg_where natively to streaming engine - **changed** — Lower Expr.shift to streaming engine - **changed** — Lower order-preserving groupby to streaming engine - **added** — Allow pl.Expr.log to take in an expression - **added** — Add caching to user credential providers - **added** — Expose mkdir parameter on write_parquet - **added** — Implement diff() in streaming engine - **added** — Enable Expr.diff(n) for negative n - **added** — Allow upcasting null-typed columns to nested column types in scans - **added** — Drop PyArrow requirement for write_database with the ADBC engine - **deprecated** — Add a deprecation warning for pl.Series.shift(Null) - **added** — Add LazyFrame.pipe_with_schema - **added** — Add cum_* as native streaming nodes - **added** — Add peak_{min,max} support for booleans - **added** — Add DataFrame.map_columns for eager evaluation - **fixed** — Correct size limits for Decimal cast - **fixed** — Unordered unions in check order observing pass ##### 💥 Breaking changes - Remove, deprecate or change eager `Expr`s to be lazy compatible (#24027) ##### 🚀 Performance improvements - Always simplify order requirements in IR (#24192) - Basic de-duplication of filter expressions (#24220) - Cache the IR in `pipe_with_schema` (#24213) - Lower `arg_where` natively to streaming engine (#24088) - Lower Expr.shift to streaming engine (#24106) - Lower order-preserving groupby to streaming engine (#24053) ##### ✨ Enhancements - Allow pl.Expr.log to take in an expression (#24226) - Add caching to user credential providers (#23789) - Expose `mkdir` parameter on `write_parquet` (#24239) - Implement diff() in streaming engine (#24189) - Enable Expr.diff(n) for negative n (#24200) - Allow upcasting null-typed columns to nested column types in scans (#24185) - Log pyarrow predicate conversion result in sensitive verbose logs (#24186) - Drop PyArrow requirement for `write_database` with the ADBC engine (#24136) - Add a deprecation warning for pl.Series.shift(Null) (#24114) - Improve Debug formatting of DataType (#24056) - Add `LazyFrame.pipe_with_schema` (#24075) - Catch additional temporal attributes in `BytecodeParser` function analysis (#24076) - Add `cum_*` as native streaming nodes (#23977) - Add peak\_{min,max} support for booleans (#24068) - Add `DataFrame.map_columns` for eager evaluation (#23821) ##### 🐞 Bug fixes - Correct size limits for Decimal cast (#24252) - Unordered unions in check order observing pass (#24253) - Fix dtype for `slice` on `Literal` in agg context (#24137) - Fix incorrect `filter(lit(True))` when scanning hive (#24237) - In-memory group\_by on 128-bit integers (#24242) - Fix panic in `gather` inside groupby with invalid indices (#24182) - Release the GIL in map\_groups (#24225) - Remove extra explode in `LazyGroupBy.{head,tail}` (#24221) - Fix panic in polars cloud CSV scan (#24197) - Fix panic when loading categorical columns from IO plugin (#24205) - Fix credential provider did not auto-init on partition sinks (#24188) - Fix engine type for `concat_list` on AggScalar `implode` (#24160) - Rolling\_mean handle centered weights with len(values) \< window\_size (#24158) - Reading `is_in` predicate for Parquet plain strings (#24184) - Support native DuckDB connection in read\_database (#24177) - Make PyCategories pickleable (#24170) - Remove unused unsound function `to_mutable_slice` (#24173) - PyO3 extension types giving compat\_level errors (#24166) - Allow non-elementwise by in top\_k (#24164) - Fix `sort_by` for `group_by_dynamic` context (#24152) - Input-independent length aggregations in streaming (#24153) - Release GIL when iterating df in to\_arrow (#24151) - Respect non-elementwise join\_where conditions (#24135) - Fix mismatched pytest test collection error (#24133) - Resolve schema mismatch for div on Boolean (#24111) - Fix from\_repr parsing of negative durations (#24115) - Make `group_by`/`partition_by` iterator keys `tuple[Any, ...]` to enable tuple-unpacking (#24113) - Keep name when doing empty group-aware aggregation (#24098) - Implode instead of `reshape_list` (#24078) - Rolling mean with weights incorrect when min\_samples \< window\_size (#23485) - Allow `merge_sorted` for all types (#24077) - Include datatypes in `row_encode` expression (#24074) - Include UDF materialized type in serialization (#24073) - Correct `.rolling()` output type for non-aggregations (#24072) - Correct planner output schema for `join_asof` (#24071) - Correct output for `fold` and `reduce` (#24069) - Expr.meta.output\_name for struct fields (#24064) - Ensure upcast operations on `pl.Date` default to microsecond precision (#23981) - Add peak\_{min,max} support for booleans (#24068) - Planner output type for `mean` with strange input type (#24052) - Remove, deprecate or change eager `Expr`s to be lazy compatible (#24027) ##### 📖 Documentation - Fix formatting of Series.value\_counts examples (#24245) - Add hint to use `DataFrame/Series` constructors in `from_ _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.33.0-beta.1]_