diff --git a/Cargo.lock b/Cargo.lock index 4ac27d4dd8..f219d9a546 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -287,20 +287,11 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "atoi" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" -dependencies = [ - "num-traits", -] - [[package]] name = "atoi_simd" -version = "0.15.6" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9" +checksum = "4790f9e8961209112beb783d85449b508673cf4a6a419c8449b210743ac4dbe9" [[package]] name = "atomic-waker" @@ -671,6 +662,15 @@ dependencies = [ "vsimd", ] +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + [[package]] name = "bindgen" version = "0.70.1" @@ -767,6 +767,17 @@ dependencies = [ "brotli-decompressor", ] +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + [[package]] name = "brotli-decompressor" version = "4.0.1" @@ -802,9 +813,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.20.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] @@ -831,6 +842,9 @@ name = "bytes" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +dependencies = [ + "serde", +] [[package]] name = "bytes-utils" @@ -963,17 +977,6 @@ dependencies = [ "chrono", ] -[[package]] -name = "chrono-tz" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" -dependencies = [ - "chrono", - "chrono-tz-build 0.2.1", - "phf", -] - [[package]] name = "chrono-tz" version = "0.10.0" @@ -981,21 +984,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", - "chrono-tz-build 0.4.0", + "chrono-tz-build", "phf", ] -[[package]] -name = "chrono-tz-build" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" -dependencies = [ - "parse-zoneinfo", - "phf", - "phf_codegen", -] - [[package]] name = "chrono-tz-build" version = "0.4.0" @@ -1016,33 +1008,6 @@ dependencies = [ "stacker", ] -[[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 = "clang-sys" version = "1.8.1" @@ -1083,7 +1048,7 @@ version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.90", @@ -1828,10 +1793,10 @@ dependencies = [ ] [[package]] -name = "fast-float" -version = "0.2.0" +name = "fast-float2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" +checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" [[package]] name = "fastrand" @@ -1893,6 +1858,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -1952,9 +1918,9 @@ dependencies = [ [[package]] name = "fs4" -version = "0.9.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" +checksum = "c29c30684418547d476f0b48e84f4821639119c483b1eccd566c8cd0cd05f521" dependencies = [ "rustix", "windows-sys 0.52.0", @@ -2213,16 +2179,6 @@ 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" @@ -2286,12 +2242,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -2745,12 +2695,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "indoc" -version = "2.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" - [[package]] name = "inotify" version = "0.9.6" @@ -2875,12 +2819,6 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" -[[package]] -name = "itoap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" - [[package]] name = "jobserver" version = "0.1.32" @@ -3060,6 +2998,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "libz-rs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90e19106f1b2c93f1fa6cdeec2e56facbf2e403559c1e1c0ddcc6d46e979cdf" +dependencies = [ + "zlib-rs", +] + [[package]] name = "libz-sys" version = "1.1.20" @@ -3261,22 +3208,13 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.7.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" 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 = "miette" version = "7.4.0" @@ -3409,28 +3347,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "multiversion" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4851161a11d3ad0bf9402d90ffc3967bf231768bfd7aeb61755ad06dbf1a142" -dependencies = [ - "multiversion-macros", - "target-features", -] - -[[package]] -name = "multiversion-macros" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79a74ddee9e0c27d2578323c13905793e91622148f138ba29738f9dddb835e90" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "target-features", -] - [[package]] name = "native-tls" version = "0.2.12" @@ -3645,7 +3561,7 @@ name = "nu-cmd-extra" version = "0.101.1" dependencies = [ "fancy-regex", - "heck 0.5.0", + "heck", "itertools 0.13.0", "nu-ansi-term", "nu-cmd-base", @@ -3707,14 +3623,14 @@ dependencies = [ "alphanumeric-sort", "base64 0.22.1", "bracoxide", - "brotli", + "brotli 6.0.0", "byteorder", "bytesize", "calamine", "chardetng", "chrono", "chrono-humanize", - "chrono-tz 0.10.0", + "chrono-tz", "crossterm 0.28.1", "csv", "data-encoding", @@ -3819,7 +3735,7 @@ dependencies = [ name = "nu-derive-value" version = "0.101.1" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro-error", "proc-macro2", "quote", @@ -4020,14 +3936,14 @@ dependencies = [ name = "nu-protocol" version = "0.101.1" dependencies = [ - "brotli", + "brotli 6.0.0", "bytes", "chrono", "chrono-humanize", "dirs", "dirs-sys", "fancy-regex", - "heck 0.5.0", + "heck", "indexmap", "log", "lru", @@ -4196,10 +4112,10 @@ dependencies = [ "aws-config", "aws-credential-types", "chrono", - "chrono-tz 0.10.0", + "chrono-tz", "env_logger 0.11.5", "fancy-regex", - "hashbrown 0.14.5", + "hashbrown 0.15.2", "indexmap", "log", "mimalloc", @@ -4489,9 +4405,9 @@ dependencies = [ [[package]] name = "object_store" -version = "0.10.2" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6da452820c715ce78221e8202ccc599b4a52f3e1eb3eedb487b680c81a8e3f3" +checksum = "3cfccb68961a56facde1163f9319e0d15743352344e7808a11795fb99698dcaf" dependencies = [ "async-trait", "base64 0.22.1", @@ -4504,7 +4420,7 @@ dependencies = [ "md-5", "parking_lot", "percent-encoding", - "quick-xml 0.36.2", + "quick-xml 0.37.1", "rand", "reqwest", "ring", @@ -4917,9 +4833,9 @@ dependencies = [ [[package]] name = "polars" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f65c6aa86d991a64c95416a61202f7952da2f8cccefa448f9a23c1b8f2301ecc" +checksum = "72571dde488ecccbe799798bf99ab7308ebdb7cf5d95bcc498dbd5a132f0da4d" dependencies = [ "getrandom", "polars-arrow", @@ -4929,6 +4845,7 @@ dependencies = [ "polars-lazy", "polars-ops", "polars-parquet", + "polars-plan", "polars-sql", "polars-time", "polars-utils", @@ -4937,34 +4854,29 @@ dependencies = [ [[package]] name = "polars-arrow" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dbb24d29ddea5abb73d7954df8b8d3d4bb7f02a3e5c96d1519cdad9e816a3d" +checksum = "6611c758d52e799761cc25900666b71552e6c929d88052811bc9daad4b3321a8" dependencies = [ "ahash", - "atoi", "atoi_simd", "avro-schema", "bytemuck", "chrono", - "chrono-tz 0.8.6", + "chrono-tz", "dyn-clone", "either", "ethnum", - "fast-float", "getrandom", "hashbrown 0.15.2", "itoa", - "itoap", "lz4", - "multiversion", "num-traits", "parking_lot", "polars-arrow-format", "polars-error", "polars-schema", "polars-utils", - "ryu", "serde", "simdutf8", "streaming-iterator", @@ -4986,36 +4898,42 @@ dependencies = [ [[package]] name = "polars-compute" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdb1071147452a4c4b25560f23d2fbaffef255b04757291131b22fc2c0d35b2" +checksum = "332f2547dbb27599a8ffe68e56159f5996ba03d1dad0382ccb62c109ceacdeb6" dependencies = [ + "atoi_simd", "bytemuck", + "chrono", "either", + "fast-float2", + "itoa", "num-traits", "polars-arrow", "polars-error", "polars-utils", + "ryu", "strength_reduce", "version_check", ] [[package]] name = "polars-core" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd5df9b55e614088a3270b06f8649dce76537c268d6b1ca4d9c37008b2be5949" +checksum = "796d06eae7e6e74ed28ea54a8fccc584ebac84e6cf0e1e9ba41ffc807b169a01" dependencies = [ "ahash", "bitflags 2.6.0", "bytemuck", "chrono", - "chrono-tz 0.8.6", + "chrono-tz", "comfy-table", "either", "hashbrown 0.14.5", "hashbrown 0.15.2", "indexmap", + "itoa", "num-traits", "once_cell", "polars-arrow", @@ -5031,30 +4949,30 @@ dependencies = [ "serde", "serde_json", "strum_macros", - "thiserror 1.0.69", + "thiserror 2.0.6", "version_check", "xxhash-rust", ] [[package]] name = "polars-error" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4643898a644f30c83737db85f942f8c8956b0c11190b39afec745218eae1746b" +checksum = "19d6529cae0d1db5ed690e47de41fac9b35ae0c26d476830c2079f130887b847" dependencies = [ "avro-schema", "object_store", "polars-arrow-format", "regex", "simdutf8", - "thiserror 1.0.69", + "thiserror 2.0.6", ] [[package]] name = "polars-expr" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea1b431ed816cba1120cff200f06b962748001bbb2e615ce53cfbbdf701cc136" +checksum = "c8e639991a8ad4fb12880ab44bcc3cf44a5703df003142334d9caf86d77d77e7" dependencies = [ "ahash", "bitflags 2.6.0", @@ -5076,9 +4994,9 @@ dependencies = [ [[package]] name = "polars-io" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2fab2c016635cb416b49461fd6419b0208c6c13a4fd065bd65e4a87dbb66314" +checksum = "719a77e94480f6be090512da196e378cbcbeb3584c6fe1134c600aee906e38ab" dependencies = [ "ahash", "async-trait", @@ -5086,8 +5004,8 @@ dependencies = [ "blake3", "bytes", "chrono", - "chrono-tz 0.8.6", - "fast-float", + "chrono-tz", + "fast-float2", "flate2", "fs4", "futures", @@ -5109,7 +5027,6 @@ dependencies = [ "polars-schema", "polars-time", "polars-utils", - "pyo3", "rayon", "regex", "reqwest", @@ -5126,19 +5043,20 @@ dependencies = [ [[package]] name = "polars-json" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5c8c057ef04feaf34b6ce52096bdea3a766fa4725f50442078c8a4ee86397bf" +checksum = "e30603ca81e317b66b4caac683a8325a6a82ea0489685dc37e22ae03720def98" dependencies = [ "ahash", "chrono", - "chrono-tz 0.8.6", + "chrono-tz", "fallible-streaming-iterator", "hashbrown 0.15.2", "indexmap", "itoa", "num-traits", "polars-arrow", + "polars-compute", "polars-error", "polars-utils", "ryu", @@ -5148,12 +5066,13 @@ dependencies = [ [[package]] name = "polars-lazy" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a8ca74f42e7b47cad241b36b98d991cc7fbb51b8d0695a055eb937588d1f310" +checksum = "a0a731a672dfc8ac38c1f73c9a4b2ae38d2fc8ac363bfb64c5f3a3e072ffc5ad" dependencies = [ "ahash", "bitflags 2.6.0", + "chrono", "futures", "memchr", "once_cell", @@ -5176,9 +5095,9 @@ dependencies = [ [[package]] name = "polars-mem-engine" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a32614e5b52c9b83856d80c7e2880b79d83055bfd59969bd1d0b148f9cfdc7a" +checksum = "33442189bcbf2e2559aa7914db3835429030a13f4f18e43af5fba9d1b018cf12" dependencies = [ "futures", "memmap2", @@ -5192,23 +5111,22 @@ dependencies = [ "polars-plan", "polars-time", "polars-utils", - "pyo3", "rayon", "tokio", ] [[package]] name = "polars-ops" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "035c800fbe5bbd820afeb8313713ed345853bb014e0f821a4025d40cf0d60e1a" +checksum = "cbb83218b0c216104f0076cd1a005128be078f958125f3d59b094ee73d78c18e" dependencies = [ "ahash", "argminmax", "base64 0.22.1", "bytemuck", "chrono", - "chrono-tz 0.8.6", + "chrono-tz", "either", "hashbrown 0.15.2", "hex", @@ -5216,6 +5134,7 @@ dependencies = [ "jsonpath_lib_polars_vendor", "memchr", "num-traits", + "once_cell", "polars-arrow", "polars-compute", "polars-core", @@ -5231,20 +5150,21 @@ dependencies = [ "serde", "serde_json", "strum_macros", + "unicode-normalization", "unicode-reverse", "version_check", ] [[package]] name = "polars-parquet" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91dcf1d9f048079376949eaf2e24e240b313ff4a102fb83b57c9a5f807cdca52" +checksum = "5c60ee85535590a38db6c703a21be4cb25342e40f573f070d1e16f9d84a53ac7" dependencies = [ "ahash", "async-stream", "base64 0.22.1", - "brotli", + "brotli 7.0.0", "bytemuck", "ethnum", "flate2", @@ -5276,9 +5196,9 @@ dependencies = [ [[package]] name = "polars-pipe" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05936f2b3981eecb2fe74d8ef092bb75a93d2a056b3e4f339f4ac20c71c9e331" +checksum = "42d238fb76698f56e51ddfa89b135e4eda56a4767c6e8859eed0ab78386fcd52" dependencies = [ "crossbeam-channel", "crossbeam-queue", @@ -5286,6 +5206,7 @@ dependencies = [ "futures", "hashbrown 0.15.2", "num-traits", + "once_cell", "polars-arrow", "polars-compute", "polars-core", @@ -5303,17 +5224,16 @@ dependencies = [ [[package]] name = "polars-plan" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23de436f33f4d1134c58f24e7059a221b957ec20730807e0ef0c80c8e4b3d06a" +checksum = "4f03533a93aa66127fcb909a87153a3c7cfee6f0ae59f497e73d7736208da54c" dependencies = [ "ahash", "bitflags 2.6.0", "bytemuck", "bytes", "chrono", - "chrono-tz 0.8.6", - "ciborium", + "chrono-tz", "either", "futures", "hashbrown 0.15.2", @@ -5322,6 +5242,7 @@ dependencies = [ "once_cell", "percent-encoding", "polars-arrow", + "polars-compute", "polars-core", "polars-io", "polars-json", @@ -5329,7 +5250,6 @@ dependencies = [ "polars-parquet", "polars-time", "polars-utils", - "pyo3", "rayon", "recursive", "regex", @@ -5340,21 +5260,23 @@ dependencies = [ [[package]] name = "polars-row" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3823d3de3e614509bba6929798f1f3d5ae05c1cdfc4eb7029d2ec6ad77201da2" +checksum = "6bf47f7409f8e75328d7d034be390842924eb276716d0458607be0bddb8cc839" dependencies = [ + "bitflags 2.6.0", "bytemuck", "polars-arrow", + "polars-compute", "polars-error", "polars-utils", ] [[package]] name = "polars-schema" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d88667f770291cefa2e8cd366a54f29dc6fe362e9a263914c903db411a58ac1d" +checksum = "416621ae82b84466cf4ff36838a9b0aeb4a67e76bd3065edc8c9cb7da19b1bc7" dependencies = [ "indexmap", "polars-error", @@ -5365,13 +5287,11 @@ dependencies = [ [[package]] name = "polars-sql" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69451f08363bb497407f6ebebe00bc01972a51716d20d115b75f9b5326f1f3c8" +checksum = "edaab553b90aa4d6743bb538978e1982368acb58a94408d7dd3299cad49c7083" dependencies = [ "hex", - "once_cell", - "polars-arrow", "polars-core", "polars-error", "polars-lazy", @@ -5380,16 +5300,16 @@ dependencies = [ "polars-time", "polars-utils", "rand", + "regex", "serde", - "serde_json", "sqlparser", ] [[package]] name = "polars-stream" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "188622b0a4bc4530cf91a288134254ffa065d18932e261075377914225e757c2" +checksum = "498997b656c779610c1496b3d96a59fe569ef22a5b81ccfe5325cb3df8dff2fd" dependencies = [ "atomic-waker", "crossbeam-deque", @@ -5403,6 +5323,7 @@ dependencies = [ "polars-expr", "polars-io", "polars-mem-engine", + "polars-ops", "polars-parquet", "polars-plan", "polars-utils", @@ -5416,21 +5337,24 @@ dependencies = [ [[package]] name = "polars-time" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f36e4d6b19f2c406faea585b9a1814f422fc5b310f65ccf8a55216df0754ef" +checksum = "d192efbdab516d28b3fab1709a969e3385bd5cda050b7c9aa9e2502a01fda879" dependencies = [ - "atoi", + "atoi_simd", "bytemuck", "chrono", - "chrono-tz 0.8.6", + "chrono-tz", "now", + "num-traits", "once_cell", "polars-arrow", + "polars-compute", "polars-core", "polars-error", "polars-ops", "polars-utils", + "rayon", "regex", "serde", "strum_macros", @@ -5438,14 +5362,16 @@ dependencies = [ [[package]] name = "polars-utils" -version = "0.44.2" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96186b70bda00c90b5027bf2f69193c5c40571e80d3e8ec505c22cdc8e3e39aa" +checksum = "a8f6c8166a4a7fbc15b87c81645ed9e1f0651ff2e8c96cafc40ac5bf43441a10" dependencies = [ "ahash", + "bincode", "bytemuck", "bytes", "compact_str 0.8.0", + "flate2", "hashbrown 0.15.2", "indexmap", "libc", @@ -5453,12 +5379,13 @@ dependencies = [ "num-traits", "once_cell", "polars-error", - "pyo3", + "rand", "raw-cpuid", "rayon", "serde", + "serde_json", "stacker", - "sysinfo 0.31.4", + "sysinfo 0.33.1", "version_check", ] @@ -5626,69 +5553,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[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.90", -] - -[[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.90", -] - [[package]] name = "quick-error" version = "1.2.3" @@ -5727,7 +5591,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" dependencies = [ "memchr", - "serde", ] [[package]] @@ -5737,6 +5600,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f22f29bdff3987b4d8632ef95fd6424ec7e4e0a57e2f4fc63e489e75357f6a03" dependencies = [ "memchr", + "serde", ] [[package]] @@ -6824,24 +6688,23 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "snafu" -version = "0.7.5" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" dependencies = [ - "doc-comment", "snafu-derive", ] [[package]] name = "snafu-derive" -version = "0.7.5" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.90", ] [[package]] @@ -6868,9 +6731,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "sqlparser" -version = "0.49.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a404d0e14905361b918cb8afdb73605e25c1d5029312bd9785142dcb3aa49e" +checksum = "05a528114c392209b3264855ad491fcce534b94a38771b0a0b97a79379275ce8" dependencies = [ "log", ] @@ -6987,7 +6850,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -7093,19 +6956,6 @@ dependencies = [ "libc", ] -[[package]] -name = "sysinfo" -version = "0.31.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be" -dependencies = [ - "core-foundation-sys", - "libc", - "memchr", - "ntapi", - "windows 0.57.0", -] - [[package]] name = "sysinfo" version = "0.32.1" @@ -7120,6 +6970,19 @@ dependencies = [ "windows 0.57.0", ] +[[package]] +name = "sysinfo" +version = "0.33.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +dependencies = [ + "core-foundation-sys", + "libc", + "memchr", + "ntapi", + "windows 0.57.0", +] + [[package]] name = "tabled" version = "0.17.0" @@ -7152,18 +7015,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "target-features" -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.15.0" @@ -7612,6 +7463,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" +[[package]] +name = "unicode-normalization" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-reverse" version = "1.0.9" @@ -7656,12 +7516,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unindent" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" - [[package]] name = "untrusted" version = "0.9.0" @@ -8757,6 +8611,12 @@ dependencies = [ "zopfli", ] +[[package]] +name = "zlib-rs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aada01553a9312bad4b9569035a1f12b05e5ec9770a1a4b323757356928944f8" + [[package]] name = "zopfli" version = "0.8.1" diff --git a/crates/nu_plugin_polars/Cargo.toml b/crates/nu_plugin_polars/Cargo.toml index 187eb3d124..971e25ec22 100644 --- a/crates/nu_plugin_polars/Cargo.toml +++ b/crates/nu_plugin_polars/Cargo.toml @@ -30,25 +30,25 @@ indexmap = { version = "2.7" } mimalloc = { version = "0.1.42" } num = {version = "0.4"} serde = { version = "1.0", features = ["derive"] } -sqlparser = { version = "0.49"} -polars-io = { version = "0.44", features = ["avro", "cloud", "aws"]} -polars-arrow = { version = "0.44"} -polars-ops = { version = "0.44", features = ["pivot"]} -polars-plan = { version = "0.44", features = ["regex"]} -polars-utils = { version = "0.44"} +sqlparser = { version = "0.53"} +polars-io = { version = "0.46", features = ["avro", "cloud", "aws"]} +polars-arrow = { version = "0.46"} +polars-ops = { version = "0.46", features = ["pivot"]} +polars-plan = { version = "0.46", features = ["regex"]} +polars-utils = { version = "0.46"} typetag = "0.2" env_logger = "0.11.3" log.workspace = true uuid = { version = "1.12", features = ["v4", "serde"] } # Do to a compile error with polars, this included to force the raw dependency -hashbrown = { version = "0.14", features = ["rayon", "ahash", "serde", "raw"] } +hashbrown = { version = "0.15", features = ["rayon", "serde"] } # Cloud support aws-config = { version = "1.5", features = ["sso"] } aws-credential-types = "1.2" tokio = { version = "1.43", features = ["full"] } -object_store = { version = "0.10", default-features = false } +object_store = { version = "0.11", default-features = false } url.workspace = true [dependencies.polars] @@ -90,7 +90,7 @@ features = [ "to_dummies", ] optional = false -version = "0.44" +version = "0.46" [dev-dependencies] nu-cmd-lang = { path = "../nu-cmd-lang", version = "0.101.1" } @@ -98,4 +98,4 @@ nu-engine = { path = "../nu-engine", version = "0.101.1" } nu-parser = { path = "../nu-parser", version = "0.101.1" } nu-command = { path = "../nu-command", version = "0.101.1" } nu-plugin-test-support = { path = "../nu-plugin-test-support", version = "0.101.1" } -tempfile.workspace = true \ No newline at end of file +tempfile.workspace = true diff --git a/crates/nu_plugin_polars/src/dataframe/command/core/save/arrow.rs b/crates/nu_plugin_polars/src/dataframe/command/core/save/arrow.rs index 54317edea3..2a9d1dd947 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/core/save/arrow.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/core/save/arrow.rs @@ -16,7 +16,8 @@ pub(crate) fn command_lazy( file_span: Span, ) -> Result<(), ShellError> { lazy.to_polars() - .sink_ipc(file_path, IpcWriterOptions::default()) + // todo - add cloud options + .sink_ipc(file_path, IpcWriterOptions::default(), None) .map_err(|e| polars_file_save_error(e, file_span)) } diff --git a/crates/nu_plugin_polars/src/dataframe/command/core/save/csv.rs b/crates/nu_plugin_polars/src/dataframe/command/core/save/csv.rs index 941967b469..0a4b79f0b3 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/core/save/csv.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/core/save/csv.rs @@ -32,7 +32,8 @@ pub(crate) fn command_lazy( }; lazy.to_polars() - .sink_csv(file_path, options) + // todo - add cloud options + .sink_csv(file_path, options, None) .map_err(|e| polars_file_save_error(e, file_span)) } diff --git a/crates/nu_plugin_polars/src/dataframe/command/core/save/ndjson.rs b/crates/nu_plugin_polars/src/dataframe/command/core/save/ndjson.rs index 55204436d8..37ffb4b4e4 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/core/save/ndjson.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/core/save/ndjson.rs @@ -16,7 +16,8 @@ pub(crate) fn command_lazy( file_span: Span, ) -> Result<(), ShellError> { lazy.to_polars() - .sink_json(file_path, JsonWriterOptions::default()) + // todo - add cloud options + .sink_json(file_path, JsonWriterOptions::default(), None) .map_err(|e| polars_file_save_error(e, file_span)) } diff --git a/crates/nu_plugin_polars/src/dataframe/command/core/save/parquet.rs b/crates/nu_plugin_polars/src/dataframe/command/core/save/parquet.rs index f77e7c4028..7a9766b3be 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/core/save/parquet.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/core/save/parquet.rs @@ -16,7 +16,8 @@ pub(crate) fn command_lazy( file_span: Span, ) -> Result<(), ShellError> { lazy.to_polars() - .sink_parquet(file_path, ParquetWriteOptions::default()) + // todo - add cloud options + .sink_parquet(&file_path, ParquetWriteOptions::default(), None) .map_err(|e| polars_file_save_error(e, file_span)) } diff --git a/crates/nu_plugin_polars/src/dataframe/command/core/to_df.rs b/crates/nu_plugin_polars/src/dataframe/command/core/to_df.rs index e99dfa83d9..f8fd9f4572 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/core/to_df.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/core/to_df.rs @@ -163,23 +163,23 @@ impl PluginCommand for ToDataFrame { example: "[[a b c]; [1 {d: [1 2 3]} [10 11 12] ]]| polars into-df -s {a: u8, b: {d: list}, c: list}", result: Some( NuDataFrame::try_from_series_vec(vec![ - Series::new("a".into(), &[1u8]), - { - let dtype = DataType::Struct(vec![Field::new("a".into(), DataType::List(Box::new(DataType::UInt64)))]); - let vals = vec![AnyValue::StructOwned( - Box::new((vec![AnyValue::List(Series::new("a".into(), &[1u64, 2, 3]))], vec![Field::new("a".into(), DataType::String)]))); 1]; - Series::from_any_values_and_dtype("b".into(), &vals, &dtype, false) - .expect("Struct series should not fail") - }, - { - let dtype = DataType::List(Box::new(DataType::String)); - let vals = vec![AnyValue::List(Series::new("c".into(), &[10, 11, 12]))]; - Series::from_any_values_and_dtype("c".into(), &vals, &dtype, false) - .expect("List series should not fail") - } - ], Span::test_data()) - .expect("simple df for test should not fail") - .into_value(Span::test_data()), + Series::new("a".into(), &[1u8]), + { + let dtype = DataType::Struct(vec![Field::new("d".into(), DataType::List(Box::new(DataType::UInt64)))]); + let vals = vec![AnyValue::StructOwned( + Box::new((vec![AnyValue::List(Series::new("d".into(), &[1u64, 2, 3]))], vec![Field::new("d".into(), DataType::String)]))); 1]; + Series::from_any_values_and_dtype("b".into(), &vals, &dtype, false) + .expect("Struct series should not fail") + }, + { + let dtype = DataType::List(Box::new(DataType::String)); + let vals = vec![AnyValue::List(Series::new("c".into(), &[10, 11, 12]))]; + Series::from_any_values_and_dtype("c".into(), &vals, &dtype, false) + .expect("List series should not fail") + } + ], Span::test_data()) + .expect("simple df for test should not fail") + .into_value(Span::test_data()), ), }, Example { diff --git a/crates/nu_plugin_polars/src/dataframe/command/data/concat.rs b/crates/nu_plugin_polars/src/dataframe/command/data/concat.rs index afb2a1733d..b2d24034f8 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/data/concat.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/data/concat.rs @@ -133,6 +133,8 @@ fn command_lazy( to_supertypes, diagonal, from_partitioned_ds, + // todo - expose maintain order + ..Default::default() }; let res: NuLazyFrame = polars::prelude::concat(&dataframes, args) diff --git a/crates/nu_plugin_polars/src/dataframe/command/data/sort_by_expr.rs b/crates/nu_plugin_polars/src/dataframe/command/data/sort_by_expr.rs index 3a0f2dd2d0..50539c4ab1 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/data/sort_by_expr.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/data/sort_by_expr.rs @@ -143,6 +143,8 @@ impl PluginCommand for LazySortBy { nulls_last: vec![nulls_last], multithreaded: true, maintain_order, + // todo - expose limit + limit: None, }; let pipeline_value = input.into_value(call.head)?; diff --git a/crates/nu_plugin_polars/src/dataframe/command/data/sql_expr.rs b/crates/nu_plugin_polars/src/dataframe/command/data/sql_expr.rs index 163e974a1a..465da5437c 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/data/sql_expr.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/data/sql_expr.rs @@ -176,6 +176,7 @@ fn parse_sql_function(sql_function: &SQLFunction) -> Result { .map(|arg| match arg { FunctionArg::Named { arg, .. } => arg, FunctionArg::Unnamed(arg) => arg, + FunctionArg::ExprNamed { arg, .. } => arg, }) .collect::>(); Ok( diff --git a/crates/nu_plugin_polars/src/dataframe/command/index/arg_sort.rs b/crates/nu_plugin_polars/src/dataframe/command/index/arg_sort.rs index 88c4bafc81..9c01353e34 100644 --- a/crates/nu_plugin_polars/src/dataframe/command/index/arg_sort.rs +++ b/crates/nu_plugin_polars/src/dataframe/command/index/arg_sort.rs @@ -113,6 +113,8 @@ fn command( nulls_last: call.has_flag("nulls-last")?, multithreaded: true, maintain_order: call.has_flag("maintain-order")?, + // todo - expose limit + limit: None, }; let mut res = df diff --git a/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/conversion.rs b/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/conversion.rs index d196ed8ba6..ad488b02d4 100644 --- a/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/conversion.rs +++ b/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/conversion.rs @@ -1,5 +1,6 @@ use std::collections::HashMap; use std::ops::{Deref, DerefMut}; +use std::sync::Arc; use chrono::{DateTime, Duration, FixedOffset, NaiveTime, TimeZone, Utc}; use chrono_tz::Tz; @@ -8,7 +9,6 @@ use polars::chunked_array::builder::AnonymousOwnedListBuilder; use polars::chunked_array::object::builder::ObjectChunkedBuilder; use polars::chunked_array::ChunkedArray; use polars::datatypes::{AnyValue, PlSmallStr}; -use polars::export::arrow::Either; use polars::prelude::{ ChunkAnyValue, Column as PolarsColumn, DataFrame, DataType, DatetimeChunked, Float32Type, Float64Type, Int16Type, Int32Type, Int64Type, Int8Type, IntoSeries, ListBooleanChunkedBuilder, @@ -18,6 +18,7 @@ use polars::prelude::{ }; use nu_protocol::{Record, ShellError, Span, Value}; +use polars_arrow::Either; use crate::dataframe::values::NuSchema; @@ -474,7 +475,7 @@ fn typed_column_to_series(name: PlSmallStr, column: TypedColumn) -> Result { - let schema = Some(NuSchema::new(Schema::from_iter(fields.clone()))); + let schema = Some(NuSchema::new(Arc::new(Schema::from_iter(fields.clone())))); // let mut structs: Vec = Vec::new(); let mut structs: HashMap = HashMap::new(); @@ -599,7 +600,7 @@ fn input_type_list_to_series( .map(|v| value_to_primitive!(v, $vec_type)) .collect::, _>>() .map_err(inconsistent_error)?; - builder.append_iter_values(value_list.iter().copied()); + builder.append_values_iter(value_list.iter().copied()); } let res = builder.finish(); Ok(res.into_series()) @@ -1359,8 +1360,8 @@ mod tests { use indexmap::indexmap; use nu_protocol::record; use polars::datatypes::CompatLevel; - use polars::export::arrow::array::{BooleanArray, PrimitiveArray}; use polars::prelude::Field; + use polars_arrow::array::{BooleanArray, PrimitiveArray}; use polars_io::prelude::StructArray; use super::*; diff --git a/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/mod.rs b/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/mod.rs index bb273a0a8a..de21abafdd 100644 --- a/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/mod.rs +++ b/crates/nu_plugin_polars/src/dataframe/values/nu_dataframe/mod.rs @@ -450,7 +450,7 @@ impl NuDataFrame { } pub fn schema(&self) -> NuSchema { - NuSchema::new(self.df.schema()) + NuSchema::new(Arc::clone(self.df.schema())) } /// This differs from try_from_value as it will attempt to coerce the type into a NuDataFrame. diff --git a/crates/nu_plugin_polars/src/dataframe/values/nu_schema.rs b/crates/nu_plugin_polars/src/dataframe/values/nu_schema.rs index 481eb917b9..cf425eb046 100644 --- a/crates/nu_plugin_polars/src/dataframe/values/nu_schema.rs +++ b/crates/nu_plugin_polars/src/dataframe/values/nu_schema.rs @@ -12,10 +12,8 @@ pub struct NuSchema { } impl NuSchema { - pub fn new(schema: Schema) -> Self { - Self { - schema: Arc::new(schema), - } + pub fn new(schema: SchemaRef) -> Self { + Self { schema } } } @@ -23,7 +21,7 @@ impl TryFrom<&Value> for NuSchema { type Error = ShellError; fn try_from(value: &Value) -> Result { let schema = value_to_schema(value, Span::unknown())?; - Ok(Self::new(schema)) + Ok(Self::new(Arc::new(schema))) } }