Add env arg UV_NO_EDITABLE (#12773)

<!--
Thank you for contributing to uv! To help us out with reviewing, please
consider the following:

- Does this pull request include a summary of the change? (See below.)
- Does this pull request include a descriptive title?
- Does this pull request include references to any relevant issues?
-->

## Summary

<!-- What's the purpose of the change? What does it do, and why? -->

Adds the env arg `UV_NO_EDITABLE`.
Closes #12735 

## Test Plan

<!-- How was it tested? -->


![image](https://github.com/user-attachments/assets/0bfde9e1-ce6e-4fcc-a8c2-0bf970c9aa9e)


I could not find a place where to add tests, any help would be
appreciated

---------

Co-authored-by: Aria Desires <aria.desires@gmail.com>
This commit is contained in:
Haaris Rahman 2025-04-10 12:56:07 -07:00 committed by GitHub
parent 719bab307c
commit ef68fca591
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 25 additions and 2 deletions

View file

@ -2865,7 +2865,7 @@ pub struct RunArgs {
/// Install any editable dependencies, including the project and any workspace members, as
/// non-editable.
#[arg(long)]
#[arg(long, value_parser = clap::builder::BoolishValueParser::new(), env = EnvVars::UV_NO_EDITABLE)]
pub no_editable: bool,
/// Do not remove extraneous packages present in the environment.
@ -3146,7 +3146,7 @@ pub struct SyncArgs {
/// Install any editable dependencies, including the project and any workspace members, as
/// non-editable.
#[arg(long)]
#[arg(long, value_parser = clap::builder::BoolishValueParser::new(), env = EnvVars::UV_NO_EDITABLE)]
pub no_editable: bool,
/// Do not remove extraneous packages present in the environment.

View file

@ -158,6 +158,11 @@ impl EnvVars {
/// will compile Python source files to bytecode after installation.
pub const UV_COMPILE_BYTECODE: &'static str = "UV_COMPILE_BYTECODE";
/// Equivalent to the `--no-editable` command-line argument. If set, uv
/// installs any editable dependencies, including the project and any workspace members, as
/// non-editable
pub const UV_NO_EDITABLE: &'static str = "UV_NO_EDITABLE";
/// Equivalent to the `--no-binary` command-line argument. If set, uv will install
/// all packages from source. The resolver will still use pre-built wheels to
/// extract package metadata, if available.

View file

@ -5392,6 +5392,16 @@ fn sync_no_editable() -> Result<()> {
+ root==0.1.0 (from file://[TEMP_DIR]/)
"###);
uv_snapshot!(context.filters(), context.sync().env(EnvVars::UV_NO_EDITABLE, "1"), @r"
success: true
exit_code: 0
----- stdout -----
----- stderr -----
Resolved 2 packages in [TIME]
Audited 2 packages in [TIME]
");
// Remove the project.
fs_err::remove_dir_all(&child)?;