mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 13:25:00 +00:00
Change Operations API to always accept PythonRequirement
(#4498)
## Summary I think this is more intuitive than taking an `Option` and computing the requirement if it's `None`.
This commit is contained in:
parent
25cde888ae
commit
7946509931
6 changed files with 29 additions and 22 deletions
|
@ -211,9 +211,11 @@ pub(crate) async fn pip_compile(
|
|||
};
|
||||
|
||||
// Determine the Python requirement, if the user requested a specific version.
|
||||
let python_requirement = python_version
|
||||
.as_ref()
|
||||
.map(|python_version| PythonRequirement::from_python_version(&interpreter, python_version));
|
||||
let python_requirement = if let Some(python_version) = python_version.as_ref() {
|
||||
PythonRequirement::from_python_version(&interpreter, python_version)
|
||||
} else {
|
||||
PythonRequirement::from_interpreter(&interpreter)
|
||||
};
|
||||
|
||||
// Determine the environment for the resolution.
|
||||
let (tags, markers) = resolution_environment(python_version, python_platform, &interpreter)?;
|
||||
|
@ -316,7 +318,6 @@ pub(crate) async fn pip_compile(
|
|||
&hasher,
|
||||
&Reinstall::None,
|
||||
&upgrade,
|
||||
&interpreter,
|
||||
Some(&tags),
|
||||
Some(&markers),
|
||||
python_requirement,
|
||||
|
|
|
@ -23,7 +23,7 @@ use uv_installer::{SatisfiesResult, SitePackages};
|
|||
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
||||
use uv_resolver::{
|
||||
DependencyMode, ExcludeNewer, FlatIndex, InMemoryIndex, OptionsBuilder, PreReleaseMode,
|
||||
ResolutionMode,
|
||||
PythonRequirement, ResolutionMode,
|
||||
};
|
||||
use uv_toolchain::{
|
||||
EnvironmentPreference, Prefix, PythonEnvironment, PythonVersion, Target, ToolchainRequest,
|
||||
|
@ -218,6 +218,13 @@ pub(crate) async fn pip_install(
|
|||
|
||||
let interpreter = environment.interpreter();
|
||||
|
||||
// Determine the Python requirement, if the user requested a specific version.
|
||||
let python_requirement = if let Some(python_version) = python_version.as_ref() {
|
||||
PythonRequirement::from_python_version(interpreter, python_version)
|
||||
} else {
|
||||
PythonRequirement::from_interpreter(interpreter)
|
||||
};
|
||||
|
||||
// Determine the environment for the resolution.
|
||||
let (tags, markers) = resolution_environment(python_version, python_platform, interpreter)?;
|
||||
|
||||
|
@ -327,10 +334,9 @@ pub(crate) async fn pip_install(
|
|||
&hasher,
|
||||
&reinstall,
|
||||
&upgrade,
|
||||
interpreter,
|
||||
Some(&tags),
|
||||
Some(&markers),
|
||||
None,
|
||||
python_requirement,
|
||||
&client,
|
||||
&flat_index,
|
||||
&index,
|
||||
|
|
|
@ -37,7 +37,7 @@ use uv_resolver::{
|
|||
DependencyMode, Exclusions, FlatIndex, InMemoryIndex, Manifest, Options, Preference,
|
||||
Preferences, PythonRequirement, ResolutionGraph, Resolver,
|
||||
};
|
||||
use uv_toolchain::{Interpreter, PythonEnvironment};
|
||||
use uv_toolchain::PythonEnvironment;
|
||||
use uv_types::{HashStrategy, InFlight, InstalledPackagesProvider};
|
||||
use uv_warnings::warn_user;
|
||||
|
||||
|
@ -87,10 +87,9 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
|
|||
hasher: &HashStrategy,
|
||||
reinstall: &Reinstall,
|
||||
upgrade: &Upgrade,
|
||||
interpreter: &Interpreter,
|
||||
tags: Option<&Tags>,
|
||||
markers: Option<&MarkerEnvironment>,
|
||||
python_requirement: Option<PythonRequirement>,
|
||||
python_requirement: PythonRequirement,
|
||||
client: &RegistryClient,
|
||||
flat_index: &FlatIndex,
|
||||
index: &InMemoryIndex,
|
||||
|
@ -186,10 +185,6 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
|
|||
let overrides = Overrides::from_requirements(overrides);
|
||||
let preferences = Preferences::from_iter(preferences, markers);
|
||||
|
||||
// Determine the Python requirement, defaulting to that of the interpreter.
|
||||
let python_requirement =
|
||||
python_requirement.unwrap_or_else(|| PythonRequirement::from_interpreter(interpreter));
|
||||
|
||||
// Determine any lookahead requirements.
|
||||
let lookaheads = match options.dependency_mode {
|
||||
DependencyMode::Transitive => {
|
||||
|
|
|
@ -22,7 +22,7 @@ use uv_installer::SitePackages;
|
|||
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
||||
use uv_resolver::{
|
||||
DependencyMode, ExcludeNewer, FlatIndex, InMemoryIndex, OptionsBuilder, PreReleaseMode,
|
||||
ResolutionMode,
|
||||
PythonRequirement, ResolutionMode,
|
||||
};
|
||||
use uv_toolchain::{
|
||||
EnvironmentPreference, Prefix, PythonEnvironment, PythonVersion, Target, ToolchainRequest,
|
||||
|
@ -169,6 +169,13 @@ pub(crate) async fn pip_sync(
|
|||
|
||||
let interpreter = environment.interpreter();
|
||||
|
||||
// Determine the Python requirement, if the user requested a specific version.
|
||||
let python_requirement = if let Some(python_version) = python_version.as_ref() {
|
||||
PythonRequirement::from_python_version(interpreter, python_version)
|
||||
} else {
|
||||
PythonRequirement::from_interpreter(interpreter)
|
||||
};
|
||||
|
||||
// Determine the environment for the resolution.
|
||||
let (tags, markers) = resolution_environment(python_version, python_platform, interpreter)?;
|
||||
|
||||
|
@ -279,10 +286,9 @@ pub(crate) async fn pip_sync(
|
|||
&hasher,
|
||||
&reinstall,
|
||||
&upgrade,
|
||||
interpreter,
|
||||
Some(&tags),
|
||||
Some(&markers),
|
||||
None,
|
||||
python_requirement,
|
||||
&client,
|
||||
&flat_index,
|
||||
&index,
|
||||
|
|
|
@ -220,10 +220,9 @@ pub(super) async fn do_lock(
|
|||
&hasher,
|
||||
&Reinstall::default(),
|
||||
upgrade,
|
||||
interpreter,
|
||||
None,
|
||||
None,
|
||||
Some(python_requirement),
|
||||
python_requirement,
|
||||
&client,
|
||||
&flat_index,
|
||||
&index,
|
||||
|
|
|
@ -16,7 +16,7 @@ use uv_fs::Simplified;
|
|||
use uv_git::GitResolver;
|
||||
use uv_installer::{SatisfiesResult, SitePackages};
|
||||
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
||||
use uv_resolver::{FlatIndex, InMemoryIndex, OptionsBuilder, RequiresPython};
|
||||
use uv_resolver::{FlatIndex, InMemoryIndex, OptionsBuilder, PythonRequirement, RequiresPython};
|
||||
use uv_toolchain::{
|
||||
request_from_version_file, EnvironmentPreference, Interpreter, PythonEnvironment, Toolchain,
|
||||
ToolchainPreference, ToolchainRequest, VersionRequest,
|
||||
|
@ -345,6 +345,7 @@ pub(crate) async fn update_environment(
|
|||
let interpreter = venv.interpreter();
|
||||
let tags = venv.interpreter().tags()?;
|
||||
let markers = venv.interpreter().markers();
|
||||
let python_requirement = PythonRequirement::from_interpreter(interpreter);
|
||||
|
||||
// Initialize the registry client.
|
||||
let client = RegistryClientBuilder::new(cache.clone())
|
||||
|
@ -421,10 +422,9 @@ pub(crate) async fn update_environment(
|
|||
&hasher,
|
||||
reinstall,
|
||||
upgrade,
|
||||
interpreter,
|
||||
Some(tags),
|
||||
Some(markers),
|
||||
None,
|
||||
python_requirement,
|
||||
&client,
|
||||
&flat_index,
|
||||
&index,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue