diff --git a/Cargo.lock b/Cargo.lock index 79d4013..34a0489 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -67,6 +67,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70f13d10a41ac8d2ec79ee34178d61e6f47a29c2edfe7ef1721c7383b0359e65" dependencies = [ + "half", "num-traits", ] @@ -90,9 +91,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb372a7cbcac02a35d3fb7b3fc1f969ec078e871f9bb899bf00a2e1809bec8a3" +checksum = "602268ce9f569f282cedb9a9f6bac569b680af47b9b077d515900c03c5d190da" dependencies = [ "arrow-arith", "arrow-array", @@ -111,9 +112,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f377dcd19e440174596d83deb49cd724886d91060c07fec4f67014ef9d54049" +checksum = "cd53c6bf277dea91f136ae8e3a5d7041b44b5e489e244e637d00ae302051f56f" dependencies = [ "arrow-array", "arrow-buffer", @@ -125,9 +126,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eaff85a44e9fa914660fb0d0bb00b79c4a3d888b5334adb3ea4330c84f002" +checksum = "e53796e07a6525edaf7dc28b540d477a934aff14af97967ad1d5550878969b9e" dependencies = [ "ahash", "arrow-buffer", @@ -143,9 +144,9 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2819d893750cb3380ab31ebdc8c68874dd4429f90fd09180f3c93538bd21626" +checksum = "f2c1a85bb2e94ee10b76531d8bc3ce9b7b4c0d508cabfb17d477f63f2617bd20" dependencies = [ "bytes", "half", @@ -155,9 +156,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d131abb183f80c450d4591dc784f8d7750c50c6e2bc3fcaad148afc8361271" +checksum = "89fb245db6b0e234ed8e15b644edb8664673fefe630575e94e62cd9d489a8a26" dependencies = [ "arrow-array", "arrow-buffer", @@ -176,9 +177,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2275877a0e5e7e7c76954669366c2aa1a829e340ab1f612e647507860906fb6b" +checksum = "d374882fb465a194462527c0c15a93aa19a554cf690a6b77a26b2a02539937a7" dependencies = [ "arrow-array", "arrow-cast", @@ -191,9 +192,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05738f3d42cb922b9096f7786f606fcb8669260c2640df8490533bb2fa38c9d3" +checksum = "189d210bc4244c715fa3ed9e6e22864673cccb73d5da28c2723fb2e527329b33" dependencies = [ "arrow-buffer", "arrow-schema", @@ -204,9 +205,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d09446e8076c4b3f235603d9ea7c5494e73d441b01cd61fb33d7254c11964b3" +checksum = "7968c2e5210c41f4909b2ef76f6e05e172b99021c2def5edf3cc48fdd39d1d6c" dependencies = [ "arrow-array", "arrow-buffer", @@ -218,9 +219,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "371ffd66fa77f71d7628c63f209c9ca5341081051aa32f9c8020feb0def787c0" +checksum = "92111dba5bf900f443488e01f00d8c4ddc2f47f5c50039d18120287b580baa22" dependencies = [ "arrow-array", "arrow-buffer", @@ -242,9 +243,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc94fc7adec5d1ba9e8cd1b1e8d6f72423b33fe978bf1f46d970fafab787521" +checksum = "211136cb253577ee1a6665f741a13136d4e563f64f5093ffd6fb837af90b9495" dependencies = [ "arrow-array", "arrow-buffer", @@ -255,9 +256,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "169676f317157dc079cc5def6354d16db63d8861d61046d2f3883268ced6f99f" +checksum = "8e0f20145f9f5ea3fe383e2ba7a7487bf19be36aa9dbf5dd6a1f92f657179663" dependencies = [ "arrow-array", "arrow-buffer", @@ -268,15 +269,15 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d27609cd7dd45f006abae27995c2729ef6f4b9361cde1ddd019dc31a5aa017e0" +checksum = "1b47e0ca91cc438d2c7879fe95e0bca5329fff28649e30a88c6f760b1faeddcb" [[package]] name = "arrow-select" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae980d021879ea119dd6e2a13912d81e64abed372d53163e804dfe84639d8010" +checksum = "750a7d1dda177735f5e82a314485b6915c7cccdbb278262ac44090f4aba4a325" dependencies = [ "ahash", "arrow-array", @@ -288,9 +289,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "57.1.0" +version = "58.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf35e8ef49dcf0c5f6d175edee6b8af7b45611805333129c541a8b89a0fc0534" +checksum = "e1eab1208bc4fe55d768cdc9b9f3d9df5a794cdb3ee2586bf89f9b30dc31ad8c" dependencies = [ "arrow-array", "arrow-buffer", @@ -359,9 +360,12 @@ dependencies = [ [[package]] name = "atoi_simd" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4790f9e8961209112beb783d85449b508673cf4a6a419c8449b210743ac4dbe9" +checksum = "8ad17c7c205c2c28b527b9845eeb91cf1b4d008b438f98ce0e628227a822758e" +dependencies = [ + "debug_unsafe", +] [[package]] name = "atomic-waker" @@ -487,9 +491,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" dependencies = [ "serde", ] @@ -757,6 +761,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "debug_unsafe" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eed2c4702fa172d1ce21078faa7c5203e69f5394d48cc436d25928394a867a2" + [[package]] name = "digest" version = "0.10.7" @@ -1070,13 +1080,16 @@ dependencies = [ [[package]] name = "half" -version = "2.6.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" dependencies = [ + "bytemuck", "cfg-if", "crunchy", "num-traits", + "serde", + "zerocopy 0.8.42", ] [[package]] @@ -1651,6 +1664,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "num-integer" version = "0.1.46" @@ -1681,9 +1705,9 @@ dependencies = [ [[package]] name = "object_store" -version = "0.12.4" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c1be0c6c22ec0817cdc77d3842f721a17fd30ab6965001415b5402a74e6b740" +checksum = "c2858065e55c148d294a9f3aae3b0fa9458edadb41a108397094566f4e3c0dfb" dependencies = [ "async-trait", "base64", @@ -1844,13 +1868,14 @@ dependencies = [ [[package]] name = "polars" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bc9ea901050c1bb8747ee411bc7fbb390f3b399931e7484719512965132a248" +checksum = "899852b723e563dc3cbdc7ea833b14ec44e61309f55df29ba86d45cfd6bc141a" dependencies = [ "getrandom 0.2.15", "getrandom 0.3.2", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-error", @@ -1866,13 +1891,14 @@ dependencies = [ [[package]] name = "polars-arrow" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33d3fe43f8702cf7899ff3d516c2e5f7dc84ee6f6a3007e1a831a0ff87940704" +checksum = "6f672743a042b72ace4f88b29f8205ab200b29c5ac976c0560899680c07d2d09" dependencies = [ "atoi_simd", "bitflags", "bytemuck", + "bytes", "chrono", "chrono-tz", "dyn-clone", @@ -1880,11 +1906,13 @@ dependencies = [ "ethnum", "getrandom 0.2.15", "getrandom 0.3.2", + "half", "hashbrown 0.16.0", "itoa", "lz4", "num-traits", "polars-arrow-format", + "polars-buffer", "polars-error", "polars-schema", "polars-utils", @@ -1906,11 +1934,23 @@ dependencies = [ "serde", ] +[[package]] +name = "polars-buffer" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7011424c3a79ca9c1272c7b4f5fe98695d3bed45595e37bb23c16a2978c80c" +dependencies = [ + "bytemuck", + "either", + "serde", + "version_check", +] + [[package]] name = "polars-compute" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29cc7497378dee3a002f117e0b4e16b7cbe6c8ed3da16a0229c89294af7c3bf" +checksum = "42a32eca8e08ac4cc5de2ac3996d2b38567bba72cdb19bbfd94c370193ed51dd" dependencies = [ "atoi_simd", "bytemuck", @@ -1921,21 +1961,22 @@ dependencies = [ "itoa", "num-traits", "polars-arrow", + "polars-buffer", "polars-error", "polars-utils", "rand 0.9.2", - "ryu", "serde", "strength_reduce", "strum_macros", "version_check", + "zmij", ] [[package]] name = "polars-core" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48409b7440cb1a4aa84953fe3a4189dfbfb300a3298266a92a37363476641e40" +checksum = "726296966d04268ee9679c2062af2d06c83c7a87379be471defe616b244c5029" dependencies = [ "bitflags", "boxcar", @@ -1944,11 +1985,13 @@ dependencies = [ "chrono-tz", "comfy-table", "either", + "getrandom 0.3.2", "hashbrown 0.16.0", "indexmap", "itoa", "num-traits", "polars-arrow", + "polars-buffer", "polars-compute", "polars-dtype", "polars-error", @@ -1969,9 +2012,9 @@ dependencies = [ [[package]] name = "polars-dtype" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7007e9e8b7b657cbd339b65246af7e87f5756ee9a860119b9424ddffd2aaf133" +checksum = "51976dc46d42cd1e7ca252a9e3bdc90c63b0bfa7030047ebaf5250c2b7838fa6" dependencies = [ "boxcar", "hashbrown 0.16.0", @@ -1984,9 +2027,9 @@ dependencies = [ [[package]] name = "polars-error" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6be22566c89f6405f553bfdb7c8a6cb20ec51b35f3172de9a25fa3e252d85" +checksum = "8c13126f8baebc13dadf26a80dcf69a607977fc8a67b18671ad2cefc713a7bdd" dependencies = [ "object_store", "parking_lot", @@ -1998,14 +2041,15 @@ dependencies = [ [[package]] name = "polars-expr" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6199a50d3e1afd0674fb009e340cbfb0010682b2387187a36328c00f3f2ca87b" +checksum = "2151f54b0ae5d6b86c3c47df0898ff90edfe774807823f742f36e44973d51ea1" dependencies = [ "bitflags", "hashbrown 0.16.0", "num-traits", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-io", @@ -2023,9 +2067,9 @@ dependencies = [ [[package]] name = "polars-io" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be3714acdff87170141880a07f5d9233490d3bd5531c41898f6969d440feee11" +checksum = "059724d7762d7332cbc225e6504d996091b28fa1337716e06e5a81d9e54a34ad" dependencies = [ "async-trait", "atoi_simd", @@ -2046,6 +2090,7 @@ dependencies = [ "object_store", "percent-encoding", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-error", @@ -2057,18 +2102,18 @@ dependencies = [ "rayon", "regex", "reqwest", - "ryu", "serde", "serde_json", "simdutf8", "tokio", + "zmij", ] [[package]] name = "polars-json" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dd2126daebf58da564fc5840cd55eb8eb2479d24dfced0a1aea2178a9b33b12" +checksum = "55581d4cc8f4122cae92d12aec997e6713ac483871391a7db09501604007be4b" dependencies = [ "chrono", "chrono-tz", @@ -2081,22 +2126,23 @@ dependencies = [ "polars-compute", "polars-error", "polars-utils", - "ryu", "simd-json", "streaming-iterator", + "zmij", ] [[package]] name = "polars-lazy" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea136c360d03aafe56e0233495e30044ce43639b8b0360a4a38e840233f048a1" +checksum = "02e1e24d4db8c349e9576564cfff47a3f08bb831dba9168f6599be178bc725e8" dependencies = [ "bitflags", "chrono", "either", "memchr", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-expr", @@ -2113,9 +2159,9 @@ dependencies = [ [[package]] name = "polars-mem-engine" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f6e455ceb6e5aee7ed7d5c8944104e66992173e03a9c42f9670226318672249" +checksum = "c394e4cd90186043d4051ce118e90794afbe81ac5eb9a51e358a56728e8ebde3" dependencies = [ "memmap2", "polars-arrow", @@ -2133,9 +2179,9 @@ dependencies = [ [[package]] name = "polars-ops" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b59c80a019ef0e6f09b4416d2647076a52839305c9eb11919e8298ec667f853" +checksum = "7e47b2d9b3627662650da0a8c76ce5101ed1c61b104cb2b3663e0dc711571b12" dependencies = [ "argminmax", "base64", @@ -2150,6 +2196,7 @@ dependencies = [ "memchr", "num-traits", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-error", @@ -2166,9 +2213,9 @@ dependencies = [ [[package]] name = "polars-parquet" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c2439d127c59e6bfc9d698419bdb45210068a6f501d44e6096429ad72c2eaa" +checksum = "436bae3e89438cafe69400e7567057d7d9820d21ac9a4f69a33b413f2666f03d" dependencies = [ "async-stream", "base64", @@ -2178,10 +2225,12 @@ dependencies = [ "hashbrown 0.16.0", "num-traits", "polars-arrow", + "polars-buffer", "polars-compute", "polars-error", "polars-parquet-format", "polars-utils", + "regex", "serde", "simdutf8", "streaming-decompression", @@ -2199,21 +2248,24 @@ dependencies = [ [[package]] name = "polars-plan" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65b4619f5c7e9b91f18611c9ed82ebeee4b10052160825c1316ecf4dbd4d97e6" +checksum = "f7930d5ae1d006179e65f01af57c859307b5875a4cc078dc75257250b9ae5162" dependencies = [ "bitflags", + "blake3", "bytemuck", "bytes", "chrono", "chrono-tz", "either", + "futures", "hashbrown 0.16.0", "memmap2", "num-traits", "percent-encoding", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-error", @@ -2227,18 +2279,20 @@ dependencies = [ "sha2", "slotmap", "strum_macros", + "tokio", "version_check", ] [[package]] name = "polars-row" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18d232f25b83032e280a279a1f40beb8a6f8fc43907b13dc07b1c56f3b11eea" +checksum = "d29ea1a4554fe06442db1d6229235cd358e8eacba96aed8718f612caf3e3a646" dependencies = [ "bitflags", "bytemuck", "polars-arrow", + "polars-buffer", "polars-compute", "polars-dtype", "polars-error", @@ -2247,9 +2301,9 @@ dependencies = [ [[package]] name = "polars-schema" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73e21d429ae1c23f442b0220ccfe773a9734a44e997b5062a741842909d9441" +checksum = "d688e73f9156f93cb29350be144c8f1e84c1bc705f00ee7f15eb9706a7971273" dependencies = [ "indexmap", "polars-error", @@ -2260,9 +2314,9 @@ dependencies = [ [[package]] name = "polars-sql" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e67ac1cbb0c972a57af3be12f19aa9803898863fe95c33cdd39df05f5738a75" +checksum = "100415f86069d7e9fbf54737148fc161a7c7316a6a7d375fb6cfc7fc64f570ae" dependencies = [ "bitflags", "hex", @@ -2273,7 +2327,6 @@ dependencies = [ "polars-plan", "polars-time", "polars-utils", - "rand 0.9.2", "regex", "serde", "sqlparser", @@ -2281,25 +2334,29 @@ dependencies = [ [[package]] name = "polars-stream" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ff19612074640a9d65e5928b7223db76ffee63e55b276f1e466d06719eb7362" +checksum = "65a0c054bdf16efd16bbc587e8d5418ae28464d61afd735513579cd3c338fa70" dependencies = [ "async-channel", "async-trait", "atomic-waker", "bitflags", + "bytes", "chrono-tz", "crossbeam-channel", "crossbeam-deque", "crossbeam-queue", "crossbeam-utils", "futures", + "memchr", "memmap2", + "num-traits", "parking_lot", "percent-encoding", "pin-project-lite", "polars-arrow", + "polars-buffer", "polars-compute", "polars-core", "polars-error", @@ -2321,9 +2378,9 @@ dependencies = [ [[package]] name = "polars-time" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddce7a9f81d5f47d981bcee4a8db004f9596bb51f0f4d9d93667a1a00d88166c" +checksum = "72e80404e1e418c997230e3b2972c3be331f45df8bdd3150fe3bef562c7a332f" dependencies = [ "atoi_simd", "bytemuck", @@ -2344,10 +2401,11 @@ dependencies = [ [[package]] name = "polars-utils" -version = "0.52.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667c1bc2d2313f934d711f6e3b58d8d9f80351d14ea60af936a26b7dfb06e309" +checksum = "c97cabf53eb8fbf6050cde3fef8f596c51cc25fd7d55fbde108d815ee6674abf" dependencies = [ + "argminmax", "bincode", "bytemuck", "bytes", @@ -2355,10 +2413,12 @@ dependencies = [ "either", "flate2", "foldhash 0.2.0", + "half", "hashbrown 0.16.0", "indexmap", "libc", "memmap2", + "num-derive", "num-traits", "polars-error", "rand 0.9.2", @@ -2396,7 +2456,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.24", + "zerocopy 0.8.42", ] [[package]] @@ -3040,9 +3100,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook" -version = "0.3.18" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +checksum = "3b57709da74f9ff9f4a27dce9526eec25ca8407c45a7887243b031a58935fb8e" dependencies = [ "libc", "signal-hook-registry", @@ -3127,11 +3187,24 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.53.0" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a528114c392209b3264855ad491fcce534b94a38771b0a0b97a79379275ce8" +checksum = "505aa16b045c4c1375bf5f125cce3813d0176325bfe9ffc4a903f423de7774ff" dependencies = [ "log", + "recursive", + "sqlparser_derive", +] + +[[package]] +name = "sqlparser_derive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "028e551d5e270b31b9f3ea271778d9d827148d4287a5d96167b6bb9787f5cc38" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -3927,11 +4000,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3" dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive 0.8.42", ] [[package]] @@ -3947,9 +4020,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f" dependencies = [ "proc-macro2", "quote", @@ -4016,6 +4089,12 @@ dependencies = [ "syn", ] +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" + [[package]] name = "zstd" version = "0.13.3" diff --git a/Cargo.toml b/Cargo.toml index cf95d4c..7320175 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,10 +9,10 @@ crate-type = ["cdylib"] [dependencies] pyo3 = "0.27" -arrow = { version = "57" } +arrow = { version = "58" } once_cell = "1.20" -# WORKAROUND: moment, timezones, and polars-expr are only needed due to dependency bugs in Polars +# WORKAROUND: timezones and polars-expr are only needed due to dependency bugs in Polars # https://github.com/pola-rs/polars/issues/25492 -polars = { version = "0.52.0", features = ["lazy", "pivot", "csv", "abs", "log", "round_series", "trigonometry", "range", "dtype-i8", "dtype-i16", "dtype-u8", "dtype-u16", "moment", "timezones"] } -polars-expr = { version = "0.52.0", features = ["dtype-array"] } -polars-arrow = { version = "0.52.0" } +polars = { version = "0.53.0", features = ["lazy", "pivot", "csv", "abs", "log", "round_series", "trigonometry", "range", "dtype-i8", "dtype-i16", "dtype-u8", "dtype-u16", "timezones"] } +polars-expr = { version = "0.53.0", features = ["dtype-array"] } +polars-arrow = { version = "0.53.0" } diff --git a/src/concatenate.rs b/src/concatenate.rs index e84de7f..2a138ae 100644 --- a/src/concatenate.rs +++ b/src/concatenate.rs @@ -119,7 +119,7 @@ pub fn concatenate_columns( } // Perform horizontal concatenation - let concatenated = concat_df_horizontal(&dfs, false) + let concatenated = concat_df_horizontal(&dfs, false, false, false) .map_err(|e| PyErr::new::(e.to_string()))?; Ok(PyDataFrame { diff --git a/src/data_frame.rs b/src/data_frame.rs index 899fe54..53ea8f5 100644 --- a/src/data_frame.rs +++ b/src/data_frame.rs @@ -14,7 +14,6 @@ use crate::workarounds::{dummy_column, prepend_dummy_column}; use crate::{GroupIndexOutOfBoundsError, PyExpression}; use polars::datatypes::DataType as PolarsDataType; use polars::error::PolarsError; -use polars::lazy::frame::pivot::pivot_stable; use polars::prelude::*; use polars::series::Series; use polars::{frame::UniqueKeepStrategy, prelude::DataFrame as PolarsDataFrame}; @@ -60,14 +59,14 @@ impl PyDataFrame { } Ok(PyDataFrame { - polars_data_frame: PolarsDataFrame::new(polars_columns).unwrap(), + polars_data_frame: PolarsDataFrame::new(height, polars_columns).unwrap(), group_levels: vec![], }) } fn to_tuple_list(&self) -> PyResult> { let mut tuple_list = Vec::new(); - for column in self.polars_data_frame.get_columns() { + for column in self.polars_data_frame.columns() { if column.name() == DUMMY_NAME { // Skip dummy column continue; @@ -96,7 +95,7 @@ impl PyDataFrame { fn column_names<'py>(&self, py: Python<'py>) -> PyResult> { let col_names: Vec<&str> = self .polars_data_frame - .get_columns() + .columns() .iter() // Skip dummy column .filter(|s| s.name() != DUMMY_NAME) @@ -144,7 +143,7 @@ impl PyDataFrame { } let dict = PyDict::new(py); - for column in self.polars_data_frame.get_columns() { + for column in self.polars_data_frame.columns() { if column.name() == DUMMY_NAME { // Skip dummy column continue; @@ -705,16 +704,31 @@ impl PyDataFrame { let flattened_groups: Vec<&str> = self.iter_group_names().collect(); - let pivot_df = pivot_stable( - &self.polars_data_frame, - &[key], - Some(flattened_groups), - Some(&[value]), - false, - None, - None, - ) - .unwrap(); + let on_columns = self + .polars_data_frame + .column(&key) + .unwrap() + .unique() + .unwrap() + .sort(Default::default()) + .unwrap() + .into_frame(); + + let pivot_df = self + .polars_data_frame + .clone() + .lazy() + .pivot( + cols([key]), + std::sync::Arc::new(on_columns), + cols(flattened_groups), + cols([value]), + element().first(), + true, + "_".into(), + ) + .collect() + .unwrap(); Ok(PyDataFrame { polars_data_frame: pivot_df, @@ -757,7 +771,7 @@ impl PyDataFrame { .lazy() .unpivot(UnpivotArgsDSL { index: cols(unpivot_columns), - on: cols(consumed_column_names), + on: Some(cols(consumed_column_names)), variable_name: Some(key.clone().into()), value_name: Some(value.into()), }) @@ -797,6 +811,7 @@ impl PyDataFrame { nulls_equal: true, coalesce: JoinCoalesce::CoalesceColumns, maintain_order: MaintainOrderJoin::LeftRight, + build_side: None, }, None, ) @@ -832,6 +847,7 @@ impl PyDataFrame { nulls_equal: true, coalesce: JoinCoalesce::CoalesceColumns, maintain_order: MaintainOrderJoin::LeftRight, + build_side: None, }, None, ) @@ -867,6 +883,7 @@ impl PyDataFrame { nulls_equal: true, coalesce: JoinCoalesce::CoalesceColumns, maintain_order: MaintainOrderJoin::LeftRight, + build_side: None, }, None, ) @@ -957,7 +974,7 @@ impl PyDataFrame { // Convert to DataFrame Ok(PyDataFrame { - polars_data_frame: DataFrame::new(columns).unwrap(), + polars_data_frame: DataFrame::new(height, columns).unwrap(), group_levels: vec![], }) } @@ -997,7 +1014,7 @@ impl PyDataFrame { pub(crate) fn iter_column_names(&self) -> impl Iterator { // Contains dummy column self.polars_data_frame - .get_columns() + .columns() .iter() .map(|s| s.name().as_str()) } @@ -1005,7 +1022,7 @@ impl PyDataFrame { pub(crate) fn iter_columns(&self) -> impl Iterator { // Does not contain dummy column self.polars_data_frame - .get_columns() + .columns() .iter() .filter(|s| s.name() != DUMMY_NAME) .map(|s| { @@ -1140,7 +1157,7 @@ impl PyDataFrame { .agg([all().as_expr().gather(Expr::Literal(LiteralValue::Series( SpecialEq::new(Series::new("".into(), &indexes)), )))]) - .explode(cols(non_group_columns)) + .explode(cols(non_group_columns), ExplodeOptions { empty_as_null: false, keep_nulls: false }) .sort(["_index"], Default::default()) .drop(cols(["_index"])) .collect(); diff --git a/src/workarounds.rs b/src/workarounds.rs index 7e40fdb..17148f6 100644 --- a/src/workarounds.rs +++ b/src/workarounds.rs @@ -14,8 +14,8 @@ pub fn dummy_column(height: usize) -> Column { } pub fn prepend_dummy_column(df: DataFrame) -> DataFrame { - DataFrame::new(vec![dummy_column(df.height())]) + DataFrame::new(df.height(), vec![dummy_column(df.height())]) .unwrap() - .hstack(df.get_columns()) + .hstack(df.columns()) .unwrap() }