diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 289c68abf4..bfb097865a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -50,3 +50,10 @@ repos: - id: check-xml - id: check-yaml - id: detect-private-key + - repo: local + hooks: + - id: cargo-fmt + name: cargo fmt + entry: cargo fmt + language: system + pass_filenames: false diff --git a/.vscode/settings.json b/.vscode/settings.json index 98bec04aa1..4666699e28 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -319,6 +319,28 @@ "[jsonc]": { "editor.defaultFormatter": "vscode.json-language-features" }, + "rust-analyzer.check.overrideCommand": [ + "pixi", + "run", + "cargo", + "check", + "--quiet", + "--workspace", + "--message-format=json", + "--all-targets", + "--keep-going" + ], + "rust-analyzer.cargo.buildScripts.overrideCommand": [ + "pixi", + "run", + "cargo", + "check", + "--quiet", + "--workspace", + "--message-format=json", + "--all-targets", + "--keep-going" + ], "search.exclude": { "build": true, "install": true, diff --git a/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock b/Cargo.lock similarity index 57% rename from src/bitbots_navigation/bitbots_rust_nav/Cargo.lock rename to Cargo.lock index 4269847ab8..2d53a6eb28 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 4 [[package]] name = "ab_glyph" -version = "0.2.29" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3672c180e71eeaaac3a541fbbc5f5ad4def8b747c595ad30d674e43049f7b0" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,9 +14,9 @@ dependencies = [ [[package]] name = "ab_glyph_rasterizer" -version = "0.1.8" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" @@ -45,7 +45,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f47983a1084940ba9a39c077a8c63e55c619388be5476ac04c804cfbd1e63459" dependencies = [ "accesskit", - "hashbrown", + "hashbrown 0.15.5", "immutable-chunkmap", ] @@ -57,7 +57,7 @@ checksum = "7329821f3bd1101e03a7d2e03bd339e3ac0dc64c70b4c9f9ae1949e3ba8dece1" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown", + "hashbrown 0.15.5", "objc2 0.5.2", "objc2-app-kit 0.2.2", "objc2-foundation 0.2.2", @@ -89,7 +89,7 @@ checksum = "24fcd5d23d70670992b823e735e859374d694a3d12bfd8dd32bd3bd8bedb5d81" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown", + "hashbrown 0.15.5", "paste", "static_assertions", "windows", @@ -123,12 +123,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom 0.3.3", + "getrandom 0.3.4", "once_cell", "version_check", "zerocopy", ] +[[package]] +name = "aho-corasick" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" +dependencies = [ + "memchr", +] + [[package]] name = "allocator-api2" version = "0.2.21" @@ -137,23 +146,21 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-activity" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" +checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd" dependencies = [ "android-properties", - "bitflags 2.9.1", + "bitflags 2.13.1", "cc", - "cesu8", "jni", - "jni-sys", "libc", "log", "ndk", "ndk-context", "ndk-sys 0.6.0+11769913", "num_enum", - "thiserror 1.0.69", + "thiserror 2.0.20", ] [[package]] @@ -164,13 +171,80 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] +[[package]] +name = "ansi-to-tui" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b0e348dcd256ba06d44d5deabc88a7c0e80ee7303158253ca069bcd9e9b7f57" +dependencies = [ + "nom", + "ratatui", + "thiserror 1.0.69", +] + +[[package]] +name = "anstream" +version = "0.6.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" + [[package]] name = "approx" version = "0.5.1" @@ -182,21 +256,21 @@ dependencies = [ [[package]] name = "arboard" -version = "3.5.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1df21f715862ede32a0c525ce2ca4d52626bb0007f8c18b87a384503ac33e70" +checksum = "0348a1c054491f4bfe6ab86a7b6ab1e44e45d899005de92f58b3df180b36ddaf" dependencies = [ "clipboard-win", "image", "log", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "parking_lot", "percent-encoding", - "windows-sys 0.59.0", + "windows-sys 0.60.2", "x11rb", ] @@ -208,9 +282,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-raw-xcb-connection" @@ -241,9 +315,9 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" dependencies = [ "concurrent-queue", "event-listener-strategy", @@ -253,9 +327,9 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.13.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a" dependencies = [ "async-task", "concurrent-queue", @@ -267,9 +341,9 @@ dependencies = [ [[package]] name = "async-fs" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" dependencies = [ "async-lock", "blocking", @@ -278,28 +352,27 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" dependencies = [ - "async-lock", + "autocfg", "cfg-if", "concurrent-queue", "futures-io", "futures-lite", "parking", "polling", - "rustix 1.0.7", + "rustix 1.1.4", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "async-lock" -version = "3.4.0" +version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ "event-listener", "event-listener-strategy", @@ -308,9 +381,9 @@ dependencies = [ [[package]] name = "async-process" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde3f4e40e6021d7acffc90095cbd6dc54cb593903d1de5832f435eb274b85dc" +checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" dependencies = [ "async-channel", "async-io", @@ -321,8 +394,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 1.0.7", - "tracing", + "rustix 1.1.4", ] [[package]] @@ -333,14 +405,14 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "async-signal" -version = "0.2.11" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7605a4e50d4b06df3898d5a70bf5fde51ed9059b0434b73105193bc27acce0d" +checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485" dependencies = [ "async-io", "async-lock", @@ -348,10 +420,10 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.0.7", + "rustix 1.1.4", "signal-hook-registry", "slab", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -362,13 +434,22 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", +] + +[[package]] +name = "atomic" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89cbf775b137e9b968e67227ef7f775587cde3fd31b0d8599dbd0f598a48340" +dependencies = [ + "bytemuck", ] [[package]] @@ -430,9 +511,44 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bindgen" +version = "0.71.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3" +dependencies = [ + "bitflags 2.13.1", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.3", + "shlex 1.3.0", + "syn 2.0.119", +] + +[[package]] +name = "bit-set" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec 0.6.3", +] [[package]] name = "bit-set" @@ -440,9 +556,15 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec", + "bit-vec 0.8.0", ] +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + [[package]] name = "bit-vec" version = "0.8.0" @@ -450,15 +572,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] -name = "bitbots_rust_nav" -version = "0.2.0" +name = "bitbots_extrinsic_calibration" +version = "0.1.0" +dependencies = [ + "futures", + "glam", + "r2r", + "tokio", +] + +[[package]] +name = "bitbots_global_planner" +version = "0.1.2" dependencies = [ "eframe", "geo", "keyed_priority_queue", "ordered-float", "pyo3", - "rand 0.9.3", + "rand 0.9.5", ] [[package]] @@ -469,11 +601,11 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ - "serde", + "serde_core", ] [[package]] @@ -502,9 +634,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ "async-channel", "async-task", @@ -515,28 +647,34 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.18.1" +version = "3.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" + +[[package]] +name = "by_address" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" +checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" [[package]] name = "bytemuck" -version = "1.23.1" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.9.3" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ecc273b49b3205b83d648f0690daa588925572cc5063745bfe547fe7ec8e1a1" +checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -553,9 +691,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "calloop" @@ -563,7 +701,7 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "log", "polling", "rustix 0.38.44", @@ -571,46 +709,84 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "calloop" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7" +dependencies = [ + "bitflags 2.13.1", + "polling", + "rustix 1.1.4", + "slab", + "tracing", +] + [[package]] name = "calloop-wayland-source" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" dependencies = [ - "calloop", + "calloop 0.13.0", "rustix 0.38.44", "wayland-backend", "wayland-client", ] +[[package]] +name = "calloop-wayland-source" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" +dependencies = [ + "calloop 0.14.4", + "rustix 1.1.4", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "castaway" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" +dependencies = [ + "rustversion", +] + [[package]] name = "cc" -version = "1.2.27" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e" dependencies = [ + "find-msvc-tools", "jobserver", "libc", - "shlex", + "shlex 2.0.1", ] [[package]] -name = "cesu8" -version = "1.1.0" +name = "cexpr" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "cgl" @@ -621,11 +797,62 @@ dependencies = [ "libc", ] +[[package]] +name = "clang-sys" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" +dependencies = [ + "glob", + "libc", + "libloading", +] + +[[package]] +name = "clap" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim 0.10.0", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + [[package]] name = "clipboard-win" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" +checksum = "bde03770d3df201d4fb868f2c9c59e66a3e4e2bd06692a0fe701e7103c7e84d4" dependencies = [ "error-code", ] @@ -637,9 +864,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" dependencies = [ "termcolor", - "unicode-width", + "unicode-width 0.1.14", ] +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + [[package]] name = "combine" version = "4.6.7" @@ -650,6 +883,20 @@ dependencies = [ "memchr", ] +[[package]] +name = "compact_str" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dfdd1c2274d9aa354115b09dc9a901d6c5576818cdf70d14cae2bdb47df00ab" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "static_assertions", +] + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -660,20 +907,19 @@ dependencies = [ ] [[package]] -name = "core-foundation" -version = "0.9.4" +name = "convert_case" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ - "core-foundation-sys", - "libc", + "unicode-segmentation", ] [[package]] name = "core-foundation" -version = "0.10.1" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -692,7 +938,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.4", + "core-foundation", "core-graphics-types", "foreign-types", "libc", @@ -705,7 +951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation 0.9.4", + "core-foundation", "libc", ] @@ -720,18 +966,24 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -739,109 +991,237 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] -name = "crypto-common" -version = "0.1.6" +name = "crossterm" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "generic-array", - "typenum", + "bitflags 2.13.1", + "crossterm_winapi", + "futures-core", + "mio", + "parking_lot", + "rustix 0.38.44", + "signal-hook", + "signal-hook-mio", + "winapi", ] [[package]] -name = "cursor-icon" -version = "1.2.0" +name = "crossterm" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" +dependencies = [ + "bitflags 2.13.1", + "crossterm_winapi", + "derive_more", + "document-features", + "mio", + "parking_lot", + "rustix 1.1.4", + "signal-hook", + "signal-hook-mio", + "winapi", +] [[package]] -name = "digest" -version = "0.10.7" +name = "crossterm_winapi" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" dependencies = [ - "block-buffer", - "crypto-common", + "winapi", ] [[package]] -name = "dispatch" -version = "0.2.0" +name = "crunchy" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] -name = "dispatch2" -version = "0.3.0" +name = "crypto-common" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89a09f22a6c6069a18470eb92d2298acf25463f14256d24778e1230d789a2aec" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "generic-array", + "typenum", ] [[package]] -name = "displaydoc" -version = "0.2.5" +name = "csscolorparser" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf" dependencies = [ - "proc-macro2", - "quote", - "syn", + "lab", + "phf", ] [[package]] -name = "dlib" -version = "0.5.2" +name = "cursor-icon" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" + +[[package]] +name = "darling" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "88490bf1b990d87eaaa7ac8aa887f629a08e7359765b4911faf63c3763347d23" dependencies = [ - "libloading", + "darling_core", + "darling_macro", ] [[package]] -name = "document-features" -version = "0.2.11" +name = "darling_core" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +checksum = "084e274f91c482280130e1e34e0b8d6e66776a060d7b6de7b84289ca778868c4" dependencies = [ - "litrs", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.11.1", + "syn 3.0.3", ] [[package]] -name = "downcast-rs" -version = "1.2.1" +name = "darling_macro" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +checksum = "68f5792fa0d41cd2325ce0ffa64f0a340eaebd4971a3a0c5e1ffd2cc488a355e" +dependencies = [ + "darling_core", + "quote", + "syn 3.0.3", +] [[package]] -name = "dpi" -version = "0.1.2" +name = "deltae" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +checksum = "5729f5117e208430e437df2f4843f5e5952997175992d1414f94c57d61e270b4" [[package]] -name = "earcutr" +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.119", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.13.1", + "objc2 0.6.4", +] + +[[package]] +name = "displaydoc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.3", +] + +[[package]] +name = "dlib" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a" +dependencies = [ + "libloading", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" + +[[package]] +name = "earcutr" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" dependencies = [ - "itertools", + "itertools 0.11.0", "num-traits", ] @@ -899,7 +1279,7 @@ checksum = "25dd34cec49ab55d85ebf70139cb1ccd29c977ef6b6ba4fe85489d6877ee9ef3" dependencies = [ "accesskit", "ahash", - "bitflags 2.9.1", + "bitflags 2.13.1", "emath", "epaint", "log", @@ -967,9 +1347,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" [[package]] name = "emath" @@ -982,9 +1362,9 @@ dependencies = [ [[package]] name = "endi" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" [[package]] name = "enumflags2" @@ -1004,7 +1384,7 @@ checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1039,12 +1419,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.12" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1053,13 +1433,21 @@ version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" +[[package]] +name = "euclid" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06" +dependencies = [ + "num-traits", +] + [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" dependencies = [ - "concurrent-queue", "parking", "pin-project-lite", ] @@ -1074,11 +1462,27 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fancy-regex" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b95f7c0680e4142284cf8b22c14a476e87d61b004a3a0861872b32ef7ead40a2" +dependencies = [ + "bit-set 0.5.3", + "regex", +] + [[package]] name = "fastrand" -version = "2.3.0" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" + +[[package]] +name = "fax" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a" [[package]] name = "fdeflate" @@ -1089,11 +1493,40 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "filedescriptor" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d" +dependencies = [ + "libc", + "thiserror 1.0.69", + "winapi", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" + +[[package]] +name = "finl_unicode" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5" + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + [[package]] name = "flate2" -version = "1.1.2" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" dependencies = [ "crc32fast", "miniz_oxide", @@ -1105,12 +1538,30 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foldhash" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "force-send-sync" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5682bd193aa441fe571a005561e0c0ada74f89ec2dc390483a6ff17c0665b9" + [[package]] name = "foreign-types" version = "0.5.0" @@ -1123,13 +1574,13 @@ dependencies = [ [[package]] name = "foreign-types-macros" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -1140,30 +1591,66 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] +[[package]] +name = "futures" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" +dependencies = [ + "futures-core", + "futures-sink", +] + [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" + +[[package]] +name = "futures-executor" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" dependencies = [ "fastrand", "futures-core", @@ -1174,33 +1661,34 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ + "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -1208,7 +1696,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -1242,57 +1729,69 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.16" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ddb1950450d67efee2bbc5e429c68d052a822de3aad010d28b351fbb705224" +checksum = "777d18aa0f12f8b285331cd867133ee14422b3f023f6d388034c47d43e28786a" dependencies = [ "approx", "num-traits", "rayon", "rstar", "serde", + "thiserror 2.0.20", ] [[package]] name = "geographiclib-rs" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f611040a2bb37eaa29a78a128d1e92a378a03e0b6e66ae27398d42b1ba9a7841" +checksum = "c5a7f08910fd98737a6eda7568e7c5e645093e073328eeef49758cfe8b0489c7" dependencies = [ "libm", ] [[package]] name = "gethostname" -version = "0.4.3" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" +dependencies = [ + "rustix 1.1.4", + "windows-link", +] + +[[package]] +name = "getrandom" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ + "cfg-if", "libc", - "windows-targets 0.48.5", + "wasi", ] [[package]] name = "getrandom" -version = "0.2.16" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "wasi 0.11.1+wasi-snapshot-preview1", + "r-efi 5.3.0", + "wasip2", ] [[package]] name = "getrandom" -version = "0.3.3" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "r-efi 6.0.0", ] [[package]] @@ -1306,6 +1805,18 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "glam" +version = "0.30.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19fc433e8437a212d1b6f1e68c7824af3aed907da60afa994e7f542d18d12aa9" + +[[package]] +name = "glob" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" + [[package]] name = "glow" version = "0.16.0" @@ -1324,7 +1835,7 @@ version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12124de845cacfebedff80e877bb37b5b75c34c5a4c89e47e1cdd67fb6041325" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "cfg_aliases", "cgl", "dispatch2", @@ -1332,10 +1843,10 @@ dependencies = [ "glutin_glx_sys", "glutin_wgl_sys", "libloading", - "objc2 0.6.1", - "objc2-app-kit 0.3.1", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", "objc2-core-foundation", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", "once_cell", "raw-window-handle", "wayland-sys", @@ -1386,21 +1897,21 @@ dependencies = [ [[package]] name = "gpu-alloc" -version = "0.6.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +checksum = "45cf04b2726f02df5508c6de726acdc90cdf97ac771a9a0ffd8ba10a6e696bf9" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "gpu-alloc-types", ] [[package]] name = "gpu-alloc-types" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +checksum = "b2bbed164dd10ed526c2e4fe3e721ca4a71c61730e5aafac6844b417b3227058" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", ] [[package]] @@ -1409,9 +1920,9 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "gpu-descriptor-types", - "hashbrown", + "hashbrown 0.15.5", ] [[package]] @@ -1420,7 +1931,18 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", +] + +[[package]] +name = "half" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" +dependencies = [ + "cfg-if", + "crunchy", + "zerocopy", ] [[package]] @@ -1434,13 +1956,33 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.2.0", ] [[package]] @@ -1453,6 +1995,12 @@ 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" @@ -1523,12 +2071,13 @@ checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1536,9 +2085,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1549,11 +2098,10 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -1564,42 +2112,38 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.0.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.0.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", - "stable_deref_trait", - "tinystr", "writeable", "yoke", "zerofrom", @@ -1607,11 +2151,17 @@ dependencies = [ "zerovec", ] +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1620,9 +2170,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -1630,12 +2180,13 @@ dependencies = [ [[package]] name = "image" -version = "0.25.6" +version = "0.25.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104" dependencies = [ "bytemuck", "byteorder-lite", + "moxcms", "num-traits", "png", "tiff", @@ -1643,80 +2194,183 @@ dependencies = [ [[package]] name = "immutable-chunkmap" -version = "2.0.6" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" +checksum = "45b30d0eb3d4282f694894b75bc50807ab6e3203436681cc235fa364acf7f5e1" dependencies = [ "arrayvec", ] [[package]] name = "indexmap" -version = "2.9.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.17.1", ] [[package]] -name = "itertools" -version = "0.11.0" +name = "indoc" +version = "2.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" dependencies = [ - "either", + "rustversion", ] [[package]] -name = "jni" -version = "0.21.1" +name = "instability" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "2bf84e73fa6f27f299dec58e13223cf70db80da872eb921d4f6138342a0eabc8" dependencies = [ - "cesu8", - "cfg-if", - "combine", - "jni-sys", - "log", - "thiserror 1.0.69", - "walkdir", - "windows-sys 0.45.0", + "darling", + "indoc", + "proc-macro2", + "quote", + "syn 3.0.3", ] [[package]] -name = "jni-sys" -version = "0.3.0" +name = "is_terminal_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" [[package]] -name = "jobserver" -version = "0.1.33" +name = "itertools" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ - "getrandom 0.3.3", - "libc", + "either", ] [[package]] -name = "jpeg-decoder" -version = "0.3.1" +name = "itertools" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] [[package]] -name = "js-sys" -version = "0.3.77" +name = "itertools" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ - "once_cell", + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "jni" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498" +dependencies = [ + "cfg-if", + "combine", + "jni-macros", + "jni-sys 0.4.1", + "log", + "simd_cesu8", + "thiserror 2.0.20", + "walkdir", + "windows-link", +] + +[[package]] +name = "jni-macros" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "simd_cesu8", + "syn 2.0.119", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.119", +] + +[[package]] +name = "jobserver" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" +dependencies = [ + "getrandom 0.4.3", + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" +dependencies = [ + "cfg-if", + "futures-util", "wasm-bindgen", ] +[[package]] +name = "kasuari" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde5057d6143cc94e861d90f591b9303d6716c6b9602309150bd068853c10899" +dependencies = [ + "hashbrown 0.16.1", + "portable-atomic", + "thiserror 2.0.20", +] + [[package]] name = "keyed_priority_queue" version = "0.4.2" @@ -1743,37 +2397,59 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" +[[package]] +name = "lab" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf36173d4167ed999940f804952e6b08197cae5ad5d572eb4db150ce8ad5d58f" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" -version = "0.2.174" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libloading" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" dependencies = [ "cfg-if", - "windows-targets 0.53.2", + "windows-link", ] [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "libc", - "redox_syscall 0.5.13", + "plain", + "redox_syscall 0.9.1", +] + +[[package]] +name = "line-clipping" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e752191d037c44ad111a8caa762921926658402f01cc1253f7bef2020ece4f5e" +dependencies = [ + "bitflags 2.13.1", ] [[package]] @@ -1784,37 +2460,55 @@ checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" [[package]] name = "linux-raw-sys" -version = "0.9.4" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" -version = "0.4.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "lock_api" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.27" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" + +[[package]] +name = "lru" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2f2f9b4ba7e6b24d95e7e899329d35be83bcded72c8540cdd5368932d1d90a" +dependencies = [ + "hashbrown 0.17.1", +] + +[[package]] +name = "mac_address" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "c0aeb26bf5e836cc1c341c8106051b573f1766dfa05aa87f0b98be5e51b02303" +dependencies = [ + "nix 0.29.0", + "winapi", +] [[package]] name = "malloc_buf" @@ -1827,19 +2521,25 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.5" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0" dependencies = [ "libc", ] +[[package]] +name = "memmem" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15" + [[package]] name = "memoffset" version = "0.9.1" @@ -1855,7 +2555,7 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block", "core-graphics-types", "foreign-types", @@ -1864,6 +2564,12 @@ dependencies = [ "paste", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1874,6 +2580,28 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "mio" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.61.2", +] + +[[package]] +name = "moxcms" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b" +dependencies = [ + "num-traits", + "pxfm", +] + [[package]] name = "naga" version = "24.0.0" @@ -1881,8 +2609,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" dependencies = [ "arrayvec", - "bit-set", - "bitflags 2.9.1", + "bit-set 0.8.0", + "bitflags 2.13.1", "cfg_aliases", "codespan-reporting", "hexf-parse", @@ -1890,9 +2618,9 @@ dependencies = [ "log", "rustc-hash 1.1.0", "spirv", - "strum", + "strum 0.26.3", "termcolor", - "thiserror 2.0.12", + "thiserror 2.0.20", "unicode-xid", ] @@ -1902,8 +2630,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.9.1", - "jni-sys", + "bitflags 2.13.1", + "jni-sys 0.3.1", "log", "ndk-sys 0.6.0+11769913", "num_enum", @@ -1923,7 +2651,7 @@ version = "0.5.0+25.2.9519653" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", ] [[package]] @@ -1932,7 +2660,18 @@ version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ - "jni-sys", + "jni-sys 0.3.1", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.13.1", + "cfg-if", + "libc", ] [[package]] @@ -1941,7 +2680,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "cfg-if", "cfg_aliases", "libc", @@ -1954,6 +2693,33 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-conv" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" + +[[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 2.0.119", +] + [[package]] name = "num-traits" version = "0.2.19" @@ -1966,23 +2732,33 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.119", +] + +[[package]] +name = "num_threads" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" +dependencies = [ + "libc", ] [[package]] @@ -2012,9 +2788,9 @@ dependencies = [ [[package]] name = "objc2" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88c6597e14493ab2e44ce58f2fdecf095a51f12ca57bec060a11c57332520551" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" dependencies = [ "objc2-encode", ] @@ -2025,7 +2801,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "libc", "objc2 0.5.2", @@ -2037,15 +2813,15 @@ dependencies = [ [[package]] name = "objc2-app-kit" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f29f568bec459b0ddff777cec4fe3fd8666d82d5a40ebd0ff7e66134f89bcc" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "bitflags 2.13.1", + "objc2 0.6.4", "objc2-core-foundation", "objc2-core-graphics", - "objc2-foundation 0.3.1", + "objc2-foundation 0.3.2", ] [[package]] @@ -2054,7 +2830,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "objc2 0.5.2", "objc2-core-location", @@ -2078,7 +2854,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2086,24 +2862,24 @@ dependencies = [ [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "dispatch2", - "objc2 0.6.1", + "objc2 0.6.4", ] [[package]] name = "objc2-core-graphics" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989c6c68c13021b5c2d6b71456ebb0f9dc78d752e86a98da7c716f4f9470f5a4" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "dispatch2", - "objc2 0.6.1", + "objc2 0.6.4", "objc2-core-foundation", "objc2-io-surface", ] @@ -2144,7 +2920,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "dispatch", "libc", @@ -2153,23 +2929,23 @@ dependencies = [ [[package]] name = "objc2-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900831247d2fe1a09a683278e5384cfb8c80c79fe6b166f9d14bfdde0ea1b03c" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "bitflags 2.13.1", + "objc2 0.6.4", "objc2-core-foundation", ] [[package]] name = "objc2-io-surface" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7282e9ac92529fa3457ce90ebb15f4ecbc383e8338060960760fa2cf75420c3c" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" dependencies = [ - "bitflags 2.9.1", - "objc2 0.6.1", + "bitflags 2.13.1", + "objc2 0.6.4", "objc2-core-foundation", ] @@ -2191,7 +2967,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2203,7 +2979,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "objc2 0.5.2", "objc2-foundation 0.2.2", @@ -2226,7 +3002,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "objc2 0.5.2", "objc2-cloud-kit", @@ -2258,7 +3034,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "objc2 0.5.2", "objc2-core-location", @@ -2267,16 +3043,23 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" [[package]] name = "orbclient" -version = "0.3.48" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba0b26cec2e24f08ed8bb31519a9333140a6599b867dac464bb150bdb796fd43" +checksum = "5df339f526ea9a60e371768d50efc2f2508c7203290731565d1f7a6f71d21747" dependencies = [ + "libc", "libredox", ] @@ -2299,15 +3082,57 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +dependencies = [ + "memchr", +] + [[package]] name = "owned_ttf_parser" -version = "0.25.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec719bbf3b2a81c109a4e20b1f129b5566b7dce654bc3872f6a05abf82b2c4" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" dependencies = [ "ttf-parser", ] +[[package]] +name = "palette" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddeed8580d347d2abf3dcf06a5f0b3dc020258338526b277847cd4248a70fc64" +dependencies = [ + "approx", + "libm", + "palette_derive", + "palette_math", +] + +[[package]] +name = "palette_derive" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88537020289b719d81be994ccf1bbf4990f477e2f69ee52fe3e45f43a02e56be" +dependencies = [ + "by_address", + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "palette_math" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e6eb142958d64335fb0e345c5b9ead2ecd6fc438c307e9d7d3c4fd428dbaf12" +dependencies = [ + "libm", +] + [[package]] name = "parking" version = "2.2.1" @@ -2316,9 +3141,9 @@ checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -2326,15 +3151,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.11" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.5.18", "smallvec", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -2345,102 +3170,201 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] -name = "pin-project" -version = "1.1.10" +name = "pest" +version = "2.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +checksum = "7df728be843c7070fab6ab7c328c4e9e9d78e23bf749c0669c86ee7ebfa050a2" dependencies = [ - "pin-project-internal", + "memchr", + "ucd-trie", ] [[package]] -name = "pin-project-internal" -version = "1.1.10" +name = "pest_derive" +version = "2.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +checksum = "9e2dd6fc3b26b3462ee188aac870f5a41d398f1cd5e2408d16531bd71c9591fd" dependencies = [ - "proc-macro2", - "quote", - "syn", + "pest", + "pest_generator", ] [[package]] -name = "pin-project-lite" -version = "0.2.16" +name = "pest_generator" +version = "2.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" +checksum = "6a7a9205cfb6f596a9e8b689c0a15f9ceb7a1aafae7aaf788150ac65b29975b6" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.119", +] [[package]] -name = "pin-utils" -version = "0.1.0" +name = "pest_meta" +version = "2.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "85abd351c0de1e8384fc791a0737111a350394937e92b956b743dac12429f57c" +dependencies = [ + "pest", +] [[package]] -name = "piper" -version = "0.2.4" +name = "phf" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", + "phf_macros", + "phf_shared", ] [[package]] -name = "pkg-config" -version = "0.3.32" +name = "phf_codegen" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] [[package]] -name = "png" -version = "0.17.16" +name = "phf_generator" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", + "phf_shared", + "rand 0.8.7", ] [[package]] -name = "polling" -version = "3.8.0" +name = "phf_macros" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] -name = "portable-atomic" -version = "1.11.1" +name = "phf_shared" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] [[package]] -name = "potential_utf" -version = "0.1.2" +name = "pin-project" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "piper" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + +[[package]] +name = "png" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61" +dependencies = [ + "bitflags 2.13.1", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "3.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 1.1.4", + "windows-sys 0.61.2", +] + +[[package]] +name = "portable-atomic" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" + +[[package]] +name = "potential_utf" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2450,35 +3374,51 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.119", +] + [[package]] name = "proc-macro-crate" -version = "3.3.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" dependencies = [ "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5" + +[[package]] +name = "pxfm" +version = "0.1.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" [[package]] name = "pyo3" -version = "0.29.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c" +checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b" dependencies = [ "libc", "once_cell", @@ -2490,18 +3430,18 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.29.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078" +checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9" dependencies = [ "target-lexicon", ] [[package]] name = "pyo3-ffi" -version = "0.29.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b" +checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327" dependencies = [ "libc", "pyo3-build-config", @@ -2509,28 +3449,34 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.29.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771" +checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "pyo3-macros-backend" -version = "0.29.0" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362" +checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + [[package]] name = "quick-xml" version = "0.30.0" @@ -2543,18 +3489,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.37.5" +version = "0.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.40" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -2565,11 +3511,108 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "r2r" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b36b61a6252e8e7a24919b9877dacf1dc9f0ac4c2d0eba91c68b35c1b2283ed2" +dependencies = [ + "force-send-sync", + "futures", + "indexmap", + "lazy_static", + "log", + "phf", + "prettyplease", + "proc-macro2", + "quote", + "r2r_actions", + "r2r_common", + "r2r_macros", + "r2r_msg_gen", + "r2r_rcl", + "rayon", + "serde", + "serde_json", + "syn 2.0.119", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "r2r_actions" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca8488195951aaadef421b470c823cd095848bebf2004ff96ef5d351067eac1" +dependencies = [ + "bindgen", + "r2r_common", + "r2r_msg_gen", + "r2r_rcl", +] + +[[package]] +name = "r2r_common" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9838c2f88c9fd088f188eadbf9459371b1e576affd7b2df04c45cd1e44b79b99" +dependencies = [ + "bindgen", + "os_str_bytes", + "regex", + "sha2", +] + +[[package]] +name = "r2r_macros" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be0cda9778c21f78d2d593df41298c14b6530061dc70d2d31eb831f7fec8d648" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.119", +] + +[[package]] +name = "r2r_msg_gen" +version = "0.9.5" +dependencies = [ + "bindgen", + "force-send-sync", + "itertools 0.10.5", + "phf", + "proc-macro2", + "quote", + "r2r_common", + "r2r_rcl", + "rayon", + "syn 2.0.119", +] + +[[package]] +name = "r2r_rcl" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c208b2fbe64a00a42a70391f708298b6765769d39987286f4b7c82539561e" +dependencies = [ + "bindgen", + "paste", + "r2r_common", + "widestring", +] + [[package]] name = "rand" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -2578,12 +3621,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.3" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec095654a25171c2124e9e3393a930bddbffdc939556c914957a4c3e0a87166" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -2603,7 +3646,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.5", ] [[package]] @@ -2612,16 +3655,117 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "ratatui" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3274ba0a2c5e1bcad2a2005d20f4dc59dad26b2eb0940fb094500dba4099d57d" +dependencies = [ + "instability", + "ratatui-core", + "ratatui-crossterm", + "ratatui-macros", + "ratatui-termina", + "ratatui-termwiz", + "ratatui-widgets", + "serde", +] + +[[package]] +name = "ratatui-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbb175c433c8e28a809d1f5773a2ae96e68c0ce40db865cbab1020bf33ae479c" +dependencies = [ + "bitflags 2.13.1", + "compact_str", + "critical-section", + "hashbrown 0.17.1", + "itertools 0.14.0", + "kasuari", + "lru", + "palette", + "serde", + "strum 0.28.0", + "thiserror 2.0.20", + "unicode-segmentation", + "unicode-truncate", + "unicode-width 0.2.2", +] + +[[package]] +name = "ratatui-crossterm" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "567584a3b0e6a8203c23de40b4861497266725eb5363dbfd18a1edd603cca9f0" dependencies = [ - "getrandom 0.3.3", + "cfg-if", + "crossterm 0.29.0", + "instability", + "ratatui-core", +] + +[[package]] +name = "ratatui-macros" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed7dc68daa7498a43e4d68e0eb078427e10c38fbcfbb1e42d955f1fa2140d814" +dependencies = [ + "ratatui-core", + "ratatui-widgets", +] + +[[package]] +name = "ratatui-termina" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0bf912d9e66f057a759d92e386a280ea886b352ab757d6ac4d653c7ed2c43c2" +dependencies = [ + "instability", + "ratatui-core", + "termina", +] + +[[package]] +name = "ratatui-termwiz" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf03e0380b7744054d6cb74224fe3adf062a029754933f575ca1e3b4c2ce977" +dependencies = [ + "ratatui-core", + "termwiz", +] + +[[package]] +name = "ratatui-widgets" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66e3d19bcc9130ca376277d93b60767ff121ace3be06f5f95f81dd68956407d1" +dependencies = [ + "bitflags 2.13.1", + "hashbrown 0.17.1", + "indoc", + "instability", + "itertools 0.14.0", + "line-clipping", + "ratatui-core", + "serde", + "strum 0.28.0", + "time", + "unicode-segmentation", + "unicode-width 0.2.2", ] [[package]] @@ -2632,9 +3776,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "rayon" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d" dependencies = [ "either", "rayon-core", @@ -2642,9 +3786,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2661,13 +3805,51 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.13.1", +] + +[[package]] +name = "redox_syscall" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e" +dependencies = [ + "bitflags 2.13.1", +] + +[[package]] +name = "regex" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ - "bitflags 2.9.1", + "aho-corasick", + "memchr", + "regex-syntax", ] +[[package]] +name = "regex-syntax" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" + [[package]] name = "renderdoc-sys" version = "1.1.0" @@ -2699,9 +3881,18 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.1" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] [[package]] name = "rustix" @@ -2709,7 +3900,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -2718,22 +3909,28 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.7" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "errno", "libc", - "linux-raw-sys 0.9.4", - "windows-sys 0.59.0", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", ] [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" [[package]] name = "same-file" @@ -2765,46 +3962,86 @@ dependencies = [ "ab_glyph", "log", "memmap2", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "tiny-skia", ] +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" + [[package]] name = "serde" -version = "1.0.219" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.229" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", +] + +[[package]] +name = "serde_json" +version = "1.0.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", ] [[package]] name = "serde_repr" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "sha1" -version = "0.10.6" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -2817,41 +4054,91 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shlex" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba" + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" + +[[package]] +name = "simd_cesu8" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" +dependencies = [ + "rustc_version", + "simdutf8", +] + +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + +[[package]] +name = "siphasher" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slotmap" -version = "1.0.7" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038" dependencies = [ "version_check", ] [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "smithay-client-toolkit" @@ -2859,9 +4146,9 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" dependencies = [ - "bitflags 2.9.1", - "calloop", - "calloop-wayland-source", + "bitflags 2.13.1", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", "cursor-icon", "libc", "log", @@ -2878,14 +4165,41 @@ dependencies = [ "xkeysym", ] +[[package]] +name = "smithay-client-toolkit" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" +dependencies = [ + "bitflags 2.13.1", + "calloop 0.14.4", + "calloop-wayland-source 0.4.1", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 1.1.4", + "thiserror 2.0.20", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-experimental", + "wayland-protocols-misc", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + [[package]] name = "smithay-clipboard" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" +checksum = "71704c03f739f7745053bde45fa203a46c58d25bc5c4efba1d9a60e9dba81226" dependencies = [ "libc", - "smithay-client-toolkit", + "smithay-client-toolkit 0.20.0", "wayland-backend", ] @@ -2898,13 +4212,23 @@ dependencies = [ "serde", ] +[[package]] +name = "socket2" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "spade" -version = "2.13.1" +version = "2.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ece03ff43cd2a9b57ebf776ea5e78bd30b3b4185a619f041079f4109f385034" +checksum = "9699399fd9349b00b184f5635b074f9ec93afffef30c853f8c875b32c0f8c7fa" dependencies = [ - "hashbrown", + "hashbrown 0.16.1", "num-traits", "robust", "smallvec", @@ -2916,14 +4240,14 @@ version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", ] [[package]] name = "stable_deref_trait" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "static_assertions" @@ -2937,13 +4261,34 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" +dependencies = [ + "strum_macros 0.28.0", ] [[package]] @@ -2952,18 +4297,52 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.119", +] + +[[package]] +name = "strum_macros" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab85eea0270ee17587ed4156089e10b9e6880ee688791d45a905f5b1ca36f664" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.119", ] [[package]] name = "syn" -version = "2.0.103" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.119" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -2978,7 +4357,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -2987,17 +4366,31 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" +[[package]] +name = "teamplayer" +version = "0.1.0" +dependencies = [ + "ansi-to-tui", + "anyhow", + "clap", + "crossterm 0.28.1", + "futures", + "nix 0.27.1", + "ratatui", + "tokio", +] + [[package]] name = "tempfile" -version = "3.20.0" +version = "3.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.3", + "getrandom 0.4.3", "once_cell", - "rustix 1.0.7", - "windows-sys 0.59.0", + "rustix 1.1.4", + "windows-sys 0.61.2", ] [[package]] @@ -3009,6 +4402,82 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "termina" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9048a889effe34a5cddee0af7f53285198b16dca3be510858d38dfdb3e62a04e" +dependencies = [ + "bitflags 2.13.1", + "parking_lot", + "rustix 1.1.4", + "signal-hook", + "windows-sys 0.61.2", +] + +[[package]] +name = "terminfo" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ea810f0692f9f51b382fff5893887bb4580f5fa246fde546e0b13e7fcee662" +dependencies = [ + "fnv", + "nom", + "phf", + "phf_codegen", +] + +[[package]] +name = "termios" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "411c5bf740737c7918b8b1fe232dca4dc9f8e754b8ad5e20966814001ed0ac6b" +dependencies = [ + "libc", +] + +[[package]] +name = "termwiz" +version = "0.23.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4676b37242ccbd1aabf56edb093a4827dc49086c0ffd764a5705899e0f35f8f7" +dependencies = [ + "anyhow", + "base64", + "bitflags 2.13.1", + "fancy-regex", + "filedescriptor", + "finl_unicode", + "fixedbitset", + "hex", + "lazy_static", + "libc", + "log", + "memmem", + "nix 0.29.0", + "num-derive", + "num-traits", + "ordered-float", + "pest", + "pest_derive", + "phf", + "sha2", + "signal-hook", + "siphasher", + "terminfo", + "termios", + "thiserror 1.0.69", + "ucd-trie", + "unicode-segmentation", + "vtparse", + "wezterm-bidi", + "wezterm-blob-leases", + "wezterm-color-types", + "wezterm-dynamic", + "wezterm-input-types", + "winapi", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -3020,11 +4489,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.20", ] [[package]] @@ -3035,31 +4504,55 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "tiff" -version = "0.9.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52" dependencies = [ + "fax", "flate2", - "jpeg-decoder", + "half", + "quick-error", "weezl", + "zune-jpeg", ] +[[package]] +name = "time" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" +dependencies = [ + "deranged", + "libc", + "num-conv", + "num_threads", + "powerfmt", + "serde_core", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" + [[package]] name = "tiny-skia" version = "0.11.4" @@ -3086,38 +4579,80 @@ dependencies = [ ] [[package]] -name = "tinystr" -version = "0.8.1" +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tokio" +version = "1.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" +dependencies = [ + "bytes", + "libc", + "mio", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ - "displaydoc", - "zerovec", + "proc-macro2", + "quote", + "syn 3.0.3", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] [[package]] name = "toml_edit" -version = "0.22.27" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap", "toml_datetime", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.1.3+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" +dependencies = [ "winnow", ] [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3125,20 +4660,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", ] @@ -3155,37 +4690,54 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90" dependencies = [ - "rustc-hash 2.1.1", + "rustc-hash 2.1.3", ] [[package]] name = "typenum" -version = "1.18.0" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" + +[[package]] +name = "ucd-trie" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uds_windows" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "winapi", + "windows-sys 0.61.2", ] [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-segmentation" -version = "1.12.0" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" + +[[package]] +name = "unicode-truncate" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" +checksum = "16b380a1238663e5f8a691f9039c73e1cdae598a30e9855f541d29b08b53e9a5" +dependencies = [ + "itertools 0.14.0", + "unicode-segmentation", + "unicode-width 0.2.2", +] [[package]] name = "unicode-width" @@ -3193,6 +4745,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -3201,13 +4759,14 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" -version = "2.5.4" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -3216,12 +4775,40 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" +dependencies = [ + "atomic", + "getrandom 0.4.3", + "js-sys", + "serde_core", + "wasm-bindgen", +] + [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vtparse" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9b2acfb050df409c972a37d3b8e08cdea3bddb0c09db9d53137e504cfabed0" +dependencies = [ + "utf8parse", +] + [[package]] name = "walkdir" version = "2.5.0" @@ -3239,58 +4826,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" +name = "wasip2" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.100" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" -dependencies = [ - "bumpalo", - "log", - "proc-macro2", - "quote", - "syn", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" dependencies = [ - "cfg-if", "js-sys", - "once_cell", "wasm-bindgen", - "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3298,35 +4869,35 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ + "bumpalo", "proc-macro2", "quote", - "syn", - "wasm-bindgen-backend", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] [[package]] name = "wayland-backend" -version = "0.3.10" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe770181423e5fc79d3e2a7f4410b7799d5aab1de4372853de3c6aa13ca24121" +checksum = "016ccf01d1c58b6f8999612813e17c9b2390f7d70671428869913310f83f54b8" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.44", + "rustix 1.1.4", "scoped-tls", "smallvec", "wayland-sys", @@ -3334,12 +4905,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.10" +version = "0.31.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978fa7c67b0847dbd6a9f350ca2569174974cd4082737054dbb7fbb79d7d9a61" +checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" dependencies = [ - "bitflags 2.9.1", - "rustix 0.38.44", + "bitflags 2.13.1", + "rustix 1.1.4", "wayland-backend", "wayland-scanner", ] @@ -3350,41 +4921,67 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.10" +version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a65317158dec28d00416cb16705934070aef4f8393353d41126c54264ae0f182" +checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 0.38.44", + "rustix 1.1.4", "wayland-client", "xcursor", ] [[package]] name = "wayland-protocols" -version = "0.32.8" +version = "0.32.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-experimental" +version = "20250721.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1" +dependencies = [ + "bitflags 2.13.1", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-misc" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "779075454e1e9a521794fed15886323ea0feda3f8b0fc1390f5398141310422a" +checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "wayland-backend", "wayland-client", + "wayland-protocols", "wayland-scanner", ] [[package]] name = "wayland-protocols-plasma" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fd38cdad69b56ace413c6bcc1fbf5acc5e2ef4af9d5f8f1f9570c0c83eae175" +checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -3393,11 +4990,11 @@ dependencies = [ [[package]] name = "wayland-protocols-wlr" -version = "0.3.8" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb6cdc73399c0e06504c437fe3cf886f25568dd5454473d565085b36d6a8bbf" +checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "wayland-backend", "wayland-client", "wayland-protocols", @@ -3406,20 +5003,20 @@ dependencies = [ [[package]] name = "wayland-scanner" -version = "0.31.6" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "896fdafd5d28145fce7958917d69f2fd44469b1d4e861cb5961bcbeebc6d1484" +checksum = "338e30461b3a2b67d70eb30a6d89f8e0c93a833e07d2ae89085cd070c4a00ac0" dependencies = [ "proc-macro2", - "quick-xml 0.37.5", + "quick-xml 0.41.0", "quote", ] [[package]] name = "wayland-sys" -version = "0.31.6" +version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbcebb399c77d5aa9fa5db874806ee7b4eba4e73650948e8f93963f128896615" +checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be" dependencies = [ "dlib", "log", @@ -3429,9 +5026,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" dependencies = [ "js-sys", "wasm-bindgen", @@ -3449,25 +5046,97 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.5" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf4f3c0ba838e82b4e5ccc4157003fb8c324ee24c058470ffb82820becbde98" +checksum = "62c35be770821a214dbc362fc26908c853e776c0004294d0b10b8a6bad582f94" dependencies = [ - "core-foundation 0.10.1", "jni", "log", "ndk-context", - "objc2 0.6.1", - "objc2-foundation 0.3.1", + "objc2 0.6.4", + "objc2-app-kit 0.3.2", + "objc2-foundation 0.3.2", "url", "web-sys", ] [[package]] name = "weezl" -version = "0.1.10" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" + +[[package]] +name = "wezterm-bidi" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0a6e355560527dd2d1cf7890652f4f09bb3433b6aadade4c9b5ed76de5f3ec" +dependencies = [ + "log", + "wezterm-dynamic", +] + +[[package]] +name = "wezterm-blob-leases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "692daff6d93d94e29e4114544ef6d5c942a7ed998b37abdc19b17136ea428eb7" +dependencies = [ + "getrandom 0.3.4", + "mac_address", + "sha2", + "thiserror 1.0.69", + "uuid", +] + +[[package]] +name = "wezterm-color-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7de81ef35c9010270d63772bebef2f2d6d1f2d20a983d27505ac850b8c4b4296" +dependencies = [ + "csscolorparser", + "deltae", + "lazy_static", + "wezterm-dynamic", +] + +[[package]] +name = "wezterm-dynamic" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" +checksum = "5f2ab60e120fd6eaa68d9567f3226e876684639d22a4219b313ff69ec0ccd5ac" +dependencies = [ + "log", + "ordered-float", + "strsim 0.11.1", + "thiserror 1.0.69", + "wezterm-dynamic-derive", +] + +[[package]] +name = "wezterm-dynamic-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46c0cf2d539c645b448eaffec9ec494b8b19bd5077d9e58cb1ae7efece8d575b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "wezterm-input-types" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7012add459f951456ec9d6c7e6fc340b1ce15d6fc9629f8c42853412c029e57e" +dependencies = [ + "bitflags 1.3.2", + "euclid", + "lazy_static", + "serde", + "wezterm-dynamic", +] [[package]] name = "wgpu" @@ -3476,7 +5145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b0b3436f0729f6cdf2e6e9201f3d39dc95813fad61d826c1ed07918b4539353" dependencies = [ "arrayvec", - "bitflags 2.9.1", + "bitflags 2.13.1", "cfg_aliases", "document-features", "js-sys", @@ -3501,8 +5170,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f0aa306497a238d169b9dc70659105b4a096859a34894544ca81719242e1499" dependencies = [ "arrayvec", - "bit-vec", - "bitflags 2.9.1", + "bit-vec 0.8.0", + "bitflags 2.13.1", "cfg_aliases", "document-features", "indexmap", @@ -3514,7 +5183,7 @@ dependencies = [ "raw-window-handle", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.20", "wgpu-hal", "wgpu-types", ] @@ -3528,7 +5197,7 @@ dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.9.1", + "bitflags 2.13.1", "bytemuck", "cfg_aliases", "core-graphics-types", @@ -3553,7 +5222,7 @@ dependencies = [ "renderdoc-sys", "rustc-hash 1.1.0", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.20", "wasm-bindgen", "web-sys", "wgpu-types", @@ -3566,12 +5235,18 @@ version = "24.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "js-sys", "log", "web-sys", ] +[[package]] +name = "widestring" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" + [[package]] name = "winapi" version = "0.3.9" @@ -3590,11 +5265,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3634,7 +5309,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -3645,9 +5320,15 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-result" version = "0.2.0" @@ -3667,15 +5348,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -3695,33 +5367,21 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.53.5", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-link", ] [[package]] @@ -3742,32 +5402,21 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -3776,21 +5425,9 @@ checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" [[package]] name = "windows_aarch64_msvc" @@ -3800,21 +5437,9 @@ checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" [[package]] name = "windows_i686_gnu" @@ -3824,9 +5449,9 @@ checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnu" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" [[package]] name = "windows_i686_gnullvm" @@ -3836,21 +5461,9 @@ checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" [[package]] name = "windows_i686_msvc" @@ -3860,21 +5473,9 @@ checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" [[package]] name = "windows_x86_64_gnu" @@ -3884,21 +5485,9 @@ checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" [[package]] name = "windows_x86_64_gnullvm" @@ -3908,21 +5497,9 @@ checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" [[package]] name = "windows_x86_64_msvc" @@ -3932,26 +5509,26 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "windows_x86_64_msvc" -version = "0.53.0" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" -version = "0.30.11" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4409c10174df8779dc29a4788cac85ed84024ccbc1743b776b21a520ee1aaf4" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.9.1", + "bitflags 2.13.1", "block2", "bytemuck", - "calloop", + "calloop 0.13.0", "cfg_aliases", "concurrent-queue", - "core-foundation 0.9.4", + "core-foundation", "core-graphics", "cursor-icon", "dpi", @@ -3970,7 +5547,7 @@ dependencies = [ "redox_syscall 0.4.1", "rustix 0.38.44", "sctk-adwaita", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "smol_str", "tracing", "unicode-segmentation", @@ -3990,27 +5567,24 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.11" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "writeable" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "x11-dl" @@ -4025,30 +5599,30 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", "libloading", "once_cell", - "rustix 0.38.44", + "rustix 1.1.4", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" [[package]] name = "xcursor" -version = "0.3.8" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" +checksum = "163b33ed8786455e2fa5d72f554057ce3f3182425434f756cd39c99839d88e23" [[package]] name = "xdg-home" @@ -4066,7 +5640,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.13.1", "dlib", "log", "once_cell", @@ -4081,17 +5655,16 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "yoke" -version = "0.8.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -4099,13 +5672,13 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] @@ -4131,9 +5704,9 @@ dependencies = [ "futures-sink", "futures-util", "hex", - "nix", + "nix 0.29.0", "ordered-stream", - "rand 0.8.5", + "rand 0.8.7", "serde", "serde_repr", "sha1", @@ -4165,7 +5738,7 @@ checksum = "709ab20fc57cb22af85be7b360239563209258430bccf38d8b979c5a2ae3ecce" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "zbus-lockstep", "zbus_xml", "zvariant", @@ -4180,7 +5753,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "zvariant_utils", ] @@ -4210,50 +5783,50 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] [[package]] name = "zerotrie" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -4262,9 +5835,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -4273,13 +5846,34 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", +] + +[[package]] +name = "zmij" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" + +[[package]] +name = "zune-core" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56377fd46368984a170bc5aac5567e52ca5da874caa60bea39fcbca78fb658b" + +[[package]] +name = "zune-jpeg" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296" +dependencies = [ + "zune-core", ] [[package]] @@ -4304,7 +5898,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "zvariant_utils", ] @@ -4316,5 +5910,5 @@ checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000000..703df829db --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,20 @@ +[workspace] +members = [ + "src/bitbots_misc/bitbots_extrinsic_calibration", + "src/bitbots_misc/bitbots_bringup/tui", + "src/bitbots_navigation/bitbots_global_planner" +] +exclude = ["src/patches/r2r_msg_gen-0.9.5"] + +# Optional but recommended for modern Cargo +resolver = "2" + +# We use a custom profile to keep colcon +# separate from "normal" rust building. +[profile.colcon] +inherits = "release" +debug = true + +[patch.crates-io] +# Keep message generation working when bindgen emits the ROS type support handle as opaque. +r2r_msg_gen = { path = "src/patches/r2r_msg_gen-0.9.5" } diff --git a/pixi.lock b/pixi.lock index d0e75f9beb..59107f4a9f 100644 --- a/pixi.lock +++ b/pixi.lock @@ -24,7 +24,7 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/adwaita-icon-theme-3.38.0-hbf89446_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py312h5d8c7f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py312h5d8c7f2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-plugins-1.2.12-h989ed37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda @@ -36,41 +36,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py312h90b7ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/benchmark-1.9.5-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.46.1-default_h4852527_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.46.1-default_hfdba357_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.46.1-default_h4852527_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bullet-3.25-h26dfbe5_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bullet-cpp-3.25-hcbe3ca9_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-h280c20c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h460c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hfed155c_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_hbe8b877_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_hbd963a2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.4.0-h611768e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.0-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.4-py312h589e9ff_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-49.0.0-py312ha4b625e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-hae6b9f4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312ha4b625e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-heca4667_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.3.2-py312h7347394_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.4.0-py312he073671_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-3.4.0.100-h3bcb7cf_2.conda @@ -81,57 +86,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_h43fde53_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.11-nompi_h3b011a4_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-he1b7b50_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/foonathan-memory-0.7.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.11.0-h9bea470_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.4.0-hc6a0c74_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.4.0-h9711763_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.4.0-hc469d41_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.7-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.25.1-h3f43e3d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-he448592_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.3.0-h1a219da_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h5ce6d8a_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.55.0-pl5321hc575239_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.4.0-hd47ba16_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.4.0-he75539a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.4.0-h4d20c58_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.55.0-pl5321h5685339_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.4-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.2-hbe0478d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.2-h8094192_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.5.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.3-h84d461a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h95f0039_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h718be3e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-h8e2ec6c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.26.11-h6d08254_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.26.11-h29cf534_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-orc-0.4.42-h82d0256_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.4.0-hd47ba16_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.4.0-hc436dd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.4.0-h82679ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-cmake3-3.5.5-h05f81b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-7.5.2-h5bbc156_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-python-7.5.2-py312h89d136e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-tools-2.0.3-h3f54f1a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-tools2-2.0.3-h89235b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-utils2-2.2.1-hdaf9e28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.3.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-25.3.4-hecca717_0.conda @@ -144,19 +149,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbde042b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.8-gpl_hc2c16d8_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_hc2c16d8_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.2-hcfa2d63_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-9_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.88.0-hfcd1e18_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.88.0-ha770c72_7.conda @@ -166,69 +171,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-9_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h6c227bf_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h9692865_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-22.1.8-default_hcdef588_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h08c5240_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h982d582_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hae6b9f4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-heca4667_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.1.0-ha9f2e26_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.1.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.25.1-h3f43e3d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.1.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.1.0-h79bb938_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.2-h0d30a3d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-h0d30a3d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.1.0-he0feb66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake3-3.5.5-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake4-4.2.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-math7-7.5.2-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-tools-2.0.3-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-utils2-2.2.1-h54a6638_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.2.1-h17a8019_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.2.1-h17a8019_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.3.0-h17a8019_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.3.0-h17a8019_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h3a9caae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-8_h6ae95b6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-9_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-9_h6ae95b6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-hf7376ad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.5-hc2fc477_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmujoco-3.6.0-h31df9c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopencv-4.12.0-qt6_py312h52d6ec5_612.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_3.conda @@ -246,26 +253,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.4.1-h0767aad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.4.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.4-hd5a49e9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-hfb7daa7_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.22.0-hd9031aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h6406941_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.1-h074291d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.0-hf670292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.4.0-hf39dbba_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-hf4e2dac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.1.0-h934c35e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.1.0-hdf11a46_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-h9d88235_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 @@ -274,34 +281,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.0-he1eb515_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.15.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h5279c79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.8-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb03c661_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py312hc1765e9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.1-py312h6a12a82_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py312h4c94fcb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-h8142553_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.1-py312h0a2e395_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-3.6.0-h1eba5cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-python-3.6.0-np2py312h2fcff2b_0.conda @@ -310,41 +317,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nanoflann-1.6.1-hff21bea_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h4a9d5aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.40-h29cc59b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.4-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/octomap-1.10.0-h84d6215_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.26.0-py312hb39aaa6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.28.0-py312hb39aaa6_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.13-hf734b31_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.14-h6de6307_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-h65dd3cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.30.1-h8d634f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orocos-kdl-1.5.3-hca8cc02_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.4-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-hda50119_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.15.1-h717c489_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h7c397b8_1011.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/popt-1.19-h3b78370_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.7.0-hf4617a5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py312hb8af0ac_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-17.0-haebf07f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda @@ -353,42 +360,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pybullet-3.25-py312hf49885f_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pycairo-1.29.0-py312h2596900_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pymongo-4.17.0-py312h1289d80_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.11-py312h82c0db2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.17.0-py312h1289d80_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py312h50ac2ff_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.1-hab00c5b_1_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.12.0-py312h5253ce2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-orocos-kdl-1.5.3-py312h1289d80_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.15-h0c412b5_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-pl5321h16c4a6b_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20250205-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.8.1-h1fbca29_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.6.28-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.7.19-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rsync-3.4.4-h5440a77_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.6-h95e6935_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.97.1-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.12-hdeec2a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2025.5-h718be3e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.10.0-py312h1289d80_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/soxr-0.1.3-h0b41bf4_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hab81395_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.3-hbc0de68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h04a0ce9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd70dff1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uncrustify-0.83.0-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda @@ -396,12 +404,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom-py-1.2.1-py312h200335b_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom_headers-1.1.2-h84d6215_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.2-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hd6090a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.3.0-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda @@ -414,12 +422,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.16-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-hb03c661_0.conda @@ -433,42 +441,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hec8ed23_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.2-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zenoh-rust-abi-1.7.2.1.85.0-h8619998_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zziplib-0.13.69-he45264a_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda @@ -486,6 +494,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -495,11 +505,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/empy-3.3.4-pyh9f0ad1d_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.12.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -513,11 +523,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.58-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -528,7 +538,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.15.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.16.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.11-pyhd8ed1ab_0.conda @@ -536,8 +546,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.4.0-hd9a9cd0_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.4.0-ha5b54cb_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda @@ -548,29 +558,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notify2-0.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.610.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.3-pyhfe8187e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.4-pyh293190f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.3-pyh648e204_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.4-pyh648e204_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopengl-3.1.10-pyha804496_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -583,8 +593,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.12.19-pyh9d96877_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.4-pyhcf101f3_0.conda @@ -592,6 +602,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.97.1-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -599,8 +610,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-h9eada29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda @@ -612,13 +623,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transforms3d-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.6.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda @@ -1005,23 +1016,22 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2026_07_02_flo_yoeo_rf_detr_wm_torso_extension-1.1.0-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[146a3083] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4a/c9/9a4ca25b505303d5557c98786ac0bf7081c76a7262e1b6c87b899bccc7b8/viser-1.0.30-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/69/80/0c7095f357afeb52100d312250354d2e76afb779c81fe3fb52118076fa5a/syrupy-5.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/f9/617a194c1a4203279998e1859426cf2635042533a99a93d63d3ee1fb967e/syrupy-5.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/dc/ad025c1ee131eba60c69f4dd5779b18fcf1e6b21a343e2162a84d5d133c7/soupsieve-2.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/ed/f1831681fce0e3242346e5458486003c5f124ed69e5e0b847fd029db4973/websockets-16.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adwaita-icon-theme-3.38.0-h2d234d2_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.1-py312he7e3343_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.3-py312he7e3343_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16.1-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-plugins-1.2.12-haf9f4a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda @@ -1033,41 +1043,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.6.0-py312ha46dd1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/benchmark-1.9.5-hfae3067_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.46.1-default_hf1166c9_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.46.1-default_h5f4c503_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.46.1-default_hf1166c9_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.2.0-hd651790_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py312hac7b6a9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bullet-3.25-h6ffa558_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bullet-cpp-3.25-py312he7881e2_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.8-h80f16a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.1.1-py312h1b372e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h710bdcc_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_hd38b72d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h78643bd_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.7.2-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.4.0-h3e66f51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.3-py312hf18b547_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.15.0-py312hd077ced_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.15.4-py312h2b0bcae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppzmq-4.11.0-h7be3492_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-49.0.0-py312h96535df_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-h7c59cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-50.0.0-py312h96535df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-h23397ac_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.16.2-h70963c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.3.2-py312hf371ade_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.4.0-py312hdf6a78a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.4.0-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-3.4.0-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-abi-3.4.0.100-h9a8c16c_2.conda @@ -1078,57 +1093,57 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_hd1a4c92_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fftw-3.3.11-nompi_h66d8d02_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-headf6c6_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h20c602a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.1-hba86a56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h166da81_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.3-hba86a56_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.63.0-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/foonathan-memory-0.7.3-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.11.0-h151373c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeglut-3.2.2-hddf9bb5_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-he4296dc_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.3-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.8.0-py312hb10c72c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h398eab4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.4.0-hfdd745d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.4.0-hfa249e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.4.0-hab84b30_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.7-h90308e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.25.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.25.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha28f942_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.3.0-h6b0ea1e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h4981040_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.55.0-pl5321hfc83acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.4.0-h15173b7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.4.0-hee5bd23_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.4.0-hafc07fd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.55.0-pl5321h06f7e71_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hd9db0c5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.4-he30d5cf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.2-hdf12349_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.2-h7aeb4f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.3.0-h124e036_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.5.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.3-hbcf6308_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.3-h34e06a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.5.0-hfeb5c2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-hecbc285_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gnutls-3.8.13-hfe111f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-14.1.2-h45e821f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gst-plugins-base-1.26.11-hd6b5e5b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gstreamer-1.26.11-hf552038_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gstreamer-orc-0.4.42-h70b131a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-h17cf362_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-hdc560ac_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk3-3.24.52-h75d4e7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha28f942_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h0da240b_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.4.0-h15173b7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.4.0-h66ee75d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.4.0-h71c191b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-cmake3-3.5.5-h740f95d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-7.5.2-h1ad700d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-python-7.5.2-py312h9452373_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-tools-2.0.3-h8a9b3d2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-tools2-2.0.3-hd91f489_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-utils2-2.2.1-h2ce864c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.2.1-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.3.0-h8af1aa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-1.14.6-nompi_hf95b8e7_110.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hicolor-icon-theme-0.17-h8af1aa0_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.2.2-h92288e7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h9d01bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.9-h850eeee_1.conda @@ -1139,18 +1154,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-h2fb54aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.46.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.2.0-h52b7260_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.8-gpl_hbe7d12b_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.9-gpl_hbe7d12b_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libattr-2.5.2-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.4.2-ha599f14_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-8_haddc8a3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-9_haddc8a3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.88.0-h5651608_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.88.0-h37bb5a9_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.88.0-h8af1aa0_7.conda @@ -1160,69 +1175,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.77-hf9559e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-8_hd72aa62_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-9_hd72aa62_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h0cc847a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_hd92691d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-22.1.8-default_h0841624_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h9c9fc99_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_h667e455_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-h7c59cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-h23397ac_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-hfa851ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-devel-1.7.0-hd24410f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h80f16a2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.1.0-h205dda4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-16.1.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-h88aa843_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.25.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.25.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-16.1.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-16.1.0-h47adacf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-devel-1.7.0-hd24410f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.2-h96a7f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.3-h96a7f82_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglu-9.0.3-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-devel-1.7.0-hd24410f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.1.0-h8acb6b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake3-3.5.5-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake4-4.2.0-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-math7-7.5.2-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-tools-2.0.3-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-utils2-2.2.1-h7ac5ae9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.2.1-h3a99ef3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-devel-14.2.1-h3a99ef3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.3.0-h3a99ef3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-devel-14.3.0-h3a99ef3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.13.0-default_ha95e27d_1000.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h0626a34_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h9b45113_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libidn2-2.3.8-h99ff5a0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-hbae46ee_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-8_h88aeb00_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-8_hb558247_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-9_h88aeb00_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-9_hb558247_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.8-hfd2ba90_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libltdl-2.4.3a-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.5-h3543b8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.10-h3543b8c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmujoco-3.6.0-h2b9416c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.3-nompi_h06de00c_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.33-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.34-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopencv-4.12.0-qt6_py312h051a780_612.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-devel-1.7.0-hd24410f_3.conda @@ -1238,26 +1255,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2025.4.1-h38473e3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2025.4.1-hfae3067_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.6.1-h80f16a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.4-hccacd55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.31.1-h61c7711_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpsl-0.22.0-h504d594_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.10.5-hd2f8911_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.1-h6c2e892_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpsl-0.23.0-h36cc0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.11.0-hd2f8911_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.2-h6c2e892_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.62.3-hf685517_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.4.0-h5c092e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.22-h80f16a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.3-h10b116e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.4-h022381a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.1.0-hef695bb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-16.1.0-hdbbeba8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.13-hf9559e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.2-hdb009f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtool-2.5.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.13-hf9559e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunistring-0.9.10-hf897c2e_0.tar.bz2 @@ -1266,33 +1283,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.14-hfefdfc9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.29-h06eaf92_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.15.2-hfae3067_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.341.0-h8b8848b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.357.0-h8b8848b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.38-h80f16a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.13.2-h3c6a4c8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h79dcc73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h869d058_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.8-he40846f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.4.5-py312he78555a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-he30d5cf_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.0-py312h7ee55d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312hf18b547_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.1-py312h2f630db_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.1-py312h0683553_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h2b27223_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312h1683e8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-3.6.0-h6fc1a30_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-python-3.6.0-np2py312h7d9f038_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-samples-3.6.0-h21f88d6_0.conda @@ -1300,39 +1317,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.7.1-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.20.2-py312h996f985_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nanoflann-1.6.1-h17cf362_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-h2b6f883_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nettle-3.10.1-hfdb7b1a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.13.2-hdc560ac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.40-h3ad9384_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.26.0-py312hc28d7f2_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.28.0-py312hc28d7f2_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.13-h95ec230_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.14-h4fc0a29_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h663e864_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.30.1-h55827e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.31.0-h55827e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.13-h2fb54aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orocos-kdl-1.5.3-hc398517_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.56.4-h8547ced_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.4-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.58.2-h8547ced_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.15.1-h4720788_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.3.0-py312h6e23c8a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-hce167ba_1009.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-h36a561e_1011.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/popt-1.19-h90929bb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.7.0-h9d01bbc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/proj-9.7.1-hd211770_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.5.2-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-6.31.1-py312h07dbafa_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py312hd41f8a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-he30d5cf_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.15-h6ef32b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-17.0-h3dd60a8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-hcf98165_3.conda @@ -1341,42 +1358,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pybullet-3.25-py312h88173f1_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pycairo-1.29.0-py312h1f35134_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pymongo-4.17.0-py312hfcd9f9b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt-5.15.11-py312hc13527c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt5-sip-12.17.0-py312h1ab2c47_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.10.2-py312hfc1e6cc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.1-h43d1f9e_1_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.12.0-py312hd41f8a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.15.0-py312hd41f8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-orocos-kdl-1.5.3-py312h1ab2c47_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt-main-5.15.15-ha9b3be2_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.10.2-pl5321h598db47_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h5ad3122_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20250205-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.6.28-py312hcd1a082_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.7.19-py312hcd1a082_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rsync-3.4.4-h3aee46b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.6-h706e587_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.97.1-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312ha7f05e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.56-h7ac5ae9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.12-had2c13b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.14-had2c13b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.3-py312hfcd9f9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.16.0-py312hfcd9f9b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/soxr-0.1.3-hb4cce97_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-h9f97df7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.3-hf1c7be2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-hb3fff47_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.4-he8854b5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-2023.0.0-h57272ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-devel-2023.0.0-h57272ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.7-py312hefbd42c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h5cf4473_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.8-py312hefbd42c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uncrustify-0.83.0-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-17.0.1-py312hcd1a082_0.conda @@ -1384,12 +1402,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom-py-1.2.1-py312h76ea178_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom_headers-1.1.2-h17cf362_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.09-h8af1aa0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.5.2-py312h4954c87_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.25.0-h4f8a99f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.2-py312hcd1a082_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.26.0-h4f8a99f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.3.0-py312hcd1a082_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda @@ -1402,12 +1420,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxaw-1.0.16-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcomposite-0.4.7-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdamage-1.1.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.3-he30d5cf_0.conda @@ -1421,42 +1439,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.7-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hd794028_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-h80f16a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hdc50dc5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.2-py312ha4530ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h7ac5ae9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.5-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zenoh-rust-abi-1.7.2.1.85.0-h4d6d557_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hec9560f_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zziplib-0.13.69-h650d8d0_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda @@ -1474,6 +1492,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -1483,11 +1503,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/empy-3.3.4-pyh9f0ad1d_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.12.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -1501,11 +1521,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.58-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -1516,7 +1536,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.15.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.16.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.11-pyhd8ed1ab_0.conda @@ -1525,8 +1545,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.4.0-ha8b83fe_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.4.0-hc896aa5_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda @@ -1537,29 +1557,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notify2-0.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.610.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.3-pyhfe8187e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.4-pyh293190f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.3-pyh648e204_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.4-pyh648e204_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopengl-3.1.10-pyha804496_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -1572,8 +1592,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.12.19-pyh9d96877_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.4-pyhcf101f3_0.conda @@ -1581,6 +1601,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.97.1-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -1588,8 +1609,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-h9eada29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda @@ -1602,13 +1623,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transforms3d-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.6.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda @@ -1994,19 +2015,18 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2026_07_02_flo_yoeo_rf_detr_wm_torso_extension-1.1.0-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[36aa2fce] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4a/c9/9a4ca25b505303d5557c98786ac0bf7081c76a7262e1b6c87b899bccc7b8/viser-1.0.30-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/69/80/0c7095f357afeb52100d312250354d2e76afb779c81fe3fb52118076fa5a/syrupy-5.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/79/4ff9dcc1bb46f6b4c536936dde1fd60f9b564f3304307274db97f4c9496d/websockets-16.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/f9/617a194c1a4203279998e1859426cf2635042533a99a93d63d3ee1fb967e/syrupy-5.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/dc/ad025c1ee131eba60c69f4dd5779b18fcf1e6b21a343e2162a84d5d133c7/soupsieve-2.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl format: channels: - url: https://data.bit-bots.de/conda-misc/output/ @@ -2015,122 +2035,139 @@ environments: packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.46.1-default_hfdba357_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_hbe8b877_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-16.1.0-h5fcb69b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h54a6638_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h4f0048e_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.1.0-ha9f2e26_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.1.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.1.0-he0feb66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-16.1.0-hf2715c6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-hf4e2dac_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.1.0-h934c35e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.1.0-hdf11a46_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.1-hab00c5b_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.97.1-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd70dff1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-16.1.0-h59071f9_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-16.1.0-h41cdd0d_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.97.1-h2c6d0dc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.46.1-default_h5f4c503_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_hd38b72d_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-16.1.0-h04da0f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.46.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_hd3644b0_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.7.0-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.1.0-h205dda4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-16.1.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.1.0-h8acb6b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.3-h10b116e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-16.1.0-h2510bd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.4-h022381a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.1.0-hef695bb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-16.1.0-hdbbeba8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h79dcc73_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h869d058_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.38-h80f16a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h064b767_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h9ba8346_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-h2b6f883_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.1-h43d1f9e_1_cpython.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.97.1-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h5cf4473_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-16.1.0-hd673532_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-16.1.0-h2445e1f_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.97.1-hbe8e118_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda robot: @@ -2144,7 +2181,7 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/adwaita-icon-theme-3.38.0-hbf89446_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py312h5d8c7f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py312h5d8c7f2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-plugins-1.2.12-h989ed37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda @@ -2156,41 +2193,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py312h90b7ffd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-5.0.0-py312h868fb18_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/benchmark-1.9.5-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.46.1-default_h4852527_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.46.1-default_hfdba357_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.46.1-default_h4852527_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py312hdb49522_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bullet-3.25-h26dfbe5_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bullet-cpp-3.25-hcbe3ca9_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-h280c20c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cbor2-5.9.0-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h460c074_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hfed155c_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_hbe8b877_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_hbd963a2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-common-extensions-0.3.0-py312h7900ff3_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/colcon-notification-0.3.1-py312he626ec8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.4.0-h611768e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.0-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.4-py312h589e9ff_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cppzmq-4.11.0-hbe92c44_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-49.0.0-py312ha4b625e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-hae6b9f4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312ha4b625e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-heca4667_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.3.2-py312h7347394_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.4.0-py312he073671_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-abi-3.4.0.100-h3bcb7cf_2.conda @@ -2201,58 +2243,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-8.0.1-gpl_h43fde53_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.11-nompi_h3b011a4_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-he1b7b50_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/foonathan-memory-0.7.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.11.0-h9bea470_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-h215f996_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-hd1b7436_25.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.4.0-hc6a0c74_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.4.0-h9711763_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.4.0-hc469d41_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.7-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/geographiclib-cpp-2.7-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.25.1-h3f43e3d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-he448592_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.3.0-h1a219da_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h5ce6d8a_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.55.0-pl5321hc575239_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.4.0-hd47ba16_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.4.0-he75539a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.4.0-h4d20c58_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.55.0-pl5321h5685339_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.3.0-h71661d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.4-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.2-hbe0478d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.2-h8094192_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.5.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.3-h84d461a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h95f0039_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h718be3e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-h8e2ec6c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.8.13-h18acefa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.26.11-h6d08254_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.26.11-h29cf534_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gstreamer-orc-0.4.42-h82d0256_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.4.0-hd47ba16_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.4.0-hc436dd5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.4.0-h82679ac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-cmake3-3.5.5-h05f81b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-7.5.2-h5bbc156_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-math7-python-7.5.2-py312h89d136e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-tools-2.0.3-h3f54f1a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-tools2-2.0.3-h89235b8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-utils2-2.2.1-hdaf9e28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.3.0-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_110.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-gmmlib-22.10.0-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/intel-media-driver-25.3.4-hecca717_0.conda @@ -2265,19 +2307,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbde042b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libacl-2.3.2-h0f662aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.8-gpl_hc2c16d8_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_hc2c16d8_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.4-h96ad9f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libattr-2.5.2-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.4.2-hcfa2d63_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-9_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.88.0-hfcd1e18_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.88.0-ha770c72_7.conda @@ -2287,69 +2329,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.77-hd0affe5_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-9_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h6c227bf_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h9692865_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-22.1.8-default_hcdef588_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h4f0048e_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h08c5240_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h982d582_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hae6b9f4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-heca4667_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.1.0-ha9f2e26_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.1.0-h69a702a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.25.1-h3f43e3d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.25.1-h3f43e3d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.1.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.1.0-h79bb938_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.2-h0d30a3d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-h0d30a3d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.1.0-he0feb66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake3-3.5.5-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake4-4.2.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-math7-7.5.2-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-tools-2.0.3-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-utils2-2.2.1-h54a6638_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.2.1-h17a8019_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.2.1-h17a8019_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.3.0-h17a8019_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.3.0-h17a8019_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h3a9caae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libidn2-2.3.8-hfac485b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-8_h6ae95b6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-9_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-9_h6ae95b6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-hf7376ad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libltdl-2.4.3a-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.5-hc2fc477_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmujoco-3.6.0-h31df9c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.68.1-h877daf1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopencv-4.12.0-qt6_py312h52d6ec5_612.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-devel-1.7.0-ha4b6fd6_3.conda @@ -2367,26 +2411,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.4.1-h0767aad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.4.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.6.1-h280c20c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.4-hd5a49e9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-hfb7daa7_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.22.0-hd9031aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h6406941_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.1-h074291d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.0-hf670292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.4.0-hf39dbba_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-hf4e2dac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.1.0-h934c35e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.1.0-hdf11a46_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-h9d88235_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.13-hd0affe5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libunistring-0.9.10-h7f98852_0.tar.bz2 @@ -2395,34 +2439,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.14-hb700be7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.29-h73b1eb8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.0-he1eb515_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpl-2.15.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.15.2-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h5279c79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzenohc-1.7.2-hfad6b34_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.8-h4922eb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lttng-ust-2.13.9-hf5eda4c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.1.1-py312h63ddcf0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py312h3d67a73_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb03c661_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.0-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py312hc1765e9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.1-py312h6a12a82_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py312h4c94fcb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-h8142553_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.1-py312h0a2e395_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-3.6.0-h1eba5cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mujoco-python-3.6.0-np2py312h2fcff2b_0.conda @@ -2431,41 +2475,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.20.2-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nanoflann-1.6.1-hff21bea_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h4a9d5aa_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.13.2-h171cf75_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.40-h29cc59b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.4-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/octomap-1.10.0-h84d6215_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.26.0-py312hb39aaa6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.28.0-py312hb39aaa6_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencv-4.12.0-qt6_py312h7bb6282_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.13-hf734b31_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.14-h6de6307_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-h65dd3cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.30.1-h8d634f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orocos-kdl-1.5.3-hca8cc02_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.4-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-hda50119_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.15.1-h717c489_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h7c397b8_1011.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/popt-1.19-h3b78370_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.7.0-hf4617a5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py312hb8af0ac_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-17.0-haebf07f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-h9a6aba3_3.conda @@ -2474,42 +2518,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pybullet-3.25-py312hf49885f_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pycairo-1.29.0-py312h2596900_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pymongo-4.17.0-py312h1289d80_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.11-py312h82c0db2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.17.0-py312h1289d80_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py312h50ac2ff_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.1-hab00c5b_1_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.12.0-py312h5253ce2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-orocos-kdl-1.5.3-py312h1289d80_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.15-h0c412b5_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-pl5321h16c4a6b_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20250205-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.8.1-h1fbca29_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.6.28-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.7.19-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rsync-3.4.4-h5440a77_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.6-h95e6935_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.97.1-h53717f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-14.8.0-h5bb51b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdformat14-python-14.8.0-py312h22a3d64_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.56-h54a6638_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.12-hdeec2a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2025.5-h718be3e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sip-6.10.0-py312h1289d80_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/soxr-0.1.3-h0b41bf4_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hab81395_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.3-hbc0de68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h04a0ce9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2023.0.0-hab88423_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2023.0.0-hab88423_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd70dff1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uncrustify-0.83.0-h54a6638_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda @@ -2517,12 +2562,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom-py-1.2.1-py312h200335b_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/urdfdom_headers-1.1.2-h84d6215_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.09-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.5.2-py312h6fba518_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.5.2-py312hcdbd8b1_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.2-py312h4c3975b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hd6090a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.3.0-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda @@ -2535,12 +2580,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.16-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.3-hb03c661_0.conda @@ -2554,42 +2599,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hec8ed23_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.2-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zenoh-rust-abi-1.7.2.1.85.0-h8619998_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zfp-1.0.1-h909a3a2_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zziplib-0.13.69-he45264a_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda @@ -2607,6 +2652,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -2616,11 +2663,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/empy-3.3.4-pyh9f0ad1d_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.12.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -2634,11 +2681,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.58-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -2649,7 +2696,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.15.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.16.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.11-pyhd8ed1ab_0.conda @@ -2657,8 +2704,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.4.0-hd9a9cd0_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.4.0-ha5b54cb_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda @@ -2669,29 +2716,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notify2-0.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.610.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.3-pyhfe8187e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.4-pyh293190f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.3-pyh648e204_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.4-pyh648e204_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopengl-3.1.10-pyha804496_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -2704,8 +2751,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.12.19-pyh9d96877_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.4-pyhcf101f3_0.conda @@ -2713,6 +2760,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.97.1-h2c6d0dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -2720,8 +2768,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-h9eada29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda @@ -2733,13 +2781,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transforms3d-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.6.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.49-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda @@ -3129,23 +3177,22 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2026_07_02_flo_yoeo_rf_detr_wm_torso_extension-1.1.0-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[146a3083] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4a/c9/9a4ca25b505303d5557c98786ac0bf7081c76a7262e1b6c87b899bccc7b8/viser-1.0.30-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/60/7be26e610767316c028a2cbedb9a3beabdbe33e2182c373f71a1c0b88f36/zstandard-0.25.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/69/80/0c7095f357afeb52100d312250354d2e76afb779c81fe3fb52118076fa5a/syrupy-5.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/f9/617a194c1a4203279998e1859426cf2635042533a99a93d63d3ee1fb967e/syrupy-5.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/dc/ad025c1ee131eba60c69f4dd5779b18fcf1e6b21a343e2162a84d5d133c7/soupsieve-2.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fe/ed/f1831681fce0e3242346e5458486003c5f124ed69e5e0b847fd029db4973/websockets-16.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/adwaita-icon-theme-3.38.0-h2d234d2_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.1-py312he7e3343_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.3-py312he7e3343_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16.1-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-plugins-1.2.12-haf9f4a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda @@ -3157,41 +3204,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/backports.zstd-1.6.0-py312ha46dd1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bcrypt-5.0.0-py312h5eb8f6c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/benchmark-1.9.5-hfae3067_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.46.1-default_hf1166c9_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.46.1-default_h5f4c503_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.46.1-default_hf1166c9_102.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.2.0-hd651790_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.2.0-py312hac7b6a9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bullet-3.25-h6ffa558_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bullet-cpp-3.25-py312he7881e2_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.8-h80f16a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.4-h0b6afd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cbor2-5.9.0-py312hd41f8a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.1.1-py312h1b372e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h710bdcc_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_hd38b72d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h78643bd_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.7.2-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-common-extensions-0.3.0-py312h996f985_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/colcon-notification-0.3.1-py312h72dafdd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.4.0-h3e66f51_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.3-py312hf18b547_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.15.0-py312hd077ced_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.15.4-py312h2b0bcae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppzmq-4.11.0-h7be3492_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-49.0.0-py312h96535df_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-h7c59cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-50.0.0-py312h96535df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-h23397ac_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.28-h6598af7_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.16.2-h70963c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.3.2-py312hf371ade_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.4.0-py312hdf6a78a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.4.0-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-3.4.0-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-abi-3.4.0.100-h9a8c16c_2.conda @@ -3202,58 +3254,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-8.0.1-gpl_hd1a4c92_912.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fftw-3.3.11-nompi_h66d8d02_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-headf6c6_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h20c602a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.1-hba86a56_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h166da81_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.3-hba86a56_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.63.0-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/foonathan-memory-0.7.3-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.11.0-h151373c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeglut-3.2.2-hddf9bb5_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-he4296dc_25.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.14.3-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.8.0-py312hb10c72c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h398eab4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.4.0-hfdd745d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.4.0-hfa249e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.4.0-hab84b30_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.7-h90308e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/geographiclib-cpp-2.7-hfefdfc9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.25.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.25.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha28f942_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.3.0-h6b0ea1e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h4981040_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.55.0-pl5321hfc83acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.4.0-h15173b7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.4.0-hee5bd23_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.4.0-hafc07fd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.55.0-pl5321h06f7e71_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hd9db0c5_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.3.0-hf9dcc85_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.4-he30d5cf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.2-hdf12349_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.2-h7aeb4f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.3.0-h124e036_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.5.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.3-hbcf6308_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.3-h34e06a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.5.0-hfeb5c2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-hecbc285_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gnutls-3.8.13-hfe111f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-hfae3067_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-14.1.2-h45e821f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gst-plugins-base-1.26.11-hd6b5e5b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gstreamer-1.26.11-hf552038_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gstreamer-orc-0.4.42-h70b131a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-h17cf362_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-hdc560ac_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk3-3.24.52-h75d4e7a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha28f942_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h0da240b_27.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.4.0-h15173b7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.4.0-h66ee75d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.4.0-h71c191b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-cmake3-3.5.5-h740f95d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-7.5.2-h1ad700d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-math7-python-7.5.2-py312h9452373_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-tools-2.0.3-h8a9b3d2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-tools2-2.0.3-hd91f489_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-utils2-2.2.1-h2ce864c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.2.1-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.3.0-h8af1aa0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-1.14.6-nompi_hf95b8e7_110.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hicolor-icon-theme-0.17-h8af1aa0_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.2.2-h92288e7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h9d01bbc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jasper-4.2.9-h850eeee_1.conda @@ -3264,18 +3316,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.22.2-h2fb54aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.19.1-h9d5b58d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.46.1-default_h1979696_102.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.2.0-h52b7260_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libacl-2.3.2-h883460d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.5-hff7e48a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.8-gpl_hbe7d12b_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.9-gpl_hbe7d12b_100.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.25.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.4-hcfe818d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libattr-2.5.2-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.4.2-ha599f14_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-8_haddc8a3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-9_haddc8a3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.88.0-h5651608_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.88.0-h37bb5a9_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.88.0-h8af1aa0_7.conda @@ -3285,69 +3337,71 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.77-hf9559e3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-8_hd72aa62_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-9_hd72aa62_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h0cc847a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_hd92691d_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-22.1.8-default_h0841624_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_hd3644b0_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h9c9fc99_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_h667e455_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-h7c59cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-h23397ac_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-hfa851ae_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-devel-1.7.0-hd24410f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h80f16a2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype-2.14.3-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libfreetype6-2.14.3-hdae7a39_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.1.0-h205dda4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-16.1.0-he9431aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-h88aa843_12.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.25.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.25.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-16.1.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-16.1.0-h47adacf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-devel-1.7.0-hd24410f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.2-h96a7f82_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.3-h96a7f82_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglu-9.0.3-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-devel-1.7.0-hd24410f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.1.0-h8acb6b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake3-3.5.5-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake4-4.2.0-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-math7-7.5.2-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-tools-2.0.3-h7ac5ae9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-utils2-2.2.1-h7ac5ae9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.2.1-h3a99ef3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-devel-14.2.1-h3a99ef3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.3.0-h3a99ef3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-devel-14.3.0-h3a99ef3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.13.0-default_ha95e27d_1000.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h0626a34_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h9b45113_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libidn2-2.3.8-h99ff5a0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.2.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-hbae46ee_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-8_h88aeb00_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-8_hb558247_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-9_h88aeb00_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-9_hb558247_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm22-22.1.8-hfd2ba90_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libltdl-2.4.3a-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.5-h3543b8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.10-h3543b8c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmujoco-3.6.0-h2b9416c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.3-nompi_h06de00c_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.68.1-hd3077d7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.33-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.34-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopencv-4.12.0-qt6_py312h051a780_612.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-1.7.0-hd24410f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-devel-1.7.0-hd24410f_3.conda @@ -3363,26 +3417,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2025.4.1-h38473e3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2025.4.1-hfae3067_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.6.1-h80f16a2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-18.4-hccacd55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-6.31.1-h61c7711_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpsl-0.22.0-h504d594_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.10.5-hd2f8911_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.1-h6c2e892_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpsl-0.23.0-h36cc0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.11.0-hd2f8911_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.2-h6c2e892_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.62.3-hf685517_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.4.0-h5c092e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.22-h80f16a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.3-h10b116e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.4-h022381a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.1.0-hef695bb_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-16.1.0-hdbbeba8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.13-hf9559e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.2-hdb009f0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtool-2.5.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.13-hf9559e3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunistring-0.9.10-hf897c2e_0.tar.bz2 @@ -3391,33 +3445,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.14-hfefdfc9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.29-h06eaf92_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h7ac5ae9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.15.2-hfae3067_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.341.0-h8b8848b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.357.0-h8b8848b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.38-h80f16a2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.13.2-h3c6a4c8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h79dcc73_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h869d058_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzenohc-1.7.2-hd661084_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.8-he40846f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lttng-ust-2.13.9-h8d236e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lxml-6.1.1-py312hfe2c7ef_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-4.4.5-py312he78555a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h80f16a2_1002.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-he30d5cf_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.0-py312h8025657_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.0-py312h7ee55d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312hf18b547_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.1-py312h2f630db_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.1-py312h0683553_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h2b27223_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312h1683e8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-3.6.0-h6fc1a30_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-python-3.6.0-np2py312h7d9f038_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-samples-3.6.0-h21f88d6_0.conda @@ -3425,39 +3479,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.7.1-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mypy-1.20.2-py312h996f985_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nanoflann-1.6.1-h17cf362_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-h2b6f883_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nettle-3.10.1-hfdb7b1a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.13.2-hdc560ac_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.40-h3ad9384_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/octomap-1.10.0-h17cf362_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.26.0-py312hc28d7f2_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.28.0-py312hc28d7f2_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.13-h95ec230_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.14-h4fc0a29_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h663e864_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.4-h5da879a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.30.1-h55827e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.31.0-h55827e0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.13-h2fb54aa_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orocos-kdl-1.5.3-hc398517_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.56.4-h8547ced_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.4-h376a255_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.58.2-h8547ced_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.15.1-h4720788_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre-8.45-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.47-hf841c20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.3.0-py312h6e23c8a_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-hce167ba_1009.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-h36a561e_1011.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/popt-1.19-h90929bb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.7.0-h9d01bbc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/proj-9.7.1-hd211770_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.5.2-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-6.31.1-py312h07dbafa_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.2.2-py312hd41f8a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-he30d5cf_1003.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.15-h6ef32b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-17.0-h3dd60a8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-hcf98165_3.conda @@ -3466,42 +3520,43 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pybullet-3.25-py312h88173f1_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pycairo-1.29.0-py312h1f35134_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pymongo-4.17.0-py312hfcd9f9b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt-5.15.11-py312hc13527c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt5-sip-12.17.0-py312h1ab2c47_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.10.2-py312hfc1e6cc_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.1-h43d1f9e_1_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.12.0-py312hd41f8a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.15.0-py312hd41f8a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-orocos-kdl-1.5.3-py312h1ab2c47_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.3-py312ha4530ae_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt-main-5.15.15-ha9b3be2_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.10.2-pl5321h598db47_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h5ad3122_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20250205-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.6.28-py312hcd1a082_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.7.19-py312hcd1a082_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rsync-3.4.4-h3aee46b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.6-h706e587_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.97.1-h6cf38e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312ha7f05e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-14.8.0-hb4dca6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdformat14-python-14.8.0-py312he22bb7a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.56-h7ac5ae9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.12-had2c13b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.14-had2c13b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.3-py312hfcd9f9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.16.0-py312hfcd9f9b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/soxr-0.1.3-hb4cce97_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-h9f97df7_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.3-hf1c7be2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-hb3fff47_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.4-he8854b5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-2023.0.0-h57272ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-devel-2023.0.0-h57272ed_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tinyxml2-11.0.0-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.7-py312hefbd42c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h5cf4473_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.8-py312hefbd42c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uncrustify-0.83.0-h7ac5ae9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-17.0.1-py312hcd1a082_0.conda @@ -3509,12 +3564,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom-py-1.2.1-py312h76ea178_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/urdfdom_headers-1.1.2-h17cf362_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.09-h8af1aa0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.5.2-py312h4954c87_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.5.2-py312h90a26f6_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.5.2-py312haba1314_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.25.0-h4f8a99f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.2-py312hcd1a082_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.26.0-h4f8a99f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.3.0-py312hcd1a082_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-hca56bd8_2.conda @@ -3527,12 +3582,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.6-h0808dbd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.13-h63a1b12_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxaw-1.0.16-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcomposite-0.4.7-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdamage-1.1.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.2-he30d5cf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.3-he30d5cf_0.conda @@ -3546,42 +3601,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.7-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hd794028_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-h80f16a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hdc50dc5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.2-py312ha4530ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h7ac5ae9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.5-py312ha4530ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zenoh-rust-abi-1.7.2.1.85.0-h4d6d557_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-hec9560f_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zfp-1.0.1-h05c1e92_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zziplib-0.13.69-h650d8d0_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/alabaster-1.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/breathe-4.36.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-bash-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cd-0.1.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-cmake-0.2.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-devtools-0.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-library-path-0.2.1-pyhd8ed1ab_1.conda @@ -3599,6 +3654,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-zsh-0.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/coloredlogs-15.0.1-pyhd8ed1ab_4.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda @@ -3608,11 +3665,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/empy-3.3.4-pyh9f0ad1d_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.12.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fabric-3.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-builtins-3.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-comprehensions-3.17.0-pyhd8ed1ab_0.conda @@ -3626,11 +3683,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.58-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda @@ -3641,7 +3698,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-7.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/invoke-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.15.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.16.1-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jaxtyping-0.3.11-pyhd8ed1ab_0.conda @@ -3650,8 +3707,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-parser-0.12.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.4.0-ha8b83fe_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.4.0-hc896aa5_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda @@ -3662,29 +3719,29 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notify2-0.3.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-13.610.43-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pep517-0.13.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.3-pyhfe8187e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.4-pyh293190f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.3-pyh648e204_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.4-pyh648e204_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyflakes-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.2-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopengl-3.1.10-pyha804496_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda @@ -3697,8 +3754,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-repeat-0.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-rerunfailures-16.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.12.19-pyh9d96877_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.4-pyhcf101f3_0.conda @@ -3706,6 +3763,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rospkg-1.6.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.97.1-hbe8e118_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda @@ -3713,8 +3771,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-3.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-8.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-h9eada29_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.1.0-pyhd8ed1ab_1.conda @@ -3727,13 +3785,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/transforms3d-0.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.6.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.1.8-pyhcf101f3_0.conda @@ -4122,19 +4180,18 @@ environments: - conda: https://data.bit-bots.de/conda-misc/output/noarch/bitbots_model_2026_07_02_flo_yoeo_rf_detr_wm_torso_extension-1.1.0-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - conda: https://data.bit-bots.de/conda-misc/output/noarch/tts-supertonic-1.0.0-h4616a5c_1.conda - - conda_source: bitbots_rust_nav[36aa2fce] @ src/bitbots_navigation/bitbots_rust_nav - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/de/0880cf8af64b225bc8fde0924f76ea5e6cd8d8dc50c6dd61232beb54327f/mjviser-0.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4a/c9/9a4ca25b505303d5557c98786ac0bf7081c76a7262e1b6c87b899bccc7b8/viser-1.0.30-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/69/80/0c7095f357afeb52100d312250354d2e76afb779c81fe3fb52118076fa5a/syrupy-5.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6f/79/4ff9dcc1bb46f6b4c536936dde1fd60f9b564f3304307274db97f4c9496d/websockets-16.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8a/37/655101799590bcc5fddb2bd3fe0e6194e816c2d1da7c361725f5eb89a910/msgspec-0.21.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - - pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ae/f9/617a194c1a4203279998e1859426cf2635042533a99a93d63d3ee1fb967e/syrupy-5.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/eb/dc/ad025c1ee131eba60c69f4dd5779b18fcf1e6b21a343e2162a84d5d133c7/soupsieve-2.9.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda build_number: 20 @@ -4165,9 +4222,9 @@ packages: run_exports: {} size: 11217173 timestamp: 1610488699556 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.1-py312h5d8c7f2_0.conda - sha256: 7e03efaf3671cfca5d3195dc18aa3ca6bc182e0e34d30a95adb4f64f71d8f10c - md5: 10e4a93c73bfe09c5909cb1d41a1e40e +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py312h5d8c7f2_0.conda + sha256: 9195587d4ba2614c45ed1300a412869ee3d36b133d67197b3b2164263914b502 + md5: fe9eb34a1c0e51dfc5d98f41c5ddc8b8 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.5.0 @@ -4184,10 +4241,10 @@ packages: license: MIT AND Apache-2.0 license_family: Apache purls: - - pkg:pypi/aiohttp?source=compressed-mapping + - pkg:pypi/aiohttp?source=hash-mapping run_exports: {} - size: 1078273 - timestamp: 1780913823270 + size: 1087577 + timestamp: 1784901629231 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda sha256: cf93ca0f1f107e95a35969a4622684e08fcb8cf37f8cf4a1e9e424828386c921 md5: 8904e09bda369377b3dd07e2ac828c5d @@ -4328,7 +4385,7 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause AND MIT AND EPL-2.0 purls: - - pkg:pypi/backports-zstd?source=compressed-mapping + - pkg:pypi/backports-zstd?source=hash-mapping run_exports: {} size: 239892 timestamp: 1781450817988 @@ -4362,41 +4419,41 @@ packages: run_exports: {} size: 290910 timestamp: 1769116980221 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.45.1-default_h4852527_102.conda - sha256: 3c7c5580c1720206f28b7fa3d60d17986b3f32465e63009c14c9ae1ea64f926c - md5: 212fe5f1067445544c99dc1c847d032c +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.46.1-default_h4852527_102.conda + sha256: 659c367ef49df7741749a2ad240b007d7df51b4f210505a78543deafb001e44c + md5: e8452fe381cac5fff20563a07722dfa5 depends: - - binutils_impl_linux-64 >=2.45.1,<2.45.2.0a0 + - binutils_impl_linux-64 >=2.46.1,<2.46.2.0a0 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 35436 - timestamp: 1774197482571 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - sha256: 0a7d405064f53b9d91d92515f1460f7906ee5e8523f3cd8973430e81219f4917 - md5: 8165352fdce2d2025bf884dc0ee85700 + size: 35399 + timestamp: 1784214547142 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.46.1-default_hfdba357_102.conda + sha256: fb7bf36984a37ce7e4714d1d1da0bd0e3bfc679520f5cdc184afc676fd4b5da2 + md5: a0c5e0b7f58c8ceeb08e5bc41251d5a2 depends: - - ld_impl_linux-64 2.45.1 default_hbd61a6d_102 + - ld_impl_linux-64 2.46.1 default_hbd61a6d_102 - sysroot_linux-64 - zstd >=1.5.7,<1.6.0a0 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 3661455 - timestamp: 1774197460085 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda - sha256: 78a58d523d072b7f8e591b8f8572822e044b31764ed7e8d170392e7bc6d58339 - md5: 2a307a17309d358c9b42afdd3199ddcc + size: 3713752 + timestamp: 1784214522814 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.46.1-default_h4852527_102.conda + sha256: 08d7238663fc408ba2ab60b02fa3d06a7ca9d872962e03e90c7e0fdecb7ed1d0 + md5: 32fd07abe84eb14f17c7f5cc6fa8df82 depends: - - binutils_impl_linux-64 2.45.1 default_hfdba357_102 + - binutils_impl_linux-64 2.46.1 default_hfdba357_102 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 36304 - timestamp: 1774197485247 + size: 36337 + timestamp: 1784214551894 - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda sha256: e7af5d1183b06a206192ff440e08db1c4e8b2ca1f8376ee45fb2f3a85d4ee45d md5: 2c2fae981fd2afd00812c92ac47d023d @@ -4499,9 +4556,9 @@ packages: - bullet-cpp >=3.25,<3.26.0a0 size: 42581149 timestamp: 1761041037901 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 - md5: d2ffd7602c02f2b316fd921d39876885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_10.conda + sha256: 1a0d382c515ebf55f8ee1f38c8b81bc95af5c2acc42ad53b66bc5df932032f96 + md5: e675fabcf81499adc7edf58124fb1e01 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -4511,22 +4568,24 @@ packages: run_exports: weak: - bzip2 >=1.0.8,<2.0a0 - size: 260182 - timestamp: 1771350215188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e - md5: 920bb03579f15389b9e512095ad995b7 + size: 257808 + timestamp: 1785906269155 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-h280c20c_1.conda + sha256: 5139b6afbfaca91c47104ba9a6a40f81211e1c9200e96b73ce3a56f0ca1902f4 + md5: 2cef891b791040aab83e218c7d137679 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 + constrains: + - c-ares-static <0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - c-ares >=1.34.6,<2.0a0 - size: 207882 - timestamp: 1765214722852 + - c-ares >=1.34.8,<2.0a0 + size: 226755 + timestamp: 1786116641939 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.11.0-h4d9bdce_0.conda sha256: 8e7a40f16400d7839c82581410aa05c1f8324a693c9d50079f8c50dc9fb241f0 md5: abd85120de1187b0d1ec305c2173c71b @@ -4585,9 +4644,24 @@ packages: run_exports: {} size: 116357 timestamp: 1775229769097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h460c074_1.conda - sha256: 7dafe8173d5f94e46cf9cd597cc8ff476a8357fbbd4433a8b5697b2864845d9c - md5: 648ee28dcd4e07a1940a17da62eccd40 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + run_exports: {} + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.1.1-py312h460c074_0.conda + sha256: e4e3f48195393953bfacdfd4670e1c2cf5231b7bb11f29ccc724f1697c1c4449 + md5: a9d08f233128bc42fae8fe17c13df103 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.5.2,<3.6.0a0 @@ -4600,14 +4674,15 @@ packages: purls: - pkg:pypi/cffi?source=hash-mapping run_exports: {} - size: 295716 - timestamp: 1761202958833 -- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h99862b1_4.conda - sha256: 92087869cccace0433bcd852f9476ee56b1540e4e2a234a6befdb3d3dd595c30 - md5: a088cd39b7d8d0cdb7ace83ad146381e + size: 301815 + timestamp: 1785810903512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21-21.1.8-default_h4f0048e_5.conda + sha256: 54c8c466519669432d7d3d6274917d44b046f79d2e6df94d2492d6f7c6ee54be + md5: 28e81f3a1bca0b2fa7a5b02424aa1937 depends: - __glibc >=2.17,<3.0.a0 - - libclang-cpp21.1 >=21.1.8,<21.2.0a0 + - compiler-rt21 21.1.8.* + - libclang-cpp21.1 21.1.8 default_h4f0048e_5 - libgcc >=14 - libllvm21 >=21.1.8,<21.2.0a0 - libstdcxx >=14 @@ -4615,14 +4690,29 @@ packages: license_family: Apache purls: [] run_exports: {} - size: 71485 - timestamp: 1777011252467 -- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_h99862b1_4.conda - sha256: f80d405ad1024af8bd9d713f2d1667de7f0af9e903bc275fd0d4d2a071ca4236 - md5: 64fcea8e570d27d533eca56b81ddc234 + size: 830485 + timestamp: 1786194952057 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-21.1.8-default_cfg_hfed155c_5.conda + sha256: af1ef47925b90e2aa5bc429594c0c86466df923c8a1db18838a68edaff81642f + md5: bf32fb6f0ae1df54b71c73e128255722 + depends: + - binutils + - clang-21 21.1.8 default_h4f0048e_5 + - clang_impl_linux-64 21.1.8 default_hbd963a2_5 + - libgcc-devel_linux-64 + - llvm-openmp >=21.1.8 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 28309 + timestamp: 1786194984580 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21-21.1.8-default_h4f0048e_5.conda + sha256: 75e24a58991d97e0118f369a49d101a74686f0a22ba727f873feb1e520bc0529 + md5: fa5608dbf3ef28053ff352fe9b54e03e depends: - __glibc >=2.17,<3.0.a0 - - clang-format-21 21.1.8 default_h99862b1_4 - libclang-cpp21.1 >=21.1.8,<21.2.0a0 - libgcc >=14 - libllvm21 >=21.1.8,<21.2.0a0 @@ -4631,11 +4721,39 @@ packages: license_family: Apache purls: [] run_exports: {} - size: 28677 - timestamp: 1777011299688 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.6.2-h54a6638_0.conda - sha256: 1d635e8963e094d95d35148df4b46e495f93bb0750ad5069f4e0e6bbb47ac3bf - md5: 83dae3dfadcfec9b37a9fbff6f7f7378 + size: 70875 + timestamp: 1786194965533 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-21.1.8-default_hbe8b877_5.conda + sha256: 907d5e1c0753be43cadd84fe3471538336e1df1b2aeb0b43ae902bc96fa1911c + md5: 3a2a65a04f4f6d6a015feb387c2fedd2 + depends: + - clang-format-21 21.1.8 default_h4f0048e_5 + - libclang-cpp21.1 >=21.1.8,<21.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 27795 + timestamp: 1786194970386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang_impl_linux-64-21.1.8-default_hbd963a2_5.conda + sha256: caf03575693392501e144540b28c59369808e1646da52b2f9cd41efe66209c86 + md5: ad4f62eb31d416ab9f9b7460fb3b74d7 + depends: + - binutils_impl_linux-64 + - clang-21 21.1.8 default_h4f0048e_5 + - compiler-rt 21.1.8.* + - compiler-rt_linux-64 21.1.8.* + - libgcc-devel_linux-64 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 27917 + timestamp: 1786194971921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cli11-2.7.2-h54a6638_1.conda + sha256: 0520c8c4c7746e80ec53972a363e74cfc10914e0026432b32eb2ddf19f7c7ae8 + md5: 42761b55062088f6f7fb58d0633e0769 depends: - libstdcxx >=14 - libgcc >=14 @@ -4644,8 +4762,8 @@ packages: license_family: BSD purls: [] run_exports: {} - size: 99051 - timestamp: 1772207728613 + size: 103234 + timestamp: 1785918340763 - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.29.6-hcafd917_0.conda sha256: a788df92bf0e6e02d13ebc4e14e8bc56c80186f976200537799426aafc0e51ab md5: b1084336535950b28485bb93653ca152 @@ -4714,6 +4832,34 @@ packages: run_exports: {} size: 82327 timestamp: 1774664643705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt-21.1.8-ha770c72_1.conda + sha256: 858d6848e0b078c32e3a809d6d0e2d0ab9fc3069a567f117fd3dc71f9205e6d0 + md5: 3ac91ecdddec705b30d71680db84ac9d + depends: + - compiler-rt21 21.1.8 hb700be7_1 + - libcompiler-rt 21.1.8 hb700be7_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 16177 + timestamp: 1769057142509 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compiler-rt21-21.1.8-hb700be7_1.conda + sha256: ea3adf9924c6d52c9ba0767556e23f436b1619a99247aeda04f7d0907e9726b3 + md5: 7f1e2ba1c7d2ad3d5b57a12149c4af45 + depends: + - __glibc >=2.17,<3.0.a0 + - compiler-rt21_linux-64 21.1.8.* + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 114459 + timestamp: 1769057141242 - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.11.0-ha770c72_0.conda sha256: 5709f2cbfeb8690317ba702611bdf711a502b417fecda6ad3313e501f6f8bd61 md5: fdcf2e31dd960ef7c5daa9f2c95eff0e @@ -4727,17 +4873,17 @@ packages: run_exports: {} size: 7482 timestamp: 1753098722454 -- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.3.0-he8ccf15_19.conda - sha256: 769357d82d19f59c23888d935d92b67739bdb2acaacaa7bbe7c4fe4ee5346287 - md5: fd57230e9a97b97bf20dd63aeae6fe61 +- conda: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-14.4.0-h611768e_1.conda + sha256: 81327f9b1db24d4d6d2326a6dc21a799a427d0fd8b3a949881a939b3ce44cfc8 + md5: efd6d10c5ffe7431aca2fd8c78c60c32 depends: - - gcc_impl_linux-64 >=14.3.0,<14.3.1.0a0 + - gcc_impl_linux-64 >=14.4.0,<14.4.1.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 31751 - timestamp: 1778268677594 + size: 32239 + timestamp: 1785374690936 - conda: https://conda.anaconda.org/conda-forge/linux-64/console_bridge-1.0.2-h924138e_1.tar.bz2 sha256: 29caeda123ea705e68de46dc3b86065ec78f5b44d7ae69b320cc57e136d2d9d7 md5: e891b2b856a57d2b2ddb9ed366e3f2ce @@ -4769,21 +4915,21 @@ packages: run_exports: {} size: 320386 timestamp: 1769155979897 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.0-py312h8a5da7c_0.conda - sha256: 260364f80ef8c0fbbc244330ac29f863c3c76ff27551a3cd87a45af39a3628aa - md5: 81c362e153956e8b0ab533387443ba27 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.15.4-py312h589e9ff_1.conda + sha256: 12157c219d58e85b0454705ba23caed5b6a1e1129715fab1a38d1c974a82a5ff + md5: da913109cf05fb71022186f534874a5d depends: + - python + - tomli - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - tomli license: Apache-2.0 purls: - - pkg:pypi/coverage?source=hash-mapping + - pkg:pypi/coverage?source=compressed-mapping run_exports: {} - size: 394452 - timestamp: 1783019257881 + size: 415149 + timestamp: 1786292729866 - conda: https://conda.anaconda.org/conda-forge/linux-64/cppcheck-2.18.3-py312h014360a_1.conda sha256: f4321bdeddc9178f006a8cc3dedeaf32ab7e4c3be843845fbf594bc07999d2d6 md5: ab786ccd5cc6a08c0ebd5f6154c9dfcd @@ -4818,9 +4964,9 @@ packages: run_exports: {} size: 30502 timestamp: 1763728886940 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-49.0.0-py312ha4b625e_0.conda - sha256: c12e00af17f1507dbc186c9c663b44ca58b9b2209f59506be05547bd730346e5 - md5: 46142c21318ee17d5beecf0de1fc5d47 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-50.0.0-py312ha4b625e_0.conda + sha256: 72f6f9e4ba27a6e247da7d2351ec074df5f49a6b53c468fdd833dfbda386aeb9 + md5: 67ef0ac81eef7c40a62b938acac84cad depends: - __glibc >=2.17,<3.0.a0 - cffi >=2.0 @@ -4835,17 +4981,17 @@ packages: purls: - pkg:pypi/cryptography?source=hash-mapping run_exports: {} - size: 1912490 - timestamp: 1781385597345 -- conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-hae6b9f4_2.conda - sha256: ae0b83efb7545ea40845253b76bbfeb12349bd32001728b8f58d726cd532d467 - md5: d09779693563f4a1a0bdb0f715ba2bf0 + size: 1895335 + timestamp: 1785640927244 +- conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.21.0-heca4667_4.conda + sha256: 8f14ff477bf2cdf3cd4ff0ab2486b3e6490350da650e67be6c6a0b8a18994a90 + md5: a91f709770cddb5e7a027ab000c441a5 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.22.2,<1.23.0a0 - - libcurl 8.21.0 hae6b9f4_2 + - libcurl 8.21.0 heca4667_4 - libgcc >=14 - - libpsl >=0.22.0,<0.23.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -4854,8 +5000,8 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 194776 - timestamp: 1782911792708 + size: 195067 + timestamp: 1785500114646 - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.11.0-hfcd1e18_0.conda sha256: 3fcc97ae3e89c150401a50a4de58794ffc67b1ed0e1851468fcc376980201e25 md5: 5da8c935dca9186673987f79cef0b2a5 @@ -4918,23 +5064,23 @@ packages: - dbus >=1.16.2,<2.0a0 size: 447649 timestamp: 1764536047944 -- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.3.2-py312h7347394_6.conda - sha256: 1702ef31937d1137fe834e1a00438aeadc9284c95f8106bdd7d8d67da5891929 - md5: 283534402f4257742aad41c6ed21f9ca +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-python-1.4.0-py312he073671_0.conda + sha256: 25caa33f3a3820a66c79883d2437e0f4b314975e3a73610c2a1d080a5dad98cb + md5: 05624ff1c654dc6a5a199b06e73098a9 depends: + - dbus + - python - __glibc >=2.17,<3.0.a0 - - dbus >=1.16.2,<2.0a0 - libgcc >=14 - - libglib >=2.86.0,<3.0a0 - - python >=3.12,<3.13.0a0 + - libglib >=2.88.3,<3.0a0 + - dbus >=1.16.2,<2.0a0 - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT purls: - pkg:pypi/dbus-python?source=hash-mapping run_exports: {} - size: 292892 - timestamp: 1759741046729 + size: 149739 + timestamp: 1786374569810 - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda sha256: 40cdd1b048444d3235069d75f9c8e1f286db567f6278a93b4f024e5642cfaecc md5: dbe3ec0f120af456b3477743ffd99b74 @@ -5076,7 +5222,7 @@ packages: - libfreetype6 >=2.14.1 - libgcc >=14 - libiconv >=1.18,<2.0a0 - - libjxl >=0.11,<1.0a0 + - libjxl >=0.11,<0.12.0a0 - liblzma >=5.8.2,<6.0a0 - libopenvino >=2025.4.1,<2025.4.2.0a0 - libopenvino-auto-batch-plugin >=2025.4.1,<2025.4.2.0a0 @@ -5158,9 +5304,9 @@ packages: - flann >=1.9.2,<1.9.3.0a0 size: 1990499 timestamp: 1774331944832 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-hff5e90c_0.conda - sha256: d4e92ba7a7b4965341dc0fca57ec72d01d111b53c12d11396473115585a9ead6 - md5: f7d7a4104082b39e3b3473fbd4a38229 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-12.1.0-h76c4fd7_1.conda + sha256: 25d14a197601fdd616f2e501431b52887e69b31e7defbc1679381d718357ceb7 + md5: a70bb6d42ad121aef456e0007e92bed6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5171,28 +5317,27 @@ packages: run_exports: weak: - fmt >=12.1.0,<12.2.0a0 - size: 198107 - timestamp: 1767681153946 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda - sha256: 2e50bdcebdf70a865b81f2456bbc586386451ec601c60f2b6cd22b8c40a2d384 - md5: e0e050cfa9fa85fe39632ab11cb7f3e0 + size: 199072 + timestamp: 1785915412102 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.3-h27c8c51_0.conda + sha256: 05b57e2f5aaf3adcccc80653c9795d29974f24dcf9daa40c98b254c99b726227 + md5: bc8843ae1a655600014bb7a09d7b8b89 depends: - __glibc >=2.17,<3.0.a0 - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libuuid >=2.42.1,<3.0a0 + - libuuid >=2.42.2,<3.0a0 - libzlib >=1.3.2,<2.0a0 license: MIT - license_family: MIT purls: [] run_exports: weak: - - fontconfig >=2.18.1,<3.0a0 + - fontconfig >=2.18.3,<3.0a0 - fonts-conda-ecosystem - size: 281880 - timestamp: 1780450077431 + size: 296480 + timestamp: 1786381145956 - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py312h8a5da7c_0.conda sha256: d235ae7075642044ceb3d922ef2a710a82665755ac9bbb7e8dad7daa72bc6d87 md5: 294fb524171e2a2748cb7fe708aba826 @@ -5287,23 +5432,23 @@ packages: - freeimage >=3.18.0,<3.19.0a0 size: 469606 timestamp: 1780001489759 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - sha256: c934c385889c7836f034039b43b05ccfa98f53c900db03d8411189892ced090b - md5: 8462b5322567212beeb025f3519fb3e2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_1.conda + sha256: d109354d4584aa1ef6e915a8f02cbe13a9708f384aa167c075953b6f8196111c + md5: 8dd74ae1edf2b6490af0e960be773431 depends: - - libfreetype 2.14.3 ha770c72_0 - - libfreetype6 2.14.3 h73754d4_0 + - libfreetype 2.14.3 ha770c72_1 + - libfreetype6 2.14.3 h73754d4_1 license: GPL-2.0-only OR FTL purls: [] run_exports: weak: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - size: 173839 - timestamp: 1774298173462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d - md5: f9f81ea472684d75b9dd8d0b328cf655 + size: 174748 + timestamp: 1785641176027 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda + sha256: 4846a3ca0402f3fe33ad84ed50ab213c6aafde4a0faef3c5002f6bf753e21671 + md5: 1cd10eda5692519d01bb20e086e214c9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5312,8 +5457,8 @@ packages: run_exports: weak: - fribidi >=1.0.16,<2.0a0 - size: 61244 - timestamp: 1757438574066 + size: 61782 + timestamp: 1785912528684 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py312h447239a_0.conda sha256: 7f36a4fc42f6d4cb9c5b210b6604b54eba2e5745c92d76241b6f8fce446818d1 md5: 6a42923f35087cc88a9fac31ef096ce6 @@ -5330,58 +5475,58 @@ packages: run_exports: {} size: 55016 timestamp: 1779999817627 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.3.0-h0dff253_19.conda - sha256: e3f541c4be7296b800a972482b7a5e399614d5e3310d3d083257fbdb4df81ea0 - md5: 2dd149aa693db92758af3e685ef30439 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-14.4.0-hc6a0c74_1.conda + sha256: e8bedab429b82df70562525aeaaab9c256a8713aecd4fab696310807e10a7460 + md5: fcd2b41f019953fb6e89efaef2905ce2 depends: - conda-gcc-specs - - gcc_impl_linux-64 14.3.0 h235f0fe_19 + - gcc_impl_linux-64 14.4.0 h9711763_1 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 29459 - timestamp: 1778268802660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.3.0-h235f0fe_19.conda - sha256: 1e2500ca976d4831c953d1c6db7b238d2e6806910b930e3eb631b79ba5c3ba41 - md5: 99936dc616b7ce97b0468759b8a7c64e + size: 29190 + timestamp: 1785374790020 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.4.0-h9711763_1.conda + sha256: 7945f55ef3cbd81132dd42258295c906ef5b8df20936f6d0b9bdaa741a0e03c7 + md5: ccaabac23b7229f71df5aa354121c41f depends: - - binutils_impl_linux-64 >=2.45 - - libgcc >=14.3.0 - - libgcc-devel_linux-64 14.3.0 hf649bbc_119 - - libgomp >=14.3.0 - - libsanitizer 14.3.0 h8f1669f_19 - - libstdcxx >=14.3.0 - - libstdcxx-devel_linux-64 14.3.0 h9f08a49_119 + - binutils_impl_linux-64 >=2.46.1 + - libgcc >=14.4.0 + - libgcc-devel_linux-64 14.4.0 hd9a9cd0_101 + - libgomp >=14.4.0 + - libsanitizer 14.4.0 hf39dbba_1 + - libstdcxx >=14.4.0 + - libstdcxx-devel_linux-64 14.4.0 ha5b54cb_101 - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 77667192 - timestamp: 1778268558509 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - sha256: 2c0b2870210cfc7e8561676844f4bd3884b345c19100e1da84cbfb4994d8f104 - md5: 1c2eddf7501ef92050d3fbb11df61ee3 + size: 78573599 + timestamp: 1785374597260 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-16.1.0-h5fcb69b_1.conda + sha256: 00c87015522248adb5565a1b8f977cfe927831dd7ef0cb0a5d13f896844af719 + md5: 419982d8913246db404319048e062d3e depends: - - binutils_impl_linux-64 >=2.45 - - libgcc >=15.2.0 - - libgcc-devel_linux-64 15.2.0 hcc6f6b0_119 - - libgomp >=15.2.0 - - libsanitizer 15.2.0 h90f66d4_19 - - libstdcxx >=15.2.0 - - libstdcxx-devel_linux-64 15.2.0 hd446a21_119 + - binutils_impl_linux-64 >=2.46.1 + - libgcc >=16.1.0 + - libgcc-devel_linux-64 16.1.0 h59071f9_101 + - libgomp >=16.1.0 + - libsanitizer 16.1.0 hf2715c6_1 + - libstdcxx >=16.1.0 + - libstdcxx-devel_linux-64 16.1.0 h41cdd0d_101 - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: {} - size: 81043749 - timestamp: 1778860073982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.3.0-h50e9bb6_27.conda - sha256: d7f427d6db94a5eed2a43b186f8dc17cc1fbeb03517442390a36f1cde02548b0 - md5: 90369fa27fae2f7bf7eaaccc34c793e2 + size: 85161422 + timestamp: 1785375529345 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-14.4.0-hc469d41_0.conda + sha256: f529b3afdb6ed570618387d363c79cf5f1b2e638e76a5fa11b93e64b6b6d6d06 + md5: e5775fadf3bde7e53d0750c540586afa depends: - - gcc_impl_linux-64 14.3.0.* + - gcc_impl_linux-64 14.4.0.* - binutils_linux-64 - sysroot_linux-64 license: BSD-3-Clause @@ -5390,22 +5535,8 @@ packages: run_exports: strong: - libgcc >=14 - size: 29324 - timestamp: 1781279939286 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h7be306e_27.conda - sha256: b24b13d467898a9b9a17a868a2686412a98f8935dc7cc51547dd90645d4e8436 - md5: 28bc49875f9c38e2401696b3e48d0798 - depends: - - gcc_impl_linux-64 15.2.0.* - - binutils_linux-64 - - sysroot_linux-64 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong: - - libgcc >=15 - size: 29330 - timestamp: 1781279944230 + size: 29731 + timestamp: 1785386556095 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.7-h2b0a6b4_0.conda sha256: 1c22e37f9d7e06e9e0582ee5a55c2ddd19ea75f71f44eb13b56f504ef5c37aa5 md5: 5d355db3e937086e22cf4cb5fe19787c @@ -5474,40 +5605,40 @@ packages: run_exports: {} size: 3644103 timestamp: 1753342966311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.3.0-he448592_7.conda - sha256: 7ab008dd3dc5e6ca0de2614771019a1d35480d51df6216c96b1cf6a5e660ee40 - md5: 94394acdc56dcb4d55dddf0393134966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-14.4.0-hd47ba16_1.conda + sha256: 00956ae7d2a500d431a52281749704b7f2e661de617c3d7f57bbdaa3e627ac46 + md5: 46efc47ab48102f029e0cf725083cda3 depends: - - gcc 14.3.0.* - - gcc_impl_linux-64 14.3.0.* - - gfortran_impl_linux-64 14.3.0.* + - gcc 14.4.0 hc6a0c74_1 + - gcc_impl_linux-64 14.4.0 h9711763_1 + - gfortran_impl_linux-64 14.4.0 he75539a_1 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 30407 - timestamp: 1759966108779 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.3.0-h1a219da_19.conda - sha256: aee591aab674d70829ecc1abaa7f2ad5fcccbfad7bafa5ebca1225c86c60f18f - md5: d5f5c8cc2a64220838a096041b7a7fb4 + size: 28524 + timestamp: 1785374797537 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.4.0-he75539a_1.conda + sha256: 5afd92c95741883e7df3a7bc38509480b6a9d80766aef58f80e716c24f59b6a7 + md5: 39093c2df9b13a3c6c9c0c9cb3ad4154 depends: - - gcc_impl_linux-64 >=14.3.0 - - libgcc >=14.3.0 - - libgfortran5 >=14.3.0 - - libstdcxx >=14.3.0 + - gcc_impl_linux-64 >=14.4.0 + - libgcc >=14.4.0 + - libgfortran5 >=14.4.0 + - libstdcxx >=14.4.0 - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 18551249 - timestamp: 1778268735401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.3.0-h5ce6d8a_27.conda - sha256: b8e6bd99f0b7a5e8757a1cf9bf64edc6217206d8872fb9af5d8204e5b581b3d1 - md5: cedd6fb9fad7611ee0bcb0fb531d77f1 + size: 19142097 + timestamp: 1785374722378 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-14.4.0-h4d20c58_0.conda + sha256: 2492c2c720faf61dcf60d034b09fc7d9fdbbc52a7849136663b7c7fbc7552227 + md5: b435b6c4b2d57f3d01e870e26b3c1f1d depends: - - gfortran_impl_linux-64 14.3.0.* - - gcc_linux-64 ==14.3.0 h50e9bb6_27 + - gfortran_impl_linux-64 14.4.0.* + - gcc_linux-64 ==14.4.0 hc469d41_0 - binutils_linux-64 - sysroot_linux-64 license: BSD-3-Clause @@ -5515,16 +5646,16 @@ packages: purls: [] run_exports: strong: - - libgfortran5 >=14.3.0 + - libgfortran5 >=14.4.0 - libgfortran - libgcc >=14 - size: 27545 - timestamp: 1781279939286 -- conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.55.0-pl5321hc575239_0.conda - sha256: 0b6a49c481ea5556e2f260cc376ecb9a8e9e7bcf4a2cf370a571b5c61e9dd898 - md5: f7302ea5f77189667c1035a8824179ca + size: 27817 + timestamp: 1785386556095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.55.0-pl5321h5685339_1.conda + sha256: ffe825e3ff78876dc5aa28eee791d8d9be4a47157761aa38dbff79e9222b3b8e + md5: da325124b01b7b88e7374d160d02698b depends: - - __glibc >=2.28,<3.0.a0 + - __glibc >=2.17,<3.0.a0 - libcurl >=8.21.0,<9.0a0 - libexpat >=2.8.1,<3.0a0 - libgcc >=14 @@ -5538,8 +5669,8 @@ packages: license: GPL-2.0-or-later and LGPL-2.1-or-later purls: [] run_exports: {} - size: 10884573 - timestamp: 1783066293678 + size: 11598127 + timestamp: 1783981072661 - conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-h36e74d4_2.conda sha256: e28a214c71590a09f75f1aaccf5795bbcfb99b00c2d6ef55d34320b4f47485bd md5: 787c780ff43f9f79d78d01e476b81a7c @@ -5576,57 +5707,57 @@ packages: - glew >=2.3.0,<2.4.0a0 size: 492673 timestamp: 1766373546677 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.4-hb03c661_1.conda - sha256: 8586f786e71a52dc37be6a78c37fd8526b80539082352196f6f7440392ce33d0 - md5: bf1df8613072b03a7fb4b77b9fa54048 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glfw-3.5.1-hb03c661_0.conda + sha256: 2f46b0709d5122b37d65a039ad66ff9c756c31341a83ba216a3049700921b2b4 + md5: 0508b01775886f89c7dbf9747a9d8b8f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libxkbcommon >=1.11.0,<2.0a0 - - wayland >=1.24.0,<2.0a0 - - xorg-libx11 >=1.8.12,<2.0a0 + - libxkbcommon >=1.13.2,<2.0a0 + - wayland >=1.26.0,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 - xorg-libxcursor >=1.2.3,<2.0a0 - - xorg-libxi >=1.8.2,<2.0a0 - - xorg-libxinerama >=1.1.5,<1.2.0a0 - - xorg-libxrandr >=1.5.4,<2.0a0 + - xorg-libxi >=1.8.3,<2.0a0 + - xorg-libxinerama >=1.1.6,<1.2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 license: Zlib purls: [] run_exports: weak: - - glfw >=3.4,<4.0a0 - size: 166432 - timestamp: 1758809197097 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.2-hbe0478d_0.conda - sha256: 84448dc33e66a2c74c58fb2a95d9e84547bc65cf44dcebf447b8d236c0ccc68b - md5: 7ac6295be13fafd7f20869b30b47ec2f + - glfw >=3.5.1,<4.0a0 + size: 171191 + timestamp: 1785586436676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-2.88.3-h84d461a_0.conda + sha256: 75dd599db3ad90cfb90792ffa68c8118e5bdafc16c6135cde9400042990506df + md5: 09243f78bae86499d96123a8699d1f79 depends: - python * - packaging - - libglib ==2.88.2 h0d30a3d_0 - - glib-tools ==2.88.2 h8094192_0 + - libglib ==2.88.3 h0d30a3d_0 + - glib-tools ==2.88.3 h95f0039_0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 85433 - timestamp: 1782463895250 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.2-h8094192_0.conda - sha256: 079757e4e0497d67505b52062668e4cc0d2a86ec065ae2c0c57487a178206061 - md5: cfe66c21ae651b84a3d25a1dbb641a54 + - libglib >=2.88.3,<3.0a0 + size: 85415 + timestamp: 1785442107463 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h95f0039_0.conda + sha256: ccdad3d9149ca12353583818bdfde9f66753da7e8ea6dd35a6312062e2fe60d2 + md5: 841fd9387fd3f24ea69a4f679242e32c depends: - - libglib ==2.88.2 h0d30a3d_0 + - libglib ==2.88.3 h0d30a3d_0 - libffi - libgcc >=14 - __glibc >=2.17,<3.0.a0 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 238517 - timestamp: 1782463895250 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.3.0-h96af755_0.conda - sha256: 3c9b6a90937a96ad27d160304cdbe5e9961db613aba2b84ff673429f0c61d48e - md5: d175cb2c14104728ada04883786a309d + size: 238245 + timestamp: 1785442107463 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glslang-16.5.0-h718be3e_1.conda + sha256: b213106181aa7bb52e202ddaef411f106a2e9d641f1ee618fd7ce9e30b265f9b + md5: 3e8c7b2e4ddda1d61b8b3afa01be7d97 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -5638,19 +5769,20 @@ packages: run_exports: weak: - glslang >=16,<17.0a0 - size: 1366082 - timestamp: 1777747028121 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-ha770c72_1.conda - sha256: 80ca13dc518962fcd86856586cb5fb612fe69914234eab322f9dee25f628090f - md5: 33e7a8280999b958df24a95f0cb86b1a + size: 1395808 + timestamp: 1785879900020 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmock-1.17.0-h8e2ec6c_2.conda + sha256: d932fd6c648e611768fe797d428013143d967800ea3f8535367573f530e83b2d + md5: 4f20967d4300d464735046a10fb0ae31 depends: - - gtest 1.17.0 h84d6215_1 + - gtest ==1.17.0 h171cf75_2 + - gtest >=1.17.0,<1.17.1.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 7578 - timestamp: 1748320126956 + size: 4943 + timestamp: 1786002682554 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c md5: c94a5994ef49749880a8139cf9afcbe1 @@ -5684,21 +5816,21 @@ packages: - gnutls >=3.8.13,<3.9.0a0 size: 2054535 timestamp: 1778044634746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda - sha256: 885fa7d1d7e2ad9ed0a700ee0d81ceb49de278253082d517959b22d6336eecce - md5: cf09e9fc938518e91d0706572cadf17a +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-h54a6638_1.conda + sha256: 7fa3b6a9c081fa3e545573152a788d061a0a0ba57df7251cc0f4f75225fc93e7 + md5: f9fe2984587fa8235a6af6004760cd18 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - libstdcxx >=14 + - libgcc >=14 license: LGPL-2.0-or-later license_family: LGPL purls: [] run_exports: weak: - graphite2 >=1.3.15,<2.0a0 - size: 100054 - timestamp: 1780454302233 + size: 102835 + timestamp: 1786118485753 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda sha256: 48d4aae8d2f7dd038b8c2b6a1b68b7bca13fa6b374b78c09fcc0757fa21234a1 md5: 341fc61cfe8efa5c72d24db56c776f44 @@ -5795,23 +5927,23 @@ packages: run_exports: {} size: 383443 timestamp: 1768408501404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h84d6215_1.conda - sha256: 1f738280f245863c5ac78bcc04bb57266357acda45661c4aa25823030c6fb5db - md5: 55e29b72a71339bc651f9975492db71f +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtest-1.17.0-h171cf75_2.conda + sha256: e1646a698294b30f1cd4786a5239c31b513aa40cf19179dbacb0d10d8ab6f202 + md5: 9eebac35ba4f2390f9df04c9bb8414a5 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libstdcxx >=14 + - libgcc >=14 constrains: - - gmock 1.17.0 + - gmock ==1.17.0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - gtest >=1.17.0,<1.17.1.0a0 - size: 416610 - timestamp: 1748320117187 + size: 451866 + timestamp: 1786002682554 - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda sha256: c6bb4f06331bcb0a566d84e0f0fad7af4b9035a03b13e2d5ecfaf13be57e6e10 md5: bcaea22d85999a4f17918acfab877e61 @@ -5874,38 +6006,38 @@ packages: - gts >=0.7.6,<0.8.0a0 size: 318312 timestamp: 1686545244763 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.3.0-he448592_7.conda - sha256: 7acf0ee3039453aa69f16da063136335a3511f9c157e222def8d03c8a56a1e03 - md5: 91dc0abe7274ac5019deaa6100643265 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-14.4.0-hd47ba16_1.conda + sha256: defd5e344fd893fa35624777d547d6444cb25072a60f3ec43e4c114af6182156 + md5: 32f70241cdcf09432f269877506c8f0c depends: - - gcc 14.3.0.* - - gxx_impl_linux-64 14.3.0.* + - gcc 14.4.0 hc6a0c74_1 + - gxx_impl_linux-64 14.4.0 hc436dd5_1 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 30403 - timestamp: 1759966121169 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.3.0-h2185e75_19.conda - sha256: a31694c26d6a525d44f81130ebf7b9abe18771b7eaecb2cf93630c0b8b8fb936 - md5: 8b867d053ed89743eeac52c3a50f112d + size: 28527 + timestamp: 1785374804415 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.4.0-hc436dd5_1.conda + sha256: 7531870fff6193e6501c11e777772836f2c654c3bc663eee1c58336695ef0e1d + md5: 6d4bd0c4d4c5d9fc7653db363b1c4db4 depends: - - gcc_impl_linux-64 14.3.0 h235f0fe_19 - - libstdcxx-devel_linux-64 14.3.0 h9f08a49_119 + - gcc_impl_linux-64 14.4.0 h9711763_1 + - libstdcxx-devel_linux-64 14.4.0 ha5b54cb_101 - sysroot_linux-64 - tzdata license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 15235650 - timestamp: 1778268773535 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.3.0-hd240bd5_27.conda - sha256: cf5a44d14732b79e3c2bc6ebe1dba4f6b9077939f3093c75e36ad340737b5c15 - md5: 41fae38a424bbc78438cfec6a4fde187 + size: 15871779 + timestamp: 1785374755447 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-14.4.0-h82679ac_0.conda + sha256: 531b55ef516bd6e81c009a70036400b1b9ba2db6a35540c979b90f72e7187395 + md5: 5a2cae3743a93532d433a693062ae7f2 depends: - - gxx_impl_linux-64 14.3.0.* - - gcc_linux-64 ==14.3.0 h50e9bb6_27 + - gxx_impl_linux-64 14.4.0.* + - gcc_linux-64 ==14.4.0 hc469d41_0 - binutils_linux-64 - sysroot_linux-64 license: BSD-3-Clause @@ -5915,8 +6047,8 @@ packages: strong: - libstdcxx >=14 - libgcc >=14 - size: 27854 - timestamp: 1781279939286 + size: 28102 + timestamp: 1785386556095 - conda: https://conda.anaconda.org/conda-forge/linux-64/gz-cmake3-3.5.5-h05f81b2_0.conda sha256: b654d0102a8b8242836a5863c0157945b5c549d505383f4f8b724926a55f68aa md5: fda2ad837ffe2ed7f73ddfab260d82e3 @@ -6002,19 +6134,19 @@ packages: - libgz-utils2 >=2.2.1,<3.0a0 size: 8042 timestamp: 1767701472560 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-ha770c72_1.conda - sha256: 853beec89ff91cbbf630f1d305b69153eb28a3cb78af95ddc1fb4d30e524c6f4 - md5: 72e956a71241633d8c80aa198fd08784 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.3.0-ha770c72_0.conda + sha256: 511813aaad42ed2494efc77452738fed7734985e069efc08c279a701b1708ba0 + md5: 7f42f814e1306f83e4cac267baa9acab depends: - - libharfbuzz-devel 14.2.1 h17a8019_1 + - libharfbuzz-devel 14.3.0 h17a8019_0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 11039 - timestamp: 1782800611635 + - libharfbuzz >=14.3.0 + size: 11045 + timestamp: 1785770087614 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 md5: bd77f8da987968ec3927990495dc22e4 @@ -6061,21 +6193,21 @@ packages: run_exports: {} size: 17625 timestamp: 1771539597968 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_0.conda - sha256: fbf86c4a59c2ed05bbffb2ba25c7ed94f6185ec30ecb691615d42342baa1a16a - md5: c80d8a3b84358cb967fa81e7075fbc8a +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h54a6638_2.conda + sha256: d7c260b7e1cf22ce04d6ba8a86eabf4e6c50bc96a5c27fe2ecb32298af3e88eb + md5: 4ef4b977bb216a3001a3334696a80850 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 license: MIT license_family: MIT purls: [] run_exports: weak: - icu >=78.3,<79.0a0 - size: 12723451 - timestamp: 1773822285671 + size: 14455340 + timestamp: 1784916378180 - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.2.2-hde8ca8f_0.conda sha256: 43f30e6fd8cbe1fef59da760d1847c9ceff3fb69ceee7fd4a34538b0927959dd md5: c427448c6f3972c76e8a4474e0fe367b @@ -6264,23 +6396,23 @@ packages: - lcms2 >=2.19.1,<3.0a0 size: 251971 timestamp: 1780211695895 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - sha256: 3d584956604909ff5df353767f3a2a2f60e07d070b328d109f30ac40cd62df6c - md5: 18335a698559cdbcd86150a48bf54ba6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.46.1-default_hbd61a6d_102.conda + sha256: 27d83f1188cd19bcb7754a078b3fa7f4cfb8527f8eb2fde54dd01fc529d1adec + md5: 449500f2c089da11c40f5c21312e3e07 depends: - __glibc >=2.17,<3.0.a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - binutils_impl_linux-64 2.45.1 + - binutils_impl_linux-64 2.46.1 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 728002 - timestamp: 1774197446916 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda - sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 - md5: a752488c68f2e7c456bcbd8f16eec275 + size: 745303 + timestamp: 1784214507189 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda + sha256: bf9fdebf55d8bc99d83531cdffda00703f4dc5f93a1a956768c147362c72feda + md5: fb9d356b1a57d6d54768be7ebd5fce09 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6290,9 +6422,9 @@ packages: purls: [] run_exports: weak: - - lerc >=4.1.0,<5.0a0 - size: 261513 - timestamp: 1773113328888 + - lerc >=4.2.0,<5.0a0 + size: 271158 + timestamp: 1785036167977 - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.29.0-hb700be7_0.conda sha256: d87cfc5eaa08eefff97d891ecb49faa958fcfc32a425767796269c4100d4e516 md5: f3c3bc77c96af553f761af0e78bc8d9d @@ -6354,9 +6486,9 @@ packages: - libaec >=1.1.5,<2.0a0 size: 36544 timestamp: 1769221884824 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.8-gpl_hc2c16d8_100.conda - sha256: f916b51f55f51a9bb2d902e0a5f029490f7b745aee549c349751c1787ddc26b8 - md5: 44652e646cb623f486ea72e7e7479222 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.9-gpl_hc2c16d8_100.conda + sha256: 000b4baa9ce849b5fb259af9256331d0c7872361ac63a2bba0d0c48eb35663d0 + md5: 3988040b14a8083b1a5382d99f584e5f depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -6374,9 +6506,9 @@ packages: purls: [] run_exports: weak: - - libarchive >=3.8.8,<3.9.0a0 - size: 867280 - timestamp: 1782289011634 + - libarchive >=3.8.9,<3.9.0a0 + size: 876197 + timestamp: 1785250447640 - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.25.1-h3f43e3d_1.conda sha256: cb728a2a95557bb6a5184be2b8be83a6f2083000d0c7eff4ad5bbe5792133541 md5: 3b0d184bc9404516d418d4509e418bdc @@ -6458,27 +6590,27 @@ packages: - libavif16 >=1.4.2,<2.0a0 size: 149510 timestamp: 1779847073231 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-8_h4a7cf45_openblas.conda - build_number: 8 - sha256: b2da6bfd72a1c9cb143ccf64bf5b28790cb4eb58bd1cb978f6537b2322f7d48b - md5: 00fc660ab1b2f5ca07e92b4900d10c79 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-9_h4a7cf45_openblas.conda + build_number: 9 + sha256: 39c7b3c5427b435c9c059ede9da61d46d42574e5b846ad37fdc3af4a5eab1e48 + md5: f5c4b041925dea221dc4bad2e50569d9 depends: - - libopenblas >=0.3.33,<0.3.34.0a0 - - libopenblas >=0.3.33,<1.0a0 + - libopenblas >=0.3.34,<0.3.35.0a0 + - libopenblas >=0.3.34,<1.0a0 constrains: - - blas 2.308 openblas + - blas 2.309 openblas + - libcblas 3.11.0 9*_openblas + - liblapack 3.11.0 9*_openblas + - liblapacke 3.11.0 9*_openblas - mkl <2027 - - libcblas 3.11.0 8*_openblas - - liblapack 3.11.0 8*_openblas - - liblapacke 3.11.0 8*_openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - libblas >=3.11.0,<4.0a0 - size: 18804 - timestamp: 1779859100675 + size: 18033 + timestamp: 1786059035239 - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.88.0-hd24cca6_7.conda sha256: dd489228e1916c7720c925248d0ba12803d1dc8b9898be0c51f4ab37bab6ffa5 md5: d70e4dc6a847d437387d45462fe60cf9 @@ -6619,24 +6751,24 @@ packages: - libcap >=2.77,<2.78.0a0 size: 124432 timestamp: 1774333989027 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-8_h0358290_openblas.conda - build_number: 8 - sha256: 1a2bc77bb26520255904a3d9b1f40e6bf0bf9d8d3405c7709dd162282820915a - md5: 33a413f1095f8325e5c30fde3b0d2445 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-9_h0358290_openblas.conda + build_number: 9 + sha256: 4c532a70ea9aeff2fa1aabaa4828ebc00c2ed12b22aa8ba19da5302b882fc82b + md5: 092c5649f3727af436ab0f67f48c3811 depends: - - libblas 3.11.0 8_h4a7cf45_openblas + - libblas 3.11.0 9_h4a7cf45_openblas constrains: - - blas 2.308 openblas - - liblapacke 3.11.0 8*_openblas - - liblapack 3.11.0 8*_openblas + - blas 2.309 openblas + - liblapack 3.11.0 9*_openblas + - liblapacke 3.11.0 9*_openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - libcblas >=3.11.0,<4.0a0 - size: 18778 - timestamp: 1779859107964 + size: 17998 + timestamp: 1786059041397 - conda: https://conda.anaconda.org/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda sha256: 4695ce68eda595b4f53146bea1096a9f2e0d33290618ba83a246b5ed8871ebc9 md5: 6a3d962d34385e0a511b859d679f6ea2 @@ -6653,9 +6785,30 @@ packages: - libccd-double >=2.1,<2.2.0a0 size: 36171 timestamp: 1687341825064 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_4.conda - sha256: aa61ed39af5944d05cd27672d2b520dbf2b3428575fbc7192acede709bed974a - md5: 80edae9c0a5feaf93fa2996c266d1ce7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-22.1.8-default_hcdef588_5.conda + sha256: 0cd9f793401d96823a5f257a0981f4732cb18aa3f071698c63e8cc81a0d2bba1 + md5: d15cb256da81fda17e1627ba61b249b2 + depends: + - libclang13 ==22.1.8 default_h982d582_5 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libllvm22 >=22.1.8,<22.2.0a0 + - libclang13 >=22.1.8 + license: Apache-2.0 WITH LLVM-exception + purls: [] + run_exports: + weak: + - libclang13 >=22.1.8 + size: 33711 + timestamp: 1786164902203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h4f0048e_5.conda + sha256: 6d01361d44eefea7cb656b4d2b6dd8be2bcf51730278b6ba8cc656c34012688f + md5: f9d1fb86c81ca1dfc9e37d92eec1461a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6667,41 +6820,64 @@ packages: run_exports: weak: - libclang-cpp21.1 >=21.1.8,<21.2.0a0 - size: 21066414 - timestamp: 1777010859192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h6c227bf_3.conda - sha256: ccb8bd0a8f2d57675b6a60dabb0cc8becb35c2748ac4ec920d7f7625b93c16d8 - md5: 864e6d29ec7378b89ff5b5c9c629099e + size: 21084414 + timestamp: 1786194888604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h08c5240_5.conda + sha256: 900fe3e1443d2f22a1780274d77200afad4754561c7591b35efc89337c0b9054 + md5: c80c4d7580f5d2ad57f6b34ddf66bfba depends: + - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] run_exports: weak: - libclang-cpp22.1 >=22.1.8,<22.2.0a0 - size: 24175081 - timestamp: 1782358841320 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h9692865_3.conda - sha256: b90ed8467a692788477c06bc0359fac52ed5651d801ddef189ba4b7ecf3ce38c - md5: 2a913525f4201f1adab2711fcf6f89b3 + size: 24170992 + timestamp: 1786164902203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h982d582_5.conda + sha256: 584d02bf4dcdda7d4652db27b483700c074f86ab800d0ed468978c9135db3fa9 + md5: 5c96f4aaf6da3258e797f4227ec382d2 depends: - - libclang-cpp22.1 ==22.1.8 default_h6c227bf_3 + - libclang-cpp22.1 ==22.1.8 default_h08c5240_5 + - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - - __glibc >=2.17,<3.0.a0 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] run_exports: weak: - libclang13 >=22.1.8 - size: 14283567 - timestamp: 1782358841320 + size: 14275113 + timestamp: 1786164902203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcompiler-rt-21.1.8-hb700be7_1.conda + sha256: 6f76c19dd29c2d2916e919d01e929717a7c88145523c6dffe8619f3c8bb2f9eb + md5: 3b4d8d38ce35c48ad0d6415ef286541e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + weak: + - libcompiler-rt >=21.1.8 + size: 10606333 + timestamp: 1769057116625 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -6719,15 +6895,15 @@ packages: - libcups >=2.3.3,<2.4.0a0 size: 4518030 timestamp: 1770902209173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hae6b9f4_2.conda - sha256: ba8354084b34fce56d5697982fce4a384c148e972e15c0ab891187617fe7ec29 - md5: f9c59d277a16ec8f272b2d5dd2ec3335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-heca4667_4.conda + sha256: aff8ef75636d0825ce34911e0bef2f26816e7afd090a9dcb4b9bacab75cbf584 + md5: 3f2fd5617cfacac49c85f6dc63842ea1 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.22.2,<1.23.0a0 - libgcc >=14 - libnghttp2 >=1.68.1,<2.0a0 - - libpsl >=0.22.0,<0.23.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -6738,11 +6914,11 @@ packages: run_exports: weak: - libcurl >=8.21.0,<9.0a0 - size: 480327 - timestamp: 1782911787190 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 - md5: 6c77a605a7a689d17d4819c0f8ac9a00 + size: 480565 + timestamp: 1785500108494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + sha256: 82e134c8a08b1eed9a2ed8ab578b89aa1730dcde3dea8dd87645ed0637878e54 + md5: 40f9b31aa9cf007789867df0decd0492 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6752,11 +6928,11 @@ packages: run_exports: weak: - libdeflate >=1.25,<1.26.0a0 - size: 73490 - timestamp: 1761979956660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda - sha256: 7d3187c11b7ae66c5595a8afd5a7ce352a490527fdf6614cab129bc7f2c16ba3 - md5: d8d16b9b32a3c5df7e5b3350e2cbe058 + size: 73710 + timestamp: 1785908694612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_1.conda + sha256: b4e74db8ed1d5f8b6c9edf9582953c063650d677b299e90585d00f127644eb87 + md5: 65514a7ba857e9dbffbffd641f293e33 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6767,8 +6943,8 @@ packages: run_exports: weak: - libdrm >=2.4.127,<2.5.0a0 - size: 311505 - timestamp: 1778975798004 + size: 311002 + timestamp: 1785984394604 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -6811,19 +6987,20 @@ packages: - libegl >=1.7.0,<2.0a0 size: 31718 timestamp: 1779728222280 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h280c20c_3.conda + sha256: e4418f68d01a6307c4431b585c71b584f40189877364e542ee87deb777f5e85b + md5: 7bc31538d6e3fb349e897353969237ec depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: BSD-2-Clause OR GPL-2.0-or-later + license_family: GPL purls: [] run_exports: weak: - libev >=4.33,<4.34.0a0 - size: 112766 - timestamp: 1702146165126 + size: 43220 + timestamp: 1785917328200 - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 md5: a1cfcc585f0c42bf8d5546bb1dfb668d @@ -6866,6 +7043,19 @@ packages: - libffi >=3.5.2,<3.6.0a0 size: 58592 timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.7.0-h3435931_0.conda + sha256: ac38603008bf1e99b8ed379b1a656a67a70e2841f2b6a069c630cdf6316012d2 + md5: 0abe40a9880086ca4d2e5daf09dceff9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libffi >=3.7.0,<3.8.0a0 + size: 67576 + timestamp: 1783520858222 - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d md5: ee48bf17cc83a00f59ca1494d5646869 @@ -6883,59 +7073,59 @@ packages: - libflac >=1.4.3,<1.5.0a0 size: 394383 timestamp: 1687765514062 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 - md5: e289f3d17880e44b633ba911d57a321b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_1.conda + sha256: 9f09d889d1021fa0d99968e5f209a7a7b316dee48c97ed0d79e996e1272a6280 + md5: 12a05d10f2e4eadfd7b8f754a17f5e1a depends: - libfreetype6 >=2.14.3 license: GPL-2.0-only OR FTL purls: [] run_exports: {} - size: 8049 - timestamp: 1774298163029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d - md5: fb16b4b69e3f1dcfe79d80db8fd0c55d + size: 8419 + timestamp: 1785641173212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_1.conda + sha256: 162f1736f9ec7b19915658cbb25a685748932f697418ab85657332de5da5f496 + md5: e63acf9b3849fd9fc2dba64b69849716 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libpng >=1.6.55,<1.7.0a0 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 constrains: - freetype >=2.14.3 license: GPL-2.0-only OR FTL purls: [] run_exports: {} - size: 384575 - timestamp: 1774298162622 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 - md5: 57736f29cc2b0ec0b6c2952d3f101b6a + size: 386042 + timestamp: 1785641172605 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-16.1.0-ha9f2e26_1.conda + sha256: d5cb8475131c31680f8fd30512c418f373064e272e452063276a8fb14c9fa42f + md5: 5a7d954665c707c93311657cd779c705 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.2.0=*_19 - - libgomp 15.2.0 he0feb66_19 + - libgomp 16.1.0 he0feb66_1 + - libgcc-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 1041084 - timestamp: 1778269013026 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda - sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98 - md5: 331ee9b72b9dff570d56b1302c5ab37d + size: 1057877 + timestamp: 1785375436766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-16.1.0-h69a702a_1.conda + sha256: 225275c562337a1cd61705da0ee4235dde7bba7504de1c34b74c894adb2b0eee + md5: 7ed870c014a6f23c7dfafda53d2763a9 depends: - - libgcc 15.2.0 he0feb66_19 + - libgcc 16.1.0 ha9f2e26_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - libgcc - size: 27694 - timestamp: 1778269016987 + size: 28210 + timestamp: 1785375440733 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda sha256: 245be793e831170504f36213134f4c24eedaf39e634679809fd5391ad214480b md5: 88c1c66987cd52a712eea89c27104be6 @@ -6992,33 +7182,33 @@ packages: - libgettextpo >=0.25.1,<1.0a0 size: 37407 timestamp: 1753342931100 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_19.conda - sha256: 561a42758ef25b9ce308c4e2cf56daee4f06138385a17e29a492cd928e00be6f - md5: 42bf7eca1a951735fa06c0e3c0d5c8e6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-16.1.0-h69a702a_1.conda + sha256: 9e82d410a50bd4e5e47cbbb026454c3eb543954baca4db23929575b571bf56a3 + md5: 2fbed65cc90cf0724e1ec4de13696737 depends: - - libgfortran5 15.2.0 h68bc16d_19 + - libgfortran5 16.1.0 h79bb938_1 constrains: - - libgfortran-ng ==15.2.0=*_19 + - libgfortran-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 27655 - timestamp: 1778269042954 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_19.conda - sha256: 057978bb69fea29ed715a9b98adf71015c31baecc4aeb2bfc20d4fd5d83579d4 - md5: 85072b0ad177c966294f129b7c04a2d5 + size: 28134 + timestamp: 1785375470055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-16.1.0-h79bb938_1.conda + sha256: 05078ab464d506dff971860cb1a553b35bc27c0b5ce8ec29b8bfaca5f2359652 + md5: dd51ed33e8c70995f8e33cc9dc537297 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=15.2.0 + - libgcc >=16.1.0 constrains: - - libgfortran 15.2.0 + - libgfortran 16.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 2483673 - timestamp: 1778269025089 + size: 2538696 + timestamp: 1785375448623 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_3.conda sha256: ec353b3076ed8e357ed961d0e9ff6997491cade0e603de5bd18a2e301ac78ebd md5: f25206d7322c0e9648e8b83694d143ab @@ -7045,25 +7235,25 @@ packages: - libgl >=1.7.0,<2.0a0 size: 115664 timestamp: 1779728218325 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.2-h0d30a3d_0.conda - sha256: 4bee10e62796f01e4fa2b5849135b1cc061337fe9cf5eb9bd79e9664922ae0e4 - md5: 889febc66cd9e4190f80ef9718fa239b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-h0d30a3d_0.conda + sha256: 69ea4df61403531e5b3e5f3d52ba2837423df361b4eb8727f5b63aaf6de6768a + md5: 17c3b7b6bcbd35b688c933eb4834c0bc depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - libffi >=3.5.2,<3.6.0a0 - pcre2 >=10.47,<10.48.0a0 + - libffi >=3.5.2,<3.6.0a0 constrains: - glib >2.66 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 4754220 - timestamp: 1782463895250 + - libglib >=2.88.3,<3.0a0 + size: 4755324 + timestamp: 1785442107463 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef md5: 8422fcc9e5e172c91e99aef703b3ce65 @@ -7116,9 +7306,9 @@ packages: - libglx >=1.7.0,<2.0a0 size: 27363 timestamp: 1779728211402 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b - md5: faac990cb7aedc7f3a2224f2c9b0c26c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-16.1.0-he0feb66_1.conda + sha256: 62cb599ad0539d99386515326d9d5e8f51f75a60c69c2131b21df76edf35bd89 + md5: 88f2d91cb1533194c323534253094d23 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 @@ -7127,8 +7317,8 @@ packages: run_exports: strong: - _openmp_mutex >=4.5 - size: 603817 - timestamp: 1778268942614 + size: 640415 + timestamp: 1785375373755 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgz-cmake3-3.5.5-h54a6638_0.conda sha256: 6092ccfec5a52200a2dd5cfa33f67e7c75d473dbb1673baf145a56456589196f md5: 046a934130154ef383da67712d179235 @@ -7212,9 +7402,9 @@ packages: - libgz-utils2 >=2.2.1,<3.0a0 size: 63479 timestamp: 1767701472558 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.2.1-h17a8019_1.conda - sha256: 821c315f6b5171aa89e735be2ad84e74eb3f898fc7610ee36cfecd95dfa789e8 - md5: fb4669c3990b94ea32fbb81f433e9aa6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.3.0-h17a8019_0.conda + sha256: fb72d6f7e90d4927cb53a4e13592559ce74b65052323d5d6dd12499b026c680e + md5: f33637ebded146eafa6b2197c8f597a6 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -7223,7 +7413,7 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.88.2,<3.0a0 + - libglib >=2.88.3,<3.0a0 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 @@ -7231,11 +7421,11 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 1297668 - timestamp: 1782800580119 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.2.1-h17a8019_1.conda - sha256: 6d8e793042affd18ca1784b7794fab14d16f54f984777ce6ab86bacaa465ab0d - md5: 99cf21100441e51272f1cd6fe0632a20 + size: 1333436 + timestamp: 1785770053613 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.3.0-h17a8019_0.conda + sha256: 7ce9326c2520ae758f523ae2d72a0762f7494d77fe8cc9a96065df541e1db8e2 + md5: 15634b3c7e5a68ca7c6e0bbf84cb2383 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -7245,8 +7435,8 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.88.2,<3.0a0 - - libharfbuzz 14.2.1 h17a8019_1 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz 14.3.0 h17a8019_0 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 @@ -7255,9 +7445,9 @@ packages: purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 1970690 - timestamp: 1782800603897 + - libharfbuzz >=14.3.0 + size: 2081226 + timestamp: 1785770079548 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.13.0-default_he001693_1000.conda sha256: 5041d295813dfb84652557839825880aae296222ab725972285c5abe3b6e4288 md5: c197985b58bc813d26b42881f0021c82 @@ -7275,9 +7465,9 @@ packages: - libhwloc >=2.13.0,<2.13.1.0a0 size: 2436378 timestamp: 1770953868164 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h10be129_0.conda - sha256: 8b70955d5e9a49d08945d4f8e2eab855b2efa5fce9cb9bc5e75d86764e6f2f38 - md5: 3a9428b74c403c71048104d38437b48c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.4.0-h3a9caae_0.conda + sha256: 02ab5e50c3921e88ad4dd0bc8f3fe282d2d7d03a20203d3281954b94641deb3d + md5: 9544a7225c8366ea2c397aad5fb53470 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7287,8 +7477,8 @@ packages: run_exports: weak: - libhwy >=1.4.0,<1.5.0a0 - size: 1435782 - timestamp: 1776989559668 + size: 1431901 + timestamp: 1784325535334 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f md5: 915f5995e94f60e9a4826e0b0920ee88 @@ -7317,9 +7507,9 @@ packages: - libidn2 >=2,<3.0a0 size: 139036 timestamp: 1760385590993 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.4.1-hb03c661_0.conda - sha256: 10056646c28115b174de81a44e23e3a0a3b95b5347d2e6c45cc6d49d35294256 - md5: 6178c6f2fb254558238ef4e6c56fb782 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda + sha256: bba8538e6538ed58a8479b332337b96986561f975d06cfa2039a016c2d246ee4 + md5: 898d1c9793eaa52efc4727bd84d2e39a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7329,9 +7519,9 @@ packages: purls: [] run_exports: weak: - - libjpeg-turbo >=3.1.4.1,<4.0a0 - size: 633831 - timestamp: 1775962768273 + - libjpeg-turbo >=3.2.0,<4.0a0 + size: 650434 + timestamp: 1785896381946 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-h174a0a3_1.conda sha256: 0c8a78c6a42a6e4c6de3a5e82d692f60400d43f4cc80591745f28b37daad9c70 md5: 850f48943d6b4589800a303f0de6a816 @@ -7350,42 +7540,42 @@ packages: - libjxl >=0.11,<1.0a0 size: 1846962 timestamp: 1777065125966 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-8_h47877c9_openblas.conda - build_number: 8 - sha256: 168e327d737059553e15cc6ec36d76b9bbb3931c2a7721555fd68b4c9348b247 - md5: 809be8ba8712c77bc7d44c2d99390dc4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-9_h47877c9_openblas.conda + build_number: 9 + sha256: ea989e2dabd21d296a5a4ec515e695645aefcdf778ffdb5eeea515421d243ab5 + md5: e51473c2b7e1f9cb61daafccfd912abf depends: - - libblas 3.11.0 8_h4a7cf45_openblas + - libblas 3.11.0 9_h4a7cf45_openblas constrains: - - blas 2.308 openblas - - libcblas 3.11.0 8*_openblas - - liblapacke 3.11.0 8*_openblas + - blas 2.309 openblas + - libcblas 3.11.0 9*_openblas + - liblapacke 3.11.0 9*_openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - liblapack >=3.11.0,<3.12.0a0 - size: 18790 - timestamp: 1779859115086 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-8_h6ae95b6_openblas.conda - build_number: 8 - sha256: 0b982865888a73fe7c2e7d8e8ee3738ac378b83012a7da1a12264a473cb2382b - md5: da17457f689df5c0f246d2f0b3798fd2 - depends: - - libblas 3.11.0 8_h4a7cf45_openblas - - libcblas 3.11.0 8_h0358290_openblas - - liblapack 3.11.0 8_h47877c9_openblas + size: 18021 + timestamp: 1786059046733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-9_h6ae95b6_openblas.conda + build_number: 9 + sha256: 7534e06a82865d3cfa050937c77887e8e85e7edeb4623972f6fe837cc7d13334 + md5: d76700bd66c92d6159bfcfd3c8f83bb8 + depends: + - libblas 3.11.0 9_h4a7cf45_openblas + - libcblas 3.11.0 9_h0358290_openblas + - liblapack 3.11.0 9_h47877c9_openblas constrains: - - blas 2.308 openblas + - blas 2.309 openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - liblapacke >=3.11.0,<3.12.0a0 - size: 18824 - timestamp: 1779859122364 + size: 18034 + timestamp: 1786059054936 - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda sha256: 91bb4f5be1601b40b4995911d785e29387970f0b3c80f33f7f9028f95335399f md5: 1a2708a460884d6861425b7f9a7bef99 @@ -7438,9 +7628,9 @@ packages: - libltdl >=2.4.3a,<2.5.0a0 size: 38472 timestamp: 1740593829307 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d - md5: b88d90cad08e6bc8ad540cb310a761fb +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_1.conda + sha256: 9787df8c22a59c9a70d3e5a10db9ad663485e75e9ccc3f09bd092cb7b95e0dab + md5: 1390b7c5ac0b1d8e447bc5efa6d3c8c2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7451,37 +7641,36 @@ packages: run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 113478 - timestamp: 1775825492909 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda - sha256: 7858f6a173206bc8a5bdc8e75690483bb66c0dcc3809ac1cb43c561a4723623a - md5: 55c20edec8e90c4703787acaade60808 + size: 112995 + timestamp: 1786348617826 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_1.conda + sha256: adef6e8b60afb684110b06b5310977c6836e1c923ce3ec199f45c0f000b42f20 + md5: 6d83d6a332c19424e9e66b69b180ec11 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - liblzma 5.8.3 hb03c661_0 + - liblzma 5.8.3 hb03c661_1 license: 0BSD purls: [] run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 491429 - timestamp: 1775825511214 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.5-hc2fc477_0.conda - sha256: 480c485ee8c662124b1248e88135cfc8e8ece4b21bc44b89eb5b6413831f3614 - md5: baed2ad77c2d3c4929737b6e97d65d99 + size: 491970 + timestamp: 1786348627135 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmicrohttpd-1.0.10-hc2fc477_0.conda + sha256: 2c27ceb7c159ee3d6ea8b333dfc8d7bede5d8bfd325df677d4c292e24a0dd7dc + md5: 4e01a1886e86ee32a5cbdb354d56d86f depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - gnutls >=3.8.13,<3.9.0a0 license: LGPL-2.0-or-later - license_family: LGPL purls: [] run_exports: weak: - - libmicrohttpd >=1.0.5,<1.1.0a0 - size: 287897 - timestamp: 1779091106723 + - libmicrohttpd >=1.0.10,<1.1.0a0 + size: 303021 + timestamp: 1786366467972 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmujoco-3.6.0-h31df9c7_0.conda sha256: 09283b529b8c2c0a27ec7f01b4933a0a31da102898319863193712ce5f875924 md5: 84bbca61417a27787feadc46fcf838d2 @@ -7581,9 +7770,9 @@ packages: - libntlm >=1.8,<2.0a0 size: 33418 timestamp: 1734670021371 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_3.conda - sha256: 17d72848a6480f0b0708f2b2f64292b5fa0e0996ce56f26fc26e4aebb5a9ca81 - md5: 672fad24c7fedff73c684c3e9e9848b3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnuma-2.0.18-hb03c661_4.conda + sha256: db0a0fc67104196afe6732ff055b30829f984f4cf1e8efff4ea5b2bbb1640da2 + md5: bfe9cd9c6d92170947301fef63356e39 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7592,8 +7781,8 @@ packages: run_exports: weak: - libnuma >=2.0.18,<3.0a0 - size: 44408 - timestamp: 1772779840609 + size: 44657 + timestamp: 1786135384316 - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-hd0c01bc_1.conda sha256: ffb066ddf2e76953f92e06677021c73c85536098f1c21fcd15360dbc859e22e4 md5: 68e52064ed3897463c0e958ab5c8f91b @@ -7608,24 +7797,24 @@ packages: - libogg >=1.3.5,<1.4.0a0 size: 218500 timestamp: 1745825989535 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.33-pthreads_h94d23a6_0.conda - sha256: 3d9aa85648e5e18a6d66db98b8c4317cc426721ad7a220aa86330d1ccedc8903 - md5: 2d3278b721e40468295ca755c3b84070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.34-pthreads_h94d23a6_0.conda + sha256: 23392fc4f4e5ba230fcd1ef825878ba5ca7ee4f6259fac0cbb13299134b7bf7a + md5: c282d68f272927612462b5d626838ef1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 constrains: - - openblas >=0.3.33,<0.3.34.0a0 + - openblas >=0.3.34,<0.3.35.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - - libopenblas >=0.3.33,<1.0a0 - size: 5931919 - timestamp: 1776993658641 + - libopenblas >=0.3.34,<1.0a0 + size: 5952629 + timestamp: 1784287497473 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopencv-4.12.0-qt6_py312h52d6ec5_612.conda sha256: 73b3c2f1bc8417d297bc71e895236c7a23ac6c3a6bffe617eada876b66fd3280 md5: 872b744a711e7948710f70a79926e207 @@ -7913,9 +8102,9 @@ packages: - libopus >=1.6.1,<2.0a0 size: 324993 timestamp: 1768497114401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda - sha256: f41721636a7c2e51bc2c642e1127955ab9c81145470714fdaac44d4d09e4af41 - md5: 33082e13b4769b48cfeb648e15bfe3fc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda + sha256: addc80c69d362a9e6c40305c493139a8e9ee504b2f45a6687dbdaa9da3c6183c + md5: 35fa2b34bbced424e6976d30f5fde576 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -7925,8 +8114,8 @@ packages: run_exports: weak: - libpciaccess >=0.19,<0.20.0a0 - size: 29147 - timestamp: 1773533027610 + size: 30070 + timestamp: 1785971678815 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda sha256: 377cfe037f3eeb3b1bf3ad333f724a64d32f315ee1958581fc671891d63d3f89 md5: eba48a68a1a2b9d3c0d9511548db85db @@ -7976,59 +8165,59 @@ packages: - libprotobuf >=6.31.1,<6.31.2.0a0 size: 4204474 timestamp: 1780003940664 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.22.0-hd9031aa_0.conda - sha256: cd11890a2c1f14d0342bfcbd81f97152d61dc71c27c7085efc13705a8f64f7c9 - md5: e2834a423b3967e7b3b1e901c4a5f42f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.0-hf670292_0.conda + sha256: bbb184b81f28a868528b05a81db2448a232a762e47c983330d57b98e1211ae32 + md5: 075e9aafb806c06f190e4757506d2631 depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.3,<79.0a0 - libgcc >=14 - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libpsl >=0.22.0,<0.23.0a0 - size: 83067 - timestamp: 1782394772411 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.10.5-h6406941_1.conda - sha256: 7c9e562842f193f772ef0ba681f238a2d9e5ef637588b6e46eb30cc6aa1940c8 - md5: fa63517815747363c41b439ff9301db1 + - libpsl >=0.23.0,<0.24.0a0 + size: 72585 + timestamp: 1785426713969 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libraqm-0.11.0-h6406941_0.conda + sha256: ab3ccb9fd5816f76b18ee8974d359cd2605ca87d8ddef55369dc461b9986f95c + md5: 3ac89a48d224409739dbf6200e524373 depends: - - __glibc >=2.28,<3.0.a0 - libgcc >=14 - - libharfbuzz >=14.2.1 + - __glibc >=2.28,<3.0.a0 + - fribidi >=1.0.16,<2.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - fribidi >=1.0.16,<2.0a0 + - libharfbuzz >=14.2.1 license: MIT license_family: MIT purls: [] run_exports: weak: - - libraqm >=0.10.5,<0.11.0a0 - size: 29441 - timestamp: 1782807076031 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.1-h074291d_0.conda - sha256: 2d2eb9147efeec20bcc89313fa55d052829b7d23def0e8eed039d374ecaf785e - md5: bbb55eb739ed4188e24904cafa939567 + - libraqm >=0.11.0,<0.12.0a0 + size: 33983 + timestamp: 1784850267262 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.22.2-h074291d_0.conda + sha256: fa3ccb18cf22f8ac94ec4f6bfcc9fd5805bf7af11cf56bf19c27fb051b36dd6a + md5: a11f92bd6dd6721cce01564c7c9fdb25 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - - jasper >=4.2.9,<5.0a0 - - lcms2 >=2.18,<3.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - libzlib >=1.3.2,<2.0a0 + - lcms2 >=2.19.1,<3.0a0 + - jasper >=4.2.9,<5.0a0 + - libjpeg-turbo >=3.2.0,<4.0a0 license: LGPL-2.1-only purls: [] run_exports: weak: - - libraw >=0.22.1,<0.23.0a0 - size: 752027 - timestamp: 1775541726097 + - libraw >=0.22.2,<0.23.0a0 + size: 742828 + timestamp: 1784220858002 - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda sha256: 5571bd8239d71961d4e3ce972f865b3ea95a91ce0b53d5749fe2dd24254ddbda md5: 492c8d9b1c564c2e948b6cb4ba0f8261 @@ -8052,35 +8241,35 @@ packages: - librsvg >=2.62.3,<3.0a0 size: 3476570 timestamp: 1780450632624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.3.0-h8f1669f_19.conda - sha256: 8766de5423b0a510e2b1bdd1963d0554bdad2119f3e31d8fbd4189af434235ca - md5: 007796e5a595bbc7df4a5e1580d72e1a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.4.0-hf39dbba_1.conda + sha256: 8e58b5e35c2d75d4f6a01d5650c5d672b8a96608a59af3a261050ccefe33702b + md5: 07c5c310a267103ab4dac904a933a4a4 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=14.3.0 - - libstdcxx >=14.3.0 + - libgcc >=14.4.0 + - libstdcxx >=14.4.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: weak: - - libsanitizer 14.3.0 - size: 7947790 - timestamp: 1778268494844 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - sha256: 7a58892a52739ce4c0f7109de9e91b4353104748eb04fc6441d88e8af444ba99 - md5: 67eef12ce33f7ff99900c212d7076fc2 + - libsanitizer 14.4.0 + size: 7523825 + timestamp: 1785374558337 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-16.1.0-hf2715c6_1.conda + sha256: 85662ecadd3961bc96cbcc38dbc024a768cc35932c8440677ed028ea6322c36c + md5: abd77210925872ee084672cf5be1d491 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=15.2.0 - - libstdcxx >=15.2.0 + - libgcc >=16.1.0 + - libstdcxx >=16.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: weak: - - libsanitizer 15.2.0 - size: 7930689 - timestamp: 1778269054623 + - libsanitizer 16.1.0 + size: 7780843 + timestamp: 1785375481116 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsdformat14-14.8.0-py312h1f51ce1_2.conda sha256: 41a56a57a0bb78429a5ad571226dbe4cffed586446d11ad30cc4173f89c1cee8 md5: 6dc0e6dc04a710e77bfe2865dad3f3b8 @@ -8136,20 +8325,21 @@ packages: - libsodium >=1.0.22,<1.0.23.0a0 size: 269272 timestamp: 1779163468406 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda - sha256: 365376f4815e5e80def2b3462a2419708b7c292da0da85278386c2618621fff4 - md5: 4aed8e657e9ff156bdbe849b4df44389 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-hf4e2dac_0.conda + sha256: 72023efc207fe681e26b65fc9d668062cf0b4f0eacf3431e6eb099b95c1f2efd + md5: df088a279cd5e6fd2790b4c196434da1 depends: - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 962119 - timestamp: 1782519076616 + - libsqlite >=3.53.4,<4.0a0 + size: 964200 + timestamp: 1785016112246 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 md5: eecce068c7e4eddeb169591baac20ac4 @@ -8166,33 +8356,33 @@ packages: - libssh2 >=1.11.1,<2.0a0 size: 304790 timestamp: 1745608545575 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc - md5: 5794b3bdc38177caf969dabd3af08549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-16.1.0-h934c35e_1.conda + sha256: 79721dd08aeb0ab9e773f1f9ef41cf4e6c17477e3d72319147619045bce05a09 + md5: aed6cf89adc1e9b846e4367ac538e434 depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.2.0 he0feb66_19 + - libgcc 16.1.0 ha9f2e26_1 constrains: - - libstdcxx-ng ==15.2.0=*_19 + - libstdcxx-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 5852044 - timestamp: 1778269036376 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda - sha256: 0672b6b6e1791c92e8eccad58081a99d614fcf82bca5841f9dfa3c3e658f83b9 - md5: e5ce228e579726c07255dbf90dc62101 + size: 6631744 + timestamp: 1785375462643 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-16.1.0-hdf11a46_1.conda + sha256: 2876ca4463d1b394eb969ce4a84d1620aa63fb8202a6397837d1e45ec76c1208 + md5: c94f06123272d8e129d4acf3a25ffb35 depends: - - libstdcxx 15.2.0 h934c35e_19 + - libstdcxx 16.1.0 h934c35e_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - libstdcxx - size: 27776 - timestamp: 1778269074600 + size: 28253 + timestamp: 1785375500257 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.13-hd0affe5_0.conda sha256: c5008b602cb5c819f7b52d418b3ed17e1818cbbf6705b189e7ab36bb70cce3d8 md5: 8ee3cb7f64be0e8c4787f3a4dbe024e6 @@ -8205,9 +8395,9 @@ packages: run_exports: {} size: 492799 timestamp: 1773797095649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_0.conda - sha256: a3f0c33ef567eb2e3a22d7fea0717a294a5fea4964478aa06b467ce1c93bec38 - md5: 0ffe6217a3d09398155d32a2ddb41251 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtasn1-4.21.0-hb03c661_1.conda + sha256: 566a9d39a9a89ee0ef7cb8ab36de0ab9f01b74039347cab727179da32fb44168 + md5: e9268f0d59cc7559d0e910b402cd437a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -8216,8 +8406,8 @@ packages: run_exports: weak: - libtasn1 >=4.21.0,<5.0a0 - size: 116738 - timestamp: 1768297813301 + size: 119260 + timestamp: 1785905789773 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda sha256: 50c8cd416ac8425e415264de167b41ae8442de22a91098dfdd993ddbf9f13067 md5: 553281a034e9cf8693c9df49f6c78ea1 @@ -8235,27 +8425,27 @@ packages: - libtheora >=1.1.1,<1.2.0a0 size: 328924 timestamp: 1719667859099 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda - sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0 - md5: cd5a90476766d53e901500df9215e927 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-h9d88235_0.conda + sha256: b31346e1c01ab40a170e91147092ee8fd92b1dee3c66ee47ef025571c879b159 + md5: c1fcb4a88bc15a9f77ad8d27d7af1df9 depends: - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 + - lerc >=4.1.0,<5.0a0 - libdeflate >=1.25,<1.26.0a0 - libgcc >=14 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - liblzma >=5.8.3,<6.0a0 - libstdcxx >=14 - libwebp-base >=1.6.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] run_exports: weak: - - libtiff >=4.7.1,<4.8.0a0 - size: 435273 - timestamp: 1762022005702 + - libtiff >=4.7.2,<4.8.0a0 + size: 452337 + timestamp: 1783084902636 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtool-2.5.4-h5888daf_0.conda sha256: c8245c70ba5b075e0cd61f430afbda00b60931603ed4ea31ce89e7fe930e4e3d md5: 90697d80c181414aa3472199e136a04e @@ -8364,9 +8554,9 @@ packages: - libuuid >=2.42.2,<3.0a0 size: 40017 timestamp: 1781625522462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_0.conda - sha256: e28e4519223f78b3163599ca89c3f2d80bfb53e907e7fc74e806e60d1efa578b - md5: 4e33d49bf4fc853855a3b00643aa5484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.52.1-h280c20c_1.conda + sha256: 67761d0206f84140047a367eaf9befe03a7e157a29ee25aee0047b40801cc6b6 + md5: 01c4ed87826af55996768af6dbc936b4 depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 @@ -8376,11 +8566,11 @@ packages: run_exports: weak: - libuv >=1.52.1,<2.0a0 - size: 419935 - timestamp: 1779396012261 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.0-he1eb515_0.conda - sha256: 96b938e39493331d796e0b0b805038b9ee11b0c192b571bbc6c7adc3701724ef - md5: 14f10db75eec75c02e56c858016f787e + size: 420040 + timestamp: 1785914567661 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.24.1-he1eb515_0.conda + sha256: 16a76abbb4fd1de4516ac4a3d06cbf1f561bc8049ca72b04dcac395eee74d017 + md5: eb1b7f8bfdea40eef150c4a1d37df09e depends: - __glibc >=2.17,<3.0.a0 - libdrm >=2.4.127,<2.5.0a0 @@ -8399,9 +8589,9 @@ packages: purls: [] run_exports: weak: - - libva >=2.24.0,<3.0a0 - size: 223532 - timestamp: 1782992630083 + - libva >=2.24.1,<3.0a0 + size: 222717 + timestamp: 1783519315031 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h54a6638_2.conda sha256: ca494c99c7e5ecc1b4cd2f72b5584cef3d4ce631d23511184411abcbb90a21a5 md5: b4ecbefe517ed0157c37f8182768271c @@ -8453,28 +8643,28 @@ packages: - libvpx >=1.15.2,<1.16.0a0 size: 1070048 timestamp: 1762010217363 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - sha256: a68280d57dfd29e3d53400409a39d67c4b9515097eba733aa6fe00c880620e2b - md5: 31ad065eda3c2d88f8215b1289df9c89 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h5279c79_0.conda + sha256: 1e30138cff1e6ba5739ce3ec787b24ef22ac6e2008d8a2073df334e9e5f8690b + md5: 9d8c72f797f6f2d1c32897603d70824c depends: - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 - xorg-libxrandr >=1.5.5,<2.0a0 constrains: - - libvulkan-headers 1.4.341.0.* + - libvulkan-headers 1.4.357.0.* license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - libvulkan-loader >=1.4.341.0,<2.0a0 - size: 199795 - timestamp: 1770077125520 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b - md5: aea31d2e5b1091feca96fcfe945c3cf9 + - libvulkan-loader >=1.4.357.0,<2.0a0 + size: 203456 + timestamp: 1785311377294 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda + sha256: 8415001414f488c85b72b9d8cc2071dfb3981a47bc3c8eb56ef91a57d12eae7f + md5: 9332b53d0ea93c5d39e33be03a0c611a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -8486,8 +8676,8 @@ packages: run_exports: weak: - libwebp-base >=1.6.0,<2.0a0 - size: 429011 - timestamp: 1752159441324 + size: 428430 + timestamp: 1785954557217 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa md5: 92ed62436b625154323d40d5f2f11dd7 @@ -8505,18 +8695,19 @@ packages: - libxcb >=1.17.0,<2.0a0 size: 395888 timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.38-h280c20c_0.conda + sha256: f7e9292dd219a6435bbb1223da9586c3e70d66d169c5a92f08db3f2127df04e9 + md5: f7a7ff5a6ab331e037abd34f379a631d depends: - - libgcc-ng >=12 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libxcrypt >=4.4.36 - size: 100393 - timestamp: 1702724383534 + - libxcrypt >=4.4.38 + size: 101957 + timestamp: 1785887123445 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda sha256: 046f2ff4acebd8729fac03e99c8c307dfb48b6a32894ba8c11576e78f6e76e43 md5: dc8b067e22b414172bedd8e3f03f3c95 @@ -8625,21 +8816,39 @@ packages: - libzip >=1.11.2,<2.0a0 size: 109043 timestamp: 1730442108429 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 - md5: d87ff7921124eccd67248aa483c23fec +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + sha256: eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736 + md5: 0de0122d9570a8ab637c6b73db268389 depends: - __glibc >=2.17,<3.0.a0 constrains: - - zlib 1.3.2 *_2 + - zlib 1.3.2 *_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 63629 - timestamp: 1774072609062 + size: 63713 + timestamp: 1785362952714 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-22.1.8-h4922eb0_0.conda + sha256: a37aba21b85800af1e7c5b04ba76abab96b6e591eedf99dc6e4df83b0fefd7a5 + md5: 7bbfdc5a6eca997d3b0873a575c3e155 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - intel-openmp <0.0a0 + - openmp 22.1.8|22.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + strong: + - llvm-openmp >=22.1.8 + - _openmp_mutex >=4.5 + - _openmp_mutex * *_llvm + size: 6123597 + timestamp: 1781736521736 - conda: https://conda.anaconda.org/conda-forge/linux-64/lodepng-20220109-h924138e_0.tar.bz2 sha256: 31f9bf8dfa2a6f1eb1c47e48e57b7a2b0ef25d0df18741cc3e4abd0fe076bb1d md5: 6d6c59898d7a764ff90bb1147e234056 @@ -8732,18 +8941,18 @@ packages: - lzo >=2.10,<3.0a0 size: 191060 timestamp: 1753889274283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - sha256: d652c7bd4d3b6f82b0f6d063b0d8df6f54cc47531092d7ff008e780f3261bdda - md5: 33405d2a66b1411db9f7242c8b97c9e7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb03c661_3.conda + sha256: 4c65d2769847778a6d84db6984ac81bcec6f8958d349f1fe57ae040ccc56a801 + md5: b4a198dc40024de2a59c1343e4ae4144 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: GPL-3.0-or-later license_family: GPL purls: [] run_exports: {} - size: 513088 - timestamp: 1727801714848 + size: 510695 + timestamp: 1785879853297 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_1.conda sha256: 5f3aad1f3a685ed0b591faad335957dbdb1b73abfd6fc731a0d42718e0653b33 md5: 93a4752d42b12943a355b682ee43285b @@ -8761,42 +8970,41 @@ packages: run_exports: {} size: 26057 timestamp: 1772445297924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.0-py312h7900ff3_1.conda - sha256: 957dcd182249a30589db706b21992ea023180f8b78feb8410f36c1c6a80f2198 - md5: 9d60112f925c215d541a6a72c9f3418d +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.11.1-py312h6a12a82_2.conda + sha256: 72daeb18e9f82509cf6eec25975324c06681127fb94b9b20b53a620a76457e62 + md5: 26c8cd6cbd98ec961a2f8969e14a6e4d depends: - - matplotlib-base >=3.11.0,<3.11.1.0a0 + - matplotlib-base >=3.11.1,<3.11.2.0a0 - pyside6 >=6.7.2 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - tornado >=5 license: PSF-2.0 license_family: PSF - purls: - - pkg:pypi/matplotlib?source=compressed-mapping + purls: [] run_exports: {} - size: 14887 - timestamp: 1782829550796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.0-py312hc1765e9_1.conda - sha256: d983b4ea15841f1fde4ccba4370485e89e696a447fcf5e90a1f75c8487699c68 - md5: 1d06d24525cf2e373310c1131acf12f8 + size: 14938 + timestamp: 1785211151683 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.11.1-py312h4c94fcb_2.conda + sha256: 8596841a7adf2ff135a7d3a5266727d7a562046f998e8edf9c568a0b20de7ddd + md5: 97eb87f2704fc5212a05b5fb6202ace0 depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 - cycler >=0.10 - - fonttools >=4.22.0 + - fonttools >=4.28.2 - freetype - kiwisolver >=1.3.1 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libraqm >=0.10.5,<0.11.0a0 + - libraqm >=0.11.0,<0.12.0a0 - libstdcxx >=14 - - numpy >=1.23 + - numpy >=1.25 - numpy >=1.25,<3 - packaging >=20.0 - - pillow >=8 - - pyparsing >=2.3.1 + - pillow >=9 + - pyparsing >=3 - python >=3.12,<3.13.0a0 - python-dateutil >=2.7 - python_abi 3.12.* *_cp312 @@ -8805,67 +9013,25 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=compressed-mapping - run_exports: {} - size: 8877024 - timestamp: 1782829532714 -- conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.14.1-py310h2b5ca13_0.conda - noarch: python - sha256: 33604a07d4d10f440fcc1e38d7d33462b3726565c1ad704ccfa189c7934912c6 - md5: 532b0a5340d4431bea91efe4792ceb13 - depends: - - python - - tomli >=1.1.0 - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - openssl >=3.5.7,<4.0a0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT + - pkg:pypi/matplotlib?source=hash-mapping run_exports: {} - size: 9808111 - timestamp: 1781871513283 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mesalib-26.0.3-h8cca3c9_0.conda - sha256: 3e6385e04e5a8f62599a5eb72b9a8c65ac143f0621d57f24688f103276d686eb - md5: 823e4ae1d60e97845773f7358585fc56 + size: 8931979 + timestamp: 1785211134185 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-h8142553_0.conda + sha256: 72393d525761389d0225534d20f4cd917e255704f337f84939b74464d9bc6acb + md5: 0dae03fd088c1ca13a8f6c9e5508e36c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - - xorg-libxshmfence >=1.3.3,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - xorg-libxrandr >=1.5.5,<2.0a0 - - libexpat >=2.7.4,<3.0a0 - - spirv-tools >=2026,<2027.0a0 - - libllvm22 >=22.1.1,<22.2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libdrm >=2.4.125,<2.5.0a0 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - mesalib >=26.0.3,<26.1.0a0 - size: 2964576 - timestamp: 1773867966762 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 - md5: c7f302fd11eeb0987a6a5e1f3aed6a21 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 license: LGPL-2.1-only license_family: LGPL purls: [] run_exports: weak: - mpg123 >=1.32.9,<1.33.0a0 - size: 491140 - timestamp: 1730581373280 + size: 487458 + timestamp: 1786190190098 - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.2.1-py312h0a2e395_1.conda sha256: c9764c77dd7f9c581c1d8a24c3024edf777cacfb5a4180de5badc6638dc8590f md5: a142257c1b69e37cfefc66dc228a4d93 @@ -8878,7 +9044,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/msgpack?source=compressed-mapping + - pkg:pypi/msgpack?source=hash-mapping run_exports: {} size: 112800 timestamp: 1782460774570 @@ -9000,9 +9166,9 @@ packages: run_exports: {} size: 25915 timestamp: 1728332440211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 - md5: fc21868a1a5aacc937e7a18747acb8a5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_1.conda + sha256: 5d46557214ed184381dafe835b7c94a474a1c3b307a08a250b1ea4779b44ffb3 + md5: ee6c0cd80a60961a1f48aa3e0b91f986 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -9011,8 +9177,8 @@ packages: run_exports: weak: - ncurses >=6.6,<7.0a0 - size: 918956 - timestamp: 1777422145199 + size: 911196 + timestamp: 1786355078102 - conda: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.10.1-h4a9d5aa_0.conda sha256: 00b5a5e394d58cff5b08e0082699e773dd41995130bc14747740a16d9cacdd2c md5: 618bf3007df69a0ca9306ed8d6b48b48 @@ -9040,32 +9206,31 @@ packages: run_exports: {} size: 186323 timestamp: 1763688260928 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - sha256: fd2cbd8dfc006c72f45843672664a8e4b99b2f8137654eaae8c3d46dca776f63 - md5: 16c2a0e9c4a166e53632cfca4f68d020 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_2.conda + sha256: 8f8b554c74b032b3e63a8828fb0ecc7ae4f5c5a6bd0afcf75423d5ff79290cb0 + md5: fe93be7dd9209e6ae673962e3031ff51 constrains: - nlohmann_json-abi ==3.12.0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 136216 - timestamp: 1758194284857 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.38-h29cc59b_0.conda - sha256: e3664264bd936c357523b55c71ed5a30263c6ba278d726a75b1eb112e6fb0b64 - md5: e235d5566c9cc8970eb2798dd4ecf62f + size: 136372 + timestamp: 1785920438981 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nspr-4.40-h29cc59b_0.conda + sha256: 7cf473259ef9945ce19ecc898a2dd146cd32dc86099d87b86f79c5e5b0ef55f0 + md5: 4ebda462e16da6e6164cb82b9d58fcea depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 license: MPL-2.0 - license_family: MOZILLA purls: [] run_exports: weak: - - nspr >=4.38,<5.0a0 - size: 228588 - timestamp: 1762348634537 + - nspr >=4.40,<5.0a0 + size: 231356 + timestamp: 1786154777346 - conda: https://conda.anaconda.org/conda-forge/linux-64/nss-3.118-h445c969_0.conda sha256: 44dd98ffeac859d84a6dcba79a2096193a42fc10b29b28a5115687a680dd6aea md5: 567fbeed956c200c1db5782a424e58ee @@ -9136,14 +9301,14 @@ packages: - octomap >=1.10.0,<1.11.0a0 size: 234800 timestamp: 1728635293810 -- conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.26.0-py312hb39aaa6_0_cpu.conda - sha256: 14dd09f6435081c1318a8325cf979c97c6d78a47009bf09c851c85f46d6d2066 - md5: b783981b58b1572e1ee1afad7488a0c0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/onnxruntime-1.28.0-py312hb39aaa6_0_cpu.conda + sha256: 1e715057b3433a10edb2fd6092716efecbb13d0e26ac870d4eb08a7c333b0bf5 + md5: 9aa440d373614273ab7b738a1581445b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - - numpy >=1.23,<3 + - numpy >=1.25,<3 - packaging - protobuf - python >=3.12,<3.13.0a0 @@ -9153,8 +9318,8 @@ packages: purls: - pkg:pypi/onnxruntime?source=hash-mapping run_exports: {} - size: 15640884 - timestamp: 1778967008489 + size: 16461364 + timestamp: 1786188389460 - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2025.06.13-hecca717_0.conda sha256: 8de2f0cd8a659b01abf86e7fbb8cea4f28ada62fd288429a2bbc040db1b98dd0 md5: c930c8052d780caa41216af7de472226 @@ -9182,25 +9347,24 @@ packages: run_exports: {} size: 28422 timestamp: 1766495425558 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.13-hf734b31_1.conda - sha256: 17e3d2769dfc018748f0c09757b95744a5e942f74325b605d06303a69ee7955d - md5: 9db8aff65eaea058afc9fe93569b4b14 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.4.14-h6de6307_0.conda + sha256: 922e812863259635fb72d9207c71deea03deee0fb5ff75d6e182e6c30dff62f3 + md5: 36fca46d75b907a57be501f15639c6cf depends: - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.2,<2.0a0 - imath >=3.2.2,<3.2.3.0a0 - - openjph >=0.30.1,<0.31.0a0 - libdeflate >=1.25,<1.26.0a0 - - libzlib >=1.3.2,<2.0a0 + - openjph >=0.31.0,<0.32.0a0 license: BSD-3-Clause - license_family: BSD purls: [] run_exports: weak: - - openexr >=3.4.13,<3.5.0a0 - size: 1223929 - timestamp: 1782198396418 + - openexr >=3.4.14,<3.5.0a0 + size: 1227012 + timestamp: 1786369264277 - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-h65dd3cf_1.conda sha256: 5317c5c23762f3fe1c8510565a2bb94c645e1470ff73b386315656404f7eb58a md5: 69894a95220a17a66272daa701c387bc @@ -9234,22 +9398,22 @@ packages: - openjpeg >=2.5.4,<3.0a0 size: 355400 timestamp: 1758489294972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.30.1-h8d634f6_0.conda - sha256: e405a62cc16604c4274d1d64387fa62ba5466cc65fa087ae45451d0150f4b698 - md5: 6143d4af035262f7e1b954e1cba9156d +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjph-0.31.0-h8d634f6_0.conda + sha256: 3c7a4118c678c43952ea10183388f175a4bcee16a1c61d90dab2fbdafddc45d7 + md5: 49ca947333c62d5985a88cbdd8f59468 depends: - - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - libgcc >=14 - - libtiff >=4.7.1,<4.8.0a0 + - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - libtiff >=4.7.2,<4.8.0a0 license: BSD-2-Clause license_family: BSD purls: [] run_exports: weak: - - openjph >=0.30.1,<0.31.0a0 - size: 294315 - timestamp: 1782091151122 + - openjph >=0.31.0,<0.32.0a0 + size: 295193 + timestamp: 1785149856790 - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda sha256: 21c4f6c7f41dc9bec2ea2f9c80440d9a4d45a6f2ac13243e658f10dcf1044146 md5: 680608784722880fbfe1745067570b00 @@ -9268,9 +9432,9 @@ packages: - openldap >=2.6.13,<2.7.0a0 size: 786149 timestamp: 1775741359582 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - sha256: d48f5c22b9897c01e4dff3680f1f57ceb02711ab9c62f74339b080419dfad34b - md5: 79dd2074b5cd5c5c6b2930514a11e22d +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_1.conda + sha256: 012096056b97abf1f68c46b7146bd2cbd68c1be762340b4f5dad4fbbe99177bc + md5: c5955c27917ff2234def47f075e71e02 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -9281,8 +9445,8 @@ packages: run_exports: weak: - openssl >=3.6.3,<4.0a0 - size: 3159683 - timestamp: 1781069855778 + size: 3182423 + timestamp: 1785913583650 - conda: https://conda.anaconda.org/conda-forge/linux-64/orocos-kdl-1.5.3-hca8cc02_1.conda sha256: 9d524a5589594054a3f38c350c2b2874d12b2b84096335daca75149d2cb9b49a md5: a720fc27e7526d04473f4fb486a287ee @@ -9300,9 +9464,9 @@ packages: - orocos-kdl >=1.5.3,<1.6.0a0 size: 387285 timestamp: 1778003898254 -- conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.2-h3435931_0.conda - sha256: f63962d24d81d4fafa15112c03cd5db1fddadd520fdb2ad7ec71a1689e8e694f - md5: 312989f1b7318c3763fffdc78df8474e +- conda: https://conda.anaconda.org/conda-forge/linux-64/p11-kit-0.26.4-h3435931_0.conda + sha256: ce1c79a0ae1301aa1f94f3afe1075e4cbb86656767011fde8995b9b1efc46516 + md5: 9980feddc5ad41bac53f7396376e6a2f depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.5.2,<3.6.0a0 @@ -9313,33 +9477,33 @@ packages: purls: [] run_exports: weak: - - p11-kit >=0.26.2,<0.27.0a0 - size: 3831848 - timestamp: 1770417713801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda - sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0 - md5: d53ffc0edc8eabf4253508008493c5bc + - p11-kit >=0.26.4,<0.27.0a0 + size: 3891983 + timestamp: 1783694238606 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.2-hda50119_0.conda + sha256: 48f27a6c3e4062bc09dafe9c7f6b288c5de5655e81095ab7f1aad920b2163b7b + md5: 6a2822aaf9a34ac3708904a47ff3dd7e depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.17.1,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=13.2.1 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.86.4,<3.0a0 - - libpng >=1.6.55,<1.7.0a0 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz >=14.3.0 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - pango >=1.56.4,<2.0a0 - size: 458036 - timestamp: 1774281947855 + - pango >=1.58.2,<2.0a0 + size: 469916 + timestamp: 1786107384537 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.15.1-h717c489_7.conda sha256: 1ef27d930b1678269f39056be08604c73c279d1b64c7ac5ed8e85a81a8583d28 md5: 237d5b3844b375d58b838ed1a86a3f34 @@ -9439,11 +9603,10 @@ packages: run_exports: {} size: 1028547 timestamp: 1758208668856 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a - md5: c01af13bdc553d1a8fbfff6e8db075f0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_3.conda + sha256: 829d8288764282de5a9f7b9169acb75cc7dc0b6c3fe2535cfe87dea3436bbc5d + md5: 0ee5bb30034b081a1386c1e2c98ab0a7 depends: - - libgcc >=14 - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 @@ -9453,20 +9616,19 @@ packages: run_exports: weak: - pixman >=0.46.4,<1.0a0 - size: 450960 - timestamp: 1754665235234 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h4bc722e_1009.conda - sha256: c9601efb1af5391317e04eca77c6fe4d716bf1ca1ad8da2a05d15cb7c28d7d4e - md5: 1bee70681f504ea424fb07cdb090c001 + size: 376704 + timestamp: 1786106621354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pkg-config-0.29.2-h7c397b8_1011.conda + sha256: ff8d0023722ef5600850074a9bbf418be4d2ec78edbf4d5db45d9f0331f248e4 + md5: 435898aaa55d40aa4c016214d9e9ed98 depends: + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 license: GPL-2.0-or-later - license_family: GPL purls: [] run_exports: {} - size: 115175 - timestamp: 1720805894943 + size: 141002 + timestamp: 1786352333107 - conda: https://conda.anaconda.org/conda-forge/linux-64/popt-1.19-h3b78370_0.conda sha256: 6fdd61c3aa1780a902f0ded56237b6af131bc4d261a880e822252e20f50b9bdb md5: 8cc2a5b668fd13c4abf4a94a013ebdb6 @@ -9572,18 +9734,18 @@ packages: run_exports: {} size: 225545 timestamp: 1769678155334 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb03c661_1003.conda + sha256: afc3b27b2cbb0487c1d0e963f96e71181ecfb623a24fb393bb19ff974a6382a1 + md5: df2c27f36bdb0dde779f55b5df76a352 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: MIT license_family: MIT purls: [] run_exports: {} - size: 8252 - timestamp: 1726802366959 + size: 9115 + timestamp: 1786067714761 - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 md5: b11a4c6bf6f6f44e5e143f759ffa2087 @@ -9741,12 +9903,12 @@ packages: run_exports: {} size: 2400390 timestamp: 1776765918970 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_2.conda - sha256: 2b35f29ea0e01c711749b29b0a09144df2e4cd7bdf8b29d264ef749951a75a0e - md5: aad7f28cd7236932f9c9c27c9b28280c +- conda: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.6.2-py312hf34ed73_3.conda + sha256: 4222d563991ff6b1fa34cded6e3ed4f6c11835e02561d42c48da56fcad47a308 + md5: 6f66ed67355fc922de43ea352e90aed2 depends: - __glibc >=2.17,<3.0.a0 - - cffi >=1.4.1 + - cffi >=2.0.0 - libgcc >=14 - libsodium >=1.0.22,<1.0.23.0a0 - python >=3.12,<3.13.0a0 @@ -9757,8 +9919,8 @@ packages: purls: - pkg:pypi/pynacl?source=hash-mapping run_exports: {} - size: 1180950 - timestamp: 1778984876791 + size: 1155056 + timestamp: 1783594383116 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.11-py312h82c0db2_2.conda sha256: cdad112328763c7b4f23ce823dc0b5821de310f109324b9ba89bddf13af599f0 md5: 84d5670ea1c8e72198bce0710f015e0c @@ -9873,52 +10035,20 @@ packages: - python size: 32286118 timestamp: 1703320043028 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda - sha256: a44655c1c3e1d43ed8704890a91e12afd68130414ea2c0872e154e5633a13d7e - md5: 7eccb41177e15cc672e1babe9056018e - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.4,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libuuid >=2.41.3,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - run_exports: - weak: - - python_abi 3.12.* *_cp312 - noarch: - - python - size: 31608571 - timestamp: 1772730708989 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.12.0-py312h5253ce2_0.conda - sha256: 77a0592d53fe3664421926c32677f2829278de19d99c90ada80cd75286f34198 - md5: 8ead1974106b7526f4866326654b99ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-librt-0.15.0-py312h5253ce2_0.conda + sha256: 30b780a244bdf0f2c4377fbd72d69894610f0ff59930f6a864cccb59e03a5d38 + md5: e55bf557c514b966494b8c4a033b25c2 depends: - python - libgcc >=14 - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT purls: - - pkg:pypi/librt?source=hash-mapping + - pkg:pypi/librt?source=compressed-mapping run_exports: {} - size: 160728 - timestamp: 1782847498143 + size: 164831 + timestamp: 1786328838441 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-orocos-kdl-1.5.3-py312h1289d80_2.conda sha256: 481d724d6f7bbfa931f6f33a7940d3637b7289139526a5952d2289c114c5f5b6 md5: 30d805f6312812a6abef0933e56deefa @@ -10109,20 +10239,19 @@ packages: - qt6-main >=6.10.2,<6.11.0a0 size: 58118322 timestamp: 1773865930316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-h3f2d84a_2.conda - sha256: f87f265263a1ddbc50b98e2c2bcaa2bac63da3acc09267815dd0f4bd614cd902 - md5: 65e2f30d532b4ae2063a424c185cc678 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20250205-h54a6638_0.conda + sha256: 6f56a91c14ca82f7df65adeedbcd45d6496baa34535c231e18c5cc45ba284821 + md5: faad3215cbf35faa42a37a77d44374c9 depends: - - libgcc >=13 - - libstdcxx >=13 - - libgcc >=13 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT purls: [] run_exports: {} - size: 156074 - timestamp: 1742820732296 + size: 156127 + timestamp: 1784885303075 - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.8.1-h1fbca29_0.conda sha256: cf550bbc8e5ebedb6dba9ccaead3e07bd1cb86b183644a4c853e06e4b3ad5ac7 md5: d83958768626b3c8471ce032e28afcd3 @@ -10139,9 +10268,9 @@ packages: - rav1e >=0.8.1,<0.9.0a0 size: 5595970 timestamp: 1772540833621 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.6.28-py312h4c3975b_0.conda - sha256: 75d6b6a85799e9e27ee133aa76538ab989f74f89b483da1fe7f1100dfb843e64 - md5: 6a5e4e0d9e5e03621aa2fdf44244db66 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2026.7.19-py312h4c3975b_0.conda + sha256: e1443a29da95edd9b14b3f6a98cc9a43782bffb3d14d47244057b9c0f6cedf81 + md5: eb5238cc301ea4be6f0713283990dd0a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -10152,8 +10281,8 @@ packages: purls: - pkg:pypi/regex?source=hash-mapping run_exports: {} - size: 413783 - timestamp: 1782695404925 + size: 414574 + timestamp: 1784433185142 - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.6-hb9d3cd8_1.conda sha256: d5c73079c1dd2c2a313c3bfd81c73dbd066b7eb08d213778c8bff520091ae894 md5: c1c9b02933fdb2cfb791d936c20e887e @@ -10187,20 +10316,20 @@ packages: run_exports: {} size: 376631 timestamp: 1780999334789 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.5-h95e6935_0.conda - sha256: e39acd0057c89c0cb00cbb8d17b54a5537262d79cdd812c03267ce3f8c0528d3 - md5: 7272b40e30d96d6ca49b25b8d4f56368 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruby-4.0.6-h95e6935_0.conda + sha256: f020ac80d3f17a6e0ef14943dac673aaf71ded39aa10184f3536966fcab9e0e4 + md5: 5a505703517eb48ac34702883b97d3e7 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - readline >=8.3,<9.0a0 - - libzlib >=1.3.2,<2.0a0 - - libxcrypt >=4.4.36 - - openssl >=3.5.6,<4.0a0 - ncurses >=6.6,<7.0a0 + - gmp >=6.3.0,<7.0a0 - libffi >=3.5.2,<3.6.0a0 + - openssl >=3.5.7,<4.0a0 + - readline >=8.3,<9.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.2,<2.0a0 - yaml >=0.2.5,<0.3.0a0 - - gmp >=6.3.0,<7.0a0 constrains: - __glibc >=2.17 license: BSD-2-Clause @@ -10208,9 +10337,9 @@ packages: purls: [] run_exports: weak: - - ruby >=4.0.5,<4.1.0a0 - size: 17204486 - timestamp: 1779257270967 + - ruby >=4.0.6,<4.1.0a0 + size: 17234991 + timestamp: 1784018144374 - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h40fa522_1.conda noarch: python sha256: 0c6c9825ff88195fd13936d63872213d6c88c1fe795d136881c0753c3037c5ff @@ -10228,55 +10357,24 @@ packages: run_exports: {} size: 9131490 timestamp: 1769520999080 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.91.1-h53717f1_0.conda - sha256: fb5d544cac6a15ddbc7c47fddc812407713fd220f64716928f0ccf13c8655de4 - md5: 5a2d92eacdea9d7ffb895c3fd9c761e6 - depends: - - __glibc >=2.17,<3.0.a0 - - gcc_impl_linux-64 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - rust-std-x86_64-unknown-linux-gnu 1.91.1 h2c6d0dc_0 - - sysroot_linux-64 >=2.17 - license: MIT - license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 232940165 - timestamp: 1762816703243 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - sha256: d084a53a1ce2cea8d6f9cf45108e516a629118dd3f8fb3113d87d1dcd3eea669 - md5: 5b80270d422d9fddf028cb4ce68370b2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.97.1-h53717f1_0.conda + sha256: 66f7e7d46602a4fdc20769ef33cb30229983b3cfe8fb447bb2d2081e895383ef + md5: f0d36652f4d8bbe4a51de53414f15db2 depends: - __glibc >=2.17,<3.0.a0 - gcc_impl_linux-64 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 - - rust-std-x86_64-unknown-linux-gnu 1.96.0 h2c6d0dc_0 + - rust-std-x86_64-unknown-linux-gnu 1.97.1 h2c6d0dc_0 - sysroot_linux-64 >=2.17 license: MIT license_family: MIT + purls: [] run_exports: strong_constrains: - __glibc >=2.17 - size: 171986391 - timestamp: 1780046427552 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.96.0-hd58cd63_0.conda - sha256: 5658a122375e3733c53cb9fbd107626f623b5931b0905fc5f72d36ee83fe37f8 - md5: 4172c3ed0c0c8aa610b7d279dc699046 - depends: - - gcc_linux-64 - - rust 1.96.0.* - - rust-std-x86_64-unknown-linux-gnu 1.96.0.* - - sysroot_linux-64 >=2.17 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 11780 - timestamp: 1780932798351 + size: 173497457 + timestamp: 1784279883262 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py312h54fa4ab_1.conda sha256: d5ac05ad45c0d48731eb189c2cbb2bb99f0e3cb7e1acaad373cb2f1f2597fc75 md5: 15995ecb2ef890778ba9a3750190f09d @@ -10353,39 +10451,39 @@ packages: - sdl2 >=2.32.56,<3.0a0 size: 589145 timestamp: 1757842881000 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.12-hdeec2a5_0.conda - sha256: 2607340a7adbf7b7ec902892bce00c9fd35ccdb7f1e8d4ef1efd51641ad36a3c - md5: 1c36b749acf532314ad381f6c1663647 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.4.14-hdeec2a5_0.conda + sha256: b7f4a338074d0daa5086d6d7f319dd79b277c47a761abd8ebac72c0253f4c6ad + md5: 1ef39a7b42a06e262723fa7937210639 depends: - - libstdcxx >=14 - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libvulkan-loader >=1.4.357.0,<2.0a0 - liburing >=2.14,<2.15.0a0 - - xorg-libxfixes >=6.0.2,<7.0a0 + - libudev1 >=257.13 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxtst >=1.2.5,<2.0a0 + - dbus >=1.16.2,<2.0a0 + - libunwind >=1.8.3,<1.9.0a0 - libusb >=1.0.29,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 + - libegl >=1.7.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 - libgl >=1.7.0,<2.0a0 - - dbus >=1.16.2,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 - libdrm >=2.4.127,<2.5.0a0 - - pulseaudio-client >=17.0,<17.1.0a0 - xorg-libxi >=1.8.3,<2.0a0 - - wayland >=1.25.0,<2.0a0 - - libegl >=1.7.0,<2.0a0 - - libxkbcommon >=1.13.2,<2.0a0 - - libudev1 >=257.13 - - libunwind >=1.8.3,<1.9.0a0 + - wayland >=1.26.0,<2.0a0 - xorg-libxscrnsaver >=1.2.4,<2.0a0 - - libvulkan-loader >=1.4.341.0,<2.0a0 - - xorg-libxcursor >=1.2.3,<2.0a0 - - xorg-libxtst >=1.2.5,<2.0a0 + - libxkbcommon >=1.13.2,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 license: Zlib purls: [] run_exports: weak: - - sdl3 >=3.4.12,<4.0a0 - size: 2156114 - timestamp: 1782948044627 + - sdl3 >=3.4.14,<4.0a0 + size: 2158268 + timestamp: 1785816103164 - conda: https://conda.anaconda.org/conda-forge/linux-64/shaderc-2025.5-h718be3e_1.conda sha256: 0c2d6f24ee2b614ee1da4d7d99cc9944ea1ace65455a47d48d8c1f726317168a md5: 8dc8dda113c4c568256bdd486b6e842e @@ -10454,9 +10552,9 @@ packages: - soxr >=0.1.3,<0.1.4.0a0 size: 131370 timestamp: 1674059502792 -- conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hab81395_1.conda - sha256: c650f3df027afde77a5fbf58600ec4ed81a9edddf81f323cfb3e260f6dc19f56 - md5: a3b0e874fa56f72bc54e5c595712a333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.17.0-hb6aa676_2.conda + sha256: 5fca627690d56c6f87a9dabafceee54cb75d7da392309bb080333948c048365a + md5: 5e32ceeb7b9514ce4730565052829dbd depends: - __glibc >=2.17,<3.0.a0 - fmt >=12.1.0,<12.2.0a0 @@ -10468,32 +10566,33 @@ packages: run_exports: weak: - spdlog >=1.17.0,<1.18.0a0 - size: 196681 - timestamp: 1767781665629 -- conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_0.conda - sha256: 309d1a3317e91a03611bc960fc807cf2c0c5baacbfddea0f5636438a76c52256 - md5: 0c2b1d811632f1f4aa923450a002ff4f + size: 197438 + timestamp: 1785924346496 +- conda: https://conda.anaconda.org/conda-forge/linux-64/spirv-tools-2026.2-hb700be7_3.conda + sha256: 94e64d435ca9649b74188c0072033193fda5a2b1f7603ee9d136130e5cd15e9c + md5: c402e3603c22e3fa9f3101a703a041d0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 constrains: - - spirv-headers >=1.4.350.0,<1.4.350.1.0a0 + - spirv-headers >=1.4.357.0,<1.4.357.1.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - spirv-tools >=2026,<2027.0a0 - size: 2392190 - timestamp: 1780139567779 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.3-hbc0de68_0.conda - sha256: ef17725138fa72aa5a0f8ccace9727831c4b333e39575f78fb5ad1755826b687 - md5: b345ea7f13e4cae9809c69b1d1af2c99 + size: 2405017 + timestamp: 1785688937831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.53.4-h04a0ce9_0.conda + sha256: 1f6c9638d64c51a35769219cc895e49af5cd0615aef896604c5472bc79b980f7 + md5: b6db30b9cfd0cb089910ccb47a2516f9 depends: - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 - libgcc >=14 - - libsqlite 3.53.3 h0c1763c_0 + - libsqlite 3.53.4 hf4e2dac_0 - libzlib >=1.3.2,<2.0a0 - ncurses >=6.6,<7.0a0 - readline >=8.3,<9.0a0 @@ -10501,9 +10600,9 @@ packages: purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 206481 - timestamp: 1782519082269 + - libsqlite >=3.53.4,<4.0a0 + size: 206694 + timestamp: 1785016118388 - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-4.0.1-hecca717_0.conda sha256: 4a1d2005153b9454fc21c9bad1b539df189905be49e851ec62a6212c2e045381 md5: 2a2170a3e5c9a354d09e4be718c43235 @@ -10562,26 +10661,26 @@ packages: - tinyxml2 >=11.0.0,<11.1.0a0 size: 131351 timestamp: 1742246125630 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac - md5: cffd3bdd58090148f4cfcd831f4b26ab +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd70dff1_3.conda + build_number: 103 + sha256: 43624eab22f5f29df7d6ffe914cf442f28fd559b55b290906255492826e636e8 + md5: 48a1049e710857572fc2a832aa394d9f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 license: TCL - license_family: BSD purls: [] run_exports: weak: - tk >=8.6.13,<8.7.0a0 - size: 3301196 - timestamp: 1769460227866 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.7-py312h4c3975b_0.conda - sha256: f54504d6eeef133ddc2b964b6a021f3faf085bb08bd70debc07f56d6b9b726f1 - md5: 55f526c3fb5302a1ce922612348442e1 + size: 3550916 + timestamp: 1784229071544 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.8-py312h4c3975b_0.conda + sha256: 2ea8f8b10e869b675d2fba157b387eaf4eed1696bfc924bb7b28e67d7aa0a947 + md5: 5423c2b8f82d60320e65b9ff30babbdf depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -10592,8 +10691,8 @@ packages: purls: - pkg:pypi/tornado?source=compressed-mapping run_exports: {} - size: 864705 - timestamp: 1781006801632 + size: 869730 + timestamp: 1786226754702 - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py312hd9148b4_0.conda sha256: c975070ac28fe23a5bbb2b8aeca5976b06630eb2de2dc149782f74018bf07ae8 md5: 55fd03988b1b1bc6faabbfb5b481ecd7 @@ -10694,31 +10793,17 @@ packages: run_exports: {} size: 14226 timestamp: 1767012219987 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.11.26-h26efc2c_0.conda - sha256: fc2567e4507d436c247e0d175991c5929011a3141f4a0fabff515ce6328bb3a0 - md5: f34a1bce60a945c8dac9784ebb495d62 +- conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_1.conda + sha256: 8b46803c96a9d3ee5757372e03e80aed20563b3bd13ddb6bb121dbfd356057e0 + md5: 2a0d0433bed3e7f5caa3e0705cf17f3b depends: - - libgcc >=14 - - libstdcxx >=14 + - _openmp_mutex >=4.5 - __glibc >=2.17,<3.0.a0 - constrains: - - __glibc >=2.17 - license: Apache-2.0 OR MIT - run_exports: {} - size: 20530051 - timestamp: 1782834625037 -- conda: https://conda.anaconda.org/conda-forge/linux-64/viskores-1.1.1-cpu_hc82bd48_0.conda - sha256: 2ebe8d6ae8c302ca5bf4aec532cd75ebfb00240db1c14dad9a91bace65aa083d - md5: 24676eb7fd23ea3d8d69417f5f1224e0 - depends: - - libstdcxx >=14 - libgcc >=14 - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 + - libstdcxx >=14 + - zfp >=1.0.1,<2.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - mesalib >=26.0.3,<26.1.0a0 - glew >=2.3.0,<2.4.0a0 - - zfp >=1.0.1,<2.0a0 track_features: - viskores-p-0 license: BSD-3-Clause @@ -10727,8 +10812,8 @@ packages: run_exports: weak: - viskores >=1.1.1,<1.2.0a0 - size: 25058279 - timestamp: 1777494673829 + size: 25122380 + timestamp: 1784250954707 - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.5.2-py312h244374b_7.conda sha256: 30f056623ebb1c460e03e9ba597d4e7cb0edf177f08ad6f11bda4e7e7aa72fc4 md5: 39f83887a40f72e2ddba78e661519900 @@ -10825,12 +10910,12 @@ packages: - vtk-io-ffmpeg >=9.5.2,<9.5.3.0a0 size: 108379 timestamp: 1768718074243 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.25.0-hd6090a7_0.conda - sha256: ea374d57a8fcda281a0a89af0ee49a2c2e99cc4ac97cf2e2db7064e74e764bdb - md5: 996583ea9c796e5b915f7d7580b51ea6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.26.0-hd6090a7_0.conda + sha256: 6b9e182021ef3a64ab3bf788ebdab6de6775035612237c639ccafc941639eb13 + md5: b34c5559f45d8996e3bc0b6250a6cc84 depends: - __glibc >=2.17,<3.0.a0 - - libexpat >=2.7.4,<3.0a0 + - libexpat >=2.8.1,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 - libstdcxx >=14 @@ -10839,12 +10924,12 @@ packages: purls: [] run_exports: weak: - - wayland >=1.25.0,<2.0a0 - size: 334139 - timestamp: 1773959575393 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.2.2-py312h4c3975b_0.conda - sha256: 64ae5393d36cc553bcf05d3afbb42aef28b3d1fa986ed5c9358cd32d785940b7 - md5: 8555a1457e54a2b96093140db1b4b28b + - wayland >=1.26.0,<2.0a0 + size: 340543 + timestamp: 1784249169392 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-2.3.0-py312h4c3975b_0.conda + sha256: 3ddbf9236f795e85dcce1de5d23e2b536d7d61a68b4032d966972dc0cc25e6f9 + md5: 2363ebfeefdd644eb27dabba5491ba9f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -10853,10 +10938,10 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/wrapt?source=compressed-mapping + - pkg:pypi/wrapt?source=hash-mapping run_exports: {} - size: 115842 - timestamp: 1782133640094 + size: 115490 + timestamp: 1785422096932 - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 md5: 6c99772d483f566d59e25037fea2c4b1 @@ -11032,9 +11117,9 @@ packages: - xorg-libx11 >=1.8.13,<2.0a0 size: 839652 timestamp: 1770819209719 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b - md5: b2895afaf55bf96a8c8282a2e47a5de0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_2.conda + sha256: cbf891f6cc1a859347680af1c8562bc6b033bf182a2a3bb536016932be3206de + md5: f06ef439c280a5f90b8bf62355008dbc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -11044,8 +11129,8 @@ packages: run_exports: weak: - xorg-libxau >=1.0.12,<2.0a0 - size: 15321 - timestamp: 1762976464266 + size: 16419 + timestamp: 1786381001122 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxaw-1.0.16-hb9d3cd8_0.conda sha256: 105ff923b60286188978d7b3aa159b555e2baf4c736801f62602d4127159f06d md5: 7c0a9bf62d573409d12ad14b362a96e5 @@ -11113,9 +11198,9 @@ packages: - xorg-libxdamage >=1.1.6,<2.0a0 size: 13217 timestamp: 1727891438799 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142 - md5: 1dafce8548e38671bea82e3f5c6ce22f +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_2.conda + sha256: c50a16c05ccd7fe7dd6d6cfb539f4e9a491d50f9ed7a5c902fec638f7d0d27be + md5: 2e66c929f3d879708335b6ea4557c838 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -11125,8 +11210,8 @@ packages: run_exports: weak: - xorg-libxdmcp >=1.1.5,<2.0a0 - size: 20591 - timestamp: 1762976546182 + size: 21120 + timestamp: 1786381006369 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f md5: 34e54f03dfea3e7a2dcf1453a85f1085 @@ -11340,9 +11425,9 @@ packages: - xorg-libxxf86vm >=1.1.7,<2.0a0 size: 18701 timestamp: 1769434732453 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda - sha256: 7a8c64938428c2bfd016359f9cb3c44f94acc256c6167dbdade9f2a1f5ca7a36 - md5: aa8d21be4b461ce612d8f5fb791decae +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-h280c20c_1.conda + sha256: 051c6088bf2381840fcf8764737b829cc6c5f793718d2417d097d6e3b153eba9 + md5: 3b51576511038b50fdbd05245e22e4b1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -11350,46 +11435,46 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 570010 - timestamp: 1766154256151 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb47aa4a_0.conda - sha256: 08e12f140b1af540a6de03dd49173c0e5ae4ebc563cabdd35ead0679835baf6f - md5: 607e13a8caac17f9a664bcab5302ce06 + size: 594844 + timestamp: 1786114408394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hec8ed23_1.conda + sha256: 540cf88e742b381244cbfdd2918cd5ed7523c1b0cc2945f3bb63620095c10e50 + md5: 72ab4ea51529ec63ff010ae9fb62b02f depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: BSD-2-Clause license_family: BSD purls: [] run_exports: weak: - xxhash >=0.8.3,<0.8.4.0a0 - size: 108219 - timestamp: 1746457673761 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda - sha256: 2553fd3ec0a1020b2ca05ca10b0036a596cb0d4bf3645922fcf69dacce0e6679 - md5: 6a1b6af49a334e4e06b9f103367762bf + size: 109364 + timestamp: 1785949296126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_1.conda + sha256: 547b2392d8f7b76efd4a0970946f6da2a1136ad5fe3dc936af81e02eb7181076 + md5: 36a079606b3aaf9d726211825f182452 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - liblzma 5.8.3 hb03c661_0 - - liblzma-devel 5.8.3 hb03c661_0 - - xz-gpl-tools 5.8.3 ha02ee65_0 - - xz-tools 5.8.3 hb03c661_0 + - liblzma 5.8.3 hb03c661_1 + - liblzma-devel 5.8.3 hb03c661_1 + - xz-gpl-tools 5.8.3 ha02ee65_1 + - xz-tools 5.8.3 hb03c661_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later purls: [] run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 24360 - timestamp: 1775825568523 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda - sha256: 8f139666ea18dc8340a44a54056627dd4e89e242e8cd136ab2467d6dc2c192ba - md5: 8f5e2c6726c1339287a3c76a2c138ac7 + size: 23610 + timestamp: 1786348658246 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_1.conda + sha256: ed6dbec5e4f0f71e7ac629b90dc4c9fba38d194cc88eab891c29e461b408977a + md5: 137db930adb0b3c5407485e0e1a50cfa depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - liblzma 5.8.3 hb03c661_0 + - liblzma 5.8.3 hb03c661_1 constrains: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later @@ -11397,22 +11482,22 @@ packages: run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 34213 - timestamp: 1775825548743 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda - sha256: 162ebd76803464b8c8ebc7d45df32edf0ec717b3bf369a437ae3b0254f22dc2e - md5: b62b615caa60812640f24db3a8d0fc87 + size: 40118 + timestamp: 1786348648882 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_1.conda + sha256: c74fa3eddd3ea648456517948f85068d8a07acad7752fd83c7e95b6cebb7114a + md5: 10d693a2db6e8339e4eebcb3a3dae88d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - liblzma 5.8.3 hb03c661_0 + - liblzma 5.8.3 hb03c661_1 constrains: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later purls: [] run_exports: {} - size: 95955 - timestamp: 1775825530484 + size: 96459 + timestamp: 1786348637686 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad md5: a77f85f77be52ff59391544bfe73390a @@ -11427,25 +11512,24 @@ packages: - yaml >=0.2.5,<0.3.0a0 size: 85189 timestamp: 1753484064210 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda - sha256: 4b0b713a4308864a59d5f0b66ac61b7960151c8022511cdc914c0c0458375eca - md5: 92b90f5f7a322e74468bb4909c7354b5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h54a6638_1.conda + sha256: 425808ebd2a20bfc460995293995e1fa0510e93c300535e2ec3622bd3d84288c + md5: 18bf4b05b458fb8135987e47364f3dcb depends: - - libstdcxx >=13 - - libgcc >=13 - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT purls: [] run_exports: weak: - yaml-cpp >=0.8.0,<0.9.0a0 - size: 223526 - timestamp: 1745307989800 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.2-py312h8a5da7c_0.conda - sha256: 9906e3e09ea7b734325cce2ebe7ac9a1d645d49e71823bffa54d9bf157c6b3ed - md5: 348307a7ed6137b1022f3809e2762f39 + size: 242654 + timestamp: 1785923983284 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py312h8a5da7c_0.conda + sha256: 8d486c008c32f744ce1791c8c35e5e703cc6d805626ee7288a9b7a1032521a3b + md5: ef4788bdfaa84f3ae3a9c1390eaf3e73 depends: - __glibc >=2.17,<3.0.a0 - idna >=2.0 @@ -11459,8 +11543,8 @@ packages: purls: - pkg:pypi/yarl?source=hash-mapping run_exports: {} - size: 155061 - timestamp: 1779246264888 + size: 171280 + timestamp: 1784526501141 - conda: https://conda.anaconda.org/conda-forge/linux-64/zenoh-rust-abi-1.7.2.1.85.0-h8619998_0.conda sha256: 4c85a07bb991621eb3380f0de679b73de796ebe2bc95f5b65f9f3141949fca13 md5: ca737b1dc0de56e88605c47022e555bf @@ -11508,20 +11592,20 @@ packages: - zfp >=1.0.1,<2.0a0 size: 277694 timestamp: 1766549572069 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_2.conda - sha256: 245c9ee8d688e23661b95e3c6dd7272ca936fabc03d423cdb3cdee1bbcf9f2f2 - md5: c2a01a08fc991620a74b32420e97868a +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.2-h25fd6f3_3.conda + sha256: 16080a1c7724f7d25727cdc23c7658e0cec2db52448c1dc0c33467ee2c6e1c62 + md5: 6acb86426229f96f93e5468d1df3a5e8 depends: - __glibc >=2.17,<3.0.a0 - - libzlib 1.3.2 h25fd6f3_2 + - libzlib 1.3.2 h25fd6f3_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 95931 - timestamp: 1774072620848 + size: 96132 + timestamp: 1785362957588 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda sha256: 68f0206ca6e98fea941e5717cec780ed2873ffabc0e1ed34428c061e2c6268c7 md5: 4a13eeac0b5c8e5b8ab496e6c4ddd829 @@ -11577,9 +11661,9 @@ packages: run_exports: {} size: 11238327 timestamp: 1610490614592 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.1-py312he7e3343_0.conda - sha256: 58b4395fb87a695d3ce78a4495bebd436892899e4ffa905ed1856f377a804835 - md5: 96be2f10e3eec5249c10d6cd4c8bf980 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.14.3-py312he7e3343_0.conda + sha256: 8bb03d933d88df8fd8e4861529f8fe7457838941007cf79c55e3249e36acda88 + md5: 1e6b7c9cbcec9d49ebd29e65e90e8eef depends: - aiohappyeyeballs >=2.5.0 - aiosignal >=1.4.0 @@ -11598,8 +11682,8 @@ packages: purls: - pkg:pypi/aiohttp?source=hash-mapping run_exports: {} - size: 1068919 - timestamp: 1780913451554 + size: 1082037 + timestamp: 1784900547336 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.16.1-he30d5cf_0.conda sha256: 105e4c19cfa770affcb9a64b9d2451f406914cd09a67664009910869fa01a639 md5: 5427b5dcb268bddf1a69c16d1cb77a47 @@ -11768,41 +11852,41 @@ packages: run_exports: {} size: 279762 timestamp: 1769117024546 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.45.1-default_hf1166c9_102.conda - sha256: 63a1bec2fc966476bf7a387a20e8987edd5640d37a40ffb2f6e2217ef82b816b - md5: 3a238b9dcf59d03a379712f270867d80 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.46.1-default_hf1166c9_102.conda + sha256: 548d128bc257badd2d9dbdff8173eb693fcbec84ceeb0fa74cbfed141ed42ad9 + md5: 7a2f1cdac4c9fd2e87533ff2d2dcb702 depends: - - binutils_impl_linux-aarch64 >=2.45.1,<2.45.2.0a0 + - binutils_impl_linux-aarch64 >=2.46.1,<2.46.2.0a0 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 35511 - timestamp: 1774197558632 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - sha256: 7fd4ddde2f0150d015dfa9f2db5f428bd1570078f270e4bd4f116487a52de169 - md5: 56a04d796d7e3cdc9f8d2e1278e91bff + size: 35377 + timestamp: 1784214574154 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.46.1-default_h5f4c503_102.conda + sha256: eebe159bf600943552e4319ff4ce27b6a2dadf0dcc5443e76dcee9259a408e11 + md5: 58f37d76b8234c69dbf2939d511bea0b depends: - - ld_impl_linux-aarch64 2.45.1 default_h1979696_102 + - ld_impl_linux-aarch64 2.46.1 default_h1979696_102 - sysroot_linux-aarch64 - zstd >=1.5.7,<1.6.0a0 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 4683754 - timestamp: 1774197535605 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda - sha256: ad076ff5f3d7734c48ea241a99c16336c278081a5f7a523329d0d5956723c481 - md5: 68d0661516aed9cab68d2ad6e287941f + size: 4677171 + timestamp: 1784214549910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.46.1-default_hf1166c9_102.conda + sha256: d41099a3fe2809a3ab3e4c718ecff4d5f8879e7949f3c8e8efa97fa06a90248c + md5: 9a340123cb7217eae51c5cae24484631 depends: - - binutils_impl_linux-aarch64 2.45.1 default_h5f4c503_102 + - binutils_impl_linux-aarch64 2.46.1 default_h5f4c503_102 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 36267 - timestamp: 1774197561368 + size: 36196 + timestamp: 1784214578949 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hb4dfabd_1.conda sha256: f1e408fc32e1fda8dee9c3fceee5650fd622526e4dc6fa1f1926f497b5508d13 md5: 2cbbd6264ad58887c40aab37f2abdaba @@ -11902,9 +11986,9 @@ packages: - bullet-cpp >=3.25,<3.26.0a0 size: 42319979 timestamp: 1761046342434 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - sha256: b3495077889dde6bb370938e7db82be545c73e8589696ad0843a32221520ad4c - md5: 840d8fc0d7b3209be93080bc20e07f2d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_10.conda + sha256: 24eacc8a20fd7c4616566178562bef7f9344eb4a8700cfc3180fa75a6ff9d39f + md5: fd544ef1c672d645bf78e5819cbb8f91 depends: - libgcc >=14 license: bzip2-1.0.6 @@ -11913,21 +11997,23 @@ packages: run_exports: weak: - bzip2 >=1.0.8,<2.0a0 - size: 192412 - timestamp: 1771350241232 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.6-he30d5cf_0.conda - sha256: 7ec8a68efe479e2e298558cbc2e79d29430d5c7508254268818c0ae19b206519 - md5: 1dfbec0d08f112103405756181304c16 + size: 194694 + timestamp: 1785906301397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.8-h80f16a2_1.conda + sha256: 537be62d1835ba3d211941537a13302f6c827d9b1316ca11384c0f47ca755cc8 + md5: 9aaa63e98eb2cf6d22d1d2f87ec9adba depends: - libgcc >=14 + constrains: + - c-ares-static <0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - c-ares >=1.34.6,<2.0a0 - size: 217215 - timestamp: 1765214743735 + - c-ares >=1.34.8,<2.0a0 + size: 236990 + timestamp: 1786116643290 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.11.0-hdceaead_0.conda sha256: a16c5078619d60e54f75336ed2bbb4ee0fb6f711de02dd364983748beda31e04 md5: 89bc32110bba0dc160bb69427e196dc4 @@ -11985,9 +12071,23 @@ packages: run_exports: {} size: 121651 timestamp: 1775229767017 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.0.0-py312h1b372e3_1.conda - sha256: 6028633bdb037c14bab99022a6ee40b6abd5a921b2c1023d7655f98eb5edf233 - md5: 1e7bf495417ed1c23ccd6ec1075b8403 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + run_exports: {} + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-2.1.1-py312h1b372e3_0.conda + sha256: 2175596981a193caa855c6cbafc6ac0b53bbd7a4ac44ebe2bb9cd2e89eac2ee9 + md5: e22b99c8f6ba0309a15814073a8cecbd depends: - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 @@ -11999,13 +12099,14 @@ packages: purls: - pkg:pypi/cffi?source=hash-mapping run_exports: {} - size: 315113 - timestamp: 1761203960926 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_he95a3c9_4.conda - sha256: 91f8d60dddf73c116c98765fc577b1da0b6c00ea02ded5e69858f0bd5571e96d - md5: c80a4bcad92f178e0799ac5a38c4bd93 + size: 324450 + timestamp: 1785812728869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21-21.1.8-default_hd3644b0_5.conda + sha256: 720b8ecd94f0388b77ba6930103dca1f8f5158a79d57e083f6d1a792e7d9178e + md5: 475712b9581979edcff2901735800b84 depends: - - libclang-cpp21.1 >=21.1.8,<21.2.0a0 + - compiler-rt21 21.1.8.* + - libclang-cpp21.1 21.1.8 default_hd3644b0_5 - libgcc >=14 - libllvm21 >=21.1.8,<21.2.0a0 - libstdcxx >=14 @@ -12013,13 +12114,28 @@ packages: license_family: Apache purls: [] run_exports: {} - size: 72089 - timestamp: 1777012007789 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_he95a3c9_4.conda - sha256: d84775f2503c627518f8aa82e464da98fd8f5a0d2439e36a68ec8ba3d83e1602 - md5: 292f258a54e5cce46f6059096f31e37c + size: 839052 + timestamp: 1786195131700 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-21.1.8-default_cfg_h710bdcc_5.conda + sha256: 6d32f2cf22abb10175e48dda43fb6dd9cecf05b496cdbeb672ab14e89197def1 + md5: 808e63f2e7c33ef8aa0aa9f98d4a22ab + depends: + - binutils + - clang-21 21.1.8 default_hd3644b0_5 + - clang_impl_linux-aarch64 21.1.8 default_h78643bd_5 + - libgcc-devel_linux-aarch64 + - llvm-openmp >=21.1.8 + - sysroot_linux-aarch64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 28396 + timestamp: 1786195154529 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21-21.1.8-default_hd3644b0_5.conda + sha256: f4c3818fea9bc51d74bc6c030cdfe7d8d10a57435fa41cfd1910ec55cefa045d + md5: 3607398a1970c5ce73c5cb0bb9f77a6e depends: - - clang-format-21 21.1.8 default_he95a3c9_4 - libclang-cpp21.1 >=21.1.8,<21.2.0a0 - libgcc >=14 - libllvm21 >=21.1.8,<21.2.0a0 @@ -12028,11 +12144,39 @@ packages: license_family: Apache purls: [] run_exports: {} - size: 28754 - timestamp: 1777012040719 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.6.2-h7ac5ae9_0.conda - sha256: a52d45824f7358e7d4abee36abcf9ae298523e8548e98899b5a317dd7cb2a685 - md5: 4728e6e898f6af8dc024db1f66a2a50f + size: 71988 + timestamp: 1786195144727 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang-format-21.1.8-default_hd38b72d_5.conda + sha256: 2d639168517ce4216b96361e460287748c62bd4d485a1473cacff6deddb09003 + md5: 87233ca3c9b9fae364d522b2c3436c0c + depends: + - clang-format-21 21.1.8 default_hd3644b0_5 + - libclang-cpp21.1 >=21.1.8,<21.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 27842 + timestamp: 1786195149833 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/clang_impl_linux-aarch64-21.1.8-default_h78643bd_5.conda + sha256: 9b6c8f14e0fe1ac68813515af1f67ad0a0456eab3e34a7151d510313110761c9 + md5: 7e44d8e43ce7bc15afa5069c7a01d651 + depends: + - binutils_impl_linux-aarch64 + - clang-21 21.1.8 default_hd3644b0_5 + - compiler-rt 21.1.8.* + - compiler-rt_linux-aarch64 21.1.8.* + - libgcc-devel_linux-aarch64 + - sysroot_linux-aarch64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 27829 + timestamp: 1786195151384 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cli11-2.7.2-h7ac5ae9_1.conda + sha256: 291fb773110ad728e9558fc6fe15c36e0576ddae04f27071bb660b8a8493a477 + md5: 36f959161f12c421146115bccc834db6 depends: - libgcc >=14 - libstdcxx >=14 @@ -12040,8 +12184,8 @@ packages: license_family: BSD purls: [] run_exports: {} - size: 99015 - timestamp: 1772207983869 + size: 103207 + timestamp: 1785918346851 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.29.6-h7042e5d_0.conda sha256: a450e9aba441f01716d20bd68e6cf4956ebabe09483705ea8d317d4635d3eb17 md5: 9143456758d1d205f0c3c73ad7c9e936 @@ -12112,6 +12256,33 @@ packages: run_exports: {} size: 86300 timestamp: 1774664660377 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt-21.1.8-h8af1aa0_1.conda + sha256: 253ad41782ffc1233708562244c388e98ec308001df1e7f26ac683e40ae327ef + md5: 43127a9573ab35af9cdec80696c8fb82 + depends: + - compiler-rt21 21.1.8 hfefdfc9_1 + - libcompiler-rt 21.1.8 hfefdfc9_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 16241 + timestamp: 1769057250596 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compiler-rt21-21.1.8-hfefdfc9_1.conda + sha256: 1fad0358b97eaf52cb58fe217179ce79d0c1b18f5e134e9fc64916a3b889da5f + md5: 76138625931230d58183cf517abf8e15 + depends: + - compiler-rt21_linux-aarch64 21.1.8.* + - libgcc >=14 + - libstdcxx >=14 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 114447 + timestamp: 1769057249190 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.11.0-h8af1aa0_0.conda sha256: 7713d1af8c67d3052e2fb0a9d12cb6098210342995e5db4fd70fc9aae0630465 md5: 10cfd53906b539dc866c79f5837ab577 @@ -12125,17 +12296,17 @@ packages: run_exports: {} size: 7575 timestamp: 1753098689062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.3.0-hadff5d6_19.conda - sha256: 10c8b60befb95c62662821b381f4bb0fa9b7108bdff9bc0971043d5b7f88cda1 - md5: a1123d27b812e311753af9b5987cf401 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-gcc-specs-14.4.0-h3e66f51_1.conda + sha256: c738501c0e964d4e83d9db9387ec6af81d799b6654d5a6d38c1061ad7fe107b4 + md5: 718287d08c83d4dc7bc48343faa70fc9 depends: - - gcc_impl_linux-aarch64 >=14.3.0,<14.3.1.0a0 + - gcc_impl_linux-aarch64 >=14.4.0,<14.4.1.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 31704 - timestamp: 1778268711052 + size: 31977 + timestamp: 1785374402319 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/console_bridge-1.0.2-hdd96247_1.tar.bz2 sha256: 3155a52cb046da65ba7afc8f9b4e6c54881fe511a56b3517b8b4fbd42607b088 md5: 87cedc27ed44d7bda9cb29a6294dfe04 @@ -12167,20 +12338,20 @@ packages: run_exports: {} size: 339097 timestamp: 1769155976173 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.15.0-py312hd077ced_0.conda - sha256: 60d2e746091877a17664134097bc36fd6b4b12da78c3c921541a8781d5448a16 - md5: 872445d47afa6245bb40f781d6e099ca +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coverage-7.15.4-py312h2b0bcae_1.conda + sha256: 0f21bdb0dba52ceb321f7fbcda9ac7258dc9d342d631c6db2d3fe6ca4c640f3a + md5: f7dc46cc06806d57164855c280b14251 depends: + - python + - tomli - libgcc >=14 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - - tomli license: Apache-2.0 purls: - pkg:pypi/coverage?source=hash-mapping run_exports: {} - size: 395533 - timestamp: 1783020298823 + size: 415794 + timestamp: 1786293593352 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cppcheck-2.18.3-py312h5677ec4_1.conda sha256: 6540f7d961f6703bab10319cf556db180d00c309575fc64436c7316b3f019682 md5: 6f4302389e8a90b3ca9b1a3c55a80c4a @@ -12213,9 +12384,9 @@ packages: run_exports: {} size: 30681 timestamp: 1763728975675 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-49.0.0-py312h96535df_0.conda - sha256: 6220d057368612e916d265c9eb7cffe65276143bff699aa4120bc14a7ed90ff6 - md5: 8f48b1cbdb64a64e42ee382bed75601a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cryptography-50.0.0-py312h96535df_0.conda + sha256: 908ca3446b77e3013c822b2ad464c7c5d2f9afd6f698b4211bb2e08db019b4e8 + md5: d40b47e6527e71efc2a0889ffeddb93d depends: - cffi >=2.0 - libgcc >=14 @@ -12229,16 +12400,16 @@ packages: purls: - pkg:pypi/cryptography?source=hash-mapping run_exports: {} - size: 1962389 - timestamp: 1781385371022 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-h7c59cd8_2.conda - sha256: a36ed82bbaebdc59e205d399d6e898bcb20fbcd5aaebb162cdf690ba97173ef5 - md5: a06d829c51a365e8daf0b2a3d4f06d9d + size: 1945578 + timestamp: 1785640695358 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/curl-8.21.0-h23397ac_4.conda + sha256: 31cae053509c5e66fab47daac8881c4374b25ba8924a06a1f1135d4dfd06833f + md5: fb848ce3f1cc70a3526f4095a0575b52 depends: - krb5 >=1.22.2,<1.23.0a0 - - libcurl 8.21.0 h7c59cd8_2 + - libcurl 8.21.0 h23397ac_4 - libgcc >=14 - - libpsl >=0.22.0,<0.23.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -12247,8 +12418,8 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 201305 - timestamp: 1782911743345 + size: 201560 + timestamp: 1785500034197 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.11.0-h7b35c40_0.conda sha256: b87cd33501867d999caa1a57e488e69dc9e08011ec8685586df754302247a7a4 md5: 0234c63e6b36b1677fd6c5238ef0a4ec @@ -12309,23 +12480,22 @@ packages: - dbus >=1.16.2,<2.0a0 size: 480416 timestamp: 1764536098891 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.3.2-py312hf371ade_6.conda - sha256: f97586ab5c50426b6174889e1097d5789449b92202897193d6d25404cc0312df - md5: 3ea4be0284393d937fc1f3c11897d871 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-python-1.4.0-py312hdf6a78a_0.conda + sha256: bcd97d4b64a435524f15158d153ca9ff2fac84425a84d1b4cf47c099ae81c0ed + md5: 1436dc62f1e749035b70c42e2be64755 depends: - - dbus >=1.16.2,<2.0a0 + - dbus + - python - libgcc >=14 - - libglib >=2.86.0,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - libglib >=2.88.3,<3.0a0 + - dbus >=1.16.2,<2.0a0 - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT purls: - pkg:pypi/dbus-python?source=hash-mapping run_exports: {} - size: 139771 - timestamp: 1759741064708 + size: 152755 + timestamp: 1786374551669 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.4.0-hfae3067_0.conda sha256: a636dfd17adc2a859cbdfce97e449e338b02a9f099c6dc0941c9f26bf448cca9 md5: 9fd794eaf983eabf975ead524540b4be @@ -12460,7 +12630,7 @@ packages: - libfreetype6 >=2.14.1 - libgcc >=14 - libiconv >=1.18,<2.0a0 - - libjxl >=0.11,<1.0a0 + - libjxl >=0.11,<0.12.0a0 - liblzma >=5.8.2,<6.0a0 - libopenvino >=2025.4.1,<2025.4.2.0a0 - libopenvino-arm-cpu-plugin >=2025.4.1,<2025.4.2.0a0 @@ -12536,9 +12706,9 @@ packages: - flann >=1.9.2,<1.9.3.0a0 size: 1420069 timestamp: 1774331959849 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h20c602a_0.conda - sha256: 7826619c80af5a5fb0c1f2a965c93f4b92670523e12ff45c592daa3f11340746 - md5: 067209b690c2d7f42e1e4c370d1aff12 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-12.1.0-h166da81_1.conda + sha256: 9576231133ef25127cf8855492a6e34a3189e3a8986cc69ebfef6516670d4822 + md5: 2ba56bd59c36644d783ef8a8086ec0e4 depends: - libgcc >=14 - libstdcxx >=14 @@ -12548,27 +12718,26 @@ packages: run_exports: weak: - fmt >=12.1.0,<12.2.0a0 - size: 197671 - timestamp: 1767681179883 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.1-hba86a56_0.conda - sha256: 2ccfd118269d363a5506161c4a0d96da46d2f01beecc74e0540a54b4737d0e45 - md5: f4d29a0cd77104a683607319a542ac7e + size: 197306 + timestamp: 1785915387774 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.18.3-hba86a56_0.conda + sha256: 0e680e617b891385de651bb1860acf61a3d0e97b8c20e703597bae8ed0868331 + md5: 9b15532d2cdc4652c552aa915f3e4dd2 depends: - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libuuid >=2.42.1,<3.0a0 + - libuuid >=2.42.2,<3.0a0 - libzlib >=1.3.2,<2.0a0 license: MIT - license_family: MIT purls: [] run_exports: weak: - - fontconfig >=2.18.1,<3.0a0 + - fontconfig >=2.18.3,<3.0a0 - fonts-conda-ecosystem - size: 290522 - timestamp: 1780450108132 + size: 304582 + timestamp: 1786381155108 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.63.0-py312ha4530ae_0.conda sha256: e1c4ef9d5d34ac12b2139d9ca2bec9675bb5b6266894d819951b5b333452bb83 md5: 4922a18cb643859aba71e808609cce6c @@ -12674,9 +12843,9 @@ packages: - libfreetype6 >=2.14.3 size: 174060 timestamp: 1780933507786 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_0.conda - sha256: 1bfcd715bcb49a0b22d5d1899a22c6ff884b06f8e141eb746f3949752469a422 - md5: f3ac54914f7d3e1d68cb8d891765e5f9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.16-he30d5cf_1.conda + sha256: 0b11eca89f8143a1eed1cb64876c2015aaccc1e794394706dae2978dfdee148e + md5: a53fb4bfd0bc371eab779e79152fea74 depends: - libgcc >=14 license: LGPL-2.1-or-later @@ -12684,8 +12853,8 @@ packages: run_exports: weak: - fribidi >=1.0.16,<2.0a0 - size: 62909 - timestamp: 1757438620177 + size: 63507 + timestamp: 1785912512987 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.8.0-py312hb10c72c_0.conda sha256: c78f0115252f410c19eecef88e9137707a32337c2d44ae00c6f5cf07c61ee0e5 md5: 5c6f201355ca0da77e8c6bda7a26f4aa @@ -12702,58 +12871,58 @@ packages: run_exports: {} size: 54733 timestamp: 1779999833443 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.3.0-h2e72a27_19.conda - sha256: 438e0f5a198bc752db3c1693371c20ac50347f0dae56e95d15a6e86f79bb1980 - md5: 72f889bb53eae093f7276b7ef1911cb2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-14.4.0-hfdd745d_0.conda + sha256: e95fef458cd5ccbd6df1572198690eba12815b3e0935fcb900ddf670b239f4d1 + md5: 9d8862398311228bfa68e409e80b7549 depends: - conda-gcc-specs - - gcc_impl_linux-aarch64 14.3.0 h398eab4_19 + - gcc_impl_linux-aarch64 14.4.0 hfa249e9_0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 29621 - timestamp: 1778268825860 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.3.0-h398eab4_19.conda - sha256: 48ad41e482417ecb1b0c608139192ccb35ab09df195df69085b9b9378000287b - md5: ad45f72d96f497f6cdfc31c86534c47f + size: 29145 + timestamp: 1785268662418 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-14.4.0-hfa249e9_0.conda + sha256: 45f5dad357c88da6bb40ab7635f4c904ee0ef8b6117f95ac2861db18057d9cc9 + md5: 9ed022416f5292a59ce0f56c151b276d depends: - - binutils_impl_linux-aarch64 >=2.45 - - libgcc >=14.3.0 - - libgcc-devel_linux-aarch64 14.3.0 h25ba3ff_119 - - libgomp >=14.3.0 - - libsanitizer 14.3.0 hedb4206_19 - - libstdcxx >=14.3.0 - - libstdcxx-devel_linux-aarch64 14.3.0 h57c8d61_119 + - binutils_impl_linux-aarch64 >=2.46.1 + - libgcc >=14.4.0 + - libgcc-devel_linux-aarch64 14.4.0 ha8b83fe_100 + - libgomp >=14.4.0 + - libsanitizer 14.4.0 h5c092e3_0 + - libstdcxx >=14.4.0 + - libstdcxx-devel_linux-aarch64 14.4.0 hc896aa5_100 - sysroot_linux-aarch64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 68567347 - timestamp: 1778268606528 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - sha256: 1939c6f91d5281ee95df88c5a3aaa4887b20aa681f7387c346170ebe3270da0f - md5: 953452bf071280fa4e6c73c41de5210b + size: 67914730 + timestamp: 1785268454967 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-16.1.0-h04da0f0_1.conda + sha256: ad024e118ed57e7277547fd03a913b981e9bb9a6db258b8943293b13329d4489 + md5: e5551bb5b75bcc4031e40f2b69baab84 depends: - - binutils_impl_linux-aarch64 >=2.45 - - libgcc >=15.2.0 - - libgcc-devel_linux-aarch64 15.2.0 h55c397f_119 - - libgomp >=15.2.0 - - libsanitizer 15.2.0 he19c465_19 - - libstdcxx >=15.2.0 - - libstdcxx-devel_linux-aarch64 15.2.0 ha7b1723_119 + - binutils_impl_linux-aarch64 >=2.46.1 + - libgcc >=16.1.0 + - libgcc-devel_linux-aarch64 16.1.0 hd673532_101 + - libgomp >=16.1.0 + - libsanitizer 16.1.0 h2510bd8_1 + - libstdcxx >=16.1.0 + - libstdcxx-devel_linux-aarch64 16.1.0 h2445e1f_101 - sysroot_linux-aarch64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: {} - size: 73693226 - timestamp: 1778860139481 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.3.0-h140ef2e_27.conda - sha256: 524e287b7c1b3e53bc6ba830968c05bc60437cf0a4778c56a2d09235e357517b - md5: 877c135e8aada3eef4aef0bea9102c13 + size: 75102801 + timestamp: 1785374604361 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-14.4.0-hab84b30_0.conda + sha256: a812f53a2b0834a142d9df47ae276cafca1368d2b58eb849e62bc5a2d2b2710e + md5: 4c3afa361f6ad61b41e8bcd5a0c3a44e depends: - - gcc_impl_linux-aarch64 14.3.0.* + - gcc_impl_linux-aarch64 14.4.0.* - binutils_linux-aarch64 - sysroot_linux-aarch64 license: BSD-3-Clause @@ -12762,22 +12931,8 @@ packages: run_exports: strong: - libgcc >=14 - size: 29091 - timestamp: 1781279944723 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_27.conda - sha256: 2450913611189cc3c26062a43a97a93501159335d4d314cca5e2678fb5f4d3b6 - md5: 619b8a05f89220fa8c9536dcfeeddd5b - depends: - - gcc_impl_linux-aarch64 15.2.0.* - - binutils_linux-aarch64 - - sysroot_linux-aarch64 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong: - - libgcc >=15 - size: 29074 - timestamp: 1781279974207 + size: 29475 + timestamp: 1785386546023 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.44.7-h90308e0_0.conda sha256: f406e0b58a51da8648b100316c7b5893e5585256b67eb410126e2357a901f0d2 md5: 6b26b46bbc0761e0f256699eab75202d @@ -12840,40 +12995,40 @@ packages: run_exports: {} size: 3999301 timestamp: 1751557600737 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.3.0-ha28f942_7.conda - sha256: a37a752156776aea2e6976a1bbba87b1160d1d4259a2455d956163b936fc665d - md5: 033c55ed42edc3d21528c6bc3f11421a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-14.4.0-h15173b7_0.conda + sha256: d10fc484c49f2213e1415caf4b045d3f2ce646ce845696473e1cb19b8cdd7efb + md5: 4898aa2c6b516027c69c0cd5825dec3a depends: - - gcc 14.3.0.* - - gcc_impl_linux-aarch64 14.3.0.* - - gfortran_impl_linux-aarch64 14.3.0.* + - gcc 14.4.0 hfdd745d_0 + - gcc_impl_linux-aarch64 14.4.0 hfa249e9_0 + - gfortran_impl_linux-aarch64 14.4.0 hee5bd23_0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 30531 - timestamp: 1759967819421 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.3.0-h6b0ea1e_19.conda - sha256: a32795b0cfae3bfa59359857865d20dc82ab142b1bc17b4ddc0c9f08bb50806b - md5: 7741f3d34cb2552da0b1975ea488fcb2 + size: 28570 + timestamp: 1785268672359 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-14.4.0-hee5bd23_0.conda + sha256: 4559e098c6585f05baa2f3fe198263c5c2bba33570cdab46c4af74a5b9824946 + md5: 2297b2db29fc080d10b5199a7590c5dc depends: - - gcc_impl_linux-aarch64 >=14.3.0 - - libgcc >=14.3.0 - - libgfortran5 >=14.3.0 - - libstdcxx >=14.3.0 + - gcc_impl_linux-aarch64 >=14.4.0 + - libgcc >=14.4.0 + - libgfortran5 >=14.4.0 + - libstdcxx >=14.4.0 - sysroot_linux-aarch64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 14838254 - timestamp: 1778268770944 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.3.0-h4981040_27.conda - sha256: 5121a773143d441b132c47cfe6ee7f10149fa93e677a11fcceb87156039a289b - md5: 2d97644339032316cf05e1ffbf33cad8 + size: 14682497 + timestamp: 1785268589246 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-14.4.0-hafc07fd_0.conda + sha256: a8bf668faaa0df17fc8c509aaaf3eec3927e633bc2b0b690d0f3868125c22054 + md5: 0979a1ce0e8e0aa798caec667d8c0f17 depends: - - gfortran_impl_linux-aarch64 14.3.0.* - - gcc_linux-aarch64 ==14.3.0 h140ef2e_27 + - gfortran_impl_linux-aarch64 14.4.0.* + - gcc_linux-aarch64 ==14.4.0 hab84b30_0 - binutils_linux-aarch64 - sysroot_linux-aarch64 license: BSD-3-Clause @@ -12881,16 +13036,15 @@ packages: purls: [] run_exports: strong: - - libgfortran5 >=14.3.0 + - libgfortran5 >=14.4.0 - libgfortran - libgcc >=14 - size: 27325 - timestamp: 1781279944723 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.55.0-pl5321hfc83acc_0.conda - sha256: 9764cef56e590f7c4caf2abd80653d5d0b16b3b1b75e38b3e5373753cacbd309 - md5: 198230ef642951979039d219aa86ea75 + size: 27606 + timestamp: 1785386546023 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.55.0-pl5321h06f7e71_1.conda + sha256: 02615f600a0d4242dcedcb7ebd8f1faa02f7136551cc3e804fc879a015237644 + md5: cdbc79af349a0df66596b1f91534e476 depends: - - __glibc >=2.28,<3.0.a0 - libcurl >=8.21.0,<9.0a0 - libexpat >=2.8.1,<3.0a0 - libgcc >=14 @@ -12904,8 +13058,8 @@ packages: license: GPL-2.0-or-later and LGPL-2.1-or-later purls: [] run_exports: {} - size: 15297855 - timestamp: 1783070287980 + size: 13581417 + timestamp: 1783984665476 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hd9db0c5_2.conda sha256: 1a26fda032b7826fe5b039156c1701f38f865e48e64f3ebf91bc11ad76124263 md5: 3c78b479a86b9f0d20224bec9362a136 @@ -12940,55 +13094,55 @@ packages: - glew >=2.3.0,<2.4.0a0 size: 484212 timestamp: 1766373411104 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.4-he30d5cf_1.conda - sha256: a1789022c45d037e7a6e89a5b04de39939fc90a24b09a78c6720e010442dabcf - md5: 72356664c10cd92bc30bc6fad7b21789 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glfw-3.5.1-he30d5cf_0.conda + sha256: 1ee6498ed8ecab7327ab9eb884bbb5bd8672fb9fd933147108e1e3e65d80f1b9 + md5: a5f2c8808e6a0a7f10052502b2d81aaa depends: - libgcc >=14 - - libxkbcommon >=1.11.0,<2.0a0 - - wayland >=1.24.0,<2.0a0 - - xorg-libx11 >=1.8.12,<2.0a0 + - libxkbcommon >=1.13.2,<2.0a0 + - wayland >=1.26.0,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 - xorg-libxcursor >=1.2.3,<2.0a0 - - xorg-libxi >=1.8.2,<2.0a0 - - xorg-libxinerama >=1.1.5,<1.2.0a0 - - xorg-libxrandr >=1.5.4,<2.0a0 + - xorg-libxi >=1.8.3,<2.0a0 + - xorg-libxinerama >=1.1.6,<1.2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 license: Zlib purls: [] run_exports: weak: - - glfw >=3.4,<4.0a0 - size: 170266 - timestamp: 1758809249325 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.2-hdf12349_0.conda - sha256: 1cdb69c2ff6714b0c580f839df05b75f20dd09a7bcf44809ca4c9f6dd607488f - md5: ee8e7987db9670fdf9505aa9f1f5e087 + - glfw >=3.5.1,<4.0a0 + size: 175447 + timestamp: 1785586454982 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-2.88.3-hbcf6308_0.conda + sha256: 67fe604e4470b6a094b3a97648420859255090a6bdb04bdc83b928b2e3ef0be3 + md5: 6b811fb36c9d0e31df9782cbdb6e9d77 depends: - python * - packaging - - libglib ==2.88.2 h96a7f82_0 - - glib-tools ==2.88.2 h7aeb4f4_0 + - libglib ==2.88.3 h96a7f82_0 + - glib-tools ==2.88.3 h34e06a2_0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 103291 - timestamp: 1782464048865 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.2-h7aeb4f4_0.conda - sha256: cbb0679fccff1b87253d24a8aee96bf3908f16c4a1a828c35578ed8e8d516a61 - md5: c7195d7c970b8bdca5d6b5f6adb66886 + - libglib >=2.88.3,<3.0a0 + size: 103130 + timestamp: 1785442102055 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glib-tools-2.88.3-h34e06a2_0.conda + sha256: 231679daceed6f0dd243e124dda5c0abdfd3e7fe17de9f165f7e00633a57a030 + md5: 99fac6e2de753f95ec4f8c2a086e67c8 depends: - - libglib ==2.88.2 h96a7f82_0 + - libglib ==2.88.3 h96a7f82_0 - libffi - libgcc >=14 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 260096 - timestamp: 1782464048865 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.3.0-h124e036_0.conda - sha256: bae4806f4076cf9f91089fbeae7c9357ce4348df3657c25b249ac4487beed230 - md5: c0045dffcc3660ecd1b9123df377796f + size: 259962 + timestamp: 1785442102055 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glslang-16.5.0-hfeb5c2c_1.conda + sha256: ffddee19cabdba3835974f42def5339aa9edcdb36c7e178c42dceb3514769011 + md5: 3cf455cc596845f04200a6f2d67f4366 depends: - libgcc >=14 - libstdcxx >=14 @@ -12999,19 +13153,20 @@ packages: run_exports: weak: - glslang >=16,<17.0a0 - size: 1359428 - timestamp: 1777747105441 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-h8af1aa0_1.conda - sha256: 514dc47c5e0808b3478be5a23be9437b88856b5ce76cf864c81a51e212fe2d33 - md5: a5c91c7d57692b282c9fccef97394057 + size: 1398415 + timestamp: 1785879950902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmock-1.17.0-hecbc285_2.conda + sha256: 29ece855a030267cd12cc7582de64de5bb9745e27255e4fc0e48d47210a97e94 + md5: 8afdf8100dddfbd70622b771be8bd446 depends: - - gtest 1.17.0 h17cf362_1 + - gtest ==1.17.0 hdc560ac_2 + - gtest >=1.17.0,<1.17.1.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 7659 - timestamp: 1748320119582 + size: 4932 + timestamp: 1786002678700 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 md5: 7cbfb3a8bb1b78a7f5518654ac6725ad @@ -13044,20 +13199,20 @@ packages: - gnutls >=3.8.13,<3.9.0a0 size: 2124632 timestamp: 1778044273289 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-hfae3067_0.conda - sha256: 3e529c517a76a1f4497c51eeedeeb927d33f732dcdb48055a020a83eb3e4e95c - md5: 4db044857ab1d09b2e8f0013c65387c1 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.15-h7ac5ae9_1.conda + sha256: 5be01914b445dfbde85a4751b1d12b331740e7af68a86e4ef6313ab38a870fdd + md5: c5835ff5788e0d772d67a97bd5fe001b depends: - - libgcc >=14 - libstdcxx >=14 + - libgcc >=14 license: LGPL-2.0-or-later license_family: LGPL purls: [] run_exports: weak: - graphite2 >=1.3.15,<2.0a0 - size: 103119 - timestamp: 1780455096710 + size: 119414 + timestamp: 1786118514013 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-14.1.2-h45e821f_0.conda sha256: 0ac1a90696a3250febdb1d63a3161b9aad5dc136e602f7f17df4894bd153162c md5: 60c3b65c5e60fc70e1b9f0de4d0c2247 @@ -13150,22 +13305,22 @@ packages: run_exports: {} size: 377338 timestamp: 1768408531779 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-h17cf362_1.conda - sha256: 9f48b9cd4393fb033882cd456fb3310d42fc853885c6c263db66c06769903061 - md5: a058f4fa55dea20cdc8a7664c8537b6a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtest-1.17.0-hdc560ac_2.conda + sha256: 91feb966f4092159268a5dea2d9edb3b71c91f8d91d21b44c228f85b186cd883 + md5: 78fe417f08edf037a8d0ce3c87401630 depends: - - libgcc >=13 - - libstdcxx >=13 + - libstdcxx >=14 + - libgcc >=14 constrains: - - gmock 1.17.0 + - gmock ==1.17.0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - gtest >=1.17.0,<1.17.1.0a0 - size: 409213 - timestamp: 1748320114722 + size: 440725 + timestamp: 1786002678700 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk3-3.24.52-h75d4e7a_0.conda sha256: 5db1347513253a2d200b111717eb452d4b95e9380db48b6dd2c8bb7bb256d754 md5: f6a9ed300bcf3217da7f1955f57facec @@ -13227,38 +13382,38 @@ packages: - gts >=0.7.6,<0.8.0a0 size: 332673 timestamp: 1686545222091 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.3.0-ha28f942_7.conda - sha256: 7f38940a42d43bf7b969625686b64a11d52348d899d4487ed50673a09e7faece - md5: dac1f319c6157797289c174d062f87a1 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-14.4.0-h15173b7_0.conda + sha256: ee3c1f69a7c9273af8694086f181b253bcd341d1f485ddcdccaa65c702f8e79b + md5: 1219d10e774f745ce898e92b4d161a3a depends: - - gcc 14.3.0.* - - gxx_impl_linux-aarch64 14.3.0.* + - gcc 14.4.0 hfdd745d_0 + - gxx_impl_linux-aarch64 14.4.0 h66ee75d_0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: {} - size: 30526 - timestamp: 1759967828504 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.3.0-h0d4f5d4_19.conda - sha256: d83ab2a25d52a2f564c9692aae1ef876a66ca2815f9997812df6babcf37d9e6e - md5: e0761ef9f08505f6d1544ab0e202c764 + size: 28544 + timestamp: 1785268681574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-14.4.0-h66ee75d_0.conda + sha256: ce6b95695984753cccb2a4b8b102a922c6bdb48bf84e07a96aaba653b710ad6a + md5: bb78e217022ae9ee579a7eaf71a435d1 depends: - - gcc_impl_linux-aarch64 14.3.0 h398eab4_19 - - libstdcxx-devel_linux-aarch64 14.3.0 h57c8d61_119 + - gcc_impl_linux-aarch64 14.4.0 hfa249e9_0 + - libstdcxx-devel_linux-aarch64 14.4.0 hc896aa5_100 - sysroot_linux-aarch64 - tzdata license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 13722799 - timestamp: 1778268804579 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.3.0-h0da240b_27.conda - sha256: 07df85f4ba8a199afb300fc1239aa72d6d425f4a258d4414102caff800ea8093 - md5: c8776dadbd23bb98b6863b0860047a35 + size: 13821414 + timestamp: 1785268624656 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-14.4.0-h71c191b_0.conda + sha256: 7ef8ecc0b2b09c04b06e6911bb6299c5c17b0217ee8bbec672d0fc5b648a2987 + md5: 75d032b9d7f3ccb50f0412d392d9c04f depends: - - gxx_impl_linux-aarch64 14.3.0.* - - gcc_linux-aarch64 ==14.3.0 h140ef2e_27 + - gxx_impl_linux-aarch64 14.4.0.* + - gcc_linux-aarch64 ==14.4.0 hab84b30_0 - binutils_linux-aarch64 - sysroot_linux-aarch64 license: BSD-3-Clause @@ -13268,8 +13423,8 @@ packages: strong: - libstdcxx >=14 - libgcc >=14 - size: 27646 - timestamp: 1781279944723 + size: 27888 + timestamp: 1785386546023 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gz-cmake3-3.5.5-h740f95d_0.conda sha256: 156c068a26873adeed74deef7cc2788a0d952409c9d70dd62f1b21f94a90b758 md5: fe4f85a94f05fc0ba646a19e642c16c3 @@ -13356,19 +13511,19 @@ packages: - libgz-utils2 >=2.2.1,<3.0a0 size: 8050 timestamp: 1767701505722 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.2.1-h8af1aa0_1.conda - sha256: 57b157674ecee4d16e2873a3624095b4ed1859ce8c574b161e0d9c1723788733 - md5: 41198d1dd71d97c1507e6bd17edd10c7 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-14.3.0-h8af1aa0_0.conda + sha256: f2c5c27765b1c1d3c65f15584cb24f6bedd5733848644920b1a3ec6403623cee + md5: 9aa6588dcf66468cab18936ade8a1b25 depends: - - libharfbuzz-devel 14.2.1 h3a99ef3_1 + - libharfbuzz-devel 14.3.0 h3a99ef3_0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 11079 - timestamp: 1782800518091 + - libharfbuzz >=14.3.0 + size: 11095 + timestamp: 1785769977839 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda sha256: 70d1e2d3e0b9ae1b149a31a4270adfbb5a4ceb2f8c36d17feffcd7bcb6208022 md5: e1b6676b77b9690d07ea25de48aed97e @@ -13414,9 +13569,9 @@ packages: run_exports: {} size: 17670 timestamp: 1771540496764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda - sha256: 49ba6aed2c6b482bb0ba41078057555d29764299bc947b990708617712ef6406 - md5: 546da38c2fa9efacf203e2ad3f987c59 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-h7ac5ae9_2.conda + sha256: 424a4d54715d11f7fdf033c2ba2fd1b19d6ebd069a15e007ea467b719af197b3 + md5: 9a2f5f714c8962bfa551cd9c887b1029 depends: - libgcc >=14 - libstdcxx >=14 @@ -13426,8 +13581,8 @@ packages: run_exports: weak: - icu >=78.3,<79.0a0 - size: 12837286 - timestamp: 1773822650615 + size: 14691767 + timestamp: 1784916392000 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.2.2-h92288e7_0.conda sha256: fba00c8ef8bd59748515c34670c437905708228ee099f39fa2b1fed5693334b3 md5: 46dd7d944946f14848357d193b94cd8b @@ -13576,22 +13731,22 @@ packages: - lcms2 >=2.19.1,<3.0a0 size: 296564 timestamp: 1780211834883 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - sha256: 7abd913d81a9bf00abb699e8987966baa2065f5132e37e815f92d90fc6bba530 - md5: a21644fc4a83da26452a718dc9468d5f +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.46.1-default_h1979696_102.conda + sha256: 2c4901f4227b0850328ed0c69f958b30ad2cd18982f7a31c7c1f911827004d08 + md5: 489444d0acb2a579d2a002d85a08c059 depends: - zstd >=1.5.7,<1.6.0a0 constrains: - - binutils_impl_linux-aarch64 2.45.1 + - binutils_impl_linux-aarch64 2.46.1 license: GPL-3.0-only license_family: GPL purls: [] run_exports: {} - size: 875596 - timestamp: 1774197520746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.1.0-h52b7260_0.conda - sha256: 8957fd460c1c132c8031f65fd5f56ec3807fd71b7cab2c5e2b0937b13404ab36 - md5: d13423b06447113a90b5b1366d4da171 + size: 905305 + timestamp: 1784214534868 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.2.0-h52b7260_0.conda + sha256: 0176a71d64fcb5aec43c9e8ab4ae72faa6c6b0b1cda8f40b65e19429ce13c84d + md5: 9fcfe6be4f752b72be7abc69842ca396 depends: - libgcc >=14 - libstdcxx >=14 @@ -13600,9 +13755,9 @@ packages: purls: [] run_exports: weak: - - lerc >=4.1.0,<5.0a0 - size: 240444 - timestamp: 1773114901155 + - lerc >=4.2.0,<5.0a0 + size: 244850 + timestamp: 1785038308130 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20250512.1-cxx17_h201e9ed_0.conda sha256: 28bb0a5f3177bb3b45a89d309b93bef65645671d1c97ae7bbcfa74481bf33f3c md5: 4db30fe7ba05e2ce66595ed646064861 @@ -13649,9 +13804,9 @@ packages: - libaec >=1.1.5,<2.0a0 size: 37745 timestamp: 1769221878827 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.8-gpl_hbe7d12b_100.conda - sha256: 74ee8968f3abdb7c1cec4b6701791b8bfcc6ba7b79de2aa76e2042a86fb3a6ec - md5: a023664e901257bc10437c26a4923528 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.8.9-gpl_hbe7d12b_100.conda + sha256: d9d9beb35f57285b967de5bd0f13152ac296e14cc3cb9d39b63513724c416423 + md5: e776765ee657e43186676e1de5eceb9b depends: - bzip2 >=1.0.8,<2.0a0 - libgcc >=14 @@ -13668,9 +13823,9 @@ packages: purls: [] run_exports: weak: - - libarchive >=3.8.8,<3.9.0a0 - size: 968059 - timestamp: 1782289044270 + - libarchive >=3.8.9,<3.9.0a0 + size: 972273 + timestamp: 1785250475851 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.25.1-h5e0f5ae_0.conda sha256: 146be90c237cf3d8399e44afe5f5d21ef9a15a7983ccea90e72d4ae0362f9b28 md5: 1c5813f6be57f087b6659593248daf00 @@ -13747,27 +13902,27 @@ packages: - libavif16 >=1.4.2,<2.0a0 size: 149006 timestamp: 1779847094511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-8_haddc8a3_openblas.conda - build_number: 8 - sha256: c897399c943168c646f659952f73a9154f9122d7e9b151649dbe075dfdcd484b - md5: 8b44dad125760faa2b3925f5a6e3112d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.11.0-9_haddc8a3_openblas.conda + build_number: 9 + sha256: 5ad8fda537086a842379b7eb8d67770674e3c3afa66b09690ed62b54439fc227 + md5: c2d360534e0377666eaf8f86e605511c depends: - - libopenblas >=0.3.33,<0.3.34.0a0 - - libopenblas >=0.3.33,<1.0a0 + - libopenblas >=0.3.34,<0.3.35.0a0 + - libopenblas >=0.3.34,<1.0a0 constrains: - - libcblas 3.11.0 8*_openblas - - liblapack 3.11.0 8*_openblas + - blas 2.309 openblas + - libcblas 3.11.0 9*_openblas + - liblapack 3.11.0 9*_openblas + - liblapacke 3.11.0 9*_openblas - mkl <2027 - - blas 2.308 openblas - - liblapacke 3.11.0 8*_openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - libblas >=3.11.0,<4.0a0 - size: 18843 - timestamp: 1779859042591 + size: 18024 + timestamp: 1786058936290 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.88.0-h5651608_7.conda sha256: dae8cfb795e63a1465b304a960f89eb3d627979bc49617c7f750bae82cd65ef5 md5: a5da8ee15569dc1e93a11655a421c58b @@ -13903,24 +14058,24 @@ packages: - libcap >=2.77,<2.78.0a0 size: 109458 timestamp: 1774335293336 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-8_hd72aa62_openblas.conda - build_number: 8 - sha256: 3ba039f0705022939d90e36c1ed2fcbafd7f5bb77563e3702202ae796b32f4d2 - md5: 76242b7ad6e43809afa8671dd609b4ed +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.11.0-9_hd72aa62_openblas.conda + build_number: 9 + sha256: 9e83c59429296818e7111a9f80f29c2c8a1e5ab9ae2d59aec8e67af9b87ac923 + md5: 1ff91e2252ca15db87a27b7b3ff280ae depends: - - libblas 3.11.0 8_haddc8a3_openblas + - libblas 3.11.0 9_haddc8a3_openblas constrains: - - liblapack 3.11.0 8*_openblas - - liblapacke 3.11.0 8*_openblas - - blas 2.308 openblas + - blas 2.309 openblas + - liblapack 3.11.0 9*_openblas + - liblapacke 3.11.0 9*_openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - libcblas >=3.11.0,<4.0a0 - size: 18817 - timestamp: 1779859049133 + size: 17977 + timestamp: 1786058941306 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libccd-double-2.1-h2f0025b_3.conda sha256: 98abf6dd8f17fe1fabc2828d934f8c96ea21b4e27cff6c7c12bd2a31827ea669 md5: 3898f9a528720cc10e8c62e08e1a11ea @@ -13937,9 +14092,29 @@ packages: - libccd-double >=2.1,<2.2.0a0 size: 34226 timestamp: 1687341851768 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_he95a3c9_4.conda - sha256: 4aa7c1fc1e6c7dca538fee80fc0eece8aaf7031e2c1c009962719825fba6c0e6 - md5: 2be12f5a030a353c7f8735ebd5b80876 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-22.1.8-default_h0841624_5.conda + sha256: e99d05eed7cbab06123c511e76bac0a89006196eaa0e02ba0f50f6ca0621d622 + md5: 6206c87158aaed2c18288a71ffea6493 + depends: + - libclang13 ==22.1.8 default_h667e455_5 + - libstdcxx >=14 + - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + - libclang13 >=22.1.8 + - libllvm22 >=22.1.8,<22.2.0a0 + license: Apache-2.0 WITH LLVM-exception + purls: [] + run_exports: + weak: + - libclang13 >=22.1.8 + size: 33710 + timestamp: 1786164871954 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp21.1-21.1.8-default_hd3644b0_5.conda + sha256: 9ed7def092c79b05ef95d07d307f056a2acdef691c020b4420ba6847aa95373c + md5: acc5c09a52ca4be5a5918e0e45628ae8 depends: - libgcc >=14 - libllvm21 >=21.1.8,<21.2.0a0 @@ -13950,39 +14125,61 @@ packages: run_exports: weak: - libclang-cpp21.1 >=21.1.8,<21.2.0a0 - size: 20653604 - timestamp: 1777011685893 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h0cc847a_3.conda - sha256: 16ff2afd00acf94320dcfacc7124bbb67ae542d48e5c5ac74627e8690df10dfa - md5: 483b80c996ae6e15317459ebd71d7033 + size: 20730073 + timestamp: 1786195059586 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp22.1-22.1.8-default_h9c9fc99_5.conda + sha256: 4245aa4042728d05f286634e3b90933253c76c25be0982b17cf8ca2677dd7c9e + md5: 25fe9e79a926c2c29fe05845c1f029c3 depends: - libstdcxx >=14 - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] run_exports: weak: - libclang-cpp22.1 >=22.1.8,<22.2.0a0 - size: 24213552 - timestamp: 1782358853037 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_hd92691d_3.conda - sha256: ef4c63c93751dd2582c4f72d9558faaec68eb26d149406373d5af8e509008c48 - md5: baa5eb601eacb3cc438aad5b343d9b61 + size: 24211487 + timestamp: 1786164871954 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-22.1.8-default_h667e455_5.conda + sha256: f845b307df02c8c210ddb07f5dff27f3ed046b5ed167da2c9a224c6ba730d1c7 + md5: 948fa608410f624935dd79252e3c0ac0 depends: - - libclang-cpp22.1 ==22.1.8 default_h0cc847a_3 + - libclang-cpp22.1 ==22.1.8 default_h9c9fc99_5 - libstdcxx >=14 - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - libzlib >=1.3.2,<2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] run_exports: weak: - libclang13 >=22.1.8 - size: 14311328 - timestamp: 1782358853037 + size: 14310295 + timestamp: 1786164871954 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcompiler-rt-21.1.8-hfefdfc9_1.conda + sha256: 41b51d21aed9ceedb050a4b37b29e57a2932c8f6ff94bc4eac6674ccfd5113df + md5: 3c9ee7875d7831caf58359139753b4ac + depends: + - libgcc >=14 + - libstdcxx >=14 + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + weak: + - libcompiler-rt >=21.1.8 + size: 7800653 + timestamp: 1769057231305 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h4f2b762_6.conda sha256: 41b04f995c9f63af8c4065a35931e46cbc2fdd6b9bf7e4c19f90d53cbb2bc8e5 md5: 67828c963b17db7dc989fe5d509ef04a @@ -13999,14 +14196,14 @@ packages: - libcups >=2.3.3,<2.4.0a0 size: 4553739 timestamp: 1770903929794 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-h7c59cd8_2.conda - sha256: 5846fa724f4b8eb23751e347fc8b31775c0a28a7a34d1e44f081651613470512 - md5: 0a187db240c503afc7eb5bd865c7ff04 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.21.0-h23397ac_4.conda + sha256: 5a99beaf91963d212f9b488b5361a2d7aeb69ae3d44b40b65a3e87f128c5417e + md5: 5afef6f29ea234741802980cdcee6f5e depends: - krb5 >=1.22.2,<1.23.0a0 - libgcc >=14 - libnghttp2 >=1.68.1,<2.0a0 - - libpsl >=0.22.0,<0.23.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -14017,11 +14214,11 @@ packages: run_exports: weak: - libcurl >=8.21.0,<9.0a0 - size: 505957 - timestamp: 1782911738398 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-h1af38f5_0.conda - sha256: 48814b73bd462da6eed2e697e30c060ae16af21e9fbed30d64feaf0aad9da392 - md5: a9138815598fe6b91a1d6782ca657b0c + size: 505770 + timestamp: 1785500029413 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.25-hfa851ae_1.conda + sha256: 4cb3da1d4ce7540604219d2a016253777da66c1a710c41557bc708aae7f54a75 + md5: 8cdf7f7e4908c9b2cf50c58966f2ff64 depends: - libgcc >=14 license: MIT @@ -14030,11 +14227,11 @@ packages: run_exports: weak: - libdeflate >=1.25,<1.26.0a0 - size: 71117 - timestamp: 1761979776756 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_0.conda - sha256: 2a941ffcd6b09380344c2cb5b198d2743ce4fc30ec9a5c8c83e53368d8015aef - md5: 987d35ad350bb552a30f3d314f6c7655 + size: 71628 + timestamp: 1785908730449 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.127-he30d5cf_1.conda + sha256: b6972581eae43c9adc8ee7b3b923efe43e66cb4f3bc9b448a93047ccd60dcae1 + md5: a656e43a6e145b11d5e09f08125b8fd9 depends: - libgcc >=14 - libpciaccess >=0.19,<0.20.0a0 @@ -14044,8 +14241,8 @@ packages: run_exports: weak: - libdrm >=2.4.127,<2.5.0a0 - size: 345283 - timestamp: 1778975814771 + size: 344036 + timestamp: 1785984419175 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 md5: fb640d776fc92b682a14e001980825b1 @@ -14085,19 +14282,19 @@ packages: - libegl >=1.7.0,<2.0a0 size: 31552 timestamp: 1779728260736 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h80f16a2_3.conda + sha256: 4475f79a020e9ff2a5a0308c48cb2970a25d55c3dd724a97ab28bfac3be6cd49 + md5: f679b30a53d410d0b5ae0cb8f5b7397e depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD + - libgcc >=14 + license: BSD-2-Clause OR GPL-2.0-or-later + license_family: GPL purls: [] run_exports: weak: - libev >=4.33,<4.34.0a0 - size: 115123 - timestamp: 1702146237623 + size: 45746 + timestamp: 1785917328690 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 md5: 96ae6083cd1ac9f6bc81631ac835b317 @@ -14138,6 +14335,18 @@ packages: - libffi >=3.5.2,<3.6.0a0 size: 55952 timestamp: 1769456078358 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.7.0-h376a255_0.conda + sha256: c95b5b5fc13c8d7af2a9908e6c64844f48787a7631f8abcde1813dc21b3b079e + md5: 81aedbde3ea118c602e8b289bf565ac5 + depends: + - libgcc >=14 + license: MIT + license_family: MIT + run_exports: + weak: + - libffi >=3.7.0,<3.8.0a0 + size: 63746 + timestamp: 1783520889209 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 md5: 520b12eab32a92e19b1f239ac545ec03 @@ -14179,33 +14388,33 @@ packages: run_exports: {} size: 424236 timestamp: 1780933505195 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - sha256: 4592b096e553f67799ae70d4b6167eeda3ec74587d68c7aecbf4e7b1df136681 - md5: f35b3f52d0a2ec4ffe3c89ba135cdb9a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-16.1.0-h205dda4_1.conda + sha256: 88a3d400c678df034c9d498f32503779977d5ea826063687c663e42c945abed5 + md5: 91eb209af1098d652fc69b8a3fc7cbaa depends: - _openmp_mutex >=4.5 constrains: - - libgomp 15.2.0 h8acb6b2_19 - - libgcc-ng ==15.2.0=*_19 + - libgomp 16.1.0 h8acb6b2_1 + - libgcc-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 622462 - timestamp: 1778268755949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda - sha256: 1137f93f477f56199ded24117430045a0c02cbe8b10031beac3b9ad2138539d3 - md5: 770cf892e5530f43e63cadc673e85653 + size: 628785 + timestamp: 1785374520532 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-16.1.0-he9431aa_1.conda + sha256: e0456b4b49e8f9f9ffc04b1b412101ea2c38476eaceb9a0e4e16792d7cfdd929 + md5: e4489d8717b51cee8a33f2b66d10fa6a depends: - - libgcc 15.2.0 h8acb6b2_19 + - libgcc 16.1.0 h205dda4_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - libgcc - size: 27738 - timestamp: 1778268759211 + size: 28123 + timestamp: 1785374523851 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-h88aa843_12.conda sha256: 8b7dfd29a8ce42d28c47a06dcaa7c21f6dad751b72d2352668d680b6ec951630 md5: b4c9083a19a45047173f380624c7e5f3 @@ -14257,32 +14466,32 @@ packages: - libgettextpo >=0.25.1,<1.0a0 size: 37460 timestamp: 1751557569909 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.2.0-he9431aa_19.conda - sha256: e5ad94be72634233510b33ba792a3339921bd468f0b8bc6961ea05eded251d9b - md5: c7a5b5decf969ead5ecada83654164cf +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-16.1.0-he9431aa_1.conda + sha256: 2cef8ffd270434043daf8f481d0c64d3285286e5d3e7c3d43770fec93eddac05 + md5: 8ae8f954eb026b1f0734bea5f9fdfca2 depends: - - libgfortran5 15.2.0 h1b7bec0_19 + - libgfortran5 16.1.0 h47adacf_1 constrains: - - libgfortran-ng ==15.2.0=*_19 + - libgfortran-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 27728 - timestamp: 1778268784621 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.2.0-h1b7bec0_19.conda - sha256: af8e9bdcaa77f133a8ee4c1ef57ef564d9c45aa262abf9f5ef9b50eb99d96407 - md5: 779dbb494de6d3d6477cab52eb34285a + size: 28122 + timestamp: 1785374551480 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-16.1.0-h47adacf_1.conda + sha256: abf2248fd6b2863dc3c9eade2dcf1f7e0662334e9a6f211af1816c166dc45a93 + md5: ad336824ac53098bf5004b2fa080467e depends: - - libgcc >=15.2.0 + - libgcc >=16.1.0 constrains: - - libgfortran 15.2.0 + - libgfortran 16.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 1487244 - timestamp: 1778268767295 + size: 1496461 + timestamp: 1785374532738 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_3.conda sha256: 05c75a2034bdbca29bab467d02ad770ed5e524e4f0670432258f2d8487c95348 md5: 6e893c36f31502dd195d3d58f455fdbd @@ -14307,24 +14516,24 @@ packages: - libgl >=1.7.0,<2.0a0 size: 116084 timestamp: 1779728257534 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.2-h96a7f82_0.conda - sha256: 6a13152a81513117b8d41bf64dea56c731d877bcced5a24fab738e3c0f9ac58c - md5: 31d404d8c0755d0f9062a4459f5a1084 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.88.3-h96a7f82_0.conda + sha256: 79451e5621a8038f75751a0ce0e032441eac2a1ba7ad429c41685141b417ca8f + md5: ea53e52bd78eebac3f2dd864b928e98b depends: - libgcc >=14 - - libffi >=3.5.2,<3.6.0a0 - - pcre2 >=10.47,<10.48.0a0 - libzlib >=1.3.2,<2.0a0 - libiconv >=1.18,<2.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libffi >=3.5.2,<3.6.0a0 constrains: - glib >2.66 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 4943441 - timestamp: 1782464048865 + - libglib >=2.88.3,<3.0a0 + size: 4945475 + timestamp: 1785442102055 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglu-9.0.3-h5ad3122_1.conda sha256: ddb72f17f6ec029069cddd2e489e63e371e75661cd2408509370508490bb23ad md5: 4d836b60421894bf9a6c77c8ca36782c @@ -14372,17 +14581,17 @@ packages: - libglx >=1.7.0,<2.0a0 size: 27651 timestamp: 1779728252006 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - sha256: 2370ef0ffcbae5bede3c4bf136add4abc257245eb91f724c99bb4a43116c5a83 - md5: c5e8a379c4a2ec2aea4ba22758c001d9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-16.1.0-h8acb6b2_1.conda + sha256: 1c609a4a72597350317b92c4d9dfb85d21740219048e2b1d458925a6ccfa3d7a + md5: 4c9b02fc9fe27704777e260157003653 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - _openmp_mutex >=4.5 - size: 587387 - timestamp: 1778268674393 + size: 617180 + timestamp: 1785374444877 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgz-cmake3-3.5.5-h7ac5ae9_0.conda sha256: 6b4ff74d0f84ee81d5feb311ad6657f956621cc7b9f73a4256298a866d4322ad md5: e3ee803e3a07bed0ba7edb714d16606d @@ -14464,9 +14673,9 @@ packages: - libgz-utils2 >=2.2.1,<3.0a0 size: 63399 timestamp: 1767701505720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.2.1-h3a99ef3_1.conda - sha256: ae1d16dd62f626c4dab1240a49f6b04e14e4f30140e5fb26bb835821dba114b6 - md5: 655cedd9626545089b9e9ead153cf619 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-14.3.0-h3a99ef3_0.conda + sha256: d8e5e449554ac33496ee1dbb1f039c2a9cf629ee6cb7c5330f3dc4f1f6cab694 + md5: a2126ced7efaf094bc85126bad568105 depends: - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.15,<2.0a0 @@ -14474,7 +14683,7 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.88.2,<3.0a0 + - libglib >=2.88.3,<3.0a0 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 @@ -14482,11 +14691,11 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 1334601 - timestamp: 1782800489368 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-devel-14.2.1-h3a99ef3_1.conda - sha256: 866b0132df7d080a7b2e3c44e4c79723f007db6c035b1e751612d29db698859b - md5: b6762f2c0386ba4606d5b2cba1e41ca8 + size: 1400261 + timestamp: 1785769947757 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libharfbuzz-devel-14.3.0-h3a99ef3_0.conda + sha256: 455479216cb20d5f68a074a50638763986b34da6f6495c72017585324a576f6b + md5: d69e4662c2cd040907196f0209015311 depends: - cairo >=1.18.4,<2.0a0 - freetype @@ -14495,8 +14704,8 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.88.2,<3.0a0 - - libharfbuzz 14.2.1 h3a99ef3_1 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz 14.3.0 h3a99ef3_0 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 @@ -14505,9 +14714,9 @@ packages: purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 2050496 - timestamp: 1782800511879 + - libharfbuzz >=14.3.0 + size: 2145960 + timestamp: 1785769971132 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.13.0-default_ha95e27d_1000.conda sha256: 88888d99e81c93e7331f2eb0fec08b3c4a47a1bfa1c88b3e641f6568569b6261 md5: 974183f6420938051e2f3208922d057f @@ -14524,9 +14733,9 @@ packages: - libhwloc >=2.13.0,<2.13.1.0a0 size: 2453519 timestamp: 1770953713701 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h0626a34_0.conda - sha256: cff38f9a1df7bc3e5ac7856bc2e5c879151b54c07b55722ec0da1af49d869721 - md5: 61b4e7ef4624c692a3ebd07100795303 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwy-1.4.0-h9b45113_0.conda + sha256: 6583ca6181e2c70367a62951fb7e82fd63048ab667af3c254ca3ba35a8ea2a0c + md5: 321d06ae401d0f7face5326d78f84fc8 depends: - libgcc >=14 - libstdcxx >=14 @@ -14535,8 +14744,8 @@ packages: run_exports: weak: - libhwy >=1.4.0,<1.5.0a0 - size: 945401 - timestamp: 1776989517303 + size: 947179 + timestamp: 1784325595902 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-h90929bb_2.conda sha256: 1473451cd282b48d24515795a595801c9b65b567fe399d7e12d50b2d6cdb04d9 md5: 5a86bf847b9b926f3a4f203339748d78 @@ -14563,9 +14772,9 @@ packages: - libidn2 >=2,<3.0a0 size: 147165 timestamp: 1760387531719 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.1.4.1-he30d5cf_0.conda - sha256: e97ec2af5f09f8f6ea8ecd550055c95ae80fae22015fcfadaa94eafe025c9ccc - md5: a85ba48648f6868016f2741fd9170250 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.2.0-he30d5cf_1.conda + sha256: c5626ea672be2e59784f9be20dc8ceb7961b8ab0053651ded2dffec64e4b8245 + md5: 8730e25aa7eab80ca86dfb9a6bedf1ba depends: - libgcc >=14 constrains: @@ -14574,9 +14783,9 @@ packages: purls: [] run_exports: weak: - - libjpeg-turbo >=3.1.4.1,<4.0a0 - size: 693143 - timestamp: 1775962625956 + - libjpeg-turbo >=3.2.0,<4.0a0 + size: 716519 + timestamp: 1785896318334 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjxl-0.11.2-hbae46ee_1.conda sha256: 237bbfa18c4f245a24000c12924d61a9e54f7e6f689f405c0dc8e188a40de890 md5: 532faebf82c7d2c10539518347cff460 @@ -14594,42 +14803,42 @@ packages: - libjxl >=0.11,<1.0a0 size: 1489188 timestamp: 1777065125935 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-8_h88aeb00_openblas.conda - build_number: 8 - sha256: d269a684afa0b2fdb44d6b60167f854f30410cdb5ee49a7275c026f6b10c8d05 - md5: 3af3f2aa755abc5e91351114ae214f55 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.11.0-9_h88aeb00_openblas.conda + build_number: 9 + sha256: 562077bf38f962f6b80ec4e021bd2328f603ce0b112d3045b3f3b37f1a110f73 + md5: c560d88ddee90ba4120ac63eda69fbee depends: - - libblas 3.11.0 8_haddc8a3_openblas + - libblas 3.11.0 9_haddc8a3_openblas constrains: - - libcblas 3.11.0 8*_openblas - - liblapacke 3.11.0 8*_openblas - - blas 2.308 openblas + - blas 2.309 openblas + - libcblas 3.11.0 9*_openblas + - liblapacke 3.11.0 9*_openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - liblapack >=3.11.0,<3.12.0a0 - size: 18828 - timestamp: 1779859055749 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-8_hb558247_openblas.conda - build_number: 8 - sha256: 6df81f56c233180d4912c5df7d82efb382d4472c8e70f30acf430bc05f296221 - md5: 40b47c343582961fa1e3e210a7000a81 - depends: - - libblas 3.11.0 8_haddc8a3_openblas - - libcblas 3.11.0 8_hd72aa62_openblas - - liblapack 3.11.0 8_h88aeb00_openblas + size: 18007 + timestamp: 1786058945578 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.11.0-9_hb558247_openblas.conda + build_number: 9 + sha256: 72f8eed1fc34063d913f3bc779f149a2db1ef1d5d384da6e93a2d95891a56f4d + md5: 3c0461b58b4151e712e7d279cd80ff6c + depends: + - libblas 3.11.0 9_haddc8a3_openblas + - libcblas 3.11.0 9_hd72aa62_openblas + - liblapack 3.11.0 9_h88aeb00_openblas constrains: - - blas 2.308 openblas + - blas 2.309 openblas license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - liblapacke >=3.11.0,<3.12.0a0 - size: 18853 - timestamp: 1779859062300 + size: 18012 + timestamp: 1786058950585 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm21-21.1.8-hfd2ba90_0.conda sha256: 5af18365698a9093a81490de16c97a0af5318e20086b74998718f1e5d7566e74 md5: de59c5148c2a8347c02e437e3ed242a0 @@ -14679,9 +14888,9 @@ packages: - libltdl >=2.4.3a,<2.5.0a0 size: 41874 timestamp: 1740593981564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - sha256: d61962b9cd54c3554361550203c64d5b65b71e3058a285b66e4b04b9769f0a5c - md5: 76298a9e6d71ee6e832a8d0d7373b261 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_1.conda + sha256: f760669fd1cea27f689f411c0d5488e26ce50e382c9b63e4ad348f959850124a + md5: e0e6411a60d00186eec7c73f4118ab67 depends: - libgcc >=14 constrains: @@ -14691,35 +14900,34 @@ packages: run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 126102 - timestamp: 1775828008518 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_0.conda - sha256: 584cbcebe2f8c4c3e81eb46e3ed085bc49f709a9aeb92847ac20e1aa25c4b7b6 - md5: 349d74fc98742dd532de0ae6368fd19d + size: 125578 + timestamp: 1786348561649 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.8.3-he30d5cf_1.conda + sha256: f4e81e49d092f95e68e25c7dcca6643c7cfa23c9984b5d39a7e749c3426103e2 + md5: ab7c85535f5924315a7528efeb2011a0 depends: - libgcc >=14 - - liblzma 5.8.3 he30d5cf_0 + - liblzma 5.8.3 he30d5cf_1 license: 0BSD purls: [] run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 493047 - timestamp: 1775828222341 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.5-h3543b8c_0.conda - sha256: b19b6245c63740673f0370b3675825b68059260a35104764df9a7d527d98fb20 - md5: 2e00850bc3547129575065535b980cd8 + size: 491291 + timestamp: 1786348569607 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmicrohttpd-1.0.10-h3543b8c_0.conda + sha256: aab9e39040c6f58bc98999fa4e6670a67ad0c145c435ed36b5b80c94a3eed1e0 + md5: a0431b7b8a7d06d1d35ac54ae170f4d0 depends: - libgcc >=14 - gnutls >=3.8.13,<3.9.0a0 license: LGPL-2.0-or-later - license_family: LGPL purls: [] run_exports: weak: - - libmicrohttpd >=1.0.5,<1.1.0a0 - size: 296558 - timestamp: 1779091126550 + - libmicrohttpd >=1.0.10,<1.1.0a0 + size: 312407 + timestamp: 1786366486118 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmujoco-3.6.0-h2b9416c_0.conda sha256: cc40468101de8ebaf1114319f3474ba7224af354e1a226b07e82e954dc0d7c0b md5: 62ddf42e634742896e55db13972c587a @@ -14812,9 +15020,9 @@ packages: run_exports: {} size: 39449 timestamp: 1609781865660 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_3.conda - sha256: 05bfb59a13fb47176f923715580c9c3c80ee1088fb23c6344d215a834066e286 - md5: 8a7f1c9ecae8c8b8b05d7b90b3f160bf +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnuma-2.0.18-he30d5cf_4.conda + sha256: 53d09da65f580ec283cfa7ec0dfb3ae93000d69726b87b781da0d05ed55f7292 + md5: 2405fc1bf299396f0bd6716147ab4d57 depends: - libgcc >=14 license: LGPL-2.1-only @@ -14822,8 +15030,8 @@ packages: run_exports: weak: - libnuma >=2.0.18,<3.0a0 - size: 47706 - timestamp: 1772781596087 + size: 48599 + timestamp: 1786135343590 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h86ecc28_1.conda sha256: 2c1b7c59badc2fd6c19b6926eabfce906c996068d38c2972bd1cfbe943c07420 md5: 319df383ae401c40970ee4e9bc836c7a @@ -14837,23 +15045,23 @@ packages: - libogg >=1.3.5,<1.4.0a0 size: 220653 timestamp: 1745826021156 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.33-pthreads_h9d3fd7e_0.conda - sha256: b018ecfb05e75a8eea3f21f6b5c5c2a54b5178bdcf19e2e2df2735740214a8c8 - md5: 58a66cd95e9692f08abe89f55a6f3f12 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.34-pthreads_h9d3fd7e_0.conda + sha256: 0905b8acaff83558e5007351b2de329ce212ef5acbd595fcc22bb7fa1592f277 + md5: c37ba01d9ab7bfaf5f5dddc5d8807454 depends: - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 constrains: - - openblas >=0.3.33,<0.3.34.0a0 + - openblas >=0.3.34,<0.3.35.0a0 license: BSD-3-Clause license_family: BSD purls: [] run_exports: weak: - - libopenblas >=0.3.33,<1.0a0 - size: 5121336 - timestamp: 1776993423004 + - libopenblas >=0.3.34,<1.0a0 + size: 5332045 + timestamp: 1784287139395 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopencv-4.12.0-qt6_py312h051a780_612.conda sha256: 5c663900109033b4f39da6adbf0bd65054eeedff28079890644525952a71388f md5: bd63fd7ffdf84b4a23c05032618ebe9d @@ -15094,9 +15302,9 @@ packages: - libopus >=1.6.1,<2.0a0 size: 383586 timestamp: 1768497303687 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_0.conda - sha256: 5d26d751b7cc4b66e28ed1ae75900956600aaa5c5d874d5a8cf106d3aff834d3 - md5: 462239e256bc180c9c45dd049ba797ee +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.19-he30d5cf_1.conda + sha256: 2161dacebeb075187f20ba35529297e7d4f6d456a89c4474062782436dbe3735 + md5: b1cb4a94819281ecb0391438e0be505c depends: - libgcc >=14 license: MIT @@ -15105,8 +15313,8 @@ packages: run_exports: weak: - libpciaccess >=0.19,<0.20.0a0 - size: 30294 - timestamp: 1773533057559 + size: 31035 + timestamp: 1785971703914 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.58-h1abf092_0.conda sha256: 483eaa53da40a6a3e558709d9f7b1ca388735364ae21a1ba58cf942514649c92 md5: f51503ac45a4888bce71af9027a2ecc9 @@ -15153,57 +15361,57 @@ packages: - libprotobuf >=6.31.1,<6.31.2.0a0 size: 3897821 timestamp: 1780003417336 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpsl-0.22.0-h504d594_0.conda - sha256: 8871c428d0c97a75806dec9aee508fe93ce137a3a081866d9c752e5c0f83b091 - md5: 93b1727d5d61b9d70163dfcf5d9aafb9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpsl-0.23.0-h36cc0f4_0.conda + sha256: 34233565780f4f928dc4842d2220c639ac0ba2d5e04972da1529d743f62905ca + md5: a9121b5a64393a82e01d48b34b57d1e3 depends: - - icu >=78.3,<79.0a0 - - libgcc >=14 - libstdcxx >=14 + - libgcc >=14 + - icu >=78.3,<79.0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libpsl >=0.22.0,<0.23.0a0 - size: 84305 - timestamp: 1782394815323 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.10.5-hd2f8911_1.conda - sha256: b287b67ba86d625bdaae919bac0a62ca6f5bc61509f034003df3c6b40f584a92 - md5: bf7fa2b700ba2c7b682aec5db14043c7 + - libpsl >=0.23.0,<0.24.0a0 + size: 74709 + timestamp: 1785426725037 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraqm-0.11.0-hd2f8911_0.conda + sha256: 03dbcf07e62d7fcb8b810636df1cc88d2c6d6f3cfe72a9b25bca9512708f9091 + md5: b193aa5a8bd7595c537c6e1916b7298d depends: - libgcc >=14 - __glibc >=2.28,<3.0.a0 - - fribidi >=1.0.16,<2.0a0 - libharfbuzz >=14.2.1 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 + - fribidi >=1.0.16,<2.0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libraqm >=0.10.5,<0.11.0a0 - size: 29528 - timestamp: 1782807084739 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.1-h6c2e892_0.conda - sha256: 8b8da9dbd2290ba02185dd6dd5a83a514ef3c0f4f65feb395bd7a41b67e5067a - md5: 8a0b1ef545682ef7bdb938bfde168f56 + - libraqm >=0.11.0,<0.12.0a0 + size: 34049 + timestamp: 1784850270528 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.22.2-h6c2e892_0.conda + sha256: 19f84fd39b320bb11862cc3a819d09115e596121aea8c150acf087aa3b14a474 + md5: ef9d2ba677c4332cb66ef64b80fd8838 depends: - libgcc >=14 - libstdcxx >=14 - _openmp_mutex >=4.5 + - libjpeg-turbo >=3.2.0,<4.0a0 - libzlib >=1.3.2,<2.0a0 - - lcms2 >=2.18,<3.0a0 - jasper >=4.2.9,<5.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 + - lcms2 >=2.19.1,<3.0a0 license: LGPL-2.1-only purls: [] run_exports: weak: - - libraw >=0.22.1,<0.23.0a0 - size: 803298 - timestamp: 1775541734284 + - libraw >=0.22.2,<0.23.0a0 + size: 794226 + timestamp: 1784220859836 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.62.3-hf685517_0.conda sha256: c95ac70755863d8522c1115b54afca86148ea25366b616aa84c993c2ca54b9ce md5: 38209cc04b3e3e5624c534bc703e6939 @@ -15226,33 +15434,33 @@ packages: - librsvg >=2.62.3,<3.0a0 size: 3052373 timestamp: 1780456154830 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.3.0-hedb4206_19.conda - sha256: d5bfc6472141488dccf7addade6e85574497a0cb3fe8ee10efb308eeffcea874 - md5: dde53e47246d01641cc9093aa9a66681 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-14.4.0-h5c092e3_0.conda + sha256: 694f47dc4b3629b575c6072bbb67670717e348c87d050a2b25e0d94f849e4ef0 + md5: 2b160c9e734588b94453fb629a9b33af depends: - - libgcc >=14.3.0 - - libstdcxx >=14.3.0 + - libgcc >=14.4.0 + - libstdcxx >=14.4.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: weak: - - libsanitizer 14.3.0 - size: 7199495 - timestamp: 1778268550110 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - sha256: 8115604f113fe2b7be95b2d22183a4dda5779c1cc6db4b826af800581498b4b3 - md5: 95210a1edbd7fc6e12afc9f8276f450a + - libsanitizer 14.4.0 + size: 7251957 + timestamp: 1785268414455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-16.1.0-h2510bd8_1.conda + sha256: 3dfccbcd3bf34923df7482df41bcdbe599675f2de6f03a554dbc238476693854 + md5: ae3d9771453f2ec660dd79e5728129b3 depends: - - libgcc >=15.2.0 - - libstdcxx >=15.2.0 + - libgcc >=16.1.0 + - libstdcxx >=16.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: weak: - - libsanitizer 15.2.0 - size: 7067965 - timestamp: 1778268796086 + - libsanitizer 16.1.0 + size: 8123895 + timestamp: 1785374560390 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsdformat14-14.8.0-py312h39f64fe_2.conda sha256: 0ac75f115584bb5b7783c1c94b46966251095f03467c5687b38aaaf60d8db7dc md5: b74a8a2efd31f3426aaff959759f6320 @@ -15306,20 +15514,19 @@ packages: - libsodium >=1.0.22,<1.0.23.0a0 size: 283426 timestamp: 1779163468728 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.3-h10b116e_0.conda - sha256: a835400072fb638fb582ee9fc2271169da84cbcad664d28b852610201116027e - md5: 2cd50877f494b34383af22560ced8b04 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.4-h022381a_0.conda + sha256: da46b52f6815e9771f4e21e3332c423c88644e91ac96b0534e85158adc88a8b4 + md5: 99898219505ff142be5734dc6fa0d900 depends: - - icu >=78.3,<79.0a0 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 968420 - timestamp: 1782519054102 + - libsqlite >=3.53.4,<4.0a0 + size: 963888 + timestamp: 1785016056926 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-h18c354c_0.conda sha256: 1e289bcce4ee6a5817a19c66e296f3c644dcfa6e562e5c1cba807270798814e7 md5: eecc495bcfdd9da8058969656f916cc2 @@ -15335,32 +15542,32 @@ packages: - libssh2 >=1.11.1,<2.0a0 size: 311396 timestamp: 1745609845915 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - sha256: 1dadc45e599f510dd5f97141dddcdbb9844d9f1430c1f3a38075cf1c58f87b4e - md5: 543fbc8d71f2a0baf04cf88ce96cb8bb +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-16.1.0-hef695bb_1.conda + sha256: 81ef9a10a0e01ffc7e03d429ed048410153411b2d8bbf95c334bdf3dcf175ab0 + md5: 0bfd287b881e05351a01c7ebf7bf8f1b depends: - - libgcc 15.2.0 h8acb6b2_19 + - libgcc 16.1.0 h205dda4_1 constrains: - - libstdcxx-ng ==15.2.0=*_19 + - libstdcxx-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 5546559 - timestamp: 1778268777463 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.2.0-hdbbeba8_19.conda - sha256: 56b5ec297a988961486694f1c598889c3a697d77a0b42b8cea3faaa12e9bd360 - md5: c82ed61c3ec470c5ec624580e6ba16e4 + size: 6255794 + timestamp: 1785374543663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-16.1.0-hdbbeba8_1.conda + sha256: cb88eb500022e01f835209e771d455d2296e10a18a749f518c257dfcab7d46ba + md5: a728408241f9db99bad0d1642c908714 depends: - - libstdcxx 15.2.0 hef695bb_19 + - libstdcxx 16.1.0 hef695bb_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: strong: - libstdcxx - size: 27803 - timestamp: 1778268813278 + size: 28182 + timestamp: 1785374577436 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.13-hf9559e3_0.conda sha256: b38e9777b3231dfda62f2d127aac8091d990b5c45814a2b9d2e382f42f73a895 md5: ffd5411606e65767354fe153371cc63a @@ -15372,9 +15579,9 @@ packages: run_exports: {} size: 516600 timestamp: 1773797150163 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_0.conda - sha256: 4a9ac9a3bdb2db96162c43370fb365734db0ece3c1b3d4d633b4d7c5b19c0980 - md5: ef27cf004a6822a831f86f054eacf95d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtasn1-4.21.0-he30d5cf_1.conda + sha256: 6f09f513c743bf8bad33a983a594b67b94395e213231c32fa845f6595a4b74d4 + md5: 803e394bec7d0b35547e7c72eca1ff15 depends: - libgcc >=14 license: LGPL-2.1-or-later @@ -15382,8 +15589,8 @@ packages: run_exports: weak: - libtasn1 >=4.21.0,<5.0a0 - size: 126001 - timestamp: 1768299601532 + size: 126541 + timestamp: 1785905745587 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda sha256: b5a46b5f2cf1ab6734dcab65f370c6b95f1d62ed27d9d30fe06a828bcb9b239b md5: 5786518d6e1eff2225fe56c0e5d573d8 @@ -15401,26 +15608,26 @@ packages: - libtheora >=1.1.1,<1.2.0a0 size: 335103 timestamp: 1719667812650 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.1-hdb009f0_1.conda - sha256: 7ff79470db39e803e21b8185bc8f19c460666d5557b1378d1b1e857d929c6b39 - md5: 8c6fd84f9c87ac00636007c6131e457d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.2-hdb009f0_0.conda + sha256: ef1006578ef7e3f7c420e89d87846213ceb3fdcef2626af2558cbede53d36839 + md5: 20166e2297c1cac346b544d5f6197440 depends: - - lerc >=4.0.0,<5.0a0 + - lerc >=4.1.0,<5.0a0 - libdeflate >=1.25,<1.26.0a0 - libgcc >=14 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - liblzma >=5.8.3,<6.0a0 - libstdcxx >=14 - libwebp-base >=1.6.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] run_exports: weak: - - libtiff >=4.7.1,<4.8.0a0 - size: 488407 - timestamp: 1762022048105 + - libtiff >=4.7.2,<4.8.0a0 + size: 508982 + timestamp: 1783084925965 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtool-2.5.4-h5ad3122_0.conda sha256: 3ad0e71e0997ef6a245ed1906ec2e86af7549a108c35d25110e66a3a4dece20e md5: 0651f29a5ea482c71f8a74932f01e02f @@ -15523,9 +15730,9 @@ packages: - libuuid >=2.42.2,<3.0a0 size: 43248 timestamp: 1781625528371 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_0.conda - sha256: 3e2ead35f47d01364031f323f1be984018c8f19a3a264f952ddcd043685a1c86 - md5: ac7bcbd2c77691cd6d1ede8c029e8c8a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.52.1-h80f16a2_1.conda + sha256: 52f4bc6e340bde53bfe38e45f6cb1080a2d5f8891da9a647087f7cc6a6edfc22 + md5: 8e2136432f02841b9d8b848045f66d7d depends: - libgcc >=14 license: MIT @@ -15534,8 +15741,8 @@ packages: run_exports: weak: - libuv >=1.52.1,<2.0a0 - size: 456627 - timestamp: 1779396031450 + size: 457209 + timestamp: 1785914582944 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h7ac5ae9_2.conda sha256: 066708ca7179a1c6e5639d015de7ed6e432b93ad50525843db67d57eb1ba1faf md5: 9d099329070afe52d797462ca7bf35f3 @@ -15566,27 +15773,27 @@ packages: - libvpx >=1.15.2,<1.16.0a0 size: 1296382 timestamp: 1762012332100 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.341.0-h8b8848b_0.conda - sha256: 92a92589f4f787201bc5091990001f61515fa794fa4f0fb15f0ca50f3cc330cc - md5: 06bb91a87fb97ea09398d2e121e00c39 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvulkan-loader-1.4.357.0-h8b8848b_0.conda + sha256: 0c3d264d8dae9f6bc57a9143934d1914f60b206fe6b110ccc3cf2fd2a5b90508 + md5: 34b3f91180116e005605e174b626e2ff depends: - libstdcxx >=14 - libgcc >=14 + - xorg-libx11 >=1.8.13,<2.0a0 - xorg-libxrandr >=1.5.5,<2.0a0 - - xorg-libx11 >=1.8.12,<2.0a0 constrains: - - libvulkan-headers 1.4.341.0.* + - libvulkan-headers 1.4.357.0.* license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - libvulkan-loader >=1.4.341.0,<2.0a0 - size: 217655 - timestamp: 1770077141862 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_0.conda - sha256: b03700a1f741554e8e5712f9b06dd67e76f5301292958cd3cb1ac8c6fdd9ed25 - md5: 24e92d0942c799db387f5c9d7b81f1af + - libvulkan-loader >=1.4.357.0,<2.0a0 + size: 227452 + timestamp: 1785311395466 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.6.0-ha2e29f5_1.conda + sha256: 4c64e6843d64876d054a28ecbab70abdf145da3c2cbdaa4a43db26cdf0fd760b + md5: 548943c39851543734ce0d20eeb469b0 depends: - libgcc >=14 constrains: @@ -15597,8 +15804,8 @@ packages: run_exports: weak: - libwebp-base >=1.6.0,<2.0a0 - size: 359496 - timestamp: 1752160685488 + size: 357551 + timestamp: 1785956962809 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b md5: cd14ee5cca2464a425b1dbfc24d90db2 @@ -15615,18 +15822,18 @@ packages: - libxcb >=1.17.0,<2.0a0 size: 397493 timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.38-h80f16a2_0.conda + sha256: d3514900e2121972e435f7803763c1843dad6709e48aa02a2b47c4d481f83be7 + md5: b1a5cb7ff2d8f5911ba1fb6897176098 depends: - - libgcc-ng >=12 + - libgcc >=14 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libxcrypt >=4.4.36 - size: 114269 - timestamp: 1702724369203 + - libxcrypt >=4.4.38 + size: 133882 + timestamp: 1785887114864 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.13.2-h3c6a4c8_0.conda sha256: 8f44670a714a12589bc82ea179e46ba4a19c4458d5cee765ddd4d5224eccd912 md5: d6fc9ac66ea61eb662747959d0a68c57 @@ -15646,6 +15853,22 @@ packages: - libxkbcommon >=1.13.2,<2.0a0 size: 875994 timestamp: 1780213408784 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h064b767_0.conda + sha256: 96e9bd642c013ce3407c23b3819204ea8a591567d62b49baa4bafb2f1487326c + md5: 876c5457664559cdc67c4ac71e2945cb + depends: + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - icu <0.0a0 + - libxml2 2.15.3 + license: MIT + license_family: MIT + run_exports: {} + size: 601420 + timestamp: 1776376789358 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-16-2.15.3-h79dcc73_0.conda sha256: ad048a9ca1bf2cdfedb2b0c231050da416c44ee1436a3d1a83b51d2e2deaa842 md5: 68866231cfe8789e780347f2482df96d @@ -15682,6 +15905,25 @@ packages: - libxml2-16 >=2.15.3 size: 48101 timestamp: 1776376766341 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.15.3-h9ba8346_0.conda + sha256: 74aa3c62e0ec4491343b95ce4ca8812ad2f9bb015369e29cb3b4b9b4302d8cb0 + md5: 15078261d03e3c3c83a42df605f7f34a + depends: + - libgcc >=14 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 h064b767_0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - icu <0.0a0 + license: MIT + license_family: MIT + run_exports: + weak: + - libxml2 + - libxml2-16 >=2.15.3 + size: 48311 + timestamp: 1776376798296 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.43-h6700d25_1.conda sha256: 8a816572a4650149d28c0b8b44e294380de18787735d00c7cf5fad91dba8e286 md5: 0f31501ccd51a40f0a91381080ae7368 @@ -15729,19 +15971,35 @@ packages: - libzip >=1.11.2,<2.0a0 size: 117603 timestamp: 1730442215935 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - sha256: eb111e32e5a7313a5bf799c7fb2419051fa2fe7eff74769fac8d5a448b309f7f - md5: 502006882cf5461adced436e410046d1 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_3.conda + sha256: 76efa6cc9d7e6f5ee3bbca0939f64054af2bdfb3c3632531f8e633cf6c2ea41e + md5: bd534c2fbe56d8c2ea3b2d8f5e12bca8 constrains: - - zlib 1.3.2 *_2 + - zlib 1.3.2 *_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 69833 - timestamp: 1774072605429 + size: 70108 + timestamp: 1785276540870 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-22.1.8-he40846f_0.conda + sha256: 30bbb0ce4ae7cebbeb9801af5bbd2a29f8627237a38d08fc5d8d800e79c817aa + md5: 2107bb80c5587c116702ce215daddd73 + constrains: + - openmp 22.1.8|22.1.8.* + - intel-openmp <0.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + strong: + - llvm-openmp >=22.1.8 + - _openmp_mutex >=4.5 + - _openmp_mutex * *_llvm + size: 5888931 + timestamp: 1781736538044 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lodepng-20220109-hdd96247_0.tar.bz2 sha256: af98d46a313c5af26cb88923bf44bdd3b25eb24ae93f125633e6cffcc7f4a03b md5: 71a86b259b778dbad7f32c1b0edc3e67 @@ -15831,17 +16089,17 @@ packages: - lzo >=2.10,<3.0a0 size: 190187 timestamp: 1753889356434 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-h2a6d0cb_2.conda - sha256: d243aea768e6fa360b7eda598340f43d2a41c9fc169d9f97f505410be68815f8 - md5: 5983ffb12d09efc45c4a3b74cd890137 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/make-4.4.1-he30d5cf_3.conda + sha256: b008fb8ba5c93478dacf36d60eed1b2de341d69773c3f73621d2a9e56f834d9d + md5: 9d82bf3d9bf57d56906354e2ad58204a depends: - - libgcc >=13 + - libgcc >=14 license: GPL-3.0-or-later license_family: GPL purls: [] run_exports: {} - size: 528318 - timestamp: 1727801707353 + size: 531874 + timestamp: 1785879822550 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.3-py312hd077ced_1.conda sha256: 5919bf53e9f74ee1c6ce35ce13a7cd92741d45385c2d0b3eae48b01c0f11f41a md5: 1fecdd103b37427ba6041b9b03d657ea @@ -15858,11 +16116,11 @@ packages: run_exports: {} size: 26305 timestamp: 1772446326927 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.0-py312h8025657_1.conda - sha256: 8d19f9d3c7df6d76da77a39c774320b1f15f42b69f76d540fae6cfd82c266487 - md5: 5c83f56631a764edd9e3f534e10ef098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.11.1-py312h2f630db_2.conda + sha256: a278ce5aef251103e70ce0c3496b030c9edcba6a4b2d3c29f83132ebb711425a + md5: a6efe1acc4ba8b4e67cc80dca5d6fcbd depends: - - matplotlib-base >=3.11.0,<3.11.1.0a0 + - matplotlib-base >=3.11.1,<3.11.2.0a0 - pyside6 >=6.7.2 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -15871,27 +16129,27 @@ packages: license_family: PSF purls: [] run_exports: {} - size: 14868 - timestamp: 1782829508519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.0-py312h7ee55d7_1.conda - sha256: 98b98c5022a66c29805278a56380107b55bb44c9b358d35d93f0bfe0f8069efb - md5: bd250e5754cb3ad603ab680ffd28b7a4 + size: 14916 + timestamp: 1785211061472 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.11.1-py312h0683553_2.conda + sha256: 2a6447ea4551d94a09a0cf6665c2b7402f29ebc2a1df13e6bbfe7be7fc33b596 + md5: 381100cdfe0a7b585d7cc6477b7461f8 depends: - contourpy >=1.0.1 - cycler >=0.10 - - fonttools >=4.22.0 + - fonttools >=4.28.2 - freetype - kiwisolver >=1.3.1 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libraqm >=0.10.5,<0.11.0a0 + - libraqm >=0.11.0,<0.12.0a0 - libstdcxx >=14 - - numpy >=1.23 + - numpy >=1.25 - numpy >=1.25,<3 - packaging >=20.0 - - pillow >=8 - - pyparsing >=2.3.1 + - pillow >=9 + - pyparsing >=3 - python >=3.12,<3.13.0a0 - python-dateutil >=2.7 - python_abi 3.12.* *_cp312 @@ -15902,78 +16160,36 @@ packages: purls: - pkg:pypi/matplotlib?source=hash-mapping run_exports: {} - size: 8975302 - timestamp: 1782829494907 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.14.1-py310he8189be_0.conda - noarch: python - sha256: 54435e557d2160d0307f69b4ac7926b855446e97cc721d65903da760be9dcb03 - md5: 7bb9ef1f1d810d006c20c9977676be96 - depends: - - python - - tomli >=1.1.0 - - libgcc >=14 - - openssl >=3.5.7,<4.0a0 - constrains: - - __glibc >=2.17 - license: MIT - license_family: MIT - run_exports: {} - size: 9724016 - timestamp: 1781871507536 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mesalib-26.0.3-h455aa48_0.conda - sha256: e6cf93625ef33463cb08d0e604d8d0be661751d014cf6d5e0e75733b4b992b39 - md5: 933a4f20f282b1a9b67dce5852fad614 + size: 8779090 + timestamp: 1785211047525 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h2b27223_0.conda + sha256: ba1db90daae7e13aa3974a298ad4f215acb1202505e0b945e76178cb5af6d76e + md5: 7bcf6b79db2a04d77aea44cfb957377e depends: - libgcc >=14 - libstdcxx >=14 - - zstd >=1.5.7,<1.6.0a0 - - xorg-libxrandr >=1.5.5,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - libexpat >=2.7.4,<3.0a0 - - xorg-libx11 >=1.8.13,<2.0a0 - - spirv-tools >=2026,<2027.0a0 - - libxcb >=1.17.0,<2.0a0 - - xorg-libxshmfence >=1.3.3,<2.0a0 - - libdrm >=2.4.125,<2.5.0a0 - - libllvm22 >=22.1.1,<22.2.0a0 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - mesalib >=26.0.3,<26.1.0a0 - size: 2876962 - timestamp: 1773867973610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 - md5: cdf140c7690ab0132106d3bc48bce47d - depends: - - libgcc >=13 - - libstdcxx >=13 license: LGPL-2.1-only license_family: LGPL purls: [] run_exports: weak: - mpg123 >=1.32.9,<1.33.0a0 - size: 558708 - timestamp: 1730581372400 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312hf18b547_1.conda - sha256: dfd1fe17d91863299d7e8673dc11082f3cad5501bbc1c0050765321b6a06f1fd - md5: 4ebf3dfcf27d10f06b247b71fb0aafdf + size: 572337 + timestamp: 1786190150397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.2.1-py312h1683e8e_1.conda + sha256: 2d760955dd3ef02428291efc1590067a7d045cf716bd2cdd30dc6924d1ca480e + md5: 0909f1715c44d390a8ba18be4e5a0fd1 depends: - python - - python 3.12.* *_cpython - libstdcxx >=14 - libgcc >=14 - python_abi 3.12.* *_cp312 license: Apache-2.0 - license_family: APACHE purls: - pkg:pypi/msgpack?source=hash-mapping run_exports: {} - size: 113665 - timestamp: 1782460796476 + size: 109581 + timestamp: 1786217402304 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mujoco-3.6.0-h6fc1a30_0.conda sha256: 98a69970ef80d88e1ac932444f2c2ea7c3aed8de723cc93ab44209b274a7115c md5: ee31f32f4943c13983d548e52d9bcdf2 @@ -16091,9 +16307,9 @@ packages: run_exports: {} size: 25905 timestamp: 1728332554740 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - sha256: 369db85c5cd8d99dde364ce70725d76511d9c8199e5b820c740414091bf5bcca - md5: b2a43456aa56fe80c2477a5094899eff +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-h2b6f883_1.conda + sha256: d69a04914139627f0a6bfd19412d6c7f1e37edc896af84a6011e07e8bc1e69fa + md5: c3b4349171ca987ff33a1de61f7b3f96 depends: - libgcc >=14 license: X11 AND BSD-3-Clause @@ -16101,8 +16317,8 @@ packages: run_exports: weak: - ncurses >=6.6,<7.0a0 - size: 960036 - timestamp: 1777422174534 + size: 955422 + timestamp: 1786355019431 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nettle-3.10.1-hfdb7b1a_0.conda sha256: cd3396281bc48ab820059f06509788330ed8747ff60566418bcf97b9700d98b7 md5: eebea4db7c6a212a4f812386ebd574f8 @@ -16128,31 +16344,30 @@ packages: run_exports: {} size: 182666 timestamp: 1763688214250 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_1.conda - sha256: 03b4ffbcd3c20276f6fd9743e2d7fc8c4bed2006ac4481d90ee8f2a5d74acd5d - md5: 6cbb2594cea5f2cc2907170655852ba9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.12.0-h7ac5ae9_2.conda + sha256: e441cbcffb6a3b0c6c9071a14a2cd08bd175d95dde16c5413e8a678f875baab0 + md5: d246583ab3e0b8d3968fc5abf7592e17 constrains: - nlohmann_json-abi ==3.12.0 license: MIT license_family: MIT purls: [] run_exports: {} - size: 136931 - timestamp: 1758194316834 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.38-h3ad9384_0.conda - sha256: 78a06e89285fef242e272998b292c1e621e3ee3dd4fba62ec014e503c7ec118f - md5: 6dd4f07147774bf720075a210f8026b9 + size: 137086 + timestamp: 1785920446447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nspr-4.40-h3ad9384_0.conda + sha256: bff5602852f1662852e809d5d1cd0a79055bbcfa37906911e2574ca40681b10e + md5: 2f4feffaa2d3ef0ffd9daa5f42142b66 depends: - libgcc >=14 - libstdcxx >=14 license: MPL-2.0 - license_family: MOZILLA purls: [] run_exports: weak: - - nspr >=4.38,<5.0a0 - size: 235140 - timestamp: 1762350120355 + - nspr >=4.40,<5.0a0 + size: 236892 + timestamp: 1786154735518 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nss-3.118-h544fa81_0.conda sha256: 48942696889367ffd448f8dccfc080fb7e130b9938a4a3b6b20ef8e6af856463 md5: 4540f9570d12db2150f42ba036154552 @@ -16207,13 +16422,13 @@ packages: - octomap >=1.10.0,<1.11.0a0 size: 239860 timestamp: 1728635298509 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.26.0-py312hc28d7f2_0_cpu.conda - sha256: b203fbcd56af68ed2b5db9e0b45d0abbdde8533b573331f2bd93e9a13ffb87bf - md5: 83c781b6bc97cb905d2bc7f674088b0a +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/onnxruntime-1.28.0-py312hc28d7f2_0_cpu.conda + sha256: 064740c5466fe0c0935d22a269e8f287699b3443eb638ef8e3f681c5b807f6df + md5: ffaf735fccbf73e2f43abf7177f062be depends: - libgcc >=14 - libstdcxx >=14 - - numpy >=1.23,<3 + - numpy >=1.25,<3 - packaging - protobuf - python >=3.12,<3.13.0a0 @@ -16224,8 +16439,8 @@ packages: purls: - pkg:pypi/onnxruntime?source=hash-mapping run_exports: {} - size: 14039987 - timestamp: 1778967442914 + size: 14903310 + timestamp: 1786188166294 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opencv-4.12.0-qt6_py312h750a492_612.conda sha256: 64f6a8fddde356db27d696c155af4ec7ee483953bb20b01b08a4e8feae39995b md5: 1db3c289b643baee272c87af90dc8d75 @@ -16240,24 +16455,23 @@ packages: run_exports: {} size: 27887 timestamp: 1766496259667 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.13-h95ec230_1.conda - sha256: fb008a0d6554d3d84bf78aaf66a167b833b9af6147515b4f4bbfd8b6983bc66f - md5: cecda49f5448d9b737f4adc25514777d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.4.14-h4fc0a29_0.conda + sha256: 2652e733d6355dc55e92bb6c244992e0859cd2650ec94019fa6566c479c25b9a + md5: f5624f2ee38f10ff2c3de824504544d2 depends: - libstdcxx >=14 - libgcc >=14 - - openjph >=0.30.1,<0.31.0a0 + - libzlib >=1.3.2,<2.0a0 + - openjph >=0.31.0,<0.32.0a0 - imath >=3.2.2,<3.2.3.0a0 - libdeflate >=1.25,<1.26.0a0 - - libzlib >=1.3.2,<2.0a0 license: BSD-3-Clause - license_family: BSD purls: [] run_exports: weak: - - openexr >=3.4.13,<3.5.0a0 - size: 1185348 - timestamp: 1782198403352 + - openexr >=3.4.14,<3.5.0a0 + size: 1187112 + timestamp: 1786369267385 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.6.0-h663e864_1.conda sha256: c90d20ddcf28537ea6c1bd1c26a7abcba6baf9d7cdec493daa04bf0a968d1264 md5: 0d86d4becd3cd1ce48011f71099211be @@ -16289,21 +16503,21 @@ packages: - openjpeg >=2.5.4,<3.0a0 size: 392636 timestamp: 1758489353577 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.30.1-h55827e0_0.conda - sha256: 12f6ac15e3bd4de872a28f096817c6c66bd9a058e7d684ee1e57aff118004d42 - md5: 6d8f94ef9f90c0b202d31043a9aab1a8 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjph-0.31.0-h55827e0_0.conda + sha256: 05a7eeb42e685d56eb0d36e88876436ebe733eb14e56789960e23b0426320c5e + md5: d653b492c59367efc8fd62caa54d081c depends: - - libstdcxx >=14 - libgcc >=14 - - libtiff >=4.7.1,<4.8.0a0 + - libstdcxx >=14 + - libtiff >=4.7.2,<4.8.0a0 license: BSD-2-Clause license_family: BSD purls: [] run_exports: weak: - - openjph >=0.30.1,<0.31.0a0 - size: 238874 - timestamp: 1782091147195 + - openjph >=0.31.0,<0.32.0a0 + size: 239896 + timestamp: 1785149857273 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.13-h2fb54aa_0.conda sha256: 08fab1d144a9790763f30bd44ac4a2f288703ad668d8c31d339ddea23e981147 md5: 67eea19865a3463f75ca0d3a1d096350 @@ -16321,9 +16535,9 @@ packages: - openldap >=2.6.13,<2.7.0a0 size: 911524 timestamp: 1775741371965 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda - sha256: da4a5df42614166b69c2f6d8602fc1425f7aaa699f77c3bafb5c7fe69b3d9fb7 - md5: fa6260b3e6eababf6ca85a7eb3336383 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_1.conda + sha256: c89e748e8a008e8ca6f25e102362f33319db0c98cc29d98ddada92842f636327 + md5: 1600dfde78c5adba306f8571af62a323 depends: - ca-certificates - libgcc >=14 @@ -16333,8 +16547,8 @@ packages: run_exports: weak: - openssl >=3.6.3,<4.0a0 - size: 3704664 - timestamp: 1781069675555 + size: 3719270 + timestamp: 1785913554920 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orocos-kdl-1.5.3-hc398517_1.conda sha256: 7b2d90bf1c8b9f19f5bbe5e3e32a6a76b71fc6fc77093984bed97989d5eac105 md5: e50880e5906e4c67c9ef89140b296d00 @@ -16351,9 +16565,9 @@ packages: - orocos-kdl >=1.5.3,<1.6.0a0 size: 376844 timestamp: 1778003961570 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.2-h376a255_0.conda - sha256: b531aecc01aabb9a1f24d3586d96d07ca15d934465c1342c6a5e095e08d930a2 - md5: 850c48e406ab29922a7fb8f61286abac +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/p11-kit-0.26.4-h376a255_0.conda + sha256: 66cc8975ad069a792216c34a597a9c968cbaa3a4b71caa28eed07e8bc494aba2 + md5: 3fae8a6424688918aec84fa8b4016eaf depends: - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 @@ -16363,32 +16577,32 @@ packages: purls: [] run_exports: weak: - - p11-kit >=0.26.2,<0.27.0a0 - size: 5180065 - timestamp: 1770420952184 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.56.4-h8547ced_1.conda - sha256: d209c8b0d53c441ee0bc0d8fce0fcae8e7e05755e51b13b6b9da02c7aa032f98 - md5: 3fc7cc25bba3381e77b753578058e3b0 + - p11-kit >=0.26.4,<0.27.0a0 + size: 5176638 + timestamp: 1783694224571 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.58.2-h8547ced_0.conda + sha256: 7337c11d536da3c920a7bc67fc4a5a927c3366cb08d95c66056319145a847535 + md5: de1fcba6c7fe5efc236b58e38516bd39 depends: - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.17.1,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=13.2.0 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.86.4,<3.0a0 - - libpng >=1.6.55,<1.7.0a0 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz >=14.3.0 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - pango >=1.56.4,<2.0a0 - size: 470441 - timestamp: 1774284032397 + - pango >=1.58.2,<2.0a0 + size: 482634 + timestamp: 1786110288624 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.15.1-h4720788_7.conda sha256: 2e53af4a50baeb08bbe031106f0dea7eeb9ad879200934a53069689c3af5ac23 md5: 705eaf861818c5b1d0e2bb8e2a38ea51 @@ -16485,11 +16699,10 @@ packages: run_exports: {} size: 1004533 timestamp: 1758208960718 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_1.conda - sha256: e6b0846a998f2263629cfeac7bca73565c35af13251969f45d385db537a514e4 - md5: 1587081d537bd4ae77d1c0635d465ba5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.46.4-h7ac5ae9_3.conda + sha256: ed718d35c744ceef33063b5686f27b4b8d30d4065485e24efafb248658ee83b5 + md5: c5f34596fc05afb9ccc2782c42bcfcc5 depends: - - libgcc >=14 - libstdcxx >=14 - libgcc >=14 license: MIT @@ -16498,20 +16711,18 @@ packages: run_exports: weak: - pixman >=0.46.4,<1.0a0 - size: 357913 - timestamp: 1754665583353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-hce167ba_1009.conda - sha256: 6468cbfaf1d3140be46dd315ec383d373dbbafd770ce2efe77c3f0cdbc4576c1 - md5: 05eda637f6465f7e8c5ab7e341341ea9 + size: 304657 + timestamp: 1786106625126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pkg-config-0.29.2-h36a561e_1011.conda + sha256: 91cf73940417d96fe2c0dc8b4681cdf0e877a12a6eab1cf2ecba1a72699de075 + md5: 635b6b5a581745fb3a4b237069c1a309 depends: - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 + - libgcc >=14 license: GPL-2.0-or-later - license_family: GPL purls: [] run_exports: {} - size: 54834 - timestamp: 1720806008171 + size: 331109 + timestamp: 1786352313756 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/popt-1.19-h90929bb_0.conda sha256: 3c746fb3573c51de7d3559c319c1a6758638585ae5263796b1ef18b132c5058d md5: dcc1369965fcf75e81de43d21eed7f85 @@ -16614,17 +16825,17 @@ packages: run_exports: {} size: 230283 timestamp: 1769678159757 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-he30d5cf_1003.conda + sha256: 6138ca8729e6af8658c7e184c38370bec9b0b7840272deff79a3d0c1090f07e4 + md5: 75ad6624c7f795b828227672ca4b5f0b depends: - - libgcc >=13 + - libgcc >=14 license: MIT license_family: MIT purls: [] run_exports: {} - size: 8342 - timestamp: 1726803319942 + size: 9235 + timestamp: 1786069420166 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.15-h6ef32b0_0.conda sha256: adc17205a87e064508d809fe5542b7cf49f9b9a458418f8448e2fc895fcd04f3 md5: 53e14f45d38558aa2b9a15b07416e472 @@ -16776,11 +16987,11 @@ packages: run_exports: {} size: 2384320 timestamp: 1776767392027 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_2.conda - sha256: 3bab82f2cee664896f4a55b3c3df1e3a6bd832f32f516c4b0507700e8c8180e6 - md5: 603f8d19151da837ec6f612c3e1bae59 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pynacl-1.6.2-py312h6ecc08e_3.conda + sha256: 6a7bdbb9ffdfa5ada23a5fdb4aab57b9d89468998ed768b7243a46149ab583d9 + md5: 249e157d88416595eb5bdb53ae1ba764 depends: - - cffi >=1.4.1 + - cffi >=2.0.0 - libgcc >=14 - libsodium >=1.0.22,<1.0.23.0a0 - python >=3.12,<3.13.0a0 @@ -16792,8 +17003,8 @@ packages: purls: - pkg:pypi/pynacl?source=hash-mapping run_exports: {} - size: 1183872 - timestamp: 1778984925118 + size: 1192200 + timestamp: 1783594441491 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyqt-5.15.11-py312hc13527c_2.conda sha256: 187fc7fbc34f8443a9ad1ad9c6baa8943860fef48f3c04c43f0a6c094a898dd4 md5: 4ca5680db4752ddff6257de6ab8d319c @@ -16906,51 +17117,20 @@ packages: - python size: 13871351 timestamp: 1703338868943 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.13-h91f4b29_0_cpython.conda - sha256: 61933478813f5fd96c89a00dd964201b0266d71d2e3bc4dd5679354056e46948 - md5: 8aed8fdbbc03a5c9f455d20ce75a9dce - depends: - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.7.4,<3.0a0 - - libffi >=3.5.2,<3.6.0a0 - - libgcc >=14 - - liblzma >=5.8.2,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.51.2,<4.0a0 - - libuuid >=2.41.3,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.5.5,<4.0a0 - - readline >=8.3,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - run_exports: - weak: - - python_abi 3.12.* *_cp312 - noarch: - - python - size: 13757191 - timestamp: 1772728951853 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.12.0-py312hd41f8a7_0.conda - sha256: 6f647dc3d96c351125fcfb104bfbef235324626bd5ddaa7e265b398520f4c620 - md5: 9a2257990790d5601317187ecee320ef +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-librt-0.15.0-py312hd41f8a7_0.conda + sha256: 52f674203b53fc5b2502b40f5b3e1d3000f297cccbed180f08bf49dc0601099c + md5: ea26dd52e5783b5e6c06f7674968ef4d depends: - python - - libgcc >=14 - python 3.12.* *_cpython + - libgcc >=14 - python_abi 3.12.* *_cp312 license: MIT - license_family: MIT purls: - pkg:pypi/librt?source=hash-mapping run_exports: {} - size: 160722 - timestamp: 1782847514830 + size: 164280 + timestamp: 1786328864306 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-orocos-kdl-1.5.3-py312h1ab2c47_2.conda sha256: 6a5a07185a4509ab13dcef98594d041081dd70d26b23651f4c86cc289f6217f6 md5: 574358b8f203748e7c46ff70a908ee76 @@ -17138,19 +17318,18 @@ packages: - qt6-main >=6.10.2,<6.11.0a0 size: 60839855 timestamp: 1773865968913 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h5ad3122_2.conda - sha256: 23bea89944146065881d95b3532a02634ccb3e22cd6bdb0f1dab784bf2c6e23f - md5: 1bc039af0f3316386d1e6df28e1e44f3 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20250205-h7ac5ae9_0.conda + sha256: 112bfb0a48e8c12050f0f3b9174bf778e8b6e0e97ec7d61be6a3beb94f9c6a1b + md5: 2b0a4319890469051952b46cc6ac75be depends: - - libgcc >=13 - - libstdcxx >=13 - - libgcc >=13 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT purls: [] run_exports: {} - size: 157209 - timestamp: 1742820749175 + size: 156107 + timestamp: 1784885295930 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.8.1-h9d4cc37_0.conda sha256: b54b0e66d264ce5904862012f08eda155ecfc6520f66a321f9363682fef94c59 md5: a3c060f1a410865150bb1d59cddf6d7c @@ -17166,9 +17345,9 @@ packages: - rav1e >=0.8.1,<0.9.0a0 size: 5253980 timestamp: 1772540729272 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.6.28-py312hcd1a082_0.conda - sha256: 15db24f801820298ecd5c5950c442b4d9abc257659798662613bf3a97810577f - md5: c5512c0bf722f663f1b9eb2af4f23611 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2026.7.19-py312hcd1a082_0.conda + sha256: f549ef01ea6ccbf37b131d44a238637a5430e4a3299a3383ab85ed72a68d7b1b + md5: 43177f8f473d90b51b3c5f869b6a3abc depends: - libgcc >=14 - python >=3.12,<3.13.0a0 @@ -17179,8 +17358,8 @@ packages: purls: - pkg:pypi/regex?source=hash-mapping run_exports: {} - size: 408685 - timestamp: 1782695459701 + size: 410981 + timestamp: 1784433256828 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.6-h86ecc28_1.conda sha256: 0fe6f40213f2d8af4fcb7388eeb782a4e496c8bab32c189c3a34b37e8004e5a4 md5: 745d02c0c22ea2f28fbda2cb5dbec189 @@ -17213,19 +17392,19 @@ packages: run_exports: {} size: 395365 timestamp: 1780999340933 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.5-h706e587_0.conda - sha256: 8ebd3dfff48297043adb0895764c263921bd41b0ce04ad995fb31201ae8c50c3 - md5: d16043642ea72bd35ba5af784ae648e4 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruby-4.0.6-h706e587_0.conda + sha256: 17f8172c660fc613081db2d34268fac3191d8cc9f5809733da3a001684ef0520 + md5: ed5da2b27d49f98f33d2c3202485cb29 depends: - libgcc >=14 - - libzlib >=1.3.2,<2.0a0 - yaml >=0.2.5,<0.3.0a0 - - libxcrypt >=4.4.36 - - libffi >=3.5.2,<3.6.0a0 - gmp >=6.3.0,<7.0a0 - - openssl >=3.5.6,<4.0a0 - - ncurses >=6.6,<7.0a0 + - openssl >=3.5.7,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - libffi >=3.5.2,<3.6.0a0 - readline >=8.3,<9.0a0 + - libxcrypt >=4.4.36 + - ncurses >=6.6,<7.0a0 constrains: - __glibc >=2.17 license: BSD-2-Clause @@ -17233,9 +17412,9 @@ packages: purls: [] run_exports: weak: - - ruby >=4.0.5,<4.1.0a0 - size: 17776666 - timestamp: 1779257277421 + - ruby >=4.0.6,<4.1.0a0 + size: 17819936 + timestamp: 1784018160146 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruff-0.14.14-he9a2e21_1.conda noarch: python sha256: 8d6e3d1f4c82440e193983e416854ceba4ab28ae39ae1b9a8d204d180f006f43 @@ -17252,53 +17431,23 @@ packages: run_exports: {} size: 8791276 timestamp: 1769521008362 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - sha256: 3bdc8f7f48a6086464fe8d114ea116ab8dc6d71fd20f493da31dd3693a1d6cfc - md5: 56ae3fd49c525a774ea38ba30221605f - depends: - - gcc_impl_linux-aarch64 - - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 - - rust-std-aarch64-unknown-linux-gnu 1.91.1 hbe8e118_0 - - sysroot_linux-aarch64 >=2.17 - license: MIT - license_family: MIT - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 195849499 - timestamp: 1762817258076 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - sha256: 88f399576f66bc612473248413cbac5624eb00ad1a52831662ce1fc0a38916f8 - md5: 489afc4ab72277b53368d9cbebb9af4d +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.97.1-h6cf38e9_0.conda + sha256: c0603ee3adfd0d1f80c8592cbc9a24e5c081f82859b67dc20119e728c949e219 + md5: 302a7c705d6d2e4c6f449d42f1d5710d depends: - gcc_impl_linux-aarch64 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 - - rust-std-aarch64-unknown-linux-gnu 1.96.0 hbe8e118_0 + - rust-std-aarch64-unknown-linux-gnu 1.97.1 hbe8e118_0 - sysroot_linux-aarch64 >=2.17 license: MIT license_family: MIT + purls: [] run_exports: strong_constrains: - __glibc >=2.17 - size: 133391007 - timestamp: 1780047167214 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.96.0-hb84128a_0.conda - sha256: 9748059671631c9614324f548556023b0573cd2dac90572042ab492ea7c2de04 - md5: aa0ba9a7c9c623d73caf9d854a47ca36 - depends: - - gcc_linux-aarch64 - - rust 1.96.0.* - - rust-std-aarch64-unknown-linux-gnu 1.96.0.* - - sysroot_linux-aarch64 >=2.17 - license: BSD-3-Clause - license_family: BSD - run_exports: - strong_constrains: - - __glibc >=2.17 - size: 11857 - timestamp: 1780932769886 + size: 134214198 + timestamp: 1784278774764 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.17.1-py312ha7f05e0_1.conda sha256: faad223a5a3318687308cd1ae235ad5aee4de2d090cbc2280b3281e506279249 md5: 60bbefd5c712570fec2b52275f641192 @@ -17372,38 +17521,38 @@ packages: - sdl2 >=2.32.56,<3.0a0 size: 597756 timestamp: 1757842928996 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.12-had2c13b_0.conda - sha256: 20b512f72fe12bdd07c917f20c437f318a8e1b1fb658278e8da0ba26c6ff6826 - md5: 7d71ee12487f73cf9628f2a6e6081ed5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.4.14-had2c13b_0.conda + sha256: 9ca267af883667fa20b0ec9e6d4a7ad6a54e9ef65c130880cce1bce539bde49d + md5: 6afcf0629c8cdc96f1f6e9bc06ac25de depends: - - libgcc >=14 - libstdcxx >=14 - - pulseaudio-client >=17.0,<17.1.0a0 - - libgl >=1.7.0,<2.0a0 - - xorg-libxscrnsaver >=1.2.4,<2.0a0 - - wayland >=1.25.0,<2.0a0 - - liburing >=2.14,<2.15.0a0 - - libxkbcommon >=1.13.2,<2.0a0 - - libusb >=1.0.29,<2.0a0 - - xorg-libxext >=1.3.7,<2.0a0 + - libgcc >=14 - xorg-libx11 >=1.8.13,<2.0a0 - - libvulkan-loader >=1.4.341.0,<2.0a0 - - libunwind >=1.8.3,<1.9.0a0 - - dbus >=1.16.2,<2.0a0 - - xorg-libxfixes >=6.0.2,<7.0a0 - - libegl >=1.7.0,<2.0a0 + - wayland >=1.26.0,<2.0a0 - xorg-libxi >=1.8.3,<2.0a0 + - libegl >=1.7.0,<2.0a0 - xorg-libxtst >=1.2.5,<2.0a0 - - xorg-libxcursor >=1.2.3,<2.0a0 + - libvulkan-loader >=1.4.357.0,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 - libudev1 >=257.13 + - dbus >=1.16.2,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 + - libxkbcommon >=1.13.2,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + - liburing >=2.14,<2.15.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - libunwind >=1.8.3,<1.9.0a0 - libdrm >=2.4.127,<2.5.0a0 + - libgl >=1.7.0,<2.0a0 + - libusb >=1.0.29,<2.0a0 license: Zlib purls: [] run_exports: weak: - - sdl3 >=3.4.12,<4.0a0 - size: 2153567 - timestamp: 1782948073672 + - sdl3 >=3.4.14,<4.0a0 + size: 2157224 + timestamp: 1785816119163 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/shaderc-2025.5-hfeb5c2c_1.conda sha256: bf3f47847832e33acbcb7a1aba948f3b574979ad2a91f2ebdc9fc685c09433db md5: 8268bdcd82d8f9abcb7f0fd6a9568ba4 @@ -17420,9 +17569,9 @@ packages: - shaderc >=2025.5,<2025.6.0a0 size: 115498 timestamp: 1770208786806 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.15.3-py312hfcd9f9b_0.conda - sha256: 1124b77f91d6d269c873ee9be5c242117220c93ca35fb11e196c048b28de94ff - md5: 71afa1d22144f07b5e3205d67c67adf5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sip-6.16.0-py312hfcd9f9b_0.conda + sha256: e1c45fb85c1300684cd75356ca83953944435535e1cad00874ae8581e0351eb4 + md5: 53f4d795080af61d6f2a42ba1bf89c99 depends: - libgcc >=14 - libstdcxx >=14 @@ -17438,9 +17587,9 @@ packages: - pkg:pypi/sip?source=hash-mapping run_exports: weak: - - sip >=6.15.3,<6.16.0a0 - size: 737077 - timestamp: 1774375435468 + - sip >=6.16.0,<6.17.0a0 + size: 859289 + timestamp: 1785712158159 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.2-he774c54_1.conda sha256: a8a79c53852fb07286407907402caa5a96b6e22b518c4f010be40647f9ee3726 md5: 3dec912091fb88614afa0af2712c1362 @@ -17469,9 +17618,9 @@ packages: - soxr >=0.1.3,<0.1.4.0a0 size: 111209 timestamp: 1674059588618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-h9f97df7_1.conda - sha256: 36f5c0d73d88760438388bc940a65af4d9de3ecaf6fa5656a22a060d262d56f5 - md5: 910d3cbb4ccf371b6355a98b1233eb8f +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.17.0-hb3fff47_2.conda + sha256: 56a009d553dd669850e61608d71d584172d0ccd4f5c48efe73563c93845a74f3 + md5: 0ae158a495544229d7d28a242131a03a depends: - fmt >=12.1.0,<12.2.0a0 - libgcc >=14 @@ -17482,31 +17631,30 @@ packages: run_exports: weak: - spdlog >=1.17.0,<1.18.0a0 - size: 195699 - timestamp: 1767781668042 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_0.conda - sha256: fcd1bb3c246ffc0beee0c66d1f240610288c81286041190b42402435408b5cc5 - md5: c82bb7d70fffe04afe74d55542af1d41 + size: 196389 + timestamp: 1785924378981 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spirv-tools-2026.2-hfefdfc9_3.conda + sha256: 3da6ea86777d73cf161f6a4cb6193c197107a2374e1ea99f2e522df8c963738d + md5: 8a4a18d2cd4377e6d8fbd1007c07108f depends: - libgcc >=14 - libstdcxx >=14 constrains: - - spirv-headers >=1.4.350.0,<1.4.350.1.0a0 + - spirv-headers >=1.4.357.0,<1.4.357.1.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - spirv-tools >=2026,<2027.0a0 - size: 2290233 - timestamp: 1780139661664 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.3-hf1c7be2_0.conda - sha256: aa38995231e12c2c9ad1d988561ab02fe1e8b397577bfafc94841b9b0e23e40f - md5: 0f92a462399f790fdfb6e7c5941ae551 + size: 2301901 + timestamp: 1785688983317 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.53.4-he8854b5_0.conda + sha256: 70bc70e05ec16173ad15e13624d051588dcd2c2f01ef12171234ab04d4c7d888 + md5: 334f86d1da77b90aeb2d5ef1edcd513c depends: - - icu >=78.3,<79.0a0 - libgcc >=14 - - libsqlite 3.53.3 h10b116e_0 + - libsqlite 3.53.4 h022381a_0 - libzlib >=1.3.2,<2.0a0 - ncurses >=6.6,<7.0a0 - readline >=8.3,<9.0a0 @@ -17514,9 +17662,9 @@ packages: purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 215067 - timestamp: 1782519058627 + - libsqlite >=3.53.4,<4.0a0 + size: 215340 + timestamp: 1785016061557 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-4.0.1-hfae3067_0.conda sha256: 6518e4575e83e38b07460f504b6467124f9a16e4d368af42ca54a69603002078 md5: 943fcd76194904358b2587d627ee6388 @@ -17570,25 +17718,25 @@ packages: - tinyxml2 >=11.0.0,<11.1.0a0 size: 133310 timestamp: 1742246428717 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - sha256: e25c314b52764219f842b41aea2c98a059f06437392268f09b03561e4f6e5309 - md5: 7fc6affb9b01e567d2ef1d05b84aa6ed +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h5cf4473_3.conda + build_number: 103 + sha256: cd51fbda051a9f3679d10ef4a94cd1ff38c10533b82845dadce8ba87245ba4ce + md5: 89e78452e06563964e419059ee45584a depends: - libgcc >=14 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 license: TCL - license_family: BSD purls: [] run_exports: weak: - tk >=8.6.13,<8.7.0a0 - size: 3368666 - timestamp: 1769464148928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.7-py312hefbd42c_0.conda - sha256: a5abbe4712c2afa68e63e19ebe7bbb425baa4db6240bfa3c8276b4ac917138ca - md5: 5d9619b1f48fbccf87010ea5b340b2d1 + size: 3683040 + timestamp: 1784229053797 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.8-py312hefbd42c_0.conda + sha256: d6e1b5017ba755c8b32f81b8a3f620ccbe1254bb63a2a5cb36e2779c2ec64b99 + md5: a6227a242f0f34c7bfd132ae5612b775 depends: - libgcc >=14 - python >=3.12,<3.13.0a0 @@ -17598,8 +17746,8 @@ packages: purls: - pkg:pypi/tornado?source=hash-mapping run_exports: {} - size: 863626 - timestamp: 1781007844330 + size: 870861 + timestamp: 1786228525800 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.1.0-py312h4f740d2_0.conda sha256: 782101cc2266b2126c44771e4c03658d0c55d933f34b91523d0bdd38ad2f3e10 md5: 9d8284ec3764a95eff0cde0e70772315 @@ -17697,28 +17845,15 @@ packages: run_exports: {} size: 14197 timestamp: 1767012435525 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.26-haa595b2_0.conda - sha256: 3cbe21f360080969e588374d70b17514eacac94a4328726ebfe1fbc0aec039f5 - md5: c4ac9fbd7745a2b6c6bdcaac4219bd73 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_1.conda + sha256: 31273b62eda1357e1c7af4d19cd2f688ae4c38a5ee210fd121996ff9bbc7dde2 + md5: 158540610d440373bcda0c5a98590a47 depends: - libgcc >=14 - libstdcxx >=14 - constrains: - - __glibc >=2.17 - license: Apache-2.0 OR MIT - run_exports: {} - size: 20171344 - timestamp: 1782834696757 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/viskores-1.1.1-cpu_hb695247_0.conda - sha256: d086e094a199ba83f023fbec3753bcff561677910cac31bd8c38ab84fb764820 - md5: 8ce740ca4fe8871e8d90e00063e9a748 - depends: - - libstdcxx >=14 - - libgcc >=14 - _openmp_mutex >=4.5 - - glew >=2.3.0,<2.4.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - mesalib >=26.0.3,<26.1.0a0 + - glew >=2.3.0,<2.4.0a0 - zfp >=1.0.1,<2.0a0 track_features: - viskores-p-0 @@ -17728,8 +17863,8 @@ packages: run_exports: weak: - viskores >=1.1.1,<1.2.0a0 - size: 22924208 - timestamp: 1777494708492 + size: 22930730 + timestamp: 1784250995489 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.5.2-py312h4954c87_7.conda sha256: a64d6c83a4e954820b3656b2914e46f647a28841556ad635a64115a580d9cd86 md5: 1e9c6480740528e369bb86be54ca4ea2 @@ -17826,11 +17961,11 @@ packages: - vtk-io-ffmpeg >=9.5.2,<9.5.3.0a0 size: 106747 timestamp: 1768718080474 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.25.0-h4f8a99f_0.conda - sha256: 3cc479df517b0ce110835a1256f91ca568581cb6dfe1c53a0786f0a226039a45 - md5: 0a7a9548726f98d5869fd4c43e110f0f +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.26.0-h4f8a99f_0.conda + sha256: 27d8782a2f6cd193f2f446de829f7a92f3b34cc885e2d59d4b8326934023d8fd + md5: 8da6920e59279dedb8c737cff347cfee depends: - - libexpat >=2.7.4,<3.0a0 + - libexpat >=2.8.1,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 - libstdcxx >=14 @@ -17839,12 +17974,12 @@ packages: purls: [] run_exports: weak: - - wayland >=1.25.0,<2.0a0 - size: 335260 - timestamp: 1773959583826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.2.2-py312hcd1a082_0.conda - sha256: 920a81cd9444293a78fe6e9479bacf8fbf672fc6f5268c7237ba4335376f275e - md5: e2b2d650e49db3cafe5d9e7da964e167 + - wayland >=1.26.0,<2.0a0 + size: 341752 + timestamp: 1784249192116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-2.3.0-py312hcd1a082_0.conda + sha256: 652a72270b4f7e327f594f30f8b2f65a7a466874cd31308e590881ab4d49de50 + md5: 835ab7b0a88b2cc90c7c2a6ea3381132 depends: - libgcc >=14 - python >=3.12,<3.13.0a0 @@ -17853,10 +17988,10 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/wrapt?source=compressed-mapping + - pkg:pypi/wrapt?source=hash-mapping run_exports: {} - size: 115536 - timestamp: 1782133697736 + size: 117427 + timestamp: 1785422157504 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 sha256: b48f150db8c052c197691c9d76f59e252d3a7f01de123753d51ebf2eed1cf057 md5: 0efaf807a0b5844ce5f605bd9b668281 @@ -18026,9 +18161,9 @@ packages: - xorg-libx11 >=1.8.13,<2.0a0 size: 869058 timestamp: 1770819244991 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_1.conda - sha256: e9f6e931feeb2f40e1fdbafe41d3b665f1ab6cb39c5880a1fcf9f79a3f3c84a5 - md5: 1c246e1105000c3660558459e2fd6d43 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-he30d5cf_2.conda + sha256: 0822f3a8eb2a54bb41e1133f010e09d4a3242f8f12a372dfff7ad7248c5dbd29 + md5: b03af9d9dfe7aec9e27db74fc41a4ba9 depends: - libgcc >=14 license: MIT @@ -18037,8 +18172,8 @@ packages: run_exports: weak: - xorg-libxau >=1.0.12,<2.0a0 - size: 16317 - timestamp: 1762977521691 + size: 17413 + timestamp: 1786382929588 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxaw-1.0.16-h86ecc28_0.conda sha256: 6b113e620781efc14c6ae8d6a65436f9c7e5231e2dd9384b7de71abb920eeee2 md5: 4c4a80cc042d707a61dfe75f541e0d23 @@ -18102,9 +18237,9 @@ packages: - xorg-libxdamage >=1.1.6,<2.0a0 size: 13794 timestamp: 1727891406431 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_1.conda - sha256: 128d72f36bcc8d2b4cdbec07507542e437c7d67f677b7d77b71ed9eeac7d6df1 - md5: bff06dcde4a707339d66d45d96ceb2e2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-he30d5cf_2.conda + sha256: 681465a02be4ac256c05cd5b32ce9812da1563b75be1bfc8884d991454194df3 + md5: 044c398bf4b3b9c01741d8afe4ce1c3e depends: - libgcc >=14 license: MIT @@ -18113,8 +18248,8 @@ packages: run_exports: weak: - xorg-libxdmcp >=1.1.5,<2.0a0 - size: 21039 - timestamp: 1762979038025 + size: 21558 + timestamp: 1786383120543 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.7-he30d5cf_0.conda sha256: db2188bc0d844d4e9747bac7f6c1d067e390bd769c5ad897c93f1df759dc5dba md5: fb42b683034619915863d68dd9df03a3 @@ -18315,52 +18450,52 @@ packages: - xorg-libxxf86vm >=1.1.7,<2.0a0 size: 19148 timestamp: 1769434729220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-he30d5cf_0.conda - sha256: d8a7593362562f66bab992901df6cdc845c6004d15c1ba2d1e3e39e4e4672384 - md5: 999d230bcb0329c11d101118ace392d9 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2025.1-h80f16a2_1.conda + sha256: a2616bc01953c1f59d45eb4d5802b13edc24e8b4d7f1fc53ab34f3fd65040168 + md5: f2fb3e02f33803df14d7bf2a63266aa6 depends: - libgcc >=14 license: MIT license_family: MIT purls: [] run_exports: {} - size: 569539 - timestamp: 1766155414260 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hd794028_0.conda - sha256: db8cc7186ecb1cf4cb92977822ad17698fa2cd5fc87935de2afd9e99d2cbb507 - md5: f2accdfbd632e2be9a63bed23cb08045 + size: 595067 + timestamp: 1786115602624 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-hdc50dc5_1.conda + sha256: 08ccc93d723e21f8be38fd02ab0eaf1d25cf6056f6291c11a1cb7ab5ab1716e4 + md5: c9a7150a0b9cc78359ebaf3e3b4ea8d8 depends: - - libgcc >=13 + - libgcc >=14 license: BSD-2-Clause license_family: BSD purls: [] run_exports: weak: - xxhash >=0.8.3,<0.8.4.0a0 - size: 105762 - timestamp: 1746457675564 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_0.conda - sha256: a12cc406fc348d3b3a6c2bc6e2a1a82b2f6865d67f1f41498f7301aea77ae9c3 - md5: 515cd9d9970d3addd52b8f85ee1beab9 + size: 106161 + timestamp: 1785949323172 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.8.3-hd704e39_1.conda + sha256: 4e9b4a2eabf215c052d57a54c279a1d79343ae3b961d3f81f834e0bf76e5c7d4 + md5: 96a51f4137a543fd14fe96e1e560a5ac depends: - libgcc >=14 - - liblzma 5.8.3 he30d5cf_0 - - liblzma-devel 5.8.3 he30d5cf_0 - - xz-gpl-tools 5.8.3 hd704e39_0 - - xz-tools 5.8.3 he30d5cf_0 + - liblzma 5.8.3 he30d5cf_1 + - liblzma-devel 5.8.3 he30d5cf_1 + - xz-gpl-tools 5.8.3 hd704e39_1 + - xz-tools 5.8.3 he30d5cf_1 license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later purls: [] run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 24330 - timestamp: 1775828875434 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_0.conda - sha256: ad964969ff1a72d8cc8d60a6bbd66ca5f79c00f2e3dec612caae1c2c5b9e2d16 - md5: f357f5285cc0c4df2305dd6ccb977ec5 + size: 23459 + timestamp: 1786348594461 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.8.3-hd704e39_1.conda + sha256: 3f0b45a1039c86265f41f3bb5f248cd4d901acff49164f86122fab7cc4efc049 + md5: 6543af33661ff21061b6db52c84a86fa depends: - libgcc >=14 - - liblzma 5.8.3 he30d5cf_0 + - liblzma 5.8.3 he30d5cf_1 constrains: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later @@ -18368,21 +18503,21 @@ packages: run_exports: weak: - liblzma >=5.8.3,<6.0a0 - size: 34353 - timestamp: 1775828661986 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_0.conda - sha256: 86d48bb0ac214d1d72e05e765523d5847f3ccd872c142304d3c307cc95c93881 - md5: 6cf7b9f879c7665749c7ddd45cc5c163 + size: 40115 + timestamp: 1786348586456 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.8.3-he30d5cf_1.conda + sha256: 1619ea83757336aaaac4cde221e4cd0982551c82def3276c91d0d53b0b7159db + md5: 7c211f37ed725871ce3043090d5addd8 depends: - libgcc >=14 - - liblzma 5.8.3 he30d5cf_0 + - liblzma 5.8.3 he30d5cf_1 constrains: - xz 5.8.3.* license: 0BSD AND LGPL-2.1-or-later purls: [] run_exports: {} - size: 102970 - timestamp: 1775828449899 + size: 103133 + timestamp: 1786348578460 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-h80f16a2_3.conda sha256: 66265e943f32ce02396ad214e27cb35f5b0490b3bd4f064446390f9d67fa5d88 md5: 032d8030e4a24fe1f72c74423a46fb88 @@ -18396,23 +18531,23 @@ packages: - yaml >=0.2.5,<0.3.0a0 size: 88088 timestamp: 1753484092643 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h5ad3122_0.conda - sha256: e146d83cdcf92506ab709c6e10acabd18a3394a23e6334a322c57e5d1d6d9f26 - md5: b9e5a9da5729019c4f216cf0d386a70c +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h7ac5ae9_1.conda + sha256: 0ea50b4f031e9da009e0537a1f29f5192941439c07bd07c98d69661c6f2aae9e + md5: 1e61fa792e6cc3f0aec45ba3054db647 depends: - - libstdcxx >=13 - - libgcc >=13 + - libgcc >=14 + - libstdcxx >=14 license: MIT license_family: MIT purls: [] run_exports: weak: - yaml-cpp >=0.8.0,<0.9.0a0 - size: 213281 - timestamp: 1745308220432 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.2-py312ha4530ae_0.conda - sha256: 8c946c0953a90ca9610200242c46d137674ded48d1deee4be77ff86c8ff5adda - md5: 8b014af9e93885f33fc235cd05228b18 + size: 230153 + timestamp: 1785923988072 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.24.5-py312ha4530ae_0.conda + sha256: 28083165b88b0fd2d70b22422b9ae516f3c922b7b43fb932d3b5b1b8b1c55fe1 + md5: cc2390f8047f4917936ec0d03833f003 depends: - idna >=2.0 - libgcc >=14 @@ -18426,8 +18561,8 @@ packages: purls: - pkg:pypi/yarl?source=hash-mapping run_exports: {} - size: 153517 - timestamp: 1779246158183 + size: 170642 + timestamp: 1784526502531 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zenoh-rust-abi-1.7.2.1.85.0-h4d6d557_0.conda sha256: edcc21e3cc02685cb1dab2625780c2ff02b398fca5d95611287a524fe615f609 md5: 2062257602e9c7ab9c5f92f891f2d0ed @@ -18471,19 +18606,19 @@ packages: - zfp >=1.0.1,<2.0a0 size: 248846 timestamp: 1766552554324 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_2.conda - sha256: d651731b45f2d84591881da3ce3e4107a9ba6709fe790dbd5f7b8d9c89a02ed7 - md5: 493587274c81b34d198b085b46a86eaa +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.2-hdc9db2a_3.conda + sha256: 3f3c296477cf26474660942f4d8ec104a8eee2cb1abc7c5bfec9ac1102c66451 + md5: 254c54ac18eca7bf4f865e661306dc43 depends: - - libzlib 1.3.2 hdc9db2a_2 + - libzlib 1.3.2 hdc9db2a_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 100515 - timestamp: 1774072641977 + size: 100332 + timestamp: 1785276566528 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda sha256: 569990cf12e46f9df540275146da567d9c618c1e9c7a0bc9d9cfefadaed20b75 md5: c3655f82dcea2aa179b291e7099c1fcc @@ -18510,9 +18645,9 @@ packages: - zziplib >=0.13.69,<0.14.0a0 size: 115725 timestamp: 1719242037690 -- conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.4.0-pyhd8ed1ab_0.conda - sha256: 0e5e34179a52e0f3aa3c92904bd326de1d1cd74c6fe3bd98f8b8b6889491c7e4 - md5: a46362fa67f5138d526715107be0ee32 +- conda: https://conda.anaconda.org/conda-forge/noarch/absl-py-2.5.0-pyhd8ed1ab_0.conda + sha256: 8b1aaa574e152570aed4b85d916f88a8dd92b69bb9409bd7fb2efc27659be1e6 + md5: 1ec5202407b4006470f9a21c32c4b90c depends: - python >=3.10 license: Apache-2.0 @@ -18520,8 +18655,8 @@ packages: purls: - pkg:pypi/absl-py?source=hash-mapping run_exports: {} - size: 109955 - timestamp: 1769637168641 + size: 115188 + timestamp: 1783083260530 - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda sha256: 5ef589e5fd3736439781a9d48e68ce1e723b7081a471c02169908198eba4f448 md5: e51e09bf3b91c62b7461a9f94e92c2c9 @@ -18530,7 +18665,7 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + - pkg:pypi/aiohappyeyeballs?source=hash-mapping run_exports: {} size: 24690 timestamp: 1782986823268 @@ -18560,22 +18695,21 @@ packages: run_exports: {} size: 18684 timestamp: 1733750512696 -- conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.0-pyhcf101f3_0.conda - sha256: fca7deee4f28060413d483851703c1287351797c1f660fb9ab63f8d175576e3f - md5: 4553b661c03a2f435d8c889eca8f2075 +- conda: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.7.2-pyhcf101f3_0.conda + sha256: 7a0e771e709b1620a914ba8a9590433c4a9fd84779d137216ac29ca50e959a1f + md5: 5185c9f9742daeffae5daae93c802bf7 depends: - python >=3.10 - python license: Apache-2.0 - license_family: APACHE purls: - - pkg:pypi/argcomplete?source=compressed-mapping + - pkg:pypi/argcomplete?source=hash-mapping run_exports: {} - size: 46445 - timestamp: 1782888485558 -- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - sha256: ee4da0f3fe9d59439798ee399ef3e482791e48784873d546e706d0935f9ff010 - md5: 9673a61a297b00016442e022d689faa6 + size: 47150 + timestamp: 1786180543999 +- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + sha256: fbbd8ce60cbd5c16f3fe559eb644551f94285caff30985ea961ff851c1cf25ac + md5: 89d495168582cb00428dad699d149624 depends: - python >=3.10 constrains: @@ -18585,8 +18719,8 @@ packages: purls: - pkg:pypi/asttokens?source=hash-mapping run_exports: {} - size: 28797 - timestamp: 1763410017955 + size: 34639 + timestamp: 1783975742052 - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab md5: c6b0543676ecb1fb2d7643941fe375f2 @@ -18656,16 +18790,16 @@ packages: run_exports: {} size: 78954 timestamp: 1740314139074 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - sha256: f8e3c730fa14ee3f170493779f06522c4acf89169f43db4f039727709b6419cf - md5: a9965dd99f683c5f444428f896635716 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.7.22-hbd8a1cb_0.conda + sha256: 0a0544cf95f64394fe4959286f5c71f5444ad58feb0602e53becb27448d24da6 + md5: 0f51e2391ade309db462a55611263e9c depends: - __unix license: ISC purls: [] run_exports: {} - size: 128866 - timestamp: 1781708962055 + size: 131780 + timestamp: 1784754889428 - conda: https://conda.anaconda.org/conda-forge/noarch/catkin_pkg-1.1.0-pyhd8ed1ab_0.conda sha256: fe602164dc1920551e1452543e22338d55d8a879959f12598c9674cf295c6341 md5: 3e500faf80e42f26d422d849877d48c4 @@ -18683,17 +18817,17 @@ packages: run_exports: {} size: 54106 timestamp: 1757558592553 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.6.17-pyhd8ed1ab_0.conda - sha256: 6c13620e458ba43278379d0cdacc30c497336bddfda81681fd50d114a65c702f - md5: c13824fedced67005d3832c152fe9c2f +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + sha256: fb167de4388e64e52aa3907ed099afab944c1fa6e5f74b281a312dae1bcf7f3b + md5: 37e13edbe3b48f1095a9d085ef9cd83b depends: - python >=3.10 license: ISC purls: - - pkg:pypi/certifi?source=compressed-mapping + - pkg:pypi/certifi?source=hash-mapping run_exports: {} - size: 133877 - timestamp: 1781719949728 + size: 137015 + timestamp: 1784717699092 - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda sha256: aa589352e61bb221351a79e5946d56916e3c595783994884accdb3b97fe9d449 md5: 381bd45fb7aa032691f3063aff47e3a1 @@ -18706,9 +18840,9 @@ packages: run_exports: {} size: 13589 timestamp: 1763607964133 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - sha256: 3f9483d62ce24ecd063f8a5a714448445dc8d9e201147c46699fc0033e824457 - md5: a9167b9571f3baa9d448faa2139d1089 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + sha256: 8d8813ef655b4e75e4fb897abd83ad548882efad7b4e836b021b797f42780799 + md5: d154b40b109e503430979e8a8d099eaf depends: - python >=3.10 license: MIT @@ -18716,11 +18850,11 @@ packages: purls: - pkg:pypi/charset-normalizer?source=hash-mapping run_exports: {} - size: 58872 - timestamp: 1775127203018 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.1-pyhc90fa1f_0.conda - sha256: c253a41cdf898b651a0786cbb76c6d5fc101d0dbbe719f93a124bc4fde5cdd6a - md5: 554304a07e581a85891b15e39ea9f268 + size: 61418 + timestamp: 1783505332569 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + sha256: ccc4787f511964f9a1f2d2d2859c91c5d571fb60f7f09d4c4e092c9b7a94e671 + md5: 2c4bd6aeb90bb157456841c3270a0d92 depends: - __unix - python @@ -18728,10 +18862,10 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/click?source=compressed-mapping + - pkg:pypi/click?source=hash-mapping run_exports: {} - size: 104999 - timestamp: 1779900548735 + size: 107155 + timestamp: 1783085363526 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-argcomplete-0.3.3-pyhd8ed1ab_1.conda sha256: 05ccb85cad9ca58be9dcb74225f6180a68907a6ab0c990e3940f4decc5bb2280 md5: bde6042a1b40a2d4021e1becbe8dd84f @@ -18788,9 +18922,9 @@ packages: run_exports: {} size: 30528 timestamp: 1781648219269 -- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.0-pyhcf101f3_0.conda - sha256: b30d73297ab86e5117c9eebf11d6bc86616be6a7e0ead9d14fec77077c760261 - md5: 16256753ef2123996897bc6773080893 +- conda: https://conda.anaconda.org/conda-forge/noarch/colcon-core-0.21.1-pyhcf101f3_0.conda + sha256: 436539fca078783b00ab279aa89fb0c9481c4e632f82e655566bf08d870b0fec + md5: 912327818a310c48829efbda3dc635a6 depends: - python >=3.10 - coloredlogs @@ -18809,8 +18943,8 @@ packages: - pkg:pypi/colcon-core?source=hash-mapping - pkg:pypi/colcon-distutils-commands?source=hash-mapping run_exports: {} - size: 96785 - timestamp: 1780438171992 + size: 101611 + timestamp: 1785998373391 - conda: https://conda.anaconda.org/conda-forge/noarch/colcon-defaults-0.2.9-pyhd8ed1ab_1.conda sha256: dd89f3e92a80532b9c6427ec9dd12742be9e27c3d6639555a4f786787fb5f33d md5: 1bc984ddc9434fd2fdabde2e0e44dd14 @@ -18874,7 +19008,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/colcon-output?source=compressed-mapping + - pkg:pypi/colcon-output?source=hash-mapping run_exports: {} size: 21527 timestamp: 1782140571074 @@ -19040,6 +19174,54 @@ packages: run_exports: {} size: 43758 timestamp: 1733928076798 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-64-21.1.8-hffcefe0_1.conda + sha256: 65b0721f97be14265c8329ecb4e78a7e1233d0229878ffca5d15b98d90ba3977 + md5: 54bd44d384ce8d5ab5628a8950392b5a + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 48977047 + timestamp: 1769057035337 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_linux-aarch64-21.1.8-hfefdfc9_1.conda + sha256: 2723ebfff00f4716f37de1bdf109f9cf016238e64f68e08c4c2c23a0aa16d24a + md5: 809e81831a385c920972cbd737af56aa + constrains: + - compiler-rt >=9.0.1 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 33322768 + timestamp: 1769057129616 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-64-21.1.8-ha770c72_1.conda + sha256: ba879743bae391ca774716a8db60c7b36c8c14fdc6f83535602ce303c27b985d + md5: 12fe6c056aec14f14ee8b5d38b8247f0 + depends: + - compiler-rt21_linux-64 21.1.8 hffcefe0_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 16197 + timestamp: 1769057142076 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_linux-aarch64-21.1.8-h8af1aa0_1.conda + sha256: cb5cb5b360a854cb0b166ee956a696bef049e8aeead5af4305795d66d74ddf13 + md5: 20acd345035acaf4dc6df43c2e02ad32 + depends: + - compiler-rt21_linux-aarch64 21.1.8 hfefdfc9_1 + constrains: + - clang 21.1.8 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 16273 + timestamp: 1769057250175 - conda: https://conda.anaconda.org/conda-forge/noarch/construct-2.10.70-pyhd8ed1ab_0.conda sha256: 096940199e2145bd8bd9834ad8ab0f56f721da6fc749e8b13d04d8a69adad208 md5: 58e88566bfbbf9d3ffbeda3290e7f4f0 @@ -19099,7 +19281,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/distlib?source=compressed-mapping + - pkg:pypi/distlib?source=hash-mapping run_exports: {} size: 303705 timestamp: 1781320269259 @@ -19160,9 +19342,9 @@ packages: run_exports: {} size: 40210 timestamp: 1586444722817 -- conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.12.2-pyhd8ed1ab_0.conda - sha256: 805ee8cc651a4bf056c39f8b1fdf64b393455bc10b2fd8cc3a99b0f7e7475f77 - md5: 05ecb9e7a6f7bc5319aa61866545a746 +- conda: https://conda.anaconda.org/conda-forge/noarch/etils-1.13.0-pyhd8ed1ab_0.conda + sha256: f3d500a61d04a26d1df5d9b45cacd4ac6eba1c31741d19d7604e11953dbb9f8d + md5: f9fa16b528ae31f70e11ab35116c3ab8 depends: - python >=3.10 license: Apache-2.0 @@ -19170,8 +19352,8 @@ packages: purls: - pkg:pypi/etils?source=hash-mapping run_exports: {} - size: 787805 - timestamp: 1741838050970 + size: 794665 + timestamp: 1785007441185 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda sha256: ee6cf346d017d954255bbcbdb424cddea4d14e4ed7e9813e429db1d795d01144 md5: 8e662bd460bda79b1ea39194e3c4c9ab @@ -19212,17 +19394,17 @@ packages: run_exports: {} size: 55825 timestamp: 1775457354890 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda - sha256: aa1035fbdc0c8fbe66a82ae4630b6ed73b832c2c0c52bd7b45b5f3bd54f51df6 - md5: 288126f559a8a6cacabe59c73327fe1f +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.32.2-pyhd8ed1ab_0.conda + sha256: 5476fe77cc2f59389dd348135462892dc20f42114301221648df90a6e9650186 + md5: 977e2b00d5329b6d56ebe94ae1f4b67c depends: - python >=3.10 license: Unlicense purls: - - pkg:pypi/filelock?source=compressed-mapping + - pkg:pypi/filelock?source=hash-mapping run_exports: {} - size: 38993 - timestamp: 1783063554943 + size: 77939 + timestamp: 1785376409053 - conda: https://conda.anaconda.org/conda-forge/noarch/flake8-7.3.0-pyhd8ed1ab_0.conda sha256: a32e511ea71a9667666935fd9f497f00bcc6ed0099ef04b9416ac24606854d58 md5: 04a55140685296b25b79ad942264c0ef @@ -19386,18 +19568,18 @@ packages: run_exports: {} size: 4059 timestamp: 1762351264405 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.6.0-pyhd8ed1ab_0.conda - sha256: fe0156e6d658be3531aad2a99e42e8ad1ee23c69837d469c44c1b6010373913d - md5: 7d7e6c826ba0743fc491ebee0e7b899c +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.7.0-pyhd8ed1ab_0.conda + sha256: 3cd1c985695d8114bdba2a4a38c87e86d633fadd7cfe7a6733ebb3fe807fdc86 + md5: b9176565976c773a0739bd83deaf06cc depends: - python >=3.10 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/fsspec?source=compressed-mapping + - pkg:pypi/fsspec?source=hash-mapping run_exports: {} - size: 149709 - timestamp: 1781615868173 + size: 151868 + timestamp: 1785325238671 - conda: https://conda.anaconda.org/conda-forge/noarch/git-subrepo-0.4.9-hc364b38_3.conda sha256: 1095cdcb8bb889d50c399e07609b7217a27f8305e4ac70b3f46b9e0d94ed4760 md5: 3057964958da1fc0ec119951dd6775e2 @@ -19422,9 +19604,9 @@ packages: run_exports: {} size: 53136 timestamp: 1735887290843 -- conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.50-pyhd8ed1ab_0.conda - sha256: 718c9d0cc287ffda978996c4105ddd2863dd7bad7fb5794cdd365bd809ef2fa5 - md5: 98958318a01373a615f119b1040b3027 +- conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.58-pyhd8ed1ab_0.conda + sha256: 43398f3d71b4848c812138a038c5a31259de8411576142aec02ae32059933ccf + md5: bc8f693d50dd19da32818460fd3f532f depends: - gitdb >=4.0.1,<5 - python >=3.10 @@ -19434,23 +19616,23 @@ packages: purls: - pkg:pypi/gitpython?source=hash-mapping run_exports: {} - size: 162193 - timestamp: 1778065820061 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - sha256: 84c64443368f84b600bfecc529a1194a3b14c3656ee2e832d15a20e0329b6da3 - md5: 164fc43f0b53b6e3a7bc7dce5e4f1dc9 + size: 167633 + timestamp: 1785926562206 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + sha256: 307dd6ec90140c3cf4171071b0e5e870abec314f4565c1edd5bc433e942cdcc0 + md5: e652ac7756069c456d0da2a922cd7df5 depends: - python >=3.10 - hyperframe >=6.1,<7 - - hpack >=4.1,<5 + - hpack >=4.2,<5 - python license: MIT license_family: MIT purls: - pkg:pypi/h2?source=hash-mapping run_exports: {} - size: 95967 - timestamp: 1756364871835 + size: 100789 + timestamp: 1785796355216 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda sha256: fdcea5d7cb314485d3907192ef024c704311548c5b0cbeb390cd1951051e29d2 md5: b395909221b9bd1df066e5930e18855b @@ -19459,7 +19641,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/hpack?source=compressed-mapping + - pkg:pypi/hpack?source=hash-mapping run_exports: {} size: 32884 timestamp: 1782283986153 @@ -19510,7 +19692,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/idna?source=compressed-mapping + - pkg:pypi/idna?source=hash-mapping run_exports: {} size: 163869 timestamp: 1781620148226 @@ -19536,7 +19718,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/importlib-metadata?source=compressed-mapping + - pkg:pypi/importlib-metadata?source=hash-mapping run_exports: {} size: 34766 timestamp: 1779714582554 @@ -19579,12 +19761,11 @@ packages: run_exports: {} size: 132825 timestamp: 1760146119847 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.15.0-pyh53cf698_0.conda - sha256: d9fa14ec35119901bf702a9a3e8a5570daef2aada7d03878e4c24d9de912302b - md5: 2f4ea7f616b30363d8dde5cc15e7af2e +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.16.1-pyh53cf698_0.conda + sha256: 8470648b5e790d1881c09c02068d53e1bf0126f020db02a6dc2e73400cf1eeeb + md5: 23564ed27c9c7714905be96ac5786500 depends: - __unix - - decorator >=5.1.0 - ipython_pygments_lexers >=1.0.0 - jedi >=0.18.2 - matplotlib-inline >=0.1.6 @@ -19600,10 +19781,10 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/ipython?source=compressed-mapping + - pkg:pypi/ipython?source=hash-mapping run_exports: {} - size: 658801 - timestamp: 1782482716877 + size: 716078 + timestamp: 1785754203352 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda sha256: 894682a42a7d659ae12878dbcb274516a7031bbea9104e92f8e88c1f2765a104 md5: bd80ba060603cc228d9d81c257093119 @@ -19651,7 +19832,7 @@ packages: - python license: Apache-2.0 AND MIT purls: - - pkg:pypi/jedi?source=compressed-mapping + - pkg:pypi/jedi?source=hash-mapping run_exports: {} size: 2715215 timestamp: 1782251948616 @@ -19703,90 +19884,90 @@ packages: run_exports: {} size: 86134 timestamp: 1725742423890 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda - sha256: e1815bb11d5abe886979e95889d84310d83d078d36a3567ca67cbf57a3876d88 - md5: 7d517e32d656a8880d98c0e4fc8ddc2c +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.4.0-hd9a9cd0_101.conda + sha256: dd2fd8417476a4086dc5a5ac64a884cf953c7799ac329ddea9da36f056008110 + md5: 8bd1e927275c36238cc26cc9181fd191 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 3091520 - timestamp: 1778268364856 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - sha256: 38a557eba305468ac1f90ac85e50d8defd76141cb0b8a43b2fc1aca71dd5d5f2 - md5: 683fcb168e1df9a21fa80d5aa2d9330b + size: 3084295 + timestamp: 1785374455100 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-16.1.0-h59071f9_101.conda + sha256: b314251d957b16c71ec241119ac09b9530c5c4ce140026ec98d297f55d6c5e08 + md5: 19b0151ecb1d122f706ebd2f82f9a017 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: {} - size: 3095909 - timestamp: 1778268932148 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.3.0-h25ba3ff_119.conda - sha256: e06d098cd33eac577b9c994a47243de5439ca8fd9ff6e790723fbfdc3d61a76c - md5: 970ca6cb337de6a7bccfaaa344e9863b + size: 3096495 + timestamp: 1785375361053 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-14.4.0-ha8b83fe_100.conda + sha256: 96cec6901c1918ae884d1f068732d657ea384b5e30dfe8b3c953728db8c7356c + md5: e2fb38723f4aabe18f70cc697e4bc5e8 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 2346647 - timestamp: 1778268433769 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - sha256: fe600a63a39281e6994e27fe79360cd6bd8e576c3ce1af32ce8673b011f46c21 - md5: 18ad0f0b94071d91fa962a1bf3983a78 + size: 2349679 + timestamp: 1785268301626 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-16.1.0-hd673532_101.conda + sha256: 885f0d8a47f7ea50d7b33d07a240f2301935602b9d2a39a35b5018b13e934100 + md5: 00cdfad75c8331e103f830fb17184da1 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: {} - size: 2353893 - timestamp: 1778268665954 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda - sha256: 1b4263aa5d8c8c659e8e38b66868f42867347e0c8941513ee77269afc00a5186 - md5: d1a866495b9654ccfef5392b8541dc58 + size: 2357226 + timestamp: 1785374433650 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.4.0-ha5b54cb_101.conda + sha256: 726c006d8f078a68b15d715b64e8c72a4b10907fa1a812dfcaef9ed888c03480 + md5: 774c4627558281a7f6f7ae7b39d6fac1 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 20199810 - timestamp: 1778268389428 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - sha256: a2385f3611d5cd25378f9cf2367183320731709c067ddd08d43330d3170f15b8 - md5: bcfe7eae40158c3e355d2f9d3ed41230 + size: 19516469 + timestamp: 1785374476067 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-16.1.0-h41cdd0d_101.conda + sha256: c1521172f2fdf5510d79b621ea835064209fe3131518e0d8b2b43362a75e7b4c + md5: 8593636203272a748b63d56cbd674753 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: {} - size: 20765069 - timestamp: 1778268963689 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.3.0-h57c8d61_119.conda - sha256: 918ae042d508617da3c06fb55332f1280340eb705a69a0b1d14fa6fddb790145 - md5: 8c7bc9930a1b7c38557311fbea9a433f + size: 22519609 + timestamp: 1785375386152 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-14.4.0-hc896aa5_100.conda + sha256: e7c9259667173b30513afec18fcc4b3968d310bbfd791773e72ee8f65ef74154 + md5: 11c3c59c6469fee10a0b41dfed924978 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 17587589 - timestamp: 1778268454520 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - sha256: 6f7ceee16070781b7d642a37a35ffdf09c66796d3df105c919526210ce220443 - md5: 61da34d67f58dd4cf16683f6cdcb06c8 + size: 16849926 + timestamp: 1785268324152 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-16.1.0-h2445e1f_101.conda + sha256: 926d2c2dedfca7334804d5c8a0727a3746ef580be8763f51ccc2ece24c7be56c + md5: d2cd8c4b92b4e6dbcb2616d855107aca depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL run_exports: {} - size: 17627362 - timestamp: 1778268687968 + size: 19792513 + timestamp: 1785374457502 - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda sha256: e4a07f357a4cf195a2345dabd98deab80f4d53574abe712a9cc7f22d3f2cc2c3 md5: 49647ac1de4d1e4b49124aedf3934e02 @@ -19915,19 +20096,19 @@ packages: run_exports: {} size: 50107 timestamp: 1780355713540 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.2-pyhc364b38_0.conda - sha256: 3906abfb6511a3bb309e39b9b1b7bc38f50a723971de2395489fd1f379255890 - md5: 4c06a92e74452cfa53623a81592e8934 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.3-pyhc364b38_0.conda + sha256: c432626b16768b8dab228bfb706f7060c2d462a21c516d240f68f2f902b5a044 + md5: 936687ed80f295a1f5dbcf8bd34c252c depends: - - python >=3.8 + - python >=3.9 - python license: Apache-2.0 license_family: APACHE purls: - pkg:pypi/packaging?source=hash-mapping run_exports: {} - size: 91574 - timestamp: 1777103621679 + size: 116363 + timestamp: 1785888127370 - conda: https://conda.anaconda.org/conda-forge/noarch/paramiko-4.0.0-pyhd8ed1ab_0.conda sha256: ce76d5a1fc6c7ef636cbdbf14ce2d601a1bfa0dd8d286507c1fd02546fccb94b md5: 1a884d2b1ea21abfb73911dcdb8342e4 @@ -19994,19 +20175,18 @@ packages: run_exports: {} size: 53561 timestamp: 1733302019362 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.10.0-pyhcf101f3_0.conda - sha256: 9e5e1fd3506ccfc4d444fc4d2d39b0ed097d5d0e3bd3d4bdf6bcc81aaf66860d - md5: 2c5ef45db85d34799771629bd5860fd7 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.1-pyhcf101f3_0.conda + sha256: efa221d8ebb76e5ba98c1e8080e8ba580e59fc9f62cff54b0282efc2d05cd826 + md5: c786a34c15b34520d62affc418ae78bd depends: - python >=3.10 - python license: MIT - license_family: MIT purls: - pkg:pypi/platformdirs?source=compressed-mapping run_exports: {} - size: 26308 - timestamp: 1779972894916 + size: 26817 + timestamp: 1786197727673 - conda: https://conda.anaconda.org/conda-forge/noarch/playsound-1.3.0-pyhd8ed1ab_1.conda sha256: 0adc0f2657a349d3dc27da112362dd293aecedb0ae99515c309597bf833a235c md5: 99249c0d0b9b9663c59337873b16ac63 @@ -20044,9 +20224,9 @@ packages: run_exports: {} size: 49052 timestamp: 1733239818090 -- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.0-pyha770c72_0.conda - sha256: 716960bf0a9eb334458a26b3bdcb17b8d0786062138a4f48c7f335c8418c5d0b - md5: 7859736b4f8ebe6c8481bf48d91c9a1e +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.6.1-pyha770c72_0.conda + sha256: d1d528a9933378ea3734f3ecac83ed4989dc5cba6c0427b237cf35228873a259 + md5: 5f7aee6aa51642db4b57a7a11611dda1 depends: - cfgv >=2.0.0 - identify >=1.0.0 @@ -20059,23 +20239,23 @@ packages: purls: - pkg:pypi/pre-commit?source=hash-mapping run_exports: {} - size: 201606 - timestamp: 1776858157327 -- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - sha256: 4817651a276016f3838957bfdf963386438c70761e9faec7749d411635979bae - md5: edb16f14d920fb3faf17f5ce582942d6 + size: 202254 + timestamp: 1784706397465 +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda + sha256: efe8def2c93aa34cd8d3c9af1dc4c7d312791cf769d8b2b615e32733e6df6051 + md5: 39c92a39517316e5001d645ae63d9ab9 depends: - python >=3.10 - wcwidth constrains: - - prompt_toolkit 3.0.52 + - prompt_toolkit 3.0.53 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/prompt-toolkit?source=hash-mapping run_exports: {} - size: 273927 - timestamp: 1756321848365 + size: 276081 + timestamp: 1785160613307 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 md5: 7d9daffbb8d8e0af0f769dbbcd173a54 @@ -20099,22 +20279,22 @@ packages: run_exports: {} size: 16668 timestamp: 1733569518868 -- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.3-pyhfe8187e_0.conda - sha256: 71a9524f44d6ac6304feae71e2bbe8d8ce0816f0be7a0271c15681ad1040965d - md5: e0f4549ccb507d4af8ed5c5345210673 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-3.0.4-pyh293190f_0.conda + sha256: f213f735f0c2b9bfcc1358c8bdeb0dfcf3614bf2c47aad68227dabea99b0e0d7 + md5: 2e57132f130bffcb5a8b17092b2871bc depends: - python >=3.8 - - pybind11-global ==3.0.3 *_0 + - pybind11-global ==3.0.4 *_0 - python constrains: - pybind11-abi ==11 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pybind11?source=hash-mapping + - pkg:pypi/pybind11?source=compressed-mapping run_exports: {} - size: 247963 - timestamp: 1775004608640 + size: 251088 + timestamp: 1786199539429 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-11-hc364b38_1.conda sha256: 9e7fe12f727acd2787fb5816b2049cef4604b7a00ad3e408c5e709c298ce8bf1 md5: f0599959a2447c1e544e216bddf393fa @@ -20126,9 +20306,9 @@ packages: - pybind11-abi ==11 size: 14671 timestamp: 1752769938071 -- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.3-pyh648e204_0.conda - sha256: 97a0fbd2a81d95e90d714e5c628fe860b29a3caad53abcfb90add1965ad85bef - md5: 7fdc3e18c14b862ae5f064c1ea8e2636 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-3.0.4-pyh648e204_0.conda + sha256: 25e887672e68188a5fa899efdc116acb01d689989493342aac05781ec1f09b81 + md5: e594cb485091100204e0b77cb5709896 depends: - python >=3.8 - __unix @@ -20138,10 +20318,10 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pybind11-global?source=hash-mapping + - pkg:pypi/pybind11-global?source=compressed-mapping run_exports: {} - size: 243898 - timestamp: 1775004520432 + size: 244363 + timestamp: 1786199539429 - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.14.0-pyhd8ed1ab_0.conda sha256: 1950f71ff44e64163e176b1ca34812afc1a104075c3190de50597e1623eb7d53 md5: 85815c6a22905c080111ec8d56741454 @@ -20163,7 +20343,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/pycparser?source=compressed-mapping + - pkg:pypi/pycparser?source=hash-mapping run_exports: {} size: 55886 timestamp: 1779293633166 @@ -20208,9 +20388,9 @@ packages: run_exports: {} size: 59592 timestamp: 1750492011671 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.0-pyha770c72_0.conda - sha256: 1a3143f429501d3cae877d5ffe5cc07b2422c2145e73d5abdf22b29ae0ce0250 - md5: 6756789a134e25ec77d4697a1f9462fb +- conda: https://conda.anaconda.org/conda-forge/noarch/pyglfw-2.10.2-pyha770c72_0.conda + sha256: c7e13e177ca4ae25567131c5b54798140b0990cc42b5597ff41f27a4d43f5f95 + md5: 5c876ba742d0198d2359b7ba44cafaae depends: - glfw - python >=3.10 @@ -20219,8 +20399,8 @@ packages: purls: - pkg:pypi/glfw?source=hash-mapping run_exports: {} - size: 31744 - timestamp: 1757704430445 + size: 36345 + timestamp: 1784661268436 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86 md5: 16c18772b340887160c79a6acc022db0 @@ -20395,9 +20575,9 @@ packages: run_exports: {} size: 233310 timestamp: 1751104122689 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.4.2-pyhcf101f3_0.conda - sha256: 6914da740f6e3ec44ffb2f687dbc9c33abf084e42f34e3a8bb8235e475850619 - md5: 7a9095c9300d1b50b1785ca9bc4cadae +- conda: https://conda.anaconda.org/conda-forge/noarch/python-discovery-1.5.1-pyhcf101f3_0.conda + sha256: df1023b39a323a753963f5f50028f0ded0385f37752a800105451463e64f597c + md5: 5fd6bf90409294513b84439f6c184ff2 depends: - python >=3.10 - filelock >=3.15.4 @@ -20406,13 +20586,13 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/python-discovery?source=compressed-mapping + - pkg:pypi/python-discovery?source=hash-mapping run_exports: {} - size: 35514 - timestamp: 1781257630962 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.9.23-pyh1e1bc0e_0.conda - sha256: 1933243d9f839bb7bc6c9b75481b6445f50f8b727eb926086e8a2a347fb0467d - md5: 611207751a2c0b5b999b07b78985d7a0 + size: 37229 + timestamp: 1785577890125 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-flatbuffers-25.12.19-pyh9d96877_0.conda + sha256: dff2f2fc462996f71686c05a0fba78a0dc919034ef8d879dd8366534ad64c0f1 + md5: 3a28cf4d2187c1dfb0c31aedbf275b8c depends: - python >=3.10 license: Apache-2.0 @@ -20420,8 +20600,8 @@ packages: purls: - pkg:pypi/flatbuffers?source=hash-mapping run_exports: {} - size: 34827 - timestamp: 1758880404905 + size: 35556 + timestamp: 1784053026634 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda build_number: 8 sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 @@ -20449,7 +20629,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/requests?source=compressed-mapping + - pkg:pypi/requests?source=hash-mapping run_exports: {} size: 68709 timestamp: 1778851103479 @@ -20523,54 +20703,32 @@ packages: run_exports: {} size: 31852 timestamp: 1766125246079 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - sha256: 5648c6537f45ff93086d73eba6c05f301600c00976fc7816266106cd175d8582 - md5: eb5d17c41bf545c0bc1bf7d545825c5a +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.97.1-hbe8e118_0.conda + sha256: b88e094a3607eb7517e4c0e1608921958e80d66b91713a40aaa216582b8a538c + md5: a9e69782be2221cb028c53b44397e348 depends: - __unix constrains: - - rust >=1.91.1,<1.91.2.0a0 - license: MIT - license_family: MIT - run_exports: {} - size: 37290717 - timestamp: 1762816473116 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - sha256: 8e86745ce1655e126d52b6a1908e4cd8721dc031fc944dbc5ba12838f6f945a5 - md5: c6a198001bc91ef594731364d10dbce3 - depends: - - __unix - constrains: - - rust >=1.96.0,<1.96.1.0a0 - license: MIT - license_family: MIT - run_exports: {} - size: 35596879 - timestamp: 1780046657529 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda - sha256: 21925ee23f5a7522a191a67f640a765ff67c4f028db95d6f41634e22449cd4af - md5: 2a3345e21b15b8659310e01e9c6eda60 - depends: - - __unix - constrains: - - rust >=1.91.1,<1.91.2.0a0 + - rust >=1.97.1,<1.97.2.0a0 license: MIT license_family: MIT + purls: [] run_exports: {} - size: 38139898 - timestamp: 1762816495933 -- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - sha256: e8c453fc331eedd6b7a02356d177802a2c03b0bc6490d86c0e63c15ef172d53f - md5: cbbc8546ba8381cb792744564cec0430 + size: 37831808 + timestamp: 1784278701443 +- conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.97.1-h2c6d0dc_0.conda + sha256: a00778be0151d1351d45b2f7b9f986321b682e132acabbc585992375c7cc4f8d + md5: d530601fa0c954eda9b76db577e95315 depends: - __unix constrains: - - rust >=1.96.0,<1.96.1.0a0 + - rust >=1.97.1,<1.97.2.0a0 license: MIT license_family: MIT + purls: [] run_exports: {} - size: 36676677 - timestamp: 1780046295074 + size: 37492970 + timestamp: 1784279804310 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda sha256: dc5a777597e05ceddefc87d2f96389b7ae0afb097e558307af83a453db3e3887 md5: 4fe12573bf499ff85a0a364e00cc5c53 @@ -20583,16 +20741,16 @@ packages: run_exports: {} size: 462324 timestamp: 1692383535614 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.1-pyh332efcf_0.conda - sha256: 82088a6e4daa33329a30bc26dc19a98c7c1d3f05c0f73ce9845d4eab4924e9e1 - md5: 8e194e7b992f99a5015edbd4ebd38efd +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-84.0.0-pyh332efcf_0.conda + sha256: 9e200ee5f9ff19a4d94e4b51c4856d53dec849f91032f345cf0c6bc3d51a7183 + md5: 62ac906f1cd582c6c264c95625cb9d6f depends: - python >=3.10 license: MIT license_family: MIT run_exports: {} - size: 639697 - timestamp: 1773074868565 + size: 524488 + timestamp: 1786282924579 - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.7-pyhd8ed1ab_0.conda sha256: d856c322601d16710793f29abc0e35c1910e19310577d15dddffbff8bda97328 md5: b7ccd2113dda4c8ac1f4821a6d8690a4 @@ -20684,33 +20842,33 @@ packages: run_exports: {} size: 1424416 timestamp: 1740956642838 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-hd8ed1ab_0.conda - noarch: python - sha256: ae5e8e514f21e6f62b63c13f684939ba007168bfd7742e8cb573fce69fbf62da - md5: 3b1a32d3d5c2064822203f2a6f3f1173 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx-rtd-theme-3.1.0-h9eada29_2.conda + sha256: 22154483c70c02172e032ce46e74f98bff4073030ea63af39f6af4c87528f7cf + md5: ab7ab7348274fc4af1c6bc4961cbf692 depends: - - sphinx_rtd_theme 3.1.0 pyha770c72_0 + - sphinx_rtd_theme ==3.1.0 pyhcf101f3_2 license: MIT license_family: MIT purls: [] run_exports: {} - size: 7240 - timestamp: 1769194861913 -- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyha770c72_0.conda - sha256: 1d57a0cd74ecc0e5dc006f6591145d1abb6658464919d4aeb163d3db714f80e6 - md5: cede6bc99a0253fa676f03cfdc666d57 + size: 4103 + timestamp: 1785314437148 +- conda: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-3.1.0-pyhcf101f3_2.conda + sha256: 3581a8335a0da4de41f4344c4f1113a11fcbbb7933577ace813602e263842b02 + md5: 787507b1d0f5c00c186b2f66adacc3ab depends: - - docutils >0.18,<0.22 - - python >=3.8 - - sphinx >=6,<9 + - python >=3.10 + - sphinx >=6,<10 + - docutils >0.18,<0.23 - sphinxcontrib-jquery >=4,<5 + - python license: MIT license_family: MIT purls: - pkg:pypi/sphinx-rtd-theme?source=hash-mapping run_exports: {} - size: 4626882 - timestamp: 1769194859566 + size: 6616185 + timestamp: 1785314437148 - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_1.conda sha256: d7433a344a9ad32a680b881c81b0034bc61618d12c39dd6e3309abeffa9577ba md5: 16e3f039c0aa6446513e94ab18a8784b @@ -20871,19 +21029,19 @@ packages: run_exports: {} size: 21561 timestamp: 1774492402955 -- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.15.1-pyhcf101f3_0.conda - sha256: b89a823edf524956b94a2a4db974866e4501f05c68976eff458c5dcf07f88431 - md5: 37e3be7b6e2977d37b8fa5da229f5dc0 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda + sha256: 03dba5917f944c6684ab44c81daacac1624cd148e4b2cae215dcec594a210c48 + md5: a79bf97561232a31447b6246c2153ab5 depends: - python >=3.10 - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/traitlets?source=compressed-mapping + - pkg:pypi/traitlets?source=hash-mapping run_exports: {} - size: 115158 - timestamp: 1780507822178 + size: 116935 + timestamp: 1785761789772 - conda: https://conda.anaconda.org/conda-forge/noarch/transforms3d-0.4.2-pyhd8ed1ab_1.conda sha256: 2e018673c5e48d001e7e3e921567983ec322d732b6b389e7b534cc300d19c0c8 md5: 711ff5140ada9166b4b4d914a0f2fe0a @@ -20897,13 +21055,12 @@ packages: run_exports: {} size: 2690384 timestamp: 1734511238605 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.2-pyhcf101f3_0.conda - sha256: 59d7851d32fddb5b510272e6557aa982edeb927d349648dac27f5bf01d18bb26 - md5: 4460f039b7dedf15f7df086446ca75ae +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.6.0-pyhcf101f3_0.conda + sha256: 82cb76b4dd554d1da90a9e1ea5f99e24aaa4997bcd19ceef8233fc17d9da432e + md5: a61716f1640d9986d5d6de1c4d140b42 depends: - typing_extensions >=4.14.0 - python >=3.10 - - importlib-metadata >=3.6 - python constrains: - pytest >=7 @@ -20912,8 +21069,8 @@ packages: purls: - pkg:pypi/typeguard?source=hash-mapping run_exports: {} - size: 38297 - timestamp: 1778779291237 + size: 38525 + timestamp: 1785075519409 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda sha256: 2d888f90af0686044882c74193ec80a90ec1943145d94a7b1b048958acda1848 md5: c70ad746c22219b9700931707482992c @@ -20921,19 +21078,20 @@ packages: - python >=3.10 - python license: PSF-2.0 + license_family: PSF purls: - - pkg:pypi/typing-extensions?source=compressed-mapping + - pkg:pypi/typing-extensions?source=hash-mapping run_exports: {} size: 52631 timestamp: 1783002732887 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c - md5: ad659d0a2b3e47e38d829aa8cad2d610 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2026c-h151e31d_0.conda + sha256: b928c30ddcb0e3f544c6eade8352737e6e610e263276b90232db6a578ef899d8 + md5: fcb489df604d100968b737f2cb6076c6 license: LicenseRef-Public-Domain purls: [] run_exports: {} - size: 119135 - timestamp: 1767016325805 + size: 118849 + timestamp: 1784250406640 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4 md5: cbb88288f74dbe6ada1c6c7d0a97223e @@ -20950,9 +21108,9 @@ packages: run_exports: {} size: 103560 timestamp: 1778188657149 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - sha256: 0a7b0a2ada7ad719f9d4f8874eb10911e1fcfdecefc86456105eb806ebd60ac4 - md5: e449fb99b714be1e13fa5564dacd1af5 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.7.3-pyhcf101f3_0.conda + sha256: 33fd59a523f014938b570b773bcd0e10c3d005d25bcaa7e3038eeb57f83a8ae3 + md5: f493af83e599a1b8b103afaf99c38dd6 depends: - python >=3.10 - distlib >=0.3.7,<1 @@ -20963,12 +21121,11 @@ packages: - typing_extensions >=4.13.2 - python license: MIT - license_family: MIT purls: - - pkg:pypi/virtualenv?source=hash-mapping + - pkg:pypi/virtualenv?source=compressed-mapping run_exports: {} - size: 3111990 - timestamp: 1781651033074 + size: 3744220 + timestamp: 1786221803596 - conda: https://conda.anaconda.org/conda-forge/noarch/wadler-lindig-0.1.7-pyhe01879c_0.conda sha256: af400decd8578d521c752594bb9380eb4d1e1e53e919c18dd2d65429f032e36c md5: d93a6a7cf86ac0c6c2f00c287c3a030c @@ -20999,7 +21156,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/wcwidth?source=compressed-mapping + - pkg:pypi/wcwidth?source=hash-mapping run_exports: {} size: 132415 timestamp: 1782771807703 @@ -21027,7 +21184,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/wslink?source=compressed-mapping + - pkg:pypi/wslink?source=hash-mapping run_exports: {} size: 36803 timestamp: 1778826669944 @@ -21040,7 +21197,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/zipp?source=compressed-mapping + - pkg:pypi/zipp?source=hash-mapping run_exports: {} size: 24190 timestamp: 1779159948016 @@ -37248,145 +37405,6 @@ packages: license: LicenseRef-openrail size: 244991335 timestamp: 1771976595791 -- conda_source: bitbots_rust_nav[146a3083] @ src/bitbots_navigation/bitbots_rust_nav - variants: - c_stdlib: sysroot - c_stdlib_version: '2.28' - target_platform: linux-64 - depends: - - python >=3.12 - - __glibc >=2.28,<3.0.a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.45.1-default_h4852527_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-15.2.0-h7be306e_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.96.0-h53717f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust_linux-64-1.96.0-hd58cd63_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.96.0-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-default_hfdba357_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-ha6850e4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-h90f66d4_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.14.1-py310h2b5ca13_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.13-hd63d673_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rust-1.91.1-h53717f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.11.26-h26efc2c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-hcc6f6b0_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-hd446a21_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-x86_64-unknown-linux-gnu-1.91.1-h2c6d0dc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda -- conda_source: bitbots_rust_nav[36aa2fce] @ src/bitbots_navigation/bitbots_rust_nav - variants: - c_stdlib: sysroot - c_stdlib_version: '2.28' - target_platform: linux-aarch64 - depends: - - python >=3.12 - - __glibc >=2.28,<3.0.a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - - __glibc >=2.17 - build_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.45.1-default_hf1166c9_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-15.2.0-h0bf4bd8_27.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.96.0-h6cf38e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust_linux-aarch64-1.96.0-hb84128a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.96.0-hbe8e118_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - host_packages: - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-20_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.45.1-default_h5f4c503_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h4777abc_9.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-15.2.0-h74e174c_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-78.3-hcab7f73_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.45.1-default_h1979696_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.8.1-hfae3067_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.5.2-h376a255_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.2.0-he9431aa_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.2.0-h8acb6b2_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.3-he30d5cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-15.2.0-he19c465_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.53.3-h10b116e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.2.0-hef695bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.42.2-h1022ec0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.2-hdc9db2a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/maturin-1.14.1-py310he8189be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.6-hf8d1292_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.6.3-h546c87b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.13-h91f4b29_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rust-1.91.1-h6cf38e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h0dc03b3_103.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uv-0.11.26-haa595b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-h85ac4a6_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-15.2.0-h55c397f_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-15.2.0-ha7b1723_119.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rust-std-aarch64-unknown-linux-gnu-1.91.1-hbe8e118_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.28-h585391f_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://data.bit-bots.de/conda-misc/output/noarch/readline-8.3-h4616a5c_1.conda - pypi: https://files.pythonhosted.org/packages/05/98/716a473cfb24750858ddd5d14e6527539dd206583a46408d08eeb2844a75/trimesh-4.12.2-py3-none-any.whl name: trimesh version: 4.12.2 @@ -37448,11 +37466,6 @@ packages: - pytest ; extra == 'dev' - ruff ; extra == 'dev' requires_python: '>=3.10,<3.14' -- pypi: https://files.pythonhosted.org/packages/18/29/71729b4671f21e1eaa5d6573031ab810ad2936c8175f03f97f3ff164c802/websockets-16.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl - name: websockets - version: '16.0' - sha256: 9b5aca38b67492ef518a8ab76851862488a478602229112c4b0d58d63a7a4d5c - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/1e/15/efef5a2f204a64bdb5571e6161d49f7ef0fffdbca953a615efbec045f60f/zstandard-0.25.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl name: zstandard version: 0.25.0 @@ -37461,10 +37474,10 @@ packages: - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/49/fa/391e437a34e55095173dca5f24070d89cbc233ff85bf1c29c93248c6588d/imageio-2.37.3-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/3e/2d/ca050652104bab2cf55e569db2a178b1b61cb041fef28307f2db383f6d9f/imageio-2.37.4-py3-none-any.whl name: imageio - version: 2.37.3 - sha256: 46f5bb8522cd421c0f5ae104d8268f569d856b29eb1a13b92829d1970f32c9f0 + version: 2.37.4 + sha256: 1ab2e22c8debf700f24c3ac43e8f95f3b3a8110c83b93411e97b4b0b2cd1c7e6 requires_dist: - numpy - pillow>=8.3.2 @@ -37505,7 +37518,6 @@ packages: - imageio-ffmpeg ; extra == 'all-plugins-pypy' - pillow-heif ; extra == 'all-plugins-pypy' - psutil ; extra == 'all-plugins-pypy' - - tifffile ; extra == 'all-plugins-pypy' - astropy ; extra == 'full' - av ; extra == 'full' - black ; extra == 'full' @@ -37582,17 +37594,10 @@ packages: - cffi~=1.17 ; python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' - cffi>=2.0.0b0 ; python_full_version >= '3.14' and platform_python_implementation != 'PyPy' and extra == 'cffi' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/5e/f5/0c41cb68dcae6b7de4fac4188a3a9589e21fb31df21ea3a2e888db95e6c9/soupsieve-2.8.4-py3-none-any.whl - name: soupsieve - version: 2.8.4 - sha256: e7e6b0769c8f51ed59acab6e994b00621096cfb1c640a7509295987388fbaf65 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/69/80/0c7095f357afeb52100d312250354d2e76afb779c81fe3fb52118076fa5a/syrupy-5.4.0-py3-none-any.whl - name: syrupy - version: 5.4.0 - sha256: 3079017f0c6d3c1b293b57ad2af15cc7851d8eceba922896bdb3bc4834df4ce8 - requires_dist: - - pytest>=8.0.0 +- pypi: https://files.pythonhosted.org/packages/6f/79/4ff9dcc1bb46f6b4c536936dde1fd60f9b564f3304307274db97f4c9496d/websockets-16.1.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl + name: websockets + version: 16.1.1 + sha256: 8087e82f842609734c9b5a1330464f8e94e346ba0e18c832c08bafa4b0d63c15 requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/88/c6/92fcd42f1ba33e1184263f25bfabf3d27c383410470f169e4b8163bf9c17/beautifulsoup4-4.15.0-py3-none-any.whl name: beautifulsoup4 @@ -37616,10 +37621,12 @@ packages: - tomli-w ; extra == 'toml' - pyyaml ; extra == 'yaml' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/97/bb/21c36b7dbbafc85d2d480cd65df02a1dc93bf76d97147605a8e27ff9409d/websockets-16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl - name: websockets - version: '16.0' - sha256: e0334872c0a37b606418ac52f6ab9cfd17317ac26365f7f65e203e2d0d0d359f +- pypi: https://files.pythonhosted.org/packages/ae/f9/617a194c1a4203279998e1859426cf2635042533a99a93d63d3ee1fb967e/syrupy-5.5.3-py3-none-any.whl + name: syrupy + version: 5.5.3 + sha256: 0b260a0c9dad55e1fb83818973dc36fbc1aea3fd5381592f442a986686c4171a + requires_dist: + - pytest>=8.0.0 requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/b5/d1/d4cd9fe89c7d400d7a18f86ccc94daa3f0927f53558846fcb60791dce5d6/msgspec-0.21.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: msgspec @@ -37630,20 +37637,6 @@ packages: - tomli-w ; extra == 'toml' - pyyaml ; extra == 'yaml' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/d8/8e/bb97bb0c71802080bfc8952937d174e49cfc50de5c951dd47b2496f0dcdb/tqdm-4.68.3-py3-none-any.whl - name: tqdm - version: 4.68.3 - sha256: 39832cc2def2789a6f29df83f172db7416cea70052c0907a57801c5f2fdccb03 - requires_dist: - - colorama ; sys_platform == 'win32' - - requests ; extra == 'discord' - - envwrap ; extra == 'discord' - - slack-sdk ; extra == 'slack' - - envwrap ; extra == 'slack' - - requests ; extra == 'telegram' - - envwrap ; extra == 'telegram' - - ipywidgets>=6 ; extra == 'notebook' - requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/ea/78/9a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf/exhale-0.3.7-py3-none-any.whl name: exhale version: 0.3.7 @@ -37655,3 +37648,27 @@ packages: - lxml - six requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/eb/dc/ad025c1ee131eba60c69f4dd5779b18fcf1e6b21a343e2162a84d5d133c7/soupsieve-2.9.2-py3-none-any.whl + name: soupsieve + version: 2.9.2 + sha256: 8089a26fd974ca7a1f30276d3d8492ab266ab15af581642dfe8aa162e0c1c823 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f9/1c/01bfd571a64e7f270e6bab5e33777debe0edc56759233ce84f27dec92d14/tqdm-4.70.0-py3-none-any.whl + name: tqdm + version: 4.70.0 + sha256: 7f585706bfddbdebf89daac705b2dfcc16890130727d3197ca62c732b4310953 + requires_dist: + - colorama ; sys_platform == 'win32' + - requests ; extra == 'discord' + - envwrap ; extra == 'discord' + - slack-sdk ; extra == 'slack' + - envwrap ; extra == 'slack' + - requests ; extra == 'telegram' + - envwrap ; extra == 'telegram' + - ipywidgets>=6 ; extra == 'notebook' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/fe/ed/f1831681fce0e3242346e5458486003c5f124ed69e5e0b847fd029db4973/websockets-16.1.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + name: websockets + version: 16.1.1 + sha256: 0f62863e8a00a6d33c3d6566ec0b89f23787b747ffe0c3bc71ec0e76b82c94b1 + requires_python: '>=3.10' diff --git a/pixi.toml b/pixi.toml index daaefba65c..30239233ea 100644 --- a/pixi.toml +++ b/pixi.toml @@ -13,6 +13,7 @@ version = "0.1.0" [tasks] zenoh = "ros2 run rmw_zenoh_cpp rmw_zenohd" deploy = {cmd = "scripts/deploy_robots.py", description = "Deploys the current environment."} +teamplayer = { cmd = "ros2 run bitbots_bringup teamplayer", description = "Launch the main software components" } # Default stage `pre-commit` enables ruff auto-formatting, stage `manual` disables ruff auto-formatting, only shows diff format = {cmd = "sh -c 'pre-commit run --all-files --hook-stage \"${PRE_COMMIT_STAGE:-pre-commit}\"'", description = "Runs code formatting and linting."} @@ -30,18 +31,19 @@ cmd = "colcon build --symlink-install --cmake-args -G 'Unix Makefiles' -DCMAKE_C description = "Builds all ROS 2 packages. Add --packages-select to build specific packages." [tasks.clean] -cmd = "rm -rf 'build/{{ package }}' 'install/{{ package }}' {{ 'log' if not package }}" +cmd = "rm -rf 'build/{{ package }}' 'install/{{ package }}' {{ 'log' if not package }} {{ 'target' if not package }}" args = [{ arg = "package", default = "" }] description = "Cleans build and install files for all ROS 2 packages or a specific one if given." [tasks.test] description = "Runs tests for all ROS 2 packages. Pass additional colcon args (e.g. --packages-select)" # Skipping packages in the src/lib directory as they are not "our" responsibility. They should be tested separately in their own repositories. -cmd = "colcon test --parallel-workers 1 --event-handlers console_direct+ --return-code-on-test-failure --packages-skip audio_common domain_bridge humanoid_base_footprint ipm_image_node soccer_ipm zed_wrapper zed_components zed_msgs zed_ros2 " +cmd = "colcon test --parallel-workers 1 --event-handlers console_direct+ --return-code-on-test-failure --packages-skip audio_common domain_bridge humanoid_base_footprint ipm_image_node soccer_ipm zed_wrapper zed_components zed_msgs zed_ros2 launch launch_pytest launch_testing" [dependencies] # Base dependencies python = "==3.12.1, <3.13" +rust = ">=1.88" # Patches readline = ">=8.2.999" # This is needed because we want to install an empty readline package from our models channel that leads to the system version being used. Otherwise we might have a mismatch between bash (often accessed globally ignoring the env) and readline (provided by the env) breaking everything. @@ -49,6 +51,7 @@ readline = ">=8.2.999" # This is needed because we want to install an empty rea [feature.ros.dependencies] # Misc dependencies for our ROS 2 packages alsa-plugins = ">=1.2.12,<2" +clang = ">=21.1.0,<22" # Needed for r2r rust bindings generation beartype = ">=0.22.6,<0.23" breathe = ">=4.36.0,<5" cbor2 = ">=5.9.0,<6" @@ -59,6 +62,7 @@ construct = ">=2.10.70,<3" eigen = ">=3.4.0,<4" fabric = ">=3.2.2,<4" flask = ">=3.1.2,<4" +fmt = ">=12.1.0,<13" gitpython = ">=3.1.45,<4" git-subrepo = ">=0.4.9,<0.5" invoke = ">=2.2.1,<3" @@ -103,6 +107,8 @@ yaml-cpp = ">=0.8.0,<0.9" regex = ">=2026.4.4,<2027" onnxruntime = ">=1.24.2,<2" # CPU Onnxruntime for python (motion, tts, ...) libonnxruntime-webgpu = ">=1.24.3,<2" # GPU onnxruntime for cpp (self compiled) +libclang = ">=22.1.8,<23" # Needed for r2r rust bindings +libllvm21 = ">=21.1.8,<22" # Needed for r2r rust bindings # Official ROS 2 packages colcon-common-extensions = ">=0.3.0,<0.4" @@ -177,9 +183,6 @@ ros-jazzy-rmw-zenoh-cpp = ">=0.2.9,<0.3" bitbots_model_2026_07_02_flo_yoeo_rf_detr_wm_torso_extension = ">=1.0.0,<2" tts-supertonic = ">=1.0.0,<2" -# Local packages -bitbots_rust_nav = { path = "src/bitbots_navigation/bitbots_rust_nav" } - # Patches pillow = "<12" # this constraint is needed as yoeo specifies the 11 major version and otherwise uv fails to solve given the constrains from the conda ecosystem. setuptools = "==68.1.2" # Pinning setuptools to avoid issues with colcon build @@ -207,12 +210,17 @@ ros-jazzy-robot-localization = ">=3.8.3,<4" # These are only needed on the robot +[activation.env] +CARGO_TARGET_DIR = "$PIXI_PROJECT_ROOT/build/cargo_target" + + [feature.ros.activation.env] #ROS_AUTOMATIC_DISCOVERY_RANGE = "LOCALHOST" RCUTILS_COLORIZED_OUTPUT = "1" RCUTILS_CONSOLE_OUTPUT_FORMAT="[{severity}] [{name}]: {message} ({function_name}() at {file_name}:{line_number})" RMW_IMPLEMENTATION = "rmw_zenoh_cpp" COLCON_LOG_LEVEL = "30" +LIBCLANG_PATH="$CONDA_PREFIX/lib" # Needed for r2r rust bindings on some systems PYTHONWARNINGS="ignore:::setuptools.command.install,ignore:::setuptools.command.easy_install,ignore:::pkg_resources,ignore:easy_install command is deprecated,ignore:setup.py install is deprecated,ignore:pkg_resources:DeprecationWarning" ALSA_PLUGIN_DIR = "/usr/lib/x86_64-linux-gnu/alsa-lib" diff --git a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt index 190fc0c30f..0f33203a7b 100644 --- a/src/bitbots_misc/bitbots_bringup/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_bringup/CMakeLists.txt @@ -4,10 +4,13 @@ project(bitbots_bringup) find_package(bitbots_docs REQUIRED) find_package(ament_cmake REQUIRED) find_package(ament_cmake_python REQUIRED) +find_package(bitbots_cargo REQUIRED) enable_bitbots_docs() install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +cargo_binary(teamplayer) + ament_package() diff --git a/src/bitbots_misc/bitbots_bringup/launch/motion.launch b/src/bitbots_misc/bitbots_bringup/launch/motion.launch index 725a9b59b0..151363bed2 100644 --- a/src/bitbots_misc/bitbots_bringup/launch/motion.launch +++ b/src/bitbots_misc/bitbots_bringup/launch/motion.launch @@ -3,11 +3,14 @@ + - + + + diff --git a/src/bitbots_misc/bitbots_bringup/launch/visualization.launch b/src/bitbots_misc/bitbots_bringup/launch/visualization.launch deleted file mode 100644 index 1b6375e9d0..0000000000 --- a/src/bitbots_misc/bitbots_bringup/launch/visualization.launch +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/bitbots_misc/bitbots_bringup/package.xml b/src/bitbots_misc/bitbots_bringup/package.xml index 51cd1facbd..261b32c57a 100644 --- a/src/bitbots_misc/bitbots_bringup/package.xml +++ b/src/bitbots_misc/bitbots_bringup/package.xml @@ -12,6 +12,7 @@ Hamburg Bit-Bots ament_cmake + bitbots_cargo bitbots_docs diff --git a/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml new file mode 100644 index 0000000000..7bf7465f91 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "teamplayer" +version = "0.1.0" +edition = "2021" + +[[bin]] +name = "teamplayer" +path = "src/main.rs" + +[dependencies] +ratatui = "0.30" +crossterm = { version = "0.28", features = ["event-stream"] } +tokio = { version = "1", features = ["full"] } +anyhow = "1" +futures = "0.3" +nix = { version = "0.27", features = ["signal", "process"] } +ansi-to-tui = "3" +clap = { version = "~4.4", features = ["derive"] } diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/app.rs b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs new file mode 100644 index 0000000000..f8de3cc3a8 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/app.rs @@ -0,0 +1,547 @@ +use std::{ + collections::VecDeque, + sync::{Arc, Mutex}, +}; + +use tokio::{ + io::{AsyncBufReadExt, BufReader}, + process::Command, + sync::mpsc, +}; + +pub use crate::components::GlobalParams; +use crate::components::{COMPONENT_DEFS, FIELDNAME_DEFAULT_HW, FIELDNAME_DEFAULT_SIM}; + +// ─── State types ────────────────────────────────────────────────────────────── + +pub enum HeadlessLine { + Stdout(String), + Stderr(String), +} + +#[derive(Clone, Debug, PartialEq)] +pub enum ProcState { + Idle, + Running, + /// SIGTERM sent, waiting for exit + Stopping, + /// SIGTERM sent, will restart automatically when the process exits + Restarting, + Stopped, + Crashed, +} + +impl ProcState { + pub fn label(&self) -> &'static str { + match self { + ProcState::Idle => "IDLE", + ProcState::Running => "RUN ", + ProcState::Stopping => "STOP", + ProcState::Restarting => "↺ ", + ProcState::Stopped => "DONE", + ProcState::Crashed => "FAIL", + } + } +} + +pub struct ComponentState { + pub comp_idx: usize, + pub enabled: bool, + pub state: ProcState, + pub logs: Arc>>, + pub pids: Vec, + pub task_handles: Vec>, +} + +impl ComponentState { + pub fn new(comp_idx: usize, enabled: bool) -> Self { + Self { + comp_idx, + enabled, + state: ProcState::Idle, + logs: Arc::new(Mutex::new(VecDeque::with_capacity(2000))), + pids: Vec::new(), + task_handles: Vec::new(), + } + } +} + +pub enum AppMsg { + ProcessExited { key: String, code: i32 }, +} + +// ─── Screen / focus ─────────────────────────────────────────────────────────── + +#[derive(PartialEq, Clone)] +pub enum Screen { + Config, + Runtime, + Logs(usize), + AllLogs, +} + +pub enum ConfirmAction { + Quit, + StopAll, +} + +#[derive(Clone, PartialEq, Debug)] +pub enum ConfigFocus { + Zenoh, + Sim, + Fieldname, + DsdFile, + Component(usize), + Start, +} + +// ─── App ────────────────────────────────────────────────────────────────────── + +pub struct App { + pub screen: Screen, + pub params: GlobalParams, + pub components: Vec, + pub config_focus: ConfigFocus, + pub config_fieldname_input: String, + pub config_dsd_input: String, + pub runtime_selected: usize, + pub tick_count: u64, + pub msg_tx: mpsc::UnboundedSender, + pub msg_rx: mpsc::UnboundedReceiver, + pub log_scroll: usize, + pub log_follow: bool, + /// Viewport height written by the draw function so scroll_keys can clamp correctly. + pub log_viewport_height: std::cell::Cell, + pub all_logs: Arc>>, + /// Interleaved stdout/stderr for headless mode; preserves ordering under load. + pub headless_log: Arc>>, + pub show_log_panel: bool, + pub confirm_action: Option, +} + +impl App { + pub fn new() -> Self { + let (msg_tx, msg_rx) = mpsc::unbounded_channel(); + let components: Vec = COMPONENT_DEFS + .iter() + .enumerate() + .map(|(i, def)| { + ComponentState::new( + i, + if def.sim_component { + false + } else { + def.default_enabled + }, + ) + }) + .collect(); + + App { + screen: Screen::Config, + params: GlobalParams::default(), + components, + config_focus: ConfigFocus::Zenoh, + config_fieldname_input: FIELDNAME_DEFAULT_HW.to_string(), + config_dsd_input: "main.dsd".to_string(), + runtime_selected: 0, + tick_count: 0, + msg_tx, + msg_rx, + log_scroll: 0, + log_follow: true, + log_viewport_height: std::cell::Cell::new(0), + all_logs: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), + headless_log: Arc::new(Mutex::new(VecDeque::with_capacity(5000))), + show_log_panel: true, + confirm_action: None, + } + } + + pub fn apply_cli_presets( + &mut self, + sim: bool, + no_zenoh: bool, + fieldname: Option<&str>, + dsd_file: &str, + enable: &[String], + disable: &[String], + ) { + if sim { + self.params.sim = true; + self.apply_sim_toggle(); + } + if let Some(f) = fieldname { + self.params.fieldname = f.to_string(); + self.config_fieldname_input = f.to_string(); + } + self.params.dsd_file = dsd_file.to_string(); + self.config_dsd_input = dsd_file.to_string(); + + if no_zenoh { + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == "zenoh") { + self.components[idx].enabled = false; + self.params.zenoh = false; + } + } + for key in enable { + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == key.as_str()) { + self.components[idx].enabled = true; + } + } + for key in disable { + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == key.as_str()) { + self.components[idx].enabled = false; + } + } + } + + pub fn toggleable_indices(&self) -> Vec { + COMPONENT_DEFS + .iter() + .enumerate() + .filter(|(_, d)| { + !d.infrastructure && !d.sim_component && !(d.hardware_only && self.params.sim) + }) + .map(|(i, _)| i) + .collect() + } + + /// Down: flags row → first component; within a column move down one row; Start → flags. + pub fn config_focus_next(&mut self) { + let n = self.toggleable_indices().len(); + let left_count = (n + 1) / 2; + self.config_focus = match self.config_focus.clone() { + // Flags row: jump straight into the component grid + ConfigFocus::Zenoh + | ConfigFocus::Sim + | ConfigFocus::Fieldname + | ConfigFocus::DsdFile => { + if n > 0 { + ConfigFocus::Component(0) + } else { + ConfigFocus::Start + } + } + // Left column: move down or fall through to Start + ConfigFocus::Component(i) if i < left_count => { + if i + 1 < left_count { + ConfigFocus::Component(i + 1) + } else { + ConfigFocus::Start + } + } + // Right column: move down or fall through to Start + ConfigFocus::Component(i) => { + if i + 1 < n { + ConfigFocus::Component(i + 1) + } else { + ConfigFocus::Start + } + } + // Start wraps back to flags + ConfigFocus::Start => ConfigFocus::Zenoh, + }; + } + + /// Up: top of left column → Zenoh; top of right column → DsdFile; Start → last component; flags → Start. + pub fn config_focus_prev(&mut self) { + let n = self.toggleable_indices().len(); + let left_count = (n + 1) / 2; + self.config_focus = match self.config_focus.clone() { + // Flags row wraps to Start + ConfigFocus::Zenoh + | ConfigFocus::Sim + | ConfigFocus::Fieldname + | ConfigFocus::DsdFile => ConfigFocus::Start, + // Top of left column → back to flags (left side) + ConfigFocus::Component(0) => ConfigFocus::Zenoh, + // Top of right column → back to flags (right side) + ConfigFocus::Component(i) if i == left_count => ConfigFocus::DsdFile, + // Move up within a column + ConfigFocus::Component(i) => ConfigFocus::Component(i - 1), + // Start → bottom of whichever column is longer + ConfigFocus::Start => { + if n > 0 { + ConfigFocus::Component(n - 1) + } else { + ConfigFocus::Zenoh + } + } + }; + } + + pub fn config_focus_right(&mut self) { + let n = self.toggleable_indices().len(); + let left_count = (n + 1) / 2; + match self.config_focus.clone() { + ConfigFocus::Zenoh => self.config_focus = ConfigFocus::Sim, + ConfigFocus::Sim => self.config_focus = ConfigFocus::Fieldname, + ConfigFocus::Fieldname => self.config_focus = ConfigFocus::DsdFile, + ConfigFocus::Component(i) if i < left_count => { + let right = i + left_count; + if right < n { + self.config_focus = ConfigFocus::Component(right); + } + } + _ => {} + } + } + + pub fn config_focus_left(&mut self) { + let left_count = (self.toggleable_indices().len() + 1) / 2; + match self.config_focus.clone() { + ConfigFocus::Sim => self.config_focus = ConfigFocus::Zenoh, + ConfigFocus::Fieldname => self.config_focus = ConfigFocus::Sim, + ConfigFocus::DsdFile => self.config_focus = ConfigFocus::Fieldname, + ConfigFocus::Component(i) if i >= left_count => { + self.config_focus = ConfigFocus::Component(i - left_count); + } + _ => {} + } + } + + pub fn runtime_visible_indices(&self) -> Vec { + COMPONENT_DEFS + .iter() + .enumerate() + .filter(|(i, d)| { + if d.sim_component { + return self.params.sim; + } + if d.hardware_only && self.params.sim { + return false; + } + self.components[*i].enabled + }) + .map(|(i, _)| i) + .collect() + } + + pub fn apply_sim_toggle(&mut self) { + let sim = self.params.sim; + for (i, def) in COMPONENT_DEFS.iter().enumerate() { + if def.sim_component { + self.components[i].enabled = sim; + } else if def.hardware_only { + self.components[i].enabled = !sim && def.default_enabled; + } + } + self.config_fieldname_input = if sim { + FIELDNAME_DEFAULT_SIM + } else { + FIELDNAME_DEFAULT_HW + } + .to_string(); + self.params.fieldname = self.config_fieldname_input.clone(); + self.config_focus = ConfigFocus::Zenoh; + } + + pub async fn start_component(&mut self, comp_idx: usize) { + let def = &COMPONENT_DEFS[comp_idx]; + let cmds = (def.cmds)(&self.params); + let key = def.key.to_string(); + let comp_name = def.name; // &'static str + + let logs = self.components[comp_idx].logs.clone(); + let all_logs = self.all_logs.clone(); + let headless_log = self.headless_log.clone(); + self.components[comp_idx].state = ProcState::Running; + self.components[comp_idx].pids.clear(); + self.components[comp_idx].task_handles.clear(); + + for cmd_args in cmds { + if cmd_args.is_empty() { + continue; + } + let tx = self.msg_tx.clone(); + let logs = logs.clone(); + let all_logs = all_logs.clone(); + let headless_log = headless_log.clone(); + let key = key.clone(); + + let mut child = match Command::new(&cmd_args[0]) + .args(&cmd_args[1..]) + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + .process_group(0) + .kill_on_drop(true) + .spawn() + { + Ok(c) => c, + Err(e) => { + let entry = format!("[ERROR] spawn failed: {e}"); + logs.lock().unwrap().push_back(entry.clone()); + all_logs + .lock() + .unwrap() + .push_back(format!("[{comp_name}] {entry}")); + let _ = tx.send(AppMsg::ProcessExited { key, code: -1 }); + return; + } + }; + + if let Some(pid) = child.id() { + self.components[comp_idx].pids.push(pid); + } + + let stdout = child.stdout.take().map(BufReader::new); + let stderr = child.stderr.take().map(BufReader::new); + + let handle = tokio::spawn(async move { + async fn pump( + mut r: BufReader, + logs: Arc>>, + all_logs: Arc>>, + headless_log: Arc>>, + is_stderr: bool, + comp_name: &'static str, + ) { + let tui_prefix = if is_stderr { "[ERR] " } else { "" }; + let mut line = String::new(); + while let Ok(n) = r.read_line(&mut line).await { + if n == 0 { + break; + } + let raw = line.trim_end_matches('\n'); + let tui_entry = format!("{}{}", tui_prefix, raw); + { + let mut l = logs.lock().unwrap(); + if l.len() >= 2000 { + l.pop_front(); + } + l.push_back(tui_entry.clone()); + } + { + let mut l = all_logs.lock().unwrap(); + if l.len() >= 5000 { + l.pop_front(); + } + l.push_back(format!("[{comp_name}] {tui_entry}")); + } + { + let tagged = format!("[{comp_name}] {raw}"); + let mut l = headless_log.lock().unwrap(); + if l.len() >= 5000 { + l.pop_front(); + } + l.push_back(if is_stderr { + HeadlessLine::Stderr(tagged) + } else { + HeadlessLine::Stdout(tagged) + }); + } + line.clear(); + } + } + // Read stdout and stderr concurrently so neither blocks the other. + let (logs2, all2, hl2) = (logs.clone(), all_logs.clone(), headless_log.clone()); + tokio::join!( + async move { + if let Some(r) = stdout { + pump(r, logs2, all2, hl2, false, comp_name).await; + } + }, + async move { + if let Some(r) = stderr { + pump(r, logs, all_logs, headless_log, true, comp_name).await; + } + } + ); + let code = child + .wait() + .await + .map(|s| s.code().unwrap_or(-1)) + .unwrap_or(-1); + let _ = tx.send(AppMsg::ProcessExited { key, code }); + }); + self.components[comp_idx].task_handles.push(handle); + } + } + + /// Send SIGTERM to the component's direct child processes and mark as Stopping. + pub async fn stop_component(&mut self, comp_idx: usize) { + match self.components[comp_idx].state { + ProcState::Running => { + sigterm_pids(&self.components[comp_idx].pids); + self.components[comp_idx].state = ProcState::Stopping; + } + ProcState::Restarting => { + // Already sent SIGTERM — cancel the pending restart + self.components[comp_idx].state = ProcState::Stopping; + } + _ => {} + } + } + + /// Send SIGTERM and mark as Restarting — will auto-restart when the process exits. + pub fn restart_component(&mut self, comp_idx: usize) { + if self.components[comp_idx].state != ProcState::Running { + return; + } + sigterm_pids(&self.components[comp_idx].pids); + self.components[comp_idx].state = ProcState::Restarting; + } + + pub async fn stop_all(&mut self) { + for i in 0..self.components.len() { + self.stop_component(i).await; + } + } + + pub async fn start_all_enabled(&mut self) { + let enabled: Vec = self + .components + .iter() + .enumerate() + .filter(|(_, c)| c.enabled && c.state == ProcState::Idle) + .map(|(i, _)| i) + .collect(); + for i in enabled { + self.start_component(i).await; + } + } + + /// Drain the message queue and return the indices of components that need restarting. + pub fn drain_messages(&mut self) -> Vec { + let mut to_restart = Vec::new(); + while let Ok(msg) = self.msg_rx.try_recv() { + match msg { + AppMsg::ProcessExited { key, code } => { + if let Some((idx, comp)) = self + .components + .iter_mut() + .enumerate() + .find(|(_, c)| COMPONENT_DEFS[c.comp_idx].key == key) + { + match comp.state { + ProcState::Restarting => { + comp.pids.clear(); + comp.state = ProcState::Idle; + to_restart.push(idx); + } + ProcState::Stopping | ProcState::Running => { + comp.state = if code == 0 { + ProcState::Stopped + } else { + ProcState::Crashed + }; + comp.pids.clear(); + } + _ => {} + } + } + } + } + } + to_restart + } +} + +fn sigterm_pids(pids: &[u32]) { + use nix::sys::signal::{killpg, Signal}; + use nix::unistd::Pid; + for &pid in pids { + let _ = killpg(Pid::from_raw(pid as i32), Signal::SIGTERM); + } +} diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/components.rs b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs new file mode 100644 index 0000000000..1184833788 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/components.rs @@ -0,0 +1,320 @@ +// ─── Global params ──────────────────────────────────────────────────────────── + +pub const FIELDNAME_DEFAULT_HW: &str = "labor"; +pub const FIELDNAME_DEFAULT_SIM: &str = "hsl_kid"; + +#[derive(Clone, Debug)] +pub struct GlobalParams { + pub sim: bool, + pub zenoh: bool, + pub fieldname: String, + pub dsd_file: String, +} + +impl Default for GlobalParams { + fn default() -> Self { + Self { + sim: false, + zenoh: true, + fieldname: FIELDNAME_DEFAULT_HW.to_string(), + dsd_file: "main.dsd".to_string(), + } + } +} + +// ─── Component definitions ──────────────────────────────────────────────────── + +pub struct ComponentDef { + pub name: &'static str, + pub key: &'static str, + pub default_enabled: bool, + pub infrastructure: bool, + /// Only valid on real hardware — hidden/disabled in sim + pub hardware_only: bool, + /// Only shown/started when sim mode is active (e.g. the simulator itself) + pub sim_component: bool, + /// Returns the list of commands to spawn for this component + pub cmds: fn(&GlobalParams) -> Vec>, +} + +// ─── Command helpers ────────────────────────────────────────────────────────── + +pub fn ros2_launch(pkg: &str, file: &str, extra: &[&str]) -> Vec { + let mut v = vec!["ros2".into(), "launch".into(), pkg.into(), file.into()]; + v.extend(extra.iter().map(|s| s.to_string())); + v +} + +pub fn ros2_run(pkg: &str, exec: &str, extra: &[&str]) -> Vec { + let mut v = vec!["ros2".into(), "run".into(), pkg.into(), exec.into()]; + v.extend(extra.iter().map(|s| s.to_string())); + v +} + +fn sim(p: &GlobalParams) -> String { + format!("sim:={}", p.sim) +} + +// ─── Static component registry ──────────────────────────────────────────────── + +pub static COMPONENT_DEFS: &[ComponentDef] = &[ + // ── Infrastructure (always started) ────────────────────────────────────── + ComponentDef { + name: "Zenoh", + key: "zenoh", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_run("rmw_zenoh_cpp", "rmw_zenohd", &[])], + }, + ComponentDef { + name: "Param Blackboard", + key: "blackboard", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_parameter_blackboard", + "parameter_blackboard.launch.py", + &[&sim(p), &format!("fieldname:={}", p.fieldname)], + )] + }, + }, + ComponentDef { + name: "Robot Description", + key: "robot_description", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_robot_description", + "load_robot_description.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "Diagnostics", + key: "diagnostics", + default_enabled: true, + infrastructure: true, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_diagnostic", "aggregator.launch", &[])], + }, + ComponentDef { + name: "Simulator", + key: "simulator", + default_enabled: false, + infrastructure: true, + hardware_only: false, + sim_component: true, + cmds: |p| { + vec![ros2_launch( + "bitbots_mujoco_sim", + "simulator.launch", + &[&sim(p)], + )] + }, + }, + // ── User-toggleable ─────────────────────────────────────────────────────── + ComponentDef { + name: "Lowlevel", + key: "lowlevel", + default_enabled: true, + infrastructure: false, + hardware_only: true, + sim_component: false, + cmds: |_| vec![ros2_launch("livelybot_bringup", "lowlevel.launch", &[])], + }, + ComponentDef { + name: "Motion", + key: "motion", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_bringup", + "motion.launch", + &[&sim(p), "lowlevel:=false"], + )] + }, + }, + ComponentDef { + name: "Game Controller", + key: "game_controller", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "game_controller_hsl", + "game_controller.launch", + &[ + &sim(p), + "use_parameter_blackboard:=true", + "parameter_blackboard_name:=parameter_blackboard", + "team_id_param_name:=team_id", + "bot_id_param_name:=bot_id", + ], + )] + }, + }, + ComponentDef { + name: "Vision", + key: "vision", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| vec![ros2_launch("bitbots_bringup", "vision.launch", &[&sim(p)])], + }, + ComponentDef { + name: "IPM", + key: "ipm", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| vec![ros2_launch("bitbots_ipm", "ipm.launch", &[&sim(p)])], + }, + ComponentDef { + name: "Localization", + key: "localization", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_localization", + "localization.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "Path Planning", + key: "path_planning", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_path_planning", + "path_planning.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "Behavior", + key: "behavior", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_body_behavior", + "behavior.launch", + &[&sim(p), &format!("dsd_file:={}", p.dsd_file)], + )] + }, + }, + ComponentDef { + name: "Team Comm", + key: "teamcom", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_team_communication", + "team_comm.launch", + &[&sim(p)], + )] + }, + }, + ComponentDef { + name: "World Model", + key: "world_model", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ + ros2_launch("bitbots_ball_filter", "ball_filter.launch", &[&sim(p)]), + ros2_launch("bitbots_robot_filter", "robot_filter.launch", &[&sim(p)]), + ] + }, + }, + ComponentDef { + name: "Whistle Det.", + key: "whistle_detector", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| { + vec![ros2_launch( + "bitbots_whistle_detector", + "whistle_detector.launch", + &[], + )] + }, + }, + ComponentDef { + name: "Audio", + key: "audio", + default_enabled: true, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_bringup", "audio.launch", &[])], + }, + ComponentDef { + name: "TTS", + key: "tts", + default_enabled: false, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_tts", "tts.launch", &[])], + }, + ComponentDef { + name: "Monitoring", + key: "monitoring", + default_enabled: false, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |_| vec![ros2_launch("bitbots_bringup", "monitoring.launch", &[])], + }, + ComponentDef { + name: "Recording", + key: "record", + default_enabled: false, + infrastructure: false, + hardware_only: false, + sim_component: false, + cmds: |p| { + vec![ros2_launch( + "bitbots_bringup", + "rosbag_record.launch.py", + &[&sim(p)], + )] + }, + }, +]; diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/input.rs b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs new file mode 100644 index 0000000000..68fca2989f --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/input.rs @@ -0,0 +1,244 @@ +use crossterm::event::{KeyCode, KeyModifiers}; + +use crate::app::{App, ConfigFocus, ConfirmAction, ProcState, Screen}; +use crate::components::COMPONENT_DEFS; + +pub async fn handle_config_key(app: &mut App, key: KeyCode, modifiers: KeyModifiers) -> bool { + match (&app.config_focus.clone(), key) { + // Navigation + (_, KeyCode::Tab) => { + if modifiers.contains(KeyModifiers::SHIFT) { + app.config_focus_prev(); + } else { + app.config_focus_next(); + } + } + (_, KeyCode::Down) => app.config_focus_next(), + (_, KeyCode::Up) => app.config_focus_prev(), + (_, KeyCode::Right) => app.config_focus_right(), + (_, KeyCode::Left) => app.config_focus_left(), + + // Zenoh toggle + (ConfigFocus::Zenoh, KeyCode::Char(' ') | KeyCode::Enter) => { + app.params.zenoh = !app.params.zenoh; + if let Some(idx) = COMPONENT_DEFS.iter().position(|d| d.key == "zenoh") { + app.components[idx].enabled = app.params.zenoh; + } + } + + // Sim toggle + (ConfigFocus::Sim, KeyCode::Char(' ') | KeyCode::Enter) => { + app.params.sim = !app.params.sim; + app.apply_sim_toggle(); + } + + // Fieldname text input + (ConfigFocus::Fieldname, KeyCode::Char(c)) => { + if !modifiers.contains(KeyModifiers::CONTROL) { + app.config_fieldname_input.push(c); + app.params.fieldname = app.config_fieldname_input.clone(); + } + } + (ConfigFocus::Fieldname, KeyCode::Backspace) => { + app.config_fieldname_input.pop(); + app.params.fieldname = app.config_fieldname_input.clone(); + } + + // DSD file text input + (ConfigFocus::DsdFile, KeyCode::Char(c)) => { + if !modifiers.contains(KeyModifiers::CONTROL) { + app.config_dsd_input.push(c); + app.params.dsd_file = app.config_dsd_input.clone(); + } + } + (ConfigFocus::DsdFile, KeyCode::Backspace) => { + app.config_dsd_input.pop(); + app.params.dsd_file = app.config_dsd_input.clone(); + } + + // Component checkbox toggle + (ConfigFocus::Component(fi), KeyCode::Char(' ') | KeyCode::Enter) => { + let fi = *fi; + let toggleables = app.toggleable_indices(); + if fi < toggleables.len() { + let comp_idx = toggleables[fi]; + app.components[comp_idx].enabled = !app.components[comp_idx].enabled; + } + } + + // Start / Continue button + (ConfigFocus::Start, KeyCode::Enter | KeyCode::Char(' ')) => { + app.params.fieldname = app.config_fieldname_input.clone(); + app.params.dsd_file = app.config_dsd_input.clone(); + app.screen = Screen::Runtime; + app.start_all_enabled().await; + } + + // Quit + (_, KeyCode::Char('q') | KeyCode::Char('Q') | KeyCode::Esc) => { + app.confirm_action = Some(ConfirmAction::Quit); + } + + _ => {} + } + false +} + +pub async fn handle_runtime_key(app: &mut App, key: KeyCode, _modifiers: KeyModifiers) -> bool { + let visible = app.runtime_visible_indices(); + let sel = app.runtime_selected.min(visible.len().saturating_sub(1)); + let comp_idx = visible.get(sel).copied(); + + match key { + KeyCode::Down | KeyCode::Char('j') => { + app.runtime_selected = (sel + 1).min(visible.len().saturating_sub(1)); + } + KeyCode::Up | KeyCode::Char('k') => { + app.runtime_selected = sel.saturating_sub(1); + } + + KeyCode::Char('s') => { + if let Some(idx) = comp_idx { + match app.components[idx].state { + ProcState::Running | ProcState::Stopping | ProcState::Restarting => { + app.stop_component(idx).await; + } + _ => { + app.components[idx].state = ProcState::Idle; + app.start_component(idx).await; + } + } + } + } + + KeyCode::Char('r') => { + if let Some(idx) = comp_idx { + match app.components[idx].state { + ProcState::Running => app.restart_component(idx), + ProcState::Stopping | ProcState::Restarting => {} + _ => app.start_component(idx).await, + } + } + } + + KeyCode::Char('l') => { + if let Some(idx) = comp_idx { + app.log_scroll = app.components[idx] + .logs + .lock() + .unwrap() + .len() + .saturating_sub(1); + app.log_follow = true; + app.screen = Screen::Logs(idx); + } + } + + // Right: show sidebar if hidden, open AllLogs if sidebar already visible + KeyCode::Right => { + if app.show_log_panel { + app.log_scroll = app.all_logs.lock().unwrap().len().saturating_sub(1); + app.log_follow = true; + app.screen = Screen::AllLogs; + } else { + app.show_log_panel = true; + } + } + + // Left: hide sidebar + KeyCode::Left => { + app.show_log_panel = false; + } + + KeyCode::Char('a') => app.start_all_enabled().await, + KeyCode::Char('x') => app.confirm_action = Some(ConfirmAction::StopAll), + KeyCode::Esc => app.screen = Screen::Config, + KeyCode::Char('q') | KeyCode::Char('Q') => { + app.confirm_action = Some(ConfirmAction::Quit); + } + _ => {} + } + false +} + +pub async fn handle_logs_key( + app: &mut App, + key: KeyCode, + _modifiers: KeyModifiers, + comp_idx: usize, +) -> bool { + let log_len = app.components[comp_idx].logs.lock().unwrap().len(); + scroll_keys(app, key, log_len); + match key { + KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') => { + app.screen = Screen::Runtime; + } + KeyCode::Char('Q') => app.confirm_action = Some(ConfirmAction::Quit), + _ => {} + } + false +} + +pub fn handle_all_logs_key(app: &mut App, key: KeyCode) -> bool { + let log_len = app.all_logs.lock().unwrap().len(); + scroll_keys(app, key, log_len); + match key { + KeyCode::Esc | KeyCode::Char('q') | KeyCode::Char('l') | KeyCode::Left => { + app.screen = Screen::Runtime; + } + KeyCode::Char('Q') => app.confirm_action = Some(ConfirmAction::Quit), + _ => {} + } + false +} + +/// Shared scroll key handling for both log views. +fn scroll_keys(app: &mut App, key: KeyCode, log_len: usize) { + let vh = app.log_viewport_height.get(); + let max_scroll = log_len.saturating_sub(vh.max(1)); + match key { + KeyCode::Down | KeyCode::Char('j') => { + let next = (app.log_scroll + 1).min(max_scroll); + app.log_scroll = next; + app.log_follow = next >= max_scroll; + } + KeyCode::Up | KeyCode::Char('k') => { + app.log_scroll = app.log_scroll.saturating_sub(1); + app.log_follow = false; + } + KeyCode::PageDown => { + let next = (app.log_scroll + 20).min(max_scroll); + app.log_scroll = next; + app.log_follow = next >= max_scroll; + } + KeyCode::PageUp => { + app.log_scroll = app.log_scroll.saturating_sub(20); + app.log_follow = false; + } + KeyCode::Char('G') | KeyCode::Char('f') => { + app.log_scroll = max_scroll; + app.log_follow = true; + } + KeyCode::Char('g') => { + app.log_scroll = 0; + app.log_follow = false; + } + _ => {} + } +} + +pub async fn handle_confirm_key(app: &mut App, key: KeyCode) -> bool { + match key { + KeyCode::Char('y') | KeyCode::Char('Y') | KeyCode::Enter => { + match app.confirm_action.take() { + Some(ConfirmAction::Quit) => return true, + Some(ConfirmAction::StopAll) => app.stop_all().await, + None => {} + } + } + _ => { + app.confirm_action = None; + } + } + false +} diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/main.rs b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs new file mode 100644 index 0000000000..da717905d4 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/main.rs @@ -0,0 +1,246 @@ +mod app; +mod components; +mod input; +mod ui; + +use anyhow::Result; +use clap::Parser; +use crossterm::{ + event::{DisableMouseCapture, EnableMouseCapture, Event, EventStream}, + execute, + terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, +}; +use futures::StreamExt; +use ratatui::{backend::CrosstermBackend, Terminal}; +use std::time::Duration; +use tokio::time; + +use app::{App, ProcState, Screen}; +use components::COMPONENT_DEFS; + +// ─── CLI ────────────────────────────────────────────────────────────────────── + +#[derive(Parser)] +#[command( + name = "teamplayer", + about = "Bit-Bots teamplayer launcher — interactive TUI or headless mode", + long_about = None, +)] +struct Cli { + /// Run without TUI: start all enabled components and block until Ctrl-C + #[arg(long)] + headless: bool, + + /// Enable simulation mode (also enables the simulator, disables hardware-only components) + #[arg(long)] + sim: bool, + + /// Override the field name [default: labor, or hsl_kid in sim] + #[arg(long, value_name = "NAME")] + fieldname: Option, + + /// Override the behavior DSD file [default: main.dsd] + #[arg(long, value_name = "FILE", default_value = "main.dsd")] + dsd_file: String, + + /// Disable the Zenoh daemon (useful when zenoh is already running externally) + #[arg(long)] + no_zenoh: bool, + + /// Enable a component by key; may be specified multiple times. + /// Available keys: zenoh, blackboard, robot_description, diagnostics, + /// simulator, lowlevel, motion, game_controller, vision, ipm, localization, + /// path_planning, behavior, teamcom, world_model, whistle_detector, audio, + /// tts, monitoring, record + #[arg(long = "enable", value_name = "KEY")] + enable: Vec, + + /// Disable a component by key; may be specified multiple times + #[arg(long = "disable", value_name = "KEY")] + disable: Vec, +} + +// ─── Terminal helpers ───────────────────────────────────────────────────────── + +fn setup_panic_hook() { + let original = std::panic::take_hook(); + std::panic::set_hook(Box::new(move |info| { + let _ = disable_raw_mode(); + let _ = execute!(std::io::stdout(), LeaveAlternateScreen, DisableMouseCapture); + original(info); + })); +} + +fn cleanup_terminal() { + let _ = disable_raw_mode(); + let _ = execute!(std::io::stdout(), LeaveAlternateScreen, DisableMouseCapture); +} + +// ─── Entry point ────────────────────────────────────────────────────────────── + +#[tokio::main] +async fn main() -> Result<()> { + let cli = Cli::parse(); + + let mut app = App::new(); + app.apply_cli_presets( + cli.sim, + cli.no_zenoh, + cli.fieldname.as_deref(), + &cli.dsd_file, + &cli.enable, + &cli.disable, + ); + + let result = if cli.headless { + run_headless(&mut app).await + } else { + setup_panic_hook(); + enable_raw_mode()?; + let mut stdout = std::io::stdout(); + execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?; + let backend = CrosstermBackend::new(stdout); + let mut terminal = Terminal::new(backend)?; + + let mut event_stream = EventStream::new(); + let mut tick_interval = time::interval(Duration::from_millis(100)); + let r = run_tui( + &mut terminal, + &mut app, + &mut event_stream, + &mut tick_interval, + ) + .await; + cleanup_terminal(); + r + }; + + // SIGTERM all remaining process groups on exit + { + use nix::sys::signal::{killpg, Signal}; + use nix::unistd::Pid; + for comp in &app.components { + for &pid in &comp.pids { + let _ = killpg(Pid::from_raw(pid as i32), Signal::SIGTERM); + } + } + } + + result +} + +// ─── Headless mode ──────────────────────────────────────────────────────────── + +async fn run_headless(app: &mut App) -> Result<()> { + eprintln!("teamplayer [headless] — Ctrl-C to stop"); + eprintln!(); + + // Print what will be started + for comp in &app.components { + let def = &COMPONENT_DEFS[comp.comp_idx]; + if comp.enabled { + eprintln!(" [+] {}", def.name); + } + } + eprintln!(); + + app.start_all_enabled().await; + + let mut tick = time::interval(Duration::from_millis(50)); + loop { + tokio::select! { + _ = tick.tick() => { + let to_restart = app.drain_messages(); + for idx in to_restart { + app.start_component(idx).await; + } + { + let mut q = app.headless_log.lock().unwrap(); + while let Some(entry) = q.pop_front() { + match entry { + app::HeadlessLine::Stdout(s) => println!("{s}"), + app::HeadlessLine::Stderr(s) => eprintln!("{s}"), + } + } + } + let any_running = app.components.iter().any(|c| { + matches!(c.state, ProcState::Running | ProcState::Stopping | ProcState::Restarting) + }); + if !any_running { + eprintln!("All components have stopped."); + break; + } + } + _ = tokio::signal::ctrl_c() => { + eprintln!("\nInterrupted — stopping all components..."); + break; + } + } + } + Ok(()) +} + +// ─── TUI event loop ─────────────────────────────────────────────────────────── + +async fn run_tui( + terminal: &mut Terminal>, + app: &mut App, + event_stream: &mut EventStream, + tick_interval: &mut time::Interval, +) -> Result<()> { + loop { + terminal.draw(|f| ui::draw(f, app))?; + + tokio::select! { + _ = tick_interval.tick() => { + app.tick_count += 1; + let to_restart = app.drain_messages(); + for idx in to_restart { + app.start_component(idx).await; + } + if app.log_follow { + let len = match &app.screen { + Screen::Logs(idx) => app.components[*idx].logs.lock().unwrap().len(), + Screen::AllLogs => app.all_logs.lock().unwrap().len(), + _ => 0, + }; + if len > 0 { + app.log_scroll = len.saturating_sub(1); + } + } + } + + maybe_event = event_stream.next() => { + let Some(Ok(event)) = maybe_event else { break }; + if let Event::Key(key_event) = event { + let quit = if app.confirm_action.is_some() { + input::handle_confirm_key(app, key_event.code).await + } else { + match app.screen.clone() { + Screen::Config => { + input::handle_config_key(app, key_event.code, key_event.modifiers).await + } + Screen::Runtime => { + input::handle_runtime_key(app, key_event.code, key_event.modifiers).await + } + Screen::Logs(idx) => { + input::handle_logs_key(app, key_event.code, key_event.modifiers, idx).await + } + Screen::AllLogs => { + input::handle_all_logs_key(app, key_event.code) + } + } + }; + if quit { + return Ok(()); + } + } + } + + _ = tokio::signal::ctrl_c() => { + return Ok(()); + } + } + } + Ok(()) +} diff --git a/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs new file mode 100644 index 0000000000..514db5c7f1 --- /dev/null +++ b/src/bitbots_misc/bitbots_bringup/tui/src/ui.rs @@ -0,0 +1,666 @@ +use ratatui::{ + layout::{Alignment, Constraint, Direction, Layout, Rect}, + style::{Color, Modifier, Style}, + text::{Line, Span}, + widgets::{ + Block, Borders, Clear, Paragraph, Scrollbar, ScrollbarOrientation, ScrollbarState, Wrap, + }, + Frame, +}; + +use crate::app::{App, ConfigFocus, ConfirmAction, ProcState, Screen}; +use crate::components::COMPONENT_DEFS; + +// ─── Banner ─────────────────────────────────────────────────────────────────── + +const BANNER: &str = r#" + ██████╗ ██╗████████╗ ██████╗ ██████╗ ████████╗███████╗ + ██╔══██╗██║╚══██╔══╝ ██╔══██╗██╔═══██╗╚══██╔══╝██╔════╝ + ██████╔╝██║ ██║ ██████╔╝██║ ██║ ██║ ███████╗ + ██╔══██╗██║ ██║ ██╔══██╗██║ ██║ ██║ ╚════██║ + ██████╔╝██║ ██║ ██████╔╝╚██████╔╝ ██║ ███████║ + ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ + Teamplayer Launcher +"#; + +// ─── Helpers ────────────────────────────────────────────────────────────────── + +pub fn proc_state_style(state: &ProcState) -> Style { + match state { + ProcState::Idle => Style::default().fg(Color::DarkGray), + ProcState::Running => Style::default().fg(Color::Green), + ProcState::Stopping => Style::default().fg(Color::Yellow), + ProcState::Restarting => Style::default().fg(Color::Cyan), + ProcState::Stopped => Style::default().fg(Color::Blue), + ProcState::Crashed => Style::default().fg(Color::Red), + } +} + +fn spinner_char(tick: u64) -> char { + const FRAMES: &[char] = &['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; + FRAMES[(tick as usize) % FRAMES.len()] +} + +// ─── Top-level dispatch ─────────────────────────────────────────────────────── + +pub fn draw(f: &mut Frame, app: &App) { + match &app.screen { + Screen::Config => draw_config(f, app), + Screen::Runtime => draw_runtime(f, app), + Screen::Logs(idx) => draw_logs(f, app, *idx), + Screen::AllLogs => draw_all_logs(f, app), + } + if app.confirm_action.is_some() { + draw_confirm_popup(f, app); + } +} + +// ─── Config screen ──────────────────────────────────────────────────────────── + +pub fn draw_config(f: &mut Frame, app: &App) { + let area = f.area(); + let banner_lines = BANNER.lines().count() as u16; + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([ + Constraint::Length(banner_lines), + Constraint::Length(3), + Constraint::Min(0), + Constraint::Length(3), + Constraint::Length(1), + ]) + .split(area); + + f.render_widget( + Paragraph::new(BANNER) + .style(Style::default().fg(Color::Cyan)) + .alignment(Alignment::Center), + chunks[0], + ); + + draw_config_flags(f, app, chunks[1]); + draw_config_components(f, app, chunks[2]); + draw_start_button(f, app, chunks[3]); + + f.render_widget( + Paragraph::new(" Tab/↑↓/←→: navigate Space/Enter: toggle/activate q: exit (confirm)") + .style(Style::default().fg(Color::DarkGray)), + chunks[4], + ); +} + +fn draw_config_flags(f: &mut Frame, app: &App, area: Rect) { + let chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([ + Constraint::Length(18), + Constraint::Length(18), + Constraint::Min(20), + Constraint::Min(20), + ]) + .split(area); + + let focus_border = |focused: bool| { + if focused { + Style::default().fg(Color::Yellow) + } else { + Style::default() + } + }; + let focus_text = |focused: bool| { + if focused { + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD) + } else { + Style::default().fg(Color::White) + } + }; + + let zenoh_focused = app.config_focus == ConfigFocus::Zenoh; + let sim_focused = app.config_focus == ConfigFocus::Sim; + let field_focused = app.config_focus == ConfigFocus::Fieldname; + let dsd_focused = app.config_focus == ConfigFocus::DsdFile; + + f.render_widget( + Paragraph::new(if app.params.zenoh { + "[✓] Zenoh" + } else { + "[ ] Zenoh" + }) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(focus_border(zenoh_focused)), + ) + .style(focus_text(zenoh_focused)), + chunks[0], + ); + + f.render_widget( + Paragraph::new(if app.params.sim { + "[✓] Simulator" + } else { + "[ ] Simulator" + }) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(focus_border(sim_focused)), + ) + .style(focus_text(sim_focused)), + chunks[1], + ); + + f.render_widget( + Paragraph::new(app.config_fieldname_input.as_str()).block( + Block::default() + .borders(Borders::ALL) + .title("Fieldname") + .border_style(focus_border(field_focused)), + ), + chunks[2], + ); + + f.render_widget( + Paragraph::new(app.config_dsd_input.as_str()).block( + Block::default() + .borders(Borders::ALL) + .title("DSD File") + .border_style(focus_border(dsd_focused)), + ), + chunks[3], + ); +} + +fn draw_config_components(f: &mut Frame, app: &App, area: Rect) { + let toggleables = app.toggleable_indices(); + let col_chunks = Layout::default() + .direction(Direction::Horizontal) + .constraints([Constraint::Percentage(50), Constraint::Percentage(50)]) + .split(area); + + let left_count = (toggleables.len() + 1) / 2; + let (left, right) = toggleables.split_at(left_count); + draw_component_column(f, app, col_chunks[0], left, 0); + draw_component_column(f, app, col_chunks[1], right, left.len()); +} + +fn draw_component_column( + f: &mut Frame, + app: &App, + area: Rect, + comp_indices: &[usize], + focus_offset: usize, +) { + if comp_indices.is_empty() { + return; + } + let rows: Vec = comp_indices.iter().map(|_| Constraint::Length(1)).collect(); + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints(rows) + .split(area); + + for (local_i, &comp_idx) in comp_indices.iter().enumerate() { + let focused = app.config_focus == ConfigFocus::Component(focus_offset + local_i); + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + let check = if comp.enabled { "✓" } else { " " }; + let style = if focused { + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD) + } else if comp.enabled { + Style::default().fg(Color::White) + } else { + Style::default().fg(Color::DarkGray) + }; + + if local_i < chunks.len() { + f.render_widget( + Paragraph::new(format!("[{check}] {}", def.name)).style(style), + chunks[local_i], + ); + } + } +} + +fn draw_start_button(f: &mut Frame, app: &App, area: Rect) { + let focused = app.config_focus == ConfigFocus::Start; + let has_running = app.components.iter().any(|c| c.state == ProcState::Running); + let label = if has_running { + " Continue → " + } else { + " Launch → " + }; + let (border_style, text_style) = if focused { + ( + Style::default().fg(Color::Yellow), + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD), + ) + } else { + ( + Style::default().fg(Color::Green), + Style::default() + .fg(Color::Green) + .add_modifier(Modifier::BOLD), + ) + }; + f.render_widget( + Paragraph::new(label) + .block( + Block::default() + .borders(Borders::ALL) + .border_style(border_style), + ) + .style(text_style) + .alignment(Alignment::Center), + area, + ); +} + +// ─── Runtime screen ─────────────────────────────────────────────────────────── + +pub fn draw_runtime(f: &mut Frame, app: &App) { + let area = f.area(); + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([ + Constraint::Length(3), + Constraint::Min(0), + Constraint::Length(1), + ]) + .split(area); + + draw_runtime_header(f, app, chunks[0]); + + if app.show_log_panel { + let cols = Layout::default() + .direction(Direction::Horizontal) + .constraints([Constraint::Percentage(35), Constraint::Percentage(65)]) + .split(chunks[1]); + draw_runtime_list(f, app, cols[0]); + draw_joint_logs(f, app, cols[1]); + } else { + draw_runtime_list(f, app, chunks[1]); + } + + let hint = if app.show_log_panel { + " ↑↓/jk: select l: comp logs →: all logs ←: hide logs s: stop/start r: restart a: start all x: stop all Esc: config q: quit" + } else { + " ↑↓/jk: select l: comp logs →: show logs s: stop/start r: restart a: start all x: stop all Esc: config q: quit" + }; + f.render_widget( + Paragraph::new(hint).style(Style::default().fg(Color::DarkGray)), + chunks[2], + ); +} + +fn draw_runtime_header(f: &mut Frame, app: &App, area: Rect) { + let running = app + .components + .iter() + .filter(|c| c.state == ProcState::Running) + .count(); + let total_enabled = app.components.iter().filter(|c| c.enabled).count(); + let sim_badge = if app.params.sim { " [SIM]" } else { "" }; + f.render_widget( + Paragraph::new(format!( + " Bit-Bots Teamplayer [{running}/{total_enabled} running]{sim_badge}" + )) + .block(Block::default().borders(Borders::ALL)) + .style( + Style::default() + .fg(Color::Cyan) + .add_modifier(Modifier::BOLD), + ), + area, + ); +} + +fn draw_runtime_list(f: &mut Frame, app: &App, area: Rect) { + let visible = app.runtime_visible_indices(); + if visible.is_empty() { + f.render_widget( + Paragraph::new("No components enabled.").alignment(Alignment::Center), + area, + ); + return; + } + + let rows: Vec = visible.iter().map(|_| Constraint::Length(1)).collect(); + let row_chunks = Layout::default() + .direction(Direction::Vertical) + .constraints(rows) + .split(area); + + for (vis_i, &comp_idx) in visible.iter().enumerate() { + if vis_i >= row_chunks.len() { + break; + } + let selected = app.runtime_selected == vis_i; + let comp = &app.components[comp_idx]; + let def = &COMPONENT_DEFS[comp_idx]; + + let row_style = if selected { + Style::default().bg(Color::DarkGray) + } else { + Style::default() + }; + let spinner = match comp.state { + ProcState::Running => format!("{} ", spinner_char(app.tick_count)), + ProcState::Stopping => "… ".to_string(), + ProcState::Restarting => "↺ ".to_string(), + _ => " ".to_string(), + }; + + let line = Line::from(vec![ + Span::styled( + if def.infrastructure { "·" } else { " " }, + Style::default().fg(Color::DarkGray), + ), + Span::styled(spinner, Style::default().fg(Color::Green)), + Span::styled( + format!("[{}]", comp.state.label()), + proc_state_style(&comp.state).add_modifier(Modifier::BOLD), + ), + Span::raw(" "), + Span::styled( + format!("{:<18}", def.name), + if selected { + Style::default() + .fg(Color::White) + .add_modifier(Modifier::BOLD) + } else { + Style::default() + }, + ), + Span::raw(" "), + Span::styled("s", Style::default().fg(Color::Yellow)), + Span::raw(":start/stop "), + Span::styled("r", Style::default().fg(Color::Yellow)), + Span::raw(":restart "), + Span::styled("l", Style::default().fg(Color::Yellow)), + Span::raw(":logs"), + ]); + f.render_widget(Paragraph::new(line).style(row_style), row_chunks[vis_i]); + } +} + +fn tag_color(tag: &str) -> Color { + const PALETTE: &[Color] = &[ + Color::Cyan, + Color::Green, + Color::Magenta, + Color::Yellow, + Color::LightBlue, + Color::LightGreen, + Color::LightMagenta, + Color::LightRed, + ]; + let h = tag.bytes().fold(0usize, |a, b| a.wrapping_add(b as usize)); + PALETTE[h % PALETTE.len()] +} + +/// Convert a raw log string (which may contain ANSI escape codes) into an owned ratatui Line. +fn ansi_to_line(s: &str) -> Line<'static> { + use ansi_to_tui::IntoText; + match s.into_text() { + Ok(text) => Line::from( + text.lines + .into_iter() + .flat_map(|l| l.spans) + .map(|s| Span::styled(s.content.into_owned(), s.style)) + .collect::>(), + ), + Err(_) => Line::from(s.to_owned()), + } +} + +fn draw_joint_logs(f: &mut Frame, app: &App, area: Rect) { + let inner_h = area.height.saturating_sub(2) as usize; + let inner_w = area.width.saturating_sub(2) as usize; + + let lines: Vec> = { + let logs = app.all_logs.lock().unwrap(); + // Grab more entries than the panel height — wrapping will consume extra rows. + let skip = logs.len().saturating_sub(inner_h * 3); + logs.iter() + .skip(skip) + .map(|entry| { + if let Some(close) = entry.find("] ") { + let tag = &entry[..close + 1]; // "[CompName]" + let rest = &entry[close + 2..]; + let mut spans: Vec> = vec![ + Span::styled( + tag.to_owned(), + Style::default() + .fg(tag_color(tag)) + .add_modifier(Modifier::BOLD), + ), + Span::raw(" "), + ]; + spans.extend(ansi_to_line(rest).spans); + Line::from(spans) + } else { + ansi_to_line(entry) + } + }) + .collect() + }; + + // Estimate total visual rows so we can scroll to pin the view to the bottom. + let total_rows: usize = lines + .iter() + .map(|l| { + let chars: usize = l.spans.iter().map(|s| s.content.chars().count()).sum(); + if inner_w > 0 { + (chars + inner_w - 1) / inner_w + } else { + 1 + } + .max(1) + }) + .sum(); + let scroll = total_rows.saturating_sub(inner_h) as u16; + + f.render_widget( + Paragraph::new(lines) + .block(Block::default().borders(Borders::ALL).title(" All Logs ")) + .wrap(Wrap { trim: false }) + .scroll((scroll, 0)), + area, + ); +} + +// ─── Logs screen ────────────────────────────────────────────────────────────── + +pub fn draw_logs(f: &mut Frame, app: &App, comp_idx: usize) { + let area = f.area(); + let comp = &app.components[comp_idx]; + let name = COMPONENT_DEFS[comp_idx].name; + + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([ + Constraint::Length(3), + Constraint::Min(0), + Constraint::Length(1), + ]) + .split(area); + + f.render_widget( + Paragraph::new(format!(" Logs: {name} ")) + .block(Block::default().borders(Borders::ALL)) + .style( + Style::default() + .fg(Color::Cyan) + .add_modifier(Modifier::BOLD), + ), + chunks[0], + ); + + let log_height = chunks[1].height.saturating_sub(2) as usize; // inner height (minus borders) + app.log_viewport_height.set(log_height); + let (lines, total, scroll) = { + let logs = comp.logs.lock().unwrap(); + let total = logs.len(); + let max_scroll = total.saturating_sub(log_height); + let scroll = app.log_scroll.min(max_scroll); + let lines: Vec> = logs + .iter() + .skip(scroll) + .take(log_height * 2) + .map(|s| ansi_to_line(s)) + .collect(); + (lines, total, scroll) + }; + + let log_block = Block::default().borders(Borders::ALL); + let log_area = chunks[1]; + f.render_widget( + Paragraph::new(lines) + .block(log_block) + .style(Style::default().fg(Color::White)) + .wrap(Wrap { trim: false }), + log_area, + ); + + let mut scrollbar_state = + ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); + f.render_stateful_widget( + Scrollbar::new(ScrollbarOrientation::VerticalRight), + log_area, + &mut scrollbar_state, + ); + + let hint = if app.log_follow { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l: back".to_string() + } else { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l: back [SCROLLED — f/G to re-follow]".to_string() + }; + let hint_style = if app.log_follow { + Style::default().fg(Color::DarkGray) + } else { + Style::default().fg(Color::Yellow) + }; + f.render_widget(Paragraph::new(hint).style(hint_style), chunks[2]); +} + +// ─── All-logs screen ────────────────────────────────────────────────────────── + +pub fn draw_all_logs(f: &mut Frame, app: &App) { + let area = f.area(); + let chunks = Layout::default() + .direction(Direction::Vertical) + .constraints([Constraint::Min(0), Constraint::Length(1)]) + .split(area); + + let log_height = chunks[0].height.saturating_sub(2) as usize; + app.log_viewport_height.set(log_height); + let (lines, total, scroll) = { + let logs = app.all_logs.lock().unwrap(); + let total = logs.len(); + let max_scroll = total.saturating_sub(log_height); + let scroll = app.log_scroll.min(max_scroll); + let lines: Vec> = logs + .iter() + .skip(scroll) + .take(log_height * 2) + .map(|entry| { + if let Some(close) = entry.find("] ") { + let tag = &entry[..close + 1]; + let rest = &entry[close + 2..]; + let mut spans: Vec> = vec![ + Span::styled( + tag.to_owned(), + Style::default() + .fg(tag_color(tag)) + .add_modifier(Modifier::BOLD), + ), + Span::raw(" "), + ]; + spans.extend(ansi_to_line(rest).spans); + Line::from(spans) + } else { + ansi_to_line(entry) + } + }) + .collect(); + (lines, total, scroll) + }; + + let log_area = chunks[0]; + f.render_widget( + Paragraph::new(lines) + .block(Block::default().borders(Borders::ALL).title(" All Logs ")) + .style(Style::default().fg(Color::White)) + .wrap(Wrap { trim: false }), + log_area, + ); + + let mut scrollbar_state = + ScrollbarState::new(total.saturating_sub(log_height)).position(scroll); + f.render_stateful_widget( + Scrollbar::new(ScrollbarOrientation::VerticalRight), + log_area, + &mut scrollbar_state, + ); + + let hint = if app.log_follow { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l/←: back" + } else { + " ↑↓/jk/PgUp/PgDn: scroll g: top G/f: follow Esc/q/l/←: back [SCROLLED — f/G to re-follow]" + }; + let hint_style = if app.log_follow { + Style::default().fg(Color::DarkGray) + } else { + Style::default().fg(Color::Yellow) + }; + f.render_widget(Paragraph::new(hint).style(hint_style), chunks[1]); +} + +// ─── Confirmation popup ─────────────────────────────────────────────────────── + +pub fn draw_confirm_popup(f: &mut Frame, app: &App) { + let (title, msg) = match &app.confirm_action { + Some(ConfirmAction::Quit) => ( + " Exit ", + "Exit teamplayer?\nAll running components will be stopped.", + ), + Some(ConfirmAction::StopAll) => (" Stop All ", "Stop all running components?"), + None => return, + }; + + let area = f.area(); + let popup_w = 52u16.min(area.width.saturating_sub(4)); + let popup_h = 6u16; // 2 border + question (1-2 lines) + blank + hint + let x = area.x + (area.width.saturating_sub(popup_w)) / 2; + let y = area.y + (area.height.saturating_sub(popup_h)) / 2; + let popup_area = Rect::new(x, y, popup_w, popup_h); + + f.render_widget(Clear, popup_area); + + let content = format!("{msg}\n\nY / Enter — confirm N / Esc — cancel"); + f.render_widget( + Paragraph::new(content) + .block( + Block::default() + .borders(Borders::ALL) + .title(title) + .border_style(Style::default().fg(Color::Yellow)), + ) + .style( + Style::default() + .fg(Color::Yellow) + .add_modifier(Modifier::BOLD), + ) + .alignment(Alignment::Center), + popup_area, + ); +} diff --git a/src/bitbots_misc/bitbots_cargo/CMakeLists.txt b/src/bitbots_misc/bitbots_cargo/CMakeLists.txt new file mode 100644 index 0000000000..1521d927d4 --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_cargo) + +find_package(ament_cmake REQUIRED) + +ament_package(CONFIG_EXTRAS cmake/bitbots_cargo.cmake.in) diff --git a/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in new file mode 100644 index 0000000000..8daa6fa86c --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/cmake/bitbots_cargo.cmake.in @@ -0,0 +1,197 @@ + +cmake_minimum_required(VERSION "3.21") + +# traverse dependencies for all message packages. +function(get_idl_deps OUT_PKG_DIRS PKG) + find_package(${PKG} REQUIRED) + target_link_libraries(dummy INTERFACE ${${PKG}_LIBRARIES}) + include_directories(dummy ${${PKG}_INCLUDE_DIRS}) + + list(APPEND VISITED_TARGETS ${PKG}) + + # only keep track of packages that include idl files + set(PKG_DIRS "") + if(DEFINED ${PKG}_IDL_FILES) + list(APPEND PKG_DIRS ${${PKG}_DIR}) + endif() + + foreach(LIB ${${PKG}_DEPENDENCIES}) + list(FIND VISITED_TARGETS ${LIB} VISITED) + if (${VISITED} EQUAL -1) + get_idl_deps(NEW_PKG_DIRS ${LIB}) + list(APPEND PKG_DIRS ${NEW_PKG_DIRS}) + list(REMOVE_DUPLICATES PKG_DIRS) + endif() + endforeach() + set(VISITED_TARGETS ${VISITED_TARGETS} PARENT_SCOPE) + set(${OUT_PKG_DIRS} ${PKG_DIRS} PARENT_SCOPE) +endfunction() + +function(r2r_cargo) + # pretend that we want to compile c code to get all library paths etc... + add_library(dummy INTERFACE) + + # traverse list of wanted packages to add dependencies + foreach(f ${ARGN}) + find_package(${f} REQUIRED) + set(REC_PKG_DIRS "") + get_idl_deps(REC_PKG_DIRS ${f}) + list(APPEND CMAKE_IDL_PACKAGES "${REC_PKG_DIRS}") + endforeach() + + list(REMOVE_DUPLICATES CMAKE_IDL_PACKAGES) + string (REPLACE ";" ":" CMAKE_IDL_PACKAGES_STR "${CMAKE_IDL_PACKAGES}") + set(ENV{CMAKE_IDL_PACKAGES} ${CMAKE_IDL_PACKAGES_STR}) + + # On OSX colcon eats the DYLD_LIBRARY_PATH... so we need to add the rpaths + # manually... + set(RUSTFLAGS "") + + # get imported libs + get_property(importTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS) + + foreach(p ${importTargets}) + get_property(_LIBLOC TARGET "${p}" PROPERTY LOCATION) + if(DEFINED _LIBLOC) + list(APPEND CMAKE_LIBRARIES "${_LIBLOC}") + get_filename_component(_PARENT "${_LIBLOC}" DIRECTORY) + if(IS_DIRECTORY ${_PARENT}) + list(APPEND RUSTFLAGS "-C link-arg=-Wl,-rpath,${_PARENT}") + endif() + endif() + endforeach() + + list(REMOVE_DUPLICATES RUSTFLAGS) + string (REPLACE ";" " " RUSTFLAGS_STR "${RUSTFLAGS}") + set(ENV{RUSTFLAGS} ${RUSTFLAGS_STR}) + + # get include paths + get_property(includeDirs DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY INCLUDE_DIRECTORIES) + list(REMOVE_DUPLICATES includeDirs) + string (REPLACE ";" ":" CMAKE_INCLUDE_DIRS_STR "${includeDirs}") + set(ENV{CMAKE_INCLUDE_DIRS} ${CMAKE_INCLUDE_DIRS_STR}) + + add_custom_target(cargo_target ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" "RUSTFLAGS=$ENV{RUSTFLAGS}" "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" "cargo" "build" "--profile" "colcon" "--quiet" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "RUSTFLAGS=$ENV{RUSTFLAGS}" + "CMAKE_IDL_PACKAGES=$ENV{CMAKE_IDL_PACKAGES}" + "CMAKE_INCLUDE_DIRS=$ENV{CMAKE_INCLUDE_DIRS}" + cargo test --package ${PROJECT_NAME} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() + +endfunction() + +# Private helper: resolve the cargo workspace target directory. +function(_cargo_get_target_dir OUT_DIR) + execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE _METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(JSON _TARGET_DIR GET "${_METADATA_JSON}" target_directory) + set(${OUT_DIR} "${_TARGET_DIR}" PARENT_SCOPE) +endfunction() + +# Build a pyo3 Python extension and install it flat into site-packages so +# `import ` works after sourcing install/setup.bash. +# +# Usage: cargo_pyo3_extension([PACKAGE ]) +# PACKAGE defaults to ${PROJECT_NAME} +function(cargo_pyo3_extension) + cmake_parse_arguments(_ARGS "" "PACKAGE" "" ${ARGN}) + if(NOT _ARGS_PACKAGE) + set(_ARGS_PACKAGE ${PROJECT_NAME}) + endif() + + find_package(Python3 REQUIRED COMPONENTS Interpreter Development) + _cargo_get_target_dir(_CARGO_TARGET_DIR) + + execute_process( + COMMAND ${Python3_EXECUTABLE} -c + "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" + OUTPUT_VARIABLE _PYTHON_EXT_SUFFIX + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(_PYTHON_INSTALL_DIR + lib/python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}/site-packages) + + add_custom_target(cargo_${_ARGS_PACKAGE} ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo build --profile colcon --package ${_ARGS_PACKAGE} + --features pyo3/extension-module --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + install(CODE " + file(COPY + \"${_CARGO_TARGET_DIR}/colcon/lib${_ARGS_PACKAGE}.so\" + DESTINATION \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/\") + file(RENAME + \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/lib${_ARGS_PACKAGE}.so\" + \"\${CMAKE_INSTALL_PREFIX}/${_PYTHON_INSTALL_DIR}/${_ARGS_PACKAGE}${_PYTHON_EXT_SUFFIX}\") + ") + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + "PYO3_PYTHON=${Python3_EXECUTABLE}" + cargo test --package ${_ARGS_PACKAGE} --features pyo3/extension-module + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() +endfunction() + +# Build a standalone Rust binary and install it to lib/${PROJECT_NAME}/ so +# it is launchable via `ros2 run ${PROJECT_NAME} `. +# +# Usage: cargo_binary( [PACKAGE ]) +# PACKAGE defaults to ${PROJECT_NAME} +function(cargo_binary BINARY_NAME) + cmake_parse_arguments(_ARGS "" "PACKAGE" "" ${ARGN}) + if(NOT _ARGS_PACKAGE) + set(_ARGS_PACKAGE ${BINARY_NAME}) + endif() + + _cargo_get_target_dir(_CARGO_TARGET_DIR) + + if(WIN32) + set(_SUFFIX ".exe") + else() + set(_SUFFIX "") + endif() + + add_custom_target(cargo_${BINARY_NAME} ALL + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + cargo build --profile colcon --package ${_ARGS_PACKAGE} --quiet + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + USES_TERMINAL + VERBATIM + ) + + install(PROGRAMS ${_CARGO_TARGET_DIR}/colcon/${BINARY_NAME}${_SUFFIX} + DESTINATION lib/${PROJECT_NAME}) + + if(BUILD_TESTING) + add_test( + NAME cargo_test + COMMAND ${CMAKE_COMMAND} "-E" "env" "--unset=MAKEFLAGS" "--unset=MFLAGS" + cargo test --package ${_ARGS_PACKAGE} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) + endif() +endfunction() diff --git a/src/bitbots_misc/bitbots_cargo/package.xml b/src/bitbots_misc/bitbots_cargo/package.xml new file mode 100644 index 0000000000..153d2a900e --- /dev/null +++ b/src/bitbots_misc/bitbots_cargo/package.xml @@ -0,0 +1,19 @@ + + + + bitbots_cargo + 1.0.0 + CMake helper for Rust based Bit-Bots packages. + + Hamburg Bit-Bots + + MIT + + Hamburg Bit-Bots + + ament_cmake + + + ament_cmake + + diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt index f7c77480fa..96f2ba49a9 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/CMakeLists.txt @@ -1,48 +1,40 @@ cmake_minimum_required(VERSION 3.5) project(bitbots_extrinsic_calibration) -# Add support for C++17 -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 17) +find_package(ament_cmake REQUIRED) +find_package(bitbots_cargo REQUIRED) + +# put ros package dependencies here. +r2r_cargo( + rcl # we need the c ros2 api + rcl_action # as of r2r 0.1.0, we also need the action api + rosgraph_msgs # for the Clock message + geometry_msgs + tf2_msgs) + +# install binaries +if(WIN32) + set(SUFFIX ".exe") +else() + set(SUFFIX "") endif() -# Build with release optimizations and debug symbols by default -if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE RelWithDebug) -endif() +execute_process( + COMMAND cargo metadata --no-deps --format-version=1 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE CARGO_METADATA_JSON + OUTPUT_STRIP_TRAILING_WHITESPACE) -find_package(ament_cmake REQUIRED) -find_package(backward_ros REQUIRED) -find_package(bitbots_docs REQUIRED) -find_package(geometry_msgs REQUIRED) -find_package(rclcpp REQUIRED) -find_package(rot_conv REQUIRED) -find_package(std_msgs REQUIRED) -find_package(tf2 REQUIRED) -find_package(tf2_geometry_msgs REQUIRED) -find_package(tf2_ros REQUIRED) - -add_compile_options(-Wall -Werror -Wno-unused) - -add_executable(extrinsic_calibration src/extrinsic_calibration.cpp) - -ament_target_dependencies( - extrinsic_calibration - ament_cmake - bitbots_docs - rclcpp - std_msgs - tf2 - tf2_geometry_msgs - tf2_ros - rot_conv) - -enable_bitbots_docs() - -install(TARGETS extrinsic_calibration DESTINATION lib/${PROJECT_NAME}) +# Extract "target_directory" from JSON +string(JSON CARGO_TARGET_DIR GET "${CARGO_METADATA_JSON}" target_directory) -install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) +message(STATUS "Cargo target dir: ${CARGO_TARGET_DIR}") + +install(PROGRAMS ${CARGO_TARGET_DIR}/colcon/${PROJECT_NAME}${SUFFIX} + DESTINATION lib/${PROJECT_NAME}) +install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) install(DIRECTORY config DESTINATION share/${PROJECT_NAME}) +# we need this for ros/colcon ament_package() diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml b/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml new file mode 100644 index 0000000000..1f9b6111de --- /dev/null +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "bitbots_extrinsic_calibration" +version = "0.1.0" +authors = ["Florian Vahl "] +edition = "2021" + +[dependencies] +r2r = "0.9" +futures = "0.3.15" +tokio = { version = "1", features = ["full"] } +glam = "0.30.9" diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch b/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch index 3cceeb686c..5248a3b801 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/launch/calibration.launch @@ -1,13 +1,13 @@ - + - + diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml b/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml index 07c8168262..98d3f9c6b0 100644 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/package.xml @@ -14,12 +14,12 @@ ament_cmake - backward_ros - bitbots_docs - rot_conv - std_msgs - tf2_ros - tf2 + rcl + bitbots_cargo + geometry_msgs + rosgraph_msgs + + rcl diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp b/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp deleted file mode 100644 index 28876f0b4c..0000000000 --- a/src/bitbots_misc/bitbots_extrinsic_calibration/src/extrinsic_calibration.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include -#include -using std::placeholders::_1; - -class ExtrinsicCalibrationBroadcaster : public rclcpp::Node { - public: - ExtrinsicCalibrationBroadcaster() : Node("bitbots_extrinsic_calibration") { - broadcaster_ = std::make_unique(this); - - this->declare_parameter("parent_frame", "camera_optical_frame_left_uncalibrated"); - this->declare_parameter("child_frame", "zed_left_camera_optical_frame"); - this->declare_parameter("offset_x", 0.0); - this->declare_parameter("offset_y", 0.0); - this->declare_parameter("offset_z", 0.0); - - auto parameters = this->get_parameters(this->list_parameters({}, 10).names); - onSetParameters(parameters); - - param_callback_handle_ = - this->add_on_set_parameters_callback(std::bind(&ExtrinsicCalibrationBroadcaster::onSetParameters, this, _1)); - } - - rcl_interfaces::msg::SetParametersResult onSetParameters(const std::vector& parameters) { - for (const auto& parameter : parameters) { - if (parameter.get_name() == "offset_x") { - offset_x_ = parameter.as_double(); - } else if (parameter.get_name() == "offset_y") { - offset_y_ = parameter.as_double(); - } else if (parameter.get_name() == "offset_z") { - offset_z_ = parameter.as_double(); - } else if (parameter.get_name() == "parent_frame") { - parent_frame_ = parameter.as_string(); - } else if (parameter.get_name() == "child_frame") { - child_frame_ = parameter.as_string(); - } else { - RCLCPP_DEBUG(this->get_logger(), "Unknown parameter: %s", parameter.get_name().c_str()); - } - } - auto offset_quat = rot_conv::QuatFromEuler(offset_z_, offset_y_, offset_x_); - - transform_.rotation.x = offset_quat.x(); - transform_.rotation.y = offset_quat.y(); - transform_.rotation.z = offset_quat.z(); - transform_.rotation.w = offset_quat.w(); - - geometry_msgs::msg::TransformStamped tf; - tf.header.stamp = this->now(); - tf.header.frame_id = parent_frame_; - tf.child_frame_id = child_frame_; - tf.transform = transform_; - broadcaster_->sendTransform(tf); - - rcl_interfaces::msg::SetParametersResult result; - result.successful = true; - - return result; - } - - private: - OnSetParametersCallbackHandle::SharedPtr param_callback_handle_; - std::unique_ptr broadcaster_; - geometry_msgs::msg::Transform transform_{geometry_msgs::msg::Transform()}; - std::string parent_frame_, child_frame_; - double offset_x_ = 0, offset_y_ = 0, offset_z_ = 0; -}; - -int main(int argc, char** argv) { - rclcpp::init(argc, argv); - - auto node = std::make_shared(); - - rclcpp::experimental::executors::EventsExecutor exec; - exec.add_node(node); - exec.spin(); - rclcpp::shutdown(); -} diff --git a/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs new file mode 100644 index 0000000000..cec6d7612a --- /dev/null +++ b/src/bitbots_misc/bitbots_extrinsic_calibration/src/main.rs @@ -0,0 +1,95 @@ +use futures::StreamExt; +use glam::{EulerRot, Quat}; +use r2r::{ + geometry_msgs::msg::{Quaternion, Transform, TransformStamped, Vector3}, + std_msgs::msg::Header, + tf2_msgs::msg::TFMessage, + Clock, RosParams, +}; +use std::sync::{Arc, Mutex as StdMutex}; + +#[derive(RosParams, Debug, Default, Clone)] +struct CalibrationParams { + /// Parent frame for the calibration transform + parent_frame: String, + /// Child frame for the calibration transform + child_frame: String, + /// Roll offset in radians + offset_x: f32, + /// Pitch offset in radians + offset_y: f32, + /// Yaw offset in radians + offset_z: f32, +} + +#[tokio::main] +async fn main() -> Result<(), Box> { + let ctx = r2r::Context::create()?; + let mut node = r2r::Node::create(ctx, "bitbots_extrinsic_calibration", "")?; + let nl = node.logger().to_string(); + + // Initialize parameter handling + let params = Arc::new(StdMutex::new(CalibrationParams::default())); + let (parameter_handler, mut parameter_events) = + node.make_derived_parameter_handler(params.clone())?; + tokio::task::spawn(parameter_handler); + + let tf_static_broadcaster = + node.create_publisher("/tf_static", r2r::QosProfile::default().transient_local())?; + let ros_clock = node.get_ros_clock(); + + tokio::task::spawn(async move { + loop { + { + let params = params.lock().unwrap(); + + tf_static_broadcaster + .publish(&TFMessage { + transforms: vec![TransformStamped { + header: Header { + frame_id: params.parent_frame.clone(), + stamp: Clock::to_builtin_time( + &ros_clock.lock().unwrap().get_now().unwrap(), + ), + }, + child_frame_id: params.child_frame.clone(), + transform: Transform { + translation: Vector3::default(), + rotation: { + let quat = Quat::from_euler( + EulerRot::ZYX, + params.offset_z, + params.offset_y, + params.offset_x, + ); + Quaternion { + x: quat.x as f64, + y: quat.y as f64, + z: quat.z as f64, + w: quat.w as f64, + } + }, + }, + }], + }) + .expect("Failed to publish updated transform"); + } + // Wait for next parameter update + parameter_events.next().await; + r2r::log_info!(&nl, "Extrinsic parameter update"); + } + }); + + // Spin the node + tokio::task::spawn(async move { + loop { + node.spin_once(std::time::Duration::from_millis(100)); + tokio::task::yield_now().await; // Let the other tasks run too + } + }); + + // Await shutdown signal + tokio::signal::ctrl_c().await?; + + Ok(()) +} diff --git a/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt new file mode 100644 index 0000000000..bae93fdc9b --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 3.5) +project(bitbots_global_planner) + +find_package(ament_cmake REQUIRED) +find_package(bitbots_cargo REQUIRED) + +cargo_pyo3_extension() + +ament_package() diff --git a/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml b/src/bitbots_navigation/bitbots_global_planner/Cargo.toml similarity index 79% rename from src/bitbots_navigation/bitbots_rust_nav/Cargo.toml rename to src/bitbots_navigation/bitbots_global_planner/Cargo.toml index 8a86b5afd4..193e1434dc 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/Cargo.toml +++ b/src/bitbots_navigation/bitbots_global_planner/Cargo.toml @@ -1,10 +1,10 @@ [package] -name = "bitbots_rust_nav" -version = "0.2.0" +name = "bitbots_global_planner" +version = "0.1.2" edition = "2021" [lib] -name = "bitbots_rust_nav" +name = "bitbots_global_planner" crate-type = ["cdylib", "rlib"] [[bin]] diff --git a/src/bitbots_navigation/bitbots_rust_nav/README.md b/src/bitbots_navigation/bitbots_global_planner/README.md similarity index 97% rename from src/bitbots_navigation/bitbots_rust_nav/README.md rename to src/bitbots_navigation/bitbots_global_planner/README.md index ab482dfc25..60b77b455f 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/README.md +++ b/src/bitbots_navigation/bitbots_global_planner/README.md @@ -1,4 +1,4 @@ -# bitbots_rust_nav +# bitbots_global_planner A best-effort A*-on-visibility-graph implementation for path planning in obstacles maps where obstacles and the robot itself are assumed to be round. diff --git a/src/bitbots_navigation/bitbots_global_planner/package.xml b/src/bitbots_navigation/bitbots_global_planner/package.xml new file mode 100644 index 0000000000..ad5d5884b0 --- /dev/null +++ b/src/bitbots_navigation/bitbots_global_planner/package.xml @@ -0,0 +1,20 @@ + + + + bitbots_global_planner + 0.1.2 + Rust-based navigation primitives (obstacle map, visibility graph) exposed as a Python extension. + + Hamburg Bit-Bots + + MIT + + Hamburg Bit-Bots + + ament_cmake + bitbots_cargo + + + ament_cmake + + diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs b/src/bitbots_navigation/bitbots_global_planner/src/bin.rs similarity index 94% rename from src/bitbots_navigation/bitbots_rust_nav/src/bin.rs rename to src/bitbots_navigation/bitbots_global_planner/src/bin.rs index 496ead9821..fbaa9fbf79 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/src/bin.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/bin.rs @@ -1,7 +1,7 @@ #[cfg(feature = "gui")] mod gui { - use bitbots_rust_nav::map::{ObstacleMap, ObstacleMapConfig}; - use bitbots_rust_nav::obstacle::{AnyObstacle, RoundObstacle}; + use bitbots_global_planner::map::{ObstacleMap, ObstacleMapConfig}; + use bitbots_global_planner::obstacle::RoundObstacle; use eframe::egui; pub struct PathfindingApp { @@ -115,10 +115,7 @@ mod gui { } if let (Some(start), Some(goal)) = (self.start, self.goal) { - let omap = ObstacleMap::new( - self.config, - self.obstacles.iter().cloned().map(AnyObstacle::Round).collect(), - ); + let omap = ObstacleMap::new(self.config, self.obstacles.clone()); let time1 = std::time::Instant::now(); self.path = omap.shortest_path(start, goal); let time2 = std::time::Instant::now(); diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs b/src/bitbots_navigation/bitbots_global_planner/src/lib.rs similarity index 85% rename from src/bitbots_navigation/bitbots_rust_nav/src/lib.rs rename to src/bitbots_navigation/bitbots_global_planner/src/lib.rs index 4816b59834..994d666508 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/src/lib.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/lib.rs @@ -7,7 +7,7 @@ pub mod obstacle; pub mod planner; #[pymodule] -fn bitbots_rust_nav(m: &Bound<'_, PyModule>) -> PyResult<()> { +fn bitbots_global_planner(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/map.rs b/src/bitbots_navigation/bitbots_global_planner/src/map.rs similarity index 96% rename from src/bitbots_navigation/bitbots_rust_nav/src/map.rs rename to src/bitbots_navigation/bitbots_global_planner/src/map.rs index bfd3772c6c..900284d83b 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/src/map.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/map.rs @@ -9,6 +9,7 @@ use crate::{ /// Configuration values for the ObstacleMap, these should be given by ROS parameters #[pyclass( eq, + from_py_object, str = "ObstacleMapConfig(robot_radius={robot_radius:?}, margin={margin:?}, num_vertices={num_vertices:?})" )] #[derive(Debug, Copy, Clone, PartialEq)] @@ -38,7 +39,7 @@ impl ObstacleMapConfig { } } -#[pyclass(eq, str = "ObstacleMap(obstacles={obstacles:?})")] +#[pyclass(eq, from_py_object, str = "ObstacleMap(obstacles={obstacles:?})")] #[derive(Debug, Clone, PartialEq)] pub struct ObstacleMap { #[pyo3(get, set)] diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs similarity index 94% rename from src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs rename to src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs index 88e8d70aed..6544d3d94c 100644 --- a/src/bitbots_navigation/bitbots_rust_nav/src/obstacle.rs +++ b/src/bitbots_navigation/bitbots_global_planner/src/obstacle.rs @@ -23,7 +23,11 @@ fn regular_ngon(center: Coord, num_vertices: usize, radius: f64) -> Vec { } /// A round obstacle -#[pyclass(eq, str = "RoundObstacle(center={center:?} radius={radius:?})")] +#[pyclass( + eq, + from_py_object, + str = "RoundObstacle(center={center:?} radius={radius:?})" +)] #[derive(Debug, Clone, Copy, PartialEq)] pub struct RoundObstacle { /// The center of the obstacle @@ -70,7 +74,7 @@ impl Obstacle for RoundObstacle { } /// An obstacle with an arbitrary (also concave) polygon shape -#[pyclass(eq, str = "PolygonObstacle(vertices={vertices:?})")] +#[pyclass(eq, from_py_object, str = "PolygonObstacle(vertices={vertices:?})")] #[derive(Debug, Clone, PartialEq)] pub struct PolygonObstacle { /// The vertices of the polygon outline (without a closing duplicate of the first vertex) @@ -112,7 +116,10 @@ impl PolygonObstacle { result = result.union(&rectangle); } // Regular ngon rounding the corner at each vertex - let corner = Polygon::new(LineString::new(regular_ngon(a, num_vertices, offset)), vec![]); + let corner = Polygon::new( + LineString::new(regular_ngon(a, num_vertices, offset)), + vec![], + ); result = result.union(&corner); } // All parts overlap the base polygon, so the union is a single polygon @@ -177,8 +184,7 @@ mod tests { #[test] fn polygon_obstacle_is_inflated() { - let obstacle = - PolygonObstacle::new(vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]); + let obstacle = PolygonObstacle::new(vec![(0.0, 0.0), (1.0, 0.0), (1.0, 1.0), (0.0, 1.0)]); // The polygon inflated by the robot radius contains points outside of the original polygon let critical = obstacle.as_polygon(&config(), false); assert!(critical.contains(&Coord::from((-0.25, 0.5)))); diff --git a/src/bitbots_navigation/bitbots_rust_nav/src/planner.rs b/src/bitbots_navigation/bitbots_global_planner/src/planner.rs similarity index 100% rename from src/bitbots_navigation/bitbots_rust_nav/src/planner.rs rename to src/bitbots_navigation/bitbots_global_planner/src/planner.rs diff --git a/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py b/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py index a7950b714e..c8c128269b 100644 --- a/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py +++ b/src/bitbots_navigation/bitbots_path_planning/bitbots_path_planning/planner.py @@ -3,7 +3,7 @@ import soccer_vision_3d_msgs.msg as sv3dm import tf2_ros as tf2 -from bitbots_rust_nav import ObstacleMap, ObstacleMapConfig, PolygonObstacle, RoundObstacle +from bitbots_global_planner import ObstacleMap, ObstacleMapConfig, PolygonObstacle, RoundObstacle from bitbots_utils.utils import get_parameters_from_other_node from geometry_msgs.msg import PoseStamped from nav_msgs.msg import Path diff --git a/src/bitbots_navigation/bitbots_rust_nav/pixi.toml b/src/bitbots_navigation/bitbots_rust_nav/pixi.toml deleted file mode 100644 index 52021ce2a4..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/pixi.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "bitbots_rust_nav" -version = "0.2.0" - -[package.build] -backend = { name = "pixi-build-python", version = ">=0.4.0" } - -[package.host-dependencies] -rust = ">=1.91.1,<1.92" -maturin = ">=1.10.2,<2" -python = ">=3.12.1, <3.13" diff --git a/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml b/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml deleted file mode 100644 index 933ab2aa6f..0000000000 --- a/src/bitbots_navigation/bitbots_rust_nav/pyproject.toml +++ /dev/null @@ -1,16 +0,0 @@ -[build-system] -requires = ["maturin>=1.7,<2.0"] -build-backend = "maturin" - -[project] -name = "bitbots_rust_nav" -requires-python = ">=3.12" -classifiers = [ - "Programming Language :: Rust", - "Programming Language :: Python :: Implementation :: CPython", - "Programming Language :: Python :: Implementation :: PyPy", -] -dynamic = ["version"] - -[tool.maturin] -features = ["pyo3/extension-module"] diff --git a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py index e19b9b55b7..e9b59f488d 100755 --- a/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py +++ b/src/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication/bitbots_team_communication.py @@ -3,6 +3,7 @@ import socket import struct import threading +import time from typing import Optional import rclpy @@ -67,7 +68,6 @@ def __init__(self): self.tf_buffer = Buffer(node=self.node) - self.run_spin_in_thread() self.try_to_establish_connection() self.actual_rate = self.rate * self.increase_rate_during_kick_factor @@ -116,10 +116,7 @@ def spin(self): except KeyboardInterrupt: pass - def run_spin_in_thread(self): - # Necessary in ROS2, else we are forever stuck receiving messages - thread = threading.Thread(target=self.spin, daemon=True) - thread.start() + self.logger.info("Initialization complete.") def set_state_defaults(self): self.gamestate: Optional[GameState] = None @@ -139,8 +136,9 @@ def set_state_defaults(self): def try_to_establish_connection(self): # we will try multiple times till we manage to get a connection while rclpy.ok() and not self.socket_communication.is_setup(): + self.logger.info("Trying to establish connection...") self.socket_communication.establish_connection() - self.node.get_clock().sleep_for(Duration(seconds=1)) + time.sleep(1) def create_publishers(self): self.team_data_publisher = self.node.create_publisher(TeamData, self.topics["team_data_topic"], qos_profile=1) @@ -351,7 +349,14 @@ def convert_to_euler(self, quaternion: Quaternion): def main(): rclpy.init(args=None) - TeamCommunication() + tc = TeamCommunication() + + executor = EventsExecutor() + executor.add_node(tc.node) + try: + executor.spin() + except KeyboardInterrupt: + pass if __name__ == "__main__": diff --git a/src/lib/launch/.github/ISSUE_TEMPLATE.md b/src/lib/launch/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..f705392bb3 --- /dev/null +++ b/src/lib/launch/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,45 @@ + + +## Bug report + +**Required Info:** + +- Operating System: + - +- Installation type: + - +- Version or commit hash: + - +- DDS implementation: + - +- Client library (if applicable): + - + +#### Steps to reproduce issue + +``` + +``` + +#### Expected behavior + +#### Actual behavior + +#### Additional information + + +---- +## Feature request + +#### Feature description + + +#### Implementation considerations + diff --git a/src/lib/launch/.gitignore b/src/lib/launch/.gitignore new file mode 100644 index 0000000000..f70b02df49 --- /dev/null +++ b/src/lib/launch/.gitignore @@ -0,0 +1,6 @@ +__pycache__ +*.pyc +.DS_Store +.mypy_cache +.pytest_cache +.flake8 diff --git a/src/lib/launch/.gitrepo b/src/lib/launch/.gitrepo new file mode 100644 index 0000000000..b7392fead9 --- /dev/null +++ b/src/lib/launch/.gitrepo @@ -0,0 +1,13 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-include command (compatible with git-subrepo). +; See https://github.com/flova/git-include +; +[subrepo] + remote = https://github.com/ros2/launch.git + branch = jazzy + commit = e74fa72f5c64bedd9ce252bf3846e7442b45c791 + parent = 48142d57127678664778584280df6791a43a0592 + method = merge + cmdver = git-include/0.1.3 diff --git a/src/lib/launch/CONTRIBUTING.md b/src/lib/launch/CONTRIBUTING.md new file mode 100644 index 0000000000..cfba094dac --- /dev/null +++ b/src/lib/launch/CONTRIBUTING.md @@ -0,0 +1,18 @@ +Any contribution that you make to this repository will +be under the Apache 2 License, as dictated by that +[license](http://www.apache.org/licenses/LICENSE-2.0.html): + +~~~ +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. +~~~ + +Contributors must sign-off each commit by adding a `Signed-off-by: ...` +line to commit messages to certify that they have the right to submit +the code they are contributing to the project according to the +[Developer Certificate of Origin (DCO)](https://developercertificate.org/). diff --git a/src/lib/launch/LICENSE b/src/lib/launch/LICENSE new file mode 100644 index 0000000000..2b315a13af --- /dev/null +++ b/src/lib/launch/LICENSE @@ -0,0 +1,237 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +---------------------------- + + + + Software License Agreement (BSD License) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Willow Garage, Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. diff --git a/src/lib/launch/launch/CHANGELOG.rst b/src/lib/launch/launch/CHANGELOG.rst new file mode 100644 index 0000000000..ec281e0abf --- /dev/null +++ b/src/lib/launch/launch/CHANGELOG.rst @@ -0,0 +1,542 @@ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Changelog for package launch +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +3.4.11 (2026-06-02) +------------------- +* Correct typos (backport `#961 `_) (`#963 `_) + * Correct typos (`#961 `_) + (cherry picked from commit b51d67a0fb3c572a8255855ac73364ca53ed3691) + Co-authored-by: Auguste Lalande + Co-authored-by: Alejandro Hernandez Cordero +* Contributors: mergify[bot] + +3.4.10 (2026-01-12) +------------------- +* [jazzy] Allow Path in substitutions, instead of requiring cast to str (backport `#873 `_) (`#927 `_) +* Fix intersphinx_mapping format (`#921 `_) (`#923 `_) +* Contributors: mergify[bot] + +3.4.9 (2025-11-07) +------------------ +* [backport jazzy] Make the directory-finding substitutions into a PathSubstitution for / operator (backport `#914 `_) (`#918 `_) +* Contributors: mergify[bot] + +3.4.8 (2025-10-17) +------------------ +* Fix all/any in xml and yaml launch files (backport `#906 `_) (`#912 `_) +* Contributors: mergify[bot] + +3.4.7 (2025-10-06) +------------------ +* Allow providing launch args to include using let in frontends (backport `#848 `_) (`#910 `_) +* Contributors: mergify[bot] + +3.4.6 (2025-08-06) +------------------ +* Using `TimerAction` with `SetParameter` from launch_ros causes crash (backport `#879 `_) (`#893 `_) + Co-authored-by: Christophe Bedard +* Remove LaunchDescriptionArgument (`#891 `_) (`#896 `_) + (cherry picked from commit 8fd76bb11c45cdd072b5f3ef4f3800ff63ee3c9a) + Co-authored-by: Harrison Chen +* Contributors: Rafal Gorecki, mergify[bot] + +3.4.5 (2025-06-23) +------------------ +* Provide copy of launch configs to TimerAction's entities (`#836 `_) (`#878 `_) +* [backport jazzy] Add a `/` path join operator for `PathJoinSubstitution` (`#868 `_) (`#880 `_) +* Contributors: Emerson Knapp, Kenji Brameld (TRACLabs) + +3.4.4 (2025-04-02) +------------------ +* Document substitutions concatenation in architecture doc (`#845 `_) (`#846 `_) + (cherry picked from commit 6fcc79e38fa711e04be3d392a6691a36ea5de214) + Co-authored-by: Christophe Bedard +* Update docs to use proper RST literals (`#837 `_) (`#839 `_) + (cherry picked from commit 3694dc2a14fdf0dd5ccf9e950ab9d8b60bee8a79) + Co-authored-by: Christophe Bedard +* Merge pull request `#834 `_ from ros2/mergify/bp/jazzy/pr-833 + Fix function params indentation (backport `#833 `_) +* Fix function params indentation (`#833 `_) + (cherry picked from commit 151b024a7cfac06f0d56798cbe87ab180b9ea3ab) +* Contributors: Alejandro Hernández Cordero, Christophe Bedard, mergify[bot] + +3.4.3 (2024-12-18) +------------------ +* Fix 'set up' typo (`#813 `_) (`#814 `_) + (cherry picked from commit fda41a218b990c8e3bcc6c3d61f2862704529257) + Co-authored-by: Christophe Bedard +* Contributors: mergify[bot] + +3.4.2 (2024-04-16) +------------------ +* (launch) fix describe of PathJoinSubstitution (`#771 `_) +* Contributors: Matthijs van der Burgh + +3.4.1 (2024-03-28) +------------------ +* Small fixes for modern flake8. (`#772 `_) +* Cleanup some type annotations. +* Contributors: Chris Lalancette + +3.4.0 (2024-02-07) +------------------ +* Rework task exceptions loop. (`#755 `_) +* add format overriding by environment variables (`#722 `_) +* Add exception type to error output (`#753 `_) +* Contributors: Chris Lalancette, David Yackzan, Marc Bestmann + +3.3.0 (2024-01-24) +------------------ +* Let XML executables/nodes be "required" (like in ROS 1) (`#751 `_) +* Contributors: Matthew Elwin + +3.2.1 (2023-12-26) +------------------ + +3.2.0 (2023-10-04) +------------------ +* Add conditional substitution (`#734 `_) +* Contributors: Nick Lamprianidis + +3.1.0 (2023-09-08) +------------------ +* Add maximum times for a process to respawn (`#696 `_) +* Contributors: Santti4go + +3.0.1 (2023-09-07) +------------------ +* Add in a timeout for launch pytests. (`#725 `_) +* Contributors: Chris Lalancette + +3.0.0 (2023-08-21) +------------------ +* Fix remaining occurrences of "There is no current event loop" (`#723 `_) +* Update the launch code for newer flake8 and mypy. (`#719 `_) +* Remove the deprecated some_actions_type.py (`#718 `_) +* Contributors: Chris Lalancette + +2.2.1 (2023-07-11) +------------------ +* Improve launch file parsing error messages (`#626 `_) +* Contributors: Timon Engelke + +2.2.0 (2023-06-07) +------------------ +* Add file-content launch substitution (`#708 `_) +* Contributors: Scott K Logan + +2.1.0 (2023-04-27) +------------------ + +2.0.1 (2023-04-12) +------------------ +* Document LaunchService.{run,run_async}() return value (`#702 `_) +* Contributors: Christophe Bedard + +2.0.0 (2023-04-11) +------------------ +* [rosdoc2] Fix document generation on buildfarm (`#701 `_) +* Enable document generation using rosdoc2 for ament_python pkgs (`#697 `_) +* Remove the import of Literal from entity.py. (`#694 `_) +* Fix flake8 errors. (`#695 `_) +* add symlink to latest log directory (`#686 `_) +* Improve type checking (`#679 `_) +* Contributors: Chris Lalancette, Hervé Audren, Welte, Yadu + +1.4.1 (2023-02-24) +------------------ +* Fixed typos (`#692 `_) +* Contributors: Alejandro Hernández Cordero + +1.4.0 (2023-02-14) +------------------ +* Pass modules to PythonExpression (`#655 `_) +* Allow ReadyToTest() usage in event handler (`#665 `_) +* Expose emulate_tty to xml and yaml launch (`#669 `_) +* Expose sigterm_timeout and sigkill_timeout to xml frontend (`#667 `_) +* [rolling] Update maintainers - 2022-11-07 (`#671 `_) +* Contributors: Aditya Pande, Audrow Nash, Blake Anderson, Nikolai Morin + +1.3.0 (2022-11-02) +------------------ +* Expect deprecation warnings in tests (`#657 `_) +* Fix the restoring of os.environ to maintain type. (`#656 `_) +* Implement Any, All, Equals, and NotEquals substitutions (`#649 `_) +* add LaunchLogDir substitution, replacing log_dir frontend only substitution (`#652 `_) +* Add special cases to coerce "1" and "0" to bool when using bool coercion only (`#651 `_) +* Contributors: Chris Lalancette, Jacob Perron, William Woodall, methylDragon + +1.2.0 (2022-09-13) +------------------ +* Update launch/test/launch/test_execute_local.py +* Added unit test ensuring that output dictionary works with ExecuteLocal +* Addresses issue `#588 `_, allowing dict for 'output' +* Contributors: Matthew Elwin, Michael Jeronimo + +1.1.0 (2022-04-29) +------------------ +* Remove unused variables. (`#612 `_) +* Expose shutdown action to xml frontend (`#611 `_) +* Contributors: Aditya Pande, Chris Lalancette + +1.0.1 (2022-04-13) +------------------ +* Sandbox environment in tests to fix repeated job failures (`#609 `_) +* Contributors: Shane Loretz + +1.0.0 (2022-04-12) +------------------ + +0.23.1 (2022-04-08) +------------------- +* Start Python faster in test_execute_processs_shutdown to avoid flakey failures (`#608 `_) +* Fix warnings from importlib_metdata on Python 3.10. (`#606 `_) +* Contributors: Chris Lalancette, Shane Loretz + +0.23.0 (2022-03-30) +------------------- +* Add boolean substitutions (`#598 `_) +* Contributors: Kenji Miyake + +0.22.0 (2022-03-28) +------------------- +* Support scoping environment variables (`#601 `_) +* Fix awaiting shutdown in launch context (`#603 `_) +* Fix parse respawn var (`#569 `_) +* Make the logged command pretty in ExecuteLocal (`#594 `_) +* Contributors: Jacob Perron, Kosuke Takeuchi + +0.21.1 (2022-03-01) +------------------- +* 'output' is expanded as a substitution in XML/YAML files (`#577 `_) +* Skip warning test if warning already happend (`#585 `_) +* Contributors: Khush Jain, Shane Loretz + +0.21.0 (2022-01-14) +------------------- +* Use asyncio.wait with timeout rather than sleep (`#576 `_) +* Make test_parser compatible with Python older than 3.8 (`#575 `_) +* Propagate exceptions of completed actions to launch service main loop (`#566 `_) +* Warn when loading launch extensions fails (`#572 `_) +* Add in two fixes for Jammy (`#571 `_) +* Contributors: Chris Lalancette, Scott K Logan, Shane Loretz, tumtom + +0.20.0 (2021-11-29) +------------------- +* Evaluate math symbols and functions in python expression (`#557 `_) +* Document TimerAction params (`#558 `_) +* Improve launch arguments introspection (`#556 `_) +* Update maintainers to Aditya Pande and Michel Hidalgo (`#559 `_) +* Updated maintainers (`#555 `_) +* First prototype of native pytest plugin for launch based tests (`#528 `_) +* Allow for raw path specification in IncludeLaunchDescription (`#544 `_) +* Adding Executable description class (`#454 `_) +* event handlers: Allow to match the target action with a callable and not only with an object instance (`#540 `_) +* Add AppendEnvironmentVariable action (`#543 `_) +* Document EnvironmentVariable substitution resolution context caveat (`#541 `_) +* Feature clear launch configs (`#515 `_) +* Add examples to ExecuteProcess docs (`#525 `_) +* Fix `DeclareLaunchArgument` xml parsing and constructor (`#529 `_) +* Fix pytest run on Windows (`#526 `_) +* Improving docs (`#523 `_) +* Add filtering mechanism for executable prefix application (`#522 `_) +* Contributors: Aditya Pande, Audrow Nash, Cameron Miller, Christophe Bedard, David V. Lu!!, Derek Chopp, Immanuel Martini, Ivan Santiago Paunovic, roger-strain + +0.19.0 (2021-07-15) +------------------- +* Make each parser extension provide a set of file extensions (`#516 `_) +* Contributors: Christophe Bedard + +0.18.0 (2021-06-18) +------------------- +* Add missing exec dependency on PyYAML (`#493 `_) +* Refactor TimerAction to allow RosTimer to extend (`#512 `_) +* Improve (Not)Equals condition type hinting (`#510 `_) +* Contributors: HMellor, Rebecca Butler, Scott K Logan + +0.17.0 (2021-04-06) +------------------- +* Only try to wrap the fd in a socket on Windows (`#498 `_) +* Close the socket pair used for signal management (`#497 `_) +* Remove is_winsock_handle() and instead test if wrapping the handle in a socket.socket() works (`#494 `_) +* Add frontend substitution for logging directory (`#490 `_) +* Contributors: Ivan Santiago Paunovic, Jacob Perron + +0.16.0 (2021-03-19) +------------------- +* Add arg_choice arg to DeclareLaunchArguments (`#483 `_) +* Contributors: Victor Lopez + +0.15.0 (2021-01-25) +------------------- +* Support Python 3.8-provided importlib.metadata (`#482 `_) +* Workaround asyncio signal handling on Unix (`#479 `_) +* Handle signals within the asyncio loop. (`#476 `_) +* Support non-interactive launch.LaunchService runs (`#475 `_) +* Contributors: Michel Hidalgo, Scott K Logan + +0.14.0 (2020-12-08) +------------------- +* print stderr message when command failed (`#474 `_) +* Add frontend support for LogInfo action (`#467 `_) +* Contributors: Jacob Perron, Takamasa Horibe + +0.13.0 (2020-11-04) +------------------- +* Validate unparsed attributes and subentities in launch_xml and launch_yaml (`#468 `_) +* Fix bug in launch.actions.TimerAction.parse() (`#470 `_) +* Allow configuring logging directory through environment variables (`#460 `_) +* Update package maintainers (`#465 `_) +* Expose Timer action in launch xml (`#462 `_) +* Fix dollar symbols in substitution grammar (`#461 `_) +* Contributors: Christophe Bedard, Ivan Santiago Paunovic, Michel Hidalgo + +0.12.0 (2020-08-18) +------------------- +* Add new conditions for checking launch configuration values (`#453 `_) +* Contributors: Jacob Perron + +0.11.1 (2020-08-14) +------------------- +* Refactor launch service run_async loop to wait on futures and queued events (`#449 `_) +* Fix documentation typo (`#446 `_) +* Fix type_utils.extract_type() function. (`#445 `_) +* Contributors: Jacob Perron, Michel Hidalgo + +0.11.0 (2020-08-04) +------------------- +* Handle empty strings in type coercion. (`#443 `_) +* Consolidate type_utils in a way that can be reused in substitution results that need to be coerced to a specific type (`#438 `_) +* Delete unnecessary loading of 'launch.frontend.interpolate_substitution_method' entry point that was never used (`#434 `_) +* Avoid side effect, defer until needed (`#432 `_) +* Remove pkg_resources, replace it with the use of the more modern importlib* libraries. (`#430 `_) +* Remove the asyncio.wait loop parameter. (`#429 `_) +* Add pytest.ini so local tests don't display warning (`#428 `_) +* Defer shutdown if already running (`#427 `_) +* Add respawn and respawn_delay support (`#426 `_) +* Fix up parser.py (`#414 `_) +* Contributors: CHEN, Chris Lalancette, Dan Rose, Dirk Thomas, Ivan Santiago Paunovic, Jorge Perez, Michel Hidalgo + +0.10.2 (2020-05-26) +------------------- +* Fix new flake8 errors. (`#420 `_) +* Contributors: Michel Hidalgo + +0.10.1 (2020-05-08) +------------------- +* removed deprecated loop parameter call (`#387 `_) (`#410 `_) +* Contributors: Zahi Kakish + +0.10.0 (2020-04-24) +------------------- +* remove Python 3.5 specific logic (`#401 `_) +* use typing.TYPE_CHECKING to avoid flake8 failure (`#398 `_) +* Suppress flake8 A003 warning (`#395 `_) +* more verbose test_flake8 error messages (same as `ros2/launch_ros#135 `_) +* Remove unnecessary overloads (`#389 `_) +* Simplify type annotation (`#388 `_) +* Add support for anon substitution (`#384 `_) +* Make RegisterEventHandler describe its sub-entities (`#386 `_) +* Fix parsing of cmd line arguments in XML and yaml file (`#379 `_) +* Only allow ExecuteProcess actions to execute once (`#375 `_) +* Fix grammar in docstring (`#373 `_) +* Release loop lock before waiting for it to do work (`#369 `_) +* Adds `Command` substitution (`#367 `_) +* Handle case where output buffer is closed during shutdown (`#365 `_) +* Use imperative mood in docstrings. (`#362 `_) +* Contributors: Dirk Thomas, Ivan Santiago Paunovic, Jacob Perron, Jorge Perez, Peter Baughman, Shane Loretz, Steven! Ragnarök, William Woodall + +0.9.5 (2019-11-13) +------------------ +* fix PendingDeprecationWarning about asyncio.Task.current_task (`#355 `_) +* import collections.abc (`#354 `_) +* Contributors: Dirk Thomas + +0.9.4 (2019-11-08) +------------------ +* Fix ExecuteProcess.get_sub_entities() implementation. (`#353 `_) +* Contributors: Michel Hidalgo + +0.9.3 (2019-10-23) +------------------ + +0.9.2 (2019-10-23) +------------------ + +0.9.1 (2019-09-25) +------------------ +* Fix error in ExecuteProcess parse classmethod (`#339 `_) +* Add support to ignore fields when parsing ExecuteProcess. (`#336 `_) +* Make parse_substitution handle zero-width text. (`#335 `_) +* Fix InvalidLaunchFileError error message. (`#333 `_) +* Fix default Action describe_conditional_sub_entities() implementation. (`#334 `_) +* Contributors: Michel Hidalgo, ivanpauno + +0.9.0 (2019-09-18) +------------------ +* Fix "'GroupAction' object has no attribute 'actions'" error (`#327 `_) +* install package marker and manifest (`#323 `_) +* Make IncludeLaunchDescription force launch_arguments (`#284 `_) +* fix expectation for test on Windows (`#319 `_) +* Improve error message when a failing to include launch file (`#315 `_) +* Fix launch argument listing/checking issues (`#310 `_) +* Support LaunchService injection into pre-shutdown tests. (`#308 `_) +* Fix test_expose_decorators failures (`#307 `_) +* Add assertWaitForStartup method to match assertWaitForShutdown (`#278 `_) +* Add support for conditions in IncludeLaunchDescription actions (`#304 `_) +* Convert list comprehension to generator (`#300 `_) +* Don't create a log directory every time the launch logger is imported. (`#299 `_) +* Avoid registering atexit on windows (`#297 `_) +* Correct launch service sigterm handling (`#294 `_) +* fix encoding handling when writing to stdout and log files (`#280 `_) +* More idiomatic typecheck-only imports (`#285 `_) +* Add deprecated argument to LaunchDescriptionn (`#291 `_) +* Add support for not optional environment variable substitution (`#288 `_) +* Add parsing method to PythonExpression substitution (`#281 `_) +* Revert "Revert "[execute_process] emulate_tty configurable and defaults to true"" (`#277 `_) +* Refactor `launch.frontend` file loading (`#271 `_) +* Revert "[execute_process] emulate_tty configurable and defaults to true (`#265 `_)" (`#276 `_) +* fix linter warnings (`#274 `_) +* [execute_process] emulate_tty configurable and defaults to true (`#265 `_) +* Add parsing method for dirname substitution (`#273 `_) +* Add parsing methods for SetEnviromentVariable and UnsetEnviromentVariable (`#272 `_) +* Add parsing method for `DeclareLaunchArgument` (`#270 `_) +* Add frontend module in launch, launch_xml and launch_yaml packages (`#226 `_) +* Add PathJoinSubstitution (`#266 `_) +* Fix EventHandler type hints (`#264 `_) +* Fix build_cop `#214 `_ (`#259 `_) +* Fix get_launch_arguments to not crash on conditional sub entities (`#257 `_) +* Use stderr logger instead of buffer (`#258 `_) +* Line buffering of logger output (`#255 `_) +* Contributors: Chris Lalancette, Dan Rose, Daniel Stonier, Dirk Thomas, Jacob Perron, Michel Hidalgo, Peter Baughman, Scott K Logan, William Woodall, ivanpauno + +0.8.3 (2019-05-29) +------------------ +* Changed IncludeLaunchDescription to not check declared arguments of subentities in order to work around an issue preventing nested arugments until a better fix can be done. (`#249 `_) +* Fixed a bug where logging messages could be duplicated and improved logging's apperance on the CLI. (`#250 `_) +* Contributors: Michel Hidalgo, ivanpauno + +0.8.2 (2019-05-20) +------------------ +* Moved some common code to LaunchDescriptionSource (`#234 `_) +* Please flake8 on launch package. (`#241 `_) +* Allow substitution in variable_name of LaunchConfiguration substitutions (`#235 `_) +* Add support for custom launch log file handling (`#233 `_) +* Contributors: Michel Hidalgo, ivanpauno + +0.8.1 (2019-05-08) +------------------ + +0.8.0 (2019-04-13) +------------------ +* Added SetEnvironmentVariable and UnsetEnvironmentVariable actions `#164 `_ (`#216 `_) +* Used one sentence per line in docs. (`#219 `_) +* Added support for external ExecuteProcess output overrides. (`#218 `_) +* Logged the launch logging config before running. (`#217 `_) +* Fixed treating stderr output separate from stdout. (`#212 `_) +* Replaced characters with marker when there is a decoding error. (`#202 `_) +* Added LaunchLogger class. (`#145 `_) +* Added test actions. (`#178 `_) +* Fixed to close subprocess transport on execute action cleanup. (`#198 `_) +* Updated logger.warn (deprecated) to logger.warning. (`#199 `_) +* Dropped legacy launch package. (`#191 `_) +* Migrated legacy launch API tests. (`#167 `_) +* Updated to cancel Timers on shutdown. (`#181 `_) +* Fixed timer global init of event handler. (`#184 `_) +* Added support for required nodes (`#179 `_) +* Updated to ensure event handlers add event to context locals. (`#177 `_) +* Added OnProcessStart event handler. (`#171 `_) +* Corrected OnProcessExit typing for Callable. (`#170 `_) +* Removed whitespace in keyword arg. (`#169 `_) +* Contributors: Dirk Thomas, Jacob Perron, Kyle Fazzari, Michel Hidalgo, Peter Baughman, Shane Loretz, William Woodall, ivanpauno, oswinso + +0.7.3 (2018-12-13) +------------------ +* Fixed deprecation warning related to collections.abc (`#158 `_) +* Contributors: William Woodall + +0.7.2 (2018-12-06) +------------------ +* Changed the signit handler os it executes the shutdown event synchronously (`#156 `_) +* Contributors: Jonathan Chapple, Steven! Ragnarök, William Woodall + +0.7.1 (2018-11-16) +------------------ +* Fixed setup.py versions (`#155 `_) +* Contributors: Steven! Ragnarök + +0.7.0 (2018-11-16) +------------------ +* Fixed a bug to ensure that shutdown event is handled correctly (`#154 `_) + * There was a potential race condition in between when the shutdown event is emitted and the rest of the shutdown handling code. + * This introduces an additional await to ensure that the event is emitted before proceeding. +* Fixed example to always use shell to avoid inconsistency of time being a shell command or executable (`#150 `_) +* Added tests for class_tools module and fix is_a_subclass() (`#142 `_) +* Added tests for the utilities module (`#143 `_) +* Added 'handle_once' property for unregistering an EventHandler after one event (`#141 `_) +* Added UnregisterEventHandler action (`#110 `_) +* Changed LaunchService so that it returns ``1`` on caught exceptions from within launch (`#136 `_) +* Added ability to define and pass launch arguments to launch files (`#123 `_) + * Added self descriptions for substitutions + * Added tracebacks back to the output by default + * Added new actions for declaring launch arguments + * Added new method on LaunchDescription which gets all declared arguments within + * Added ability to pass arguments when including a launch description + * Added description for local variables used in Node action + * Added ability to show and pass launch arguments on the command line + * Added an accessor for the Condition of an Action + * Signed-off-by: William Woodall +* Added UnsetLaunchConfiguration action and tests (`#134 `_) + * Signed-off-by: William Woodall +* Added GroupAction for conditionally including other actions and scoping (`#133 `_) + * Signed-off-by: William Woodall +* Added optional name argument to ExecuteProcess (`#129 `_) + * Signed-off-by: William Woodall +* Added a new pair of actions for pushing and popping launch configurations (`#128 `_) + * Signed-off-by: William Woodall +* Contributors: Dirk Thomas, Jacob Perron, Michael Carroll, William Woodall, dhood + +0.6.0 (2018-08-20) +------------------ +* Added a way to include other Python launch files (`#122 `_) + * Signed-off-by: William Woodall +* Implemented the concept of Action conditions (`#121 `_) + * Signed-off-by: William Woodall +* Added IncludeLaunchDescription action (`#120 `_) + * fixes `#115 `_ + * Signed-off-by: William Woodall +* Contributors: William Woodall + +0.5.2 (2018-07-17) +------------------ +* Made a change to avoid reentrancy of signal handlers (`#99 `_) +* Ignored warning for builtins A003 (`#100 `_) +* Fixed exception when launch process with environment variables (`#96 `_) +* Contributors: Shane Loretz, William Woodall, dhood + +0.5.1 (2018-06-27) +------------------ +* Changed the behavior when signaling SIGINT to subprocesses on Windows, where it now does SIGTERM instead, because SIGINT causes a ValueError about SIGINT being an unsupported signal number. (`#94 `_) +* Fixed a bug by avoiding reentrancy in the SIGINT signal handler. (`#92 `_) +* Various Windows fixes. (`#87 `_) + * LaunchService.run() now returns non-0 when there are exceptions in coroutines. + * Updated ``launch_counters.py`` example for Windows. + * Fixed a bug that would cause mismatched asyncio loops in some futures. + * Addressed the fact that ``signal.SIGKILL`` doesn’t exist on Windows, so emulate it in our Event. + * Fixed an issue that resulted in spurious asyncio errors in LaunchService test. +* Contributors: William Woodall, dhood + +0.5.0 (2018-06-19) +------------------ +* Fixed a bug where unclosed asyncio loops caused a traceback on the terminal on exit, but only in Python 3.5 (`#85 `_) +* Changed to use variable typing in comments to support python 3.5 (`#81 `_) +* New launch API (`#74 `_) + * See pull request for more details and links to architecture documentation and the design doc. +* Moved launch source files into launch.legacy namespace (`#73 `_) + * This was in preparation for the new launch API. +* [for launch.legacy] fixed a flake8 warning (`#72 `_) +* [for launch.legacy] set zip_safe to avoid warning during installation (`#71 `_) +* [for launch.legacy] Fix hang on keyboard interrupt (`#69 `_) + * When keyboard interrupt exception occurs loop.run_forever is called. But there is no loop.stop call. This causes a hang. +* Contributors: Devin, Dirk Thomas, William Woodall, dhood diff --git a/src/lib/launch/launch/conftest.py b/src/lib/launch/launch/conftest.py new file mode 100644 index 0000000000..47348f5e46 --- /dev/null +++ b/src/lib/launch/launch/conftest.py @@ -0,0 +1,25 @@ +# Copyright 2021 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from pathlib import PurePath + + +def pytest_ignore_collect(path): + # pytest doctest messes up when trying to import .launch.py packages, ignore them. + # It also messes up when trying to import launch.logging.handlers due to conflicts with + # logging.handlers, ignore that as well. + return str(path).endswith(( + '.launch.py', + str(PurePath('logging') / 'handlers.py'), + )) diff --git a/src/lib/launch/launch/doc/.gitignore b/src/lib/launch/launch/doc/.gitignore new file mode 100644 index 0000000000..378eac25d3 --- /dev/null +++ b/src/lib/launch/launch/doc/.gitignore @@ -0,0 +1 @@ +build diff --git a/src/lib/launch/launch/doc/Makefile b/src/lib/launch/launch/doc/Makefile new file mode 100644 index 0000000000..8ff07eb9a4 --- /dev/null +++ b/src/lib/launch/launch/doc/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = launch +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/src/lib/launch/launch/doc/make.bat b/src/lib/launch/launch/doc/make.bat new file mode 100644 index 0000000000..b71a4a2b0d --- /dev/null +++ b/src/lib/launch/launch/doc/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=launch + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/src/lib/launch/launch/doc/source/architecture.rst b/src/lib/launch/launch/doc/source/architecture.rst new file mode 100644 index 0000000000..c76aef835d --- /dev/null +++ b/src/lib/launch/launch/doc/source/architecture.rst @@ -0,0 +1,215 @@ +Architecture of `launch` +======================== + +`launch` is designed to provide core features like describing actions (e.g. executing a process or including another launch description), generating events, introspecting launch descriptions, and executing launch descriptions. +At the same time, it provides extension points so that the set of things that these core features can operate on, or integrate with, can be expanded with additional packages. + +Launch Entities and Launch Descriptions +--------------------------------------- + +The main object in `launch` is the :class:`launch.LaunchDescriptionEntity`, from which other entities that are "launched" inherit. +This class, or more specifically classes derived from this class, are responsible for capturing the system architect's (a.k.a. the user's) intent for how the system should be launched, as well as how `launch` itself should react to asynchronous events in the system during launch. +A launch description entity has its :meth:`launch.LaunchDescriptionEntity.visit` method called during "launching", and has any of the "describe" methods called during "introspection". +It may also provide a :class:`asyncio.Future` with the :meth:`launch.LaunchDescriptionEntity.get_asyncio_future` method, if it has on-going asynchronous activity after returning from visit. + +When visited, entities may yield additional entities to be visited, and this pattern is used from the "root" of the launch, where a special entity called :class:`launch.LaunchDescription` is provided to start the launch process. + +The :class:`launch.LaunchDescription` class encapsulates the intent of the user as a list of discrete :class:`launch.Action`'s, which are also derived from :class:`launch.LaunchDescriptionEntity`. +As "launch description entities" themselves, these "actions" can either be introspected for analysis without performing the side effects, or the actions can be executed, usually in response to an event in the launch system. + +Additionally, launch descriptions, and the actions that they contain, can have references to :class:`launch.Substitution`'s within them. +These substitutions are things that can be evaluated during launch and can be used to do various things like: get a launch configuration, get an environment variable, or evaluate arbitrary Python expressions. + +Launch descriptions, and the actions contained therein, can either be introspected directly or launched by a :class:`launch.LaunchService`. +A launch service is a long running activity that handles the event loop and dispatches actions. + +Actions +------- + +The aforementioned actions allow the user to express various intentions, and the set of available actions to the user can also be extended by other packages, allowing for domain specific actions. + +Actions can have direct side effects (e.g. run a process or set a configuration variable) and as well they can yield additional actions. +The latter can be used to create "syntactic sugar" actions which simply yield more verbose actions. + +Actions may also have arguments, which can affect the behavior of the actions. +These arguments are where :class:`launch.Substitution`'s can be used to provide more flexibility when describing reusable launch descriptions. + +Basic Actions +^^^^^^^^^^^^^ + +`launch` provides the foundational actions on which other more sophisticated actions may be built. +This is a non-exhaustive list of actions that `launch` may provide: + +- :class:`launch.actions.IncludeLaunchDescription` + + - This action will include another launch description as if it had been copy-pasted to the location of the include action. + +- :class:`launch.actions.SetLaunchConfiguration` + + - This action will set a :class:`launch.LaunchConfiguration` to a specified value, creating it if it doesn't already exist. + - These launch configurations can be accessed by any action via a substitution, but are scoped by default. + +- :class:`launch.actions.DeclareLaunchArgument` + + - This action will declare a launch description argument, which can have a name, default value, and documentation. + - The argument will be exposed via a command line option for a root launch description, or as action configurations to the include launch description action for the included launch description. + +- :class:`launch.actions.SetEnvironmentVariable` + + - This action will set an environment variable by name. + +- :class:`launch.actions.AppendEnvironmentVariable` + + - This action will set an environment variable by name if it does not exist, otherwise it appends to the existing value using a platform-specific separator. + - There is also an option to prepend instead of appending and to provide a custom separator. + +- :class:`launch.actions.GroupAction` + + - This action will yield other actions, but can be associated with conditionals (allowing you to use the conditional on the group action rather than on each sub-action individually) and can optionally scope the launch configurations. + +- :class:`launch.actions.TimerAction` + + - This action will yield other actions after a period of time has passed without being canceled. + +- :class:`launch.actions.ExecuteProcess` + + - This action will execute a process given its path and arguments, and optionally other things like working directory or environment variables. + +- :class:`launch.actions.RegisterEventHandler` + + - This action will register an :class:`launch.EventHandler` class, which takes a user defined lambda to handle some event. + - It could be any event, a subset of events, or one specific event. + +- :class:`launch.actions.UnregisterEventHandler` + + - This action will remove a previously registered event. + +- :class:`launch.actions.EmitEvent` + + - This action will emit an :class:`launch.Event` based class, causing all registered event handlers that match it to be called. + +- :class:`launch.actions.LogInfo`: + + - This action will log a user defined message to the logger, other variants (e.g. ``LogWarn``) could also exist. + +- :class:`launch.actions.RaiseError` + + - This action will stop execution of the launch system and provide a user defined error message. + +More actions can always be defined via extension, and there may even be additional actions defined by `launch` itself, but they are more situational and would likely be built on top of the above actions anyways. + +Base Action +^^^^^^^^^^^ + +All actions need to inherit from the :class:`launch.Action` base class, so that some common interface is available to the launch system when interacting with actions defined by external packages. +Since the base action class is a first class element in a launch description it also inherits from :class:`launch.LaunchDescriptionEntity`, which is the polymorphic type used when iterating over the elements in a launch description. + +Also, the base action has a few features common to all actions, such as some introspection utilities, and the ability to be associated with a single :class:`launch.Condition`, like the :class:`launch.IfCondition` class or the :class:`launch.UnlessCondition` class. + +The action configurations are supplied when the user uses an action and can be used to pass "arguments" to the action in order to influence its behavior, e.g. this is how you would pass the path to the executable in the execute process action. + +If an action is associated with a condition, that condition is evaluated to determine if the action is executed or not. +Even if the associated action evaluates to false the action will be available for introspection. + +Substitutions +------------- + +A substitution is something that cannot, or should not, be evaluated until it's time to execute the launch description that they are used in. +There are many possible variations of a substitution, but here are some of the core ones implemented by `launch` (all of which inherit from :class:`launch.Substitution`): + +- :class:`launch.substitutions.Text` + + - This substitution simply returns the given string when evaluated. + - It is usually used to normalize literals by wrapping them into substitutions in the launch description so they can be concatenated with other substitutions (see :func:`launch.utilities.normalize_to_list_of_substitutions`). + - An iterable of substitutions is concatenated into a single string (see :func:`launch.utilities.perform_substitutions`). + +- :class:`launch.substitutions.PythonExpression` + + - This substitution will evaluate a python expression and get the result as a string. + - You may pass a list of Python modules to the constructor to allow the use of those modules in the evaluated expression. + +- :class:`launch.substitutions.LaunchConfiguration` + + - This substitution gets a launch configuration value, as a string, by name. + +- :class:`launch.substitutions.IfElseSubstitution` + + - This substitution takes a substitution, and if it evaluates to true, then the result is the if_value, else the result is the else_value. + +- :class:`launch.substitutions.LocalSubstitution` + + - This substitution gets a "local" variable out of the context. This is a mechanism that allows a "parent" action to pass information to sub actions. + - As an example, consider this pseudo code example ``OnShutdown(actions=LogInfo(msg=["shutdown due to: ", LocalSubstitution(expression='event.reason')]))``, which assumes that ``OnShutdown`` will put the shutdown event in the locals before ``LogInfo`` is visited. + +- :class:`launch.substitutions.EnvironmentVariable` + + - This substitution gets an environment variable value, as a string, by name. + +- :class:`launch.substitutions.FindExecutable` + + - This substitution locates the full path to an executable on the PATH if it exists. + +The base substitution class provides some common introspection interfaces (which the specific derived substitutions may influence). + +The Launch Service +------------------ + +The launch service is responsible for processing emitted events, dispatching them to event handlers, and executing actions as needed. +The launch service offers three main services: + +- include a launch description + + - can be called from any thread + +- run event loop +- shutdown + + - cancels any running actions and event handlers + - then breaks the event loop if running + - can be called from any thread + +A typical use case would be: + +- create a launch description (programmatically or based on a markup file) +- create a launch service +- include the launch description in the launch service +- add a signal handler for SIGINT that calls shutdown on the launch service +- run the event loop on the launch service + +Additionally you could host some SOA (like REST, SOAP, ROS Services, etc...) server in another thread, which would provide a variety of services, all of which would end up including a launch description in the launch service asynchronously or calling shutdown on the launch service asynchronously. +Remember that a launch description can contain actions to register event handlers, emit events, run processes, etc. +So being able to include arbitrary launch descriptions asynchronously is the only feature you require to do most things dynamically while the launch service is running. + +Event Handlers +-------------- + +Event handlers are represented with the :class:`launch.EventHandler` base class. +Event handlers define two main methods, the :meth:`launch.EventHandler.matches` method and the :meth:`launch.EventHandler.handle` method. +The matches method gets the event as input and must return `True` if the event handler matches that event, or `False` otherwise. +The handle method gets the event and launch context as input, and can optionally (in addition to any side effects) return a list of :class:`launch.LaunchDescriptionEntity` objects to be visited by the launch service. + +Event handlers do not inherit from :class:`launch.LaunchDescriptionEntity`, but can similarly be "visited" for each event processed by the launch service, seeing if ``matches`` returns ``True`` and if so following up with a call to ``handle``, then visiting each of the actions returned by ``handle``, depth-first. + +Extension Points +---------------- + +In order to allow customization of how `launch` is used in specific domains, extension of the core categories of features is provided. +External Python packages, through extension points, may add: + +- new actions + + - must directly or indirectly inherit from :class:`launch.Action` + +- new events + + - must directly or indirectly inherit from :class:`launch.Event` + +- new substitutions + + - must directly or indirectly inherit from :class:`launch.Substitution` + +- kinds of entities in the launch description + + - must directly or indirectly inherit from :class:`launch.LaunchDescriptionEntity` + +In the future, more traditional extensions (like with ``setuptools``' ``entry_point`` feature) may be available via the launch service, e.g. the ability to include some extra entities and event handlers before the launch description is included. diff --git a/src/lib/launch/launch/doc/source/conf.py b/src/lib/launch/launch/doc/source/conf.py new file mode 100644 index 0000000000..6f894ec787 --- /dev/null +++ b/src/lib/launch/launch/doc/source/conf.py @@ -0,0 +1,207 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/stable/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +# The python interpreter that executes this conf.py file will not have this +# package's modules in the system path which will lead to import failures when +# running sphinx-autodoc. As a workaround, the sphinx_builder.py script in +# rosdoc2 will copy this package's modules along with this conf.py into a folder +# with the same name of this package within the docs_build directory. +# Hence we add the parent folder to the system path so that the modules from +# this package can be imported. +sys.path.insert(0, os.path.abspath('.')) + + +# -- Project information ----------------------------------------------------- +# type: ignore + +project = 'launch' +copyright = '2018, Open Source Robotics Foundation, Inc.' # noqa +author = 'Open Source Robotics Foundation, Inc.' + +# The short X.Y version +version = '' +# The full version, including alpha/beta/rc tags +release = '0.4.0' + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'sphinx.ext.coverage', + 'sphinx.ext.mathjax', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx.ext.githubpages', +] + +# autodoc settings +autodoc_default_options = { + 'special-members': '__init__', + 'class-doc-from': 'class', +} +autodoc_class_signature = 'separated' + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +# +# exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'launchdoc' + + +# -- Options for LaTeX output ------------------------------------------------ + +# latex_elements: dict[str, str] = { +# # The paper size ('letterpaper' or 'a4paper'). + +# 'papersize': 'letterpaper', + +# # The font size ('10pt', '11pt' or '12pt'). + +# 'pointsize': '10pt', + +# # Additional stuff for the LaTeX preamble. + +# 'preamble': '', + +# # Latex figure (float) alignment + +# 'figure_align': 'htbp', +# } + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'launch.tex', 'launch Documentation', + 'Open Source Robotics Foundation, Inc.', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'launch', 'launch Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'launch', 'launch Documentation', + author, 'launch', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Extension configuration ------------------------------------------------- + +# -- Options for intersphinx extension --------------------------------------- + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'python': ('https://docs.python.org/3', None)} + +# -- Options for todo extension ---------------------------------------------- + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = True diff --git a/src/lib/launch/launch/doc/source/index.rst b/src/lib/launch/launch/doc/source/index.rst new file mode 100644 index 0000000000..efcc560512 --- /dev/null +++ b/src/lib/launch/launch/doc/source/index.rst @@ -0,0 +1,22 @@ +.. launch documentation master file, created by + sphinx-quickstart on Tue May 22 18:18:17 2018. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to launch's documentation! +================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + architecture + modules + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/lib/launch/launch/examples/counter.py b/src/lib/launch/launch/examples/counter.py new file mode 100755 index 0000000000..ccebdef23a --- /dev/null +++ b/src/lib/launch/launch/examples/counter.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 + +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Script used in examples to demonstrate different behaviors of called processes.""" + +import argparse +import signal +import sys +import time + + +def main(argv=sys.argv[1:]): + """Run Counter script.""" + parser = argparse.ArgumentParser( + description=( + 'Simple program outputting a counter. ' + 'Even values go to STDERR, odd values go to STDOUT.')) + parser.add_argument( + '--limit', + type=int, + help='The upper limit of the counter when the program terminates.') + parser.add_argument( + '--limit-return-code', + type=int, + default=0, + help='The return code when the program terminates because of reaching the limit.') + parser.add_argument( + '--sleep', + type=float, + default=1.0, + help='The time to sleep between a counter increment.') + parser.add_argument( + '--ignore-sigint', + action='store_true', + default=False, + help='Ignore SIGINT signal, and continue counting.') + parser.add_argument( + '--ignore-sigterm', + action='store_true', + default=False, + help='Ignore SIGTERM signal, and continue counting.') + + args = parser.parse_args(argv) + + if args.ignore_sigint: + print('will be ignoring SIGINT') + signal.signal(signal.SIGINT, lambda signum, frame: print('ignoring SIGINT')) + + if args.ignore_sigterm: + print('will be ignoring SIGTERM') + signal.signal(signal.SIGTERM, lambda signum, frame: print('ignoring SIGTERM')) + + counter = 1 + while True: + if args.limit is not None and counter > args.limit: + return args.limit_return_code + stream = sys.stdout if counter % 2 else sys.stderr + print('Counter: %d' % counter, file=stream) + time.sleep(args.sleep) + counter += 1 + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/lib/launch/launch/examples/disable_emulate_tty_counters.py b/src/lib/launch/launch/examples/disable_emulate_tty_counters.py new file mode 100755 index 0000000000..abf65d3dbd --- /dev/null +++ b/src/lib/launch/launch/examples/disable_emulate_tty_counters.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +# Copyright 2019 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Script that demonstrates disabling tty emulation. + +This is most significant for python processes which, without tty +emulation, will be buffered by default and have various other +capabilities disabled." +""" + +import os +import sys +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) # noqa + +import launch # noqa: E402 + + +def generate_launch_description(): + ld = launch.LaunchDescription() + + # Disable tty emulation (on by default). + ld.add_action(launch.actions.SetLaunchConfiguration('emulate_tty', 'false')) + + # Wire up stdout from processes + def on_output(event: launch.events.process.ProcessIO) -> None: + for line in event.text.decode().splitlines(): + print('[{}] {}'.format(event.process_name, line)) + + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + on_stdout=on_output, + ))) + + # Execute + ld.add_action(launch.actions.ExecuteProcess( + cmd=[sys.executable, './counter.py'] + )) + return ld + + +if __name__ == '__main__': + # ls = LaunchService(argv=argv, debug=True) # Use this instead to get more debug messages. + ls = launch.LaunchService(argv=sys.argv[1:]) + ls.include_launch_description(generate_launch_description()) + sys.exit(ls.run()) diff --git a/src/lib/launch/launch/examples/launch_counters.example.txt b/src/lib/launch/launch/examples/launch_counters.example.txt new file mode 100644 index 0000000000..20d61ff657 --- /dev/null +++ b/src/lib/launch/launch/examples/launch_counters.example.txt @@ -0,0 +1,84 @@ +$ python3 ./launch_counters.py +Starting introspection of launch description... + + +├── LogInfo('Hello World!') +├── LogInfo('Is that you, ' + EnvVarSub('USER') + '?') +├── RegisterEventHandler(''): +│ └── OnProcessIO(matcher='event issubclass of ProcessIO and event.action == ExecuteProcess(0x1036299f8)', handlers={on_stdout: '.on_output at 0x103e93ae8>', on_stderr: '.on_output at 0x103e93ae8>'}) +├── Action('') +├── ExecuteProcess(cmd=[FindExecSub('whoami')], cwd=None, env=None, shell=False) +├── RegisterEventHandler(''): +│ └── OnProcessIO(matcher='event issubclass of ProcessIO and event.action == ExecuteProcess(0x1045ae2e8)', handlers={on_stdout: '. at 0x1045a48c8>'}) +├── Action('') +├── ExecuteProcess(cmd=['python3', '-u', './counter.py'], cwd=None, env=None, shell=False) +├── RegisterEventHandler(''): +│ └── OnProcessIO(matcher='event issubclass of ProcessIO and event.action == ExecuteProcess(0x1045ae4a8)', handlers={on_stdout: '.counter_output_handler at 0x1045ad048>', on_stderr: '.counter_output_handler at 0x1045ad048>'}) +├── ExecuteProcess(cmd=['python3', '-u', './counter.py', '--ignore-sigint'], cwd=None, env=None, shell=False) +├── ExecuteProcess(cmd=['python3', '-u', './counter.py', '--ignore-sigint', '--ignore-sigterm'], cwd=None, env=None, shell=False) +├── RegisterEventHandler(''): + └── OnShutdown(matcher='event issubclass of launch.events.Shutdown', handler=. at 0x1045ad158>) + +Starting launch of launch description... + +[INFO] [launch.user]: Hello World! +[INFO] [launch.user]: Is that you, william? +[INFO] [launch]: process[whoami-1]: started with pid [22435] +[INFO] [launch]: process[whoami-1]: process has finished cleanly +[INFO] [launch]: process[python3-2]: started with pid [22436] +[INFO] [launch]: process[python3-3]: started with pid [22438] +[INFO] [launch]: process[python3-4]: started with pid [22439] +[INFO] [launch.user]: whoami says you are 'william'. +[whoami-1] william +[whoami-1] 0.00 real 0.00 user 0.00 sys +[python3-3] will be ignoring SIGINT +[python3-3] Counter: 1 +[python3-4] will be ignoring SIGINT +[python3-4] will be ignoring SIGTERM +[python3-4] Counter: 1 +[python3-2] Counter: 1 +[python3-3] Counter: 2 +[python3-4] Counter: 2 +[python3-2] Counter: 2 +[python3-3] Counter: 3 +[python3-4] Counter: 3 +[python3-2] Counter: 3 +[python3-3] Counter: 4 +[python3-4] Counter: 4 +[python3-2] Counter: 4 +[INFO] [launch.user]: Launch was asked to shutdown: saw 'Counter: 4' from 'python3-2' +[INFO] [launch]: sending signal 'SIGINT' to process[python3-4] +[INFO] [launch]: sending signal 'SIGINT' to process[python3-3] +[INFO] [launch]: sending signal 'SIGINT' to process[python3-2] +[python3-4] ignoring SIGINT +[python3-3] ignoring SIGINT +[python3-2] Traceback (most recent call last): +[python3-2] File "./counter.py", line 79, in +[python3-2] sys.exit(main()) +[python3-2] File "./counter.py", line 72, in main +[python3-2] time.sleep(args.sleep) +[python3-2] KeyboardInterrupt +[ERROR] [launch]: process[python3-2] process has died [pid 22436, exit code 1, cmd 'python3 -u ./counter.py']. +[python3-3] Counter: 5 +[python3-4] Counter: 5 +[python3-3] Counter: 6 +[python3-4] Counter: 6 +[python3-3] Counter: 7 +[python3-4] Counter: 7 +[python3-3] Counter: 8 +[python3-4] Counter: 8 +[ERROR] [launch]: process[python3-4] failed to terminate 5 seconds after receiving SIGINT, escalating to SIGTERM +[ERROR] [launch]: process[python3-3] failed to terminate 5 seconds after receiving SIGINT, escalating to SIGTERM +[INFO] [launch]: sending signal 'SIGTERM' to process[python3-4] +[INFO] [launch]: sending signal 'SIGTERM' to process[python3-3] +[python3-3] Counter: 9 +[python3-4] ignoring SIGTERM +[python3-4] Counter: 9 +[ERROR] [launch]: process[python3-3] process has died [pid 22438, exit code -15, cmd 'python3 -u ./counter.py --ignore-sigint']. +[python3-4] Counter: 10 +[python3-4] Counter: 11 +[python3-4] Counter: 12 +[python3-4] Counter: 13 +[ERROR] [launch]: process[python3-4] failed to terminate 10.0 seconds after receiving SIGTERM, escalating to SIGKILL +[INFO] [launch]: sending signal 'SIGKILL' to process[python3-4] +[ERROR] [launch]: process[python3-4] process has died [pid 22439, exit code -9, cmd 'python3 -u ./counter.py --ignore-sigint --ignore-sigterm']. diff --git a/src/lib/launch/launch/examples/launch_counters.py b/src/lib/launch/launch/examples/launch_counters.py new file mode 100755 index 0000000000..e906f74e48 --- /dev/null +++ b/src/lib/launch/launch/examples/launch_counters.py @@ -0,0 +1,141 @@ +#!/usr/bin/env python3 + +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Script that demonstrates launch and subprocesses of varying behavior. + +For an example of expected output, see the file next to this one called +"launch_counter_good_bad_ugly.example.txt". +""" + +import os +import platform +import sys +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) # noqa + +import launch # noqa: E402 +from launch import LaunchDescription # noqa: E402 +from launch import LaunchIntrospector # noqa: E402 +from launch import LaunchService # noqa: E402 +import launch.actions # noqa: E402 +import launch.events # noqa: E402 +import launch.substitutions # noqa: E402 + + +def main(argv=sys.argv[1:]): + """Run Counter via launch.""" + # Configure rotating logs. + launch.logging.launch_config.log_handler_factory = \ + lambda path, encoding=None: launch.logging.handlers.RotatingFileHandler( + path, maxBytes=1024, backupCount=3, encoding=encoding) + + # Any number of actions can optionally be given to the constructor of LaunchDescription. + # Or actions/entities can be added after creating the LaunchDescription. + user_env_var = 'USERNAME' if platform.system() == 'Windows' else 'USER' + ld = LaunchDescription([ + launch.actions.LogInfo(msg='Hello World!'), + launch.actions.LogInfo(msg=( + 'Is that you, ', launch.substitutions.EnvironmentVariable(name=user_env_var), '?' + )), + ]) + + # Setup a custom event handler for all stdout/stderr from processes. + # Later, this will be a configurable, but always present, extension to the LaunchService. + def on_output(event: launch.events.process.ProcessIO) -> None: + for line in event.text.decode().splitlines(): + print('[{}] {}'.format(event.process_name, line)) + + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + # this is the action ^ and this, the event handler ^ + on_stdout=on_output, + on_stderr=on_output, + ))) + + # Run whoami, and use its output to log the name of the user. + # Prefix just the whoami process with `time`. + ld.add_action(launch.actions.SetLaunchConfiguration('launch-prefix', 'time')) + # Run whoami, but keep handle to action to make a targeted event handler. + if platform.system() == 'Windows': + whoami_cmd = ['echo', '%USERNAME%'] + else: + whoami_cmd = [launch.substitutions.FindExecutable(name='whoami')] + whoami_action = launch.actions.ExecuteProcess( + cmd=whoami_cmd, + shell=True + ) + ld.add_action(whoami_action) + # Make event handler that uses the output. + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + target_action=whoami_action, + # The output of `time` will be skipped since `time`'s output always goes to stderr. + on_stdout=lambda event: launch.actions.LogInfo( + msg="whoami says you are '{}'.".format(event.text.decode().strip()) + ), + ))) + # Unset launch prefix to prevent other process from getting this setting. + ld.add_action(launch.actions.SetLaunchConfiguration('launch-prefix', '')) + + # Run the counting program, with default options. + counter_action = launch.actions.ExecuteProcess(cmd=[sys.executable, '-u', './counter.py']) + ld.add_action(counter_action) + + # Setup an event handler for just this process which will exit when `Counter: 4` is seen. + def counter_output_handler(event): + target_str = 'Counter: 4' + if target_str in event.text.decode(): + return launch.actions.EmitEvent(event=launch.events.Shutdown( + reason="saw '{}' from '{}'".format(target_str, event.process_name) + )) + + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnProcessIO( + target_action=counter_action, + on_stdout=counter_output_handler, + on_stderr=counter_output_handler, + ))) + + # Run the counter a few more times, with various options. + ld.add_action(launch.actions.ExecuteProcess( + cmd=[sys.executable, '-u', './counter.py', '--ignore-sigint'] + )) + ld.add_action(launch.actions.ExecuteProcess( + cmd=[sys.executable, '-u', './counter.py', '--ignore-sigint', '--ignore-sigterm'] + )) + + # Add our own message for when shutdown is requested. + ld.add_action(launch.actions.RegisterEventHandler(launch.event_handlers.OnShutdown( + on_shutdown=[launch.actions.LogInfo(msg=[ + 'Launch was asked to shutdown: ', + launch.substitutions.LocalSubstitution('event.reason'), + ])], + ))) + + print('Starting introspection of launch description...') + print('') + + print(LaunchIntrospector().format_launch_description(ld)) + + print('') + print('Starting launch of launch description...') + print('') + + # ls = LaunchService(argv=argv, debug=True) # Use this instead to get more debug messages. + ls = LaunchService(argv=argv) + ls.include_launch_description(ld) + return ls.run() + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/src/lib/launch/launch/launch/__init__.py b/src/lib/launch/launch/launch/__init__.py new file mode 100644 index 0000000000..c5b506c550 --- /dev/null +++ b/src/lib/launch/launch/launch/__init__.py @@ -0,0 +1,65 @@ +# Copyright 2015 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Main entry point for the `launch` package.""" + +from . import actions +from . import conditions +from . import descriptions +from . import events +from . import frontend +from . import logging +from . import substitutions +from .action import Action +from .condition import Condition +from .event import Event +from .event_handler import EventHandler +from .invalid_launch_file_error import InvalidLaunchFileError +from .launch_context import LaunchContext +from .launch_description import LaunchDescription +from .launch_description_entity import LaunchDescriptionEntity +from .launch_description_source import LaunchDescriptionSource +from .launch_introspector import LaunchIntrospector +from .launch_service import LaunchService +from .some_entities_type import SomeEntitiesType +from .some_entities_type import SomeEntitiesType_types_tuple +from .some_substitutions_type import SomeSubstitutionsType +from .some_substitutions_type import SomeSubstitutionsType_types_tuple +from .substitution import Substitution + +__all__ = [ + 'actions', + 'conditions', + 'descriptions', + 'events', + 'frontend', + 'logging', + 'substitutions', + 'Action', + 'Condition', + 'Event', + 'EventHandler', + 'InvalidLaunchFileError', + 'LaunchContext', + 'LaunchDescription', + 'LaunchDescriptionEntity', + 'LaunchDescriptionSource', + 'LaunchIntrospector', + 'LaunchService', + 'SomeEntitiesType', + 'SomeEntitiesType_types_tuple', + 'SomeSubstitutionsType', + 'SomeSubstitutionsType_types_tuple', + 'Substitution', +] diff --git a/src/lib/launch/launch/launch/action.py b/src/lib/launch/launch/launch/action.py new file mode 100644 index 0000000000..4834680f9f --- /dev/null +++ b/src/lib/launch/launch/launch/action.py @@ -0,0 +1,129 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for Action class.""" + +from typing import Dict +from typing import Iterable +from typing import List +from typing import Optional +from typing import Text +from typing import Tuple + +from .condition import Condition +from .launch_context import LaunchContext +from .launch_description_entity import LaunchDescriptionEntity + +if False: + from .frontend import Entity # noqa: F401 + from .frontend import Parser # noqa: F401 + + +class Action(LaunchDescriptionEntity): + """ + LaunchDescriptionEntity that represents a user intention to do something. + + The action describes the intention to do something, but also can be + executed given a :class:`launch.LaunchContext` at runtime. + """ + + def __init__(self, *, condition: Optional[Condition] = None) -> None: + """ + Create an Action. + + If the conditions argument is not None, the condition object will be + evaluated while being visited and the action will only be executed if + the condition evaluates to True. + + :param condition: Either a :py:class:`Condition` or None + """ + self.__condition = condition + + @staticmethod + def parse(entity: 'Entity', parser: 'Parser'): + """ + Return the `Action` action and kwargs for constructing it. + + This is only intended for code reuse. + This class is not exposed with `expose_action`. + """ + # Import here for avoiding cyclic imports. + from .conditions import IfCondition + from .conditions import UnlessCondition + if_cond = entity.get_attr('if', optional=True) + unless_cond = entity.get_attr('unless', optional=True) + kwargs: Dict[str, Condition] = {} + if if_cond is not None and unless_cond is not None: + raise RuntimeError("if and unless conditions can't be used simultaneously") + if if_cond is not None: + kwargs['condition'] = IfCondition( + predicate_expression=parser.parse_substitution(if_cond) + ) + if unless_cond is not None: + kwargs['condition'] = UnlessCondition( + predicate_expression=parser.parse_substitution(unless_cond) + ) + return Action, kwargs + + @property + def condition(self) -> Optional[Condition]: + """Getter for condition.""" + return self.__condition + + def describe(self) -> Text: + """Return a description of this Action.""" + return self.__repr__() + + def get_sub_entities(self) -> List[LaunchDescriptionEntity]: + """Return subentities.""" + return [] + + def describe_sub_entities(self) -> List[LaunchDescriptionEntity]: + """Override describe_sub_entities from LaunchDescriptionEntity.""" + return self.get_sub_entities() if self.condition is None else [] + + def describe_conditional_sub_entities(self) -> List[Tuple[ + Text, # text description of the condition + Iterable[LaunchDescriptionEntity], # list of conditional sub-entities + ]]: + """Override describe_conditional_sub_entities from LaunchDescriptionEntity.""" + return [ + ('Conditionally included by {}'.format(self.describe()), self.get_sub_entities()) + ] if self.condition is not None else [] + + def visit(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """Override visit from LaunchDescriptionEntity so that it executes.""" + if self.__condition is None or self.__condition.evaluate(context): + try: + return self.execute(context) + finally: + from .events import ExecutionComplete # noqa + event = ExecutionComplete(action=self) + if context.would_handle_event(event): + future = self.get_asyncio_future() + if future is not None: + future.add_done_callback( + lambda _: context.emit_event_sync(event) + ) + else: + context.emit_event_sync(event) + return None + + def execute(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """ + Execute the action. + + Should be overridden by derived class, but by default does nothing. + """ + pass diff --git a/src/lib/launch/launch/launch/actions/__init__.py b/src/lib/launch/launch/launch/actions/__init__.py new file mode 100644 index 0000000000..ae0577e33a --- /dev/null +++ b/src/lib/launch/launch/launch/actions/__init__.py @@ -0,0 +1,67 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""actions Module.""" + +from .declare_launch_argument import DeclareLaunchArgument +from .append_environment_variable import AppendEnvironmentVariable # noqa: I100 +from .emit_event import EmitEvent +from .execute_local import ExecuteLocal +from .execute_process import ExecuteProcess +from .group_action import GroupAction +from .include_launch_description import IncludeLaunchDescription +from .log_info import LogInfo +from .opaque_coroutine import OpaqueCoroutine +from .opaque_function import OpaqueFunction +from .pop_environment import PopEnvironment +from .pop_launch_configurations import PopLaunchConfigurations +from .push_environment import PushEnvironment +from .push_launch_configurations import PushLaunchConfigurations +from .register_event_handler import RegisterEventHandler +from .reset_environment import ResetEnvironment +from .reset_launch_configurations import ResetLaunchConfigurations +from .set_environment_variable import SetEnvironmentVariable +from .set_launch_configuration import SetLaunchConfiguration +from .shutdown_action import Shutdown +from .timer_action import TimerAction +from .unregister_event_handler import UnregisterEventHandler +from .unset_environment_variable import UnsetEnvironmentVariable +from .unset_launch_configuration import UnsetLaunchConfiguration + +__all__ = [ + 'AppendEnvironmentVariable', + 'DeclareLaunchArgument', + 'EmitEvent', + 'ExecuteLocal', + 'ExecuteProcess', + 'GroupAction', + 'IncludeLaunchDescription', + 'LogInfo', + 'OpaqueCoroutine', + 'OpaqueFunction', + 'PopEnvironment', + 'PopLaunchConfigurations', + 'PushEnvironment', + 'PushLaunchConfigurations', + 'ResetEnvironment', + 'ResetLaunchConfigurations', + 'RegisterEventHandler', + 'SetEnvironmentVariable', + 'SetLaunchConfiguration', + 'Shutdown', + 'TimerAction', + 'UnregisterEventHandler', + 'UnsetEnvironmentVariable', + 'UnsetLaunchConfiguration', +] diff --git a/src/lib/launch/launch/launch/actions/append_environment_variable.py b/src/lib/launch/launch/launch/actions/append_environment_variable.py new file mode 100644 index 0000000000..0c0c753677 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/append_environment_variable.py @@ -0,0 +1,121 @@ +# Copyright 2021 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the AppendEnvironmentVariable action.""" + +import os +from typing import List +from typing import Union + +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..launch_context import LaunchContext +from ..some_substitutions_type import SomeSubstitutionsType +from ..substitution import Substitution +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions +from ..utilities.type_utils import normalize_typed_substitution +from ..utilities.type_utils import NormalizedValueType +from ..utilities.type_utils import perform_typed_substitution + + +@expose_action('append_env') +class AppendEnvironmentVariable(Action): + """ + Action that appends to an environment variable if it exists and sets it if it does not. + + It can optionally prepend instead of appending. + It can also optionally use a custom separator, with the default being a platform-specific + separator, `os.pathsep`. + """ + + def __init__( + self, + name: SomeSubstitutionsType, + value: SomeSubstitutionsType, + prepend: Union[bool, SomeSubstitutionsType] = False, + separator: SomeSubstitutionsType = os.pathsep, + **kwargs, + ) -> None: + """ + Create an AppendEnvironmentVariable action. + + All parameters can be provided as substitutions. + A substitution for the prepend parameter will be coerced to `bool` following YAML rules. + + :param name: the name of the environment variable + :param value: the value to set or append + :param prepend: whether the value should be prepended instead + :param separator: the separator to use, defaulting to a platform-specific separator + """ + super().__init__(**kwargs) + self.__name = normalize_to_list_of_substitutions(name) + self.__value = normalize_to_list_of_substitutions(value) + self.__prepend = normalize_typed_substitution(prepend, bool) + self.__separator = normalize_to_list_of_substitutions(separator) + + @classmethod + def parse( + cls, + entity: Entity, + parser: Parser, + ): + """Parse an 'append_env' entity.""" + _, kwargs = super().parse(entity, parser) + kwargs['name'] = parser.parse_substitution(entity.get_attr('name')) + kwargs['value'] = parser.parse_substitution(entity.get_attr('value')) + prepend = entity.get_attr('prepend', optional=True, data_type=bool, can_be_str=True) + if prepend is not None: + kwargs['prepend'] = parser.parse_if_substitutions(prepend) + separator = entity.get_attr('separator', optional=True) + if separator is not None: + kwargs['separator'] = parser.parse_substitution(separator) + return cls, kwargs + + @property + def name(self) -> List[Substitution]: + """Getter for the name of the environment variable to be set or appended to.""" + return self.__name + + @property + def value(self) -> List[Substitution]: + """Getter for the value of the environment variable to be set or appended.""" + return self.__value + + @property + def prepend(self) -> NormalizedValueType: + """Getter for the prepend flag.""" + return self.__prepend + + @property + def separator(self) -> List[Substitution]: + """Getter for the separator.""" + return self.__separator + + def execute(self, context: LaunchContext) -> None: + """Execute the action.""" + name = perform_substitutions(context, self.name) + value = perform_substitutions(context, self.value) + prepend = perform_typed_substitution(context, self.prepend, bool) + separator = perform_substitutions(context, self.separator) + if name in context.environment: + context.environment[name] = \ + context.environment[name] + separator + value \ + if not prepend \ + else value + separator + context.environment[name] + else: + context.environment[name] = value + return None diff --git a/src/lib/launch/launch/launch/actions/conftest.py b/src/lib/launch/launch/launch/actions/conftest.py new file mode 100644 index 0000000000..ad51226047 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/conftest.py @@ -0,0 +1,34 @@ +# Copyright 2021 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# imports needed for doctests +import launch +import launch.actions +import launch.conditions +import launch.substitutions + +import pytest + + +@pytest.fixture(autouse=True) +def add_imports_to_doctest_namespace(doctest_namespace): + doctest_namespace['launch'] = launch + doctest_namespace['LaunchDescription'] = launch.LaunchDescription + for subpackage in ( + launch.actions, + launch.conditions, + launch.substitutions, + ): + for x in subpackage.__all__: + doctest_namespace[x] = getattr(subpackage, x) diff --git a/src/lib/launch/launch/launch/actions/declare_launch_argument.py b/src/lib/launch/launch/launch/actions/declare_launch_argument.py new file mode 100644 index 0000000000..d292abe33d --- /dev/null +++ b/src/lib/launch/launch/launch/actions/declare_launch_argument.py @@ -0,0 +1,223 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the DeclareLaunchArgument action.""" + +from typing import List +from typing import Optional +from typing import Text + +import launch.logging + +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser # noqa: F401 +from ..launch_context import LaunchContext +from ..some_substitutions_type import SomeSubstitutionsType +from ..substitution import Substitution +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions + + +@expose_action('arg') +class DeclareLaunchArgument(Action): + """ + Action that declares a new launch argument. + + A launch argument is stored in a "launch configuration" of the same name. + See :py:class:`launch.actions.SetLaunchConfiguration` and + :py:class:`launch.substitutions.LaunchConfiguration`. + + Any launch arguments declared within a :py:class:`launch.LaunchDescription` + will be exposed as arguments when that launch description is included, e.g. + as additional parameters in the + :py:class:`launch.actions.IncludeLaunchDescription` action or as + command-line arguments when launched with ``ros2 launch ...``. + + In addition to the name, which is also where the argument result is stored, + launch arguments may have a default value, a list of valid value choices, and a description. + If a default value is given, then the argument becomes optional and the + default value is placed in the launch configuration instead. + If no default value is given and no value is given when including the + launch description, then an error occurs. + If a choice list is given, and the given value is not in it, an error + occurs. + + The default value may use Substitutions, but the name and description can + only be Text, since they need a meaningful value before launching, e.g. + when listing the command-line arguments. + + Note that declaring a launch argument needs to be in a part of the launch + description that is describable without launching. + For example, if you declare a launch argument with this action from within + a condition group or as a callback to an event handler, then it may not be + possible for a tool like ``ros2 launch`` to know about the argument before + launching the launch description. + In such cases, the argument will not be visible on the command line but + may raise an exception if that argument is not satisfied once visited (and + has no default value). + + Put another way, the post-condition of this action being visited is either + that a launch configuration of the same name is set with a value or an + exception is raised because none is set and there is no default value. + However, the pre-condition does not guarantee that the argument was visible + if behind condition or situational inclusions. + + .. doctest:: + + >>> ld = LaunchDescription([ + ... DeclareLaunchArgument('simple_argument'), + ... DeclareLaunchArgument('with_default_value', default_value='default'), + ... DeclareLaunchArgument( + ... 'with_default_and_description', + ... default_value='some_default', + ... description='this argument is used to configure ...'), + ... DeclareLaunchArgument( + ... 'mode', + ... default_value='A', + ... description='Choose between mode A and mode B', + ... choices=['A', 'B']), + ... # other actions here, ... + ... ]) + + .. code-block:: xml + + + + + + + """ + + def __init__( + self, + name: Text, + *, + default_value: Optional[SomeSubstitutionsType] = None, + description: Optional[Text] = None, + choices: Optional[List[Text]] = None, + **kwargs + ) -> None: + """Create a DeclareLaunchArgument action.""" + super().__init__(**kwargs) + self.__name = name + self.__logger = launch.logging.get_logger(__name__) + if default_value is None: + self.__default_value = default_value + else: + self.__default_value = normalize_to_list_of_substitutions(default_value) + if choices is not None: + if len(choices) == 0: + self.__logger.error( + 'Provided choices arg is empty. Use None to ignore the choice list.') + raise RuntimeError( + 'Provided choices arg is empty. Use None to ignore the choice list.') + + # Check if a non substitution default value is provided and is a valid choice + if default_value is not None and not isinstance(default_value, (Substitution, list)): + if default_value not in choices: + self.__logger.error( + 'Provided default_value "{}" is not in provided choices "{}".'.format( + default_value, choices) + ) + raise RuntimeError( + 'Provided default_value "{}" is not in provided choices "{}".'.format( + default_value, choices)) + + self.__description = '' + if description is None: + if choices is None: + self.__description = 'no description given' + else: + self.__description = 'One of: ' + str(choices) + else: + self.__description = description + if choices is not None: + if not self.__description.endswith('.'): + self.__description += '.' + self.__description += ' Valid choices are: ' + str(choices) + + self.__choices = choices + + # This is used later to determine if this launch argument will be + # conditionally visited. + # Its value will be read and set at different times and so the value + # may change depending at different times based on the context. + self._conditionally_included = False + + @classmethod + def parse( + cls, + entity: Entity, + parser: 'Parser' + ): + """Parse `arg` tag.""" + _, kwargs = super().parse(entity, parser) + kwargs['name'] = parser.escape_characters(entity.get_attr('name')) + default_value = entity.get_attr('default', optional=True) + if default_value is not None: + kwargs['default_value'] = parser.parse_substitution(default_value) + description = entity.get_attr('description', optional=True) + if description is not None: + kwargs['description'] = parser.escape_characters(description) + choices = entity.get_attr('choice', data_type=List[Entity], optional=True) + if choices is not None: + kwargs['choices'] = [ + parser.escape_characters(choice.get_attr('value')) for choice in choices + ] + return cls, kwargs + + @property + def name(self) -> Text: + """Getter for self.__name.""" + return self.__name + + @property + def default_value(self) -> Optional[List[Substitution]]: + """Getter for self.__default_value.""" + return self.__default_value + + @property + def description(self) -> Text: + """Getter for self.__description.""" + return self.__description + + @property + def choices(self) -> Optional[List[Text]]: + """Getter for self.__choices.""" + return self.__choices + + def execute(self, context: LaunchContext): + """Execute the action.""" + if self.name not in context.launch_configurations: + if self.default_value is None: + # Argument not already set and no default value given, error. + self.__logger.error( + 'Required launch argument "{}" (description: "{}") was not provided' + .format(self.name, self.description) + ) + raise RuntimeError( + 'Required launch argument "{}" was not provided.'.format(self.name)) + context.launch_configurations[self.name] = \ + perform_substitutions(context, self.default_value) + + if self.__choices is not None: + value = context.launch_configurations[self.name] + if value not in self.__choices: + error_msg = ('Argument "{}" provided value "{}" is not valid. Valid options ' + 'are: {}'.format(self.name, value, self.__choices)) + self.__logger.error(error_msg) + raise RuntimeError(error_msg) diff --git a/src/lib/launch/launch/launch/actions/emit_event.py b/src/lib/launch/launch/launch/actions/emit_event.py new file mode 100644 index 0000000000..f373e90d96 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/emit_event.py @@ -0,0 +1,40 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the EmitEvent action.""" + +from ..action import Action +from ..event import Event +from ..launch_context import LaunchContext +from ..utilities import is_a_subclass + + +class EmitEvent(Action): + """Action that emits an event when executed.""" + + def __init__(self, *, event: Event, **kwargs) -> None: + """Create an EmitEvent action.""" + super().__init__(**kwargs) + if not is_a_subclass(event, Event): + raise RuntimeError("EmitEvent() expected an event instance, got '{}'.".format(event)) + self.__event = event + + @property + def event(self): + """Getter for self.__event.""" + return self.__event + + def execute(self, context: LaunchContext): + """Execute the action.""" + context.emit_event_sync(self.__event) diff --git a/src/lib/launch/launch/launch/actions/execute_local.py b/src/lib/launch/launch/launch/actions/execute_local.py new file mode 100644 index 0000000000..487ae905c4 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/execute_local.py @@ -0,0 +1,757 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the ExecuteLocal action.""" + +import asyncio +import io +import logging +import os +import platform +import signal +import traceback +from typing import Any # noqa: F401 +from typing import Callable +from typing import cast +from typing import Dict +from typing import List +from typing import Optional +from typing import Text +from typing import Tuple # noqa: F401 +from typing import Union + +import launch.logging + +from osrf_pycommon.process_utils import async_execute_process # type: ignore +from osrf_pycommon.process_utils import AsyncSubprocessProtocol + +from .emit_event import EmitEvent +from .opaque_function import OpaqueFunction +from .timer_action import TimerAction + +from ..action import Action +from ..conditions import evaluate_condition_expression +from ..descriptions import Executable +from ..event import Event +from ..event_handler import EventHandler +from ..event_handlers import OnProcessExit +from ..event_handlers import OnProcessIO +from ..event_handlers import OnProcessStart +from ..event_handlers import OnShutdown +from ..events import matches_action +from ..events import Shutdown +from ..events.process import ProcessExited +from ..events.process import ProcessIO +from ..events.process import ProcessStarted +from ..events.process import ProcessStderr +from ..events.process import ProcessStdin +from ..events.process import ProcessStdout +from ..events.process import ShutdownProcess +from ..events.process import SignalProcess +from ..launch_context import LaunchContext +from ..launch_description import LaunchDescription +from ..launch_description_entity import LaunchDescriptionEntity +from ..some_entities_type import SomeEntitiesType +from ..some_substitutions_type import SomeSubstitutionsType +from ..substitution import Substitution # noqa: F401 +from ..substitutions import LaunchConfiguration +from ..substitutions import PythonExpression +from ..utilities import is_a_subclass +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions +from ..utilities.type_utils import normalize_typed_substitution +from ..utilities.type_utils import perform_typed_substitution + + +class ExecuteLocal(Action): + """Action that begins executing a process on the local system and sets up event handlers.""" + + def __init__( + self, + *, + process_description: Executable, + shell: bool = False, + sigterm_timeout: SomeSubstitutionsType = LaunchConfiguration( + 'sigterm_timeout', default=5), + sigkill_timeout: SomeSubstitutionsType = LaunchConfiguration( + 'sigkill_timeout', default=5), + emulate_tty: bool = False, + output: SomeSubstitutionsType = 'log', + output_format: Text = '[{this.process_description.final_name}] {line}', + cached_output: bool = False, + log_cmd: bool = False, + on_exit: Optional[Union[ + SomeEntitiesType, + Callable[[ProcessExited, LaunchContext], Optional[SomeEntitiesType]] + ]] = None, + respawn: Union[bool, SomeSubstitutionsType] = False, + respawn_delay: Optional[float] = None, + respawn_max_retries: int = -1, + **kwargs + ) -> None: + """ + Construct an ExecuteLocal action. + + Many arguments are passed eventually to :class:`subprocess.Popen`, so + see the documentation for the class for additional details. + + This action, once executed, registers several event handlers for + various process related events and will also emit events asynchronously + when certain events related to the process occur. + + Handled events include: + + - launch.events.process.ShutdownProcess: + + - begins standard shutdown procedure for a running executable + + - launch.events.process.SignalProcess: + + - passes the signal provided by the event to the running process + + - launch.events.process.ProcessStdin: + + - passes the text provided by the event to the stdin of the process + + - launch.events.Shutdown: + + - same as ShutdownProcess + + Emitted events include: + + - launch.events.process.ProcessStarted: + + - emitted when the process starts + + - launch.events.process.ProcessExited: + + - emitted when the process exits + - event contains return code + + - launch.events.process.ProcessStdout and launch.events.process.ProcessStderr: + + - emitted when the process produces data on either the stdout or stderr pipes + - event contains the data from the pipe + + Note that output is just stored in this class and has to be properly + implemented by the event handlers for the process's ProcessIO events. + + :param: process_description the `launch.descriptions.Executable` to execute + as a local process + :param: shell if True, a shell is used to execute the cmd + :param: sigterm_timeout time until shutdown should escalate to SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigterm_timeout' + :param: sigkill_timeout time until escalating to SIGKILL after SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigkill_timeout' + :param: emulate_tty emulate a tty (terminal), defaults to False, but can + be overridden with the LaunchConfiguration called 'emulate_tty', + the value of which is evaluated as true or false according to + :py:func:`evaluate_condition_expression`. + Throws :py:exc:`InvalidConditionExpressionError` if the + 'emulate_tty' configuration does not represent a boolean. + :param: output configuration for process output logging. Defaults to 'log' + i.e. log both stdout and stderr to launch main log file and stderr to + the screen. + Overridden externally by the OVERRIDE_LAUNCH_PROCESS_OUTPUT envvar value. + See `launch.logging.get_output_loggers()` documentation for further + reference on all available options. + :param: output_format for logging each output line, supporting `str.format()` + substitutions with the following keys in scope: `line` to reference the raw + output line and `this` to reference this action instance. + :param: log_cmd if True, prints the final cmd before executing the + process, which is useful for debugging when substitutions are + involved. + :param: cached_output if `True`, both stdout and stderr will be cached. + Use get_stdout() and get_stderr() to read the buffered output. + :param: on_exit list of actions to execute upon process exit. + :param: respawn if 'True', relaunch the process that abnormally died. + Either a boolean or a Substitution to be resolved at runtime. Defaults to 'False'. + :param: respawn_delay a delay time to relaunch the died process if respawn is 'True'. + :param: respawn_max_retries number of times to respawn the process if respawn is 'True'. + A negative value will respawn an infinite number of times (default behavior). + """ + super().__init__(**kwargs) + self.__process_description = process_description + self.__shell = shell + self.__sigterm_timeout = normalize_to_list_of_substitutions(sigterm_timeout) + self.__sigkill_timeout = normalize_to_list_of_substitutions(sigkill_timeout) + self.__emulate_tty = emulate_tty + # Note: we need to use a temporary here so that we don't assign values with different types + # to the same variable + tmp_output: SomeSubstitutionsType = os.environ.get( + 'OVERRIDE_LAUNCH_PROCESS_OUTPUT', output + ) + self.__output: Union[dict, List[Substitution]] + if not isinstance(tmp_output, dict): + self.__output = normalize_to_list_of_substitutions(tmp_output) + else: + self.__output = tmp_output + self.__output_format = output_format + + self.__log_cmd = log_cmd + self.__cached_output = cached_output + self.__on_exit = on_exit + self.__respawn = normalize_typed_substitution(respawn, bool) + self.__respawn_delay = respawn_delay + + self.__respawn_max_retries = respawn_max_retries + self.__respawn_retries = 0 + + self.__process_event_args = None # type: Optional[Dict[Text, Any]] + self._subprocess_protocol = None # type: Optional[Any] + self._subprocess_transport = None + self.__completed_future = None # type: Optional[asyncio.Future] + self.__shutdown_future = None # type: Optional[asyncio.Future] + self.__sigterm_timer = None # type: Optional[TimerAction] + self.__sigkill_timer = None # type: Optional[TimerAction] + self.__stdout_buffer = io.StringIO() + self.__stderr_buffer = io.StringIO() + + self.__executed = False + + @property + def process_description(self): + """Getter for process_description.""" + return self.__process_description + + @property + def shell(self): + """Getter for shell.""" + return self.__shell + + @property + def emulate_tty(self): + """Getter for emulate_tty.""" + return self.__emulate_tty + + @property + def sigkill_timeout(self): + """Getter for sigkill timeout.""" + return self.__sigkill_timeout + + @property + def sigterm_timeout(self): + """Getter for sigterm timeout.""" + return self.__sigterm_timeout + + @property + def output(self): + """Getter for output.""" + return self.__output + + @property + def process_details(self): + """Getter for the process details, e.g. name, pid, cmd, etc., or None if not started.""" + return self.__process_event_args + + def get_sub_entities(self): + if isinstance(self.__on_exit, list): + return self.__on_exit + return [] + + def _shutdown_process(self, context, *, send_sigint): + if self.__shutdown_future is None or self.__shutdown_future.done(): + # Execution not started or already done, nothing to do. + return None + + if self.__completed_future is None: + # Execution not started so nothing to do, but self.__shutdown_future should prevent + # execution from starting in the future. + self.__shutdown_future.set_result(None) + return None + if self.__completed_future.done(): + # If already done, then nothing to do. + self.__shutdown_future.set_result(None) + return None + + # Defer shut down if the process is scheduled to be started + if (self.process_details is None or self._subprocess_transport is None): + # Do not set shutdown result, as event is postponed + context.register_event_handler( + OnProcessStart( + on_start=lambda event, context: + self._shutdown_process(context, send_sigint=send_sigint))) + return None + + self.__shutdown_future.set_result(None) + + # Otherwise process is still running, start the shutdown procedures. + context.extend_locals({'process_name': self.process_details['name']}) + actions_to_return = self.__get_shutdown_timer_actions() + if send_sigint: + actions_to_return.append(self.__get_sigint_event()) + return actions_to_return + + def __on_shutdown_process_event( + self, + context: LaunchContext + ) -> Optional[LaunchDescription]: + typed_event = cast(ShutdownProcess, context.locals.event) + if not typed_event.process_matcher(self): + # this event whas not intended for this process + return None + return self._shutdown_process(context, send_sigint=True) + + def __on_signal_process_event( + self, + context: LaunchContext + ) -> Optional[LaunchDescription]: + typed_event = cast(SignalProcess, context.locals.event) + if not typed_event.process_matcher(self): + # this event whas not intended for this process + return None + if self.process_details is None: + raise RuntimeError('Signal event received before execution.') + if self._subprocess_transport is None: + raise RuntimeError('Signal event received before subprocess transport available.') + if self._subprocess_protocol.complete.done(): + # the process is done or is cleaning up, no need to signal + self.__logger.debug( + "signal '{}' not set to '{}' because it is already closing".format( + typed_event.signal_name, self.process_details['name']), + ) + return None + if platform.system() == 'Windows' and typed_event.signal_name == 'SIGINT': + # TODO(wjwwood): remove this when/if SIGINT is fixed on Windows + self.__logger.warning( + "'SIGINT' sent to process[{}] not supported on Windows, escalating to 'SIGTERM'" + .format(self.process_details['name']), + ) + typed_event = SignalProcess( + signal_number=signal.SIGTERM, + process_matcher=lambda process: True) + self.__logger.info("sending signal '{}' to process[{}]".format( + typed_event.signal_name, self.process_details['name'] + )) + try: + if typed_event.signal_name == 'SIGKILL': + self._subprocess_transport.kill() # works on both Windows and POSIX + return None + self._subprocess_transport.send_signal(typed_event.signal) + return None + except ProcessLookupError: + self.__logger.debug( + "signal '{}' not sent to '{}' because it has closed already".format( + typed_event.signal_name, self.process_details['name'] + ) + ) + + def __on_process_stdin( + self, + event: ProcessIO + ) -> Optional[SomeEntitiesType]: + self.__logger.warning( + "in ExecuteProcess('{}').__on_process_stdin_event()".format(id(self)), + ) + cast(ProcessStdin, event) + return None + + def __on_process_output( + self, event: ProcessIO, buffer: io.TextIOBase, logger: logging.Logger + ) -> None: + to_write = event.text.decode(errors='replace') + if buffer.closed: + # buffer was probably closed by __flush_buffers on shutdown. Output without + # buffering. + logger.info( + self.__output_format.format(line=to_write, this=self) + ) + else: + buffer.write(to_write) + buffer.seek(0) + last_line = None + for line in buffer: + if line.endswith(os.linesep): + logger.info( + self.__output_format.format(line=line[:-len(os.linesep)], this=self) + ) + else: + last_line = line + break + buffer.seek(0) + buffer.truncate(0) + if last_line is not None: + buffer.write(last_line) + + def __flush_buffers(self, event, context): + line = self.__stdout_buffer.getvalue() + if line != '': + self.__stdout_logger.info( + self.__output_format.format(line=line, this=self) + ) + + line = self.__stderr_buffer.getvalue() + if line != '': + self.__stderr_logger.info( + self.__output_format.format(line=line, this=self) + ) + + # the respawned process needs to reuse these StringIO resources, + # close them only after receiving the shutdown + if self.__shutdown_future is None or self.__shutdown_future.done(): + self.__stdout_buffer.close() + self.__stderr_buffer.close() + else: + self.__stdout_buffer.seek(0) + self.__stdout_buffer.truncate(0) + self.__stderr_buffer.seek(0) + self.__stderr_buffer.truncate(0) + + def __on_process_output_cached( + self, event: ProcessIO, buffer, logger + ) -> None: + to_write = event.text.decode(errors='replace') + last_cursor = buffer.tell() + buffer.seek(0, os.SEEK_END) # go to end of buffer + buffer.write(to_write) + buffer.seek(last_cursor) + new_cursor = last_cursor + for line in buffer: + if not line.endswith(os.linesep): + break + new_cursor = buffer.tell() + logger.info( + self.__output_format.format(line=line[:-len(os.linesep)], this=self) + ) + buffer.seek(new_cursor) + + def __flush_cached_buffers(self, event, context): + for line in self.__stdout_buffer: + self.__stdout_logger.info( + self.__output_format.format(line=line, this=self) + ) + + for line in self.__stderr_buffer: + self.__stderr_logger.info( + self.__output_format.format(line=line, this=self) + ) + + def __on_shutdown(self, event: Event, context: LaunchContext) -> Optional[SomeEntitiesType]: + due_to_sigint = cast(Shutdown, event).due_to_sigint + return self._shutdown_process( + context, + send_sigint=not due_to_sigint or context.noninteractive, + ) + + def __get_shutdown_timer_actions(self) -> List[Action]: + base_msg = \ + "process[{}] failed to terminate '{}' seconds after receiving '{}', escalating to '{}'" + + def printer(context, msg, timeout_substitutions): + self.__logger.error(msg.format( + context.locals.process_name, + perform_substitutions(context, timeout_substitutions), + )) + + sigterm_timeout = self.__sigterm_timeout + sigkill_timeout = [PythonExpression( + ('float(', *self.__sigterm_timeout, ') + float(', *self.__sigkill_timeout, ')') + )] + # Setup a timer to send us a SIGTERM if we don't shutdown quickly. + self.__sigterm_timer = TimerAction( + period=sigterm_timeout, + actions=[ + OpaqueFunction( + function=printer, + args=(base_msg.format('{}', '{}', 'SIGINT', 'SIGTERM'), sigterm_timeout) + ), + EmitEvent(event=SignalProcess( + signal_number=signal.SIGTERM, + process_matcher=matches_action(self) + )), + ], + cancel_on_shutdown=False, + ) + # Setup a timer to send us a SIGKILL if we don't shutdown after SIGTERM. + self.__sigkill_timer = TimerAction( + period=sigkill_timeout, + actions=[ + OpaqueFunction( + function=printer, + args=(base_msg.format('{}', '{}', 'SIGTERM', 'SIGKILL'), sigkill_timeout) + ), + EmitEvent(event=SignalProcess( + signal_number='SIGKILL', + process_matcher=matches_action(self) + )) + ], + cancel_on_shutdown=False, + ) + return [ + cast(Action, self.__sigterm_timer), + cast(Action, self.__sigkill_timer), + ] + + def __get_sigint_event(self): + return EmitEvent(event=SignalProcess( + signal_number=signal.SIGINT, + process_matcher=matches_action(self), + )) + + def __cleanup(self): + # Cancel any pending timers we started. + if self.__sigterm_timer is not None: + self.__sigterm_timer.cancel() + if self.__sigkill_timer is not None: + self.__sigkill_timer.cancel() + # Close subprocess transport if any. + if self._subprocess_transport is not None: + self._subprocess_transport.close() + # Signal that we're done to the launch system. + self.__completed_future.set_result(None) + + class __ProcessProtocol(AsyncSubprocessProtocol): + def __init__( + self, + action: 'ExecuteLocal', + context: LaunchContext, + process_event_args: Dict, + **kwargs + ) -> None: + super().__init__(**kwargs) + self.__context = context + self.__process_event_args = process_event_args + self.__logger = launch.logging.get_logger(process_event_args['name']) + + def connection_made(self, transport): + self.__logger.info( + 'process started with pid [{}]'.format(transport.get_pid()), + ) + super().connection_made(transport) + self.__process_event_args['pid'] = transport.get_pid() + + def on_stdout_received(self, data: bytes) -> None: + self.__context.emit_event_sync(ProcessStdout(text=data, **self.__process_event_args)) + + def on_stderr_received(self, data: bytes) -> None: + self.__context.emit_event_sync(ProcessStderr(text=data, **self.__process_event_args)) + + async def __execute_process(self, context: LaunchContext) -> None: + process_event_args = self.__process_event_args + if process_event_args is None: + raise RuntimeError('process_event_args unexpectedly None') + + cmd = process_event_args['cmd'] + cwd = process_event_args['cwd'] + env = process_event_args['env'] + if self.__log_cmd: + self.__logger.info("process details: cmd='{}', cwd='{}', custom_env?={}".format( + ' '.join(filter(lambda part: part.strip(), cmd)), + cwd, + 'True' if env is not None else 'False' + )) + + emulate_tty = self.__emulate_tty + if 'emulate_tty' in context.launch_configurations: + emulate_tty = evaluate_condition_expression( + context, + normalize_to_list_of_substitutions( + context.launch_configurations['emulate_tty'] + ), + ) + + try: + transport, self._subprocess_protocol = await async_execute_process( + lambda **kwargs: self.__ProcessProtocol( + self, context, process_event_args, **kwargs + ), + cmd=cmd, + cwd=cwd, + env=env, + shell=self.__shell, + emulate_tty=emulate_tty, + stderr_to_stdout=False, + ) + except Exception: + self.__logger.error('exception occurred while executing process:\n{}'.format( + traceback.format_exc() + )) + self.__cleanup() + return + + pid = transport.get_pid() + self._subprocess_transport = transport + + await context.emit_event(ProcessStarted(**process_event_args)) + + returncode = await self._subprocess_protocol.complete + if returncode == 0: + self.__logger.info('process has finished cleanly [pid {}]'.format(pid)) + else: + self.__logger.error("process has died [pid {}, exit code {}, cmd '{}'].".format( + pid, returncode, ' '.join(filter(lambda part: part.strip(), cmd)) + )) + await context.emit_event( + ProcessExited(returncode=returncode, **process_event_args) + ) + # respawn the process if necessary + if not context.is_shutdown\ + and self.__shutdown_future is not None\ + and not self.__shutdown_future.done()\ + and self.__respawn and \ + (self.__respawn_max_retries < 0 or + self.__respawn_retries < self.__respawn_max_retries): + # Increase the respawn_retries counter + self.__respawn_retries += 1 + if self.__respawn_delay is not None and self.__respawn_delay > 0.0: + # wait for a timeout(`self.__respawn_delay`) to respawn the process + # and handle shutdown event with future(`self.__shutdown_future`) + # to make sure `ros2 launch` exit in time + await asyncio.wait( + (self.__shutdown_future,), + timeout=self.__respawn_delay + ) + if not self.__shutdown_future.done(): + context.asyncio_loop.create_task(self.__execute_process(context)) + return + self.__cleanup() + + def prepare(self, context: LaunchContext): + """Prepare the action for execution.""" + self.__process_description.prepare(context, self) + + # store packed kwargs for all ProcessEvent based events + self.__process_event_args = { + 'action': self, + 'name': self.__process_description.final_name, + 'cmd': self.__process_description.final_cmd, + 'cwd': self.__process_description.final_cwd, + 'env': self.__process_description.final_env, + # pid is added to the dictionary in the connection_made() method of the protocol. + } + + self.__respawn = cast(bool, perform_typed_substitution(context, self.__respawn, bool)) + + def execute(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """ + Execute the action. + + This does the following: + - register an event handler for the shutdown process event + - register an event handler for the signal process event + - register an event handler for the stdin event + - configures logging for the IO process event + - create a task for the coroutine that monitors the process + """ + self.prepare(context) + name = self.__process_description.final_name + + if self.__executed: + raise RuntimeError( + f"ExecuteLocal action '{name}': executed more than once: {self.describe()}" + ) + self.__executed = True + + if context.is_shutdown: + # If shutdown starts before execution can start, don't start execution. + return None + + if self.__cached_output: + on_output_method = self.__on_process_output_cached + flush_buffers_method = self.__flush_cached_buffers + else: + on_output_method = self.__on_process_output + flush_buffers_method = self.__flush_buffers + + event_handlers = [ + EventHandler( + matcher=lambda event: is_a_subclass(event, ShutdownProcess), + entities=OpaqueFunction(function=self.__on_shutdown_process_event), + ), + EventHandler( + matcher=lambda event: is_a_subclass(event, SignalProcess), + entities=OpaqueFunction(function=self.__on_signal_process_event), + ), + OnProcessIO( + target_action=self, + on_stdin=self.__on_process_stdin, + on_stdout=lambda event: on_output_method( + event, self.__stdout_buffer, self.__stdout_logger), + on_stderr=lambda event: on_output_method( + event, self.__stderr_buffer, self.__stderr_logger), + ), + OnShutdown( + on_shutdown=self.__on_shutdown, + ), + OnProcessExit( + target_action=self, + # TODO: This is also a little strange, OnProcessExit shouldn't ever be able to + # take a None for the callable, but this seems to be the default case? + on_exit=self.__on_exit, # type: ignore + ), + OnProcessExit( + target_action=self, + on_exit=flush_buffers_method, + ), + ] + for event_handler in event_handlers: + context.register_event_handler(event_handler) + + try: + self.__completed_future = context.asyncio_loop.create_future() + self.__shutdown_future = context.asyncio_loop.create_future() + self.__logger = launch.logging.get_logger(name) + if not isinstance(self.__output, dict): + self.__stdout_logger, self.__stderr_logger = \ + launch.logging.get_output_loggers( + name, perform_substitutions(context, self.__output) + ) + else: + self.__stdout_logger, self.__stderr_logger = \ + launch.logging.get_output_loggers(name, self.__output) + context.asyncio_loop.create_task(self.__execute_process(context)) + except Exception: + for event_handler in event_handlers: + context.unregister_event_handler(event_handler) + raise + return None + + def get_asyncio_future(self) -> Optional[asyncio.Future]: + """Return an asyncio Future, used to let the launch system know when we're done.""" + return self.__completed_future + + def get_stdout(self): + """ + Get cached stdout. + + :raises RuntimeError: if cached_output is false. + """ + if not self.__cached_output: + raise RuntimeError( + 'cached output must be true to be able to get stdout,' + f" proc '{self.__process_description.name}'") + return self.__stdout_buffer.getvalue() + + def get_stderr(self): + """ + Get cached stdout. + + :raises RuntimeError: if cached_output is false. + """ + if not self.__cached_output: + raise RuntimeError( + 'cached output must be true to be able to get stderr, proc' + f" '{self.__process_description.name}'") + return self.__stderr_buffer.getvalue() + + @property + def return_code(self): + """Get the process return code, None if it hasn't finished.""" + if self._subprocess_transport is None: + return None + return self._subprocess_transport.get_returncode() diff --git a/src/lib/launch/launch/launch/actions/execute_process.py b/src/lib/launch/launch/launch/actions/execute_process.py new file mode 100644 index 0000000000..be06a06877 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/execute_process.py @@ -0,0 +1,450 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the ExecuteProcess action.""" + +import shlex +from typing import Dict +from typing import Iterable +from typing import List +from typing import Optional +from typing import Text + +from .execute_local import ExecuteLocal +from .shutdown_action import Shutdown +from ..descriptions import Executable +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..some_substitutions_type import SomeSubstitutionsType + +from ..substitution import Substitution +from ..substitutions import TextSubstitution + + +@expose_action('executable') +class ExecuteProcess(ExecuteLocal): + """ + Action that begins executing a process and sets up event handlers for it. + + Simple example: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... ExecuteProcess( + ... cmd=['ls', '-las'], + ... name='my_ls_process', # this is optional + ... output='both', + ... ), + ... ]) + + .. code-block:: xml + + + + + + Substitutions in the command: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... DeclareLaunchArgument(name='file_path', description='file path to cat'), + ... ExecuteProcess( + ... # each item of the command arguments' list can be: + ... # a string ('cat'), + ... # a substitution (`LaunchConfiguration('file_path')`), + ... # or a list of string/substitutions + ... # (`[LaunchConfiguration('directory'), '/file.txt']`) + ... cmd=['cat', LaunchConfiguration('file_path')], + ... ), + ... ]) + + .. code-block:: xml + + + + + + + Optional cli argument: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... DeclareLaunchArgument(name='open_gui', default_value='False'), + ... ExecuteProcess( + ... cmd=['my_cmd', '--open-gui'], + ... condition=IfCondition(LaunchConfiguration('open_gui')), + ... ), + ... ExecuteProcess( + ... cmd=['my_cmd'], + ... condition=UnlessCondition(LaunchConfiguration('open_gui')), + ... ), + ... ]) + + .. code-block:: xml + + + + + + + + Environment variables: + + .. doctest:: + + >>> ld = LaunchDescription([ + ... ExecuteProcess( + ... cmd=['my_cmd'], + ... additional_env={'env_variable': 'env_var_value'}, + ... ), + ... ]) + + .. code-block:: xml + + + + + + + """ + + def __init__( + self, + *, + cmd: Iterable[SomeSubstitutionsType], + prefix: Optional[SomeSubstitutionsType] = None, + name: Optional[SomeSubstitutionsType] = None, + cwd: Optional[SomeSubstitutionsType] = None, + env: Optional[Dict[SomeSubstitutionsType, SomeSubstitutionsType]] = None, + additional_env: Optional[Dict[SomeSubstitutionsType, SomeSubstitutionsType]] = None, + **kwargs + ) -> None: + """ + Construct an ExecuteProcess action. + + Many arguments are passed eventually to :class:`subprocess.Popen`, so + see the documentation for the class for additional details. + + This action, once executed, registers several event handlers for + various process related events and will also emit events asynchronously + when certain events related to the process occur. + + Handled events include: + + - launch.events.process.ShutdownProcess: + + - begins standard shutdown procedure for a running executable + + - launch.events.process.SignalProcess: + + - passes the signal provided by the event to the running process + + - launch.events.process.ProcessStdin: + + - passes the text provided by the event to the stdin of the process + + - launch.events.Shutdown: + + - same as ShutdownProcess + + Emitted events include: + + - launch.events.process.ProcessStarted: + + - emitted when the process starts + + - launch.events.process.ProcessExited: + + - emitted when the process exits + - event contains return code + + - launch.events.process.ProcessStdout and launch.events.process.ProcessStderr: + + - emitted when the process produces data on either the stdout or stderr pipes + - event contains the data from the pipe + + Note that output is just stored in this class and has to be properly + implemented by the event handlers for the process's ProcessIO events. + + :param: cmd a list where the first item is the executable and the rest + are arguments to the executable, each item may be a string or a + list of strings and Substitutions to be resolved at runtime + :param: cwd the directory in which to run the executable + :param: name the label used to represent the process, as a string or a + Substitution to be resolved at runtime, defaults to the basename of + the executable + :param: env dictionary of environment variables to be used, starting from + a clean environment. If 'None', the current environment is used. + :param: additional_env dictionary of environment variables to be added. + If 'env' was None, they are added to the current environment. + If not, 'env' is updated with additional_env. + :param: shell if True, a shell is used to execute the cmd + :param: sigterm_timeout time until shutdown should escalate to SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigterm_timeout' + :param: sigkill_timeout time until escalating to SIGKILL after SIGTERM, + as a string or a list of strings and Substitutions to be resolved + at runtime, defaults to the LaunchConfiguration called + 'sigkill_timeout' + :param: emulate_tty emulate a tty (terminal), defaults to False, but can + be overridden with the LaunchConfiguration called 'emulate_tty', + the value of which is evaluated as true or false according to + :py:func:`evaluate_condition_expression`. + Throws :py:exc:`InvalidConditionExpressionError` if the + 'emulate_tty' configuration does not represent a boolean. + :param: prefix a set of commands/arguments to precede the cmd, used for + things like gdb/valgrind and defaults to the LaunchConfiguration + called 'launch-prefix'. Note that a non-default prefix provided in + a launch file will override the prefix provided via the `launch-prefix` + launch configuration regardless of whether the `launch-prefix-filter` launch + configuration is provided. + :param: output configuration for process output logging. Defaults to 'log' + i.e. log both stdout and stderr to launch main log file and stderr to + the screen. + Overridden externally by the OVERRIDE_LAUNCH_PROCESS_OUTPUT envvar value. + See `launch.logging.get_output_loggers()` documentation for further + reference on all available options. + :param: output_format for logging each output line, supporting `str.format()` + substitutions with the following keys in scope: `line` to reference the raw + output line and `this` to reference this action instance. + :param: log_cmd if True, prints the final cmd before executing the + process, which is useful for debugging when substitutions are + involved. + :param: cached_output if `True`, both stdout and stderr will be cached. + Use get_stdout() and get_stderr() to read the buffered output. + :param: on_exit list of actions to execute upon process exit. + :param: respawn if 'True', relaunch the process that abnormally died. + Defaults to 'False'. + :param: respawn_delay a delay time to relaunch the died process if respawn is 'True'. + :param: respawn_max_retries number of times to respawn the process if respawn is 'True'. + A negative value will respawn an infinite number of times (default behavior). + """ + executable = Executable(cmd=cmd, prefix=prefix, name=name, cwd=cwd, env=env, + additional_env=additional_env) + super().__init__(process_description=executable, **kwargs) + + @classmethod + def _parse_cmdline( + cls, + cmd: Text, + parser: Parser + ) -> List[SomeSubstitutionsType]: + """ + Parse text apt for command line execution. + + :param: cmd a space (' ') delimited command line arguments list. + All found `TextSubstitution` items are split and added to the + list again as a `TextSubstitution`. + :returns: a list of command line arguments. + """ + result_args = [] + arg: List[Substitution] = [] + + def _append_arg(): + nonlocal arg + result_args.append(arg) + arg = [] + for sub in parser.parse_substitution(cmd): + if isinstance(sub, TextSubstitution): + tokens = shlex.split(sub.text) + if not tokens: + # String with just spaces. + # Appending args allow splitting two substitutions + # separated by a space. + # e.g.: `$(subst1 asd) $(subst2 bsd)` will be two separate arguments. + _append_arg() + continue + if sub.text[0].isspace(): + # Needed for splitting from the previous argument + # e.g.: `$(find-exec bsd) asd` + # It splits `asd` from the path of `bsd` executable. + if len(arg) != 0: + _append_arg() + arg.append(TextSubstitution(text=tokens[0])) + if len(tokens) > 1: + # Needed to split the first argument when more than one token. + # e.g. `$(find-pkg-prefix csd)/asd bsd` + # will split `$(find-pkg-prefix csd)/asd` from `bsd`. + _append_arg() + arg.append(TextSubstitution(text=tokens[-1])) + if len(tokens) > 2: + # If there are more than two tokens, just add all the middle tokens to + # `result_args`. + # e.g. `$(find-pkg-prefix csd)/asd bsd dsd xsd` + # 'bsd' 'dsd' will be added. + result_args.extend([TextSubstitution(text=x)] for x in tokens[1:-1]) + if sub.text[-1].isspace(): + # Allows splitting from next argument. + # e.g. `exec $(find-some-file)` + # Will split `exec` argument from the result of `find-some-file` substitution. + _append_arg() + else: + arg.append(sub) + if arg: + result_args.append(arg) + return result_args + + @classmethod + def parse( + cls, + entity: Entity, + parser: Parser, + ignore: Optional[List[str]] = None + ): + """ + Return the `ExecuteProcess` action and kwargs for constructing it. + + :param: ignore A list of arguments that should be ignored while parsing. + Intended for code reuse in derived classes (e.g.: launch_ros.actions.Node). + """ + _, kwargs = super().parse(entity, parser) + + if ignore is None: + ignore = [] + + if 'cmd' not in ignore: + kwargs['cmd'] = cls._parse_cmdline(entity.get_attr('cmd'), parser) + + if 'cwd' not in ignore: + cwd = entity.get_attr('cwd', optional=True) + if cwd is not None: + kwargs['cwd'] = parser.parse_substitution(cwd) + + if 'name' not in ignore: + name = entity.get_attr('name', optional=True) + if name is not None: + kwargs['name'] = parser.parse_substitution(name) + + if 'on_exit' not in ignore: + on_exit = entity.get_attr('on_exit', optional=True) + if on_exit is not None: + if on_exit == 'shutdown': + kwargs['on_exit'] = [Shutdown()] + else: + raise ValueError( + 'Attribute on_exit of Entity node expected to be shutdown but got `{}`' + 'Other on_exit actions not yet supported'.format(on_exit)) + + if 'prefix' not in ignore: + prefix = entity.get_attr('launch-prefix', optional=True) + if prefix is not None: + kwargs['prefix'] = parser.parse_substitution(prefix) + + if 'output' not in ignore: + output = entity.get_attr('output', optional=True) + if output is not None: + kwargs['output'] = parser.parse_substitution(output) + + if 'respawn' not in ignore: + respawn = entity.get_attr('respawn', optional=True) + if respawn is not None: + kwargs['respawn'] = parser.parse_substitution(respawn) + + if 'respawn_max_retries' not in ignore: + respawn_max_retries = entity.get_attr('respawn_max_retries', data_type=int, + optional=True) + if respawn_max_retries is not None: + kwargs['respawn_max_retries'] = respawn_max_retries + + if 'respawn_delay' not in ignore: + respawn_delay = entity.get_attr('respawn_delay', data_type=float, optional=True) + if respawn_delay is not None: + if respawn_delay < 0.0: + raise ValueError( + 'Attribute respawn_delay of Entity node expected to be ' + 'a non-negative value but got `{}`'.format(respawn_delay) + ) + kwargs['respawn_delay'] = respawn_delay + + if 'sigkill_timeout' not in ignore: + sigkill_timeout = entity.get_attr('sigkill_timeout', data_type=float, optional=True) + if sigkill_timeout is not None: + if sigkill_timeout < 0.0: + raise ValueError( + 'Attribute sigkill_timeout of Entity node expected to be ' + 'a non-negative value but got `{}`'.format(sigkill_timeout) + ) + kwargs['sigkill_timeout'] = str(sigkill_timeout) + + if 'sigterm_timeout' not in ignore: + sigterm_timeout = entity.get_attr('sigterm_timeout', data_type=float, optional=True) + if sigterm_timeout is not None: + if sigterm_timeout < 0.0: + raise ValueError( + 'Attribute sigterm_timeout of Entity node expected to be ' + 'a non-negative value but got `{}`'.format(sigterm_timeout) + ) + kwargs['sigterm_timeout'] = str(sigterm_timeout) + + if 'shell' not in ignore: + shell = entity.get_attr('shell', data_type=bool, optional=True) + if shell is not None: + kwargs['shell'] = shell + + if 'emulate_tty' not in ignore: + emulate_tty = entity.get_attr('emulate_tty', data_type=bool, optional=True) + if emulate_tty is not None: + kwargs['emulate_tty'] = emulate_tty + + if 'additional_env' not in ignore: + # Conditions won't be allowed in the `env` tag. + # If that feature is needed, `set_environment_variable` and + # `unset_environment_variable` actions should be used. + env = entity.get_attr('env', data_type=List[Entity], optional=True) + if env is not None: + kwargs['additional_env'] = { + tuple(parser.parse_substitution(e.get_attr('name'))): + parser.parse_substitution(e.get_attr('value')) for e in env + } + for e in env: + e.assert_entity_completely_parsed() + return cls, kwargs + + @property + def name(self): + """Getter for name.""" + if self.process_description.final_name is not None: + return self.process_description.final_name + return self.process_description.name + + @property + def cmd(self): + """Getter for cmd.""" + if self.process_description.final_cmd is not None: + return self.process_description.final_cmd + return self.process_description.cmd + + @property + def cwd(self): + """Getter for cwd.""" + if self.process_description.final_cwd is not None: + return self.process_description.final_cwd + return self.process_description.cwd + + @property + def env(self): + """Getter for env.""" + if self.process_description.final_env is not None: + return self.process_description.final_env + return self.process_description.env + + @property + def additional_env(self): + """Getter for additional_env.""" + return self.process_description.additional_env diff --git a/src/lib/launch/launch/launch/actions/group_action.py b/src/lib/launch/launch/launch/actions/group_action.py new file mode 100644 index 0000000000..81b7b533d4 --- /dev/null +++ b/src/lib/launch/launch/launch/actions/group_action.py @@ -0,0 +1,146 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the GroupAction action.""" + +from typing import Dict +from typing import Iterable +from typing import List +from typing import Optional + +from .pop_environment import PopEnvironment +from .pop_launch_configurations import PopLaunchConfigurations +from .push_environment import PushEnvironment +from .push_launch_configurations import PushLaunchConfigurations +from .reset_environment import ResetEnvironment +from .reset_launch_configurations import ResetLaunchConfigurations +from .set_launch_configuration import SetLaunchConfiguration +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..launch_context import LaunchContext +from ..launch_description_entity import LaunchDescriptionEntity +from ..some_substitutions_type import SomeSubstitutionsType + + +@expose_action('group') +class GroupAction(Action): + """ + Action that yields other actions. + + This action is used to nest other actions without including a separate + launch description, while also optionally having a condition (like all + other actions), scoping and forwarding launch configurations and + environment variables, and/or declaring launch configurations for just the + group and its yielded actions. + + When scoped=True, changes to launch configurations and environment + variables are limited to the scope of actions in the group action. + + When scoped=True and forwarding=True, all existing launch configurations + and environment variables are available in the scoped context. + + When scoped=True and forwarding=False, all existing launch configurations + and environment variables are removed from the scoped context. + + Any launch configuration defined in the launch_configurations dictionary + will be set in the current context. + When scoped=False these configurations will persist even after the + GroupAction has completed. + When scoped=True these configurations will only be available to actions in + the GroupAction. + When scoped=True and forwarding=False, the launch_configurations dictionary + is evaluated before clearing, and then re-set in the cleared scoped context. + """ + + def __init__( + self, + actions: Iterable[Action], + *, + scoped: bool = True, + forwarding: bool = True, + launch_configurations: Optional[Dict[SomeSubstitutionsType, SomeSubstitutionsType]] = None, + **left_over_kwargs + ) -> None: + """Create a GroupAction.""" + super().__init__(**left_over_kwargs) + self.__actions = actions + self.__scoped = scoped + self.__forwarding = forwarding + if launch_configurations is not None: + self.__launch_configurations = launch_configurations + else: + self.__launch_configurations = {} + self.__actions_to_return: Optional[List] = None + + @classmethod + def parse(cls, entity: Entity, parser: Parser): + """Return `GroupAction` action and kwargs for constructing it.""" + _, kwargs = super().parse(entity, parser) + scoped = entity.get_attr('scoped', data_type=bool, optional=True) + forwarding = entity.get_attr('forwarding', data_type=bool, optional=True) + keeps = entity.get_attr('keep', data_type=List[Entity], optional=True) + if scoped is not None: + kwargs['scoped'] = scoped + if forwarding is not None: + kwargs['forwarding'] = forwarding + if keeps is not None: + kwargs['launch_configurations'] = { + tuple(parser.parse_substitution(e.get_attr('name'))): + parser.parse_substitution(e.get_attr('value')) for e in keeps + } + for e in keeps: + e.assert_entity_completely_parsed() + kwargs['actions'] = [parser.parse_action(e) for e in entity.children + if e.type_name != 'keep'] + return cls, kwargs + + def get_sub_entities(self) -> List[LaunchDescriptionEntity]: + """Return subentities.""" + if self.__actions_to_return is None: + self.__actions_to_return = list(self.__actions) + configuration_sets = [ + SetLaunchConfiguration(k, v) for k, v in self.__launch_configurations.items() + ] + if self.__scoped: + if self.__forwarding: + self.__actions_to_return = [ + PushLaunchConfigurations(), + PushEnvironment(), + *configuration_sets, + *self.__actions_to_return, + PopEnvironment(), + PopLaunchConfigurations() + ] + else: + self.__actions_to_return = [ + PushLaunchConfigurations(), + PushEnvironment(), + ResetEnvironment(), + ResetLaunchConfigurations(self.__launch_configurations), + *self.__actions_to_return, + PopEnvironment(), + PopLaunchConfigurations() + ] + else: + self.__actions_to_return = [ + *configuration_sets, + *self.__actions_to_return + ] + return self.__actions_to_return + + def execute(self, context: LaunchContext) -> Optional[List[LaunchDescriptionEntity]]: + """Execute the action.""" + return self.get_sub_entities() diff --git a/src/lib/launch/launch/launch/actions/include_launch_description.py b/src/lib/launch/launch/launch/actions/include_launch_description.py new file mode 100644 index 0000000000..449f4c3a9c --- /dev/null +++ b/src/lib/launch/launch/launch/actions/include_launch_description.py @@ -0,0 +1,243 @@ +# Copyright 2018 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Module for the IncludeLaunchDescription action.""" + +import os +from typing import Iterable, Sequence +from typing import List +from typing import Optional +from typing import Tuple +from typing import Union + +import launch.logging + +from .set_launch_configuration import SetLaunchConfiguration +from ..action import Action +from ..frontend import Entity +from ..frontend import expose_action +from ..frontend import Parser +from ..launch_context import LaunchContext +from ..launch_description_entity import LaunchDescriptionEntity +from ..launch_description_source import LaunchDescriptionSource +from ..launch_description_sources import AnyLaunchDescriptionSource +from ..some_substitutions_type import SomeSubstitutionsType +from ..utilities import normalize_to_list_of_substitutions +from ..utilities import perform_substitutions + + +@expose_action('include') +class IncludeLaunchDescription(Action): + """ + Action that includes a launch description source and yields its entities when visited. + + It is possible to pass arguments to the launch description, which it + declared with the :py:class:`launch.actions.DeclareLaunchArgument` action. + + If any given arguments do not match the name of any declared launch + arguments, then they will still be set as Launch Configurations using the + :py:class:`launch.actions.SetLaunchConfiguration` action. + This is done because it's not always possible to detect all instances of + the declare launch argument class in the given launch description. + + On the other side, an error will sometimes be raised if the given launch + description declares a launch argument and its value is not provided to + this action. + It will only produce this error, however, if the declared launch argument + is unconditional (sometimes the action that declares the launch argument + will only be visited in certain circumstances) and if it does not have a + default value on which to fall back. + + Conditionally included launch arguments that do not have a default value + will eventually raise an error if this best effort argument checking is + unable to see an unsatisfied argument ahead of time. + + For example, to include ``my_pkg``'s ``other_launch.py`` and set launch arguments for it: + + .. code-block:: python + + def generate_launch_description(): + return ([ + SetLaunchConfiguration('arg1', 'value1'), + IncludeLaunchDescription( + AnyLaunchDescriptionSource([ + PathJoinSubstitution([ + FindPackageShare('my_pkg'), + 'launch', + 'other_launch.py', + ]), + ]), + launch_arguments={ + 'other_arg1': LaunchConfiguration('arg1'), + 'other_arg2': 'value2', + }.items(), + ), + ]) + + .. code-block:: xml + + + + + + + + + + .. code-block:: yaml + + launch: + - let: + name: 'arg1' + value: 'value1' + - include: + file: '$(find-pkg-share my_pkg)/launch/other_launch.py' + let: + - name: 'other_arg1' + value: '$(var arg1)' + - name: 'other_arg2' + value: 'value2' + + .. note:: + + While frontends currently support both ``let`` and ``arg`` for launch arguments, they are + both converted into ``SetLaunchConfiguration`` actions (``let``). The same launch argument + should not be defined using both ``let`` and ``arg``. + """ + + def __init__( + self, + launch_description_source: Union[LaunchDescriptionSource, SomeSubstitutionsType], + *, + launch_arguments: Optional[ + Iterable[Tuple[SomeSubstitutionsType, SomeSubstitutionsType]] + ] = None, + **kwargs + ) -> None: + """Create an IncludeLaunchDescription action.""" + super().__init__(**kwargs) + if not isinstance(launch_description_source, LaunchDescriptionSource): + launch_description_source = AnyLaunchDescriptionSource(launch_description_source) + self.__launch_description_source = launch_description_source + self.__launch_arguments = () if launch_arguments is None else tuple(launch_arguments) + self.__logger = launch.logging.get_logger(__name__) + + @classmethod + def parse(cls, entity: Entity, parser: Parser): + """Return `IncludeLaunchDescription` action and kwargs for constructing it.""" + _, kwargs = super().parse(entity, parser) + file_path = parser.parse_substitution(entity.get_attr('file')) + kwargs['launch_description_source'] = file_path + args = [] + args_arg = entity.get_attr('arg', data_type=List[Entity], optional=True) + if args_arg is not None: + args.extend(args_arg) + args_let = entity.get_attr('let', data_type=List[Entity], optional=True) + if args_let is not None: + args.extend(args_let) + if args: + kwargs['launch_arguments'] = [ + ( + parser.parse_substitution(e.get_attr('name')), + parser.parse_substitution(e.get_attr('value')) + ) + for e in args + ] + for e in args: + e.assert_entity_completely_parsed() + return cls, kwargs + + @property + def launch_description_source(self) -> LaunchDescriptionSource: + """Getter for self.__launch_description_source.""" + return self.__launch_description_source + + @property + def launch_arguments(self) -> Sequence[Tuple[SomeSubstitutionsType, SomeSubstitutionsType]]: + """Getter for self.__launch_arguments.""" + return self.__launch_arguments + + def _get_launch_file(self): + return os.path.abspath(self.__launch_description_source.location) + + def _get_launch_file_directory(self): + launch_file_location = self._get_launch_file() + if os.path.exists(launch_file_location): + launch_file_location = os.path.dirname(launch_file_location) + else: + # If the location does not exist, then it's likely set to '