mirror of https://github.com/astral-sh/uv
Pin lock futures (#16643)
These futures are quite large (~16,000 bytes) and adding new fields to the `ResolverOptions` in another pull request caused a lint error from Clippy.
This commit is contained in:
parent
caf49f845f
commit
2d9fe7ca70
|
|
@ -990,24 +990,26 @@ async fn lock_and_sync(
|
||||||
printer: Printer,
|
printer: Printer,
|
||||||
preview: Preview,
|
preview: Preview,
|
||||||
) -> Result<(), ProjectError> {
|
) -> Result<(), ProjectError> {
|
||||||
let mut lock = project::lock::LockOperation::new(
|
let mut lock = Box::pin(
|
||||||
if let LockCheck::Enabled(lock_check) = lock_check {
|
project::lock::LockOperation::new(
|
||||||
LockMode::Locked(target.interpreter(), lock_check)
|
if let LockCheck::Enabled(lock_check) = lock_check {
|
||||||
} else {
|
LockMode::Locked(target.interpreter(), lock_check)
|
||||||
LockMode::Write(target.interpreter())
|
} else {
|
||||||
},
|
LockMode::Write(target.interpreter())
|
||||||
&settings.resolver,
|
},
|
||||||
client_builder,
|
&settings.resolver,
|
||||||
&lock_state,
|
client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&lock_state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&WorkspaceCache::default(),
|
cache,
|
||||||
printer,
|
&WorkspaceCache::default(),
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.with_constraints(constraints)
|
||||||
|
.execute((&target).into()),
|
||||||
)
|
)
|
||||||
.with_constraints(constraints)
|
|
||||||
.execute((&target).into())
|
|
||||||
.await?
|
.await?
|
||||||
.into_lock();
|
.into_lock();
|
||||||
|
|
||||||
|
|
@ -1112,23 +1114,25 @@ async fn lock_and_sync(
|
||||||
|
|
||||||
// If the file was modified, we have to lock again, though the only expected change is
|
// If the file was modified, we have to lock again, though the only expected change is
|
||||||
// the addition of the minimum version specifiers.
|
// the addition of the minimum version specifiers.
|
||||||
lock = project::lock::LockOperation::new(
|
lock = Box::pin(
|
||||||
if let LockCheck::Enabled(lock_check) = lock_check {
|
project::lock::LockOperation::new(
|
||||||
LockMode::Locked(target.interpreter(), lock_check)
|
if let LockCheck::Enabled(lock_check) = lock_check {
|
||||||
} else {
|
LockMode::Locked(target.interpreter(), lock_check)
|
||||||
LockMode::Write(target.interpreter())
|
} else {
|
||||||
},
|
LockMode::Write(target.interpreter())
|
||||||
&settings.resolver,
|
},
|
||||||
client_builder,
|
&settings.resolver,
|
||||||
&lock_state,
|
client_builder,
|
||||||
Box::new(SummaryResolveLogger),
|
&lock_state,
|
||||||
concurrency,
|
Box::new(SummaryResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&WorkspaceCache::default(),
|
cache,
|
||||||
printer,
|
&WorkspaceCache::default(),
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute((&target).into()),
|
||||||
)
|
)
|
||||||
.execute((&target).into())
|
|
||||||
.await?
|
.await?
|
||||||
.into_lock();
|
.into_lock();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -199,19 +199,21 @@ pub(crate) async fn export(
|
||||||
let state = UniversalState::default();
|
let state = UniversalState::default();
|
||||||
|
|
||||||
// Lock the project.
|
// Lock the project.
|
||||||
let lock = match LockOperation::new(
|
let lock = match Box::pin(
|
||||||
mode,
|
LockOperation::new(
|
||||||
&settings,
|
mode,
|
||||||
&client_builder,
|
&settings,
|
||||||
&state,
|
&client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&workspace_cache,
|
cache,
|
||||||
printer,
|
&workspace_cache,
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute((&target).into()),
|
||||||
)
|
)
|
||||||
.execute((&target).into())
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result.into_lock(),
|
Ok(result) => result.into_lock(),
|
||||||
|
|
|
||||||
|
|
@ -190,20 +190,22 @@ pub(crate) async fn lock(
|
||||||
let state = UniversalState::default();
|
let state = UniversalState::default();
|
||||||
|
|
||||||
// Perform the lock operation.
|
// Perform the lock operation.
|
||||||
match LockOperation::new(
|
match Box::pin(
|
||||||
mode,
|
LockOperation::new(
|
||||||
&settings,
|
mode,
|
||||||
&client_builder,
|
&settings,
|
||||||
&state,
|
&client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&workspace_cache,
|
cache,
|
||||||
printer,
|
&workspace_cache,
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.with_refresh(&refresh)
|
||||||
|
.execute(target),
|
||||||
)
|
)
|
||||||
.with_refresh(&refresh)
|
|
||||||
.execute(target)
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(lock) => {
|
Ok(lock) => {
|
||||||
|
|
@ -355,7 +357,7 @@ impl<'env> LockOperation<'env> {
|
||||||
.ok_or_else(|| ProjectError::MissingLockfile)?;
|
.ok_or_else(|| ProjectError::MissingLockfile)?;
|
||||||
|
|
||||||
// Perform the lock operation, but don't write the lockfile to disk.
|
// Perform the lock operation, but don't write the lockfile to disk.
|
||||||
let result = do_lock(
|
let result = Box::pin(do_lock(
|
||||||
target,
|
target,
|
||||||
interpreter,
|
interpreter,
|
||||||
Some(existing),
|
Some(existing),
|
||||||
|
|
@ -370,7 +372,7 @@ impl<'env> LockOperation<'env> {
|
||||||
self.workspace_cache,
|
self.workspace_cache,
|
||||||
self.printer,
|
self.printer,
|
||||||
self.preview,
|
self.preview,
|
||||||
)
|
))
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
// If the lockfile changed, return an error.
|
// If the lockfile changed, return an error.
|
||||||
|
|
@ -399,7 +401,7 @@ impl<'env> LockOperation<'env> {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Perform the lock operation.
|
// Perform the lock operation.
|
||||||
let result = do_lock(
|
let result = Box::pin(do_lock(
|
||||||
target,
|
target,
|
||||||
interpreter,
|
interpreter,
|
||||||
existing,
|
existing,
|
||||||
|
|
@ -414,7 +416,7 @@ impl<'env> LockOperation<'env> {
|
||||||
self.workspace_cache,
|
self.workspace_cache,
|
||||||
self.printer,
|
self.printer,
|
||||||
self.preview,
|
self.preview,
|
||||||
)
|
))
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
// If the lockfile changed, write it to disk.
|
// If the lockfile changed, write it to disk.
|
||||||
|
|
|
||||||
|
|
@ -301,19 +301,21 @@ pub(crate) async fn remove(
|
||||||
let state = UniversalState::default();
|
let state = UniversalState::default();
|
||||||
|
|
||||||
// Lock and sync the environment, if necessary.
|
// Lock and sync the environment, if necessary.
|
||||||
let lock = match project::lock::LockOperation::new(
|
let lock = match Box::pin(
|
||||||
mode,
|
project::lock::LockOperation::new(
|
||||||
&settings.resolver,
|
mode,
|
||||||
&client_builder,
|
&settings.resolver,
|
||||||
&state,
|
&client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&WorkspaceCache::default(),
|
cache,
|
||||||
printer,
|
&WorkspaceCache::default(),
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute((&target).into()),
|
||||||
)
|
)
|
||||||
.execute((&target).into())
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result.into_lock(),
|
Ok(result) => result.into_lock(),
|
||||||
|
|
|
||||||
|
|
@ -271,23 +271,25 @@ hint: If you are running a script with `{}` in the shebang, you may need to incl
|
||||||
};
|
};
|
||||||
|
|
||||||
// Generate a lockfile.
|
// Generate a lockfile.
|
||||||
let lock = match project::lock::LockOperation::new(
|
let lock = match Box::pin(
|
||||||
mode,
|
project::lock::LockOperation::new(
|
||||||
&settings.resolver,
|
mode,
|
||||||
&client_builder,
|
&settings.resolver,
|
||||||
&lock_state,
|
&client_builder,
|
||||||
if show_resolution {
|
&lock_state,
|
||||||
Box::new(DefaultResolveLogger)
|
if show_resolution {
|
||||||
} else {
|
Box::new(DefaultResolveLogger)
|
||||||
Box::new(SummaryResolveLogger)
|
} else {
|
||||||
},
|
Box::new(SummaryResolveLogger)
|
||||||
concurrency,
|
},
|
||||||
&cache,
|
concurrency,
|
||||||
&workspace_cache,
|
&cache,
|
||||||
printer,
|
&workspace_cache,
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute(target),
|
||||||
)
|
)
|
||||||
.execute(target)
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result.into_lock(),
|
Ok(result) => result.into_lock(),
|
||||||
|
|
@ -748,23 +750,25 @@ hint: If you are running a script with `{}` in the shebang, you may need to incl
|
||||||
LockMode::Write(venv.interpreter())
|
LockMode::Write(venv.interpreter())
|
||||||
};
|
};
|
||||||
|
|
||||||
let result = match project::lock::LockOperation::new(
|
let result = match Box::pin(
|
||||||
mode,
|
project::lock::LockOperation::new(
|
||||||
&settings.resolver,
|
mode,
|
||||||
&client_builder,
|
&settings.resolver,
|
||||||
&lock_state,
|
&client_builder,
|
||||||
if show_resolution {
|
&lock_state,
|
||||||
Box::new(DefaultResolveLogger)
|
if show_resolution {
|
||||||
} else {
|
Box::new(DefaultResolveLogger)
|
||||||
Box::new(SummaryResolveLogger)
|
} else {
|
||||||
},
|
Box::new(SummaryResolveLogger)
|
||||||
concurrency,
|
},
|
||||||
&cache,
|
concurrency,
|
||||||
&workspace_cache,
|
&cache,
|
||||||
printer,
|
&workspace_cache,
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute(project.workspace().into()),
|
||||||
)
|
)
|
||||||
.execute(project.workspace().into())
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result,
|
Ok(result) => result,
|
||||||
|
|
|
||||||
|
|
@ -331,19 +331,21 @@ pub(crate) async fn sync(
|
||||||
SyncTarget::Script(script) => LockTarget::from(script),
|
SyncTarget::Script(script) => LockTarget::from(script),
|
||||||
};
|
};
|
||||||
|
|
||||||
let outcome = match LockOperation::new(
|
let outcome = match Box::pin(
|
||||||
mode,
|
LockOperation::new(
|
||||||
&settings.resolver,
|
mode,
|
||||||
&client_builder,
|
&settings.resolver,
|
||||||
&state,
|
&client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&workspace_cache,
|
cache,
|
||||||
printer,
|
&workspace_cache,
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute(lock_target),
|
||||||
)
|
)
|
||||||
.execute(lock_target)
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => Outcome::Success(result),
|
Ok(result) => Outcome::Success(result),
|
||||||
|
|
|
||||||
|
|
@ -139,19 +139,21 @@ pub(crate) async fn tree(
|
||||||
let state = UniversalState::default();
|
let state = UniversalState::default();
|
||||||
|
|
||||||
// Update the lockfile, if necessary.
|
// Update the lockfile, if necessary.
|
||||||
let lock = match LockOperation::new(
|
let lock = match Box::pin(
|
||||||
mode,
|
LockOperation::new(
|
||||||
&settings,
|
mode,
|
||||||
client_builder,
|
&settings,
|
||||||
&state,
|
client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&WorkspaceCache::default(),
|
cache,
|
||||||
printer,
|
&WorkspaceCache::default(),
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute(target),
|
||||||
)
|
)
|
||||||
.execute(target)
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result.into_lock(),
|
Ok(result) => result.into_lock(),
|
||||||
|
|
|
||||||
|
|
@ -450,19 +450,21 @@ async fn print_frozen_version(
|
||||||
let state = UniversalState::default();
|
let state = UniversalState::default();
|
||||||
|
|
||||||
// Lock and sync the environment, if necessary.
|
// Lock and sync the environment, if necessary.
|
||||||
let lock = match project::lock::LockOperation::new(
|
let lock = match Box::pin(
|
||||||
LockMode::Frozen,
|
project::lock::LockOperation::new(
|
||||||
&settings.resolver,
|
LockMode::Frozen,
|
||||||
&client_builder,
|
&settings.resolver,
|
||||||
&state,
|
&client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&WorkspaceCache::default(),
|
cache,
|
||||||
printer,
|
&WorkspaceCache::default(),
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute((&target).into()),
|
||||||
)
|
)
|
||||||
.execute((&target).into())
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result.into_lock(),
|
Ok(result) => result.into_lock(),
|
||||||
|
|
@ -590,19 +592,21 @@ async fn lock_and_sync(
|
||||||
let workspace_cache = WorkspaceCache::default();
|
let workspace_cache = WorkspaceCache::default();
|
||||||
|
|
||||||
// Lock and sync the environment, if necessary.
|
// Lock and sync the environment, if necessary.
|
||||||
let lock = match project::lock::LockOperation::new(
|
let lock = match Box::pin(
|
||||||
mode,
|
project::lock::LockOperation::new(
|
||||||
&settings.resolver,
|
mode,
|
||||||
&client_builder,
|
&settings.resolver,
|
||||||
&state,
|
&client_builder,
|
||||||
Box::new(DefaultResolveLogger),
|
&state,
|
||||||
concurrency,
|
Box::new(DefaultResolveLogger),
|
||||||
cache,
|
concurrency,
|
||||||
&workspace_cache,
|
cache,
|
||||||
printer,
|
&workspace_cache,
|
||||||
preview,
|
printer,
|
||||||
|
preview,
|
||||||
|
)
|
||||||
|
.execute((&target).into()),
|
||||||
)
|
)
|
||||||
.execute((&target).into())
|
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
Ok(result) => result.into_lock(),
|
Ok(result) => result.into_lock(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue