From 5737455a3761fbc934dc085dc631e5c302350c20 Mon Sep 17 00:00:00 2001 From: eitsupi <50911393+eitsupi@users.noreply.github.com> Date: Sun, 17 Nov 2024 14:43:16 +0900 Subject: [PATCH] feat!: bump polars to 0.44.2 (#1271) --- DESCRIPTION | 4 +- NEWS.md | 62 +- R/expr__expr.R | 13 +- R/extendr-wrappers.R | 4 +- R/io_parquet.R | 18 +- man/Expr_approx_n_unique.Rd | 3 +- man/Expr_reshape.Rd | 8 +- man/IO_read_parquet.Rd | 12 +- man/IO_scan_parquet.Rd | 12 +- src/rust/Cargo.lock | 882 +++++++++++++----------- src/rust/Cargo.toml | 10 +- src/rust/src/arrow_interop/to_rust.rs | 14 +- src/rust/src/conversion_r_to_s.rs | 3 +- src/rust/src/conversion_s_to_r.rs | 3 +- src/rust/src/lazy/dataframe.rs | 1 + src/rust/src/lazy/dsl.rs | 87 ++- src/rust/src/rbackground.rs | 4 + src/rust/src/rdataframe/mod.rs | 46 +- src/rust/src/rdataframe/read_parquet.rs | 6 + src/rust/src/rdatatype.rs | 12 +- src/rust/src/rlib.rs | 21 +- src/rust/src/series.rs | 10 +- tests/testthat/test-as_polars.R | 2 +- tests/testthat/test-expr_expr.R | 17 +- 24 files changed, 711 insertions(+), 543 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b792236b2..c685fc83d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -120,5 +120,5 @@ Collate: 'zzz.R' Config/rextendr/version: 0.3.1 VignetteBuilder: knitr -Config/polars/LibVersion: 0.43.1 -Config/polars/RustToolchainVersion: nightly-2024-09-19 +Config/polars/LibVersion: 0.44.0 +Config/polars/RustToolchainVersion: nightly-2024-10-28 diff --git a/NEWS.md b/NEWS.md index f0becff77..f46a8cc2e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,10 @@ ### Breaking changes +- Updated Rust Polars to 0.44.2 (#1271). + - Minimum supported Rust version (MSRV) is now 1.82.0. + - `$reshape()`'s `nested_type` argument is removed. + - `$approx_n_unique()` no longer works on Categorical type. - `$compare()` is removed. (#1272) ### Deprecations @@ -18,7 +22,7 @@ ## Polars R Package 0.20.0 -- Updated rust-polars to 0.43.1 (#1230). +- Updated Rust Polars to 0.43.1 (#1230). ### Breaking changes @@ -50,7 +54,7 @@ ### Breaking changes -- Updated rust-polars to unreleased 2024-08-20, after 0.42.0 (#1183). +- Updated Rust Polars to unreleased 2024-08-20, after 0.42.0 (#1183). - `$describe_plan()` and `$describe_optimized_plan()` are removed. Use respectively `$explain(optimized = FALSE)` and `$explain()` instead (#1182). - The parameter `inherit_optimization` is removed from all functions that had it @@ -117,7 +121,7 @@ ### Breaking changes -- Updated rust-polars to 0.41.3 (#1147, #1156). +- Updated Rust Polars to 0.41.3 (#1147, #1156). - In `$n_chunks()`, the default value of `strategy` now is `"first"` (#1137). - `$sample()` for Expr and DataFrame (#1136): - the argument `frac` is renamed `fraction`; @@ -174,7 +178,7 @@ ### Breaking changes -- Updated rust-polars to unreleased version (> 0.40.0) (#1104, #1110, #1117, #1124): +- Updated Rust Polars to unreleased version (> 0.40.0) (#1104, #1110, #1117, #1124): - In `$join()`, there is a new argument `coalesce` and the `how` options now accept `"full"` instead of `"outer"` and `"outer_coalesce"`. - `$top_k()` and `$bottom_k()` gain three arguments `nulls_last`, @@ -290,7 +294,7 @@ ## Polars R Package 0.16.1 -This is a small hot-fix release to update dependent Rust polars to 0.39.1 (#1042). +This is a small hot-fix release to update dependent Rust Polars to 0.39.1 (#1042). Also, there are some updates. @@ -306,7 +310,7 @@ Also, there are some updates. ### Breaking changes -- Rust polars is updated to 0.39.0 (#937, #1034). +- Rust Polars is updated to 0.39.0 (#937, #1034). - R objects inside an R list are now converted to Polars data types via `as_polars_series()` (#1021, #1022, #1023). For example, up to polars 0.15.1, a list containing a data.frame with a column of `{clock}` naive-time class @@ -533,7 +537,7 @@ Also, there are some updates. ### New features -- rust-polars is updated to 0.38.2 (#907). +- Rust Polars is updated to 0.38.2 (#907). - Minimum supported Rust version (MSRV) is now 1.76.0. - `as_polars_df()` is added (#893). - It is now possible to create an empty `DataFrame` with a specific schema @@ -551,9 +555,9 @@ Also, there are some updates. ## Polars R Package 0.15.0 -### Breaking changes due to Rust-polars update +### Breaking changes due to Rust Polars update -- rust-polars is updated to 0.38.1 (#865, #872). +- Rust Polars is updated to 0.38.1 (#865, #872). - in `$pivot()`, arguments `aggregate_function`, `maintain_order`, `sort_columns` and `separator` must be named. Values that are passed by position are ignored. @@ -715,9 +719,9 @@ Also, there are some updates. ## Polars R Package 0.14.0 -### Breaking changes due to Rust-polars update +### Breaking changes due to Rust Polars update -- rust-polars is updated to 0.37.0 (#776). +- Rust Polars is updated to 0.37.0 (#776). - Minimum supported Rust version (MSRV) is now 1.74.1. - `$with_row_count()` for `DataFrame` and `LazyFrame` is deprecated and will be removed in 0.15.0. It is replaced by `$with_row_index()`. @@ -904,9 +908,9 @@ a large amount of documentation improvements. - `pl$polars_info()` is moved to `polars_info()`. `pl$polars_info()` is deprecated and will be removed in 0.13.0 (#662). -### Rust-polars update +### Rust Polars update -- rust-polars is updated to 0.36.2 (#659). Most of the changes from 0.35.x to 0.36.2 +- Rust Polars is updated to 0.36.2 (#659). Most of the changes from 0.35.x to 0.36.2 were covered in R polars 0.12.0. The main change is that `pl$Utf8` is replaced by `pl$String`. `pl$Utf8` is an alias and will keep working, but `pl$String` is now preferred @@ -927,9 +931,9 @@ a large amount of documentation improvements. ## Polars R Package 0.12.0 -### BREAKING CHANGES DUE TO RUST-POLARS UPDATE +### BREAKING CHANGES DUE TO Rust Polars UPDATE -- rust-polars is updated to 2023-12-25 unreleased version (#601, #622). +- Rust Polars is updated to 2023-12-25 unreleased version (#601, #622). This is the same version of Python Polars package 0.20.2, so please check the [upgrade guide](https://pola-rs.github.io/polars/releases/upgrade/0.20/) for details too. - `pl$scan_csv()` and `pl$read_csv()`'s `comment_char` argument is renamed `comment_prefix`. @@ -984,9 +988,9 @@ a large amount of documentation improvements. ## Polars R Package 0.11.0 -### BREAKING CHANGES DUE TO RUST-POLARS UPDATE +### BREAKING CHANGES DUE TO Rust Polars UPDATE -- rust-polars is updated to 0.35.0 (2023-11-17) (#515) +- Rust Polars is updated to 0.35.0 (2023-11-17) (#515) - changes in `$write_csv()` and `sink_csv()`: `has_header` is renamed `include_header` and there's a new argument `include_bom`. - `pl$cov()` gains a `ddof` argument. @@ -1065,9 +1069,9 @@ a large amount of documentation improvements. ## Polars R Package 0.10.0 -### BREAKING CHANGES DUE TO RUST-POLARS UPDATE +### BREAKING CHANGES DUE TO Rust Polars UPDATE -- rust-polars is updated to 2023-10-25 unreleased version (#442) +- Rust Polars is updated to 2023-10-25 unreleased version (#442) - Minimum supported Rust version (MSRV) is now 1.73. - New subnamespace `"name"` that contains methods `$prefix()`, `$suffix()` `keep()` (renamed from `keep_name()`) and `map()` (renamed from `map_alias()`). @@ -1109,9 +1113,9 @@ a large amount of documentation improvements. ## Polars R Package 0.9.0 -### BREAKING CHANGES DUE TO RUST-POLARS UPDATE +### BREAKING CHANGES DUE TO Rust Polars UPDATE -- rust-polars is updated to 0.33.2 (#417) +- Rust Polars is updated to 0.33.2 (#417) - In all date-time related methods, the argument `use_earliest` is replaced by `ambiguous`. - In `$sample()` and `$shuffle()`, the argument `fixed_seed` is removed. - In `$value_counts()`, the arguments `multithreaded` and `sort` @@ -1121,7 +1125,7 @@ a large amount of documentation improvements. - Using `$is_in()` with `NA` on both sides now returns `NA` and not `TRUE` anymore. - Argument `pattern` of `$str$count_matches()` can now use expressions. - Needs Rust toolchain `nightly-2023-08-26` for to build with full features. -- Rename R functions to match rust-polars +- Rename R functions to match Rust Polars - `$str$count_match()` -> `$str$count_matches()` (#417) - `$str$strip()` -> `$str$strip_chars()` (#417) - `$str$lstrip()` -> `$str$strip_chars_start()` (#417) @@ -1187,9 +1191,9 @@ a large amount of documentation improvements. ## Polars R Package 0.8.0 -### BREAKING CHANGES DUE TO RUST-POLARS UPDATE +### BREAKING CHANGES DUE TO Rust Polars UPDATE -rust-polars was updated to 0.32.0, which comes with many breaking changes and new +Rust Polars was updated to 0.32.0, which comes with many breaking changes and new features. Unrelated breaking changes and new features are put in separate sections (#334): @@ -1259,7 +1263,7 @@ features. Unrelated breaking changes and new features are put in separate sectio will trigger something like `Cargo build --features "full_features"` which is not exactly the same as `Cargo build --all-features`. Some dev features are not included in "full_features" (#311). - Fix bug to allow using polars without library(polars) (#355). -- New methods `$optimization_toggle()` + `$profile()` and enable rust-polars feature +- New methods `$optimization_toggle()` + `$profile()` and enable Rust Polars feature CSE: "Activate common subplan elimination optimization" (#323) - Named expression e.g. `pl$select(newname = pl$lit(2))` are no longer experimental and allowed as default (#357). @@ -1269,7 +1273,7 @@ features. Unrelated breaking changes and new features are put in separate sectio can define a custom way to convert their format to Polars format. This generic must return a Polars series. See #368 for an example (#369). - Private API Support for Arrow Stream import/export of DataFrame between two R packages that uses - rust-polars. [See R package example here](https://github.com/rpolars/extendrpolarsexamples) + Rust Polars. [See R package example here](https://github.com/rpolars/extendrpolarsexamples) (#326). ## Polars R Package 0.7.0 @@ -1278,7 +1282,7 @@ features. Unrelated breaking changes and new features are put in separate sectio - Replace the argument `reverse` by `descending` in all sorting functions. This is for consistency with the upstream Polars (#291, #293). -- Bump rust-polars from 2023-04-20 unreleased version to version 0.30.0 released in 2023-05-30 (#289). +- Bump Rust Polars from 2023-04-20 unreleased version to version 0.30.0 released in 2023-05-30 (#289). - Rename `concat_lst` to `concat_list`. - Rename `$str$explode` to `$str$str_explode`. - Remove `tz_aware` and `utc` arguments from `str_parse`. @@ -1299,7 +1303,7 @@ features. Unrelated breaking changes and new features are put in separate sectio - Fix memory leak on error bug. Fix printing of `%` bug. Prepare for renaming of polars classes (#252). - Add helpful reference landing page at `polars.github.io/reference_home` (#223, #264). - Supports Rust 1.65 (#262, #280) - - rust-polars' `simd` feature is now disabled by default. To enable it, set the environment variable + - Rust Polars' `simd` feature is now disabled by default. To enable it, set the environment variable `RPOLARS_ALL_FEATURES` to `true` when build r-polars (#262). - `opt-level` of `argminmax` is now set to `1` in the `release` profile to support Rust < 1.66. The profile can be changed by setting the environment variable `RPOLARS_PROFILE` (when set to `release-optimized`, @@ -1332,7 +1336,7 @@ features. Unrelated breaking changes and new features are put in separate sectio ### BREAKING CHANGES -- Bump rust-polars from 2023-02-17 unreleased version to 2023-04-20 unreleased version. (#183) +- Bump Rust Polars from 2023-02-17 unreleased version to 2023-04-20 unreleased version. (#183) - `top_k`'s `reverse` option is removed. Use the new `bottom_k` method instead. - The name of the `fmt` argument of some methods (e.g. `parse_date`) has been changed to `format`. diff --git a/R/expr__expr.R b/R/expr__expr.R index 185f93dba..a48d10048 100644 --- a/R/expr__expr.R +++ b/R/expr__expr.R @@ -1758,8 +1758,7 @@ Expr_n_unique = use_extendr_wrapper #' This is done using the HyperLogLog++ algorithm for cardinality estimation. #' @return Expr #' @examples -#' as_polars_df(iris[, 4:5])$ -#' with_columns(count = pl$col("Species")$approx_n_unique()) +#' as_polars_df(mtcars)$select(count = pl$col("cyl")$approx_n_unique()) Expr_approx_n_unique = use_extendr_wrapper #' Count missing values @@ -3022,9 +3021,6 @@ Expr_arctanh = use_extendr_wrapper #' @param dimensions A integer vector of length of the dimension size. #' If `-1` is used in any of the dimensions, that dimension is inferred. #' Currently, more than two dimensions not supported. -#' @param nested_type The nested data type to create. [List][DataType_List] only -#' supports 2 dimensions, whereas [Array][DataType_Array] supports an arbitrary -#' number of dimensions. #' @return [Expr][Expr_class]. #' If a single dimension is given, results in an expression of the original data #' type. If a multiple dimensions are given, results in an expression of data @@ -3042,11 +3038,10 @@ Expr_arctanh = use_extendr_wrapper #' # One can specify more than 2 dimensions by using the Array type #' df = pl$DataFrame(foo = 1:12) #' df$select( -#' pl$col("foo")$reshape(c(3, 2, 2), nested_type = pl$Array(pl$Float32, 2)) +#' pl$col("foo")$reshape(c(3, 2, 2)) #' ) -Expr_reshape = function(dimensions, nested_type = pl$List()) { - is_list = nested_type$is_list() - .pr$Expr$reshape(self, dimensions, is_list) |> +Expr_reshape = function(dimensions) { + .pr$Expr$reshape(self, dimensions) |> unwrap("in $reshape():") } diff --git a/R/extendr-wrappers.R b/R/extendr-wrappers.R index 22d82f063..77211a679 100644 --- a/R/extendr-wrappers.R +++ b/R/extendr-wrappers.R @@ -98,7 +98,7 @@ import_arrow_ipc <- function(path, n_rows, cache, rechunk, row_name, row_index, new_from_ndjson <- function(path, infer_schema_length, batch_size, n_rows, low_memory, rechunk, row_index_name, row_index_offset, ignore_errors) .Call(wrap__new_from_ndjson, path, infer_schema_length, batch_size, n_rows, low_memory, rechunk, row_index_name, row_index_offset, ignore_errors) -new_from_parquet <- function(path, n_rows, cache, parallel, rechunk, row_name, row_index, storage_options, use_statistics, low_memory, hive_partitioning, hive_schema, try_parse_hive_dates, glob, include_file_paths) .Call(wrap__new_from_parquet, path, n_rows, cache, parallel, rechunk, row_name, row_index, storage_options, use_statistics, low_memory, hive_partitioning, hive_schema, try_parse_hive_dates, glob, include_file_paths) +new_from_parquet <- function(path, n_rows, cache, parallel, rechunk, row_name, row_index, storage_options, use_statistics, low_memory, hive_partitioning, schema, hive_schema, try_parse_hive_dates, glob, include_file_paths, allow_missing_columns) .Call(wrap__new_from_parquet, path, n_rows, cache, parallel, rechunk, row_name, row_index, storage_options, use_statistics, low_memory, hive_partitioning, schema, hive_schema, try_parse_hive_dates, glob, include_file_paths, allow_missing_columns) test_rpolarserr <- function() .Call(wrap__test_rpolarserr) @@ -680,7 +680,7 @@ RPolarsExpr$arccosh <- function() .Call(wrap__RPolarsExpr__arccosh, self) RPolarsExpr$arctanh <- function() .Call(wrap__RPolarsExpr__arctanh, self) -RPolarsExpr$reshape <- function(dimensions, is_list) .Call(wrap__RPolarsExpr__reshape, self, dimensions, is_list) +RPolarsExpr$reshape <- function(dimensions) .Call(wrap__RPolarsExpr__reshape, self, dimensions) RPolarsExpr$shuffle <- function(seed) .Call(wrap__RPolarsExpr__shuffle, self, seed) diff --git a/R/io_parquet.R b/R/io_parquet.R index bc8548e97..9a7b13576 100644 --- a/R/io_parquet.R +++ b/R/io_parquet.R @@ -12,11 +12,17 @@ #' @param rechunk In case of reading multiple files via a glob pattern, rechunk #' the final DataFrame into contiguous memory chunks. #' @param glob Expand path given via globbing rules. +#' @param schema Specify the datatypes of the columns. The datatypes must match the datatypes in the file(s). +#' If there are extra columns that are not in the file(s), consider also enabling `allow_missing_columns`. #' @param use_statistics Use statistics in the parquet file to determine if pages #' can be skipped from reading. #' @param storage_options Experimental. List of options necessary to scan #' parquet files from different cloud storage providers (GCP, AWS, Azure, #' HuggingFace). See the 'Details' section. +#' @param allow_missing_columns When reading a list of parquet files, if a column existing in the first +#' file cannot be found in subsequent files, the default behavior is to raise an error. +#' However, if `allow_missing_columns` is set to `TRUE`, a full-NULL column is returned +#' instead of erroring for the files that do not contain the column. #' #' @rdname IO_scan_parquet #' @details @@ -101,12 +107,14 @@ pl_scan_parquet = function( hive_schema = NULL, try_parse_hive_dates = TRUE, glob = TRUE, + schema = NULL, rechunk = FALSE, low_memory = FALSE, storage_options = NULL, use_statistics = TRUE, cache = TRUE, - include_file_paths = NULL) { + include_file_paths = NULL, + allow_missing_columns = FALSE) { new_from_parquet( path = source, n_rows = n_rows, @@ -122,7 +130,9 @@ pl_scan_parquet = function( try_parse_hive_dates = try_parse_hive_dates, storage_options = storage_options, glob = glob, - include_file_paths = include_file_paths + schema = schema, + include_file_paths = include_file_paths, + allow_missing_columns = allow_missing_columns ) |> unwrap("in pl$scan_parquet():") } @@ -162,12 +172,14 @@ pl_read_parquet = function( hive_schema = NULL, try_parse_hive_dates = TRUE, glob = TRUE, + schema = NULL, rechunk = TRUE, low_memory = FALSE, storage_options = NULL, use_statistics = TRUE, cache = TRUE, - include_file_paths = NULL) { + include_file_paths = NULL, + allow_missing_columns = FALSE) { .args = as.list(environment()) result({ do.call(pl$scan_parquet, .args)$collect() diff --git a/man/Expr_approx_n_unique.Rd b/man/Expr_approx_n_unique.Rd index 43c44fa75..553bb0f5b 100644 --- a/man/Expr_approx_n_unique.Rd +++ b/man/Expr_approx_n_unique.Rd @@ -13,6 +13,5 @@ Expr This is done using the HyperLogLog++ algorithm for cardinality estimation. } \examples{ -as_polars_df(iris[, 4:5])$ - with_columns(count = pl$col("Species")$approx_n_unique()) +as_polars_df(mtcars)$select(count = pl$col("cyl")$approx_n_unique()) } diff --git a/man/Expr_reshape.Rd b/man/Expr_reshape.Rd index 77c299a88..ae66db8f2 100644 --- a/man/Expr_reshape.Rd +++ b/man/Expr_reshape.Rd @@ -4,16 +4,12 @@ \alias{Expr_reshape} \title{Reshape this Expr to a flat Series or a Series of Lists} \usage{ -Expr_reshape(dimensions, nested_type = pl$List()) +Expr_reshape(dimensions) } \arguments{ \item{dimensions}{A integer vector of length of the dimension size. If \code{-1} is used in any of the dimensions, that dimension is inferred. Currently, more than two dimensions not supported.} - -\item{nested_type}{The nested data type to create. \link[=DataType_List]{List} only -supports 2 dimensions, whereas \link[=DataType_Array]{Array} supports an arbitrary -number of dimensions.} } \value{ \link[=Expr_class]{Expr}. @@ -37,6 +33,6 @@ df$select(pl$col("foo")$reshape(c(3, -1))) # One can specify more than 2 dimensions by using the Array type df = pl$DataFrame(foo = 1:12) df$select( - pl$col("foo")$reshape(c(3, 2, 2), nested_type = pl$Array(pl$Float32, 2)) + pl$col("foo")$reshape(c(3, 2, 2)) ) } diff --git a/man/IO_read_parquet.Rd b/man/IO_read_parquet.Rd index 97f2519f4..67bd34954 100644 --- a/man/IO_read_parquet.Rd +++ b/man/IO_read_parquet.Rd @@ -15,12 +15,14 @@ pl_read_parquet( hive_schema = NULL, try_parse_hive_dates = TRUE, glob = TRUE, + schema = NULL, rechunk = TRUE, low_memory = FALSE, storage_options = NULL, use_statistics = TRUE, cache = TRUE, - include_file_paths = NULL + include_file_paths = NULL, + allow_missing_columns = FALSE ) } \arguments{ @@ -55,6 +57,9 @@ types.} \item{glob}{Expand path given via globbing rules.} +\item{schema}{Specify the datatypes of the columns. The datatypes must match the datatypes in the file(s). +If there are extra columns that are not in the file(s), consider also enabling \code{allow_missing_columns}.} + \item{rechunk}{In case of reading multiple files via a glob pattern, rechunk the final DataFrame into contiguous memory chunks.} @@ -71,6 +76,11 @@ can be skipped from reading.} \item{include_file_paths}{Include the path of the source file(s) as a column with this name.} + +\item{allow_missing_columns}{When reading a list of parquet files, if a column existing in the first +file cannot be found in subsequent files, the default behavior is to raise an error. +However, if \code{allow_missing_columns} is set to \code{TRUE}, a full-NULL column is returned +instead of erroring for the files that do not contain the column.} } \value{ \link[=DataFrame_class]{DataFrame} diff --git a/man/IO_scan_parquet.Rd b/man/IO_scan_parquet.Rd index b8517db4c..089947bdb 100644 --- a/man/IO_scan_parquet.Rd +++ b/man/IO_scan_parquet.Rd @@ -15,12 +15,14 @@ pl_scan_parquet( hive_schema = NULL, try_parse_hive_dates = TRUE, glob = TRUE, + schema = NULL, rechunk = FALSE, low_memory = FALSE, storage_options = NULL, use_statistics = TRUE, cache = TRUE, - include_file_paths = NULL + include_file_paths = NULL, + allow_missing_columns = FALSE ) } \arguments{ @@ -55,6 +57,9 @@ types.} \item{glob}{Expand path given via globbing rules.} +\item{schema}{Specify the datatypes of the columns. The datatypes must match the datatypes in the file(s). +If there are extra columns that are not in the file(s), consider also enabling \code{allow_missing_columns}.} + \item{rechunk}{In case of reading multiple files via a glob pattern, rechunk the final DataFrame into contiguous memory chunks.} @@ -71,6 +76,11 @@ can be skipped from reading.} \item{include_file_paths}{Include the path of the source file(s) as a column with this name.} + +\item{allow_missing_columns}{When reading a list of parquet files, if a column existing in the first +file cannot be found in subsequent files, the default behavior is to raise an error. +However, if \code{allow_missing_columns} is set to \code{TRUE}, a full-NULL column is returned +instead of erroring for the files that do not contain the column.} } \value{ \link[=LazyFrame_class]{LazyFrame} diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 8d5400af1..a005509ed 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.22.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "adler32" @@ -98,21 +98,21 @@ checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" [[package]] name = "arrayref" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -121,9 +121,9 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -164,9 +164,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "avro-schema" @@ -184,17 +184,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.73" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -223,9 +223,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.3" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9ec96fe9a81b5e365f9db71fe00edc4fe4ca2cc7dcb7861f0603012a7caa210" +checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" dependencies = [ "arrayref", "arrayvec", @@ -272,18 +272,18 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.3" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "102087e286b4677862ea56cf8fc58bb2cdfa8725c40ffb80fe3a008eb7f2fc83" +checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" dependencies = [ "proc-macro2", "quote", @@ -298,9 +298,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" [[package]] name = "castaway" @@ -313,9 +313,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.11" +version = "1.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fb8dd288a69fc53a1996d7ecfbf4a20d59065bff137ce7e56bbd620de191189" +checksum = "e3788d6ac30243803df38a3e9991cf37e41210232916d41a8222ae378f912624" dependencies = [ "jobserver", "libc", @@ -328,6 +328,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.38" @@ -363,11 +369,38 @@ dependencies = [ "phf_codegen", ] +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" dependencies = [ "cc", ] @@ -401,9 +434,9 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" +checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "core-foundation" @@ -510,6 +543,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -621,15 +660,15 @@ checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "libz-ng-sys", @@ -638,9 +677,9 @@ dependencies = [ [[package]] name = "float-cmp" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8" dependencies = [ "num-traits", ] @@ -663,6 +702,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -684,9 +729,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -699,9 +744,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -709,15 +754,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -726,15 +771,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", @@ -743,21 +788,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -809,9 +854,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.29.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -821,9 +866,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -838,13 +883,23 @@ dependencies = [ "tracing", ] +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + [[package]] name = "halfbrown" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8588661a8607108a5ca69cab034063441a0413a0b041c13618a7dd348021ef6f" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", "serde", ] @@ -860,6 +915,19 @@ dependencies = [ "serde", ] +[[package]] +name = "hashbrown" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "rayon", + "serde", +] + [[package]] name = "heck" version = "0.4.1" @@ -929,9 +997,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "humantime" @@ -941,9 +1009,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", @@ -961,9 +1029,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http", @@ -979,9 +1047,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -992,16 +1060,15 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1038,15 +1105,21 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.0", "serde", ] +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + [[package]] name = "ipc-channel" version = "0.18.3" @@ -1068,9 +1141,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "itertools" @@ -1124,9 +1197,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -1148,70 +1221,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lexical-core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" -dependencies = [ - "lexical-parse-float", - "lexical-parse-integer", - "lexical-util", - "lexical-write-float", - "lexical-write-integer", -] - -[[package]] -name = "lexical-parse-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" -dependencies = [ - "lexical-parse-integer", - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-parse-integer" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" -dependencies = [ - "lexical-util", - "static_assertions", -] - -[[package]] -name = "lexical-util" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" -dependencies = [ - "static_assertions", -] - -[[package]] -name = "lexical-write-float" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" -dependencies = [ - "lexical-util", - "lexical-write-integer", - "static_assertions", -] - -[[package]] -name = "lexical-write-integer" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" -dependencies = [ - "lexical-util", - "static_assertions", -] - [[package]] name = "libR-sys" version = "0.6.0" @@ -1220,9 +1229,9 @@ checksum = "a34aaa68a201f71eab5df5a67d1326add8aaf029434e939353bcab0534919ff1" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libflate" @@ -1246,9 +1255,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libmimalloc-sys" @@ -1262,9 +1271,9 @@ dependencies = [ [[package]] name = "libz-ng-sys" -version = "1.1.15" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6409efc61b12687963e602df8ecf70e8ddacf95bc6576bcf16e3ac6328083c5" +checksum = "8f0f7295a34685977acb2e8cc8b08ee4a8dffd6cf278eeccddbe1ed55ba815d5" dependencies = [ "cmake", "libc", @@ -1309,19 +1318,18 @@ dependencies = [ [[package]] name = "lz4" -version = "1.26.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958b4caa893816eea05507c20cfe47574a43d9a697138a7872990bba8a0ece68" +checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.10.0" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -1371,6 +1379,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + [[package]] name = "mimalloc" version = "0.1.43" @@ -1388,11 +1405,11 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -1510,9 +1527,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.3" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] @@ -1589,16 +1606,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "parquet-format-safe" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f" -dependencies = [ - "async-trait", - "futures", -] - [[package]] name = "parse-zoneinfo" version = "0.3.1" @@ -1658,31 +1665,11 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.87", -] - [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -1692,9 +1679,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "planus" @@ -1707,8 +1694,8 @@ dependencies = [ [[package]] name = "polars" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "getrandom", "polars-arrow", @@ -1727,8 +1714,8 @@ dependencies = [ [[package]] name = "polars-arrow" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "atoi", @@ -1741,9 +1728,8 @@ dependencies = [ "either", "ethnum", "fast-float", - "futures", "getrandom", - "hashbrown", + "hashbrown 0.15.0", "itoa", "itoap", "lz4", @@ -1759,6 +1745,7 @@ dependencies = [ "simdutf8", "streaming-iterator", "strength_reduce", + "strum_macros", "version_check", "zstd", ] @@ -1775,8 +1762,8 @@ dependencies = [ [[package]] name = "polars-compute" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "bytemuck", "either", @@ -1790,8 +1777,8 @@ dependencies = [ [[package]] name = "polars-core" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "bitflags", @@ -1800,7 +1787,8 @@ dependencies = [ "chrono-tz", "comfy-table", "either", - "hashbrown", + "hashbrown 0.14.5", + "hashbrown 0.15.0", "indexmap", "ndarray", "num-traits", @@ -1817,31 +1805,34 @@ dependencies = [ "regex", "serde", "serde_json", - "thiserror 1.0.68", + "strum_macros", + "thiserror 1.0.66", "version_check", "xxhash-rust", ] [[package]] name = "polars-error" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "avro-schema", "object_store", "polars-arrow-format", "regex", "simdutf8", - "thiserror 1.0.68", + "thiserror 1.0.66", ] [[package]] name = "polars-expr" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "bitflags", + "hashbrown 0.15.0", + "num-traits", "once_cell", "polars-arrow", "polars-compute", @@ -1849,15 +1840,17 @@ dependencies = [ "polars-io", "polars-ops", "polars-plan", + "polars-row", "polars-time", "polars-utils", + "rand", "rayon", ] [[package]] name = "polars-io" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "async-trait", @@ -1871,7 +1864,7 @@ dependencies = [ "fs4", "futures", "glob", - "hashbrown", + "hashbrown 0.15.0", "home", "itoa", "memchr", @@ -1888,6 +1881,7 @@ dependencies = [ "polars-schema", "polars-time", "polars-utils", + "pyo3", "rayon", "regex", "reqwest", @@ -1904,14 +1898,14 @@ dependencies = [ [[package]] name = "polars-json" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "chrono", "chrono-tz", "fallible-streaming-iterator", - "hashbrown", + "hashbrown 0.15.0", "indexmap", "itoa", "num-traits", @@ -1925,8 +1919,8 @@ dependencies = [ [[package]] name = "polars-lazy" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "bitflags", @@ -1942,6 +1936,7 @@ dependencies = [ "polars-ops", "polars-pipe", "polars-plan", + "polars-stream", "polars-time", "polars-utils", "rayon", @@ -1951,8 +1946,8 @@ dependencies = [ [[package]] name = "polars-mem-engine" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "futures", "memmap2", @@ -1966,14 +1961,15 @@ dependencies = [ "polars-plan", "polars-time", "polars-utils", + "pyo3", "rayon", "tokio", ] [[package]] name = "polars-ops" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "aho-corasick", @@ -1983,7 +1979,7 @@ dependencies = [ "chrono", "chrono-tz", "either", - "hashbrown", + "hashbrown 0.15.0", "hex", "indexmap", "jsonpath_lib_polars_vendor", @@ -2000,16 +1996,18 @@ dependencies = [ "rand_distr", "rayon", "regex", + "regex-syntax 0.8.5", "serde", "serde_json", + "strum_macros", "unicode-reverse", "version_check", ] [[package]] name = "polars-parquet" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "async-stream", @@ -2019,13 +2017,13 @@ dependencies = [ "ethnum", "flate2", "futures", - "hashbrown", + "hashbrown 0.15.0", "lz4", "num-traits", - "parquet-format-safe", "polars-arrow", "polars-compute", "polars-error", + "polars-parquet-format", "polars-utils", "serde", "simdutf8", @@ -2034,16 +2032,26 @@ dependencies = [ "zstd", ] +[[package]] +name = "polars-parquet-format" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c025243dcfe8dbc57e94d9f82eb3bef10b565ab180d5b99bed87fd8aea319ce1" +dependencies = [ + "async-trait", + "futures", +] + [[package]] name = "polars-pipe" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "crossbeam-channel", "crossbeam-queue", "enum_dispatch", "futures", - "hashbrown", + "hashbrown 0.15.0", "num-traits", "polars-arrow", "polars-compute", @@ -2062,8 +2070,8 @@ dependencies = [ [[package]] name = "polars-plan" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "bitflags", @@ -2071,10 +2079,12 @@ dependencies = [ "bytes", "chrono", "chrono-tz", + "ciborium", "either", "futures", - "hashbrown", + "hashbrown 0.15.0", "memmap2", + "num-traits", "once_cell", "percent-encoding", "polars-arrow", @@ -2085,6 +2095,7 @@ dependencies = [ "polars-parquet", "polars-time", "polars-utils", + "pyo3", "rayon", "recursive", "regex", @@ -2095,8 +2106,8 @@ dependencies = [ [[package]] name = "polars-row" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "bytemuck", "polars-arrow", @@ -2106,8 +2117,8 @@ dependencies = [ [[package]] name = "polars-schema" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "indexmap", "polars-error", @@ -2118,8 +2129,8 @@ dependencies = [ [[package]] name = "polars-sql" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "hex", "once_cell", @@ -2137,10 +2148,38 @@ dependencies = [ "sqlparser", ] +[[package]] +name = "polars-stream" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" +dependencies = [ + "atomic-waker", + "crossbeam-deque", + "crossbeam-utils", + "futures", + "memmap2", + "parking_lot", + "pin-project-lite", + "polars-core", + "polars-error", + "polars-expr", + "polars-io", + "polars-mem-engine", + "polars-parquet", + "polars-plan", + "polars-utils", + "rand", + "rayon", + "recursive", + "slotmap", + "tokio", + "version_check", +] + [[package]] name = "polars-time" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "atoi", "bytemuck", @@ -2155,24 +2194,26 @@ dependencies = [ "polars-utils", "regex", "serde", + "strum_macros", ] [[package]] name = "polars-utils" -version = "0.43.1" -source = "git+https://github.com/pola-rs/polars.git?rev=54218e7e35e3defd4b0801e820c56eea6b91e525#54218e7e35e3defd4b0801e820c56eea6b91e525" +version = "0.44.2" +source = "git+https://github.com/pola-rs/polars.git?rev=2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8#2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" dependencies = [ "ahash", "bytemuck", "bytes", "compact_str", - "hashbrown", + "hashbrown 0.15.0", "indexmap", "libc", "memmap2", "num-traits", "once_cell", "polars-error", + "pyo3", "raw-cpuid", "rayon", "serde", @@ -2181,6 +2222,12 @@ dependencies = [ "version_check", ] +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + [[package]] name = "ppv-lite86" version = "0.2.20" @@ -2192,27 +2239,90 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" dependencies = [ "cc", ] +[[package]] +name = "pyo3" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "parking_lot", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn 2.0.87", +] + [[package]] name = "quick-xml" -version = "0.36.1" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" +checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", "serde", @@ -2220,9 +2330,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", @@ -2231,7 +2341,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 1.0.68", + "thiserror 1.0.66", "tokio", "tracing", ] @@ -2248,36 +2358,37 @@ dependencies = [ "rustc-hash", "rustls", "slab", - "thiserror 1.0.68", + "thiserror 1.0.66", "tinyvec", "tracing", ] [[package]] name = "quinn-udp" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" +checksum = "e346e016eacfff12233c243718197ca12f148c84e1e84268a896699b41c71780" dependencies = [ + "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] [[package]] name = "r-polars" -version = "0.43.1" +version = "0.44.0" dependencies = [ "either", "extendr-api", @@ -2340,9 +2451,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.1.0" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9ee317cfe3fbd54b36a511efc1edd42e216903c9cd575e686dd68a2ba90d8d" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ "bitflags", ] @@ -2395,9 +2506,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ "bitflags", ] @@ -2424,14 +2535,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "regex-automata 0.4.8", + "regex-syntax 0.8.5", ] [[package]] @@ -2445,13 +2556,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.4", + "regex-syntax 0.8.5", ] [[package]] @@ -2462,15 +2573,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" dependencies = [ "base64", "bytes", @@ -2508,7 +2619,7 @@ dependencies = [ "wasm-bindgen-futures", "wasm-streams", "web-sys", - "winreg", + "windows-registry", ] [[package]] @@ -2546,9 +2657,9 @@ checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" dependencies = [ "bitflags", "errno", @@ -2559,9 +2670,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" dependencies = [ "once_cell", "ring", @@ -2573,9 +2684,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88d6d420651b496bdd98684116959239430022a115c1240e6c3993be0b15fba" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -2586,25 +2697,24 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.1.3" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" dependencies = [ - "base64", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" +checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ "ring", "rustls-pki-types", @@ -2613,9 +2723,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" [[package]] name = "ryu" @@ -2634,11 +2744,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2668,9 +2778,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -2738,14 +2848,13 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simd-json" -version = "0.13.10" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570c430b3d902ea083097e853263ae782dfe40857d93db019a12356c8e8143fa" +checksum = "b1df0290e9bfe79ddd5ff8798ca887cd107b75353d2957efe9777296e17f26b5" dependencies = [ "ahash", "getrandom", "halfbrown", - "lexical-core", "once_cell", "ref-cast", "serde", @@ -2756,9 +2865,9 @@ dependencies = [ [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" @@ -2775,6 +2884,15 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -2850,15 +2968,15 @@ dependencies = [ [[package]] name = "stacker" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" dependencies = [ "cc", "cfg-if", "libc", "psm", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2949,12 +3067,15 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "sysinfo" -version = "0.31.2" +version = "0.31.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4115055da5f572fff541dd0c4e61b0262977f453cc9fe04be83aba25a89bdab" +checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" dependencies = [ "core-foundation-sys", "libc", @@ -2969,11 +3090,17 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1bbb9f3c5c463a01705937a24fdabc5047929ac764b2d5b9cf681c1f5041ed5" +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + [[package]] name = "tempfile" -version = "3.12.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -2984,11 +3111,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.68" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" +checksum = "5d171f59dbaa811dbbb1aee1e73db92ec2b122911a48e1390dfe327a821ddede" dependencies = [ - "thiserror-impl 1.0.68", + "thiserror-impl 1.0.66", ] [[package]] @@ -3002,9 +3129,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.68" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" +checksum = "b08be0f17bd307950653ce45db00cd31200d82b624b36e181337d9c7d92765b5" dependencies = [ "proc-macro2", "quote", @@ -3049,9 +3176,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -3087,9 +3214,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", @@ -3098,27 +3225,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" version = "0.3.3" @@ -3200,21 +3306,21 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] @@ -3230,15 +3336,21 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" + +[[package]] +name = "unindent" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "untrusted" @@ -3259,9 +3371,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -3274,9 +3386,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-trait" -version = "0.8.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dad8db98c1e677797df21ba03fca7d3bf9bec3ca38db930954e4fe6e1ea27eb4" +checksum = "9170e001f458781e92711d2ad666110f153e4e50bfd5cbd02db6547625714187" dependencies = [ "float-cmp", "halfbrown", @@ -3317,9 +3429,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", "once_cell", @@ -3328,9 +3440,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", @@ -3343,9 +3455,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -3355,9 +3467,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3365,9 +3477,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", @@ -3378,15 +3490,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-streams" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -3397,9 +3509,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -3543,6 +3655,17 @@ dependencies = [ "syn 2.0.87", ] +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -3571,15 +3694,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -3719,16 +3833,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "xxhash-rust" version = "0.8.12" diff --git a/src/rust/Cargo.toml b/src/rust/Cargo.toml index e9d9690f4..538f59f01 100644 --- a/src/rust/Cargo.toml +++ b/src/rust/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "r-polars" -version = "0.43.1" +version = "0.44.0" edition = "2021" -rust-version = "1.80.0" +rust-version = "1.82.0" publish = false [lib] @@ -50,8 +50,8 @@ serde_json = "*" smartstring = "1.0.1" state = "0.6.0" thiserror = "2.0.3" -polars-core = { git = "https://github.com/pola-rs/polars.git", rev = "54218e7e35e3defd4b0801e820c56eea6b91e525", default-features = false } -polars-lazy = { git = "https://github.com/pola-rs/polars.git", rev = "54218e7e35e3defd4b0801e820c56eea6b91e525", default-features = false } +polars-core = { git = "https://github.com/pola-rs/polars.git", rev = "2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8", default-features = false } +polars-lazy = { git = "https://github.com/pola-rs/polars.git", rev = "2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8", default-features = false } either = "1" [dependencies.polars] @@ -161,4 +161,4 @@ features = [ "zip_with", ] git = "https://github.com/pola-rs/polars.git" -rev = "54218e7e35e3defd4b0801e820c56eea6b91e525" +rev = "2dce3d3b5c80ae7522a3435f844fac8fed9dc9e8" diff --git a/src/rust/src/arrow_interop/to_rust.rs b/src/rust/src/arrow_interop/to_rust.rs index 949b5e269..975f3298b 100644 --- a/src/rust/src/arrow_interop/to_rust.rs +++ b/src/rust/src/arrow_interop/to_rust.rs @@ -80,28 +80,32 @@ pub unsafe fn to_rust_df(rb: Robj) -> Result { // for instance utf8 -> large-utf8 // dict encoded to categorical - let series_vec = if run_parallel { + let columns = if run_parallel { POOL.install(|| { arrays_vec .into_par_iter() .zip(names.par_iter()) .map(|(arr, name)| { - let s = - Series::try_from((name.clone(), arr)).map_err(|err| err.to_string())?; + let s = Series::try_from((name.clone(), arr)) + .map_err(|err| err.to_string())? + .into_column(); Ok(s) }) .collect::, String>>() }) } else { let iter = arrays_vec.into_iter().zip(names.iter()).map(|(arr, name)| { - let s = Series::try_from((name.clone(), arr)).map_err(|err| err.to_string())?; + let s = Series::try_from((name.clone(), arr)) + .map_err(|err| err.to_string())? + .into_column(); Ok(s) }); crate::utils::collect_hinted_result(n_columns, iter) }?; // no need to check as a record batch has the same guarantees - let df_res: Result<_, String> = Ok(DataFrame::new_no_checks(series_vec)); + let df_res: Result<_, String> = + Ok(unsafe { DataFrame::new_no_checks_height_from_first(columns) }); df_res }); let dfs = crate::utils::collect_hinted_result(rb_len, dfs_iter)?; diff --git a/src/rust/src/conversion_r_to_s.rs b/src/rust/src/conversion_r_to_s.rs index cc070fbf6..45e109e13 100644 --- a/src/rust/src/conversion_r_to_s.rs +++ b/src/rust/src/conversion_r_to_s.rs @@ -238,7 +238,7 @@ fn recursive_robjname2series_tree(x: &Robj, name: &str) -> pl::PolarsResult pl::PolarsResult String + Send + Sync>; @@ -452,17 +451,7 @@ impl RPolarsExpr { } pub fn reinterpret(&self, signed: bool) -> RPolarsExpr { - use crate::utils::reinterpret; - let function = move |s: pl::Series| reinterpret(&s, signed).map(Some); - let dt = if signed { - pl::DataType::Int64 - } else { - pl::DataType::UInt64 - }; - self.clone() - .0 - .map(function, pl::GetOutput::from_type(dt)) - .into() + self.0.clone().reinterpret(signed).into() } pub fn interpolate(&self, method: Robj) -> RResult { @@ -643,7 +632,7 @@ impl RPolarsExpr { weights, min_periods, center, - Some(Arc::new(pl::RollingVarParams { ddof }) as Arc), + Some(pl::RollingFnParams::Var(pl::RollingVarParams { ddof })), )?) .into()) } @@ -667,7 +656,7 @@ impl RPolarsExpr { window_size, min_periods, closed, - Some(Arc::new(pl::RollingVarParams { ddof }) as Arc), + Some(pl::RollingFnParams::Var(pl::RollingVarParams { ddof })), )?, ) .into()) @@ -692,7 +681,7 @@ impl RPolarsExpr { weights, min_periods, center, - Some(Arc::new(pl::RollingVarParams { ddof }) as Arc), + Some(pl::RollingFnParams::Var(pl::RollingVarParams { ddof })), )?) .into()) } @@ -716,7 +705,7 @@ impl RPolarsExpr { window_size, min_periods, closed, - Some(Arc::new(pl::RollingVarParams { ddof }) as Arc), + Some(pl::RollingFnParams::Var(pl::RollingVarParams { ddof })), )?, ) .into()) @@ -918,15 +907,9 @@ impl RPolarsExpr { self.clone().0.arctanh().into() } - pub fn reshape(&self, dimensions: Robj, is_list: Robj) -> RResult { + pub fn reshape(&self, dimensions: Robj) -> RResult { let dimensions = robj_to!(Vec, i64, dimensions)?; - let is_list = robj_to!(bool, is_list)?; - let nested = if is_list { - NestedType::List - } else { - NestedType::Array - }; - Ok(self.0.clone().reshape(&dimensions, nested).into()) + Ok(self.0.clone().reshape(&dimensions).into()) } pub fn shuffle(&self, seed: Robj) -> RResult { @@ -1023,7 +1006,9 @@ impl RPolarsExpr { if s.len() == 1 { Ok(Some(s.new_from_index(0, n))) } else { - RPolarsSeries(s).rep_impl(n, rechunk).map(|s| Some(s.0)) + RPolarsSeries(s.as_materialized_series().clone()) + .rep_impl(n, rechunk) + .map(|s| Some(s.0.into())) } }, pl::GetOutput::same_type(), @@ -1266,13 +1251,15 @@ impl RPolarsExpr { let s: pl::PlSmallStr = s.into(); s }); - f + pl::NameGenerator(f) }); let ub = robj_to!(usize, upper_bound)?; Ok(RPolarsExpr(self.0.clone().list().to_struct( - width_strat, - fields, - ub, + pl::ListToStructArgs::InferWidth { + infer_field_strategy: width_strat, + get_index_name: fields, + max_fields: ub, + }, ))) } @@ -1456,7 +1443,13 @@ impl RPolarsExpr { }); f }); - Ok(RPolarsExpr(self.0.clone().arr().to_struct(fields))) + Ok(RPolarsExpr( + self.0 + .clone() + .arr() + .to_struct(fields) + .map_err(polars_to_rpolars_err)?, + )) } fn arr_shift(&self, n: Robj) -> RResult { @@ -1555,8 +1548,9 @@ impl RPolarsExpr { .0 .map( |s| { - s.timestamp(pl::TimeUnit::Milliseconds) - .map(|ca| Some((ca / 1000).into_series())) + s.take_materialized_series() + .timestamp(pl::TimeUnit::Milliseconds) + .map(|ca| Some((ca / 1000).into_column())) }, pl::GetOutput::from_type(pl::DataType::Int64), ) @@ -1978,12 +1972,15 @@ impl RPolarsExpr { pub fn map_batches(&self, lambda: Robj, output_type: Robj, agg_list: Robj) -> RResult { // define closure how to request R code evaluated in main thread from a some polars sub thread let par_fn = ParRObj(lambda); - let f = move |s: pl::Series| { + let f = move |col: pl::Column| { let thread_com = ThreadCom::try_from_global(&CONFIG) .expect("polars was thread could not initiate ThreadCommunication to R"); - thread_com.send(RFnSignature::FnSeriesToSeries(par_fn.clone(), s)); + thread_com.send(RFnSignature::FnSeriesToSeries( + par_fn.clone(), + col.as_materialized_series().clone(), + )); let s = thread_com.recv().unwrap_series(); - Ok(Some(s)) + Ok(Some(s.into_column())) }; // set expected type of output from R function @@ -2012,12 +2009,12 @@ impl RPolarsExpr { ) -> RResult { let raw_func = crate::rbackground::serialize_robj(lambda).unwrap(); - let rbgfunc = move |s| { + let rbgfunc = move |col: pl::Column| { crate::RBGPOOL - .rmap_series(raw_func.clone(), s) + .rmap_series(raw_func.clone(), col.as_materialized_series().clone()) .map_err(rpolars_to_polars_err)?() .map_err(rpolars_to_polars_err) - .map(Some) + .map(|s| Some(s.into_column())) }; let ot = robj_to!(Option, PLPolarsDataType, output_type)?; @@ -2045,12 +2042,12 @@ impl RPolarsExpr { ) -> Self { let raw_func = crate::rbackground::serialize_robj(lambda).unwrap(); - let rbgfunc = move |s| { + let rbgfunc = move |column: pl::Column| { crate::RBGPOOL - .rmap_series(raw_func.clone(), s) + .rmap_series(raw_func.clone(), column.as_materialized_series().clone()) .map_err(rpolars_to_polars_err)?() .map_err(rpolars_to_polars_err) - .map(Some) + .map(|s| Some(s.into_column())) }; let ot = null_to_opt(output_type).map(|rdt| rdt.0.clone()); @@ -2826,7 +2823,7 @@ pub fn make_rolling_options_fixed_window( weights: Robj, min_periods: Robj, center: Robj, - fn_params: Option>, + fn_params: Option, ) -> RResult { Ok(pl::RollingOptionsFixedWindow { window_size: robj_to!(usize, window_size)?, @@ -2841,7 +2838,7 @@ pub fn make_rolling_options_dynamic_window( window_size: &str, min_periods: Robj, closed_window: Robj, - fn_params: Option>, + fn_params: Option, ) -> RResult { Ok(pl::RollingOptionsDynamicWindow { window_size: Duration::parse(window_size), diff --git a/src/rust/src/rbackground.rs b/src/rust/src/rbackground.rs index 5bb990bcf..f9d500ae4 100644 --- a/src/rust/src/rbackground.rs +++ b/src/rust/src/rbackground.rs @@ -137,6 +137,10 @@ pub fn deserialize_series(bits: &[u8]) -> RResult { let tn = std::any::type_name::(); deserialize_dataframe(bits, None, None)? .get_columns() + .to_vec() + .into_iter() + .map(|c| c.take_materialized_series()) + .collect::>() .split_first() .ok_or(RPolarsErr::new()) .mistyped(tn) diff --git a/src/rust/src/rdataframe/mod.rs b/src/rust/src/rdataframe/mod.rs index 284765aa6..3f9239fac 100644 --- a/src/rust/src/rdataframe/mod.rs +++ b/src/rust/src/rdataframe/mod.rs @@ -28,7 +28,7 @@ use polars_core::utils::arrow; use polars::frame::explode::UnpivotArgsIR; use polars::prelude::pivot::{pivot, pivot_stable}; -pub struct OwnedDataFrameIterator { +pub struct DataFrameStreamIterator { columns: Vec, data_type: arrow::datatypes::ArrowDataType, idx: usize, @@ -36,12 +36,15 @@ pub struct OwnedDataFrameIterator { compat_level: CompatLevel, } -impl OwnedDataFrameIterator { +impl DataFrameStreamIterator { pub fn new(df: polars::frame::DataFrame, compat_level: CompatLevel) -> Self { let schema = df.schema().to_arrow(compat_level); - // TODO: changed when bumping to 0.43.1, might need refactor - let data_type = ArrowDataType::Struct(schema.iter_values().map(|x| x.clone()).collect()); - let vs = df.get_columns().to_vec(); + let data_type = ArrowDataType::Struct(schema.into_iter_values().collect()); + let vs = df + .get_columns() + .iter() + .map(|v| v.as_materialized_series().clone()) + .collect(); Self { columns: vs, data_type, @@ -52,7 +55,7 @@ impl OwnedDataFrameIterator { } } -impl Iterator for OwnedDataFrameIterator { +impl Iterator for DataFrameStreamIterator { type Item = Result, PolarsError>; fn next(&mut self) -> Option { @@ -64,14 +67,14 @@ impl Iterator for OwnedDataFrameIterator { .columns .iter() .map(|s| s.to_arrow(self.idx, self.compat_level)) - .collect(); + .collect::>(); self.idx += 1; - let chunk = arrow::record_batch::RecordBatch::new(batch_cols); let array = arrow::array::StructArray::new( self.data_type.clone(), - chunk.into_arrays(), - std::option::Option::None, + batch_cols[0].len(), + batch_cols, + None, ); Some(std::result::Result::Ok(Box::new(array))) } @@ -139,8 +142,8 @@ impl RPolarsDataFrame { //internal use pub fn new_with_capacity(capacity: i32) -> Self { - let empty_series: Vec = Vec::with_capacity(capacity as usize); - RPolarsDataFrame(pl::DataFrame::new(empty_series).unwrap()) + let empty_cols: Vec = Vec::with_capacity(capacity as usize); + RPolarsDataFrame(pl::DataFrame::new(empty_cols).unwrap()) } //internal use @@ -201,7 +204,13 @@ impl RPolarsDataFrame { } pub fn get_columns(&self) -> List { - let cols = self.0.get_columns().to_vec(); + let cols = self + .0 + .get_columns() + .to_vec() + .into_iter() + .map(|c| c.take_materialized_series()) + .collect(); let vec = unsafe { std::mem::transmute::, Vec>(cols) }; List::from_values(vec) } @@ -296,14 +305,19 @@ impl RPolarsDataFrame { let expr_result = { self.0 .select_at_idx(idx as usize) - .map(|s| RPolarsSeries(s.clone())) + .map(|s| RPolarsSeries(s.as_materialized_series().clone())) .ok_or_else(|| format!("select_at_idx: no series found at idx {:?}", idx)) }; r_result_list(expr_result) } pub fn drop_in_place(&mut self, names: &str) -> RPolarsSeries { - RPolarsSeries(self.0.drop_in_place(names).unwrap()) + RPolarsSeries( + self.0 + .drop_in_place(names) + .unwrap() + .take_materialized_series(), + ) } pub fn select(&self, exprs: Robj) -> RResult { @@ -355,7 +369,7 @@ impl RPolarsDataFrame { let data_type = ArrowDataType::Struct(schema.iter_values().map(|x| x.clone()).collect()); let field = ArrowField::new("".into(), data_type, false); - let iter_boxed = Box::new(OwnedDataFrameIterator::new(self.0.clone(), compat_level)); + let iter_boxed = Box::new(DataFrameStreamIterator::new(self.0.clone(), compat_level)); let mut stream = arrow::ffi::export_iterator(iter_boxed, field); let stream_out_ptr_addr: usize = stream_ptr.parse().unwrap(); let stream_out_ptr = stream_out_ptr_addr as *mut arrow::ffi::ArrowArrayStream; diff --git a/src/rust/src/rdataframe/read_parquet.rs b/src/rust/src/rdataframe/read_parquet.rs index f147d8d48..9b92d91f9 100644 --- a/src/rust/src/rdataframe/read_parquet.rs +++ b/src/rust/src/rdataframe/read_parquet.rs @@ -22,10 +22,12 @@ pub fn new_from_parquet( use_statistics: Robj, low_memory: Robj, hive_partitioning: Robj, + schema: Robj, hive_schema: Robj, try_parse_hive_dates: Robj, glob: Robj, include_file_paths: Robj, + allow_missing_columns: Robj, //retries: Robj // not supported yet, with CloudOptions ) -> RResult { let path = robj_to!(String, path)?; @@ -41,6 +43,8 @@ pub fn new_from_parquet( schema: robj_to!(Option, WrapSchema, hive_schema)?.map(|x| Arc::new(x.0)), try_parse_dates: robj_to!(bool, try_parse_hive_dates)?, }; + let schema = robj_to!(Option, WrapSchema, schema)?; + let allow_missing_columns = robj_to!(bool, allow_missing_columns)?; let args = pl::ScanArgsParquet { n_rows: robj_to!(Option, usize, n_rows)?, cache: robj_to!(bool, cache)?, @@ -50,9 +54,11 @@ pub fn new_from_parquet( low_memory: robj_to!(bool, low_memory)?, cloud_options, use_statistics: robj_to!(bool, use_statistics)?, + schema: schema.map(|x| Arc::new(x.0)), hive_options, glob: robj_to!(bool, glob)?, include_file_paths: robj_to!(Option, String, include_file_paths)?.map(|x| x.into()), + allow_missing_columns, }; pl::LazyFrame::scan_parquet(path, args) diff --git a/src/rust/src/rdatatype.rs b/src/rust/src/rdatatype.rs index 81678433e..e4899f006 100644 --- a/src/rust/src/rdatatype.rs +++ b/src/rust/src/rdatatype.rs @@ -3,7 +3,7 @@ use crate::robj_to; use crate::utils::wrappers::Wrap; use extendr_api::prelude::*; use polars::prelude::{self as pl}; -use polars_core::prelude::QuantileInterpolOptions; +use polars_core::prelude::QuantileMethod; //expose polars DateType in R use crate::rpolarserr::{polars_to_rpolars_err, rerr, RPolarsErr, RResult, WithRctx}; use crate::utils::collect_hinted_result; @@ -370,8 +370,8 @@ pub fn robj_to_unique_keep_strategy(robj: Robj) -> RResult { } } -pub fn robj_to_quantile_interpolation_option(robj: Robj) -> RResult { - use pl::QuantileInterpolOptions::*; +pub fn robj_to_quantile_interpolation_option(robj: Robj) -> RResult { + use pl::QuantileMethod::*; match robj_to_rchoice(robj)?.as_str() { "nearest" => Ok(Nearest), "higher" => Ok(Higher), @@ -480,7 +480,7 @@ pub fn literal_to_any_value(litval: pl::LiteralValue) -> RResult std::result::Result, String> { use pl::*; - pl::DataFrame::default() + let av = pl::DataFrame::default() .lazy() .select(&[e]) .collect() @@ -491,8 +491,8 @@ pub fn expr_to_any_value(e: pl::Expr) -> std::result::Result RResult { diff --git a/src/rust/src/rlib.rs b/src/rust/src/rlib.rs index 86190b638..c7e4bc8dd 100644 --- a/src/rust/src/rlib.rs +++ b/src/rust/src/rlib.rs @@ -8,6 +8,7 @@ use extendr_api::prelude::*; use polars::chunked_array::ops::SortMultipleOptions; use polars::lazy::dsl; use polars::prelude as pl; +use polars::prelude::IntoColumn; use std::result::Result; #[extendr] @@ -236,12 +237,16 @@ fn test_robj_to_rchoice(robj: Robj) -> RResult { #[extendr] fn fold(acc: Robj, lambda: Robj, exprs: Robj) -> RResult { let par_fn = ParRObj(lambda); - let f = move |acc: pl::Series, x: pl::Series| { + let f = move |acc: pl::Column, x: pl::Column| { let thread_com = ThreadCom::try_from_global(&CONFIG) .map_err(|err| pl::polars_err!(ComputeError: err))?; - thread_com.send(RFnSignature::FnTwoSeriesToSeries(par_fn.clone(), acc, x)); + thread_com.send(RFnSignature::FnTwoSeriesToSeries( + par_fn.clone(), + acc.as_materialized_series().clone(), + x.as_materialized_series().clone(), + )); let s = thread_com.recv().unwrap_series(); - Ok(Some(s)) + Ok(Some(s.into_column())) }; Ok(pl::fold_exprs(robj_to!(PLExpr, acc)?, f, robj_to!(Vec, PLExpr, exprs)?).into()) } @@ -249,12 +254,16 @@ fn fold(acc: Robj, lambda: Robj, exprs: Robj) -> RResult { #[extendr] fn reduce(lambda: Robj, exprs: Robj) -> RResult { let par_fn = ParRObj(lambda); - let f = move |acc: pl::Series, x: pl::Series| { + let f = move |acc: pl::Column, x: pl::Column| { let thread_com = ThreadCom::try_from_global(&CONFIG) .map_err(|err| pl::polars_err!(ComputeError: err))?; - thread_com.send(RFnSignature::FnTwoSeriesToSeries(par_fn.clone(), acc, x)); + thread_com.send(RFnSignature::FnTwoSeriesToSeries( + par_fn.clone(), + acc.take_materialized_series(), + x.take_materialized_series(), + )); let s = thread_com.recv().unwrap_series(); - Ok(Some(s)) + Ok(Some(s.into_column())) }; Ok(pl::reduce_exprs(f, robj_to!(Vec, PLExpr, exprs)?).into()) } diff --git a/src/rust/src/series.rs b/src/rust/src/series.rs index 258eecef1..f743987b9 100644 --- a/src/rust/src/series.rs +++ b/src/rust/src/series.rs @@ -20,7 +20,7 @@ use extendr_api::{extendr, prelude::*, rprintln}; use pl::SeriesMethods; use polars::datatypes::*; use polars::prelude as pl; -use polars::prelude::{ArgAgg, IntoSeries}; +use polars::prelude::{ArgAgg, IntoColumn, IntoSeries}; use polars_core::series::IsSorted; pub const R_INT_NA_ENC: i32 = -2147483648; use crate::rpolarserr::polars_to_rpolars_err; @@ -81,7 +81,11 @@ impl From<&RPolarsExpr> for pl::PolarsResult { .map(|df| { df.select_at_idx(0) .cloned() - .unwrap_or_else(|| pl::Series::new_empty("".into(), &pl::DataType::Null)) + .unwrap_or_else(|| { + pl::Series::new_empty("".into(), &pl::DataType::Null).into_column() + }) + .as_materialized_series() + .clone() .into() }) } @@ -704,7 +708,7 @@ impl RPolarsSeries { } pub unsafe fn into_frame(&self) -> RPolarsDataFrame { - RPolarsDataFrame(pl::DataFrame::new_no_checks(vec![self.0.clone()])) + RPolarsDataFrame(self.0.clone().into_frame().clone()) } } diff --git a/tests/testthat/test-as_polars.R b/tests/testthat/test-as_polars.R index 3fa1f482d..81ee9aa3f 100644 --- a/tests/testthat/test-as_polars.R +++ b/tests/testthat/test-as_polars.R @@ -485,7 +485,7 @@ test_that("automatically rechunked for struct array stream from C stream interfa as_polars_series() expect_identical(s_int_exp$n_chunks(), 2) - expect_identical(s_struct_exp$n_chunks(), 1) + expect_identical(s_struct_exp$n_chunks(), 2) expect_identical(s_struct_stable$n_chunks(), 2) }) diff --git a/tests/testthat/test-expr_expr.R b/tests/testthat/test-expr_expr.R index c1c726323..9436c371f 100644 --- a/tests/testthat/test-expr_expr.R +++ b/tests/testthat/test-expr_expr.R @@ -1708,18 +1708,15 @@ test_that("Expr_rolling_*_by", { )$to_data_frame(), expected ) -}) - -test_that("Expr_rolling_*_by only works with date/datetime", { - df = pl$DataFrame(a = 1:6, id = 11:16) - expect_error( - df$select(pl$col("a")$rolling_min_by("id", window_size = "2i")), - "`by` argument of dtype `i32` is not supported" + expect_no_error( + pl$DataFrame(a = 1:6, id = 11:16)$select(pl$col("a")$rolling_min_by("id", window_size = "2i")), ) +}) +test_that("Expr_rolling_*_by error", { expect_error( - df$select(pl$col("a")$rolling_min_by(1, window_size = "2d")), + pl$DataFrame(a = 1:6, id = 11:16)$select(pl$col("a")$rolling_min_by(1, window_size = "2d")), "must be the same length as values column" ) }) @@ -2187,12 +2184,12 @@ test_that("reshape", { expect_true( pl$DataFrame(a = 1:4)$select( pl$col("a")$reshape(c(-1, 2)) - )$dtypes[[1]] == pl$List(pl$Int32) + )$dtypes[[1]] == pl$Array(pl$Int32, 2) ) # One can specify more than 2 dimensions by using the Array type out = pl$DataFrame(foo = 1:12)$select( - pl$col("foo")$reshape(c(3, 2, 2), nested_type = pl$Array(pl$Float32, 2)) + pl$col("foo")$reshape(c(3, 2, 2)) ) # annoying to test schema equivalency with list() expect_snapshot(out$schema)