py-1.41.1

MiniMax-AI/MiniMax-01py-1.41.1May 27, 2026by github-actions[bot]

AI Summary

This release focuses on performance optimizations, bug fixes, and documentation improvements for the Python Polars library. It addresses a specific memory usage regression and enhances expression handling capabilities.

Key Highlights

  • Adaptive size dispatch in `agg_n_unique` for improved performance.
  • Fix for memory usage regression affecting TPCH Q22.
  • Fix for precision loss in smaller floating-point types.
  • Allow deeper expressions.
  • New `POLARS_ALLOW_NESTED_CSPE` environment variable for controlling nested Cross-Stream Predicate Evaluation.

New Features

  • Allow deeper expressions.
  • New `POLARS_ALLOW_NESTED_CSPE` environment variable.
  • Stabilization of object store `credentialprovider` cache key.

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