# Polars 1.33.0 — Python Polars 1.33.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-09-01 - Version: 1.33.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.33.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.33.0 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** — Native streaming int_range with len or count - **changed** — Lower arg_unique natively to the streaming engine - **changed** — Lower arg_where natively to streaming engine - **changed** — Lower Expr.shift to streaming engine - **changed** — Lower order-preserving groupby to streaming engine - **added** — Add CSE for custom io sources using pointer for hashing - **changed** — Allow pl.Expr.log to take in an expression - **added** — Add caching to user credential providers - **added** — Expose mkdir parameter on write_parquet - **changed** — Implement diff() in streaming engine - **changed** — Enable Expr.diff(n) for negative n - **changed** — Allow upcasting null-typed columns to nested column types in scans - **changed** — 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** — Invalid conversion from non-bit numpy bools ##### 💥 Breaking changes - Remove, deprecate or change eager `Expr`s to be lazy compatible (#24027) ##### 🚀 Performance improvements - Native streaming `int_range` with `len` or `count` (#24280) - Lower `arg_unique` natively to the streaming engine (#24279) - Move unordering optimization to end (#24286) - Do ordering simplification step after common sub-plan elimination (#24269) - 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 - Add CSE for custom io sources using pointer for hashing (#24297) - 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 - Invalid conversion from non-bit numpy bools (#24312) - Make `dt.epoch('s')` serializable (#24302) - Make `Expr.rechunk` serializable (#24303) - Schema mismatch for 'log' operation (#24300) - Incorrect first/last aggregate in streaming engine (#24289) - Fix group offsets in sliced groups (#24274) - Panic in inexact date(time) conversion (#24268) - Keep DSL cache after serialization and deserialization (#24265) - Sanitize and warn about eval usage (#24262) - Correct incorrect default in `from_pandas` overload for `include_index` (#24258) - Unique with keep="none" in new optimization pass (#24261) - 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) - Implod _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.33.0]_