pola-rs / r-polars

Bring polars to R
https://pola-rs.github.io/r-polars/
Other
398 stars 35 forks source link

feat!: bump Rust polars to 0.39.0 #1034

Closed eitsupi closed 1 month ago

eitsupi commented 1 month ago

https://github.com/pola-rs/polars/releases/tag/rs-0.39.0

eitsupi commented 1 month ago

12 errors

   error[E0061]: this method takes 2 arguments but 4 arguments were supplied
      --> src/lazy/dataframe.rs:481:14
       |
   481 |             .sort_by_exprs(exprs, descending, nulls_last, maintain_order)
       |              ^^^^^^^^^^^^^                    ----------  -------------- unexpected argument of type `bool`
       |                                               |
       |                                               unexpected argument of type `bool`
       |
   note: expected `SortMultipleOptions`, found `Vec<bool>`
      --> src/lazy/dataframe.rs:481:35
       |
   481 |             .sort_by_exprs(exprs, descending, nulls_last, maintain_order)
       |                                   ^^^^^^^^^^
       = note: expected struct `SortMultipleOptions`
                  found struct `Vec<bool>`
   note: method defined here
      --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-lazy/src/frame/mod.rs:326:12
       |
   326 |     pub fn sort_by_exprs<E: AsRef<[Expr]>>(
       |            ^^^^^^^^^^^^^
   help: remove the extra arguments
       |
   481 -             .sort_by_exprs(exprs, descending, nulls_last, maintain_order)
   481 +             .sort_by_exprs(exprs, /* SortMultipleOptions */)
       |

   error[E0599]: no method named `group_by_rolling` found for struct `LazyFrame` in the current scope
      --> src/lazy/dataframe.rs:627:38
       |
   627 |         let lazy_gb = self.0.clone().group_by_rolling(
       |                       ---------------^^^^^^^^^^^^^^^^
       |
   help: there is a method `group_by` with a similar name, but with different arguments
      --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-lazy/src/frame/mod.rs:917:5
       |
   917 |     pub fn group_by<E: AsRef<[IE]>, IE: Into<Expr> + Clone>(self, by: E) -> LazyGroupBy {
       |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

   error[E0599]: no method named `sort_with` found for enum `Expr` in the current scope
       --> src/lazy/dsl.rs:254:14
        |
   252  | /         self.clone()
   253  | |             .0
   254  | |             .sort_with(SortOptions {
        | |_____________-^^^^^^^^^
        |
   help: there is a method `sort_by` with a similar name, but with different arguments
       --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-plan/src/dsl/mod.rs:1117:5
        |
   1117 | /     pub fn sort_by<E: AsRef<[IE]>, IE: Into<Expr> + Clone>(
   1118 | |         self,
   1119 | |         by: E,
   1120 | |         sort_options: SortMultipleOptions,
   1121 | |     ) -> Expr {
        | |_____________^

   error[E0308]: `?` operator has incompatible types
      --> src/lazy/dsl.rs:310:13
       |
   310 |             robj_to!(Vec, bool, descending)?,
       |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `SortMultipleOptions`, found `Vec<bool>`
       |
       = note: `?` operator cannot convert from `Vec<bool>` to `SortMultipleOptions`
       = note: expected struct `SortMultipleOptions`
                  found struct `Vec<bool>`

   error[E0061]: this method takes 2 arguments but 1 argument was supplied
       --> src/lazy/dsl.rs:1086:31
        |
   1086 |         self.0.clone().list().get(index.clone().0).into()
        |                               ^^^----------------- an argument of type `bool` is missing
        |
   note: method defined here
       --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-plan/src/dsl/list.rs:154:12
        |
   154  |     pub fn get(self, index: Expr, null_on_oob: bool) -> Expr {
        |            ^^^
   help: provide the argument
        |
   1086 |         self.0.clone().list().get(index.clone().0, /* bool */).into()
        |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   error[E0061]: this method takes 2 arguments but 1 argument was supplied
       --> src/lazy/dsl.rs:1251:33
        |
   1251 |         Ok(self.0.clone().arr().get(robj_to!(PLExprCol, index)?).into())
        |                                 ^^^----------------------------- an argument of type `bool` is missing
        |
   note: method defined here
       --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-plan/src/dsl/array.rs:108:12
        |
   108  |     pub fn get(self, index: Expr, null_on_oob: bool) -> Expr {
        |            ^^^
   help: provide the argument
        |
   1251 |         Ok(self.0.clone().arr().get(robj_to!(PLExprCol, index)?, /* bool */).into())
        |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   error[E0308]: `?` operator has incompatible types
       --> src/lazy/dsl.rs:2289:25
        |
   2289 |             .to_integer(robj_to!(u32, radix)?, robj_to!(bool, strict)?)
        |                         ^^^^^^^^^^^^^^^^^^^^^ expected `Expr`, found `u32`
        |
        = note: `?` operator cannot convert from `u32` to `Expr`
   help: call `Into::into` on this expression to convert `u32` into `Expr`
        |
   2289 |             .to_integer(robj_to!(u32, radix)?.into(), robj_to!(bool, strict)?)
        |                                              +++++++

   error[E0560]: struct `ScanArgsIpc` has no field named `memmap`
     --> src/rdataframe/read_ipc.rs:25:9
      |
   25 |         memmap: robj_to!(bool, memmap)?,
      |         ^^^^^^ `ScanArgsIpc` does not have this field
      |
      = note: available fields are: `memory_map`, `cloud_options`

   error[E0560]: struct `ScanArgsParquet` has no field named `hive_partitioning`
     --> src/rdataframe/read_parquet.rs:36:9
      |
   36 |         hive_partitioning: robj_to!(bool, hive_partitioning)?,
      |         ^^^^^^^^^^^^^^^^^ `ScanArgsParquet` does not have this field
      |
      = note: available fields are: `hive_options`

   error[E0308]: mismatched types
      --> src/rlib.rs:391:9
       |
   389 |     Ok(pl::arg_sort_by(
       |        --------------- arguments to this function are incorrect
   390 |         robj_to!(VecPLExprCol, exprs)?,
   391 |         &robj_to!(Vec, bool, descending)?,
       |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `SortMultipleOptions`, found `&Vec<bool>`
       |
       = note: expected struct `SortMultipleOptions`
               found reference `&Vec<bool>`
   note: function defined here
      --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-plan/src/dsl/functions/index.rs:8:8
       |
   8   | pub fn arg_sort_by<E: AsRef<[Expr]>>(by: E, sort_options: SortMultipleOptions) -> Expr {
       |        ^^^^^^^^^^^

   error[E0061]: this method takes 1 argument but 2 arguments were supplied
      --> src/series.rs:109:30
       |
   109 |         RPolarsSeries(self.0.sort(descending, nulls_last))
       |                              ^^^^ ----------  ---------- unexpected argument of type `bool`
       |                                   |
       |                                   expected `SortOptions`, found `bool`
       |
   note: method defined here
      --> /usr/local/cargo/git/checkouts/polars-b0d90607192fd414/37c6303/crates/polars-core/src/series/mod.rs:303:12
       |
   303 |     pub fn sort(&self, sort_options: SortOptions) -> PolarsResult<Self> {
       |            ^^^^
   help: remove the extra argument
       |
   109 -         RPolarsSeries(self.0.sort(descending, nulls_last))
   109 +         RPolarsSeries(self.0.sort(/* SortOptions */))
       |

   error[E0308]: mismatched types
      --> src/series.rs:109:23
       |
   109 |         RPolarsSeries(self.0.sort(descending, nulls_last))
       |         ------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `Series`, found `Result<Series, PolarsError>`
       |         |
       |         arguments to this struct are incorrect
       |
       = note: expected struct `polars::prelude::Series`
                    found enum `Result<polars::prelude::Series, polars::prelude::PolarsError>`
   note: tuple struct defined here
      --> src/series.rs:31:12
       |
   31  | pub struct RPolarsSeries(pub pl::Series);
       |            ^^^^^^^^^^^^^
   help: consider using `Result::expect` to unwrap the `Result<polars::prelude::Series, polars::prelude::PolarsError>` value, panicking if the value is a `Result::Err`
       |
   109 |         RPolarsSeries(self.0.sort(descending, nulls_last).expect("REASON"))
       |                                                          +++++++++++++++++

   Some errors have detailed explanations: E0061, E0308, E0560, E0599.
   For more information about an error, try `rustc --explain E0061`.
eitsupi commented 1 month ago

arr().max() seems buggy. I created an upstream issue pola-rs/polars#15646.

eitsupi commented 1 month ago

This is a pretty tough update.......

I would appreciate it if someone could make the subsequent corrections as I will not be able to spend any more time on this for the next few days.

etiennebacher commented 1 month ago

Thanks, I'll take a look later

eitsupi commented 1 month ago

It seems that the build using nightly toolchain is failing on Windows. Perhaps the toolchain version may have to be changed.......

C:\rtools43\x86_64-w64-mingw32.static.posix\bin/ld.exe: D:/a/r-polars/r-polars/src/rust/target/x86_64-pc-windows-gnu/release-optimized/libr_polars.a(r_polars-384f3f1bc87589c4.r_polars.f3946623e65c3d3c-cgu.0.rcgu.o):r_polars.f3946623e:(.text+0x29a5732): undefined reference to `WakeByAddressSingle'

https://github.com/pola-rs/r-polars/actions/runs/8679648663/job/23798732203?pr=1034#step:7:1027

eitsupi commented 1 month ago

Maybe related to rust-lang/rust#121956?

eitsupi commented 1 month ago

Thanks!