diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e9f85b7763..00e25ea9d6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,7 +6,7 @@ repos: hooks: - id: mypy additional_dependencies: [types-requests, types-PyYAML, types-tabulate] - files: daft + files: daft, daft_dashboard exclude: daft/pickle/.*\.py - repo: https://github.com/pre-commit/pre-commit-hooks @@ -57,6 +57,7 @@ repos: - id: codespell additional_dependencies: - tomli + exclude: static-dashboard-assets - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. diff --git a/Cargo.lock b/Cargo.lock index fda528e9c5..c5e8cfa8be 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -144,11 +144,12 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.6" +version = "3.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", + "once_cell", "windows-sys 0.59.0", ] @@ -312,7 +313,7 @@ dependencies = [ "simdutf8", "streaming-iterator", "strength_reduce", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "zstd 0.12.4", @@ -380,7 +381,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -402,18 +403,18 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "async-trait" -version = "0.1.85" +version = "0.1.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -463,7 +464,7 @@ dependencies = [ "snap 0.2.5", "strum 0.18.0", "strum_macros 0.18.0", - "thiserror", + "thiserror 1.0.69", "typed-builder 0.5.1", "uuid 0.8.2", "zerocopy 0.3.2", @@ -915,7 +916,7 @@ dependencies = [ "serde_json", "time", "url", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -936,7 +937,7 @@ dependencies = [ "time", "tz-rs", "url", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -958,7 +959,7 @@ dependencies = [ "sha2", "time", "url", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -978,7 +979,7 @@ dependencies = [ "serde_json", "time", "url", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -1077,9 +1078,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "block-buffer" @@ -1118,7 +1119,7 @@ checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor 4.0.1", + "brotli-decompressor 4.0.2", ] [[package]] @@ -1133,9 +1134,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "74fa05ad7d803d413eb8380983b092cbbaf9a85f151b871360e7b00cd7060b37" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1160,9 +1161,9 @@ checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "bytemuck" @@ -1181,7 +1182,7 @@ checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -1198,9 +1199,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "bytes-utils" @@ -1224,9 +1225,9 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.12+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "72ebc2f1a417f01e1da30ef264ee86ae31d2dcd2d603ea283d3c244a883ca2a9" dependencies = [ "cc", "libc", @@ -1239,7 +1240,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e779867f62d81627d1438e0d3fb6ed7d7c9d64293ca6d87a1e88781b94ece1c" dependencies = [ - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -1250,9 +1251,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.7" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" +checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" dependencies = [ "jobserver", "libc", @@ -1282,9 +1283,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" +checksum = "9c6ac4f2c0bf0f44e9161aec9675e1050aa4a530663c4a9e37e108fa948bca9f" dependencies = [ "chrono", "chrono-tz-build", @@ -1351,9 +1352,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.24" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" +checksum = "8acebd8ad879283633b343856142139f2da2317c96b05b4dd6181c61e2480184" dependencies = [ "clap_builder", "clap_derive", @@ -1361,9 +1362,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.24" +version = "4.5.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" +checksum = "f6ba32cbda51c7e1dfd49acc1457ba1a7dec5b64fe360e828acb13ca8dc9c2f9" dependencies = [ "anstream", "anstyle", @@ -1373,14 +1374,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -1400,9 +1401,9 @@ checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cmake" -version = "0.1.52" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" dependencies = [ "cc", ] @@ -1441,13 +1442,12 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.1.3" +version = "7.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" +checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" dependencies = [ "crossterm", - "strum 0.26.3", - "strum_macros 0.26.4", + "unicode-segmentation", "unicode-width 0.2.0", ] @@ -1474,8 +1474,8 @@ dependencies = [ name = "common-display" version = "0.3.0-dev0" dependencies = [ - "comfy-table 7.1.3", - "indexmap 2.7.0", + "comfy-table 7.1.4", + "indexmap 2.7.1", "pyo3", "terminal_size", "textwrap", @@ -1490,7 +1490,7 @@ dependencies = [ "pyo3", "regex", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1694,9 +1694,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -1819,7 +1819,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "crossterm_winapi", "parking_lot 0.12.3", "rustix", @@ -1837,9 +1837,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" [[package]] name = "crypto-common" @@ -1890,9 +1890,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] @@ -1904,7 +1904,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -1970,7 +1970,7 @@ dependencies = [ "common-treenode", "daft-dsl", "daft-schema", - "indexmap 2.7.0", + "indexmap 2.7.1", "rstest", ] @@ -2038,7 +2038,7 @@ dependencies = [ "tokio", "tonic", "tracing", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -2062,7 +2062,7 @@ dependencies = [ "bincode", "chrono", "chrono-tz", - "comfy-table 7.1.3", + "comfy-table 7.1.4", "common-arrow-ffi", "common-display", "common-error", @@ -2077,7 +2077,7 @@ dependencies = [ "fnv", "html-escape", "hyperloglog", - "indexmap 2.7.0", + "indexmap 2.7.1", "itertools 0.11.0", "lazy_static", "log", @@ -2149,7 +2149,7 @@ dependencies = [ "daft-core", "daft-sketch", "derive_more", - "indexmap 2.7.0", + "indexmap 2.7.1", "itertools 0.11.0", "pyo3", "serde", @@ -2179,7 +2179,7 @@ dependencies = [ "tiktoken-rs", "tokio", "typetag", - "uuid 1.11.0", + "uuid 1.13.1", "xxhash-rust", ] @@ -2293,7 +2293,7 @@ dependencies = [ "daft-io", "daft-recordbatch", "futures", - "indexmap 2.7.0", + "indexmap 2.7.1", "memchr", "memmap2", "num-traits", @@ -2337,7 +2337,7 @@ dependencies = [ "daft-scan", "daft-writers", "futures", - "indexmap 2.7.0", + "indexmap 2.7.1", "indicatif", "itertools 0.11.0", "kanal", @@ -2386,7 +2386,7 @@ dependencies = [ "daft-functions", "daft-schema", "derivative", - "indexmap 2.7.0", + "indexmap 2.7.1", "itertools 0.11.0", "log", "num-format", @@ -2399,7 +2399,7 @@ dependencies = [ "test-log", "tokio", "typed-builder 0.20.0", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -2463,7 +2463,7 @@ dependencies = [ "daft-recordbatch", "daft-stats", "futures", - "indexmap 2.7.0", + "indexmap 2.7.1", "itertools 0.11.0", "log", "parquet2", @@ -2514,7 +2514,7 @@ name = "daft-recordbatch" version = "0.3.0-dev0" dependencies = [ "arrow2", - "comfy-table 7.1.3", + "comfy-table 7.1.4", "common-arrow-ffi", "common-display", "common-error", @@ -2525,7 +2525,7 @@ dependencies = [ "daft-logical-plan", "futures", "html-escape", - "indexmap 2.7.0", + "indexmap 2.7.1", "num-traits", "pyo3", "rand 0.8.5", @@ -2557,7 +2557,7 @@ dependencies = [ "daft-schema", "daft-stats", "futures", - "indexmap 2.7.0", + "indexmap 2.7.1", "itertools 0.11.0", "parquet2", "pyo3", @@ -2602,7 +2602,7 @@ dependencies = [ "common-version", "derive_more", "html-escape", - "indexmap 2.7.0", + "indexmap 2.7.1", "num-derive", "num-traits", "pyo3", @@ -2617,7 +2617,7 @@ dependencies = [ "daft-catalog", "daft-logical-plan", "pyo3", - "uuid 1.11.0", + "uuid 1.13.1", ] [[package]] @@ -2665,7 +2665,7 @@ dependencies = [ "daft-core", "daft-dsl", "daft-recordbatch", - "indexmap 2.7.0", + "indexmap 2.7.1", "serde", "snafu", ] @@ -2686,6 +2686,26 @@ dependencies = [ "pyo3", ] +[[package]] +name = "daft_dashboard" +version = "0.3.0-dev0" +dependencies = [ + "anyhow", + "chrono", + "clap 4.5.29", + "fork", + "http-body-util", + "hyper 1.6.0", + "hyper-staticfile", + "hyper-util", + "log", + "parking_lot 0.12.3", + "pyo3", + "serde", + "serde_json", + "tokio", +] + [[package]] name = "darling" version = "0.20.10" @@ -2707,7 +2727,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2718,7 +2738,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2791,7 +2811,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2801,7 +2821,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2821,7 +2841,7 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "unicode-xid", ] @@ -2870,7 +2890,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -2881,9 +2901,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "feeef44e73baff3a26d371801df019877a9866a8c493d315ab00177843314f35" [[package]] name = "either" @@ -3089,6 +3109,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" +[[package]] +name = "fork" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05dc8b302e04a1c27f4fe694439ef0f29779ca4edc205b7b58f00db04e29656d" +dependencies = [ + "libc", +] + [[package]] name = "form_urlencoded" version = "1.2.1" @@ -3169,7 +3198,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -3242,6 +3271,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "gif" version = "0.13.1" @@ -3309,7 +3350,7 @@ dependencies = [ "reqwest 0.12.12", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "time", "tokio", "tracing", @@ -3318,12 +3359,12 @@ dependencies = [ [[package]] name = "google-cloud-metadata" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f945a208886a13d07636f38fb978da371d0abc3e34bad338124b9f8c135a8f" +checksum = "d901aeb453fd80e51d64df4ee005014f6cf39f2d736dd64f7239c132d9d39a6a" dependencies = [ "reqwest 0.12.12", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -3353,7 +3394,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "thiserror", + "thiserror 1.0.69", "time", "tokio", "tracing", @@ -3381,7 +3422,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -3400,7 +3441,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.2.0", - "indexmap 2.7.0", + "indexmap 2.7.1", "slab", "tokio", "tokio-util", @@ -3582,6 +3623,12 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + [[package]] name = "http-types" version = "2.12.0" @@ -3604,9 +3651,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -3649,9 +3696,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", @@ -3668,13 +3715,32 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-staticfile" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc4bce64c32578957926e75f832032f81ebb30bcee74f86c5848b13a69e547eb" +dependencies = [ + "futures-util", + "http 1.2.0", + "http-range", + "httpdate", + "hyper 1.6.0", + "mime_guess", + "percent-encoding", + "rand 0.8.5", + "tokio", + "url", + "winapi", +] + [[package]] name = "hyper-timeout" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -3702,7 +3768,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-util", "native-tls", "tokio", @@ -3721,7 +3787,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.2", + "hyper 1.6.0", "pin-project-lite", "socket2", "tokio", @@ -3871,7 +3937,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -3921,9 +3987,9 @@ dependencies = [ [[package]] name = "image-webp" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e031e8e3d94711a9ccb5d6ea357439ef3dcbed361798bd4071dc4d9793fbe22f" +checksum = "b77d01e822461baa8409e156015a1d91735549f0f2c17691bd2d996bef238f7f" dependencies = [ "byteorder-lite", "quick-error 2.0.1", @@ -3941,9 +4007,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.0" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -3952,9 +4018,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.9" +version = "0.17.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf675b85ed934d3c67b5c5469701eec7db22689d0a2139d856e0925fa28b281" +checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" dependencies = [ "console", "number_prefix", @@ -3989,18 +4055,18 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.17" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b31349d02fe60f80bbbab1a9402364cad7460626d6030494b08ac4a2075bf81" +checksum = "54b12ebb6799019b044deaf431eadfe23245b259bba5a2c0796acec3943a3cdb" dependencies = [ "rustversion", ] [[package]] name = "ipnet" -version = "2.10.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "is_ci" @@ -4034,9 +4100,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" dependencies = [ "either", ] @@ -4073,7 +4139,7 @@ dependencies = [ "ahash", "dyn-clone", "hifijson", - "indexmap 2.7.0", + "indexmap 2.7.1", "jaq-syn", "once_cell", "serde_json", @@ -4124,9 +4190,9 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ "once_cell", "wasm-bindgen", @@ -4143,11 +4209,11 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "9.3.0" +version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "js-sys", "pem", "ring 0.17.8", @@ -4376,9 +4442,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" [[package]] name = "lz4" @@ -4502,9 +4568,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +checksum = "b3b1c9bd4fe1f0f8b387f6eb9eb3b4a1aa26185e5750efb9140301703f62cd1b" dependencies = [ "adler2", "simd-adler32", @@ -4551,9 +4617,9 @@ checksum = "97af489e1e21b68de4c390ecca6703318bc1aa16e9733bcb62c089b73c6fbb1b" [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" dependencies = [ "libc", "log", @@ -4739,7 +4805,7 @@ dependencies = [ "num-integer", "num-traits", "pyo3", - "rustc-hash 2.1.0", + "rustc-hash 2.1.1", ] [[package]] @@ -4757,7 +4823,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "sha2", - "thiserror", + "thiserror 1.0.69", "url", ] @@ -4772,15 +4838,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "oneshot" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" +checksum = "79d72a7c0f743d2ebb0a2ad1d219db75fdc799092ed3a884c9144c42a31225bd" [[package]] name = "oorandom" @@ -4790,11 +4856,11 @@ checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "openssl" -version = "0.10.68" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "foreign-types", "libc", @@ -4811,29 +4877,29 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-src" -version = "300.4.1+3.4.0" +version = "300.4.2+3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faa4eac4138c62414b5622d1b31c5c304f34b406b013c079c2bbc652fdd6678c" +checksum = "168ce4e058f975fe43e89d9ccf78ca668601887ae736090aacc23ae353c298e2" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.104" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", @@ -4861,9 +4927,9 @@ checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "outref" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4030760ffd992bef45b0ae3f10ce1aba99e33464c90d14dd7c039884963ddc7a" +checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "overload" @@ -4944,7 +5010,7 @@ dependencies = [ "criterion", "flate2", "futures", - "indexmap 2.7.0", + "indexmap 2.7.1", "lz4", "lz4_flex", "parquet-format-safe", @@ -4953,7 +5019,7 @@ dependencies = [ "serde", "snap 1.1.1", "streaming-decompression", - "thiserror", + "thiserror 1.0.69", "tokio", "xxhash-rust", "zstd 0.12.4", @@ -5045,22 +5111,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5189,9 +5255,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] @@ -5204,7 +5270,7 @@ checksum = "14cae93065090804185d3b75f0bf93b8eeda30c7a9b4a33d3bdb3988d6229e50" dependencies = [ "bit-set 0.8.0", "bit-vec 0.8.0", - "bitflags 2.6.0", + "bitflags 2.8.0", "lazy_static", "num-traits", "rand 0.8.5", @@ -5238,12 +5304,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0fef6c4230e4ccf618a35c59d7ede15dea37de8427500f50aff708806e42ec" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", - "prost-derive 0.13.4", + "prost-derive 0.13.5", ] [[package]] @@ -5274,35 +5340,35 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "157c5a9d7ea5c2ed2d9fb8f495b64759f7816c7eaea54ba3978f0d63000162e3" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.13.0", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "prost-types" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2f1e56baa61e93533aebc21af4d2134b70f66275e0fcdf3cbe43d77ff7e8fc" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ - "prost 0.13.4", + "prost 0.13.5", ] [[package]] name = "pyo3" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e484fd2c8b4cb67ab05a318f1fd6fa8f199fcc30819f08f07d200809dba26c15" +checksum = "57fe09249128b3173d092de9523eaa75136bf7ba85e0d69eca241c7939c933cc" dependencies = [ "cfg-if", "chrono", - "indexmap 2.7.0", + "indexmap 2.7.1", "indoc", "inventory", "libc", @@ -5317,9 +5383,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e0469a84f208e20044b98965e1561028180219e35352a2afaf2b942beff3b" +checksum = "1cd3927b5a78757a0d71aa9dff669f903b1eb64b54142a9bd9f757f8fde65fd7" dependencies = [ "once_cell", "target-lexicon", @@ -5327,9 +5393,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1547a7f9966f6f1a0f0227564a9945fe36b90da5a93b3933fc3dc03fae372d" +checksum = "dab6bb2102bd8f991e7749f130a70d05dd557613e39ed2deeee8e9ca0c4d548d" dependencies = [ "libc", "pyo3-build-config", @@ -5348,27 +5414,27 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb6da8ec6fa5cedd1626c886fc8749bdcbb09424a86461eb8cdf096b7c33257" +checksum = "91871864b353fd5ffcb3f91f2f703a22a9797c91b9ab497b1acac7b07ae509c7" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "pyo3-macros-backend" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38a385202ff5a92791168b1136afae5059d3ac118457bb7bc304c197c2d33e7d" +checksum = "43abc3b80bc20f3facd86cd3c60beed58c3e2aa26213f3cda368de39c60a27e4" dependencies = [ "heck 0.5.0", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5544,7 +5610,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -5564,7 +5630,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -5673,7 +5739,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -5714,7 +5780,7 @@ dependencies = [ "http 1.2.0", "reqwest 0.12.12", "serde", - "thiserror", + "thiserror 1.0.69", "tower-service", ] @@ -5729,7 +5795,7 @@ dependencies = [ "futures", "getrandom 0.2.15", "http 1.2.0", - "hyper 1.5.2", + "hyper 1.6.0", "parking_lot 0.11.2", "reqwest 0.12.12", "reqwest-middleware", @@ -5809,7 +5875,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.95", + "syn 2.0.98", "unicode-ident", ] @@ -5827,9 +5893,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -5842,11 +5908,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.43" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys", @@ -5873,9 +5939,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustversion" @@ -5897,9 +5963,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "same-file" @@ -6001,7 +6067,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6019,7 +6085,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "core-foundation", "core-foundation-sys", "libc", @@ -6038,9 +6104,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.24" +version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" +checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" [[package]] name = "seq-macro" @@ -6078,16 +6144,16 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] name = "serde_json" -version = "1.0.135" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ - "indexmap 2.7.0", + "indexmap 2.7.1", "itoa", "memchr", "ryu", @@ -6112,7 +6178,7 @@ checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" dependencies = [ "percent-encoding", "serde", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6216,13 +6282,13 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint 0.4.6", "num-traits", - "thiserror", + "thiserror 2.0.11", "time", ] @@ -6316,7 +6382,7 @@ dependencies = [ name = "spark-connect" version = "0.3.0-dev0" dependencies = [ - "prost 0.13.4", + "prost 0.13.5", "prost-types", "tonic", ] @@ -6447,7 +6513,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6478,9 +6544,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.95" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -6522,7 +6588,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6568,7 +6634,7 @@ checksum = "257822358c6f206fed78bfe6369cf959063b0644d70f88df6b19f2dadc93423e" dependencies = [ "alloca", "anyhow", - "clap 4.5.24", + "clap 4.5.29", "colorz", "glob-match", "goblin", @@ -6578,7 +6644,7 @@ dependencies = [ "rand 0.8.5", "scroll", "tempfile", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6595,13 +6661,13 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.15.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if", "fastrand 2.3.0", - "getrandom 0.2.15", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -6619,9 +6685,9 @@ dependencies = [ [[package]] name = "test-log" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dffced63c2b5c7be278154d76b479f9f9920ed34e7574201407f0b14e2bbb93" +checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" dependencies = [ "env_logger 0.11.6", "test-log-macros", @@ -6630,13 +6696,13 @@ dependencies = [ [[package]] name = "test-log-macros" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5" +checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6656,7 +6722,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] @@ -6667,7 +6742,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", ] [[package]] @@ -6830,7 +6916,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -6883,12 +6969,12 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.2", + "hyper 1.6.0", "hyper-timeout", "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.4", + "prost 0.13.5", "socket2", "tokio", "tokio-stream", @@ -6965,7 +7051,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -7062,7 +7148,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -7098,7 +7184,7 @@ checksum = "d9d30226ac9cbd2d1ff775f74e8febdab985dab14fb14aa2582c29a92d5555dc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -7124,9 +7210,9 @@ checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-linebreak" @@ -7239,19 +7325,19 @@ dependencies = [ [[package]] name = "uuid" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.1", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-trait" @@ -7285,9 +7371,9 @@ checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -7329,36 +7415,46 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.49" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", @@ -7369,9 +7465,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7379,22 +7475,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.99" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-streams" @@ -7426,9 +7525,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.76" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -7520,7 +7619,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -7531,7 +7630,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -7731,6 +7830,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -7790,7 +7898,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "synstructure 0.13.1", ] @@ -7833,7 +7941,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] @@ -7853,7 +7961,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", "synstructure 0.13.1", ] @@ -7882,7 +7990,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.95", + "syn 2.0.98", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e9bd309299..44ce023190 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -179,8 +179,8 @@ members = [ "src/daft-writers", "src/hyperloglog", "src/parquet2", - # "src/spark-connect-script", - "src/generated/spark-connect" + "src/generated/spark-connect", + "daft_dashboard" ] [workspace.dependencies] diff --git a/Makefile b/Makefile index a9b7cfdbe0..e422b6fecc 100644 --- a/Makefile +++ b/Makefile @@ -62,6 +62,14 @@ build: check-toolchain .venv ## Compile and install Daft for development build-release: check-toolchain .venv ## Compile and install a faster Daft binary @unset CONDA_PREFIX && PYO3_PYTHON=$(VENV_BIN)/python $(VENV_BIN)/maturin develop --release --uv +.PHONY: daft-dashboard +daft-dashboard: check-toolchain .venv ## Compile and install Daft for development + @unset CONDA_PREFIX && PYO3_PYTHON=$(VENV_BIN)/python && cd daft_dashboard && ../$(VENV_BIN)/maturin develop --extras=all --uv + +.PHONY: daft-dashboard-release +daft-dashboard-release: check-toolchain .venv ## Compile and install Daft for development + @unset CONDA_PREFIX && PYO3_PYTHON=$(VENV_BIN)/python && cd daft_dashboard && ../$(VENV_BIN)/maturin develop --extras=all --release --uv + .PHONY: test test: .venv build ## Run tests HYPOTHESIS_MAX_EXAMPLES=$(HYPOTHESIS_MAX_EXAMPLES) $(VENV_BIN)/pytest --hypothesis-seed=$(HYPOTHESIS_SEED) @@ -78,6 +86,14 @@ docs: .venv sphinx-docs ## Build both MkDocs and Sphinx documentation sphinx-docs: .venv ## Build Sphinx API documentation uv run --with-requirements requirements-docs.txt sphinx-build -b html "docs/sphinx/source" "docs/sphinx/_build" +.PHONY: daft-dashboard-assets +daft-dashboard-assets: .venv + cd daft_dashboard/frontend && bun run build + if [ -d daft_dashboard/daft_dashboard/static-dashboard-assets ]; then \ + rm -rf daft_dashboard/daft_dashboard/static-dashboard-assets; \ + fi + mv daft_dashboard/frontend/out daft_dashboard/daft_dashboard/static-dashboard-assets + .PHONY: clean clean: rm -rf $(VENV) diff --git a/daft/dashboard.py b/daft/dashboard.py new file mode 100644 index 0000000000..817a492231 --- /dev/null +++ b/daft/dashboard.py @@ -0,0 +1,93 @@ +from __future__ import annotations + +import json +import os +import uuid +import warnings +from typing import TYPE_CHECKING +from urllib import request +from urllib.error import URLError + +if TYPE_CHECKING: + from datetime import datetime + + +def dashboard_module(): + try: + import daft_dashboard + except ImportError: + warnings.warn( + "Unable to import Daft's dashboard features" + "Consider re-installing Daft with the 'dashboard' feature installed, e.g.:" + 'pip install "getdaft[dashboard]"' + ) + raise + + if not daft_dashboard.__file__: + raise ImportError + + return daft_dashboard + + +def _should_run() -> bool: + try: + dashboard = dashboard_module() + except ImportError: + return False + + enable_dashboard_str = os.environ.get(dashboard.DAFT_DASHBOARD_ENV_NAME) + + if not enable_dashboard_str: + return False + try: + enable_dashboard = int(enable_dashboard_str) + except ValueError: + return False + if not enable_dashboard: + return False + + return True + + +def _broadcast_query_plan( + mermaid_plan: str, + plan_time_start: datetime, + plan_time_end: datetime, +): + dashboard = dashboard_module() + + # try launching the dashboard + # if dashboard is already launched, this will do nothing + dashboard.launch(detach=True, noop_if_initialized=True) + + headers = { + "Content-Type": "application/json", + } + data = json.dumps( + { + "id": str(uuid.uuid4()), + "mermaid_plan": mermaid_plan, + "plan_time_start": str(plan_time_start), + "plan_time_end": str(plan_time_end), + } + ).encode("utf-8") + req = request.Request(dashboard.DAFT_DASHBOARD_QUERIES_URL, headers=headers, data=data) + + try: + request.urlopen(req, timeout=1) + except URLError as e: + warnings.warn(f"Failed to broadcast metrics over {dashboard.DAFT_DASHBOARD_QUERIES_URL}: {e}") + + +try: + dashboard = dashboard_module() + from dashboard import cli, launch, shutdown + + # re-export all of the symbols defined inside of `daft_dashboard` + __all__ = [ + "cli", + "launch", + "shutdown", + ] +except Exception: + ... diff --git a/daft/dataframe/dataframe.py b/daft/dataframe/dataframe.py index 10d66f0eb9..42b376d60b 100644 --- a/daft/dataframe/dataframe.py +++ b/daft/dataframe/dataframe.py @@ -11,6 +11,7 @@ import typing import warnings from dataclasses import dataclass +from datetime import datetime, timezone from functools import partial, reduce from typing import ( TYPE_CHECKING, @@ -158,6 +159,26 @@ def _result(self) -> Optional[PartitionSet]: else: return self._result_cache.value + def _broadcast_query_plan(self): + from daft import dashboard + from daft.dataframe.display import MermaidFormatter + + if not dashboard._should_run(): + return + + is_cached = self._result_cache is not None + plan_time_start = datetime.now(timezone.utc) + mermaid_plan: str = MermaidFormatter( + builder=self.__builder, show_all=True, simple=False, is_cached=is_cached + )._repr_markdown_() + plan_time_end = datetime.now(timezone.utc) + + dashboard._broadcast_query_plan( + mermaid_plan, + plan_time_start, + plan_time_end, + ) + @DataframePublicAPI def explain( self, show_all: bool = False, format: str = "ascii", simple: bool = False, file: Optional[io.IOBase] = None @@ -2846,6 +2867,7 @@ def collect(self, num_preview_rows: Optional[int] = 8) -> "DataFrame": DataFrame: DataFrame with materialized results. """ self._materialize_results() + self._broadcast_query_plan() assert self._result is not None dataframe_len = len(self._result) @@ -2917,6 +2939,8 @@ def show(self, n: int = 8) -> None: n: number of rows to show. Defaults to 8. """ dataframe_display = self._construct_show_display(n) + self._broadcast_query_plan() + try: from IPython.display import display diff --git a/daft_dashboard/Cargo.toml b/daft_dashboard/Cargo.toml new file mode 100644 index 0000000000..09d8392921 --- /dev/null +++ b/daft_dashboard/Cargo.toml @@ -0,0 +1,32 @@ +[dependencies] +anyhow = "1.0" +chrono = {workspace = true, features = ["serde"]} +clap = {version = "4.5.28", features = ["derive"]} +http-body-util = "0.1" +hyper = {features = ["full"], version = "1.6"} +hyper-staticfile = "0.10.1" +hyper-util = {features = ["tokio"], version = "0.1"} +parking_lot = "0.12" +pyo3 = {workspace = true, optional = true} +serde_json = "1.0" +log.workspace = true +serde.workspace = true +tokio.workspace = true + +[features] +python = ["dep:pyo3"] + +[lib] +crate-type = ["cdylib", "lib"] +name = "daft_dashboard" + +[lints] +workspace = true + +[package] +name = "daft_dashboard" +edition.workspace = true +version.workspace = true + +[target.'cfg(unix)'.dependencies] +fork = "0.2" diff --git a/daft_dashboard/daft_dashboard/__init__.py b/daft_dashboard/daft_dashboard/__init__.py new file mode 100644 index 0000000000..c2015b6bbb --- /dev/null +++ b/daft_dashboard/daft_dashboard/__init__.py @@ -0,0 +1,66 @@ +from __future__ import annotations + +import os +from pathlib import Path +from . import daft_dashboard as native +from importlib import resources + + +DAFT_DASHBOARD_ENV_NAME = "DAFT_DASHBOARD" +DAFT_DASHBOARD_QUERIES_URL = "http://localhost:3238/api/queries" +DAFT_DASHBOARD_URL_SHUTDOWN = "http://localhost:3238/api/shutdown" + + +def _static_assets_path() -> Path: + path = Path(str(resources.files("daft_dashboard"))) / "static-dashboard-assets" + + if not path.exists(): + raise ImportError( + "Unable to serve daft-dashboard's static assets because they couldn't be found" + "Consider re-installing Daft with the 'dashboard' feature installed, e.g.:" + 'pip install "getdaft[dashboard]"' + ) + + return path + + +def launch(detach: bool = False, noop_if_initialized: bool = False): + """Launches the Daft dashboard server on port 3238. + + The server serves HTML/CSS/JS bundles, so you are able to point your browser towards `http://localhost:3238` and view information regarding your queries. + + # Arguments: + - detach: bool = False + Will detach the Daft dashboard server process from this current process. + This make this API non-blocking; otherwise, this API is blocking. + - noop_if_initialized: bool = False + Will not throw an exception a Daft dashboard server process is already launched and running. + Otherwise, an exception will be thrown. + """ + os.environ[DAFT_DASHBOARD_ENV_NAME] = "1" + path = _static_assets_path() + native.launch(static_assets_path=str(path), detach=detach, noop_if_initialized=noop_if_initialized) + + +def shutdown(noop_if_shutdown: bool = False): + """Sends a signal to the Daft dashboard server to shutdown. + + # Arguments: + - noop_if_shutdown: bool = False + Will not throw an exception the Daft dashboard server process was already shut down. + Otherwise, an exception will be thrown. + + # Exceptions + Will raise a runtime error if the Daft dashboard server responds with an error code after being requested to shutdown. + """ + os.environ[DAFT_DASHBOARD_ENV_NAME] = "1" + native.shutdown(noop_if_shutdown=noop_if_shutdown) + + +def cli(): + """Runs the Daft dashboard CLI.""" + import sys + + os.environ[DAFT_DASHBOARD_ENV_NAME] = "1" + path = _static_assets_path() + native.cli(sys.argv, static_assets_path=str(path)) diff --git a/daft_dashboard/daft_dashboard/daft_dashboard/__init__.pyi b/daft_dashboard/daft_dashboard/daft_dashboard/__init__.pyi new file mode 100644 index 0000000000..530c314c0f --- /dev/null +++ b/daft_dashboard/daft_dashboard/daft_dashboard/__init__.pyi @@ -0,0 +1,7 @@ +DAFT_DASHBOARD_ENV_NAME: str +DAFT_DASHBOARD_QUERIES_URL: str +DAFT_DASHBOARD_URL_SHUTDOWN: str + +def launch(static_assets_path: str, detach: bool = False, noop_if_initialized: bool = False): ... +def shutdown(noop_if_shutdown: bool = False): ... +def cli(args: list[str], static_assets_path: str): ... diff --git a/daft_dashboard/daft_dashboard/static-dashboard-assets/404.html b/daft_dashboard/daft_dashboard/static-dashboard-assets/404.html new file mode 100644 index 0000000000..7d0d636eca --- /dev/null +++ b/daft_dashboard/daft_dashboard/static-dashboard-assets/404.html @@ -0,0 +1 @@ +