# Polars 1.10.0 — Python Polars 1.10.0 - Product: Polars (https://whatsnew.fyi/product/polars) - Vendor: Polars - Date: 2024-10-20 - Version: 1.10.0 - Original notes: https://github.com/pola-rs/polars/releases/tag/py-1.10.0 - Permalink: https://whatsnew.fyi/product/polars/releases/1.10.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'. --- - **changed** — Make date_range / datetime_range approximately 10x faster for constant durations - **changed** — Batch utf8-validation in csv with approximately 18% / 25% improvement on 1.9.0 - **changed** — Use two-pass algorithm for csv to ensure correctness and SIMDize more with approximately 17% improvement - **added** — Add SQL support for bit_count and bitwise &, |, and xor operators - **added** — Add credential provider utility classes for AWS, GCP - **added** — Support decoding Float16 in Parquet - **added** — Experimental credential_provider argument for scan_parquet - **added** — Allow DeltaTable input to scan_delta and read_delta - **added** — New quantile interpolation method and QUANTILE_DISC function in SQL - **added** — Low level flight interface - **added** — Improve list arithmetic support - **added** — Add Expr.struct.unnest() as alias for Expr.struct.field("*") - **added** — Add drop_empty_rows parameter for read_ods - **added** — Add drop_empty_rows parameter for read_excel - **added** — Quantile function in SQL - **added** — Add Series::{first, last, approx_n_unique} - **added** — Allow for rolling_*_by to use index count as window - **changed** — Conserve Parquet SortingColumns for ints - **changed** — Delay deserialization of python function until physical plan - **added** — Add cum(_min/_max) for pl.Boolean - **fixed** — Don't produce duplicate column names in Series.to_dummies ##### 🚀 Performance improvements - Add/fix unordered row decode, change unordered format (#19284) - Fast decision for Parquet dictionary encoding (#19256) - Make date\_range / datetime\_range ~10x faster for constant durations (#19216) - Batch utf8-validation in csv `18%` / `25%` on 1.9.0 (#19124) - Use two-pass algorithm for csv to ensure correctness and SIMDize more `~17%` (#19088) ##### ✨ Enhancements - Add SQL support for `bit_count` and bitwise `&`, `|`, and `xor` operators (#19114) - Add credential provider utility classes for AWS, GCP (#19297) - Support decoding Float16 in Parquet (#19278) - Experimental `credential_provider` argument for `scan_parquet` (#19271) - Allow DeltaTable input to scan\_delta and read\_delta (#19229) - New quantile interpolation method \& QUANTILE\_DISC function in SQL (#19139) - Conserve Parquet `SortingColumns` for ints (#19251) - Low level flight interface (#19239) - Improved list arithmetic support (#19162) - Add Expr.struct.unnest() as alias for Expr.struct.field("\*") (#19212) - Add 'drop\_empty\_rows' parameter for `read_ods` (#19202) - Add 'drop\_empty\_rows' parameter for `read_excel` (#18253) - Expose LTS CPU in show\_versions() (#19193) - Check Python version when deserializing UDFs (#19175) - Raise an error when users try to use Polars API in a fork()-without-execve() child (#19149) - Quantile function in SQL (#18047) - Improve scalar strict message (#19117) - Add Series::{first, last, approx\_n\_unique} (#19093) - Allow for rolling\_\*\_by to use index count as window (#19071) - Delay deserialization of python function until physical plan (#19069) - Add cum(\_min/\_max) for pl.Boolean (#19061) ##### 🐞 Bug fixes - Don't produce duplicate column names in Series.to\_dummies (#19326) - Use of `HAVING` outside of `GROUP BY` should raise a suitable SQLSyntaxError (#19320) - More accurate `from_dicts` typing/signature (#19322) - Fix empty array gather (#19316) - Merge categorical rev-map in `unpivot` (#19313) - DataFrame descending sorting by single list element (#19233) - Fix cse union schema (#19305) - Correctly load Parquet statistics for f16 (#19296) - Error on invalid query (#19303) - Fix enum scalar output (#19301) - Fix list gather invalid fast path (#19299) - Fix quoting style of decimal csv output (#19298) - Don't vertically parallelize literal select (#19295) - Fix struct reshape fast path (#19294) - Also split on forward slashes during hive path inference on Windows (#19282) - Don't cse `as_struct` (#19280) - Only apply string parsing to String dtype (#19222) - Make the SQLAlchemy connection check more robust (#19270) - Ensure that `read_database` takes advantage of Arrow return from a `duckdb_engine` connection when using a SQLAlchemy `Selectable` (#19255) - Compilation error missing use JsonLineReader (#19244) - Don't remember Parquet statistics if filtered (#19248) - Do not check dtypes of non-projected columns for parquet (#19254) - Parquet predicate pushdown for `lit(_) !=` (#19246) - Use all chunks in `Series` from arrow struct (#19218) - Don't trigger row limit in array construction (#19215) - Fix struct literals (#19214) - Plotting was not interacting well with Altair schema wrappers (#19213) - Fixing infer\_schema for DataType::Null (#19201) - Migrate to PyO3 0.22 and released verion of rust-numpy crate (#19199) - Add 'drop\_empty\_rows' parameter for `read_excel` (#18253) - Don't unwrap() expansion (#19196) - Properly handle non-nullable nested Parquet (#19192) - Fix invalid list collection in expression engine (#19191) - Fix use of "hidden\_columns" parameter in `write_excel` (#19029) - Implement to\_arrow functionality properly for Arrays (#19077) - Remove incorrect warning when using an `IO[bytes]` instance (#19154) - Don't fail test if e.g. jax has been used first, since jax installs a fork handler that warns (#19178) - Fix incorrect `(eq|ne)_missing` on List/Array types (#19155) - Properly broadcast Struct when then validity (#19148) - Allow partial name o _[Truncated at 4000 characters — full notes: https://github.com/pola-rs/polars/releases/tag/py-1.10.0]_