diff --git a/Cargo.lock b/Cargo.lock index 78c7db45..fff76049 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -139,7 +139,7 @@ checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -161,7 +161,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -172,7 +172,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -367,6 +367,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "boxcar" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225450ee9328e1e828319b48a89726cffc1b0ad26fd9211ad435de9fa376acae" +dependencies = [ + "loom", +] + [[package]] name = "bumpalo" version = "3.14.0" @@ -465,7 +474,7 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -546,7 +555,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -585,7 +594,7 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "unicode-width", + "unicode-width 0.1.11", "windows-sys 0.52.0", ] @@ -748,7 +757,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.10.0", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -759,7 +768,7 @@ checksum = "1d1545d67a2149e1d93b7e5c7752dce5a7426eb5d1357ddcfd89336b94444f77" dependencies = [ "darling_core", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -1038,7 +1047,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -1077,6 +1086,19 @@ dependencies = [ "slab", ] +[[package]] +name = "generator" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +dependencies = [ + "cfg-if", + "libc", + "log", + "rustversion", + "windows 0.58.0", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -1128,9 +1150,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" [[package]] name = "heck" @@ -1335,7 +1357,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -1395,12 +1417,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.15.2", "serde", ] @@ -1414,7 +1436,7 @@ dependencies = [ "instant", "number_prefix", "portable-atomic", - "unicode-width", + "unicode-width 0.1.11", ] [[package]] @@ -1576,6 +1598,19 @@ version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +[[package]] +name = "loom" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", +] + [[package]] name = "matchers" version = "0.1.0" @@ -1634,7 +1669,7 @@ dependencies = [ "miette-derive 5.10.0", "once_cell", "thiserror", - "unicode-width", + "unicode-width 0.1.11", ] [[package]] @@ -1654,7 +1689,7 @@ dependencies = [ "terminal_size", "textwrap", "thiserror", - "unicode-width", + "unicode-width 0.1.11", ] [[package]] @@ -1665,7 +1700,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -1676,7 +1711,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -1775,9 +1810,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "oorandom" @@ -1808,7 +1843,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -1934,30 +1969,37 @@ checksum = "36bae92c60fa2398ce4678b98b2c4b5a7c61099961ca1fa305aec04a9ad28922" [[package]] name = "pep440_rs" -version = "0.4.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c29f9c43de378b4e4e0cd7dbcce0e5cfb80443de8c05620368b2948bc936a1" +checksum = "31095ca1f396e3de32745f42b20deef7bc09077f918b085307e8eab6ddd8fb9c" dependencies = [ "once_cell", - "regex", "serde", - "unicode-width", + "unicode-width 0.2.0", + "unscanny", + "version-ranges", ] [[package]] name = "pep508_rs" -version = "0.3.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "910c513bea0f4f833122321c0f20e8c704e01de98692f6989c2ec21f43d88b1e" +checksum = "faee7227064121fcadcd2ff788ea26f0d8f2bd23a0574da11eca23bc935bcc05" dependencies = [ + "boxcar", + "indexmap 2.7.1", + "itertools 0.13.0", "once_cell", "pep440_rs", "regex", + "rustc-hash", "serde", + "smallvec", "thiserror", - "tracing", - "unicode-width", + "unicode-width 0.2.0", "url", + "urlencoding", + "version-ranges", ] [[package]] @@ -1997,7 +2039,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -2018,7 +2060,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.2.6", + "indexmap 2.7.1", ] [[package]] @@ -2038,7 +2080,7 @@ checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -2107,23 +2149,24 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" dependencies = [ "unicode-ident", ] [[package]] name = "pyproject-toml" -version = "0.9.0" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95c3dd745f99aa3c554b7bb00859f7d18c2f1d6afd749ccc86d60b61e702abd9" +checksum = "643af57c3f36ba90a8b53e972727d8092f7408a9ebfbaf4c3d2c17b07c58d835" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.7.1", "pep440_rs", "pep508_rs", "serde", + "thiserror", "toml", ] @@ -2216,7 +2259,7 @@ dependencies = [ "http", "http-cache-semantics", "include_dir", - "indexmap 2.2.6", + "indexmap 2.7.1", "insta", "itertools 0.12.1", "miette 7.2.0", @@ -2303,7 +2346,7 @@ checksum = "767be24c0da52e7448d495b8d162506a9aa125426651d547d545d6c2b4b65b62" dependencies = [ "cfg-if", "rustix", - "windows", + "windows 0.52.0", ] [[package]] @@ -2457,7 +2500,7 @@ dependencies = [ "console", "dirs", "fs-err", - "indexmap 2.2.6", + "indexmap 2.7.1", "indicatif", "itertools 0.12.1", "miette 7.2.0", @@ -2510,7 +2553,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.48", + "syn 2.0.98", "unicode-ident", ] @@ -2520,6 +2563,12 @@ version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustc_version" version = "0.4.0" @@ -2613,6 +2662,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -2650,22 +2705,22 @@ checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -2691,9 +2746,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -2720,7 +2775,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.7.1", "serde", "serde_derive", "serde_json", @@ -2737,7 +2792,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -2909,9 +2964,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" dependencies = [ "proc-macro2", "quote", @@ -2936,7 +2991,7 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a327282c4f64f6dc37e3bba4c2b6842cc3a992f204fa58d917696a89f691e5f6" dependencies = [ - "unicode-width", + "unicode-width 0.1.11", ] [[package]] @@ -3001,27 +3056,27 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" dependencies = [ "smawk", "unicode-linebreak", - "unicode-width", + "unicode-width 0.1.11", ] [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -3122,7 +3177,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -3188,9 +3243,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.10" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a9aad4a3066010876e8dcf5a8a06e70a558751117a145c6ce2b82c2e2054290" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -3200,20 +3255,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.4" +version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ffdf896f8daaabf9b66ba8e77ea1ed5ed0f72821b398aba62352e95062951" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.7.1", "serde", "serde_spanned", "toml_datetime", @@ -3284,7 +3339,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", ] [[package]] @@ -3400,6 +3455,18 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +[[package]] +name = "unicode-width" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" + +[[package]] +name = "unscanny" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9df2af067a7953e9c3831320f35c1cc0600c30d44d9f7a12b01db1cd88d6b47" + [[package]] name = "untrusted" version = "0.9.0" @@ -3418,6 +3485,12 @@ dependencies = [ "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf8-width" version = "0.1.7" @@ -3442,6 +3515,15 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" +[[package]] +name = "version-ranges" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8d079415ceb2be83fc355adbadafe401307d5c309c7e6ade6638e6f9f42f42d" +dependencies = [ + "smallvec", +] + [[package]] name = "version_check" version = "0.9.4" @@ -3494,7 +3576,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", "wasm-bindgen-shared", ] @@ -3528,7 +3610,7 @@ checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.98", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3620,8 +3702,18 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ - "windows-core", - "windows-targets 0.52.0", + "windows-core 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +dependencies = [ + "windows-core 0.58.0", + "windows-targets 0.52.6", ] [[package]] @@ -3630,7 +3722,61 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-interface" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.98", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", ] [[package]] @@ -3648,7 +3794,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -3668,17 +3814,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -3689,9 +3836,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -3701,9 +3848,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -3713,9 +3860,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -3725,9 +3878,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -3737,9 +3890,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -3749,9 +3902,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -3761,15 +3914,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.39" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5389a154b01683d28c77f8f68f49dea75f0a4da32557a58f68ee51ebba472d29" +checksum = "59690dea168f2198d1a3b0cac23b8063efcd11012f10ae4698f284808c8ef603" dependencies = [ "memchr", ] diff --git a/crates/rattler_installs_packages/Cargo.toml b/crates/rattler_installs_packages/Cargo.toml index d0c4403e..00b62710 100644 --- a/crates/rattler_installs_packages/Cargo.toml +++ b/crates/rattler_installs_packages/Cargo.toml @@ -2,7 +2,10 @@ name = "rattler_installs_packages" version.workspace = true edition.workspace = true -authors = ["Bas Zalmstra ", "Tim de Jager "] +authors = [ + "Bas Zalmstra ", + "Tim de Jager ", +] description = "Datastructures and algorithms to interact with Python packaging ecosystem" categories.workspace = true homepage.workspace = true @@ -30,7 +33,10 @@ futures = "0.3.30" html-escape = "0.2.13" # reqwest needs an update to 1.0.0 http = "1.1.0" -http-cache-semantics = { version = "2.1.0", default-features = false, features = ["serde", "reqwest"] } +http-cache-semantics = { version = "2.1.0", default-features = false, features = [ + "serde", + "reqwest", +] } include_dir = "0.7.3" indexmap = { version = "2.2.6", features = ["serde"] } itertools = "0.12.1" @@ -39,12 +45,15 @@ mime = "0.3.17" once_cell = "1.19.0" parking_lot = "0.12.1" peg = "0.8.2" -pep440_rs = { version = "0.4.0", features = ["serde"] } -pep508_rs = { version = "0.3.0", features = ["serde"] } +pep440_rs = { version = "0.7.3" } +pep508_rs = { version = "0.9.2" } pin-project-lite = "0.2.14" rattler_digest = { version = "0.19.3", features = ["serde"] } regex = "1.10.4" -reqwest = { version = "0.12.3", default-features = false, features = ["json", "stream"] } +reqwest = { version = "0.12.3", default-features = false, features = [ + "json", + "stream", +] } reqwest-middleware = "0.4.0" serde = "1.0.198" serde_json = "1.0.116" @@ -55,7 +64,9 @@ thiserror = "1.0.58" tl = "0.7.8" tokio = { version = "1.37.0", features = ["process", "rt-multi-thread"] } tokio-util = { version = "0.7.10", features = ["compat"] } -tracing = { version = "0.1.40", default-features = false, features = ["attributes"] } +tracing = { version = "0.1.40", default-features = false, features = [ + "attributes", +] } url = { version = "2.5.0", features = ["serde"] } zip = "0.6.6" resolvo = { version = "0.4.0", default-features = false, features = ["tokio"] } @@ -63,10 +74,13 @@ pathdiff = "0.2.1" async_zip = { version = "0.0.16", features = ["tokio", "deflate"] } tar = "0.4.40" flate2 = "1.0.28" -pyproject-toml = "0.9.0" +pyproject-toml = "0.13.0" async-once-cell = "0.5.3" configparser = "3.0.4" -cacache = { version = "13.0.0", default-features = false, features = ["tokio-runtime", "mmap"] } +cacache = { version = "13.0.0", default-features = false, features = [ + "tokio-runtime", + "mmap", +] } async-recursion = "1.1.0" fs-err = "2.11.0" fs_extra = "1.3.0" diff --git a/crates/rattler_installs_packages/src/resolve/dependency_provider.rs b/crates/rattler_installs_packages/src/resolve/dependency_provider.rs index 0a5a4f7a..c8939a44 100644 --- a/crates/rattler_installs_packages/src/resolve/dependency_provider.rs +++ b/crates/rattler_installs_packages/src/resolve/dependency_provider.rs @@ -7,17 +7,15 @@ use crate::{ artifacts::{SDist, Wheel}, index::{ArtifactRequest, PackageDb}, python_env::WheelTags, - types::{ - ArtifactFromBytes, ArtifactInfo, ArtifactName, Extra, NormalizedPackageName, PackageName, - }, + types::{ArtifactFromBytes, ArtifactInfo, ArtifactName, Extra, NormalizedPackageName}, wheel_builder::WheelBuilder, }; use elsa::FrozenMap; use itertools::Itertools; use miette::{Diagnostic, MietteDiagnostic}; use parking_lot::Mutex; -use pep440_rs::{Operator, VersionSpecifier, VersionSpecifiers}; -use pep508_rs::{MarkerEnvironment, Requirement, VersionOrUrl}; +use pep440_rs::{Operator, VersionPattern, VersionSpecifier, VersionSpecifiers}; +use pep508_rs::{ExtraName, MarkerEnvironment, Requirement, VerbatimUrl, VersionOrUrl}; use resolvo::{ Candidates, Dependencies, DependencyProvider, KnownDependencies, NameId, Pool, SolvableId, SolverCache, @@ -444,11 +442,16 @@ impl<'p> DependencyProvider for &'p PypiDepende let specifiers = match package_version { PypiVersion::Version { version, .. } => { VersionOrUrl::VersionSpecifier(VersionSpecifiers::from_iter([ - VersionSpecifier::new(Operator::ExactEqual, version.clone(), false) - .expect("failed to construct equality version specifier"), + VersionSpecifier::from_pattern( + Operator::ExactEqual, + VersionPattern::verbatim(version.clone()), + ) + .expect("failed to construct equality version specifier"), ])) } - PypiVersion::Url(url_version) => VersionOrUrl::Url(url_version.clone()), + PypiVersion::Url(url_version) => { + VersionOrUrl::Url(VerbatimUrl::from(url_version.clone())) + } }; let version_set_id = self.pool.intern_version_set( @@ -556,11 +559,16 @@ impl<'p> DependencyProvider for &'p PypiDepende let specifiers = match package_version { PypiVersion::Version { version, .. } => { VersionOrUrl::VersionSpecifier(VersionSpecifiers::from_iter([ - VersionSpecifier::new(Operator::ExactEqual, version.clone(), false) - .expect("failed to construct equality version specifier"), + VersionSpecifier::from_pattern( + Operator::ExactEqual, + VersionPattern::verbatim(version.clone()), + ) + .expect("failed to construct equality version specifier"), ])) } - PypiVersion::Url(url_version) => VersionOrUrl::Url(url_version.clone()), + PypiVersion::Url(url_version) => { + VersionOrUrl::Url(VerbatimUrl::from_url(url_version.clone())) + } }; let version_set_id = self.pool.intern_version_set( extra_name_id, @@ -576,14 +584,13 @@ impl<'p> DependencyProvider for &'p PypiDepende let extras = package_name .extra() .into_iter() - .map(|e| e.as_str()) - .collect::>(); + .map(|e| ExtraName::from_str(e.as_str())) + .collect::, _>>() + .expect("invalid extra names"); for requirement in metadata.requires_dist { // Evaluate environment markers - if let Some(markers) = requirement.marker.as_ref() { - if !markers.evaluate(&self.markers, &extras) { - continue; - } + if !requirement.marker.evaluate(&self.markers, &extras) { + continue; } // Add the dependency to the pool @@ -593,7 +600,6 @@ impl<'p> DependencyProvider for &'p PypiDepende extras, .. } = requirement; - let name = PackageName::from_str(&name).expect("invalid package name"); let dependency_name_id = self .pool .intern_package_name(PypiPackageName::Base(name.clone().into())); @@ -614,8 +620,8 @@ impl<'p> DependencyProvider for &'p PypiDepende dependencies.requirements.push(version_set_id); // Add a unique package for each extra/optional dependency - for extra in extras.into_iter().flatten() { - let extra = Extra::from_str(&extra).expect("invalid extra name"); + for extra in extras.into_iter() { + let extra = Extra::from_str(extra.as_ref()).expect("invalid extra name"); let dependency_name_id = self .pool .intern_package_name(PypiPackageName::Extra(name.clone().into(), extra)); diff --git a/crates/rattler_installs_packages/src/resolve/pypi_version_types.rs b/crates/rattler_installs_packages/src/resolve/pypi_version_types.rs index 238c6e04..2c6e5cb2 100644 --- a/crates/rattler_installs_packages/src/resolve/pypi_version_types.rs +++ b/crates/rattler_installs_packages/src/resolve/pypi_version_types.rs @@ -104,7 +104,7 @@ impl VersionSet for PypiVersionSet { fn contains(&self, v: &Self::V) -> bool { match (self.spec.as_ref(), v) { - (Some(VersionOrUrl::Url(a)), PypiVersion::Url(b)) => a == b, + (Some(VersionOrUrl::Url(a)), PypiVersion::Url(b)) => &a.to_url() == b, ( Some(VersionOrUrl::VersionSpecifier(spec)), PypiVersion::Version { diff --git a/crates/rattler_installs_packages/src/resolve/solve.rs b/crates/rattler_installs_packages/src/resolve/solve.rs index a46f5124..40678f13 100644 --- a/crates/rattler_installs_packages/src/resolve/solve.rs +++ b/crates/rattler_installs_packages/src/resolve/solve.rs @@ -2,7 +2,6 @@ use crate::index::PackageDb; use crate::python_env::WheelTags; use crate::resolve::dependency_provider::PypiDependencyProvider; use crate::resolve::pypi_version_types::PypiVersion; -use crate::types::PackageName; use crate::wheel_builder::WheelBuilder; use crate::{types::ArtifactInfo, types::Extra, types::NormalizedPackageName}; use elsa::FrozenMap; @@ -108,8 +107,7 @@ fn resolve_inner<'r>( .. } in requirements { - let name = PackageName::from_str(name).expect("invalid package name"); - let pypi_name = PypiPackageName::Base(name.clone().into()); + let pypi_name = PypiPackageName::Base(NormalizedPackageName::from(name.clone())); let dependency_package_name = pool.intern_package_name(pypi_name.clone()); let version_set_id = pool.intern_version_set( dependency_package_name, @@ -121,10 +119,11 @@ fn resolve_inner<'r>( name_to_url.insert(pypi_name.base().clone(), url.clone().as_str().to_owned()); } - for extra in extras.iter().flatten() { - let extra: Extra = extra.parse().expect("invalid extra"); - let dependency_package_name = pool - .intern_package_name(PypiPackageName::Extra(name.clone().into(), extra.clone())); + for extra in extras.iter() { + let dependency_package_name = pool.intern_package_name(PypiPackageName::Extra( + name.clone().into(), + Extra::from_str(extra.as_ref()).expect("invalid extra"), + )); let version_set_id = pool.intern_version_set( dependency_package_name, PypiVersionSet::from_spec(version_or_url.clone(), &options.pre_release_resolution), diff --git a/crates/rattler_installs_packages/src/resolve/solve_options.rs b/crates/rattler_installs_packages/src/resolve/solve_options.rs index 306cb8ac..a2b28f39 100644 --- a/crates/rattler_installs_packages/src/resolve/solve_options.rs +++ b/crates/rattler_installs_packages/src/resolve/solve_options.rs @@ -2,12 +2,10 @@ use crate::{python_env::PythonLocation, types::NormalizedPackageName}; use pep508_rs::{Requirement, VersionOrUrl}; +use std::collections::HashMap; use std::sync::Arc; -use std::{collections::HashMap, str::FromStr}; use tokio::sync::Semaphore; -use crate::types::PackageName; - use super::PinnedPackage; /// Defines how to handle sdists during resolution. @@ -156,8 +154,8 @@ impl PreReleaseResolution { match &spec.version_or_url { Some(VersionOrUrl::VersionSpecifier(v)) => { if v.iter().any(|s| s.version().any_prerelease()) { - let name = PackageName::from_str(&spec.name).expect("invalid package name"); - allow_names.push(name.as_str().to_string()); + let name = spec.name.clone(); + allow_names.push(name.to_string()); } } _ => continue, diff --git a/crates/rattler_installs_packages/src/types/core_metadata.rs b/crates/rattler_installs_packages/src/types/core_metadata.rs index e4f558fd..c9e491db 100644 --- a/crates/rattler_installs_packages/src/types/core_metadata.rs +++ b/crates/rattler_installs_packages/src/types/core_metadata.rs @@ -7,7 +7,7 @@ use crate::{ types::Version, types::VersionSpecifiers, }; use once_cell::sync::Lazy; -use pep440_rs::Pep440Error; +use pep440_rs::{VersionParseError, VersionSpecifiersParseError}; use pep508_rs::Requirement; use std::{collections::HashSet, str::FromStr}; use thiserror::Error; @@ -85,13 +85,13 @@ pub enum WheelCoreMetaDataError { DuplicateKey(String), #[error("invalid Metadata-Version: {0}")] - InvalidMetadataVersion(String), + InvalidMetadataVersion(VersionParseError), #[error("invalid Version: {0}")] - InvalidVersion(String), + InvalidVersion(VersionParseError), #[error("invalid Requires-Python: {0}")] - InvalidRequiresPython(#[source] Pep440Error), + InvalidRequiresPython(#[source] VersionSpecifiersParseError), #[error("unsupported METADATA version {0}")] UnsupportedVersion(Version), diff --git a/crates/rattler_installs_packages/src/types/package_name.rs b/crates/rattler_installs_packages/src/types/package_name.rs index dc4a468d..dc94ab0c 100644 --- a/crates/rattler_installs_packages/src/types/package_name.rs +++ b/crates/rattler_installs_packages/src/types/package_name.rs @@ -125,6 +125,12 @@ impl From for PackageName { } } +impl From for NormalizedPackageName { + fn from(value: pep508_rs::PackageName) -> Self { + Self(value.to_string().into_boxed_str()) + } +} + impl Display for NormalizedPackageName { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { write!(f, "{}", self.0) diff --git a/crates/rattler_installs_packages/src/wheel_builder/build_environment.rs b/crates/rattler_installs_packages/src/wheel_builder/build_environment.rs index 8243873b..6a3e5f79 100644 --- a/crates/rattler_installs_packages/src/wheel_builder/build_environment.rs +++ b/crates/rattler_installs_packages/src/wheel_builder/build_environment.rs @@ -357,16 +357,20 @@ impl BuildEnvironment { pyproject_toml::BuildSystem { requires: vec![ Requirement { - name: "setuptools".into(), - extras: None, - marker: None, + name: pep508_rs::PackageName::new("setuptools".to_string()) + .expect("invalid package name"), + extras: Default::default(), + marker: Default::default(), version_or_url: None, + origin: None, }, Requirement { - name: "wheel".into(), - extras: None, - marker: None, + name: pep508_rs::PackageName::new("wheel".to_string()) + .expect("invalid package name"), + extras: Default::default(), + marker: Default::default(), version_or_url: None, + origin: None, }, ], build_backend: Some("setuptools.build_meta:__legacy__".into()),