uv_resolver/
exclusions.rs

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