mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35: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.
|
// Determine the Python requirement, if the user requested a specific version.
|
||||||
let python_requirement = python_version
|
let python_requirement = if let Some(python_version) = python_version.as_ref() {
|
||||||
.as_ref()
|
PythonRequirement::from_python_version(&interpreter, python_version)
|
||||||
.map(|python_version| PythonRequirement::from_python_version(&interpreter, python_version));
|
} else {
|
||||||
|
PythonRequirement::from_interpreter(&interpreter)
|
||||||
|
};
|
||||||
|
|
||||||
// Determine the environment for the resolution.
|
// Determine the environment for the resolution.
|
||||||
let (tags, markers) = resolution_environment(python_version, python_platform, &interpreter)?;
|
let (tags, markers) = resolution_environment(python_version, python_platform, &interpreter)?;
|
||||||
|
@ -316,7 +318,6 @@ pub(crate) async fn pip_compile(
|
||||||
&hasher,
|
&hasher,
|
||||||
&Reinstall::None,
|
&Reinstall::None,
|
||||||
&upgrade,
|
&upgrade,
|
||||||
&interpreter,
|
|
||||||
Some(&tags),
|
Some(&tags),
|
||||||
Some(&markers),
|
Some(&markers),
|
||||||
python_requirement,
|
python_requirement,
|
||||||
|
|
|
@ -23,7 +23,7 @@ use uv_installer::{SatisfiesResult, SitePackages};
|
||||||
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
||||||
use uv_resolver::{
|
use uv_resolver::{
|
||||||
DependencyMode, ExcludeNewer, FlatIndex, InMemoryIndex, OptionsBuilder, PreReleaseMode,
|
DependencyMode, ExcludeNewer, FlatIndex, InMemoryIndex, OptionsBuilder, PreReleaseMode,
|
||||||
ResolutionMode,
|
PythonRequirement, ResolutionMode,
|
||||||
};
|
};
|
||||||
use uv_toolchain::{
|
use uv_toolchain::{
|
||||||
EnvironmentPreference, Prefix, PythonEnvironment, PythonVersion, Target, ToolchainRequest,
|
EnvironmentPreference, Prefix, PythonEnvironment, PythonVersion, Target, ToolchainRequest,
|
||||||
|
@ -218,6 +218,13 @@ pub(crate) async fn pip_install(
|
||||||
|
|
||||||
let interpreter = environment.interpreter();
|
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.
|
// Determine the environment for the resolution.
|
||||||
let (tags, markers) = resolution_environment(python_version, python_platform, interpreter)?;
|
let (tags, markers) = resolution_environment(python_version, python_platform, interpreter)?;
|
||||||
|
|
||||||
|
@ -327,10 +334,9 @@ pub(crate) async fn pip_install(
|
||||||
&hasher,
|
&hasher,
|
||||||
&reinstall,
|
&reinstall,
|
||||||
&upgrade,
|
&upgrade,
|
||||||
interpreter,
|
|
||||||
Some(&tags),
|
Some(&tags),
|
||||||
Some(&markers),
|
Some(&markers),
|
||||||
None,
|
python_requirement,
|
||||||
&client,
|
&client,
|
||||||
&flat_index,
|
&flat_index,
|
||||||
&index,
|
&index,
|
||||||
|
|
|
@ -37,7 +37,7 @@ use uv_resolver::{
|
||||||
DependencyMode, Exclusions, FlatIndex, InMemoryIndex, Manifest, Options, Preference,
|
DependencyMode, Exclusions, FlatIndex, InMemoryIndex, Manifest, Options, Preference,
|
||||||
Preferences, PythonRequirement, ResolutionGraph, Resolver,
|
Preferences, PythonRequirement, ResolutionGraph, Resolver,
|
||||||
};
|
};
|
||||||
use uv_toolchain::{Interpreter, PythonEnvironment};
|
use uv_toolchain::PythonEnvironment;
|
||||||
use uv_types::{HashStrategy, InFlight, InstalledPackagesProvider};
|
use uv_types::{HashStrategy, InFlight, InstalledPackagesProvider};
|
||||||
use uv_warnings::warn_user;
|
use uv_warnings::warn_user;
|
||||||
|
|
||||||
|
@ -87,10 +87,9 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
|
||||||
hasher: &HashStrategy,
|
hasher: &HashStrategy,
|
||||||
reinstall: &Reinstall,
|
reinstall: &Reinstall,
|
||||||
upgrade: &Upgrade,
|
upgrade: &Upgrade,
|
||||||
interpreter: &Interpreter,
|
|
||||||
tags: Option<&Tags>,
|
tags: Option<&Tags>,
|
||||||
markers: Option<&MarkerEnvironment>,
|
markers: Option<&MarkerEnvironment>,
|
||||||
python_requirement: Option<PythonRequirement>,
|
python_requirement: PythonRequirement,
|
||||||
client: &RegistryClient,
|
client: &RegistryClient,
|
||||||
flat_index: &FlatIndex,
|
flat_index: &FlatIndex,
|
||||||
index: &InMemoryIndex,
|
index: &InMemoryIndex,
|
||||||
|
@ -186,10 +185,6 @@ pub(crate) async fn resolve<InstalledPackages: InstalledPackagesProvider>(
|
||||||
let overrides = Overrides::from_requirements(overrides);
|
let overrides = Overrides::from_requirements(overrides);
|
||||||
let preferences = Preferences::from_iter(preferences, markers);
|
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.
|
// Determine any lookahead requirements.
|
||||||
let lookaheads = match options.dependency_mode {
|
let lookaheads = match options.dependency_mode {
|
||||||
DependencyMode::Transitive => {
|
DependencyMode::Transitive => {
|
||||||
|
|
|
@ -22,7 +22,7 @@ use uv_installer::SitePackages;
|
||||||
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
||||||
use uv_resolver::{
|
use uv_resolver::{
|
||||||
DependencyMode, ExcludeNewer, FlatIndex, InMemoryIndex, OptionsBuilder, PreReleaseMode,
|
DependencyMode, ExcludeNewer, FlatIndex, InMemoryIndex, OptionsBuilder, PreReleaseMode,
|
||||||
ResolutionMode,
|
PythonRequirement, ResolutionMode,
|
||||||
};
|
};
|
||||||
use uv_toolchain::{
|
use uv_toolchain::{
|
||||||
EnvironmentPreference, Prefix, PythonEnvironment, PythonVersion, Target, ToolchainRequest,
|
EnvironmentPreference, Prefix, PythonEnvironment, PythonVersion, Target, ToolchainRequest,
|
||||||
|
@ -169,6 +169,13 @@ pub(crate) async fn pip_sync(
|
||||||
|
|
||||||
let interpreter = environment.interpreter();
|
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.
|
// Determine the environment for the resolution.
|
||||||
let (tags, markers) = resolution_environment(python_version, python_platform, interpreter)?;
|
let (tags, markers) = resolution_environment(python_version, python_platform, interpreter)?;
|
||||||
|
|
||||||
|
@ -279,10 +286,9 @@ pub(crate) async fn pip_sync(
|
||||||
&hasher,
|
&hasher,
|
||||||
&reinstall,
|
&reinstall,
|
||||||
&upgrade,
|
&upgrade,
|
||||||
interpreter,
|
|
||||||
Some(&tags),
|
Some(&tags),
|
||||||
Some(&markers),
|
Some(&markers),
|
||||||
None,
|
python_requirement,
|
||||||
&client,
|
&client,
|
||||||
&flat_index,
|
&flat_index,
|
||||||
&index,
|
&index,
|
||||||
|
|
|
@ -220,10 +220,9 @@ pub(super) async fn do_lock(
|
||||||
&hasher,
|
&hasher,
|
||||||
&Reinstall::default(),
|
&Reinstall::default(),
|
||||||
upgrade,
|
upgrade,
|
||||||
interpreter,
|
|
||||||
None,
|
None,
|
||||||
None,
|
None,
|
||||||
Some(python_requirement),
|
python_requirement,
|
||||||
&client,
|
&client,
|
||||||
&flat_index,
|
&flat_index,
|
||||||
&index,
|
&index,
|
||||||
|
|
|
@ -16,7 +16,7 @@ use uv_fs::Simplified;
|
||||||
use uv_git::GitResolver;
|
use uv_git::GitResolver;
|
||||||
use uv_installer::{SatisfiesResult, SitePackages};
|
use uv_installer::{SatisfiesResult, SitePackages};
|
||||||
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
use uv_requirements::{RequirementsSource, RequirementsSpecification};
|
||||||
use uv_resolver::{FlatIndex, InMemoryIndex, OptionsBuilder, RequiresPython};
|
use uv_resolver::{FlatIndex, InMemoryIndex, OptionsBuilder, PythonRequirement, RequiresPython};
|
||||||
use uv_toolchain::{
|
use uv_toolchain::{
|
||||||
request_from_version_file, EnvironmentPreference, Interpreter, PythonEnvironment, Toolchain,
|
request_from_version_file, EnvironmentPreference, Interpreter, PythonEnvironment, Toolchain,
|
||||||
ToolchainPreference, ToolchainRequest, VersionRequest,
|
ToolchainPreference, ToolchainRequest, VersionRequest,
|
||||||
|
@ -345,6 +345,7 @@ pub(crate) async fn update_environment(
|
||||||
let interpreter = venv.interpreter();
|
let interpreter = venv.interpreter();
|
||||||
let tags = venv.interpreter().tags()?;
|
let tags = venv.interpreter().tags()?;
|
||||||
let markers = venv.interpreter().markers();
|
let markers = venv.interpreter().markers();
|
||||||
|
let python_requirement = PythonRequirement::from_interpreter(interpreter);
|
||||||
|
|
||||||
// Initialize the registry client.
|
// Initialize the registry client.
|
||||||
let client = RegistryClientBuilder::new(cache.clone())
|
let client = RegistryClientBuilder::new(cache.clone())
|
||||||
|
@ -421,10 +422,9 @@ pub(crate) async fn update_environment(
|
||||||
&hasher,
|
&hasher,
|
||||||
reinstall,
|
reinstall,
|
||||||
upgrade,
|
upgrade,
|
||||||
interpreter,
|
|
||||||
Some(tags),
|
Some(tags),
|
||||||
Some(markers),
|
Some(markers),
|
||||||
None,
|
python_requirement,
|
||||||
&client,
|
&client,
|
||||||
&flat_index,
|
&flat_index,
|
||||||
&index,
|
&index,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue