# Polars 1.19.0 — Python Polars 1.19.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2025-01-03 - Version: 1.19.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.19.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.19.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** — Add Int128 IO support for csv and ipc - **added** — Support arbitrary expressions in join_where - **added** — Add an include_file_paths parameter to read_excel and read_ods - **added** — Allow loading data from multiple Excel/ODS workbooks and worksheets - **added** — Implement list.min and list.max for list[i128] - **changed** — Allow use of Python types in cs.by_dtype and col - **changed** — Accept more generic Iterable[bool] in Series.filter - **changed** — Allow more join lossless casting - **changed** — Collapse expanded filters in eager - **changed** — Use different binview dedup strategy depending on chunks ratio - **changed** — Re-enable common subplan elim for new-streaming engine - **fixed** — Output index type instead of u32 for sum_horizontal with boolean inputs - **fixed** — Fix more global categorical issues - **fixed** — Revert categorical unique code - **fixed** — Add unique fast path for empty categoricals - **fixed** — Fix various Int128 operations - **fixed** — Fix global cat unique - **fixed** — Fix union - **fixed** — Fix rolling aggregations for various integer types - **fixed** — Ensure ignore_nulls is respected in horizontal sum/mean ##### 🚀 Performance improvements - Collapse expanded filters in eager (#20493) - Remove predicate from `IR::DataFrame` (#20492) - Use different binview dedup strategy depending on chunks ratio (#20451) - Generalize the `arg_sort` fast path onto `Column` (#20437) - Dedup binviews up front (#20449) - Re-enable common subplan elim for new-streaming engine (#20443) - Don't collect all LHS arrays in gather (#20441) - Remove prepare\_series for gather kernels (#20439) - Don't always take all data buffers when gathering views (#20435) ##### ✨ Enhancements - Add `Int128` IO support for csv \& ipc (#20535) - Support arbitrary expressions in 'join\_where' (#20525) - Allow use of Python types in `cs.by_dtype` and `col` (#20491) - Add an "include\_file\_paths" parameter to `read_excel` and `read_ods` (#20476) - Allow more join lossless casting (#20474) - Accept more generic `Iterable[bool]` in Series.filter (#20431) - Allow loading data from multiple Excel/ODS workbooks and worksheets (#20465) ##### 🐞 Bug fixes - Output index type instead of u32 for `sum_horizontal` with boolean inputs (#20531) - Fix more global categorical issues (#20547) - Update eager join doctest on multiple columns (#20542) - Revert categorical unique code (#20540) - Add `unique` fast path for empty categoricals (#20536) - Fix various `Int128` operations (#20515) - Fix global cat unique (#20524) - Fix union (#20523) - Fix rolling aggregations for various integer types (#20512) - Ensure `ignore_nulls` is respected in horizontal sum/mean (#20469) - Fix incorrectly added sorted flag after append for lexically ordered categorical series (#20414) - More `Int128` testing and related fixes (#20494) - Validate column names in `unique()` for empty DataFrames (#20411) - Implement `list.min` and `list.max` for `list[i128]` (#20488) - Decimal from physical in horizontal min/max and shift (#20487) - Don't remove sort if first/last strategy is set in unique (#20481) - Fix join literal behavior (#20477) - Validate asof join by args in IR resolving phase (#20473) - Fix `align_frames` with single row panicking (#20466) - Allow multiple column sort for Decimal (#20452) - Fix mode panicking for String dtype (#20458) - Return correct schema for `sum_horizontal` with boolean dtype (#20459) - Fix return type for `add_business_days`, `millennium`, `century` and `combine` methods in `Series.dt` namespace (#20436) ##### 📖 Documentation - Fix typo in `DataFrame.cast` (#20532) - Fix flaky doctests (#20516) - Add examples for bitwise expressions (#20503) - Clarify the join pre-condition of `join_asof` (#20509) - Fix `Expr.all` description of Kleene logic (#20409) ##### 🛠️ Other improvements - Increase categorical test coverage (#20514) - Report wheel sizes (#20541) - Add tests for `floor/ceil` on integers (#20479) - Expose and rewrite 'can\_pre\_agg' (#20450) - Skip test on windows; kuzu import segfaults (#20463) - Add a `TypeCheckRule` to the optimizer (#20425) Thank you to all our contributors for making this release possible! @Biswas-N, @IndexSeek, @Prathamesh-Ghatole, @Terrigible, @alexander-beedie, @brifitz, @coastalwhite, @dependabot, @dependabot[bot], @jqnatividad, @lukemanley, @mcrumiller, @orlp, @ritchie46 and @siddharth-vi