# Polars 1.32.0 — Python Polars 1.32.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-08-01 - Version: 1.32.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.32.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.32.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'. --- - **added** — Make Selector a concrete part of the DSL - **changed** — Rework Categorical/Enum to use (Frozen)Categories - **changed** — Lower Expr.slice to streaming engine - **changed** — Lower any() and all() to streaming engine - **changed** — Lower row-separable functions in streaming engine - **changed** — Lower int_range(len()) to with_row_index - **changed** — Rolling quantile lower time complexity - **changed** — Use single-key optimization with Categorical - **changed** — Enable Parquet expressions and dedup is_in values in Parquet predicates - **changed** — Re-write join types during filter pushdown - **changed** — Push more filters past joins - **added** — Add Python-side caching for credentials and provider auto-initialization - **added** — Expand on DataTypeExpr - **added** — Add scalar checks to range expressions - **added** — Expose POLARS_DOT_SVG_VIEWER to automatically dispatch to SVG viewer - **added** — Implement mean function in arr namespace - **added** — Implement vec_hash for List and Array - **added** — Add unstable pl.row_index() expression - **added** — Add Categories on the Python side - **added** — Implement partitioned sinks for the in-memory engine - **added** — Add arr.slice, arr.head and arr.tail methods to arr namespace ##### 🏆 Highlights - Make `Selector` a concrete part of the DSL (#23351) - Rework Categorical/Enum to use (Frozen)Categories (#23016) ##### 🚀 Performance improvements - Lower Expr.slice to streaming engine (#23683) - Elide bound check (#23653) - Preserve `Column` repr in `ColumnTransform` operations (#23648) - Lower any() and all() to streaming engine (#23640) - Lower row-separable functions in streaming engine (#23633) - Lower int\_range(len()) to with\_row\_index (#23576) - Avoid double field resolution in with\_columns (#23530) - Rolling quantile lower time complexity (#23443) - Use single-key optimization with Categorical (#23436) - Improve null-preserving identification for boolean functions (#23317) - Improve boolean bitwise aggregate performance (#23325) - Enable Parquet expressions and dedup `is_in` values in Parquet predicates (#23293) - Re-write join types during filter pushdown (#23275) - Generate PQ ZSTD decompression context once (#23200) - Trigger cache/cse optimizations when multiplexing (#23274) - Cache FileInfo upon DSL -> IR conversion (#23263) - Push more filters past joins (#23240) - Optimize `Bitmap::make_mut` (#23138) ##### ✨ Enhancements - Add Python-side caching for credentials and provider auto-initialization (#23736) - Expand on `DataTypeExpr` (#23249) - Lower row-separable functions in streaming engine (#23633) - Add scalar checks to range expressions (#23632) - Expose `POLARS_DOT_SVG_VIEWER` to automatically dispatch to SVG viewer (#23592) - Implement mean function in `arr` namespace (#23486) - Implement `vec_hash` for `List` and `Array` (#23578) - Add unstable `pl.row_index()` expression (#23556) - Add Categories on the Python side (#23543) - Implement partitioned sinks for the in-memory engine (#23522) - Raise and Warn on UDF's without `return_dtype` set (#23353) - IR pruning (#23499) - Support min/max reducer for null dtype in streaming engine (#23465) - Implement streaming Categorical/Enum min/max (#23440) - Allow cast to Categorical inside list.eval (#23432) - Support `pathlib.Path` as source for `read/scan_delta()` (#23411) - Enable default set of `ScanCastOptions` for native `scan_iceberg()` (#23416) - Pass payload in `ExprRegistry` (#23412) - Support reading nanosecond/Int96 timestamps and schema evolved datasets in `scan_delta()` (#23398) - Support row group skipping with filters when `cast_options` is given (#23356) - Execute bitwise reductions in streaming engine (#23321) - Use `scan_parquet().collect_schema()` for `read_parquet_schema` (#23359) - Add dtype to str.to\_integer() (#22239) - Add `arr.slice`, `arr.head` and `arr.tail` methods to `arr` namespace (#23150) - Add `is_close` method (#23273) - Drop superfluous casts from optimized plan (#23269) - Added `drop_nulls` option to `to_dummies` (#23215) - Support comma as decimal separator for CSV write (#23238) - Don't format keys if they're empty in dot (#23247) - Improve arity simplification (#23242) - Allow expression input for `length` parameter in `pad_start`, `pad_end`, and `zfill` (#23182) ##### 🐞 Bug fixes - Load `_expiry_time` from botocore `Credentials` in CredentialProviderAWS (#23753) - Fix credential refresh logic (#23730) - Fix `to_datetime()` fallible identification (#23735) - Correct output datatype for `dt.with_time_unit` (#23734) - Fix incorrect native Iceberg scan from tables with renamed/dropped columns/fields (#23713) - Allow DataType expressions with selectors (#23720) - Match output type to engine for `interpolate` on `Decimal` (#23706) - Remaining bugs in `with_exprs_and_input` and pruning (#23710) - Match output dtype to engine for `cum_sum_horizontal` (#23686) - Field names for `pl.struct` in group-by (#23703) - Fix output for `str.extract_groups` with empty string pattern (#23698) - Match output type to engine for `rolling_map` (#23702) - Moved passing `DeltaTable._storage_options` (#23673) - Fix incorrect join on single Int128 column for in-memory engine (#23694) - Match output field name to lhs for _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.32.0]_