mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-07 21:35:00 +00:00
Add --python-platform and --python-version to uv sync
This commit is contained in:
parent
a824468c8b
commit
d16359f86a
10 changed files with 175 additions and 4 deletions
|
@ -3395,6 +3395,31 @@ pub struct SyncArgs {
|
||||||
)]
|
)]
|
||||||
pub python: Option<Maybe<String>>,
|
pub python: Option<Maybe<String>>,
|
||||||
|
|
||||||
|
/// The minimum Python version that should be supported by the requirements (e.g., `3.7` or
|
||||||
|
/// `3.7.9`).
|
||||||
|
///
|
||||||
|
/// If a patch version is omitted, the minimum patch version is assumed. For example, `3.7` is
|
||||||
|
/// mapped to `3.7.0`.
|
||||||
|
#[arg(long)]
|
||||||
|
pub python_version: Option<PythonVersion>,
|
||||||
|
|
||||||
|
/// The platform for which requirements should be installed.
|
||||||
|
///
|
||||||
|
/// Represented as a "target triple", a string that describes the target platform in terms of
|
||||||
|
/// its CPU, vendor, and operating system name, like `x86_64-unknown-linux-gnu` or
|
||||||
|
/// `aarch64-apple-darwin`.
|
||||||
|
///
|
||||||
|
/// When targeting macOS (Darwin), the default minimum version is `12.0`. Use
|
||||||
|
/// `MACOSX_DEPLOYMENT_TARGET` to specify a different minimum version, e.g., `13.0`.
|
||||||
|
///
|
||||||
|
/// WARNING: When specified, uv will select wheels that are compatible with the _target_
|
||||||
|
/// platform; as a result, the installed distributions may not be compatible with the _current_
|
||||||
|
/// platform. Conversely, any distributions that are built from source may be incompatible with
|
||||||
|
/// the _target_ platform, as they will be built for the _current_ platform. The
|
||||||
|
/// `--python-platform` option is intended for advanced use cases.
|
||||||
|
#[arg(long)]
|
||||||
|
pub python_platform: Option<TargetTriple>,
|
||||||
|
|
||||||
/// Check if the Python environment is synchronized with the project.
|
/// Check if the Python environment is synchronized with the project.
|
||||||
///
|
///
|
||||||
/// If the environment is not up to date, uv will exit with an error.
|
/// If the environment is not up to date, uv will exit with an error.
|
||||||
|
|
|
@ -1014,6 +1014,8 @@ async fn lock_and_sync(
|
||||||
EditableMode::Editable,
|
EditableMode::Editable,
|
||||||
InstallOptions::default(),
|
InstallOptions::default(),
|
||||||
Modifications::Sufficient,
|
Modifications::Sufficient,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
settings.into(),
|
settings.into(),
|
||||||
network_settings,
|
network_settings,
|
||||||
&sync_state,
|
&sync_state,
|
||||||
|
|
|
@ -350,6 +350,8 @@ pub(crate) async fn remove(
|
||||||
EditableMode::Editable,
|
EditableMode::Editable,
|
||||||
InstallOptions::default(),
|
InstallOptions::default(),
|
||||||
Modifications::Exact,
|
Modifications::Exact,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
(&settings).into(),
|
(&settings).into(),
|
||||||
&network_settings,
|
&network_settings,
|
||||||
&state,
|
&state,
|
||||||
|
|
|
@ -298,6 +298,8 @@ hint: If you are running a script with `{}` in the shebang, you may need to incl
|
||||||
editable,
|
editable,
|
||||||
install_options,
|
install_options,
|
||||||
modifications,
|
modifications,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
(&settings).into(),
|
(&settings).into(),
|
||||||
&network_settings,
|
&network_settings,
|
||||||
&sync_state,
|
&sync_state,
|
||||||
|
@ -796,6 +798,8 @@ hint: If you are running a script with `{}` in the shebang, you may need to incl
|
||||||
editable,
|
editable,
|
||||||
install_options,
|
install_options,
|
||||||
modifications,
|
modifications,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
(&settings).into(),
|
(&settings).into(),
|
||||||
&network_settings,
|
&network_settings,
|
||||||
&sync_state,
|
&sync_state,
|
||||||
|
|
|
@ -12,7 +12,7 @@ use uv_client::{BaseClientBuilder, FlatIndexClient, RegistryClientBuilder};
|
||||||
use uv_configuration::{
|
use uv_configuration::{
|
||||||
Concurrency, Constraints, DependencyGroups, DependencyGroupsWithDefaults, DryRun, EditableMode,
|
Concurrency, Constraints, DependencyGroups, DependencyGroupsWithDefaults, DryRun, EditableMode,
|
||||||
ExtrasSpecification, ExtrasSpecificationWithDefaults, HashCheckingMode, InstallOptions,
|
ExtrasSpecification, ExtrasSpecificationWithDefaults, HashCheckingMode, InstallOptions,
|
||||||
PreviewMode,
|
PreviewMode, TargetTriple,
|
||||||
};
|
};
|
||||||
use uv_dispatch::BuildDispatch;
|
use uv_dispatch::BuildDispatch;
|
||||||
use uv_distribution_types::{
|
use uv_distribution_types::{
|
||||||
|
@ -23,7 +23,9 @@ use uv_installer::SitePackages;
|
||||||
use uv_normalize::{DefaultExtras, DefaultGroups, PackageName};
|
use uv_normalize::{DefaultExtras, DefaultGroups, PackageName};
|
||||||
use uv_pep508::{MarkerTree, VersionOrUrl};
|
use uv_pep508::{MarkerTree, VersionOrUrl};
|
||||||
use uv_pypi_types::{ParsedArchiveUrl, ParsedGitUrl, ParsedUrl};
|
use uv_pypi_types::{ParsedArchiveUrl, ParsedGitUrl, ParsedUrl};
|
||||||
use uv_python::{PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest};
|
use uv_python::{
|
||||||
|
PythonDownloads, PythonEnvironment, PythonPreference, PythonRequest, PythonVersion,
|
||||||
|
};
|
||||||
use uv_resolver::{FlatIndex, Installable, Lock};
|
use uv_resolver::{FlatIndex, Installable, Lock};
|
||||||
use uv_scripts::{Pep723ItemRef, Pep723Script};
|
use uv_scripts::{Pep723ItemRef, Pep723Script};
|
||||||
use uv_settings::PythonInstallMirrors;
|
use uv_settings::PythonInstallMirrors;
|
||||||
|
@ -35,6 +37,7 @@ use uv_workspace::{DiscoveryOptions, MemberDiscovery, VirtualProject, Workspace,
|
||||||
use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger, InstallLogger};
|
use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger, InstallLogger};
|
||||||
use crate::commands::pip::operations;
|
use crate::commands::pip::operations;
|
||||||
use crate::commands::pip::operations::Modifications;
|
use crate::commands::pip::operations::Modifications;
|
||||||
|
use crate::commands::pip::resolution_markers;
|
||||||
use crate::commands::project::install_target::InstallTarget;
|
use crate::commands::project::install_target::InstallTarget;
|
||||||
use crate::commands::project::lock::{LockMode, LockOperation, LockResult};
|
use crate::commands::project::lock::{LockMode, LockOperation, LockResult};
|
||||||
use crate::commands::project::lock_target::LockTarget;
|
use crate::commands::project::lock_target::LockTarget;
|
||||||
|
@ -62,6 +65,8 @@ pub(crate) async fn sync(
|
||||||
install_options: InstallOptions,
|
install_options: InstallOptions,
|
||||||
modifications: Modifications,
|
modifications: Modifications,
|
||||||
python: Option<String>,
|
python: Option<String>,
|
||||||
|
python_platform: Option<TargetTriple>,
|
||||||
|
python_version: Option<PythonVersion>,
|
||||||
install_mirrors: PythonInstallMirrors,
|
install_mirrors: PythonInstallMirrors,
|
||||||
python_preference: PythonPreference,
|
python_preference: PythonPreference,
|
||||||
python_downloads: PythonDownloads,
|
python_downloads: PythonDownloads,
|
||||||
|
@ -445,6 +450,8 @@ pub(crate) async fn sync(
|
||||||
editable,
|
editable,
|
||||||
install_options,
|
install_options,
|
||||||
modifications,
|
modifications,
|
||||||
|
python_platform.as_ref(),
|
||||||
|
python_version.as_ref(),
|
||||||
(&settings).into(),
|
(&settings).into(),
|
||||||
&network_settings,
|
&network_settings,
|
||||||
&state,
|
&state,
|
||||||
|
@ -580,6 +587,8 @@ pub(super) async fn do_sync(
|
||||||
editable: EditableMode,
|
editable: EditableMode,
|
||||||
install_options: InstallOptions,
|
install_options: InstallOptions,
|
||||||
modifications: Modifications,
|
modifications: Modifications,
|
||||||
|
python_platform: Option<&TargetTriple>,
|
||||||
|
python_version: Option<&PythonVersion>,
|
||||||
settings: InstallerSettingsRef<'_>,
|
settings: InstallerSettingsRef<'_>,
|
||||||
network_settings: &NetworkSettings,
|
network_settings: &NetworkSettings,
|
||||||
state: &PlatformState,
|
state: &PlatformState,
|
||||||
|
@ -634,7 +643,7 @@ pub(super) async fn do_sync(
|
||||||
target.validate_groups(groups)?;
|
target.validate_groups(groups)?;
|
||||||
|
|
||||||
// Determine the markers to use for resolution.
|
// Determine the markers to use for resolution.
|
||||||
let marker_env = venv.interpreter().resolver_marker_environment();
|
let marker_env = resolution_markers(python_version, python_platform, venv.interpreter());
|
||||||
|
|
||||||
// Validate that the platform is supported by the lockfile.
|
// Validate that the platform is supported by the lockfile.
|
||||||
let environments = target.lock().supported_environments();
|
let environments = target.lock().supported_environments();
|
||||||
|
|
|
@ -503,6 +503,8 @@ async fn lock_and_sync(
|
||||||
EditableMode::Editable,
|
EditableMode::Editable,
|
||||||
install_options,
|
install_options,
|
||||||
Modifications::Sufficient,
|
Modifications::Sufficient,
|
||||||
|
None,
|
||||||
|
None,
|
||||||
settings.into(),
|
settings.into(),
|
||||||
&network_settings,
|
&network_settings,
|
||||||
&state,
|
&state,
|
||||||
|
|
|
@ -1802,6 +1802,8 @@ async fn run_project(
|
||||||
args.install_options,
|
args.install_options,
|
||||||
args.modifications,
|
args.modifications,
|
||||||
args.python,
|
args.python,
|
||||||
|
args.python_platform,
|
||||||
|
args.python_version,
|
||||||
args.install_mirrors,
|
args.install_mirrors,
|
||||||
globals.python_preference,
|
globals.python_preference,
|
||||||
globals.python_downloads,
|
globals.python_downloads,
|
||||||
|
|
|
@ -1142,6 +1142,8 @@ pub(crate) struct SyncSettings {
|
||||||
pub(crate) all_packages: bool,
|
pub(crate) all_packages: bool,
|
||||||
pub(crate) package: Option<PackageName>,
|
pub(crate) package: Option<PackageName>,
|
||||||
pub(crate) python: Option<String>,
|
pub(crate) python: Option<String>,
|
||||||
|
pub(crate) python_platform: Option<TargetTriple>,
|
||||||
|
pub(crate) python_version: Option<PythonVersion>,
|
||||||
pub(crate) install_mirrors: PythonInstallMirrors,
|
pub(crate) install_mirrors: PythonInstallMirrors,
|
||||||
pub(crate) refresh: Refresh,
|
pub(crate) refresh: Refresh,
|
||||||
pub(crate) settings: ResolverInstallerSettings,
|
pub(crate) settings: ResolverInstallerSettings,
|
||||||
|
@ -1182,6 +1184,8 @@ impl SyncSettings {
|
||||||
package,
|
package,
|
||||||
script,
|
script,
|
||||||
python,
|
python,
|
||||||
|
python_platform,
|
||||||
|
python_version,
|
||||||
check,
|
check,
|
||||||
no_check,
|
no_check,
|
||||||
} = args;
|
} = args;
|
||||||
|
@ -1241,6 +1245,8 @@ impl SyncSettings {
|
||||||
all_packages,
|
all_packages,
|
||||||
package,
|
package,
|
||||||
python: python.and_then(Maybe::into_option),
|
python: python.and_then(Maybe::into_option),
|
||||||
|
python_platform,
|
||||||
|
python_version,
|
||||||
refresh: Refresh::from(refresh),
|
refresh: Refresh::from(refresh),
|
||||||
settings,
|
settings,
|
||||||
install_mirrors,
|
install_mirrors,
|
||||||
|
|
|
@ -9989,3 +9989,76 @@ fn sync_url_with_query_parameters() -> Result<()> {
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sync_python_platform() -> Result<()> {
|
||||||
|
let context = TestContext::new("3.12");
|
||||||
|
|
||||||
|
let pyproject_toml = context.temp_dir.child("pyproject.toml");
|
||||||
|
pyproject_toml.write_str(
|
||||||
|
r#"
|
||||||
|
[project]
|
||||||
|
name = "project"
|
||||||
|
version = "0.1.0"
|
||||||
|
requires-python = ">=3.12"
|
||||||
|
dependencies = ["black"]
|
||||||
|
"#,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Lock the project
|
||||||
|
context.lock().assert().success();
|
||||||
|
|
||||||
|
// Sync with a specific platform should filter packages
|
||||||
|
uv_snapshot!(context.filters(), context.sync().arg("--python-platform").arg("linux"), @r###"
|
||||||
|
success: true
|
||||||
|
exit_code: 0
|
||||||
|
----- stdout -----
|
||||||
|
|
||||||
|
----- stderr -----
|
||||||
|
Resolved 8 packages in [TIME]
|
||||||
|
Prepared 6 packages in [TIME]
|
||||||
|
Installed 6 packages in [TIME]
|
||||||
|
+ black==24.3.0
|
||||||
|
+ click==8.1.7
|
||||||
|
+ mypy-extensions==1.0.0
|
||||||
|
+ packaging==24.0
|
||||||
|
+ pathspec==0.12.1
|
||||||
|
+ platformdirs==4.2.0
|
||||||
|
"###);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn sync_with_python_version() -> Result<()> {
|
||||||
|
let context = TestContext::new("3.12");
|
||||||
|
|
||||||
|
let pyproject_toml = context.temp_dir.child("pyproject.toml");
|
||||||
|
pyproject_toml.write_str(
|
||||||
|
r#"
|
||||||
|
[project]
|
||||||
|
name = "project"
|
||||||
|
version = "0.1.0"
|
||||||
|
requires-python = ">=3.8"
|
||||||
|
dependencies = ["typing-extensions"]
|
||||||
|
"#,
|
||||||
|
)?;
|
||||||
|
|
||||||
|
// Lock the project
|
||||||
|
context.lock().assert().success();
|
||||||
|
|
||||||
|
// Sync with a specific Python version
|
||||||
|
uv_snapshot!(context.filters(), context.sync().arg("--python-version").arg("3.8"), @r###"
|
||||||
|
success: true
|
||||||
|
exit_code: 0
|
||||||
|
----- stdout -----
|
||||||
|
|
||||||
|
----- stderr -----
|
||||||
|
Resolved 2 packages in [TIME]
|
||||||
|
Prepared 1 package in [TIME]
|
||||||
|
Installed 1 package in [TIME]
|
||||||
|
+ typing-extensions==4.10.0
|
||||||
|
"###);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
|
@ -1129,7 +1129,53 @@ used.</p>
|
||||||
synced to the given environment. The interpreter will be used to create a virtual
|
synced to the given environment. The interpreter will be used to create a virtual
|
||||||
environment in the project.</p>
|
environment in the project.</p>
|
||||||
<p>See <a href="#uv-python">uv python</a> for details on Python discovery and supported request formats.</p>
|
<p>See <a href="#uv-python">uv python</a> for details on Python discovery and supported request formats.</p>
|
||||||
<p>May also be set with the <code>UV_PYTHON</code> environment variable.</p></dd><dt id="uv-sync--quiet"><a href="#uv-sync--quiet"><code>--quiet</code></a>, <code>-q</code></dt><dd><p>Use quiet output.</p>
|
<p>May also be set with the <code>UV_PYTHON</code> environment variable.</p></dd><dt id="uv-sync--python-platform"><a href="#uv-sync--python-platform"><code>--python-platform</code></a> <i>python-platform</i></dt><dd><p>The platform for which requirements should be installed.</p>
|
||||||
|
<p>Represented as a "target triple", a string that describes the target platform in terms of its CPU, vendor, and operating system name, like <code>x86_64-unknown-linux-gnu</code> or <code>aarch64-apple-darwin</code>.</p>
|
||||||
|
<p>When targeting macOS (Darwin), the default minimum version is <code>12.0</code>. Use <code>MACOSX_DEPLOYMENT_TARGET</code> to specify a different minimum version, e.g., <code>13.0</code>.</p>
|
||||||
|
<p>WARNING: When specified, uv will select wheels that are compatible with the <em>target</em> platform; as a result, the installed distributions may not be compatible with the <em>current</em> platform. Conversely, any distributions that are built from source may be incompatible with the <em>target</em> platform, as they will be built for the <em>current</em> platform. The <code>--python-platform</code> option is intended for advanced use cases.</p>
|
||||||
|
<p>Possible values:</p>
|
||||||
|
<ul>
|
||||||
|
<li><code>windows</code>: An alias for <code>x86_64-pc-windows-msvc</code>, the default target for Windows</li>
|
||||||
|
<li><code>linux</code>: An alias for <code>x86_64-unknown-linux-gnu</code>, the default target for Linux</li>
|
||||||
|
<li><code>macos</code>: An alias for <code>aarch64-apple-darwin</code>, the default target for macOS</li>
|
||||||
|
<li><code>x86_64-pc-windows-msvc</code>: A 64-bit x86 Windows target</li>
|
||||||
|
<li><code>i686-pc-windows-msvc</code>: A 32-bit x86 Windows target</li>
|
||||||
|
<li><code>x86_64-unknown-linux-gnu</code>: An x86 Linux target. Equivalent to <code>x86_64-manylinux_2_17</code></li>
|
||||||
|
<li><code>aarch64-apple-darwin</code>: An ARM-based macOS target, as seen on Apple Silicon devices</li>
|
||||||
|
<li><code>x86_64-apple-darwin</code>: An x86 macOS target</li>
|
||||||
|
<li><code>aarch64-unknown-linux-gnu</code>: An ARM64 Linux target. Equivalent to <code>aarch64-manylinux_2_17</code></li>
|
||||||
|
<li><code>aarch64-unknown-linux-musl</code>: An ARM64 Linux target</li>
|
||||||
|
<li><code>x86_64-unknown-linux-musl</code>: An <code>x86_64</code> Linux target</li>
|
||||||
|
<li><code>x86_64-manylinux2014</code>: An <code>x86_64</code> target for the <code>manylinux2014</code> platform. Equivalent to <code>x86_64-manylinux_2_17</code></li>
|
||||||
|
<li><code>x86_64-manylinux_2_17</code>: An <code>x86_64</code> target for the <code>manylinux_2_17</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_28</code>: An <code>x86_64</code> target for the <code>manylinux_2_28</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_31</code>: An <code>x86_64</code> target for the <code>manylinux_2_31</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_32</code>: An <code>x86_64</code> target for the <code>manylinux_2_32</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_33</code>: An <code>x86_64</code> target for the <code>manylinux_2_33</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_34</code>: An <code>x86_64</code> target for the <code>manylinux_2_34</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_35</code>: An <code>x86_64</code> target for the <code>manylinux_2_35</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_36</code>: An <code>x86_64</code> target for the <code>manylinux_2_36</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_37</code>: An <code>x86_64</code> target for the <code>manylinux_2_37</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_38</code>: An <code>x86_64</code> target for the <code>manylinux_2_38</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_39</code>: An <code>x86_64</code> target for the <code>manylinux_2_39</code> platform</li>
|
||||||
|
<li><code>x86_64-manylinux_2_40</code>: An <code>x86_64</code> target for the <code>manylinux_2_40</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux2014</code>: An ARM64 target for the <code>manylinux2014</code> platform. Equivalent to <code>aarch64-manylinux_2_17</code></li>
|
||||||
|
<li><code>aarch64-manylinux_2_17</code>: An ARM64 target for the <code>manylinux_2_17</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_28</code>: An ARM64 target for the <code>manylinux_2_28</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_31</code>: An ARM64 target for the <code>manylinux_2_31</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_32</code>: An ARM64 target for the <code>manylinux_2_32</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_33</code>: An ARM64 target for the <code>manylinux_2_33</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_34</code>: An ARM64 target for the <code>manylinux_2_34</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_35</code>: An ARM64 target for the <code>manylinux_2_35</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_36</code>: An ARM64 target for the <code>manylinux_2_36</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_37</code>: An ARM64 target for the <code>manylinux_2_37</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_38</code>: An ARM64 target for the <code>manylinux_2_38</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_39</code>: An ARM64 target for the <code>manylinux_2_39</code> platform</li>
|
||||||
|
<li><code>aarch64-manylinux_2_40</code>: An ARM64 target for the <code>manylinux_2_40</code> platform</li>
|
||||||
|
<li><code>wasm32-pyodide2024</code>: A wasm32 target using the the Pyodide 2024 platform. Meant for use with Python 3.12</li>
|
||||||
|
</ul></dd><dt id="uv-sync--python-version"><a href="#uv-sync--python-version"><code>--python-version</code></a> <i>python-version</i></dt><dd><p>The minimum Python version that should be supported by the requirements (e.g., <code>3.7</code> or <code>3.7.9</code>).</p>
|
||||||
|
<p>If a patch version is omitted, the minimum patch version is assumed. For example, <code>3.7</code> is mapped to <code>3.7.0</code>.</p>
|
||||||
|
</dd><dt id="uv-sync--quiet"><a href="#uv-sync--quiet"><code>--quiet</code></a>, <code>-q</code></dt><dd><p>Use quiet output.</p>
|
||||||
<p>Repeating this option, e.g., <code>-qq</code>, will enable a silent mode in which uv will write no output to stdout.</p>
|
<p>Repeating this option, e.g., <code>-qq</code>, will enable a silent mode in which uv will write no output to stdout.</p>
|
||||||
</dd><dt id="uv-sync--refresh"><a href="#uv-sync--refresh"><code>--refresh</code></a></dt><dd><p>Refresh all cached data</p>
|
</dd><dt id="uv-sync--refresh"><a href="#uv-sync--refresh"><code>--refresh</code></a></dt><dd><p>Refresh all cached data</p>
|
||||||
</dd><dt id="uv-sync--refresh-package"><a href="#uv-sync--refresh-package"><code>--refresh-package</code></a> <i>refresh-package</i></dt><dd><p>Refresh cached data for a specific package</p>
|
</dd><dt id="uv-sync--refresh-package"><a href="#uv-sync--refresh-package"><code>--refresh-package</code></a> <i>refresh-package</i></dt><dd><p>Refresh cached data for a specific package</p>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue