🏆 Highlights
- Enable additional flags for x86-64 wheels (#11487)
⚠️ Deprecations
- Rename
.list.lengths
and.str.lengths
(#11613) - Deprecate default value for
radix
inparse_int
(#11615) - Rename
write_csv
parameterquote
toquote_char
(#11583)
🚀 Performance improvements
- actually use projection information in async parquet reader (#11637)
- improve performance and fix panic in async parquet reader (#11607)
- use try_binary_elementwise over try_binary_elementwise_values (#11596)
- skip empty chunks in concat (#11565)
- improve sparse sample performance (#11544)
✨ Enhancements
- Standardize error message format (#11598)
- allow coalesce in streaming (#11633)
- Implement
schema
,schema_override
forpl.read_json
with array-like input (#11492) - add SQL support for
UNION [ALL] BY NAME
, add "diagonal_relaxed" strategy forpl.concat
(#11597) - improve performance and fix panic in async parquet reader (#11607)
- add time_unit argument to duration, default to "us" (#11586)
- support
read_database
options passthrough to the underlying connection'sexecute
method (enables parameterised SQL queries, etc) (#11562) - elide overflow checks on i64 (#11563)
- add
INITCAP
string function for SQL (#9884)
🐞 Bug fixes
- Fix input replacement logic for slice (#11631)
- slice expr can be taken in cse (#11628)
- ensure nested logical types are converted to physical (#11621)
- correctly convert nullability of nested parquet fields to arrow (#11619)
- improve performance and fix panic in async parquet reader (#11607)
- normalize filepath in sink_parquet (#11605)
- parse time unit properly in pl.lit (#11573)
- expand all literals before group_by (#11590)
- fix as_dict with include_key=False for partition_by (#9865)
- mark take_group_last function as unsafe (#11587)
- handle unary operators applied to numbers used in SQL
IN
clauses (#11574) - Align new_columns argument for
scan_csv
andread_csv
(#11575) - Add initialization support for python Timedeltas (#11566)
- incomplete reading of list types from parquet (#11578)
- respect identity in horizontal sum (#11559)
- bug in BitMask::get_u32 (#11560)
- take slice into account in parallel unions (#11558)
- correct schema empty df in hive partitioning read (#11557)
- ensure ListChunked::full_null uses physical types (#11554)
- respect 'hive_partitioning' argument in parquet (#11551)
- fix parquet deserialization Overflow error by using i64 offset types when promoting Arrow Lists to LargeLists (#11549)
- streamline
is_in
handling of mismatched dtypes and fix a minor regression (#11533) - fix comparing tz-aware series with stdlib datetime (#11480)
- catch use of non equi-joins in SQL interface and raise appropriate error (#11526)
- rework SQL join constraint processing to properly account for all
USING
columns (#11518)
🛠️ Other improvements
- Improved user guide for cloud functionality (#11646)
- Improve some docstrings (#11644)
- Disable clippy lint "too many arguments" for
py-polars
(#11616) - Make backwardfill and forwardfill function expr non-anonymous (#11630)
- Make all expr in dt namespace non-anonymous (#11627)
- Fix changelog for language-specific breaking changes (#11617)
- Make value_counts and unique_counts function expr non-anonymous (#11601)
- Make arg_min(max), diff in list namespace non-anonymous (#11602)
- Rename
write_csv
parameterquote
toquote_char
(#11583) - improve struct documentation (#11585)
- Remove
**kwargs
fromLazyFrame.collect()
(#11567) - use a generic consistent total ordering, also for floats (#11468)
- fix lints (#11555)
- Remove toolchain specification workaround (#11552)
- Trigger Python release from Actions workflow dispatch (#11538)
- Enable additional flags for x86-64 wheels (#11487)
Thank you to all our contributors for making this release possible!
@ByteNybbler, @MarcoGorelli, @TheDataScientistNL, @alexander-beedie, @andysham, @c-peters, @jhorstmann, @mcrumiller, @nameexhaustion, @orlp, @reswqa, @ritchie46, @romanovacca, @stinodego and @svaningelgem