github pola-rs/polars py-1.43.0
Python Polars 1.43.0

22 hours ago

⚠️ Deprecations

  • Deprecate casting numeric types to categoricals (#28349)
  • Deprecate cat.get_categories() and cat.to_local() (#28299)
  • Deprecate LazyFrame.profile() (#28275)
  • Deprecate casts from non-nested dtypes into Lists (#28193)
  • Deprecate bitwise ops between integers and booleans (#28186)
  • Deprecate list/arr.to_struct() calls that don't pass field names (#28243)
  • Rename missing_utf8_is_empty_string to empty_string_is_null (#28173)

🚀 Performance improvements

  • Split multiplexers that directly scan from in-memory DataFrame (#28376)
  • Make DNS cache global (#28352)
  • Do not remove cache if predicates not pushed to all inputs (#28341)
  • Environment variable for logging slow DNS lookup (#28211)
  • Pre-partition on left, right and semi joins on hive partitioned data (#28374)
  • Rewrite inner joins on hive partitioned data to a union of partitions filtered joins (#28327)
  • Tighten redundant comparisons and propagate filter constraints (#27999)
  • Canonicalize predicates (#28212)
  • Remove excess memory copy in streaming IPC sink (#28141)
  • Parallelize scan_iceberg resolve (#28168)
  • Chunk-aware morsel splitting on single-file IO sink (#27950)
  • Don't allocate for full_null() with small lengths (#28181)
  • Use monotonic deque for rolling min_by/max_by (O(n)) (#27436)

✨ Enhancements

  • Pre-partition group-by on hive keys (#28444)
  • Add ewm_sum and ewm_sum_by #28151 (#28215)
  • Serve stale records from object_store DNS cache (#28256)
  • Make partition_hive an opt flag (#28345)
  • Add scan_arrow_c_stream (#28340)
  • When displaying IRExprs, only add parentheses when needed for disambiguation (#28319)
  • Support Iceberg field initial-default in native scan_iceberg (#28324)
  • Show only differing dtypes in assert_frame_equal error (#27816)
  • Expose ewm and rolling *_by expressions in Python visitor (#28286)
  • More accurate rolling moments (#28309)
  • Remove hard block on native scan for Iceberg V3 tables (#28277)
  • Add Series.degrees/radians and clarify trig functions use radians (#22961)
  • Merge sorted with multikey (#28067)
  • Add list expression which consistently packs elements together into new List type (#27990)
  • Add read_database Arrow fast-path for "python-oracledb" (#28230)
  • Optimize joins with redundant equi-join keys (#28017)
  • Implement missing datetime options for CastColumnsPolicy (#28084)
  • Add Expr.cat.to and Expr.cat.physical (#28096)
  • Add POLARS_OOC_DISK_BUDGET_MB (#28045)
  • Add build side preference parameter for join (#28154)

🐞 Bug fixes

  • Avoid panic when union slice skips all rows (#28420)
  • Solve panic in dt.replace when there were multiple chunks (#28437)
  • Propagate is_scalar from the input to the output of .sort() and .sort_by() (#28438)
  • Resolve CSV column names overwrite in DSL->IR conversion (#28383)
  • Avoid IEJoin rewrite for Categorical comparisons (#28427)
  • Do not rewrite sort().reverse() to sort(descending=True) when maintain_order=True (#28403)
  • Ensure BinaryView offset+len does not exceed i32::MAX where possible (#28048)
  • Invalid offset in strptime (#28388)
  • Incorrect schema type for decimal <-> primitive division (#28373)
  • Panic in in-memory CSEE handling (#28371)
  • Fix offset in arrow ffi export of sliced struct arrays (#28369)
  • Fix cross filter not applied with sink and CSE (#28297)
  • Fix panic on projection pushdown with caches (#28280)
  • Fix write_json() null values in Array columns being written incorrectly as null (#28330)
  • Fix EntityTooSmall on sink_ipc to S3 (#28255)
  • Raise error instead of silent wrapping for select(len()) (#28355)
  • Float16 groupby aggregates (#28361)
  • Respect lexical ordering of Categorical in top_k/bottom_k (#28359)
  • Support dtype-list schema overrides in scan_csv (#28226)
  • Resolve unknown type in fused multiply add (#28321)
  • Honor aws_checksum_algorithm when provided (#28328)
  • Remove usage of deprecated pyarrow.feather.read_table (#28323)
  • Fix regression in sourcing HF_TOKEN (#28317)
  • Raise on addition/subtraction between temporal and non-temporal Series (#28266)
  • Avoid panic constructing Series from unaligned numpy arrays (#28120)
  • Rewrite with_columns on empty df to select during DSL -> IR (#28298)
  • Fix sink deadlock regression (#28296)
  • Avoid panic when consumer of vertical concat is done (#28272)
  • Harden IPC mmap API (#28258)
  • Classify S3 region request failures as IO errors (#28225)
  • Incorrect inner dtype in ArrayChunked::from_aligned_values (#28249)
  • Raise on implode of Object dtype instead of creating invalid List(Object) (#28246)
  • Return null not 0 for the first unbiased ewm_var/ewm_std value (#28235)
  • Database appends with ADBC shouldn't require "CREATE" privileges unless the table is confirmed not to exist (#28228)
  • Avoid slice pushdown panic on shared cache inputs (#28157)
  • Incorrect dtype for Unknown right literal in arithmetic (#28184)
  • Remove unnecessary unsafe Python object downcast (#28189)
  • Normalize non-native byte order in numpy array construction (#28197)
  • Use-after-free in numpy ufunc FFI (#28195)
  • Unpickling for pl.when().then() (#28165)
  • Reduce unknown casts (#28145)
  • Consider a rolling_rank position invalid if ost.len() < min_samples (#28142)
  • Incorrect broadcast with empty len in pl.concat_list (#28134)

📖 Documentation

  • Update comparison page (#28418)
  • Update GPU support documentation with the cudf-polars 26.06 release (#27830)
  • Fix dev docs being canonical for SEO (#28306)
  • Document experimental HDFS support on-premises (#28115)
  • Add Series.degrees/radians and clarify trig functions use radians (#22961)
  • Add polars-bio to community plugins (#28103)
  • Add AWS Marketplace walkthrough to Cloud User Guide (#28214)
  • Correct merge_sorted() docs also for DataFrame (#28183)
  • Clarify DataFrame.remove combines predicates with AND (#28171)
  • Update config reference (#28150)
  • Correct that merge_sorted() null inputs should be nulls first (#28177)
  • Clarify parts of the Polars Cloud and On-prem user guide (#28170)
  • Add On-Premise release 0.6.3 to releases page (#28175)
  • Update PolarsCloud snippets for 0.9.0 release (#28166)
  • Fix to_titlecase incorrectly claiming alphanumeric separation (#28136)

📦 Build system

  • Set the default dev profile to line-tables-only (#28358)
  • Reduce binary size by optimizing for size in the SQL transpilation (#28336)

🛠️ Other improvements

  • Update AI policy for comments (#28436)
  • Fix flaky ordering expectation in top_k_by (#28435)
  • Ignore all deprecation warnings in Python doctest (#28398)
  • Re-work shuffle parameter for sample() (#27460)
  • Ignore deprecation warnings on to_struct() in doctest (#28370)
  • Update spin dependency to v0.10.1 (#28360)
  • Bloat dispatch reduction (#28337)
  • Show only differing dtypes in assert_frame_equal error (#27816)
  • Accept IR in optimize (#28318)
  • Annotate untyped module constants (#27907)
  • Remove unencountered deny entries (#28260)
  • Bump crossbeam-epoch dependency (#28259)
  • Change object_store custom DNS resolver patch to rev-based (#28241)
  • Mark shape tests as passing (#28133)
  • Attribute annotations for *GroupBy (#27903)
  • Clarify AI policy, explicitly forbid agents from interacting with our repository (#28206)
  • Tighten first-time-contributor screenshot requirements (#28207)
  • Covariant classinstmethod and attribute annotation (#27904)
  • Ignore quickxml DoS rustsec (#28185)
  • Update typos to v1.48.0 (#28162)

Thank you to all our contributors for making this release possible!
@0guban0v, @AnirudhRahul, @Bharath-970, @CodingSelim, @EndPositive, @Jesse-Bakker, @Kevin-Patyk, @LarryHu0217, @MarcoGorelli, @MatteoPossamai, @TNieuwdorp, @alex-h-sun, @alexander-beedie, @azimafroozeh, @borchero, @dancsi, @dependabot[bot], @dsprenkels, @harrywhalen, @jorenham, @kdn36, @makinzm, @malhotrashivam, @mdavis-xyz, @mikhail5555, @mkzung, @mroeschke, @nameexhaustion, @orlp, @r-brink, @raphaelroshan, @ritchie46, @tylerriccio33, @useredsa, @wence-, @yannbolliger, @zichen0116 and dependabot[bot]

Don't miss a new polars release

NewReleases is sending notifications on new releases.