mirror of
https://github.com/astral-sh/uv.git
synced 2025-10-28 10:50:29 +00:00
Add compatibility arguments for pip list (#3055)
Hello! This is my first PR so do not hesitate to let me know if anything should be done differently 🙌🏽 ## Summary This PR starts adding useful error messages and warnings when people pass redundant or unsupported arguments to `pip list`. For now, I've just covered `pip list --outdated`, which is currently unsupported. Closes https://github.com/astral-sh/uv/issues/2948
This commit is contained in:
parent
52472cef6e
commit
193704f98b
3 changed files with 43 additions and 11 deletions
|
|
@ -1109,6 +1109,9 @@ pub(crate) struct PipListArgs {
|
||||||
/// should be used with caution.
|
/// should be used with caution.
|
||||||
#[clap(long, env = "UV_SYSTEM_PYTHON", group = "discovery")]
|
#[clap(long, env = "UV_SYSTEM_PYTHON", group = "discovery")]
|
||||||
pub(crate) system: bool,
|
pub(crate) system: bool,
|
||||||
|
|
||||||
|
#[command(flatten)]
|
||||||
|
pub(crate) compat_args: compat::PipListCompatArgs,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Args)]
|
#[derive(Args)]
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,31 @@ impl CompatArgs for PipCompileCompatArgs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Arguments for `pip list` compatibility.
|
||||||
|
///
|
||||||
|
/// These represent a subset of the `pip list` interface that uv supports by default.
|
||||||
|
#[derive(Args)]
|
||||||
|
#[allow(clippy::struct_excessive_bools)]
|
||||||
|
pub(crate) struct PipListCompatArgs {
|
||||||
|
#[clap(long, hide = true)]
|
||||||
|
outdated: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl CompatArgs for crate::compat::PipListCompatArgs {
|
||||||
|
/// Validate the arguments passed for `pip list` compatibility.
|
||||||
|
///
|
||||||
|
/// This method will warn when an argument is passed that has no effect but matches uv's
|
||||||
|
/// behavior. If an argument is passed that does _not_ match uv's behavior (e.g.,
|
||||||
|
/// `--outdated`), this method will return an error.
|
||||||
|
fn validate(&self) -> Result<()> {
|
||||||
|
if self.outdated {
|
||||||
|
return Err(anyhow!("pip list's `--outdated` is unsupported."));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Arguments for `pip-sync` compatibility.
|
/// Arguments for `pip-sync` compatibility.
|
||||||
///
|
///
|
||||||
/// These represent a subset of the `pip-sync` interface that uv supports by default.
|
/// These represent a subset of the `pip-sync` interface that uv supports by default.
|
||||||
|
|
|
||||||
|
|
@ -454,17 +454,21 @@ async fn run() -> Result<ExitStatus> {
|
||||||
),
|
),
|
||||||
Commands::Pip(PipNamespace {
|
Commands::Pip(PipNamespace {
|
||||||
command: PipCommand::List(args),
|
command: PipCommand::List(args),
|
||||||
}) => commands::pip_list(
|
}) => {
|
||||||
args.editable,
|
args.compat_args.validate()?;
|
||||||
args.exclude_editable,
|
|
||||||
&args.exclude,
|
commands::pip_list(
|
||||||
&args.format,
|
args.editable,
|
||||||
args.strict,
|
args.exclude_editable,
|
||||||
args.python.as_deref(),
|
&args.exclude,
|
||||||
args.system,
|
&args.format,
|
||||||
&cache,
|
args.strict,
|
||||||
printer,
|
args.python.as_deref(),
|
||||||
),
|
args.system,
|
||||||
|
&cache,
|
||||||
|
printer,
|
||||||
|
)
|
||||||
|
}
|
||||||
Commands::Pip(PipNamespace {
|
Commands::Pip(PipNamespace {
|
||||||
command: PipCommand::Show(args),
|
command: PipCommand::Show(args),
|
||||||
}) => commands::pip_show(
|
}) => commands::pip_show(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue