diff --git a/crates/rattler-bin/src/commands/virtual_packages.rs b/crates/rattler-bin/src/commands/virtual_packages.rs index 5e18b3445..92768b5a7 100644 --- a/crates/rattler-bin/src/commands/virtual_packages.rs +++ b/crates/rattler-bin/src/commands/virtual_packages.rs @@ -1,10 +1,12 @@ use rattler_conda_types::GenericVirtualPackage; +use rattler_virtual_packages::VirtualPackageOverrides; #[derive(Debug, clap::Parser)] pub struct Opt {} pub fn virtual_packages(_opt: Opt) -> anyhow::Result<()> { - let virtual_packages = rattler_virtual_packages::VirtualPackage::detect(&Default::default())?; + let virtual_packages = + rattler_virtual_packages::VirtualPackage::detect(&VirtualPackageOverrides::default())?; for package in virtual_packages { println!("{}", GenericVirtualPackage::from(package.clone())); } diff --git a/crates/rattler_virtual_packages/src/lib.rs b/crates/rattler_virtual_packages/src/lib.rs index 52349a680..825407c59 100644 --- a/crates/rattler_virtual_packages/src/lib.rs +++ b/crates/rattler_virtual_packages/src/lib.rs @@ -2,50 +2,57 @@ //! A library to detect Conda virtual packages present on a system. //! -//! A virtual package represents a package that is injected into the solver to provide system -//! information to packages. This allows packages to add dependencies on specific system features, -//! like the platform version, the machines architecture, or the availability of a Cuda driver -//! with a specific version. +//! A virtual package represents a package that is injected into the solver to +//! provide system information to packages. This allows packages to add +//! dependencies on specific system features, like the platform version, the +//! machines architecture, or the availability of a Cuda driver with a specific +//! version. //! -//! This library provides both a low- and high level API to detect versions of virtual packages for -//! the host system. +//! This library provides both a low- and high level API to detect versions of +//! virtual packages for the host system. //! -//! To detect all virtual packages for the host system use the [`VirtualPackage::current`] method -//! which will return a memoized slice of all detected virtual packages. The `VirtualPackage` enum -//! represents all available virtual package types. Using it provides some flexibility to the -//! user to not care about which exact virtual packages exist but still allows users to override -//! specific virtual package behavior. Say for instance you just want to detect the capabilities of -//! the host system but you still want to restrict the targeted linux version. You can convert an -//! instance of `VirtualPackage` to `GenericVirtualPackage` which erases any typing for specific -//! virtual packages. +//! To detect all virtual packages for the host system use the +//! [`VirtualPackage::detect`] method which will return a memoized slice of all +//! detected virtual packages. The `VirtualPackage` enum represents all +//! available virtual package types. Using it provides some flexibility to the +//! user to not care about which exact virtual packages exist but still allows +//! users to override specific virtual package behavior. Say for instance you +//! just want to detect the capabilities of the host system but you still want +//! to restrict the targeted linux version. You can convert an instance of +//! `VirtualPackage` to `GenericVirtualPackage` which erases any typing for +//! specific virtual packages. //! -//! Each virtual package is also represented by a struct which can be used to detect the specifics -//! of one virtual package. For instance the [`Linux::current`] method returns an instance of -//! `Linux` which contains the current Linux version. It also provides conversions to the higher -//! level API. +//! Each virtual package is also represented by a struct which can be used to +//! detect the specifics of one virtual package. For instance the +//! [`Linux::current`] method returns an instance of `Linux` which contains the +//! current Linux version. It also provides conversions to the higher level API. //! -//! Finally at the core of the library are detection functions to perform specific capability -//! detections that are not tied to anything related to virtual packages. See -//! [`cuda::detect_cuda_version_via_libcuda`] as an example. +//! Finally at the core of the library are detection functions to perform +//! specific capability detections that are not tied to anything related to +//! virtual packages. See [`cuda::detect_cuda_version_via_libcuda`] as an +//! example. pub mod cuda; pub mod libc; pub mod linux; pub mod osx; +use std::{ + env, + hash::{Hash, Hasher}, + str::FromStr, + sync::Arc, +}; + use archspec::cpu::Microarchitecture; +use libc::DetectLibCError; +use linux::ParseLinuxVersionError; use rattler_conda_types::{ GenericVirtualPackage, PackageName, ParseVersionError, Platform, Version, }; -use std::env; -use std::hash::{Hash, Hasher}; -use std::str::FromStr; -use std::sync::Arc; +use serde::{Deserialize, Deserializer, Serialize, Serializer}; use crate::osx::ParseOsxVersionError; -use libc::DetectLibCError; -use linux::ParseLinuxVersionError; -use serde::{Deserialize, Deserializer, Serialize, Serializer}; /// Configure the overrides used in in this crate. #[derive(Clone, Debug, PartialEq, Default)] @@ -57,8 +64,6 @@ pub enum Override { EnvVar(String), /// Use a custom override directly String(String), - /// Disable overrides - None, } /// Traits for overridable virtual packages @@ -67,7 +72,8 @@ pub trait EnvOverride: Sized { /// Parse `env_var_value` fn parse_version(value: &str) -> Result; - /// Helper to convert the output of `parse_version` and handling empty strings. + /// Helper to convert the output of `parse_version` and handling empty + /// strings. fn parse_version_opt(value: &str) -> Result, DetectVirtualPackageError> { if value.is_empty() { Ok(None) @@ -76,10 +82,11 @@ pub trait EnvOverride: Sized { } } - /// Read the environment variable and if it exists, try to parse it with [`EnvOverride::parse_version`] - /// If the output is: + /// Read the environment variable and if it exists, try to parse it with + /// [`EnvOverride::parse_version`] If the output is: /// - `None`, then the environment variable did not exist, - /// - `Some(Err(None))`, then the environment variable exist but was set to zero, so the package should be disabled + /// - `Some(Err(None))`, then the environment variable exist but was set to + /// zero, so the package should be disabled /// - `Some(Ok(pkg))`, then the override was for the package. fn from_env_var_name_or( env_var_name: &str, @@ -95,16 +102,19 @@ pub trait EnvOverride: Sized { } } - /// Default name of the environment variable that overrides the virtual package. + /// Default name of the environment variable that overrides the virtual + /// package. const DEFAULT_ENV_NAME: &'static str; /// Detect the virutal package for the current system. - /// This method is here so that `::current` always returns the same error type. - /// `current` may return different types of errors depending on the virtual package. This one always returns + /// This method is here so that `::current` always + /// returns the same error type. `current` may return different types of + /// errors depending on the virtual package. This one always returns /// `DetectVirtualPackageError`. fn detect_from_host() -> Result, DetectVirtualPackageError>; - /// Apply the override to the current virtual package. If the override is `None` then use the fallback + /// Apply the override to the current virtual package. If the override is + /// `None` then use the fallback fn detect_with_fallback( ov: &Override, fallback: F, @@ -113,16 +123,18 @@ pub trait EnvOverride: Sized { F: FnOnce() -> Result, DetectVirtualPackageError>, { match ov { - Override::None => fallback(), Override::String(str) => Self::parse_version_opt(str), Override::DefaultEnvVar => Self::from_env_var_name_or(Self::DEFAULT_ENV_NAME, fallback), Override::EnvVar(name) => Self::from_env_var_name_or(name, fallback), } } - /// Shortcut for `Self::detect_with_fallback` with `Self::detect_from_host` as fallback - fn detect(ov: &Override) -> Result, DetectVirtualPackageError> { - Self::detect_with_fallback(ov, Self::detect_from_host) + /// Shortcut for `Self::detect_with_fallback` with `Self::detect_from_host` + /// as fallback + fn detect(ov: Option<&Override>) -> Result, DetectVirtualPackageError> { + ov.map_or_else(Self::detect_from_host, |ov| { + Self::detect_with_fallback(ov, Self::detect_from_host) + }) } } @@ -174,17 +186,18 @@ impl From for GenericVirtualPackage { } impl VirtualPackage { - /// Returns virtual packages detected for the current system or an error if the versions could - /// not be properly detected. + /// Returns virtual packages detected for the current system or an error if + /// the versions could not be properly detected. #[deprecated( - since = "1.0.4", - note = "Use `Self::detect(&VirtualPackageOverrides::none())` instead." + since = "1.1.0", + note = "Use `VirtualPackage::detect(&VirtualPackageOverrides::default())` instead." )] pub fn current() -> Result, DetectVirtualPackageError> { - try_detect_virtual_packages_with_overrides(&VirtualPackageOverrides::none()) + Self::detect(&VirtualPackageOverrides::default()) } - /// Detect the virtual packages of the current system with the given overrides. + /// Detect the virtual packages of the current system with the given + /// overrides. pub fn detect( overrides: &VirtualPackageOverrides, ) -> Result, DetectVirtualPackageError> { @@ -212,25 +225,38 @@ pub enum DetectVirtualPackageError { VersionParseError(#[from] ParseVersionError), } /// Configure the overrides used in this crate. +/// +/// The default value is `None` for all overrides which means that by default +/// none of the virtual packages are overriden. +/// +/// Use `VirtualPackageOverrides::from_env()` to create an instance of this +/// struct with all overrides set to the default environment variables. #[derive(Default, Clone, Debug)] pub struct VirtualPackageOverrides { /// The override for the osx virtual package - pub osx: Override, + pub osx: Option, /// The override for the libc virtual package - pub libc: Override, + pub libc: Option, /// The override for the cuda virtual package - pub cuda: Override, + pub cuda: Option, } impl VirtualPackageOverrides { - /// Disable all overrides - pub fn none() -> Self { + /// Returns an instance of `VirtualPackageOverrides` with all overrides set + /// to a given value. + pub fn all(ov: Override) -> Self { Self { - osx: Override::None, - libc: Override::None, - cuda: Override::None, + osx: Some(ov.clone()), + libc: Some(ov.clone()), + cuda: Some(ov), } } + + /// Returns an instance of `VirtualPackageOverrides` where all overrides are + /// taken from default environment variables. + pub fn from_env() -> Self { + Self::all(Override::DefaultEnvVar) + } } // Detect the available virtual packages on the system @@ -252,18 +278,18 @@ fn try_detect_virtual_packages_with_overrides( if let Some(linux_version) = Linux::current()? { result.push(linux_version.into()); } - if let Some(libc) = LibC::detect(&overrides.libc)? { + if let Some(libc) = LibC::detect(overrides.libc.as_ref())? { result.push(libc.into()); } } if platform.is_osx() { - if let Some(osx) = Osx::detect(&overrides.osx)? { + if let Some(osx) = Osx::detect(overrides.osx.as_ref())? { result.push(osx.into()); } } - if let Some(cuda) = Cuda::detect(&overrides.cuda)? { + if let Some(cuda) = Cuda::detect(overrides.cuda.as_ref())? { result.push(cuda.into()); } @@ -284,8 +310,9 @@ pub struct Linux { impl Linux { /// Returns the Linux version of the current platform. /// - /// Returns an error if determining the Linux version resulted in an error. Returns `None` if - /// the current platform is not a Linux based platform. + /// Returns an error if determining the Linux version resulted in an error. + /// Returns `None` if the current platform is not a Linux based + /// platform. pub fn current() -> Result, ParseLinuxVersionError> { Ok(linux::linux_version()?.map(|version| Self { version })) } @@ -326,8 +353,9 @@ pub struct LibC { impl LibC { /// Returns the `LibC` family and version of the current platform. /// - /// Returns an error if determining the `LibC` family and version resulted in an error. Returns - /// `None` if the current platform does not have an available version of `LibC`. + /// Returns an error if determining the `LibC` family and version resulted + /// in an error. Returns `None` if the current platform does not have an + /// available version of `LibC`. pub fn current() -> Result, DetectLibCError> { Ok(libc::libc_family_and_version()?.map(|(family, version)| Self { family, version })) } @@ -536,8 +564,8 @@ pub struct Osx { impl Osx { /// Returns the OSX version of the current platform. /// - /// Returns an error if determining the OSX version resulted in an error. Returns `None` if - /// the current platform is not an OSX based platform. + /// Returns an error if determining the OSX version resulted in an error. + /// Returns `None` if the current platform is not an OSX based platform. pub fn current() -> Result, ParseOsxVersionError> { Ok(osx::osx_version()?.map(|version| Self { version })) } @@ -577,17 +605,11 @@ impl EnvOverride for Osx { #[cfg(test)] mod test { - use std::env; - use std::str::FromStr; + use std::{env, str::FromStr}; use rattler_conda_types::Version; - use crate::Cuda; - use crate::EnvOverride; - use crate::LibC; - use crate::Osx; - use crate::Override; - use crate::VirtualPackage; + use crate::{Cuda, EnvOverride, LibC, Osx, Override, VirtualPackage}; #[test] fn doesnt_crash() { @@ -604,14 +626,14 @@ mod test { let env_var_name = format!("{}_{}", LibC::DEFAULT_ENV_NAME, "12345511231"); env::set_var(env_var_name.clone(), v); assert_eq!( - LibC::detect(&Override::EnvVar(env_var_name.clone())) + LibC::detect(Some(&Override::EnvVar(env_var_name.clone()))) .unwrap() .unwrap(), res ); env::set_var(env_var_name.clone(), ""); assert_eq!( - LibC::detect(&Override::EnvVar(env_var_name.clone())).unwrap(), + LibC::detect(Some(&Override::EnvVar(env_var_name.clone()))).unwrap(), None ); env::remove_var(env_var_name.clone()); @@ -638,18 +660,18 @@ mod test { let env_var_name = format!("{}_{}", Cuda::DEFAULT_ENV_NAME, "12345511231"); env::set_var(env_var_name.clone(), v); assert_eq!( - Cuda::detect(&Override::EnvVar(env_var_name.clone())) + Cuda::detect(Some(&Override::EnvVar(env_var_name.clone()))) .unwrap() .unwrap(), res ); assert_eq!( - Cuda::detect(&Override::None).map_err(|_x| 1), + Cuda::detect(None).map_err(|_x| 1), ::detect_from_host().map_err(|_x| 1) ); env::remove_var(env_var_name.clone()); assert_eq!( - Cuda::detect(&Override::String(v.to_string())) + Cuda::detect(Some(&Override::String(v.to_string()))) .unwrap() .unwrap(), res @@ -665,7 +687,7 @@ mod test { let env_var_name = format!("{}_{}", Osx::DEFAULT_ENV_NAME, "12345511231"); env::set_var(env_var_name.clone(), v); assert_eq!( - Osx::detect(&Override::EnvVar(env_var_name.clone())) + Osx::detect(Some(&Override::EnvVar(env_var_name.clone()))) .unwrap() .unwrap(), res diff --git a/py-rattler/Cargo.lock b/py-rattler/Cargo.lock index 6a3dd0b1d..bfa564535 100644 --- a/py-rattler/Cargo.lock +++ b/py-rattler/Cargo.lock @@ -19,14 +19,13 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.7.5" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug", ] [[package]] @@ -109,12 +108,14 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.5.1" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" dependencies = [ - "event-listener 2.5.3", + "event-listener", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] @@ -153,41 +154,20 @@ checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", - "futures-lite 2.3.0", + "fastrand", + "futures-lite", "slab", ] [[package]] name = "async-fs" -version = "1.6.0" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" dependencies = [ - "async-lock 2.8.0", - "autocfg", + "async-lock", "blocking", - "futures-lite 1.13.0", -] - -[[package]] -name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", + "futures-lite", ] [[package]] @@ -196,54 +176,48 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.4.0", + "async-lock", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.3.0", + "futures-lite", "parking", - "polling 3.7.1", - "rustix 0.38.34", + "polling", + "rustix", "slab", "tracing", "windows-sys 0.52.0", ] -[[package]] -name = "async-lock" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async-lock" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.3.1", + "event-listener", "event-listener-strategy", "pin-project-lite", ] [[package]] name = "async-process" -version = "1.8.1" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", + "async-channel", + "async-io", + "async-lock", "async-signal", + "async-task", "blocking", "cfg-if", - "event-listener 3.1.0", - "futures-lite 1.13.0", - "rustix 0.38.34", - "windows-sys 0.48.0", + "event-listener", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", ] [[package]] @@ -263,13 +237,13 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "329972aa325176e89114919f2a80fdae4f4c040f66a370b1a1159c6c0f94e7aa" dependencies = [ - "async-io 2.3.3", - "async-lock 3.4.0", + "async-io", + "async-lock", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix", "signal-hook-registry", "slab", "windows-sys 0.52.0", @@ -374,21 +348,14 @@ dependencies = [ ] [[package]] -name = "block-modes" -version = "0.8.1" +name = "block-padding" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb03d1bed155d89dce0f845b7899b18a9a163e148fd004e1c28421a783e2d8e" +checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ - "block-padding", - "cipher", + "generic-array", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "blocking" version = "1.6.1" @@ -398,7 +365,7 @@ dependencies = [ "async-channel", "async-task", "futures-io", - "futures-lite 2.3.0", + "futures-lite", "piper", ] @@ -447,6 +414,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf2a5fb3207c12b5d208ebc145f967fea5cac41a021c37417ccc31ba40f39ee" +[[package]] +name = "cbc" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" +dependencies = [ + "cipher", +] + [[package]] name = "cc" version = "1.0.98" @@ -464,6 +440,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" version = "0.4.38" @@ -476,16 +458,17 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] @@ -609,6 +592,35 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "dbus" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bb21987b9fb1613058ba3843121dd18b163b254d8a6e797e144cbac14d96d1b" +dependencies = [ + "libc", + "libdbus-sys", + "winapi", +] + +[[package]] +name = "dbus-secret-service" +version = "4.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa0c241c01ad8d99a78d553567d38f873dd3ac16eca33a5370d650ab25584e" +dependencies = [ + "aes", + "block-padding", + "cbc", + "dbus", + "futures-util", + "hkdf", + "num", + "once_cell", + "rand", + "sha2", +] + [[package]] name = "deranged" version = "0.3.11" @@ -714,6 +726,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + [[package]] name = "enum-as-inner" version = "0.6.0" @@ -785,23 +803,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - -[[package]] -name = "event-listener" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - [[package]] name = "event-listener" version = "5.3.1" @@ -819,19 +820,10 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 5.3.1", + "event-listener", "pin-project-lite", ] -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - [[package]] name = "fastrand" version = "2.1.0" @@ -840,7 +832,7 @@ checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "file_url" -version = "0.1.3" +version = "0.1.4" dependencies = [ "itertools 0.13.0", "percent-encoding", @@ -998,28 +990,13 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" -[[package]] -name = "futures-lite" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" -dependencies = [ - "fastrand 1.9.0", - "futures-core", - "futures-io", - "memchr", - "parking", - "pin-project-lite", - "waker-fn", -] - [[package]] name = "futures-lite" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.1.0", + "fastrand", "futures-core", "futures-io", "parking", @@ -1395,7 +1372,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower-service", "tracing", @@ -1495,7 +1472,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.3.1", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio", "tower", "tower-service", @@ -1582,6 +1559,16 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "block-padding", + "generic-array", +] + [[package]] name = "instant" version = "0.1.13" @@ -1597,17 +1584,6 @@ version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" version = "2.9.0" @@ -1696,16 +1672,16 @@ dependencies = [ [[package]] name = "keyring" -version = "2.3.3" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "363387f0019d714aa60cc30ab4fe501a747f4c08fc58f069dd14be971bd495a0" +checksum = "030a9b84bb2a2f3673d4c8b8236091ed5d8f6b66a56d8085471d8abd5f3c6a80" dependencies = [ "byteorder", - "lazy_static", - "linux-keyutils", + "dbus-secret-service", "secret-service", "security-framework", - "windows-sys 0.52.0", + "windows-sys 0.59.0", + "zbus", ] [[package]] @@ -1807,6 +1783,15 @@ version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +[[package]] +name = "libdbus-sys" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06085512b750d640299b79be4bad3d2fa90a9c00b1fd9e1b46364f66f0485c72" +dependencies = [ + "pkg-config", +] + [[package]] name = "libloading" version = "0.8.3" @@ -1814,7 +1799,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.48.5", ] [[package]] @@ -1839,22 +1824,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" -[[package]] -name = "linux-keyutils" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e" -dependencies = [ - "bitflags 2.5.0", - "libc", -] - -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -1908,15 +1877,6 @@ dependencies = [ "libc", ] -[[package]] -name = "memoffset" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.9.1" @@ -1983,14 +1943,15 @@ checksum = "ea2970fbbc8c785e8246234a7bd004ed66cd1ed1a35ec73669a92545e419b836" [[package]] name = "nix" -version = "0.26.4" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "cfg-if", + "cfg_aliases", "libc", - "memoffset 0.7.1", + "memoffset", ] [[package]] @@ -2113,12 +2074,6 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" -[[package]] -name = "opaque-debug" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" - [[package]] name = "openssl" version = "0.10.64" @@ -2240,7 +2195,7 @@ dependencies = [ "libc", "redox_syscall 0.5.1", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2387,7 +2342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand", "futures-io", ] @@ -2411,22 +2366,6 @@ dependencies = [ "time", ] -[[package]] -name = "polling" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - [[package]] name = "polling" version = "3.7.1" @@ -2437,7 +2376,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 0.38.34", + "rustix", "tracing", "windows-sys 0.52.0", ] @@ -2462,11 +2401,10 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "once_cell", "toml_edit", ] @@ -2548,7 +2486,7 @@ dependencies = [ "indoc", "inventory", "libc", - "memoffset 0.9.1", + "memoffset", "parking_lot", "portable-atomic", "pyo3-build-config 0.20.3", @@ -2681,7 +2619,7 @@ dependencies = [ [[package]] name = "rattler" -version = "0.27.4" +version = "0.27.6" dependencies = [ "anyhow", "console", @@ -2719,7 +2657,7 @@ dependencies = [ [[package]] name = "rattler_cache" -version = "0.1.6" +version = "0.1.8" dependencies = [ "anyhow", "digest", @@ -2741,7 +2679,7 @@ dependencies = [ [[package]] name = "rattler_conda_types" -version = "0.27.1" +version = "0.27.2" dependencies = [ "chrono", "dirs", @@ -2775,7 +2713,7 @@ dependencies = [ [[package]] name = "rattler_digest" -version = "1.0.0" +version = "1.0.1" dependencies = [ "blake2", "digest", @@ -2790,7 +2728,7 @@ dependencies = [ [[package]] name = "rattler_index" -version = "0.19.23" +version = "0.19.24" dependencies = [ "fs-err", "rattler_conda_types", @@ -2803,7 +2741,7 @@ dependencies = [ [[package]] name = "rattler_lock" -version = "0.22.18" +version = "0.22.20" dependencies = [ "chrono", "file_url", @@ -2824,7 +2762,7 @@ dependencies = [ [[package]] name = "rattler_macros" -version = "1.0.0" +version = "1.0.1" dependencies = [ "quote", "syn 2.0.66", @@ -2832,7 +2770,7 @@ dependencies = [ [[package]] name = "rattler_networking" -version = "0.21.0" +version = "0.21.2" dependencies = [ "anyhow", "async-trait", @@ -2858,7 +2796,7 @@ dependencies = [ [[package]] name = "rattler_package_streaming" -version = "0.22.1" +version = "0.22.3" dependencies = [ "bzip2", "chrono", @@ -2884,7 +2822,7 @@ dependencies = [ [[package]] name = "rattler_redaction" -version = "0.1.0" +version = "0.1.1" dependencies = [ "reqwest 0.12.4", "reqwest-middleware", @@ -2893,7 +2831,7 @@ dependencies = [ [[package]] name = "rattler_repodata_gateway" -version = "0.21.5" +version = "0.21.8" dependencies = [ "anyhow", "async-compression", @@ -2944,7 +2882,7 @@ dependencies = [ [[package]] name = "rattler_shell" -version = "0.21.5" +version = "0.21.6" dependencies = [ "enum_dispatch", "indexmap 2.2.6", @@ -2959,7 +2897,7 @@ dependencies = [ [[package]] name = "rattler_solve" -version = "1.0.2" +version = "1.0.3" dependencies = [ "chrono", "futures", @@ -2975,7 +2913,7 @@ dependencies = [ [[package]] name = "rattler_virtual_packages" -version = "1.0.2" +version = "1.0.4" dependencies = [ "archspec", "libloading", @@ -3045,7 +2983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c3138c30c59ed9b8572f82bed97ea591ecd7e45012566046cc39e72679cff22" dependencies = [ "cfg-if", - "rustix 0.38.34", + "rustix", "windows", ] @@ -3194,7 +3132,7 @@ dependencies = [ "ahash", "bitvec", "elsa", - "event-listener 5.3.1", + "event-listener", "futures", "itertools 0.13.0", "petgraph", @@ -3253,20 +3191,6 @@ version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" -[[package]] -name = "rustix" -version = "0.37.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - [[package]] name = "rustix" version = "0.38.34" @@ -3276,7 +3200,7 @@ dependencies = [ "bitflags 2.5.0", "errno", "libc", - "linux-raw-sys 0.4.14", + "linux-raw-sys", "windows-sys 0.52.0", ] @@ -3400,12 +3324,12 @@ dependencies = [ [[package]] name = "secret-service" -version = "3.0.1" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5da1a5ad4d28c03536f82f77d9f36603f5e37d8869ac98f0a750d5b5686d8d95" +checksum = "e4d35ad99a181be0a60ffcbe85d680d98f87bdc4d7644ade319b87076b9dbfd4" dependencies = [ "aes", - "block-modes", + "cbc", "futures-util", "generic-array", "hkdf", @@ -3668,16 +3592,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "socket2" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "socket2" version = "0.5.7" @@ -3839,8 +3753,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.1.0", - "rustix 0.38.34", + "fastrand", + "rustix", "windows-sys 0.52.0", ] @@ -3923,7 +3837,7 @@ dependencies = [ "num_cpus", "parking_lot", "pin-project-lite", - "socket2 0.5.7", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] @@ -3985,15 +3899,15 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.19.15" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap 2.2.6", "toml_datetime", @@ -4088,7 +4002,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ - "memoffset 0.9.1", + "memoffset", "tempfile", "winapi", ] @@ -4205,12 +4119,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" - [[package]] name = "walkdir" version = "2.5.0" @@ -4378,7 +4286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" dependencies = [ "windows-core 0.56.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4387,7 +4295,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4399,7 +4307,7 @@ dependencies = [ "windows-implement", "windows-interface", "windows-result", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4430,7 +4338,7 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4448,7 +4356,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4468,18 +4385,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "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.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "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]] @@ -4490,9 +4407,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4502,9 +4419,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4514,15 +4431,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4532,9 +4449,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4544,9 +4461,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4556,9 +4473,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4568,15 +4485,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.40" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -4617,8 +4534,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", - "linux-raw-sys 0.4.14", - "rustix 0.38.34", + "linux-raw-sys", + "rustix", ] [[package]] @@ -4639,30 +4556,27 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "zbus" -version = "3.15.2" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" dependencies = [ "async-broadcast", "async-executor", "async-fs", - "async-io 1.13.0", - "async-lock 2.8.0", + "async-io", + "async-lock", "async-process", "async-recursion", "async-task", "async-trait", "blocking", - "byteorder", - "derivative", "enumflags2", - "event-listener 2.5.3", + "event-listener", "futures-core", "futures-sink", "futures-util", "hex", "nix", - "once_cell", "ordered-stream", "rand", "serde", @@ -4671,7 +4585,7 @@ dependencies = [ "static_assertions", "tracing", "uds_windows", - "winapi", + "windows-sys 0.52.0", "xdg-home", "zbus_macros", "zbus_names", @@ -4680,23 +4594,22 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.15.2" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "regex", - "syn 1.0.109", + "syn 2.0.66", "zvariant_utils", ] [[package]] name = "zbus_names" -version = "2.6.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", @@ -4791,13 +4704,12 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.15.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" dependencies = [ - "byteorder", + "endi", "enumflags2", - "libc", "serde", "static_assertions", "zvariant_derive", @@ -4805,24 +4717,24 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.15.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "1.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] diff --git a/py-rattler/rattler/virtual_package/virtual_package.py b/py-rattler/rattler/virtual_package/virtual_package.py index a37da3452..daa2b2f20 100644 --- a/py-rattler/rattler/virtual_package/virtual_package.py +++ b/py-rattler/rattler/virtual_package/virtual_package.py @@ -14,7 +14,6 @@ class Override: - `Override.default_env_var()` for overriding the detection with the default environment variable, - `Override.env_var(str)` for overriding the detection with a custom environment variable, - `Override.string(str)` for passing the version directly, or - - `Override.none()` for disabling the override process all together. """ _override: PyOverride @@ -47,13 +46,6 @@ def string(cls, override: str) -> Override: """ return cls._from_py_override(PyOverride.string(override)) - @classmethod - def none(cls) -> Override: - """ - Returns the override for None. - """ - return cls._from_py_override(PyOverride.none()) - def __str__(self) -> str: """ Returns string representation of the Override. @@ -89,67 +81,64 @@ def _from_py_virtual_package_overrides( def __init__(self, osx: Override | None = None, libc: Override | None = None, cuda: Override | None = None) -> None: """ - Returns the default virtual package overrides. + Returns the default virtual package overrides. By default, none of the overrides are set. """ - self._overrides = PyVirtualPackageOverrides.default() - if osx is not None: - self.osx = osx - if libc is not None: - self.libc = libc - if cuda is not None: - self.cuda = cuda + self._overrides = PyVirtualPackageOverrides.none() + self.osx = osx + self.libc = libc + self.cuda = cuda @classmethod - def none(cls) -> VirtualPackageOverrides: + def from_env(cls) -> VirtualPackageOverrides: """ Returns the virtual package overrides for None. """ - return cls._from_py_virtual_package_overrides(PyVirtualPackageOverrides.none()) + return cls._from_py_virtual_package_overrides(PyVirtualPackageOverrides.from_env()) @property - def osx(self) -> Override: + def osx(self) -> Override | None: """ Returns the OSX override. """ - return Override._from_py_override(self._overrides.osx) + override = self._overrides.osx + return Override._from_py_override(override) if override else None @osx.setter - def osx(self, override: Override) -> VirtualPackageOverrides: + def osx(self, override: Override | None) -> None: """ Sets the OSX override. """ - self._overrides.osx = override._override - return self._overrides.osx + self._overrides.osx = override._override if override else None @property - def libc(self) -> Override: + def libc(self) -> Override | None: """ Returns the libc override. """ - return Override._from_py_override(self._overrides.libc) + override = self._overrides.libc + return Override._from_py_override(override) if override else None @libc.setter - def libc(self, override: Override) -> VirtualPackageOverrides: + def libc(self, override: Override | None) -> None: """ Sets the libc override. """ - self._overrides.libc = override._override - return self._overrides.libc + self._overrides.libc = override._override if override else None @property - def cuda(self) -> Override: + def cuda(self) -> Override | None: """ Returns the CUDA override. """ - return Override._from_py_override(self._overrides.cuda) + override = self._overrides.cuda + return Override._from_py_override(override) if override else None @cuda.setter - def cuda(self, override: Override) -> VirtualPackageOverrides: + def cuda(self, override: Override | None) -> None: """ Sets the CUDA override. """ - self._overrides.cuda = override._override - return self._overrides.cuda + self._overrides.cuda = override._override if override else None def __str__(self) -> str: """ @@ -181,15 +170,14 @@ def current() -> List[VirtualPackage]: if the versions could not be properly detected. """ warnings.warn("Use `detect` instead") - return VirtualPackage.detect(VirtualPackageOverrides.none()) + return VirtualPackage.detect() @staticmethod - def detect(overrides: VirtualPackageOverrides | None = None) -> List[VirtualPackage]: + def detect(overrides: VirtualPackageOverrides = VirtualPackageOverrides()) -> List[VirtualPackage]: """ Returns virtual packages detected for the current system with the given overrides. """ - _overrides: VirtualPackageOverrides = overrides or VirtualPackageOverrides() - return [VirtualPackage._from_py_virtual_package(vp) for vp in PyVirtualPackage.detect(_overrides._overrides)] + return [VirtualPackage._from_py_virtual_package(vp) for vp in PyVirtualPackage.detect(overrides._overrides)] def into_generic(self) -> GenericVirtualPackage: """ diff --git a/py-rattler/src/virtual_package.rs b/py-rattler/src/virtual_package.rs index 51975c142..31e83b1f2 100644 --- a/py-rattler/src/virtual_package.rs +++ b/py-rattler/src/virtual_package.rs @@ -24,13 +24,6 @@ impl From for Override { #[pymethods] impl PyOverride { - #[staticmethod] - pub fn none() -> Self { - Self { - inner: Override::None, - } - } - #[staticmethod] pub fn default_env_var() -> Self { Self { @@ -83,16 +76,16 @@ impl From for VirtualPackageOverrides { #[pymethods] impl PyVirtualPackageOverrides { #[staticmethod] - pub fn default() -> Self { + pub fn from_env() -> Self { Self { - inner: VirtualPackageOverrides::default(), + inner: VirtualPackageOverrides::from_env(), } } #[staticmethod] pub fn none() -> Self { Self { - inner: VirtualPackageOverrides::none(), + inner: VirtualPackageOverrides::default(), } } @@ -101,28 +94,28 @@ impl PyVirtualPackageOverrides { } #[getter] - pub fn get_osx(&self) -> PyOverride { - self.inner.osx.clone().into() + pub fn get_osx(&self) -> Option { + self.inner.osx.clone().map(Into::into) } #[setter] - pub fn set_osx(&mut self, value: PyOverride) { - self.inner.osx = value.into(); + pub fn set_osx(&mut self, value: Option) { + self.inner.osx = value.map(Into::into); } #[getter] - pub fn get_cuda(&self) -> PyOverride { - self.inner.cuda.clone().into() + pub fn get_cuda(&self) -> Option { + self.inner.cuda.clone().map(Into::into) } #[setter] - pub fn set_cuda(&mut self, value: PyOverride) { - self.inner.cuda = value.into(); + pub fn set_cuda(&mut self, value: Option) { + self.inner.cuda = value.map(Into::into); } #[getter] - pub fn get_libc(&self) -> PyOverride { - self.inner.libc.clone().into() + pub fn get_libc(&self) -> Option { + self.inner.libc.clone().map(Into::into) } #[setter] - pub fn set_libc(&mut self, value: PyOverride) { - self.inner.libc = value.into(); + pub fn set_libc(&mut self, value: Option) { + self.inner.libc = value.map(Into::into); } } diff --git a/py-rattler/tests/unit/test_override.py b/py-rattler/tests/unit/test_override.py index 731daa295..45df90854 100644 --- a/py-rattler/tests/unit/test_override.py +++ b/py-rattler/tests/unit/test_override.py @@ -2,12 +2,12 @@ def test_overrides() -> None: - overrides = VirtualPackageOverrides.none() - print(overrides.osx, Override.none()) - assert overrides.osx == Override.none() - assert overrides.libc == Override.none() - assert overrides.cuda == Override.none() overrides = VirtualPackageOverrides() + assert overrides.osx is None + assert overrides.libc is None + assert overrides.cuda is None + + overrides = VirtualPackageOverrides.from_env() assert overrides.osx == Override.default_env_var() assert overrides.libc == Override.default_env_var() assert overrides.cuda == Override.default_env_var()