Polars: py-0.20.17 Release

Release date:
March 28, 2024
Previous version:
py-0.20.16 (released March 18, 2024)
Magnitude:
7,336 Diff Delta
Contributors:
20 total committers
Data confidence:
Commits:

102 Commits in this Release

Ordered by the degree to which they evolved the repo in this version.

Authored March 26, 2024
Authored March 28, 2024
Authored March 24, 2024

Top Contributors in py-0.20.17

ritchie46
stinodego
orlp
alexander-beedie
itamarst
MarcoGorelli
cojmeister
deanm0000
mcrumiller
reswqa

Directory Browser for py-0.20.17

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

πŸ† Highlights

  • Full plan CSE (#15264)

⚠️ Deprecations

  • Rename parameter by to group_by in DataFrame.upsample/group_by_dynamic/rolling (#14840)
  • Rename from_repr parameter from tbl to data (#15156)

πŸš€ Performance improvements

  • load bits one word at a time for BitmapIter (#15333)
  • Ipc exec multiple paths (#15040)
  • add SIMD support for if-then-else kernels (#15131)

✨ Enhancements

  • Remove 'FileCacher' optimization (#15357)
  • check input type in entropy (#15351)
  • Implements arr.n_unique (#15296)
  • CSE don't scan share if predicate pushdown predicates don't match (#15328)
  • Add read_database support for SurrealDB ("ws" and "http") (#15269)
  • Only allow inputs of type Sequence in from_records (#15329)
  • In hypothesis testing strategies, enable Decimal strategy by default (#15321)
  • Remove cached nodes when finished (#15310)
  • Full plan CSE (#15264)
  • More robust handling of async database calls (#15202)
  • Add name parameter to GroupBy.len method (#15235)
  • Add IR for expressions. (#15168)
  • Improve read_database when reading from KΓΉzu graph database (#15218)
  • Warn if map_elements is called without return_dtype specified (#15188)
  • Add support for async SQLAlchemy connections to read_database (#15162)
  • Infer time_unit in pl.duration when nanoseconds is specified (#14987)
  • Add strict parameter to from_dict/from_records (#15158)

🐞 Bug fixes

  • Return correct dtype for s.clear() when dtype is Object (#15315)
  • ensure first datapoint is always included in group_by_dynamic (#15312)
  • Non-exhaustive patterns: arrow-schema::DataType in polars-arrow (#15250)
  • use dynamic stacks for problematic recursive functions (#15355)
  • Adding default ddof for Series.list.std and Series.list.var (#15267)
  • Raise properly for slices not supported by LazyFrame (#15331)
  • Propagate strictness in from_dicts (#15344)
  • Raise error when schema_overrides contains nonexistent column name (#15290)
  • Enforce integer dtype input for int_range and int_ranges (#15339)
  • Preserve Decimal precision when constructing empty Series (#15320)
  • Fix cache dot visualization (#15311)
  • Handle special case correctly when slicing a LazyFrame (#15297)
  • Properly propagate strict flag when constructing a Struct Series from any values (#15302)
  • Consistent expansion of nested struct data during DataFrame init from dict (#15217)
  • Raise when join projects name with suffix that doesn't exist (#15256)
  • Ensure ooc_start is set (#15255)
  • Fix bug where rolling operations were ignoring check_sorted in some cases (#15227)
  • Fix lazy schema for rle expression (#15248)
  • incorrect negative offset in multi-byte string slicing (#15140)
  • do not clamp negative offsets to start of array prematurely (#15242)
  • allow null index in list.get and array.get (#15239)
  • Avoid loading all columns in read_parquet when columns parameter is specified (#15229)
  • properly support nulls_last + descending (#15212)
  • fix nested runtime panic (#15216)
  • Block rounding/truncating to negative durations (#15175)
  • Ensure the cs.temporal() selector uses wildcard time zone matching for Datetime (#13683)
  • Consistently raise TypeError on constructor failure (#15178)
  • Properly propagate strictness in some constructor cases (#15166)
  • Fix constructing a Series from a list of Series with given dtype (#15144)

πŸ“– Documentation

  • Fix time unit in timestamp example (#15281)
  • Fix link to renamed method (.list.lengths -> .list.len) (#15228)
  • Update Excel and database pages in user guide (#14721)
  • Add examples for Series.search_sorted (#14737)
  • Correct the definition of an expression in the user guide (#14750)
  • Add a note about the behaviour of lower/upper bounds for is_between, and add an example (#15197)

πŸ“¦ Build system

  • Update Cargo lock (#15370)

πŸ› οΈ Other improvements

  • Memory usage test infrastructure, plus a test for #15098 (#15285)
  • Update CODEOWNERS (#15352)
  • remove try_apply_values (#15336)
  • always use non-legacy float_sum for mean (#15343)
  • remove legacy bitmap module (#15335)
  • Fix test not writing to temporary directory (#15318)
  • Reorganize tests for clear operation (#15304)
  • Rename Cache[count] to Cache[cache_hits] (#15300)
  • Cleanup file_caching optimization call (#15299)
  • Minor refactor of PyDataFrame.from_dicts (#15274)
  • remove 'fast-projection' node (#15253)
  • cleanup column names in optimizer (#15252)
  • remove left_most_input_name from expr ir (#15251)
  • add AlignedBitmapSlice (#15171)
  • Run non-benchmark tests in benchmark workflow (#15207)
  • Add wrapping_abs to arithmetic kernel (#15210)
  • remove raw buffers from BinViewArray (#15206)
  • Enable RUST_BACKTRACE=1 in the CI test suite (#15204)
  • Split read_database functionality into cleaner module structure (#15201)
  • Clean up some of the AnyValue conversion logic (#15190)
  • remove parts of legacy bit_util (#15169)
  • remove legacy arrow compute (#15164)
  • Split up dataframe module in PyO3 bindings (#15165)
  • Remove unused private constructors (#15160)

Thank you to all our contributors for making this release possible! @MarcoGorelli, @alexander-beedie, @braaannigan, @c-peters, @cojmeister, @deanm0000, @dependabot, @dependabot[bot], @itamarst, @kszlim, @mbuhidar, @mcrumiller, @mickvangelderen, @orlp, @petrosbar, @reswqa, @ritchie46, @rob-sil, @sportfloh, @stinodego and @yutannihilation