diff --git a/Cargo.lock b/Cargo.lock index bcbeb09d..d7c624bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,25 +194,22 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.27" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb939d66e4ae03cee6091612804ba446b12878410cfa17f785f4dd67d4014e8" +checksum = "977eb15ea9efd848bb8a4a1a2500347ed7f0bf794edf0dc3ddcf439f43d36b23" dependencies = [ - "bzip2", - "flate2", + "compression-codecs", + "compression-core", "futures-core", - "memchr", "pin-project-lite", "tokio", - "zstd", - "zstd-safe", ] [[package]] name = "async-executor" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa" +checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" dependencies = [ "async-task", "concurrent-queue", @@ -391,9 +388,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1541072f81945fa1251f8795ef6c92c4282d74d59f88498ae7d4bf00f0ebdad9" +checksum = "d025db5d9f52cbc413b167136afb3d8aeea708c0d8884783cf6253be5e22f6f2" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -428,9 +425,9 @@ dependencies = [ [[package]] name = "aws-sdk-s3" -version = "1.103.0" +version = "1.104.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af040a86ae4378b7ed2f62c83b36be1848709bbbf5757ec850d0e08596a26be9" +checksum = "38c488cd6abb0ec9811c401894191932e941c5f91dc226043edacd0afa1634bc" dependencies = [ "aws-credential-types", "aws-runtime", @@ -462,9 +459,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.81.0" +version = "1.83.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79ede098271e3471036c46957cba2ba30888f53bda2515bf04b560614a30a36e" +checksum = "643cd43af212d2a1c4dedff6f044d7e1961e5d9e7cfe773d70f31d9842413886" dependencies = [ "aws-credential-types", "aws-runtime", @@ -484,9 +481,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.82.0" +version = "1.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43326f724ba2cc957e6f3deac0ca1621a3e5d4146f5970c24c8a108dac33070f" +checksum = "20ec4a95bd48e0db7a424356a161f8d87bd6a4f0af37204775f0da03d9e39fc3" dependencies = [ "aws-credential-types", "aws-runtime", @@ -506,9 +503,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.83.0" +version = "1.85.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5468593c47efc31fdbe6c902d1a5fde8d9c82f78a3f8ccfe907b1e9434748cb" +checksum = "410309ad0df4606bc721aff0d89c3407682845453247213a0ccc5ff8801ee107" dependencies = [ "aws-credential-types", "aws-runtime", @@ -568,9 +565,9 @@ dependencies = [ [[package]] name = "aws-smithy-checksums" -version = "0.63.7" +version = "0.63.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dbef71cd3cf607deb5c407df52f7e589e6849b296874ee448977efbb6d0832b" +checksum = "56d2df0314b8e307995a3b86d44565dfe9de41f876901a7d71886c756a25979f" dependencies = [ "aws-smithy-http 0.62.3", "aws-smithy-types", @@ -640,9 +637,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fdbad9bd9dbcc6c5e68c311a841b54b70def3ca3b674c42fbebb265980539f8" +checksum = "147e8eea63a40315d704b97bf9bc9b8c1402ae94f89d5ad6f7550d963309da1b" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -661,9 +658,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.61.4" +version = "0.61.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a16e040799d29c17412943bdbf488fd75db04112d0c0d4b9290bacf5ae0014b9" +checksum = "eaa31b350998e703e9826b2104dd6f63be0508666e1aba88137af060e8944047" dependencies = [ "aws-smithy-types", ] @@ -689,9 +686,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3d57c8b53a72d15c8e190475743acf34e4996685e346a3448dd54ef696fc6e0" +checksum = "d3946acbe1ead1301ba6862e712c7903ca9bb230bdf1fbd1b5ac54158ef2ab1f" dependencies = [ "aws-smithy-async", "aws-smithy-http 0.62.3", @@ -852,7 +849,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "848df95320021558dd6bb4c26de3fe66724cdcbdbbf3fa720150b52b086ae568" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "libc", "log", "rustix 0.38.44", @@ -882,9 +879,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.2" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" [[package]] name = "bitvec" @@ -954,7 +951,7 @@ version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca5abbf2d4a4c6896197c9de13d6d7cb7eff438c63dacde1dde980569cb00248" dependencies = [ - "darling 0.21.2", + "darling 0.21.3", "ident_case", "prettyplease", "proc-macro2", @@ -1093,9 +1090,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.33" +version = "1.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" dependencies = [ "jobserver", "libc", @@ -1157,9 +1154,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.45" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" dependencies = [ "clap_builder", "clap_derive", @@ -1178,9 +1175,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" dependencies = [ "anstream", "anstyle", @@ -1243,15 +1240,35 @@ checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "comfy-table" -version = "7.1.4" +version = "7.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" +checksum = "3f8e18d0dca9578507f13f9803add0df13362b02c501c1c17734f0dbb52eaf0b" dependencies = [ "crossterm", "unicode-segmentation", "unicode-width 0.2.1", ] +[[package]] +name = "compression-codecs" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "485abf41ac0c8047c07c87c72c8fb3eb5197f6e9d7ded615dfd1a00ae00a0f64" +dependencies = [ + "bzip2", + "compression-core", + "flate2", + "memchr", + "zstd", + "zstd-safe", +] + +[[package]] +name = "compression-core" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -1436,14 +1453,15 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" +checksum = "d8b9f2e4c67f833b660cdb0a3523065869fb35570177239812ed4c905aeff87b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "crossterm_winapi", + "document-features", "parking_lot 0.12.4", - "rustix 0.38.44", + "rustix 1.0.8", "winapi", ] @@ -1506,12 +1524,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08440b3dd222c3d0433e63e097463969485f112baff337dfdaca043a0d760570" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.21.2", - "darling_macro 0.21.2", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1530,9 +1548,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25b7912bc28a04ab1b7715a68ea03aaa15662b43a1a4b2c480531fd19f8bf7e" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", @@ -1555,11 +1573,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce154b9bea7fb0c8e8326e62d00354000c36e79770ff21b8c84e3aa267d9d531" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.21.2", + "darling_core 0.21.3", "quote", "syn", ] @@ -1586,31 +1604,31 @@ checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "dbus" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" +checksum = "190b6255e8ab55a7b568df5a883e9497edc3e4821c06396612048b430e5ad1e9" dependencies = [ "libc", "libdbus-sys", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "dbus-secret-service" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42a16374481d92aed73ae45b1f120207d8e71d24fb89f357fadbd8f946fd84b" +checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6" dependencies = [ "aes", "block-padding", "cbc", "dbus", - "futures-util", + "fastrand", "hkdf", "num", "once_cell", - "rand 0.8.5", "sha2", + "zeroize", ] [[package]] @@ -1625,9 +1643,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", "serde", @@ -1713,6 +1731,15 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "document-features" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95249b50c6c185bee49034bcb378a49dc2b5dff0be90ff6616d31d64febab05d" +dependencies = [ + "litrs", +] + [[package]] name = "dunce" version = "1.0.5" @@ -1914,7 +1941,7 @@ dependencies = [ [[package]] name = "fancy_display" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "console 0.15.11", ] @@ -1950,14 +1977,14 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if 1.0.3", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2000,9 +2027,9 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[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", ] @@ -2196,7 +2223,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", "wasm-bindgen", ] @@ -2231,7 +2258,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "ignore", "walkdir", ] @@ -2261,9 +2288,9 @@ dependencies = [ [[package]] name = "google-cloud-auth" -version = "0.22.3" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb930bdeb70c93de0a8c635a23cfb2447e8da167ffe90eab1330b0a8b6091d2e" +checksum = "7314c5dcd0feb905728aa809f46d10a58587be2bdd90f3003e09bcef05e919dc" dependencies = [ "async-trait", "base64 0.22.1", @@ -2283,9 +2310,9 @@ dependencies = [ [[package]] name = "google-cloud-gax" -version = "0.23.3" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876a08b972e05565d562f2575e110092492835bf5f7b76aec4e90f792b581960" +checksum = "58148fad34ed71d986c8e3244c1575793445d211bee643740066e3a2388f4319" dependencies = [ "base64 0.22.1", "bytes", @@ -2303,9 +2330,9 @@ dependencies = [ [[package]] name = "google-cloud-rpc" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07b375f1a978a69d4e4ebbf673766dc3be4bec01c8f95048896370205f2fe22c" +checksum = "94b443385571575a4552687a9072c4c8b7778e3f3c03fe95f3caf8df1a5e4ef2" dependencies = [ "bytes", "google-cloud-wkt", @@ -2353,7 +2380,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.10.0", + "indexmap 2.11.0", "slab", "tokio", "tokio-util 0.7.16", @@ -2372,7 +2399,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.10.0", + "indexmap 2.11.0", "slab", "tokio", "tokio-util 0.7.16", @@ -2812,9 +2839,9 @@ 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", @@ -2860,9 +2887,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown 0.15.5", @@ -2924,11 +2951,11 @@ dependencies = [ [[package]] name = "io-uring" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "cfg-if 1.0.3", "libc", ] @@ -2957,11 +2984,11 @@ checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" [[package]] name = "is_executable" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" +checksum = "baabb8b4867b26294d818bf3f651a454b6901431711abb96e296245888d6e8c4" dependencies = [ - "winapi", + "windows-sys 0.60.2", ] [[package]] @@ -3046,9 +3073,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ "getrandom 0.3.3", "libc", @@ -3227,9 +3254,9 @@ checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libdbus-sys" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" +checksum = "5cbe856efeb50e4681f010e9aaa2bf0a644e10139e54cde10fc83a307c23bd9f" dependencies = [ "pkg-config", ] @@ -3256,7 +3283,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "libc", "redox_syscall 0.5.17", ] @@ -3294,6 +3321,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" +[[package]] +name = "litrs" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" + [[package]] name = "lock_api" version = "0.4.13" @@ -3391,9 +3424,9 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" dependencies = [ "libc", ] @@ -3455,9 +3488,9 @@ dependencies = [ [[package]] name = "minijinja" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e60ac08614cc09062820e51d5d94c2fce16b94ea4e5003bb81b99a95f84e876" +checksum = "a9f264d75233323f4b7d2f03aefe8a990690cdebfbfe26ea86bcbaec5e9ac990" dependencies = [ "aho-corasick", "serde", @@ -3545,7 +3578,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "cfg-if 1.0.3", "cfg_aliases", "libc", @@ -3558,7 +3591,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "cfg-if 1.0.3", "cfg_aliases", "libc", @@ -3695,7 +3728,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", ] [[package]] @@ -3800,11 +3833,11 @@ dependencies = [ [[package]] name = "ordermap" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6bff06e4a5dc6416bead102d3e63c480dd852ffbb278bf8cfeb4966b329609" +checksum = "2fd6fedcd996c8c97932075cc3811d83f53280f48d5620e4e3cab7f6a12678c4" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", ] @@ -3913,7 +3946,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0b6f3ea862c0666ad89857fd29d3d86c3f076c4134c0ce62a659d6d33de5ee9" dependencies = [ "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", + "itertools 0.14.0", + "proptest", + "tempfile", + "tracing", +] + +[[package]] +name = "path_resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "493dd224adc6163e40a1e58cefbeec27dabb69696017677406417b3516c800fa" +dependencies = [ + "fs-err", + "fxhash", + "indexmap 2.11.0", "itertools 0.14.0", "proptest", "tempfile", @@ -3946,7 +3994,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faee7227064121fcadcd2ff788ea26f0d8f2bd23a0574da11eca23bc935bcc05" dependencies = [ "boxcar", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.13.0", "once_cell", "pep440_rs", @@ -3963,9 +4011,9 @@ dependencies = [ [[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 = "pest" @@ -4019,7 +4067,7 @@ checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" dependencies = [ "fixedbitset", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", ] @@ -4121,7 +4169,7 @@ dependencies = [ "comfy-table", "dirs", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "insta", "itertools 0.14.0", "jsonrpc-core", @@ -4164,7 +4212,7 @@ dependencies = [ name = "pixi-build-cmake" version = "0.3.2" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "insta", "miette", "minijinja", @@ -4184,7 +4232,7 @@ dependencies = [ name = "pixi-build-mojo" version = "0.1.2" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "insta", "miette", "minijinja", @@ -4205,7 +4253,7 @@ name = "pixi-build-python" version = "0.3.2" dependencies = [ "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "insta", "miette", "minijinja", @@ -4252,7 +4300,7 @@ version = "0.3.2" dependencies = [ "cargo_toml", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "insta", "miette", "minijinja", @@ -4274,7 +4322,7 @@ dependencies = [ [[package]] name = "pixi_build_type_conversions" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "itertools 0.14.0", "ordermap", @@ -4288,7 +4336,7 @@ dependencies = [ [[package]] name = "pixi_build_types" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "ordermap", "rattler_conda_types", @@ -4302,7 +4350,7 @@ dependencies = [ [[package]] name = "pixi_config" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "clap", "console 0.15.11", @@ -4311,7 +4359,7 @@ dependencies = [ "itertools 0.14.0", "miette", "pixi_consts", - "rattler", + "rattler 0.35.0", "rattler_conda_types", "rattler_networking", "rattler_repodata_gateway", @@ -4328,7 +4376,7 @@ dependencies = [ [[package]] name = "pixi_consts" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "console 0.15.11", "rattler_cache", @@ -4339,7 +4387,7 @@ dependencies = [ [[package]] name = "pixi_git" version = "0.0.1" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "dashmap", "dunce", @@ -4359,14 +4407,14 @@ dependencies = [ [[package]] name = "pixi_manifest" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "chrono", "console 0.15.11", "dunce", "fancy_display", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "miette", "minijinja", @@ -4399,7 +4447,7 @@ dependencies = [ [[package]] name = "pixi_pypi_spec" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "itertools 0.14.0", "pep440_rs", @@ -4419,7 +4467,7 @@ dependencies = [ [[package]] name = "pixi_spec" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "dirs", "file_url", @@ -4442,9 +4490,9 @@ dependencies = [ [[package]] name = "pixi_spec_containers" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "pixi_spec", "rattler_conda_types", @@ -4454,11 +4502,11 @@ dependencies = [ [[package]] name = "pixi_toml" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "digest", "hex", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "miette", "strsim", @@ -4469,7 +4517,7 @@ dependencies = [ [[package]] name = "pixi_utils" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#7c8e42d2a6b4483f000a5cd734eae256b294d93f" +source = "git+https://github.com/prefix-dev/pixi?branch=main#771b30f3d84a255ca8c39c8ca73493d8386f6725" dependencies = [ "async-fd-lock", "fs-err", @@ -4528,8 +4576,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" dependencies = [ "base64 0.22.1", - "indexmap 2.10.0", - "quick-xml 0.38.2", + "indexmap 2.11.0", + "quick-xml 0.38.3", "serde", "time", ] @@ -4565,9 +4613,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -4629,7 +4677,7 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.2", + "bitflags 2.9.3", "lazy_static", "num-traits", "rand 0.9.2", @@ -4682,7 +4730,7 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0f6160dc48298b9260d9b958ad1d7f96f6cd0b9df200b22329204e09334663" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "pep440_rs", "pep508_rs", "serde", @@ -4708,18 +4756,18 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.38.2" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d200a41a7797e6461bd04e4e95c3347053a731c32c87f066f2f0dda22dbdbba8" +checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" dependencies = [ "memchr", ] [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -4728,7 +4776,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls 0.23.31", - "socket2 0.5.10", + "socket2 0.6.0", "thiserror 2.0.16", "tokio", "tracing", @@ -4737,9 +4785,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", "getrandom 0.3.3", @@ -4758,16 +4806,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.0", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -4888,14 +4936,56 @@ dependencies = [ "fs-err", "futures", "humantime", - "indexmap 2.10.0", + "indexmap 2.11.0", "indicatif", "itertools 0.14.0", "memchr", "memmap2", "once_cell", "parking_lot 0.12.4", - "path_resolver", + "path_resolver 0.1.2", + "rattler_cache", + "rattler_conda_types", + "rattler_digest", + "rattler_menuinst", + "rattler_networking", + "rattler_package_streaming", + "rattler_shell", + "rayon", + "reflink-copy", + "regex", + "reqwest", + "reqwest-middleware 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json", + "simple_spawn_blocking", + "smallvec", + "tempfile", + "thiserror 2.0.16", + "tokio", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "rattler" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48febbcf33fff4df8131f86a373f57689a6cee4b1b52e3cad35938e47358820c" +dependencies = [ + "anyhow", + "digest", + "dirs", + "fs-err", + "futures", + "humantime", + "indexmap 2.11.0", + "itertools 0.14.0", + "memchr", + "memmap2", + "once_cell", + "parking_lot 0.12.4", + "path_resolver 0.2.0", "rattler_cache", "rattler_conda_types", "rattler_digest", @@ -4922,7 +5012,7 @@ dependencies = [ [[package]] name = "rattler-build" version = "0.46.0" -source = "git+https://github.com/prefix-dev/rattler-build?branch=main#aa48f4ce24710aaaa6df24163c018e8ad33f125d" +source = "git+https://github.com/prefix-dev/rattler-build?branch=main#7e63b9f97574ff97637c2fa467959d4e777393e6" dependencies = [ "anyhow", "async-once-cell", @@ -4947,7 +5037,7 @@ dependencies = [ "hex", "http-range-client", "ignore", - "indexmap 2.10.0", + "indexmap 2.11.0", "indicatif", "itertools 0.14.0", "lazy_static", @@ -4961,7 +5051,7 @@ dependencies = [ "opendal", "pathdiff", "petgraph", - "rattler", + "rattler 0.34.13", "rattler_cache", "rattler_conda_types", "rattler_config", @@ -4975,6 +5065,7 @@ dependencies = [ "rattler_sandbox", "rattler_shell", "rattler_solve", + "rattler_upload", "rattler_virtual_packages", "rayon", "reflink-copy", @@ -5009,7 +5100,7 @@ dependencies = [ "walkdir", "which", "xz2", - "zip 4.3.0", + "zip 4.6.0", "zstd", ] @@ -5060,7 +5151,7 @@ dependencies = [ "fxhash", "glob", "hex", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "lazy-regex", "nom", @@ -5095,7 +5186,7 @@ checksum = "cc76f2046476c4c861c20e3467dc3b8cba8e67a248c3a72a95767556c752340a" dependencies = [ "console 0.16.0", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "rattler_conda_types", "serde", "serde_json", @@ -5125,9 +5216,9 @@ dependencies = [ [[package]] name = "rattler_index" -version = "0.24.9" +version = "0.24.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff5e23045cc04373833d046dfbeaa99ad880f80fa6ceea21a79815eb041b8a4" +checksum = "9602cdc36c6d9748a5cd2af786fc0e0ab37ddd039298db85f14712b5272cac0f" dependencies = [ "anyhow", "bytes", @@ -5361,7 +5452,7 @@ dependencies = [ "anyhow", "enum_dispatch", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "rattler_conda_types", "rattler_pty", @@ -5391,6 +5482,41 @@ dependencies = [ "tracing", ] +[[package]] +name = "rattler_upload" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79dbb53d61ff957bd2b619265700cb0d00716a9e0eb76fce7f2574a4b40acc98" +dependencies = [ + "base64 0.22.1", + "clap", + "fs-err", + "futures", + "indicatif", + "miette", + "opendal", + "rattler_conda_types", + "rattler_config", + "rattler_digest", + "rattler_networking", + "rattler_package_streaming", + "rattler_redaction", + "rattler_solve", + "reqwest", + "reqwest-middleware 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "reqwest-retry", + "serde", + "serde_json", + "serde_yaml", + "sha2", + "tempfile", + "thiserror 2.0.16", + "tokio", + "tokio-util 0.7.16", + "tracing", + "url", +] + [[package]] name = "rattler_virtual_packages" version = "2.1.3" @@ -5444,7 +5570,7 @@ name = "recipe-stage0" version = "0.1.0" dependencies = [ "hashlink", - "indexmap 2.10.0", + "indexmap 2.11.0", "insta", "itertools 0.14.0", "marked-yaml", @@ -5472,7 +5598,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", ] [[package]] @@ -5520,9 +5646,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", @@ -5532,9 +5658,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", @@ -5543,15 +5669,15 @@ dependencies = [ [[package]] name = "regex-lite" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "relative-path" @@ -5707,7 +5833,7 @@ dependencies = [ "elsa", "event-listener", "futures", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "petgraph", "tracing", @@ -5765,7 +5891,7 @@ dependencies = [ "bytecheck", "bytes", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "munge", "ptr_meta", "rancor", @@ -5850,13 +5976,12 @@ dependencies = [ [[package]] name = "rust-ini" -version = "0.21.1" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" +checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7" dependencies = [ "cfg-if 1.0.3", "ordered-multimap", - "trim-in-place", ] [[package]] @@ -5896,7 +6021,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys 0.4.15", @@ -5909,7 +6034,7 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys 0.9.4", @@ -6186,7 +6311,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6199,7 +6324,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -6295,7 +6420,7 @@ version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itoa", "memchr", "ryu", @@ -6353,7 +6478,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.11.0", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -6381,7 +6506,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itoa", "ryu", "serde", @@ -6737,7 +6862,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "byteorder", "enum-as-inner", "libc", @@ -6765,7 +6890,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -6891,12 +7016,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "8ca967379f9d8eb8058d86ed467d81d03e81acd45757e4ca341c24affbe8e8e3" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde", @@ -6906,15 +7030,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "a9108bb380861b07264b950ded55a44a14a4adc68b9f5efd85aafc3aa4d40a68" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "7182799245a7264ce590b349d90338f1c1affad93d2639aed5f8f69c090b334c" dependencies = [ "num-conv", "time-core", @@ -7075,13 +7199,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" dependencies = [ "foldhash", - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 1.0.0", "toml_datetime 0.7.0", "toml_parser", "toml_writer", - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] @@ -7118,7 +7242,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -7131,27 +7255,27 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] name = "toml_edit" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d3b47e6b7a040216ae5302712c94d1cf88c95b47efa80e2c59ce96c878267e" +checksum = "7211ff1b8f0d3adae1663b7da9ffe396eabe1ca25f0b0bee42b0da29a9ddce93" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 1.0.0", "toml_datetime 0.7.0", "toml_parser", "toml_writer", - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] @@ -7160,7 +7284,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" dependencies = [ - "winnow 0.7.12", + "winnow 0.7.13", ] [[package]] @@ -7196,7 +7320,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "bytes", "futures-util", "http 1.3.1", @@ -7294,12 +7418,6 @@ dependencies = [ "tracing-serde", ] -[[package]] -name = "trim-in-place" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343e926fc669bc8cde4fa3129ab681c63671bae288b1f1081ceee6d9d37904fc" - [[package]] name = "try-lock" version = "0.2.5" @@ -7418,9 +7536,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -7543,7 +7661,7 @@ name = "uv-configuration" version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "either", "fs-err", "rayon", @@ -7603,7 +7721,7 @@ version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ "arcstr", - "bitflags 2.9.2", + "bitflags 2.9.3", "fs-err", "http 1.3.1", "itertools 0.14.0", @@ -7748,7 +7866,7 @@ source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f092 dependencies = [ "arcstr", "boxcar", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "regex", "rustc-hash", @@ -7785,7 +7903,7 @@ version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "jiff", "mailparse", @@ -7796,7 +7914,7 @@ dependencies = [ "serde", "serde-untagged", "thiserror 2.0.16", - "toml_edit 0.23.3", + "toml_edit 0.23.4", "tracing", "url", "uv-cache-key", @@ -7968,11 +8086,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -8567,9 +8685,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -8590,13 +8708,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.2", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "writeable" @@ -8797,6 +8912,20 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "zerotrie" @@ -8840,7 +8969,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.10.0", + "indexmap 2.11.0", "memchr", "time", "zopfli", @@ -8848,14 +8977,14 @@ dependencies = [ [[package]] name = "zip" -version = "4.3.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aed4ac33e8eb078c89e6cbb1d5c4c7703ec6d299fc3e7c3695af8f8b423468b" +checksum = "c034aa6c54f654df20e7dc3713bc51705c12f280748fb6d7f40f87c696623e34" dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.10.0", + "indexmap 2.11.0", "memchr", "zopfli", ] diff --git a/Cargo.toml b/Cargo.toml index 290d2045..40e2c242 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -96,6 +96,9 @@ pixi_build_type_conversions = { git = "https://github.com/prefix-dev/pixi", bran #rattler_repodata_gateway = { path = "../rattler/crates/rattler_repodata_gateway" } #simple_spawn_blocking = { path = "../rattler/crates/simple_spawn_blocking" } +#[patch."https://github.com/prefix-dev/rattler-build"] +#rattler-build = { path = "../rattler-build/" } + [profile.dev.package] insta.opt-level = 3 similar.opt-level = 3 diff --git a/backends/pixi-build-ros/pixi.lock b/backends/pixi-build-ros/pixi.lock index 02d714f6..26fcb307 100644 --- a/backends/pixi-build-ros/pixi.lock +++ b/backends/pixi-build-ros/pixi.lock @@ -8,12 +8,10 @@ environments: linux-64: - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://prefix.dev/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://prefix.dev/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda - conda: https://prefix.dev/conda-forge/noarch/catkin_pkg-1.0.0-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - conda: https://prefix.dev/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -34,36 +32,33 @@ environments: - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://prefix.dev/pixi-build-backends/noarch/pixi-build-api-version-1-h4616a5c_0.conda - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/pixi-build-backends/linux-64/py-pixi-build-backend-0.1.0.18082025.428fdf1-h81b34b9_0.conda - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/linux-64/python-3.13.5-hec9711d_102_cp313.conda - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://prefix.dev/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://prefix.dev/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://prefix.dev/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/rospkg-1.6.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/linux-64/ruff-0.12.9-hbf64f1c_1.conda + - conda: https://prefix.dev/conda-forge/linux-64/ruff-0.12.10-h718f522_0.conda - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://prefix.dev/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: . + - conda: ../../py-pixi-build-backend + subdir: linux-64 osx-arm64: - - conda: https://prefix.dev/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda - conda: https://prefix.dev/conda-forge/noarch/catkin_pkg-1.0.0-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - conda: https://prefix.dev/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -80,36 +75,33 @@ environments: - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://prefix.dev/pixi-build-backends/noarch/pixi-build-api-version-1-h4616a5c_0.conda - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/pixi-build-backends/osx-arm64/py-pixi-build-backend-0.1.0.18082025.428fdf1-he8ea13f_0.conda - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://prefix.dev/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://prefix.dev/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://prefix.dev/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/rospkg-1.6.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/osx-arm64/ruff-0.12.9-h13aad0b_1.conda + - conda: https://prefix.dev/conda-forge/osx-arm64/ruff-0.12.10-h23cf233_0.conda - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda - conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://prefix.dev/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - conda: . + - conda: ../../py-pixi-build-backend + subdir: osx-arm64 win-64: - - conda: https://prefix.dev/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://prefix.dev/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.8.3-h4c7d964_0.conda - conda: https://prefix.dev/conda-forge/noarch/catkin_pkg-1.0.0-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - - conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - conda: https://prefix.dev/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/docutils-0.22-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda @@ -117,29 +109,25 @@ environments: - conda: https://prefix.dev/conda-forge/win-64/libexpat-2.7.1-hac47afa_0.conda - conda: https://prefix.dev/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://prefix.dev/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda - - conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://prefix.dev/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda - conda: https://prefix.dev/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://prefix.dev/conda-forge/win-64/openssl-3.5.2-h725018a_0.conda - conda: https://prefix.dev/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://prefix.dev/pixi-build-backends/noarch/pixi-build-api-version-1-h4616a5c_0.conda - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/pixi-build-backends/win-64/py-pixi-build-backend-0.1.0.18082025.428fdf1-h3c70cbc_0.conda - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/pyparsing-3.2.3-pyhe01879c_2.conda - conda: https://prefix.dev/conda-forge/noarch/pytest-8.4.1-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda + - conda: https://prefix.dev/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - - conda: https://prefix.dev/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda - - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-8_cp313.conda - - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda + - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.12-8_cp312.conda + - conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda - conda: https://prefix.dev/conda-forge/noarch/rosdistro-1.0.1-pyhd8ed1ab_0.conda - conda: https://prefix.dev/conda-forge/noarch/rospkg-1.6.0-pyhd8ed1ab_0.conda - - conda: https://prefix.dev/conda-forge/win-64/ruff-0.12.9-h7fc6a25_1.conda + - conda: https://prefix.dev/conda-forge/win-64/ruff-0.12.10-h429b229_0.conda - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://prefix.dev/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://prefix.dev/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - - conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda - conda: https://prefix.dev/conda-forge/noarch/typing-extensions-4.14.1-h4440ef1_0.conda - conda: https://prefix.dev/conda-forge/noarch/typing_extensions-4.14.1-pyhe01879c_0.conda @@ -150,6 +138,8 @@ environments: - conda: https://prefix.dev/conda-forge/win-64/vcomp14-14.44.35208-h818238b_31.conda - conda: https://prefix.dev/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - conda: . + - conda: ../../py-pixi-build-backend + subdir: win-64 packages: - conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -170,16 +160,6 @@ packages: license_family: BSD size: 23621 timestamp: 1650670423406 -- conda: https://prefix.dev/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 - md5: aaa2a381ccc56eac91d63b6c1240312f - depends: - - cpython - - python-gil - license: MIT - license_family: MIT - size: 8191 - timestamp: 1744137672556 - conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -248,16 +228,6 @@ packages: license_family: BSD size: 27011 timestamp: 1733218222191 -- conda: https://prefix.dev/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda - noarch: generic - sha256: 058c8156ff880b1180a36b94307baad91f9130d0e3019ad8c7ade035852016fb - md5: 0401f31e3c9e48cebf215472aa3e7104 - depends: - - python >=3.13,<3.14.0a0 - - python_abi * *_cp313 - license: Python-2.0 - size: 47560 - timestamp: 1750062514868 - conda: https://prefix.dev/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda sha256: 5603c7d0321963bb9b4030eadabc3fd7ca6103a38475b4e0ed13ed6d97c86f4e md5: 0a2014fd9860f8b1eaa0b1f3d3771a08 @@ -462,17 +432,6 @@ packages: license_family: BSD size: 71829 timestamp: 1748393749336 -- conda: https://prefix.dev/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf - md5: 74860100b2029e2523cf480804c76b9b - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-2-Clause - license_family: BSD - size: 88657 - timestamp: 1723861474602 - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda sha256: 6d9c32fc369af5a84875725f7ddfbfc2ace795c28f246dc70055a79f9b2003da md5: 0b367fad34931cb79e0d6b7e5c06bb1c @@ -615,23 +574,25 @@ packages: timestamp: 1755002391876 - conda: . name: pixi-build-ros - version: 0.1.0 + version: 0.1.1 build: pyh4616a5c_0 subdir: noarch depends: - rosdistro - catkin_pkg - - toml - pyyaml - - pixi-build-api-version 1.* + - pixi-build-api-version >=1 - typing-extensions - py-pixi-build-backend - python - python * input: - hash: a0262b0011a1537470bb8ab6a456a2bafdf2a3d732fa203cad81eb57eaa3116f + hash: 2d9db874a95047da1ac3a876f2b11df1e3d938686f87b494650ce46399326b56 globs: - pyproject.toml + sources: + py-pixi-build-backend: + path: ../../py-pixi-build-backend - conda: https://prefix.dev/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda sha256: a8eb555eef5063bbb7ba06a379fa7ea714f57d9741fe0efdb9442dbbc2cccbcc md5: 7da7ccd349dbf6487a7778579d2bb971 @@ -641,40 +602,50 @@ packages: license_family: MIT size: 24246 timestamp: 1747339794916 -- conda: https://prefix.dev/pixi-build-backends/linux-64/py-pixi-build-backend-0.1.0.18082025.428fdf1-h81b34b9_0.conda - noarch: python - sha256: ff1f08815d9a0a436ed2b5406a96dd47da4f41019f66d5e6bdde1f581f7fba56 +- conda: ../../py-pixi-build-backend + name: py-pixi-build-backend + version: 0.1.2 + build: hbf21a9e_0 + subdir: linux-64 depends: - - python >=3.8 - - _python_abi3_support 1.* - - cpython >=3.13 + - typing-extensions + - python + - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: BSD-3-Clause - size: 11697213 - timestamp: 1755507637782 -- conda: https://prefix.dev/pixi-build-backends/osx-arm64/py-pixi-build-backend-0.1.0.18082025.428fdf1-he8ea13f_0.conda - noarch: python - sha256: 6805acca077fa7035f17f239472fa15719c58c1d831ed6f603afa00bf873870f + input: + hash: c167f9a0ed44432ce8f62bafb4c72988878c35ebd6635c340b8adfc7bc42d137 + globs: + - pyproject.toml +- conda: ../../py-pixi-build-backend + name: py-pixi-build-backend + version: 0.1.2 + build: hbf21a9e_0 + subdir: osx-arm64 depends: - - python >=3.8 - - _python_abi3_support 1.* - - cpython >=3.13 - constrains: - - __osx >=11.0 + - typing-extensions + - python + - python_abi 3.13.* *_cp313 license: BSD-3-Clause - size: 10454666 - timestamp: 1755509549232 -- conda: https://prefix.dev/pixi-build-backends/win-64/py-pixi-build-backend-0.1.0.18082025.428fdf1-h3c70cbc_0.conda - noarch: python - sha256: 727ee22740a1f4dc3c1809d6dcdc5fb46f3012c3bfeb71dc41ccfa8bfc956429 + input: + hash: c167f9a0ed44432ce8f62bafb4c72988878c35ebd6635c340b8adfc7bc42d137 + globs: + - pyproject.toml +- conda: ../../py-pixi-build-backend + name: py-pixi-build-backend + version: 0.1.2 + build: hbf21a9e_0 + subdir: win-64 depends: - - python >=3.8 - - _python_abi3_support 1.* - - cpython >=3.13 + - typing-extensions + - python + - python_abi 3.12.* *_cp312 license: BSD-3-Clause - size: 10232925 - timestamp: 1755507643709 + input: + hash: c167f9a0ed44432ce8f62bafb4c72988878c35ebd6635c340b8adfc7bc42d137 + globs: + - pyproject.toml - conda: https://prefix.dev/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -761,29 +732,27 @@ packages: size: 12931515 timestamp: 1750062475020 python_site_packages_path: lib/python3.13/site-packages -- conda: https://prefix.dev/conda-forge/win-64/python-3.13.5-h7de537c_102_cp313.conda - build_number: 102 - sha256: 3de2b9f89b220cb779f6947cf87b328f73d54eed4f7e75a3f9337caeb4443910 - md5: a9a4658f751155c819d6cd4c47f0a4d2 +- conda: https://prefix.dev/conda-forge/win-64/python-3.12.11-h3f84c4b_0_cpython.conda + sha256: b69412e64971b5da3ced0fc36f05d0eacc9393f2084c6f92b8f28ee068d83e2e + md5: 6aa5e62df29efa6319542ae5025f4376 depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.0,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.50.1,<4.0a0 + - libsqlite >=3.50.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.0,<4.0a0 - - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + constrains: + - python_abi 3.12.* *_cp312 license: Python-2.0 - size: 16825621 - timestamp: 1750062318985 - python_site_packages_path: Lib/site-packages + size: 15829289 + timestamp: 1749047682640 - conda: https://prefix.dev/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 md5: 5b8d21249ff20967101ffa321cab24e8 @@ -795,15 +764,16 @@ packages: license_family: APACHE size: 233310 timestamp: 1751104122689 -- conda: https://prefix.dev/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda - sha256: ac6cf618100c2e0cad1cabfe2c44bf4a944aa07bb1dc43abff73373351a7d079 - md5: 2eabcede0db21acee23c181db58b4128 - depends: - - cpython 3.13.5.* - - python_abi * *_cp313 - license: Python-2.0 - size: 47572 - timestamp: 1750062593102 +- conda: https://prefix.dev/conda-forge/noarch/python_abi-3.12-8_cp312.conda + build_number: 8 + sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 + md5: c3efd25ac4d74b1584d2f7a57195ddf1 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6958 + timestamp: 1752805918820 - conda: https://prefix.dev/conda-forge/noarch/python_abi-3.13-8_cp313.conda build_number: 8 sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 @@ -840,20 +810,20 @@ packages: license_family: MIT size: 194243 timestamp: 1737454911892 -- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - sha256: 5b496c96e48f495de41525cb1b603d0147f2079f88a8cf061aaf9e17a2fe1992 - md5: d14f685b5d204b023c641b188a8d0d7c +- conda: https://prefix.dev/conda-forge/win-64/pyyaml-6.0.2-py312h31fea79_2.conda + sha256: 76fec03ef7e67e37724873e1f805131fb88efb57f19e9a77b4da616068ef5c28 + md5: ba00a2e5059c1fde96459858537cc8f5 depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 182783 - timestamp: 1737455202579 + size: 181734 + timestamp: 1737455207230 - conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -898,24 +868,24 @@ packages: license_family: BSD size: 31293 timestamp: 1737835793379 -- conda: https://prefix.dev/conda-forge/linux-64/ruff-0.12.9-hbf64f1c_1.conda +- conda: https://prefix.dev/conda-forge/linux-64/ruff-0.12.10-h718f522_0.conda noarch: python - sha256: 97523e0f15d0c24f8059734383cb6c5b65b3e3a6a065a845a3af474a038d9862 - md5: b3614b1bb279195baf9dd2ef52d8f273 + sha256: f7cdb61d8e758d47500b6f45e6c2685a275ca65d1cb9c8bd094fcea227e8b318 + md5: 356a5e0f6531b190b002f7257675074d depends: - python - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 10542465 - timestamp: 1755273908360 -- conda: https://prefix.dev/conda-forge/osx-arm64/ruff-0.12.9-h13aad0b_1.conda + size: 10661766 + timestamp: 1755823612718 +- conda: https://prefix.dev/conda-forge/osx-arm64/ruff-0.12.10-h23cf233_0.conda noarch: python - sha256: 4f8465c11c13abb9693dac0857322e469f828f83a5cd3da321d39df17cbfe756 - md5: e1b3306734336d24f20e061fcaad4b79 + sha256: e0142dda1cd36ec73741a1267b61b627ee6549dd6345ced9d707ebd2468e064d + md5: 779b2cda23580d1fc93a0534ec4c60d9 depends: - python - __osx >=11.0 @@ -923,12 +893,12 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 9772336 - timestamp: 1755274020472 -- conda: https://prefix.dev/conda-forge/win-64/ruff-0.12.9-h7fc6a25_1.conda + size: 9876853 + timestamp: 1755823708465 +- conda: https://prefix.dev/conda-forge/win-64/ruff-0.12.10-h429b229_0.conda noarch: python - sha256: 6f087211b828be54775401381547da567afb1654d15c49848c7a06448fde9c63 - md5: b7f1190cd3d402ca280fce253c67480e + sha256: fabd95186f2e4c3239ff3ad139ff62f1c3523189f3187397d94734f8acfc281a + md5: aeac13adbe43735128768c89574c1e11 depends: - python - vc >=14.3,<15 @@ -936,8 +906,8 @@ packages: - ucrt >=10.0.20348.0 license: MIT license_family: MIT - size: 10838150 - timestamp: 1755273919445 + size: 10954968 + timestamp: 1755823643535 - conda: https://prefix.dev/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda sha256: 972560fcf9657058e3e1f97186cc94389144b46dbdf58c807ce62e83f977e863 md5: 4de79c071274a53dcaf2a8c749d1499e @@ -989,15 +959,6 @@ packages: license_family: BSD size: 3466348 timestamp: 1748388121356 -- conda: https://prefix.dev/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 - md5: b0dd904de08b7db706167240bf37b164 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 22132 - timestamp: 1734091907682 - conda: https://prefix.dev/conda-forge/noarch/tomli-2.2.1-pyhe01879c_2.conda sha256: 040a5a05c487647c089ad5e05ad5aff5942830db2a4e656f1e300d73436436f1 md5: 30a0a26c8abccf4b7991d590fe17c699 diff --git a/backends/pixi-build-ros/pixi.toml b/backends/pixi-build-ros/pixi.toml index 94279d2b..1a7d21f8 100644 --- a/backends/pixi-build-ros/pixi.toml +++ b/backends/pixi-build-ros/pixi.toml @@ -26,7 +26,8 @@ hatchling = "*" rosdistro = "*" catkin_pkg = "*" pyyaml = "*" -pixi-build-api-version = "1.*" +pixi-build-api-version = ">=2,<3" # should be added to `py-pixi-build-backend` typing-extensions = "*" -py-pixi-build-backend = "*" +#py-pixi-build-backend = "*" +py-pixi-build-backend = { path = "../../py-pixi-build-backend" } diff --git a/backends/pixi-build-ros/pyproject.toml b/backends/pixi-build-ros/pyproject.toml index cfe0ab3c..305c379f 100644 --- a/backends/pixi-build-ros/pyproject.toml +++ b/backends/pixi-build-ros/pyproject.toml @@ -1,5 +1,12 @@ [project] -dependencies = ["rosdistro", "catkin_pkg", "pytest", "toml", "pyyaml"] +dependencies = [ + "rosdistro", + "catkin_pkg", + "pytest", + "toml", + "pyyaml", + "py-pixi-build-backend", +] name = "pixi-build-ros" version = "0.1.1" diff --git a/backends/pixi-build-ros/src/pixi_build_ros/distro.py b/backends/pixi-build-ros/src/pixi_build_ros/distro.py index dae4405d..06072501 100644 --- a/backends/pixi-build-ros/src/pixi_build_ros/distro.py +++ b/backends/pixi-build-ros/src/pixi_build_ros/distro.py @@ -1,5 +1,3 @@ -import os - from rosdistro import get_cached_distribution, get_index, get_index_url @@ -13,8 +11,6 @@ def __init__(self, distro_name): self._distribution_type = index.distributions[distro_name]["distribution_type"] self._python_version = index.distributions[distro_name]["python_version"] - os.environ["ROS_VERSION"] = "1" if self.check_ros1() else "2" - @property def name(self) -> str: return self.distro_name diff --git a/backends/pixi-build-ros/src/pixi_build_ros/metadata_provider.py b/backends/pixi-build-ros/src/pixi_build_ros/metadata_provider.py new file mode 100644 index 00000000..c958eafa --- /dev/null +++ b/backends/pixi-build-ros/src/pixi_build_ros/metadata_provider.py @@ -0,0 +1,202 @@ +""" +ROS-specific metadata provider that extracts metadata from package.xml files. +""" + +from typing import Optional, List + +from pixi_build_backend.types import MetadataProvider +from pixi_build_ros.distro import Distro + + +class MaintainerInfo: + """Container for maintainer information from package.xml.""" + + def __init__(self, name: str, email: str): + self.name = name + self.email = email + + +class PackageData: + """Container for parsed package.xml data.""" + + def __init__( + self, + name: Optional[str] = None, + version: Optional[str] = None, + description: Optional[str] = None, + maintainers: Optional[List[MaintainerInfo]] = None, + licenses: Optional[List[str]] = None, + homepage: Optional[str] = None, + repository: Optional[str] = None, + ): + self.name = name + self.version = version + self.description = description + self.maintainers = maintainers or [] + self.licenses = licenses or [] + self.homepage = homepage + self.repository = repository + +class PackageXmlMetadataProvider(MetadataProvider): + """ + Metadata provider that extracts metadata from ROS package.xml files. + + This provider reads ROS package.xml files and extracts package metadata + like name, version, description, maintainers, etc. + """ + + def __init__(self, package_xml_path: str, *args, **kwargs): + """ + Initialize the metadata provider with a package.xml file path. + + Args: + package_xml_path: Path to the package.xml file + """ + super().__init__(*args, **kwargs) + self.package_xml_path = package_xml_path + self._package_data: Optional[PackageData] = None + + @property + def _package_xml_data(self) -> PackageData: + """Load and parse the package.xml file.""" + if self._package_data is not None: + return self._package_data + + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(self.package_xml_path) + root = tree.getroot() + + # Extract basic package information + name_elem = root.find('name') + version_elem = root.find('version') + description_elem = root.find('description') + + # Extract maintainer and author information + maintainers: List[MaintainerInfo] = [] + for maintainer in root.findall('maintainer'): + maintainer_info = MaintainerInfo( + name=maintainer.text.strip() if maintainer.text else '', + email=maintainer.get('email', '') + ) + maintainers.append(maintainer_info) + + # Extract license information + licenses = [] + for license_elem in root.findall('license'): + if license_elem.text: + licenses.append(license_elem.text.strip()) + + # Extract URL information + homepage = None + repository = None + for url in root.findall('url'): + url_type = url.get('type', '') + if url_type == 'website' and not homepage: + homepage = url.text.strip() if url.text else None + elif url_type == 'repository' and not repository: + repository = url.text.strip() if url.text else None + + self._package_data = PackageData( + name=name_elem.text.strip() if name_elem is not None and name_elem.text else None, + version=version_elem.text.strip() if version_elem is not None and version_elem.text else None, + description=description_elem.text.strip() if description_elem is not None and description_elem.text else None, + maintainers=maintainers, + licenses=licenses, + homepage=homepage, + repository=repository, + ) + + except Exception as e: + print(f"Warning: Failed to parse package.xml at {self.package_xml_path}: {e}") + self._package_data = PackageData() + + return self._package_data + + def name(self) -> Optional[str]: + """Return the package name from package.xml.""" + return self._package_xml_data.name + + def version(self) -> Optional[str]: + """Return the package version from package.xml.""" + return self._package_xml_data.version + + def homepage(self) -> Optional[str]: + """Return the homepage URL from package.xml.""" + return self._package_xml_data.homepage + + def license(self) -> Optional[str]: + """Return the license from package.xml.""" + # TODO: Handle License parsing to conform to SPDX standards, + # ROS package.xml does not enforce SPDX as strictly as rattler-build + return None + + def license_file(self) -> Optional[str]: + """Return None as package.xml doesn't typically specify license files.""" + return None + + def summary(self) -> Optional[str]: + """Return the description as summary from package.xml.""" + description = self._package_xml_data.description + if description and len(description) > 100: + # Truncate long descriptions for summary + return description[:97] + "..." + return description + + def description(self) -> Optional[str]: + """Return the full description from package.xml.""" + return self._package_xml_data.description + + def documentation(self) -> Optional[str]: + """Return None as package.xml doesn't typically specify documentation URLs separately.""" + return None + + def repository(self) -> Optional[str]: + """Return the repository URL from package.xml.""" + return self._package_xml_data.repository + + def input_globs(self) -> List[str]: + """Return input globs that affect this metadata provider.""" + return [ + "package.xml", + "CMakeLists.txt", + "setup.py", + "setup.cfg" + ] + + +class ROSPackageXmlMetadataProvider(PackageXmlMetadataProvider): + """ + ROS-specific metadata provider that formats names according to ROS conventions. + + This provider extends PackageXmlMetadataProvider to format package names + as 'ros--' according to ROS conda packaging conventions. + """ + + def __init__(self, package_xml_path: str, distro: Optional[Distro] = None): + """ + Initialize the ROS metadata provider. + + Args: + package_xml_path: Path to the package.xml file + distro: ROS distro. If None, will use the base package name without distro prefix. + """ + super().__init__(package_xml_path) + self._distro: Optional[Distro] = distro + + def _get_distro(self) -> Optional[Distro]: + return self._distro + + def name(self) -> Optional[str]: + """Return the ROS-formatted package name (ros--).""" + base_name = super().name() + if base_name is None: + return None + + distro = self._get_distro() + if distro: + # Convert underscores to hyphens per ROS conda naming conventions + formatted_name = base_name.replace('_', '-') + return f"ros-{distro.name}-{formatted_name}" + return base_name diff --git a/backends/pixi-build-ros/src/pixi_build_ros/ros_generator.py b/backends/pixi-build-ros/src/pixi_build_ros/ros_generator.py index d3eec87c..d6624a2a 100644 --- a/backends/pixi-build-ros/src/pixi_build_ros/ros_generator.py +++ b/backends/pixi-build-ros/src/pixi_build_ros/ros_generator.py @@ -9,6 +9,7 @@ GenerateRecipeProtocol, GeneratedRecipe, ) +from .metadata_provider import ROSPackageXmlMetadataProvider from pixi_build_backend.types.intermediate_recipe import Script, ConditionalRequirements from pixi_build_backend.types.item import ItemPackageDependency @@ -69,24 +70,19 @@ def generate_recipe( manifest_root = Path(manifest_path) - # Create base recipe from model - generated_recipe = GeneratedRecipe.from_model(model) - - # Read package.xml - package_xml_str = get_package_xml_content(manifest_root) - package_xml = convert_package_xml_to_catkin_package(package_xml_str) - - # Setup ROS distro + # Setup ROS distro first distro = Distro(backend_config.distro) + + # Create metadata provider for package.xml + package_xml_path = manifest_root / "package.xml" + metadata_provider = ROSPackageXmlMetadataProvider(str(package_xml_path), distro) - package = generated_recipe.recipe.package + # Create base recipe from model with metadata provider + generated_recipe = GeneratedRecipe.from_model(model, metadata_provider) - # Modify the name and version of the package based on the ROS distro and package.xml - if package.name.get_concrete() == "undefined": - package.name = f"ros-{distro.name}-{package_xml.name.replace('_', '-')}" - - if package.version == "0.0.0": - package.version = package_xml.version + # Read package.xml for dependency extraction + package_xml_str = get_package_xml_content(manifest_root) + package_xml = convert_package_xml_to_catkin_package(package_xml_str) # Get requirements from package.xml package_requirements = package_xml_to_conda_requirements(package_xml, distro) @@ -132,7 +128,8 @@ def generate_recipe( debug_dir = backend_config.get_debug_dir() if debug_dir: recipe = generated_recipe.recipe.to_yaml() - debug_file_path = debug_dir / f"{package.name}-{package.version}-recipe.yaml" + package = generated_recipe.recipe.package + debug_file_path = debug_dir / f"{package.name.get_concrete()}-{package.version}-recipe.yaml" debug_file_path.parent.mkdir(parents=True, exist_ok=True) with open(debug_file_path, 'w') as debug_file: debug_file.write(recipe) diff --git a/backends/pixi-build-ros/src/pixi_build_ros/utils.py b/backends/pixi-build-ros/src/pixi_build_ros/utils.py index 8888ba77..904c2273 100644 --- a/backends/pixi-build-ros/src/pixi_build_ros/utils.py +++ b/backends/pixi-build-ros/src/pixi_build_ros/utils.py @@ -1,5 +1,4 @@ import os -import sys from itertools import chain from pathlib import Path from typing import Any, List diff --git a/backends/pixi-build-ros/tests/test_package_xml.py b/backends/pixi-build-ros/tests/test_package_xml.py index 1f8338f4..e8d3006e 100644 --- a/backends/pixi-build-ros/tests/test_package_xml.py +++ b/backends/pixi-build-ros/tests/test_package_xml.py @@ -1,7 +1,11 @@ from pathlib import Path +import tempfile from pixi_build_ros.distro import Distro +from pixi_build_ros.ros_generator import ROSGenerator from pixi_build_ros.utils import convert_package_xml_to_catkin_package, package_xml_to_conda_requirements +from pixi_build_backend.types.platform import Platform +from pixi_build_backend.types.project_model import ProjectModelV1 def test_package_xml_to_recipe_config(package_xmls: Path): # Read content from the file in the test data directory @@ -45,3 +49,63 @@ def test_ament_cmake_package_xml_to_recipe_config(package_xmls: Path): assert requirements.build[0].concrete.package_name == "ros-noetic-ament-cmake" +def test_generate_recipe(package_xmls: Path): + """Test the generate_recipe function of ROSGenerator.""" + # Create a temporary directory to simulate the package directory + with tempfile.TemporaryDirectory() as temp_dir: + temp_path = Path(temp_dir) + + # Copy the test package.xml to the temp directory + package_xml_source = package_xmls / "demo_nodes_cpp.xml" + package_xml_dest = temp_path / "package.xml" + package_xml_dest.write_text(package_xml_source.read_text(encoding='utf-8')) + + # Create a minimal ProjectModelV1 instance + model = ProjectModelV1() + + # Create config for ROS backend + config = { + "distro": "jazzy", + "noarch": False + } + + # Create host platform + host_platform = Platform.current() + + # Create ROSGenerator instance + generator = ROSGenerator() + + # Generate the recipe + generated_recipe = generator.generate_recipe( + model=model, + config=config, + manifest_path=str(temp_path), + host_platform=host_platform + ) + + # Verify the generated recipe has expected properties + assert generated_recipe.recipe.package.name.get_concrete() == "ros-jazzy-demo-nodes-cpp" + assert generated_recipe.recipe.package.version.get_concrete() == "0.37.1" + + # Verify build script is generated + assert generated_recipe.recipe.build.script is not None + assert generated_recipe.recipe.build.script.content is not None + + # Verify ROS dependencies are included in build requirements + build_deps = [dep.concrete.package_name for dep in generated_recipe.recipe.requirements.build if dep.concrete] + expected_ros_deps = ["ros-jazzy-ament-cmake", "ros-jazzy-example-interfaces", "ros-jazzy-rclcpp"] + + for expected_dep in expected_ros_deps: + assert expected_dep in build_deps, f"Expected dependency {expected_dep} not found in build deps: {build_deps}" + + # Verify standard build tools are included + expected_build_tools = ["ninja", "python", "setuptools", "cmake"] + for tool in expected_build_tools: + assert tool in build_deps, f"Expected build tool {tool} not found in build deps: {build_deps}" + + # Verify run dependencies + run_deps = [dep.concrete.package_name for dep in generated_recipe.recipe.requirements.run if dep.concrete] + expected_run_deps = ["ros-jazzy-example-interfaces", "ros-jazzy-rclcpp", "ros-jazzy-launch-ros"] + + for expected_dep in expected_run_deps: + assert expected_dep in run_deps, f"Expected runtime dependency {expected_dep} not found in run deps: {run_deps}" diff --git a/crates/pixi-build-backend/src/generated_recipe.rs b/crates/pixi-build-backend/src/generated_recipe.rs index c2881c97..c2909aae 100644 --- a/crates/pixi-build-backend/src/generated_recipe.rs +++ b/crates/pixi-build-backend/src/generated_recipe.rs @@ -120,13 +120,18 @@ impl GeneratedRecipe { ) -> Result> { // If the name is not defined in the model, we try to get it from the provider. // If the provider cannot provide a name, we return an error. - let name = if model.name.is_empty() { - provider + let name = match model.name { + Some(name) => { + if name.trim().is_empty() { + return Err(GenerateRecipeError::NoNameDefined); + } else { + name + } + } + None => provider .name() .map_err(|e| GenerateRecipeError::MetadataProviderError(String::from("name"), e))? - .ok_or(GenerateRecipeError::NoNameDefined)? - } else { - model.name + .ok_or(GenerateRecipeError::NoNameDefined)?, }; // If the version is not defined in the model, we try to get it from the @@ -196,6 +201,7 @@ impl GeneratedRecipe { Ok(GeneratedRecipe { recipe: ir, + // TODO: extract real input globs from the model ..Default::default() }) } diff --git a/crates/pixi-build-backend/src/traits/project.rs b/crates/pixi-build-backend/src/traits/project.rs index 4edf5317..cd45420d 100644 --- a/crates/pixi-build-backend/src/traits/project.rs +++ b/crates/pixi-build-backend/src/traits/project.rs @@ -35,7 +35,7 @@ pub trait ProjectModel { fn used_variants(&self, platform: Option) -> HashSet; /// Return the name of the project model - fn name(&self) -> &str; + fn name(&self) -> Option<&String>; /// Return the version of the project model fn version(&self) -> &Option; @@ -48,8 +48,8 @@ impl ProjectModel for pbt::ProjectModelV1 { self.targets.as_ref() } - fn name(&self) -> &str { - &self.name + fn name(&self) -> Option<&String> { + self.name.as_ref() } fn version(&self) -> &Option { diff --git a/crates/pixi-build-backend/tests/integration/common/model.rs b/crates/pixi-build-backend/tests/integration/common/model.rs index 8b9aee4b..6f97de3f 100644 --- a/crates/pixi-build-backend/tests/integration/common/model.rs +++ b/crates/pixi-build-backend/tests/integration/common/model.rs @@ -119,7 +119,7 @@ pub(crate) fn convert_test_model_to_project_model_v1( }; ProjectModelV1 { - name: test_model.name, + name: Some(test_model.name), version: Some(Version::from_str(&test_model.version).unwrap()), description: test_model.description, authors: test_model.authors, diff --git a/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_bin_is_set.snap b/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_bin_is_set.snap index a9bc2012..e7b9ad77 100644 --- a/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_bin_is_set.snap +++ b/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_bin_is_set.snap @@ -1,6 +1,7 @@ --- source: crates/pixi-build-mojo/src/main.rs expression: generated_recipe.recipe +snapshot_kind: text --- context: {} package: diff --git a/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_pkg_is_set.snap b/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_pkg_is_set.snap index 42748276..5f7c5303 100644 --- a/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_pkg_is_set.snap +++ b/crates/pixi-build-mojo/src/snapshots/pixi_build_mojo__tests__mojo_pkg_is_set.snap @@ -1,6 +1,7 @@ --- source: crates/pixi-build-mojo/src/main.rs expression: generated_recipe.recipe +snapshot_kind: text --- context: {} package: diff --git a/crates/pixi-build-rust/src/main.rs b/crates/pixi-build-rust/src/main.rs index 3b9edb74..eabfe5db 100644 --- a/crates/pixi-build-rust/src/main.rs +++ b/crates/pixi-build-rust/src/main.rs @@ -397,16 +397,7 @@ mod tests { } #[test] fn test_with_cargo_manifest() { - let project_model = project_fixture!({ - "name": "", - "targets": { - "default_target": { - "run_dependencies": { - "dependency": "*" - } - }, - } - }); + let project_model = project_fixture!({}); let generated_recipe = RustGenerator::default() .generate_recipe( @@ -496,7 +487,6 @@ mod tests { #[test] fn test_error_handling_missing_cargo_manifest() { let project_model = project_fixture!({ - "name": "", "targets": { "default_target": { "run_dependencies": { @@ -521,9 +511,9 @@ mod tests { } #[test] - fn test_error_handling_ignore_manifest_with_empty_name() { + fn test_empty_name() { let project_model = project_fixture!({ - "name": "", + "version": "0.1.0", "targets": { "default_target": { "run_dependencies": { diff --git a/lefthook.yaml b/lefthook.yaml index 5780bbd1..465bfe8a 100644 --- a/lefthook.yaml +++ b/lefthook.yaml @@ -22,6 +22,7 @@ pre-commit: - name: actionlint run: pixi {run} actionlint - name: cargo-fmt + stage_fixed: true glob: "*.rs" run: pixi {run} cargo-fmt - name: taplo diff --git a/py-pixi-build-backend/Cargo.lock b/py-pixi-build-backend/Cargo.lock index 2b58751f..20475759 100644 --- a/py-pixi-build-backend/Cargo.lock +++ b/py-pixi-build-backend/Cargo.lock @@ -23,7 +23,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cipher", "cpufeatures", ] @@ -34,7 +34,7 @@ version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "getrandom 0.3.3", "once_cell", "version_check", @@ -142,7 +142,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9db67cd9cf4f56a10d2cbae6a3b552e5bd36701fd37b74a18c14a231bdf446c7" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "itertools 0.12.1", "libc", "serde", @@ -194,11 +194,13 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddb939d66e4ae03cee6091612804ba446b12878410cfa17f785f4dd67d4014e8" +checksum = "6448dfb3960f0b038e88c781ead1e7eb7929dfc3a71a1336ec9086c00f6d1e75" dependencies = [ "bzip2", + "compression-codecs", + "compression-core", "flate2", "futures-core", "memchr", @@ -229,7 +231,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7569377d7062165f6f7834d9cb3051974a2d141433cc201c2f94c149e993cccf" dependencies = [ "async-trait", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "pin-project", "rustix 0.38.44", "thiserror 1.0.69", @@ -255,7 +257,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" dependencies = [ "async-lock", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "concurrent-queue", "futures-io", "futures-lite", @@ -295,7 +297,7 @@ dependencies = [ "async-signal", "async-task", "blocking", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "event-listener", "futures-lite", "rustix 1.0.8", @@ -321,7 +323,7 @@ dependencies = [ "async-io", "async-lock", "atomic-waker", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "futures-core", "futures-io", "rustix 1.0.8", @@ -506,9 +508,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.83.0" +version = "1.84.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5468593c47efc31fdbe6c902d1a5fde8d9c82f78a3f8ccfe907b1e9434748cb" +checksum = "91abcdbfb48c38a0419eb75e0eac772a4783a96750392680e4f3c25a8a0535b9" dependencies = [ "aws-credential-types", "aws-runtime", @@ -588,9 +590,9 @@ dependencies = [ [[package]] name = "aws-smithy-eventstream" -version = "0.60.10" +version = "0.60.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "604c7aec361252b8f1c871a7641d5e0ba3a7f5a586e51b66bc9510a5519594d9" +checksum = "182b03393e8c677347fb5705a04a9392695d47d20ef0a2f8cfe28c8e6b9b9778" dependencies = [ "aws-smithy-types", "bytes", @@ -640,9 +642,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.0.6" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f108f1ca850f3feef3009bdcc977be201bca9a91058864d9de0684e64514bee0" +checksum = "4fdbad9bd9dbcc6c5e68c311a841b54b70def3ca3b674c42fbebb265980539f8" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -689,9 +691,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.8.6" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e107ce0783019dbff59b3a244aa0c114e4a8c9d93498af9162608cd5474e796" +checksum = "a3d57c8b53a72d15c8e190475743acf34e4996685e346a3448dd54ef696fc6e0" dependencies = [ "aws-smithy-async", "aws-smithy-http 0.62.3", @@ -713,9 +715,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.8.7" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75d52251ed4b9776a3e8487b2a01ac915f73b2da3af8fc1e77e0fce697a550d4" +checksum = "07f5e0fc8a6b3f2303f331b94504bbf754d85488f402d6f1dd7a6080f99afe56" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -795,7 +797,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "miniz_oxide", "object", @@ -852,7 +854,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "848df95320021558dd6bb4c26de3fe66724cdcbdbbf3fa720150b52b086ae568" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "libc", "log", "rustix 0.38.44", @@ -882,9 +884,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.2" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" [[package]] name = "bitvec" @@ -940,9 +942,9 @@ dependencies = [ [[package]] name = "bon" -version = "3.7.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a0c21249ad725ebcadcb1b1885f8e3d56e8e6b8924f560268aab000982d637" +checksum = "537c317ddf588aab15c695bf92cf55dec159b93221c074180ca3e0e5a94da415" dependencies = [ "bon-macros", "rustversion", @@ -950,11 +952,11 @@ dependencies = [ [[package]] name = "bon-macros" -version = "3.7.0" +version = "3.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a660ebdea4d4d3ec7788cfc9c035b66efb66028b9b97bf6cde7023ccc8e77e28" +checksum = "ca5abbf2d4a4c6896197c9de13d6d7cb7eff438c63dacde1dde980569cb00248" dependencies = [ - "darling 0.21.2", + "darling 0.21.3", "ident_case", "prettyplease", "proc-macro2", @@ -976,7 +978,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.10", "serde", ] @@ -1120,9 +1122,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.33" +version = "1.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" dependencies = [ "jobserver", "libc", @@ -1137,9 +1139,9 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -1194,9 +1196,9 @@ dependencies = [ [[package]] name = "clap-verbosity-flag" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeab6a5cdfc795a05538422012f20a5496f050223c91be4e5420bfd13c641fb1" +checksum = "9d92b1fab272fe943881b77cc6e920d6543e5b1bfadbd5ed81c7c5a755742394" dependencies = [ "clap", "log", @@ -1279,6 +1281,28 @@ dependencies = [ "unicode-width 0.2.1", ] +[[package]] +name = "compression-codecs" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46cc6539bf1c592cff488b9f253b30bc0ec50d15407c2cf45e27bd8f308d5905" +dependencies = [ + "bzip2", + "compression-core", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "zstd", + "zstd-safe", +] + +[[package]] +name = "compression-core" +version = "0.4.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2957e823c15bde7ecf1e8b64e537aa03a6be5fda0e2334e99887669e75b12e01" + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -1433,7 +1457,7 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -1467,7 +1491,7 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "crossterm_winapi", "parking_lot 0.12.4", "rustix 0.38.44", @@ -1533,12 +1557,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08440b3dd222c3d0433e63e097463969485f112baff337dfdaca043a0d760570" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" dependencies = [ - "darling_core 0.21.2", - "darling_macro 0.21.2", + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -1557,9 +1581,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25b7912bc28a04ab1b7715a68ea03aaa15662b43a1a4b2c480531fd19f8bf7e" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", @@ -1582,11 +1606,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce154b9bea7fb0c8e8326e62d00354000c36e79770ff21b8c84e3aa267d9d531" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ - "darling_core 0.21.2", + "darling_core 0.21.3", "quote", "syn 2.0.106", ] @@ -1597,7 +1621,7 @@ version = "6.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "crossbeam-utils", "hashbrown 0.14.5", "lock_api", @@ -1613,31 +1637,31 @@ checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "dbus" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" +checksum = "6e8d0767bcb66eb101d5ab87b9f38542691185af14fa8a7026c2490e62b45cfc" dependencies = [ "libc", "libdbus-sys", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "dbus-secret-service" -version = "4.0.3" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42a16374481d92aed73ae45b1f120207d8e71d24fb89f357fadbd8f946fd84b" +checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6" dependencies = [ "aes", "block-padding", "cbc", "dbus", - "futures-util", + "fastrand", "hkdf", "num", "once_cell", - "rand 0.8.5", "sha2", + "zeroize", ] [[package]] @@ -1689,7 +1713,7 @@ source = "git+https://github.com/prefix-dev/diffy.git?branch=master#f916e25c31a8 dependencies = [ "nu-ansi-term 0.50.1", "strsim", - "thiserror 2.0.15", + "thiserror 2.0.16", ] [[package]] @@ -1822,7 +1846,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -1932,7 +1956,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26c7b13d0780cb82722fd59f6f57f925e143427e4a75313a6c77243bf5326ae6" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "home", "windows-sys 0.59.0", ] @@ -1961,7 +1985,7 @@ dependencies = [ [[package]] name = "fancy_display" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "console 0.15.11", ] @@ -1989,7 +2013,7 @@ source = "git+https://github.com/conda/rattler?rev=ac1a946121f5b9d949e4b5f622962 dependencies = [ "itertools 0.14.0", "percent-encoding", - "thiserror 2.0.15", + "thiserror 2.0.16", "typed-path", "url", ] @@ -2002,21 +2026,21 @@ checksum = "765662dc0b26e038099a5a1529f5d48443111eea45377c312be892997651710e" dependencies = [ "itertools 0.14.0", "percent-encoding", - "thiserror 2.0.15", + "thiserror 2.0.16", "typed-path", "url", ] [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2059,9 +2083,9 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[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", ] @@ -2232,7 +2256,7 @@ version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -2245,7 +2269,7 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "js-sys", "libc", "r-efi", @@ -2274,8 +2298,8 @@ dependencies = [ "aho-corasick", "bstr", "log", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata 0.4.10", + "regex-syntax 0.8.6", ] [[package]] @@ -2284,7 +2308,7 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "ignore", "walkdir", ] @@ -2328,7 +2352,7 @@ dependencies = [ "rustls-pemfile 2.2.0", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "time", "tokio", ] @@ -2350,7 +2374,7 @@ dependencies = [ "rustls-pemfile 2.2.0", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "time", "tokio", ] @@ -2371,7 +2395,7 @@ dependencies = [ "rand 0.9.2", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", ] @@ -2399,7 +2423,7 @@ dependencies = [ "serde", "serde_json", "serde_with", - "thiserror 2.0.15", + "thiserror 2.0.16", "time", "url", ] @@ -2427,7 +2451,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.10.0", + "indexmap 2.11.0", "slab", "tokio", "tokio-util 0.7.16", @@ -2446,7 +2470,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.3.1", - "indexmap 2.10.0", + "indexmap 2.11.0", "slab", "tokio", "tokio-util 0.7.16", @@ -2688,19 +2712,21 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2 0.4.12", "http 1.3.1", "http-body 1.0.1", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -2729,7 +2755,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http 1.3.1", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "rustls 0.23.31", "rustls-native-certs 0.8.1", @@ -2753,7 +2779,7 @@ dependencies = [ "futures-util", "http 1.3.1", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.7.0", "ipnet", "libc", "percent-encoding", @@ -2884,9 +2910,9 @@ 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", @@ -2913,7 +2939,7 @@ dependencies = [ "globset", "log", "memchr", - "regex-automata 0.4.9", + "regex-automata 0.4.10", "same-file", "walkdir", "winapi-util", @@ -2932,9 +2958,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown 0.15.5", @@ -2990,7 +3016,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "js-sys", "wasm-bindgen", "web-sys", @@ -2998,21 +3024,21 @@ dependencies = [ [[package]] name = "inventory" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab08d7cd2c5897f2c949e5383ea7c7db03fb19130ffcfbf7eda795137ae3cb83" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" dependencies = [ "rustversion", ] [[package]] name = "io-uring" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.2", - "cfg-if 1.0.1", + "bitflags 2.9.3", + "cfg-if 1.0.3", "libc", ] @@ -3040,11 +3066,11 @@ checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" [[package]] name = "is_executable" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a1b5bad6f9072935961dfbf1cced2f3d129963d091b6f69f007fe04e758ae2" +checksum = "baabb8b4867b26294d818bf3f651a454b6901431711abb96e296245888d6e8c4" dependencies = [ - "winapi", + "windows-sys 0.60.2", ] [[package]] @@ -3129,9 +3155,9 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ "getrandom 0.3.3", "libc", @@ -3310,9 +3336,9 @@ checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libdbus-sys" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" +checksum = "5cbe856efeb50e4681f010e9aaa2bf0a644e10139e54cde10fc83a307c23bd9f" dependencies = [ "pkg-config", ] @@ -3323,7 +3349,7 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "windows-targets 0.53.3", ] @@ -3339,7 +3365,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "libc", "redox_syscall 0.5.17", ] @@ -3462,7 +3488,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "digest", ] @@ -3474,9 +3500,9 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.7" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" dependencies = [ "libc", ] @@ -3498,7 +3524,7 @@ checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" dependencies = [ "backtrace", "backtrace-ext", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "miette-derive", "owo-colors", "supports-color", @@ -3538,9 +3564,9 @@ dependencies = [ [[package]] name = "minijinja" -version = "2.11.0" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e60ac08614cc09062820e51d5d94c2fce16b94ea4e5003bb81b99a95f84e876" +checksum = "a9f264d75233323f4b7d2f03aefe8a990690cdebfbfe26ea86bcbaec5e9ac990" dependencies = [ "aho-corasick", "serde", @@ -3627,8 +3653,8 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.9.2", - "cfg-if 1.0.1", + "bitflags 2.9.3", + "cfg-if 1.0.3", "cfg_aliases", "libc", "memoffset", @@ -3640,8 +3666,8 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.2", - "cfg-if 1.0.1", + "bitflags 2.9.3", + "cfg-if 1.0.3", "cfg_aliases", "libc", ] @@ -3793,7 +3819,7 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", ] [[package]] @@ -3927,11 +3953,11 @@ dependencies = [ [[package]] name = "ordermap" -version = "0.5.8" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6bff06e4a5dc6416bead102d3e63c480dd852ffbb278bf8cfeb4966b329609" +checksum = "2fd6fedcd996c8c97932075cc3811d83f53280f48d5620e4e3cab7f6a12678c4" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", ] @@ -4006,7 +4032,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "instant", "libc", "redox_syscall 0.2.16", @@ -4020,7 +4046,7 @@ version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "redox_syscall 0.5.17", "smallvec", @@ -4045,7 +4071,7 @@ version = "0.1.1" source = "git+https://github.com/conda/rattler?rev=ac1a946121f5b9d949e4b5f6229626795b00f39a#ac1a946121f5b9d949e4b5f6229626795b00f39a" dependencies = [ "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "proptest", "tempfile", @@ -4059,7 +4085,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0b6f3ea862c0666ad89857fd29d3d86c3f076c4134c0ce62a659d6d33de5ee9" dependencies = [ "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", + "itertools 0.14.0", + "proptest", + "tempfile", + "tracing", +] + +[[package]] +name = "path_resolver" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "493dd224adc6163e40a1e58cefbeec27dabb69696017677406417b3516c800fa" +dependencies = [ + "fs-err", + "fxhash", + "indexmap 2.11.0", "itertools 0.14.0", "proptest", "tempfile", @@ -4092,7 +4133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faee7227064121fcadcd2ff788ea26f0d8f2bd23a0574da11eca23bc935bcc05" dependencies = [ "boxcar", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.13.0", "once_cell", "pep440_rs", @@ -4109,9 +4150,9 @@ dependencies = [ [[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 = "petgraph" @@ -4120,7 +4161,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", - "indexmap 2.10.0", + "indexmap 2.11.0", ] [[package]] @@ -4131,7 +4172,7 @@ checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" dependencies = [ "fixedbitset", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", ] @@ -4233,7 +4274,7 @@ dependencies = [ "comfy-table", "dirs", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "jsonrpc-core", "jsonrpc-http-server", @@ -4262,7 +4303,7 @@ dependencies = [ "serde_json", "serde_yaml", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "toml_edit 0.22.27", "tracing", @@ -4273,7 +4314,7 @@ dependencies = [ [[package]] name = "pixi_build_type_conversions" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "itertools 0.14.0", "ordermap", @@ -4287,7 +4328,7 @@ dependencies = [ [[package]] name = "pixi_build_types" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "ordermap", "rattler_conda_types 0.39.0", @@ -4301,7 +4342,7 @@ dependencies = [ [[package]] name = "pixi_config" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "clap", "console 0.15.11", @@ -4310,7 +4351,7 @@ dependencies = [ "itertools 0.14.0", "miette", "pixi_consts", - "rattler 0.34.13", + "rattler 0.35.0", "rattler_conda_types 0.39.0", "rattler_networking 0.25.10", "rattler_repodata_gateway 0.24.1", @@ -4318,7 +4359,7 @@ dependencies = [ "serde", "serde_ignored", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml_edit 0.22.27", "tracing", "url", @@ -4327,7 +4368,7 @@ dependencies = [ [[package]] name = "pixi_consts" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "console 0.15.11", "rattler_cache 0.3.31", @@ -4338,7 +4379,7 @@ dependencies = [ [[package]] name = "pixi_git" version = "0.0.1" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "dashmap", "dunce", @@ -4347,7 +4388,7 @@ dependencies = [ "reqwest", "reqwest-middleware 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -4358,14 +4399,14 @@ dependencies = [ [[package]] name = "pixi_manifest" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "chrono", "console 0.15.11", "dunce", "fancy_display", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "miette", "minijinja", @@ -4388,7 +4429,7 @@ dependencies = [ "spdx 0.10.9", "strsim", "strum", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml-span", "toml_edit 0.22.27", "tracing", @@ -4398,7 +4439,7 @@ dependencies = [ [[package]] name = "pixi_pypi_spec" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "itertools 0.14.0", "pep440_rs", @@ -4408,7 +4449,7 @@ dependencies = [ "pixi_toml", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml-span", "toml_edit 0.22.27", "tracing", @@ -4418,7 +4459,7 @@ dependencies = [ [[package]] name = "pixi_spec" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "dirs", "file_url 0.2.6", @@ -4430,7 +4471,7 @@ dependencies = [ "serde", "serde-untagged", "serde_with", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml-span", "toml_edit 0.22.27", "tracing", @@ -4441,9 +4482,9 @@ dependencies = [ [[package]] name = "pixi_spec_containers" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "pixi_spec", "rattler_conda_types 0.39.0", @@ -4453,11 +4494,11 @@ dependencies = [ [[package]] name = "pixi_toml" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "digest", "hex", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "miette", "strsim", @@ -4468,7 +4509,7 @@ dependencies = [ [[package]] name = "pixi_utils" version = "0.1.0" -source = "git+https://github.com/prefix-dev/pixi?branch=main#cd6c1da015f0d5d849fc6933bb7983abccd7abc5" +source = "git+https://github.com/prefix-dev/pixi?branch=main#13bb8295da6557430d327d6fca19095390b8f6ee" dependencies = [ "async-fd-lock", "fs-err", @@ -4490,7 +4531,7 @@ dependencies = [ "serde_json", "serde_yaml", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "tracing-subscriber", @@ -4527,8 +4568,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af6b589e163c5a788fab00ce0c0366f6efbb9959c2f9874b224936af7fce7e1" dependencies = [ "base64 0.22.1", - "indexmap 2.10.0", - "quick-xml 0.38.1", + "indexmap 2.11.0", + "quick-xml 0.38.3", "serde", "time", ] @@ -4539,7 +4580,7 @@ version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "concurrent-queue", "hermit-abi", "pin-project-lite", @@ -4594,9 +4635,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.36" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", "syn 2.0.106", @@ -4628,13 +4669,13 @@ checksum = "6fcdab19deb5195a31cf7726a210015ff1496ba1464fd42cb4f537b8b01b471f" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.9.2", + "bitflags 2.9.3", "lazy_static", "num-traits", "rand 0.9.2", "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax 0.8.6", "rusty-fork", "tempfile", "unarray", @@ -4666,7 +4707,7 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "memchr", "unicase", ] @@ -4682,7 +4723,7 @@ dependencies = [ "phf", "serde", "smartstring", - "thiserror 2.0.15", + "thiserror 2.0.16", "unicase", ] @@ -4691,13 +4732,14 @@ name = "py-pixi-build-backend" version = "0.1.0" dependencies = [ "dict_derive", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "miette", "paste", "pixi-build-backend", "pixi_build_type_conversions", "pixi_build_types", + "pixi_consts", "pixi_manifest", "pixi_spec", "py-rattler", @@ -4713,7 +4755,7 @@ dependencies = [ "serde_json", "serde_yaml", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "toml 0.8.23", "toml_edit 0.22.27", @@ -4748,7 +4790,7 @@ dependencies = [ "reqwest", "reqwest-middleware 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "url", ] @@ -4759,7 +4801,7 @@ version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5203598f366b11a02b13aa20cab591229ff0a89fd121a308a5df751d5fc9219" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "chrono", "indoc", "inventory", @@ -4858,11 +4900,11 @@ version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0f6160dc48298b9260d9b958ad1d7f96f6cd0b9df200b22329204e09334663" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "pep440_rs", "pep508_rs", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml 0.8.23", ] @@ -4894,9 +4936,9 @@ dependencies = [ [[package]] name = "quick-xml" -version = "0.38.1" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9845d9dccf565065824e69f9f235fafba1587031eda353c1f1561cd6a6be78f4" +checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" dependencies = [ "memchr", ] @@ -4915,7 +4957,7 @@ dependencies = [ "rustc-hash", "rustls 0.23.31", "socket2 0.5.10", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -4936,7 +4978,7 @@ dependencies = [ "rustls 0.23.31", "rustls-pki-types", "slab", - "thiserror 2.0.15", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -5072,7 +5114,7 @@ dependencies = [ "fs-err", "futures", "humantime", - "indexmap 2.10.0", + "indexmap 2.11.0", "indicatif 0.17.11", "itertools 0.14.0", "memchr", @@ -5096,7 +5138,7 @@ dependencies = [ "simple_spawn_blocking 1.1.0 (git+https://github.com/conda/rattler?rev=ac1a946121f5b9d949e4b5f6229626795b00f39a)", "smallvec", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -5117,7 +5159,7 @@ dependencies = [ "fs-err", "futures", "humantime", - "indexmap 2.10.0", + "indexmap 2.11.0", "indicatif 0.18.0", "itertools 0.14.0", "memchr", @@ -5141,7 +5183,49 @@ dependencies = [ "simple_spawn_blocking 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "smallvec", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", + "tokio", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "rattler" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48febbcf33fff4df8131f86a373f57689a6cee4b1b52e3cad35938e47358820c" +dependencies = [ + "anyhow", + "digest", + "dirs", + "fs-err", + "futures", + "humantime", + "indexmap 2.11.0", + "itertools 0.14.0", + "memchr", + "memmap2", + "once_cell", + "parking_lot 0.12.4", + "path_resolver 0.2.0", + "rattler_cache 0.3.31", + "rattler_conda_types 0.39.0", + "rattler_digest 1.1.5", + "rattler_menuinst 0.2.22", + "rattler_networking 0.25.10", + "rattler_package_streaming 0.23.1", + "rattler_shell 0.24.9", + "rayon", + "reflink-copy", + "regex", + "reqwest", + "reqwest-middleware 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json", + "simple_spawn_blocking 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "smallvec", + "tempfile", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -5150,8 +5234,8 @@ dependencies = [ [[package]] name = "rattler-build" -version = "0.45.0" -source = "git+https://github.com/prefix-dev/rattler-build?branch=main#7f558a1449f08a96fbd0bca6801d6e2ce1a9f165" +version = "0.46.0" +source = "git+https://github.com/prefix-dev/rattler-build?branch=main#fd7f0bdb81b6f6a9a2657b62b42677b15dded722" dependencies = [ "anyhow", "async-once-cell", @@ -5176,7 +5260,7 @@ dependencies = [ "hex", "http-range-client", "ignore", - "indexmap 2.10.0", + "indexmap 2.11.0", "indicatif 0.18.0", "itertools 0.14.0", "lazy_static", @@ -5195,7 +5279,7 @@ dependencies = [ "rattler_conda_types 0.39.0", "rattler_config 0.2.7", "rattler_digest 1.1.5", - "rattler_index 0.24.9", + "rattler_index 0.24.10", "rattler_menuinst 0.2.22", "rattler_networking 0.25.10", "rattler_package_streaming 0.23.1", @@ -5226,7 +5310,7 @@ dependencies = [ "tar", "tempfile", "terminal_size", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util 0.7.16", "toml 0.9.5", @@ -5238,7 +5322,7 @@ dependencies = [ "walkdir", "which", "xz2", - "zip 4.3.0", + "zip 4.5.0", "zstd", ] @@ -5267,7 +5351,7 @@ dependencies = [ "serde_json", "simple_spawn_blocking 1.1.0 (git+https://github.com/conda/rattler?rev=ac1a946121f5b9d949e4b5f6229626795b00f39a)", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -5300,7 +5384,7 @@ dependencies = [ "serde_json", "simple_spawn_blocking 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -5319,7 +5403,7 @@ dependencies = [ "fxhash", "glob", "hex", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "lazy-regex", "nom", @@ -5339,7 +5423,7 @@ dependencies = [ "smallvec", "strum", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "typed-path", "url", @@ -5359,7 +5443,7 @@ dependencies = [ "fxhash", "glob", "hex", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "lazy-regex", "nom", @@ -5380,7 +5464,7 @@ dependencies = [ "smallvec", "strum", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "typed-path", "url", @@ -5393,11 +5477,11 @@ source = "git+https://github.com/conda/rattler?rev=ac1a946121f5b9d949e4b5f622962 dependencies = [ "console 0.15.11", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "rattler_conda_types 0.35.6", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml 0.8.23", "tracing", "url", @@ -5411,11 +5495,11 @@ checksum = "cc76f2046476c4c861c20e3467dc3b8cba8e67a248c3a72a95767556c752340a" dependencies = [ "console 0.16.0", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "rattler_conda_types 0.39.0", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml 0.9.5", "tracing", "url", @@ -5492,9 +5576,9 @@ dependencies = [ [[package]] name = "rattler_index" -version = "0.24.9" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ff5e23045cc04373833d046dfbeaa99ad880f80fa6ceea21a79815eb041b8a4" +checksum = "b534a90b50f75e1e79a294128fa4ee268161db70f463307de501a931a24730a3" dependencies = [ "anyhow", "bytes", @@ -5532,7 +5616,7 @@ dependencies = [ "chrono", "file_url 0.2.5", "fxhash", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "pep440_rs", "pep508_rs", @@ -5544,7 +5628,7 @@ dependencies = [ "serde_repr", "serde_with", "serde_yaml", - "thiserror 2.0.15", + "thiserror 2.0.16", "typed-path", "url", ] @@ -5589,7 +5673,7 @@ dependencies = [ "sha2", "shlex", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "unicode-normalization", "which", @@ -5619,7 +5703,7 @@ dependencies = [ "sha2", "shlex", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "unicode-normalization", "which", @@ -5651,7 +5735,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "url", ] @@ -5682,7 +5766,7 @@ dependencies = [ "serde", "serde_json", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "url", ] @@ -5707,7 +5791,7 @@ dependencies = [ "simple_spawn_blocking 1.1.0 (git+https://github.com/conda/rattler?rev=ac1a946121f5b9d949e4b5f6229626795b00f39a)", "tar", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util 0.7.16", "tracing", @@ -5737,7 +5821,7 @@ dependencies = [ "simple_spawn_blocking 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tar", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util 0.7.16", "tracing", @@ -5800,7 +5884,7 @@ dependencies = [ "blake2", "bytes", "cache_control", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "chrono", "dashmap", "dirs", @@ -5835,7 +5919,7 @@ dependencies = [ "strum", "superslice", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util 0.7.16", "tracing", @@ -5858,7 +5942,7 @@ dependencies = [ "blake2", "bytes", "cache_control", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "chrono", "coalesced_map", "dashmap", @@ -5895,7 +5979,7 @@ dependencies = [ "strum", "superslice", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util 0.7.16", "tracing", @@ -5925,14 +6009,14 @@ dependencies = [ "anyhow", "enum_dispatch", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "rattler_conda_types 0.35.6", "rattler_pty 0.2.4", "serde_json", "shlex", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", ] @@ -5945,7 +6029,7 @@ dependencies = [ "anyhow", "enum_dispatch", "fs-err", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "rattler_conda_types 0.39.0", "rattler_pty 0.2.6", @@ -5953,7 +6037,7 @@ dependencies = [ "shlex", "sysinfo", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", ] @@ -5970,7 +6054,7 @@ dependencies = [ "resolvo 0.9.1", "serde", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", ] @@ -5988,7 +6072,7 @@ dependencies = [ "resolvo 0.10.1", "serde", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", ] @@ -6005,7 +6089,7 @@ dependencies = [ "rattler_conda_types 0.35.6", "regex", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "winver", ] @@ -6024,7 +6108,7 @@ dependencies = [ "rattler_conda_types 0.39.0", "regex", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "winver", ] @@ -6063,7 +6147,7 @@ name = "recipe-stage0" version = "0.1.0" dependencies = [ "hashlink", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "marked-yaml", "rattler-build", @@ -6088,7 +6172,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", ] [[package]] @@ -6099,7 +6183,7 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.16", "libredox", - "thiserror 2.0.15", + "thiserror 2.0.16", ] [[package]] @@ -6128,7 +6212,7 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78c81d000a2c524133cc00d2f92f019d399e57906c3b7119271a2495354fe895" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "libc", "rustix 1.0.8", "windows 0.61.3", @@ -6136,14 +6220,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata 0.4.10", + "regex-syntax 0.8.6", ] [[package]] @@ -6157,20 +6241,20 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax 0.8.6", ] [[package]] name = "regex-lite" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" +checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" [[package]] name = "regex-syntax" @@ -6180,9 +6264,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "rend" @@ -6239,7 +6323,7 @@ dependencies = [ "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-rustls 0.27.7", "hyper-util", "js-sys", @@ -6310,7 +6394,7 @@ dependencies = [ "futures", "getrandom 0.2.16", "http 1.3.1", - "hyper 1.6.0", + "hyper 1.7.0", "parking_lot 0.11.2", "reqwest", "reqwest-middleware 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6332,7 +6416,7 @@ dependencies = [ "elsa", "event-listener", "futures", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "petgraph 0.7.1", "tracing", @@ -6349,7 +6433,7 @@ dependencies = [ "elsa", "event-listener", "futures", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "petgraph 0.8.2", "tracing", @@ -6391,7 +6475,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", - "cfg-if 1.0.1", + "cfg-if 1.0.3", "getrandom 0.2.16", "libc", "untrusted", @@ -6407,7 +6491,7 @@ dependencies = [ "bytecheck", "bytes", "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "munge", "ptr_meta", "rancor", @@ -6466,7 +6550,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4e310ef0e1b6eeb79169a1171daf9abcb87a2e17c03bee2c4bb100b55c75409f" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "ordered-multimap", "trim-in-place", ] @@ -6508,7 +6592,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys 0.4.15", @@ -6521,7 +6605,7 @@ version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys 0.9.4", @@ -6798,7 +6882,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -6811,7 +6895,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -6906,11 +6990,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itoa", "memchr", "ryu", @@ -6968,7 +7052,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.10.0", + "indexmap 2.11.0", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -6996,7 +7080,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "itoa", "ryu", "serde", @@ -7028,7 +7112,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cpufeatures", "digest", ] @@ -7039,7 +7123,7 @@ version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "cpufeatures", "digest", "sha2-asm", @@ -7380,7 +7464,7 @@ version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "byteorder", "enum-as-inner", "libc", @@ -7408,7 +7492,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -7448,15 +7532,15 @@ checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix 1.0.8", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -7491,11 +7575,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.15" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d76d3f064b981389ecb4b6b7f45a0bf9fdac1d5b9204c7bd6714fecc302850" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.15", + "thiserror-impl 2.0.16", ] [[package]] @@ -7511,9 +7595,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.15" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d29feb33e986b6ea906bd9c3559a856983f92371b3eaa5e83782a351623de0" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -7526,7 +7610,7 @@ version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", ] [[package]] @@ -7581,9 +7665,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -7703,7 +7787,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" dependencies = [ "foldhash", - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 1.0.0", "toml_datetime 0.7.0", @@ -7746,7 +7830,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -7756,11 +7840,11 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.23.3" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17d3b47e6b7a040216ae5302712c94d1cf88c95b47efa80e2c59ce96c878267e" +checksum = "7211ff1b8f0d3adae1663b7da9ffe396eabe1ca25f0b0bee42b0da29a9ddce93" dependencies = [ - "indexmap 2.10.0", + "indexmap 2.11.0", "serde", "serde_spanned 1.0.0", "toml_datetime 0.7.0", @@ -7811,7 +7895,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "bytes", "futures-util", "http 1.3.1", @@ -8033,9 +8117,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -8134,7 +8218,7 @@ dependencies = [ "fs-err", "globwalk", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "toml 0.9.5", "tracing", "walkdir", @@ -8158,7 +8242,7 @@ name = "uv-configuration" version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", "either", "fs-err", "rayon", @@ -8167,7 +8251,7 @@ dependencies = [ "serde", "serde-untagged", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "url", "uv-auth", @@ -8204,7 +8288,7 @@ dependencies = [ "rkyv", "serde", "smallvec", - "thiserror 2.0.15", + "thiserror 2.0.16", "uv-cache-key", "uv-normalize", "uv-pep440", @@ -8218,7 +8302,7 @@ version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ "arcstr", - "bitflags 2.9.2", + "bitflags 2.9.3", "fs-err", "http 1.3.1", "itertools 0.14.0", @@ -8230,7 +8314,7 @@ dependencies = [ "rustc-hash", "serde", "serde_json", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "url", "uv-auth", @@ -8285,7 +8369,7 @@ dependencies = [ "fs-err", "reqwest", "reqwest-middleware 0.4.2 (git+https://github.com/astral-sh/reqwest-middleware?rev=ad8b9d332d1773fde8b4cd008486de5973e0a3f8)", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -8305,7 +8389,7 @@ version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "tracing", "url", "uv-redacted", @@ -8363,14 +8447,14 @@ source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f092 dependencies = [ "arcstr", "boxcar", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "regex", "rustc-hash", "schemars 1.0.4", "serde", "smallvec", - "thiserror 2.0.15", + "thiserror 2.0.16", "unicode-width 0.2.1", "url", "uv-cache-key", @@ -8390,7 +8474,7 @@ dependencies = [ "rkyv", "rustc-hash", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "uv-small-str", ] @@ -8400,7 +8484,7 @@ version = "0.0.1" source = "git+https://github.com/astral-sh/uv?tag=0.8.5#ce37286814dbb802c422f0926487cfab7aefd2b7" dependencies = [ "hashbrown 0.15.5", - "indexmap 2.10.0", + "indexmap 2.11.0", "itertools 0.14.0", "jiff", "mailparse", @@ -8410,8 +8494,8 @@ dependencies = [ "rustc-hash", "serde", "serde-untagged", - "thiserror 2.0.15", - "toml_edit 0.23.3", + "thiserror 2.0.16", + "toml_edit 0.23.4", "tracing", "url", "uv-cache-key", @@ -8596,7 +8680,7 @@ version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "once_cell", "rustversion", "wasm-bindgen-macro", @@ -8622,7 +8706,7 @@ version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ - "cfg-if 1.0.1", + "cfg-if 1.0.3", "js-sys", "once_cell", "wasm-bindgen", @@ -8762,11 +8846,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -9173,9 +9257,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -9201,7 +9285,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.3", ] [[package]] @@ -9403,6 +9487,20 @@ name = "zeroize" version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] name = "zerotrie" @@ -9446,7 +9544,7 @@ dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.10.0", + "indexmap 2.11.0", "memchr", "time", "zopfli", @@ -9454,14 +9552,14 @@ dependencies = [ [[package]] name = "zip" -version = "4.3.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aed4ac33e8eb078c89e6cbb1d5c4c7703ec6d299fc3e7c3695af8f8b423468b" +checksum = "8835eb39822904d39cb19465de1159e05d371973f0c6df3a365ad50565ddc8b9" dependencies = [ "arbitrary", "crc32fast", "flate2", - "indexmap 2.10.0", + "indexmap 2.11.0", "memchr", "zopfli", ] diff --git a/py-pixi-build-backend/Cargo.toml b/py-pixi-build-backend/Cargo.toml index 9a65d556..596b2608 100644 --- a/py-pixi-build-backend/Cargo.toml +++ b/py-pixi-build-backend/Cargo.toml @@ -29,6 +29,7 @@ pixi_build_types = "*" pixi_manifest = "*" pixi_spec = "*" pixi_build_type_conversions = "*" +pixi_consts = "*" # Core serialization and async support serde = { version = "1.0", features = ["derive"] } @@ -75,4 +76,11 @@ pixi_manifest = { git = "https://github.com/prefix-dev/pixi", branch = "main" } pixi_spec = { git = "https://github.com/prefix-dev/pixi", branch = "main" } pixi_build_type_conversions = { git = "https://github.com/prefix-dev/pixi", branch = "main" } +# Local path overrides for development +#pixi_build_types = { path = "../../pixi_build_types/crates/pixi_build_types" } +#pixi_consts = { path = "../../pixi/crates/pixi_consts" } +#pixi_manifest = { path = "../../pixi/crates/pixi_manifest" } +#pixi_spec = { path = "../../pixi/crates/pixi_spec" } +#pixi_build_type_conversions = { path = "../../pixi/crates/pixi_build_type_conversions" } + rattler-build = { git = "https://github.com/prefix-dev/rattler-build", branch = "main" } diff --git a/py-pixi-build-backend/pixi.toml b/py-pixi-build-backend/pixi.toml index 3e2915f2..6594cc6f 100644 --- a/py-pixi-build-backend/pixi.toml +++ b/py-pixi-build-backend/pixi.toml @@ -10,7 +10,7 @@ preview = ["pixi-build"] [package] name = "py-pixi-build-backend" -version = "0.1.0" +version = "0.1.2" [package.build.backend] name = "pixi-build-python" @@ -28,7 +28,7 @@ maturin = "*" [package.run-dependencies] typing-extensions = "*" -pixi-build-api-version = ">=1,<2" +pixi-build-api-version = ">=2,<3" [activation.env] PIP_REQUIRE_VIRTUALENV = "false" diff --git a/py-pixi-build-backend/pixi_build_backend/types/__init__.py b/py-pixi-build-backend/pixi_build_backend/types/__init__.py index e69de29b..c419a42c 100644 --- a/py-pixi-build-backend/pixi_build_backend/types/__init__.py +++ b/py-pixi-build-backend/pixi_build_backend/types/__init__.py @@ -0,0 +1,2 @@ +# Re-export all the types +from .metadata_provider import MetadataProvider as MetadataProvider \ No newline at end of file diff --git a/py-pixi-build-backend/pixi_build_backend/types/generated_recipe.py b/py-pixi-build-backend/pixi_build_backend/types/generated_recipe.py index 4ffed510..01366f86 100644 --- a/py-pixi-build-backend/pixi_build_backend/types/generated_recipe.py +++ b/py-pixi-build-backend/pixi_build_backend/types/generated_recipe.py @@ -4,6 +4,7 @@ from pixi_build_backend.types.platform import Platform from pixi_build_backend.types.project_model import ProjectModelV1 from pixi_build_backend.types.python_params import PythonParams +from pixi_build_backend.types.metadata_provider import MetadataProvider class GeneratedRecipe: @@ -15,10 +16,13 @@ def __init__(self) -> None: self._inner = PyGeneratedRecipe() @classmethod - def from_model(cls, model: ProjectModelV1) -> "GeneratedRecipe": + def from_model(cls, model: ProjectModelV1, metadata_provider: Optional[MetadataProvider] = None) -> "GeneratedRecipe": """Create a GeneratedRecipe from a ProjectModelV1.""" instance = cls() - instance._inner = PyGeneratedRecipe().from_model(model._inner) + if metadata_provider is not None: + instance._inner = PyGeneratedRecipe().from_model_with_provider(model._inner, metadata_provider) + else: + instance._inner = PyGeneratedRecipe().from_model(model._inner) return instance @property diff --git a/py-pixi-build-backend/pixi_build_backend/types/metadata_provider.py b/py-pixi-build-backend/pixi_build_backend/types/metadata_provider.py new file mode 100644 index 00000000..4062ff78 --- /dev/null +++ b/py-pixi-build-backend/pixi_build_backend/types/metadata_provider.py @@ -0,0 +1,50 @@ +""" +Python metadata provider types and protocols. +""" + +from typing import Optional, Protocol + + +class MetadataProvider(Protocol): + """ + Protocol for providing package metadata. + + This protocol defines the interface that metadata providers must implement + to supply package metadata like name, version, description, etc. + """ + + def name(self) -> Optional[str]: + """Return the package name or None if not available.""" + return None + + def version(self) -> Optional[str]: + """Return the package version or None if not available.""" + return None + + def homepage(self) -> Optional[str]: + """Return the package homepage URL or None if not available.""" + return None + + def license(self) -> Optional[str]: + """Return the package license or None if not available.""" + return None + + def license_file(self) -> Optional[str]: + """Return the path to the license file or None if not available.""" + return None + + def summary(self) -> Optional[str]: + """Return a short package summary or None if not available.""" + return None + + def description(self) -> Optional[str]: + """Return the package description or None if not available.""" + return None + + def documentation(self) -> Optional[str]: + """Return the documentation URL or None if not available.""" + return None + + def repository(self) -> Optional[str]: + """Return the repository URL or None if not available.""" + return None \ No newline at end of file diff --git a/py-pixi-build-backend/pixi_build_backend/types/project_model.py b/py-pixi-build-backend/pixi_build_backend/types/project_model.py index 0d1201b1..5a3965cd 100644 --- a/py-pixi-build-backend/pixi_build_backend/types/project_model.py +++ b/py-pixi-build-backend/pixi_build_backend/types/project_model.py @@ -9,7 +9,7 @@ class ProjectModelV1: _inner: PyProjectModelV1 - def __init__(self, name: str, version: Optional[str] = None): + def __init__(self, name: Optional[str] = None, version: Optional[str] = None): self._inner = PyProjectModelV1(name, version) @property diff --git a/py-pixi-build-backend/src/lib.rs b/py-pixi-build-backend/src/lib.rs index b7e60a7b..be16efcb 100644 --- a/py-pixi-build-backend/src/lib.rs +++ b/py-pixi-build-backend/src/lib.rs @@ -79,6 +79,7 @@ fn pixi_build_backend(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; + m.add_class::()?; // Add recipe_stage0 types m.add_class::()?; diff --git a/py-pixi-build-backend/src/types/generated_recipe.rs b/py-pixi-build-backend/src/types/generated_recipe.rs index fd8b677b..027d61fc 100644 --- a/py-pixi-build-backend/src/types/generated_recipe.rs +++ b/py-pixi-build-backend/src/types/generated_recipe.rs @@ -16,7 +16,8 @@ use recipe_stage0::recipe::IntermediateRecipe; use crate::{ create_py_wrap, recipe_stage0::recipe::PyIntermediateRecipe, - types::{PyBackendConfig, PyPlatform, PyProjectModelV1, PyPythonParams}, + types::{PyBackendConfig, PyMetadataProvider, PyPlatform, PyProjectModelV1, PyPythonParams}, + types::metadata_provider::get_input_globs_from_provider, }; create_py_wrap!(PyVecString, Vec, |v: &Vec, @@ -80,6 +81,47 @@ impl PyGeneratedRecipe { build_input_globs: py_build_globs, }) } + + #[staticmethod] + pub fn from_model_with_provider(py: Python, model: PyProjectModelV1, metadata_provider: PyObject) -> PyResult { + let mut provider = PyMetadataProvider::new(metadata_provider.clone()); + let generated_recipe = + GeneratedRecipe::from_model(model.inner.clone(), &mut provider) + .map_err(|e| PyErr::new::(e.to_string()))?; + + // Get additional input globs from the metadata provider if available + let mut metadata_input_globs = generated_recipe.metadata_input_globs; + let provider_globs = get_input_globs_from_provider(&metadata_provider); + metadata_input_globs.extend(provider_globs); + + let py_recipe = Py::new( + py, + PyIntermediateRecipe::from_intermediate_recipe(generated_recipe.recipe, py), + )?; + let py_metadata_globs = Py::new( + py, + PyVecString::from( + metadata_input_globs + .into_iter() + .collect::>(), + ), + )?; + let py_build_globs = Py::new( + py, + PyVecString::from( + generated_recipe + .build_input_globs + .into_iter() + .collect::>(), + ), + )?; + + Ok(PyGeneratedRecipe { + recipe: py_recipe, + metadata_input_globs: py_metadata_globs, + build_input_globs: py_build_globs, + }) + } } impl PyGeneratedRecipe { diff --git a/py-pixi-build-backend/src/types/metadata_provider.rs b/py-pixi-build-backend/src/types/metadata_provider.rs new file mode 100644 index 00000000..db7d4537 --- /dev/null +++ b/py-pixi-build-backend/src/types/metadata_provider.rs @@ -0,0 +1,185 @@ +use std::collections::BTreeSet; + +use miette::Diagnostic; +use pixi_build_backend::generated_recipe::MetadataProvider; +use pyo3::{ + PyErr, PyObject, Python, + pyclass, pymethods, +}; +use rattler_conda_types::{ParseVersionError, Version}; +use std::str::FromStr; +use thiserror::Error; + +/// Error type for Python metadata provider operations +#[derive(Debug, Error, Diagnostic)] +pub enum PyMetadataProviderError { + #[error("Python metadata provider error: {0}")] + Python(String), + #[error("Failed to parse version: {0}")] + ParseVersion(#[from] ParseVersionError), +} + +impl From for PyMetadataProviderError { + fn from(err: PyErr) -> Self { + PyMetadataProviderError::Python(err.to_string()) + } +} + +/// A Rust wrapper around a Python object that implements the MetadataProvider protocol +#[pyclass] +#[derive(Clone)] +pub struct PyMetadataProvider { + inner: PyObject, +} + +#[pymethods] +impl PyMetadataProvider { + #[new] + pub fn new(provider: PyObject) -> Self { + Self { inner: provider } + } +} + +impl MetadataProvider for PyMetadataProvider { + type Error = PyMetadataProviderError; + + fn name(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "name")?; + + if result.is_none(py) { + Ok(None) + } else { + let name: String = result.extract(py)?; + Ok(Some(name)) + } + }) + } + + fn version(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "version")?; + + if result.is_none(py) { + Ok(None) + } else { + let version_str: String = result.extract(py)?; + let version = Version::from_str(&version_str)?; + Ok(Some(version)) + } + }) + } + + fn homepage(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "homepage")?; + + if result.is_none(py) { + Ok(None) + } else { + let homepage: String = result.extract(py)?; + Ok(Some(homepage)) + } + }) + } + + fn license(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "license")?; + + if result.is_none(py) { + Ok(None) + } else { + let license: String = result.extract(py)?; + Ok(Some(license)) + } + }) + } + + fn license_file(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "license_file")?; + + if result.is_none(py) { + Ok(None) + } else { + let license_file: String = result.extract(py)?; + Ok(Some(license_file)) + } + }) + } + + fn summary(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "summary")?; + + if result.is_none(py) { + Ok(None) + } else { + let summary: String = result.extract(py)?; + Ok(Some(summary)) + } + }) + } + + fn description(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "description")?; + + if result.is_none(py) { + Ok(None) + } else { + let description: String = result.extract(py)?; + Ok(Some(description)) + } + }) + } + + fn documentation(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "documentation")?; + + if result.is_none(py) { + Ok(None) + } else { + let documentation: String = result.extract(py)?; + Ok(Some(documentation)) + } + }) + } + + fn repository(&mut self) -> Result, Self::Error> { + Python::with_gil(|py| { + let result = self.inner.call_method0(py, "repository")?; + + if result.is_none(py) { + Ok(None) + } else { + let repository: String = result.extract(py)?; + Ok(Some(repository)) + } + }) + } +} + +/// Helper function to get input globs from a Python metadata provider +/// if it supports the input_globs method (optional) +pub fn get_input_globs_from_provider(provider: &PyObject) -> BTreeSet { + Python::with_gil(|py| { + // Try to call input_globs method if it exists + match provider.call_method0(py, "input_globs") { + Ok(result) => { + // Try to extract as a list of strings + if let Ok(globs_list) = result.extract::>(py) { + globs_list.into_iter().collect() + } else { + BTreeSet::new() + } + } + Err(_) => { + // Method doesn't exist or failed, return empty set + BTreeSet::new() + } + } + }) +} \ No newline at end of file diff --git a/py-pixi-build-backend/src/types/mod.rs b/py-pixi-build-backend/src/types/mod.rs index 04d0832a..19c56b37 100644 --- a/py-pixi-build-backend/src/types/mod.rs +++ b/py-pixi-build-backend/src/types/mod.rs @@ -1,10 +1,12 @@ mod config; mod generated_recipe; +mod metadata_provider; mod platform; mod project_model; mod python_params; pub use generated_recipe::{PyGenerateRecipe, PyGeneratedRecipe, PyVecString}; +pub use metadata_provider::PyMetadataProvider; pub use platform::PyPlatform; pub use project_model::PyProjectModelV1; diff --git a/py-pixi-build-backend/src/types/project_model.rs b/py-pixi-build-backend/src/types/project_model.rs index d0e88fba..3b2551d7 100644 --- a/py-pixi-build-backend/src/types/project_model.rs +++ b/py-pixi-build-backend/src/types/project_model.rs @@ -14,7 +14,7 @@ pub struct PyProjectModelV1 { impl PyProjectModelV1 { #[new] #[pyo3(signature = (name, version=None))] - pub fn new(name: String, version: Option) -> Self { + pub fn new(name: Option, version: Option) -> Self { PyProjectModelV1 { inner: ProjectModelV1 { name, @@ -36,8 +36,8 @@ impl PyProjectModelV1 { } #[getter] - pub fn name(&self) -> &str { - &self.inner.name + pub fn name(&self) -> Option<&String> { + self.inner.name.as_ref() } #[getter] diff --git a/py-pixi-build-backend/tests/unit/__snapshots__/test_project_model.ambr b/py-pixi-build-backend/tests/unit/__snapshots__/test_project_model.ambr index 90abd465..a0ed1118 100644 --- a/py-pixi-build-backend/tests/unit/__snapshots__/test_project_model.ambr +++ b/py-pixi-build-backend/tests/unit/__snapshots__/test_project_model.ambr @@ -1,4 +1,4 @@ # serializer version: 1 # name: test_project_model_initialization - 'ProjectModelV1 { name: "test_project", version: Some(Version { version: [[0], [1], [0], [0]], local: [] }), description: None, authors: None, license: None, license_file: None, readme: None, homepage: None, repository: None, documentation: None, targets: None }' + 'ProjectModelV1 { name: Some("test_project"), version: Some(Version { version: [[0], [1], [0], [0]], local: [] }), description: None, authors: None, license: None, license_file: None, readme: None, homepage: None, repository: None, documentation: None, targets: None }' # --- diff --git a/recipe/pixi-build-api-version/recipe.yaml b/recipe/pixi-build-api-version/recipe.yaml index d66ce833..ef79fea9 100644 --- a/recipe/pixi-build-api-version/recipe.yaml +++ b/recipe/pixi-build-api-version/recipe.yaml @@ -1,7 +1,7 @@ # yaml-language-server: $schema=https://raw.githubusercontent.com/prefix-dev/recipe-format/main/schema.json context: name: pixi-build-api-version - version: "1" + version: "2" package: name: ${{ name }} diff --git a/recipe/pixi-build-ros/recipe.yaml b/recipe/pixi-build-ros/recipe.yaml index af9ce120..835b7113 100644 --- a/recipe/pixi-build-ros/recipe.yaml +++ b/recipe/pixi-build-ros/recipe.yaml @@ -22,7 +22,6 @@ requirements: - pyyaml - typing-extensions - py-pixi-build-backend - - pixi-build-api-version >=1,<2 build: script: diff --git a/recipe/py-pixi-build-backend/recipe.yaml b/recipe/py-pixi-build-backend/recipe.yaml index 45d84069..6b456a7a 100644 --- a/recipe/py-pixi-build-backend/recipe.yaml +++ b/recipe/py-pixi-build-backend/recipe.yaml @@ -26,6 +26,7 @@ requirements: run: - python >=3.8 + - pixi-build-api-version >=2,<3 ignore_run_exports: from_package: - cross-python_${{ target_platform }}