diff --git a/Cargo.lock b/Cargo.lock index d6b2e8d096..72366f85da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -765,6 +765,12 @@ dependencies = [ "objc2", ] +[[package]] +name = "boxcar" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26c4925bc979b677330a8c7fe7a8c94af2dbb4a2d37b4a20a80d884400f46baa" + [[package]] name = "bracoxide" version = "0.1.6" @@ -1696,18 +1702,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "enum_dispatch" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" -dependencies = [ - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.90", -] - [[package]] name = "env_filter" version = "0.1.2" @@ -4921,11 +4915,12 @@ checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" [[package]] name = "planus" -version = "0.3.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1691dd09e82f428ce8d6310bd6d5da2557c82ff17694d2a32cad7242aea89f" +checksum = "3daf8e3d4b712abe1d690838f6e29fb76b76ea19589c4afa39ec30e12f62af71" dependencies = [ "array-init-cursor", + "hashbrown 0.15.2", ] [[package]] @@ -4953,9 +4948,9 @@ dependencies = [ [[package]] name = "polars" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0c10a02dc15223de108e0625bf152efb8dc3b181c5916b5ee335e40dcda735a" +checksum = "443824f43bca39b178353d6c09e4b44e115b21f107a5654d5f980d20b432a303" dependencies = [ "getrandom 0.2.15", "polars-arrow", @@ -4965,7 +4960,6 @@ dependencies = [ "polars-lazy", "polars-ops", "polars-parquet", - "polars-plan", "polars-sql", "polars-time", "polars-utils", @@ -4974,9 +4968,9 @@ dependencies = [ [[package]] name = "polars-arrow" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef8c08875db45de6f71660ef15a686e459ab0dddae302b2870d66625fd3ba65" +checksum = "809c5340e9e6c16eee5a07585161bae99f903f53af7402075efec23ee75fce5b" dependencies = [ "atoi_simd", "avro-schema", @@ -5006,9 +5000,9 @@ dependencies = [ [[package]] name = "polars-arrow-format" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b0ef2474af9396b19025b189d96e992311e6a47f90c53cd998b36c4c64b84c" +checksum = "863c04c514be005eced7db7053e20d49f7e7a58048a282fa52dfea1fd5434e78" dependencies = [ "planus", "serde", @@ -5016,9 +5010,9 @@ dependencies = [ [[package]] name = "polars-compute" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b54171a366ec0bd3431ce184568e731de14060c20e19f306706cb073e7a98dc1" +checksum = "8b8802ff2cccea01a845ea8267a7600e495747ed109035bb5020c33eb8717ff4" dependencies = [ "atoi_simd", "bytemuck", @@ -5042,11 +5036,12 @@ dependencies = [ [[package]] name = "polars-core" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d13c50b27ed6df2f6a9d156e9a4960e9373bf65fc763e0be2738efa5457d915" +checksum = "3fc3c99d7000be1be11665e1e260b93dc3b927342b9da3b53d9a1ac264e4343d" dependencies = [ "bitflags 2.6.0", + "boxcar", "bytemuck", "chrono", "chrono-tz", @@ -5070,15 +5065,16 @@ dependencies = [ "serde", "serde_json", "strum_macros", + "uuid", "version_check", "xxhash-rust", ] [[package]] name = "polars-error" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa800b7240c7326e54d6b95df8376e3ee760e4cb4170fe38de1f42d14d719ffc" +checksum = "1397c17712e61a55fdd45c033a69f0451fde2973ff2609c22e363e21d68f11ef" dependencies = [ "avro-schema", "object_store", @@ -5091,9 +5087,9 @@ dependencies = [ [[package]] name = "polars-expr" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0f1673599bee079c94d7d7e7e0a31818c7c88060dcf6ec82691a99e1eb5cf9" +checksum = "33d3aa6722c9a3e0b721ec2bcdc4affd9e50e4cb606cd81bb94535a9a5a6ade9" dependencies = [ "bitflags 2.6.0", "hashbrown 0.15.2", @@ -5114,9 +5110,9 @@ dependencies = [ [[package]] name = "polars-io" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db23d90c17ab03ccded685e5a88aa8ee43fd851376463a9533ed56ba66d1538" +checksum = "1a632d442a99821250a8fa66f7d488bf5ee98e5f515e65256b12956cb81fc110" dependencies = [ "async-trait", "atoi_simd", @@ -5161,9 +5157,9 @@ dependencies = [ [[package]] name = "polars-json" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b0fdc69f8a20441b4fbc4843d643d0fa12fcef1b6b27608087ef544c5407f0" +checksum = "cd891735404ebb9d6ace066cfb4b8f6edb321bc841d354a0d917a3a1f2d1ca5b" dependencies = [ "chrono", "chrono-tz", @@ -5183,9 +5179,9 @@ dependencies = [ [[package]] name = "polars-lazy" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03708e73a20fd7ca9fb0003e620daff5c488c9e2b287640289de78c5b135ead7" +checksum = "f4ed0c87bdc8820447a38ae8efdb5a51a5a93e8bd528cffb05d05cf1145e4161" dependencies = [ "bitflags 2.6.0", "chrono", @@ -5200,7 +5196,6 @@ dependencies = [ "polars-json", "polars-mem-engine", "polars-ops", - "polars-pipe", "polars-plan", "polars-stream", "polars-time", @@ -5212,9 +5207,9 @@ dependencies = [ [[package]] name = "polars-mem-engine" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52126424d9612132b0b8b4b995ea25a42d79559d111063ef705a370dfa742d46" +checksum = "675294ddf9174029e48caa4e59b0665ea64bfb784a366b197690895a6ed65c68" dependencies = [ "futures", "memmap2", @@ -5235,9 +5230,9 @@ dependencies = [ [[package]] name = "polars-ops" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e308800c11d5c6d0ddef16186ca026691aedeeb2210d458cdea997520907917" +checksum = "1eb4db68956f857c52eeda072d87644a7b42eac41d55073af94dfac8441af6cf" dependencies = [ "argminmax", "base64 0.22.1", @@ -5274,9 +5269,9 @@ dependencies = [ [[package]] name = "polars-parquet" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e186177e24e217ce5b9bf441028417faeeef01b7e793fa815e1d26a53c38400" +checksum = "7c849c10edd9511ccd4ec4130e283ee3a8b3bb48a7d74ac6354c1c20add81065" dependencies = [ "async-stream", "base64 0.22.1", @@ -5310,38 +5305,11 @@ dependencies = [ "futures", ] -[[package]] -name = "polars-pipe" -version = "0.48.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59780346591510f17e26a2cb7a5f812167e9487163baf6570a53a4fab3e004f3" -dependencies = [ - "crossbeam-channel", - "crossbeam-queue", - "enum_dispatch", - "futures", - "hashbrown 0.15.2", - "num-traits", - "polars-arrow", - "polars-compute", - "polars-core", - "polars-expr", - "polars-io", - "polars-ops", - "polars-plan", - "polars-row", - "polars-utils", - "rayon", - "tokio", - "uuid", - "version_check", -] - [[package]] name = "polars-plan" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfb0432eed610f25f436b519c007d4c6e2607c645ff27324aaaafda34ef51bf" +checksum = "71fb4412c42bf637c2c02a617381c682ed425d9c8e4bd1fcb85cf352ed2a67c6" dependencies = [ "bitflags 2.6.0", "bytemuck", @@ -5373,9 +5341,9 @@ dependencies = [ [[package]] name = "polars-row" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be6a32d19ccae4dad60ef0394972419c771b393d31e1b141a89c69de5b33990" +checksum = "08fb77ac1d37340d9cfe57cf58000cf3d9cce429e10d25066952c6145c684cc0" dependencies = [ "bitflags 2.6.0", "bytemuck", @@ -5387,9 +5355,9 @@ dependencies = [ [[package]] name = "polars-schema" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b56ea2026a869b9bae7d8bd861b420d72e7bca4cf4b757368874577ac666b6" +checksum = "ada7c7e2fbbeffbdd67628cd8a89f02b0a8d21c71d34e297e2463a7c17575203" dependencies = [ "indexmap", "polars-error", @@ -5400,9 +5368,9 @@ dependencies = [ [[package]] name = "polars-sql" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ada7336bd78c67d896f9a13082b02e4a159c6c6fba777dcc152c0b1f126453b" +checksum = "4a8e512b1f05ffda9963fe8f6a7c62dcba86be85218bc033ecdad2802cc1b1a0" dependencies = [ "bitflags 2.6.0", "hex", @@ -5421,9 +5389,9 @@ dependencies = [ [[package]] name = "polars-stream" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d81638ef3da43d632da0250386bf4f042fe514005f2a6d59d9e6118194888eb7" +checksum = "5b0a02d8050acd9b64ed7e36c5bc96f6d4f46a940220f9c0e34c96b51f830f8c" dependencies = [ "async-channel", "async-trait", @@ -5458,9 +5426,9 @@ dependencies = [ [[package]] name = "polars-time" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "706ea1e67d5bfcfd9e5ca59070fb5ad591d42b9729d4a60af1b320e645ea158e" +checksum = "72e84a30110880ffede8d93c085fc429ab1b8bf1acf3d6d489143dd34be374c4" dependencies = [ "atoi_simd", "bytemuck", @@ -5482,9 +5450,9 @@ dependencies = [ [[package]] name = "polars-utils" -version = "0.48.1" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c50cd0dac46936771793eb22cb7aeeef97d6aaa4f832f4209637e73178d39aa" +checksum = "a05e033960552c47fc35afe14d5af5b29696acc97ae5d3c585ebc33c246cc15f" dependencies = [ "bincode", "bytemuck", @@ -5504,11 +5472,9 @@ dependencies = [ "regex", "rmp-serde", "serde", - "serde_ignored", "serde_json", "slotmap", "stacker", - "sysinfo", "version_check", ] @@ -6609,15 +6575,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "serde_ignored" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b516445dac1e3535b6d658a7b528d771153dfb272ed4180ca4617a20550365ff" -dependencies = [ - "serde", -] - [[package]] name = "serde_json" version = "1.0.133" @@ -7922,9 +7879,11 @@ checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9" dependencies = [ "atomic", "getrandom 0.3.1", + "js-sys", "md-5", "serde", "sha1_smol", + "wasm-bindgen", ] [[package]] diff --git a/crates/nu_plugin_polars/Cargo.toml b/crates/nu_plugin_polars/Cargo.toml index 0cdce7c286..85995c530b 100644 --- a/crates/nu_plugin_polars/Cargo.toml +++ b/crates/nu_plugin_polars/Cargo.toml @@ -33,11 +33,11 @@ indexmap = { version = "2.9" } num = { version = "0.4" } serde = { version = "1.0", features = ["derive"] } sqlparser = { version = "0.53" } -polars-io = { version = "0.48", features = ["avro", "cloud", "aws"] } -polars-arrow = { version = "0.48" } -polars-ops = { version = "0.48", features = ["pivot", "cutqcut"] } -polars-plan = { version = "0.48", features = ["regex"] } -polars-utils = { version = "0.48" } +polars-io = { version = "0.49", features = ["avro", "cloud", "aws"] } +polars-arrow = { version = "0.49" } +polars-ops = { version = "0.49", features = ["pivot", "cutqcut"] } +polars-plan = { version = "0.49", features = ["regex"] } +polars-utils = { version = "0.49" } typetag = "0.2" env_logger = "0.11.3" log.workspace = true @@ -93,14 +93,13 @@ features = [ "sign", "strings", "string_to_integer", - "streaming", "timezones", "temporal", "to_dummies", "trigonometry", ] optional = false -version = "0.48" +version = "0.49" [dev-dependencies] nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.105.2" } diff --git a/crates/nu_plugin_polars/src/dataframe/command/aggregation/aggregate.rs b/crates/nu_plugin_polars/src/dataframe/command/aggregation/aggregate.rs index e37bd13034..e6b3f8cef3 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/aggregation/aggregate.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/aggregation/aggregate.rs @@ -202,7 +202,8 @@ fn get_col_name(expr: &Expr) -> Option { | Expr::SubPlan(_, _) | Expr::IndexColumn(_) | Expr::Selector(_) - | Expr::Field(_) => None, + | Expr::Field(_) + | Expr::Eval { .. } => None, } } diff --git a/crates/nu_plugin_polars/src/dataframe/values/nu_expression/mod.rs b/crates/nu_plugin_polars/src/dataframe/values/nu_expression/mod.rs index b4534d07b3..b811cdf877 100644 --- a/crates/nu_plugin_polars/src/dataframe/values/nu_expression/mod.rs +++ b/crates/nu_plugin_polars/src/dataframe/values/nu_expression/mod.rs @@ -365,10 +365,9 @@ pub fn expr_to_value(expr: &Expr, span: Span) -> Result { span, )) } - Expr::RenameAlias { expr, function } => Ok(Value::record( + Expr::RenameAlias { expr, .. } => Ok(Value::record( record! { "expr" => expr_to_value(expr.as_ref(), span)?, - "function" => Value::string(format!("{function:?}"), span), }, span, )), @@ -377,6 +376,7 @@ pub fn expr_to_value(expr: &Expr, span: Span) -> Result { function, output_type, options, + fmt_str, } => { let input: Result, ShellError> = input.iter().map(|e| expr_to_value(e, span)).collect(); @@ -386,22 +386,18 @@ pub fn expr_to_value(expr: &Expr, span: Span) -> Result { "function" => Value::string(format!("{function:?}"), span), "output_type" => Value::string(format!("{output_type:?}"), span), "options" => Value::string(format!("{options:?}"), span), + "fmt_str" => Value::string(format!("{fmt_str:?}"), span), }, span, )) } - Expr::Function { - input, - function, - options, - } => { + Expr::Function { input, function } => { let input: Result, ShellError> = input.iter().map(|e| expr_to_value(e, span)).collect(); Ok(Value::record( record! { "input" => Value::list(input?, span), "function" => Value::string(format!("{function:?}"), span), - "options" => Value::string(format!("{options:?}"), span), }, span, )) @@ -452,13 +448,19 @@ pub fn expr_to_value(expr: &Expr, span: Span) -> Result { // the parameter polars_plan::dsl::selector::Selector is not publicly exposed. // I am not sure what we can meaningfully do with this at this time. Expr::Selector(_) => Err(ShellError::UnsupportedInput { - msg: "Expressions of type Selector to Nu Values is not yet supported".to_string(), + msg: "Expressions of type Selector to Nu Value is not yet supported".to_string(), input: format!("Expression is {expr:?}"), msg_span: span, input_span: Span::unknown(), }), Expr::IndexColumn(_) => Err(ShellError::UnsupportedInput { - msg: "Expressions of type IndexColumn to Nu Values is not yet supported".to_string(), + msg: "Expressions of type IndexColumn to Nu Value is not yet supported".to_string(), + input: format!("Expression is {expr:?}"), + msg_span: span, + input_span: Span::unknown(), + }), + Expr::Eval { .. } => Err(ShellError::UnsupportedInput { + msg: "Expressions of type Eval to Nu Value is not yet supported".to_string(), input: format!("Expression is {expr:?}"), msg_span: span, input_span: Span::unknown(),