Skip to main content

uv_resolver/
exclusions.rs

1use uv_configuration::Reinstall;
2
3use crate::UpgradePackages;
4use uv_normalize::PackageName;
5
6/// Tracks locally installed packages that should not be selected during resolution.
7#[derive(Debug, Default, Clone)]
8pub struct Exclusions {
9    reinstall: Reinstall,
10    upgrade: UpgradePackages,
11}
12
13impl Exclusions {
14    pub fn new(reinstall: Reinstall, upgrade: UpgradePackages) -> Self {
15        Self { reinstall, upgrade }
16    }
17
18    pub fn reinstall(&self, package: &PackageName) -> bool {
19        self.reinstall.contains_package(package)
20    }
21
22    pub fn upgrade(&self, package: &PackageName) -> bool {
23        self.upgrade.contains(package)
24    }
25
26    pub fn contains(&self, package: &PackageName) -> bool {
27        self.reinstall(package) || self.upgrade(package)
28    }
29}