py-1.43.0

gtsteffaniak/filebrowserpy-1.43.0Jul 21, 2026by github-actions[bot]

AI Summary

This release introduces new statistical functions like exponential moving averages, significant performance optimizations for hive partitioned joins and DNS caching, and deprecates several casting behaviors and API methods.

Key Highlights

  • Performance improvements for hive partitioned joins and DNS caching
  • New features: `ewm_sum`, `ewm_sum_by`, and trigonometric functions
  • Deprecations: casting numeric types to categoricals and `LazyFrame.profile()`

New Features

  • `ewm_sum` and `ewm_sum_by` functions
  • `Series.degrees` and `Series.radians`
  • `scan_arrow_c_stream`
  • Support for Iceberg `initial-default` field
  • Optimized joins with redundant equi-join keys
  • `Expr.cat.to` and `Expr.cat.physical`
  • `read_database` fast-path for python-oracledb
  • `list` expression

Full Release Notes

## ⚠️ 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]](https://github.com/apps/dependabot)