py-1.41.1

paulpierre/markdown-crawlerpy-1.41.1May 27, 2026by github-actions[bot]

AI Summary

Performance optimizations include adaptive size dispatch to hashset or radix sort, while bug fixes address length mismatches, precision loss, and CSPE (Common Subplan Elimination) behavior.

Key Highlights

  • Adaptive size dispatch to hashset or radix sort
  • Allow deeper expressions
  • Raise length mismatch in multiple sort_by in group_by
  • Fix memory usage regression affecting TPCH Q22

New Features

  • Allow deeper expressions
  • Add POLARS_ALLOW_NESTED_CSPE env var
  • Docs fixes
  • Sync from Polars Cloud

Full Release Notes

## πŸš€ Performance improvements

- Adaptive size dispatch to hashset or radix sort + capacity-aware reset in `agg_n_unique` (#27719)

## ✨ Enhancements

- Allow deeper expressions (#27768)

## 🐞 Bug fixes

- Raise length mismatch in multiple `sort_by` in `group_by` (#27772)
- Respect min\_samples for rolling\_by ops with nulls (#27706)
- Fix memory usage regression affecting TPCH Q22 (#27758)
- Add `POLARS_ALLOW_NESTED_CSPE` env var and make nested CSPE opt-in (#27765)
- Post-apply residual pyarrow predicates (#27764)
- Fix loss of precision for smaller floating types(#27662) (#27732)
- Filter at scan dropped in CSPE filter pushdown (#27763)
- Fix portstate assertion error on is\_in (#27757)
- Fix incorrect when/then after forward fill / reverse in groupby (#27745)
- Accept empty Thrift list encoded as bare 0x00 byte in parquet metadata (#27754)
- Stabilize object store `credentialprovider` cache key (#27712)
- Add to `merge_sorted` docs that the input must be nulls first (#27743)

## πŸ“– Documentation

- Docs fixes (#27766)
- Sync from Polars Cloud (#27751)
- Add to `merge_sorted` docs that the input must be nulls first (#27743)

## πŸ› οΈ Other improvements

- Attribute annotations for `CatalogCredentialProvider` (#27739)
- Solve `type: ignore` in \_AioDataFrameResult (#27311)
- Remove dead code in `_write_utils.py` (#27721)
- Remove unnecessary ``not isinstance(v, DataType)`` check (#27723)

Thank you to all our contributors for making this release possible!
@EndPositive, @JakubValtar, @MarcoGorelli, @NicoOhR, @azimafroozeh, @carnarez, @dsprenkels, @jorenham, @kdn36, @nameexhaustion, @orlp and @ritchie46