Strip --index and --default-index from command header (#9288)
Some checks are pending
CI / Determine changes (push) Waiting to run
CI / lint (push) Waiting to run
CI / cargo clippy | ubuntu (push) Blocked by required conditions
CI / cargo clippy | windows (push) Blocked by required conditions
CI / cargo dev generate-all (push) Blocked by required conditions
CI / cargo shear (push) Waiting to run
CI / cargo test | ubuntu (push) Blocked by required conditions
CI / cargo test | macos (push) Blocked by required conditions
CI / cargo test | windows (push) Blocked by required conditions
CI / check windows trampoline | aarch64 (push) Blocked by required conditions
CI / check windows trampoline | i686 (push) Blocked by required conditions
CI / check windows trampoline | x86_64 (push) Blocked by required conditions
CI / test windows trampoline | i686 (push) Blocked by required conditions
CI / test windows trampoline | x86_64 (push) Blocked by required conditions
CI / typos (push) Waiting to run
CI / mkdocs (push) Waiting to run
CI / build binary | linux (push) Blocked by required conditions
CI / build binary | macos aarch64 (push) Blocked by required conditions
CI / build binary | macos x86_64 (push) Blocked by required conditions
CI / build binary | windows (push) Blocked by required conditions
CI / cargo build (msrv) (push) Blocked by required conditions
CI / build binary | freebsd (push) Blocked by required conditions
CI / ecosystem test | prefecthq/prefect (push) Blocked by required conditions
CI / ecosystem test | pallets/flask (push) Blocked by required conditions
CI / integration test | conda on ubuntu (push) Blocked by required conditions
CI / integration test | free-threaded on linux (push) Blocked by required conditions
CI / integration test | free-threaded on windows (push) Blocked by required conditions
CI / integration test | pypy on ubuntu (push) Blocked by required conditions
CI / integration test | pypy on windows (push) Blocked by required conditions
CI / integration test | graalpy on ubuntu (push) Blocked by required conditions
CI / integration test | graalpy on windows (push) Blocked by required conditions
CI / integration test | github actions (push) Blocked by required conditions
CI / integration test | determine publish changes (push) Blocked by required conditions
CI / integration test | uv publish (push) Blocked by required conditions
CI / check cache | ubuntu (push) Blocked by required conditions
CI / check cache | macos aarch64 (push) Blocked by required conditions
CI / check system | python on debian (push) Blocked by required conditions
CI / check system | python on fedora (push) Blocked by required conditions
CI / check system | python on ubuntu (push) Blocked by required conditions
CI / check system | python on opensuse (push) Blocked by required conditions
CI / check system | python on rocky linux 8 (push) Blocked by required conditions
CI / check system | python on rocky linux 9 (push) Blocked by required conditions
CI / check system | pypy on ubuntu (push) Blocked by required conditions
CI / check system | pyston (push) Blocked by required conditions
CI / check system | alpine (push) Blocked by required conditions
CI / check system | python on macos aarch64 (push) Blocked by required conditions
CI / check system | homebrew python on macos aarch64 (push) Blocked by required conditions
CI / check system | python on macos x86_64 (push) Blocked by required conditions
CI / check system | python3.10 on windows (push) Blocked by required conditions
CI / check system | python3.10 on windows x86 (push) Blocked by required conditions
CI / check system | python3.13 on windows (push) Blocked by required conditions
CI / check system | python3.12 via chocolatey (push) Blocked by required conditions
CI / check system | python3.9 via pyenv (push) Blocked by required conditions
CI / check system | python3.13 (push) Blocked by required conditions
CI / check system | conda3.11 on linux (push) Blocked by required conditions
CI / check system | conda3.8 on linux (push) Blocked by required conditions
CI / check system | conda3.11 on macos (push) Blocked by required conditions
CI / check system | conda3.8 on macos (push) Blocked by required conditions
CI / check system | conda3.11 on windows (push) Blocked by required conditions
CI / check system | conda3.8 on windows (push) Blocked by required conditions
CI / check system | amazonlinux (push) Blocked by required conditions
CI / check system | embedded python3.10 on windows (push) Blocked by required conditions
CI / benchmarks (push) Blocked by required conditions

## Summary

The new `--index` and `--default-index` flags are being omitted in the
`uv pip compile` header, unintentionally.

Closes https://github.com/astral-sh/uv/issues/9287.
This commit is contained in:
Charlie Marsh 2024-11-20 14:10:32 -05:00 committed by GitHub
parent b19ccb6b97
commit 829eed8e35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 373 additions and 23 deletions

View file

@ -582,14 +582,24 @@ fn cmd(
// Skip any index URLs, unless requested.
if !include_index_url {
if arg.starts_with("--extra-index-url=") || arg.starts_with("--index-url=") {
if arg.starts_with("--extra-index-url=")
|| arg.starts_with("--index-url=")
|| arg.starts_with("-i=")
|| arg.starts_with("--index=")
|| arg.starts_with("--default-index=")
{
// Reset state; skip this iteration.
*skip_next = None;
return Some(None);
}
// Mark the next item as (to be) skipped.
if arg == "--index-url" || arg == "--extra-index-url" {
if arg == "--index-url"
|| arg == "--extra-index-url"
|| arg == "-i"
|| arg == "--index"
|| arg == "--default-index"
{
*skip_next = Some(true);
return Some(None);
}

View file

@ -5459,45 +5459,385 @@ fn resolver_legacy() -> Result<()> {
Ok(())
}
/// Emit the `--index-url` and `--extra-index-url` locations.
/// Also, preserve the `--index-url` and `--extra-index-url` flags in the command in the header.
/// Avoid including the `--index` and `-i` flags in the header.
#[test]
fn hide_index_urls() -> Result<()> {
let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("iniconfig")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--default-index")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--default-index=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--index")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--index=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("-i")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("-i=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--index-url")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--index-url=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--extra-index-url")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--extra-index-url=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
Ok(())
}
/// Emit the `--index-url` and `--extra-index-url` locations, and preserve the `--index-url` and
/// `--extra-index-url` flags in the command in the header.
#[test]
fn emit_index_urls() -> Result<()> {
let context = TestContext::new("3.12");
let requirements_in = context.temp_dir.child("requirements.in");
requirements_in.write_str("black==23.10.1")?;
requirements_in.write_str("iniconfig")?;
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--default-index")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --default-index https://test.pypi.org/simple/
--index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--default-index=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --default-index=https://test.pypi.org/simple/
--index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--index")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --index https://test.pypi.org/simple/
--index-url https://pypi.org/simple
--extra-index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--index=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --index=https://test.pypi.org/simple/
--index-url https://pypi.org/simple
--extra-index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("-i")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url -i https://test.pypi.org/simple/
--index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("-i=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url -i=https://test.pypi.org/simple/
--index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--index-url")
.arg("https://test.pypi.org/simple/")
.arg("--extra-index-url")
.arg("https://pypi.org/simple")
.env(EnvVars::UV_EXTRA_INDEX_URL, "https://pypi.org/simple"), @r###"
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --index-url https://test.pypi.org/simple/
--index-url https://test.pypi.org/simple/
--extra-index-url https://pypi.org/simple
black==23.10.1
iniconfig==2.0.0
# via -r requirements.in
click==8.1.7
# via black
mypy-extensions==1.0.0
# via black
packaging==24.0
# via black
pathspec==0.12.1
# via black
platformdirs==4.2.0
# via black
----- stderr -----
Resolved 6 packages in [TIME]
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--index-url=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --index-url=https://test.pypi.org/simple/
--index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--extra-index-url")
.arg("https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --extra-index-url https://test.pypi.org/simple/
--index-url https://pypi.org/simple
--extra-index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);
uv_snapshot!(context.filters(), context.pip_compile()
.arg("requirements.in")
.arg("--emit-index-url")
.arg("--extra-index-url=https://test.pypi.org/simple/"), @r###"
success: true
exit_code: 0
----- stdout -----
# This file was autogenerated by uv via the following command:
# uv pip compile --cache-dir [CACHE_DIR] requirements.in --emit-index-url --extra-index-url=https://test.pypi.org/simple/
--index-url https://pypi.org/simple
--extra-index-url https://test.pypi.org/simple/
iniconfig==2.0.0
# via -r requirements.in
----- stderr -----
Resolved 1 package in [TIME]
"###
);