Python Polars 0.20.26
⚠️ Deprecations
- Deprecate
allow_infinities
andnull_probability
args to parametric test strategies (#16183)
🚀 Performance improvements
- Avoid needless copy when converting chunked Series to NumPy (#16178)
- use zeroable_vec in ewm_mean_by (#16166)
- Improve cost of chunk_idx compute (#16154)
- Don't rechunk by default in
concat
(#16128) - Ensure rechunk is parallel (#16127)
✨ Enhancements
- Clarify
to_torch
"features" and "label" parameter behaviour when return type is not "dataset" (#16218) - Native CSV file list reading (#16180)
- Register memory mapped files and raise when written to (#16208)
- Implement support for Struct types in parametric tests (#16197)
- Enable Null datatype and null values by default in parametric testing (#16192)
- Support
Enum
types in parametric testing (#16188) - Raise when encountering invalid supertype in functions during conversion (#16182)
- Add SQL support for
GROUP BY ALL
syntax and fix several issues with aliased group keys (#16179) - Overhaul parametric test implementations and update Hypothesis to latest version (#16062)
- Avoid an extra copy when converting Boolean Series to writable NumPy array (#16164)
- Allow implicit string → temporal conversion in SQL comparisons (#15958)
- Add run-length encoding to Parquet writer (#16125)
- Support passing instantiated adbc/alchemy connection objects to
write_database
(#16099) - Add top-level
nth(n)
method, to go with existingfirst
andlast
(#16112)
🐞 Bug fixes
- Empty unique (#16214)
- Fix empty drop nulls (#16213)
- Fix get expression group-by state (#16189)
- Fix rolling empty group OOB (#16186)
- offset=-0i was being treated differently to offset=0i in rolling (#16184)
- Fix panic on empty frame joins (#16181)
- Fix streaming glob slice (#16174)
- Fix CSV skip_rows_after_header for streaming (#16176)
- Flush parquet at end of batches tick (#16073)
- Check CSE name aliases for collisions. (#16149)
- Don't override CSV reader encoding with lossy UTF-8 (#16151)
- Respect
dtype
andstrict
inpl.Series
's constructor for pyarrow arrays, numpy arrays, and pyarrow-backed pandas (#15962) - Ensure hex and bitstring literals work inside SQL
IN
clauses (#16101)
📖 Documentation
- Add examples for multiple
Series
functions (#16172) - Add deprecated messages to
cumfold
andcumreduce
(#16173) - StringNameSpace.replace_all docstring (#16169)
- Explain how Polars floor division differs from Python (#16054)
- Clarify arrow usage (#16152)
- Add example to polars.Series.flags (#16123)
🛠️ Other improvements
- Switch over some of the custom Python date/time conversions to native PyO3 conversions (#16203)
- move describe to IR instead of DSL (#16191)
- More PyO3 0.21 Bound<> APIs, and finally disable gil-refs backwards compat feature on pyo3 crate (#16143)
- Move hypothesis tests into unit test module (#16185)
- Remove unused code (#16175)
- Update plugin example to PyO3 0.21 (#16157)
- Return correct temporal type from Rust in
to_numpy
(#14353) - Create NumPy view for Datetime/Duration Series on the Rust side (#16148)
- Don't override CSV reader encoding with lossy UTF-8 (#16151)
- Continue converting to PyO3 0.21 Bound<> APIs (#16081)
Thank you to all our contributors for making this release possible!
@MarcoGorelli, @YichiZhang0613, @alexander-beedie, @bertiewooster, @coastalwhite, @dangotbanned, @itamarst, @janpipek, @jrycw, @luke396, @nameexhaustion, @pydanny, @ritchie46, @stinodego, @thalassemia and @tharunsuresh-code