Skip to content

Add --emit-index-url and --emit-find-links to uv export#18370

Merged
charliermarsh merged 3 commits into
astral-sh:mainfrom
Bradley-McCallion:fix/10008
Jun 6, 2026
Merged

Add --emit-index-url and --emit-find-links to uv export#18370
charliermarsh merged 3 commits into
astral-sh:mainfrom
Bradley-McCallion:fix/10008

Conversation

@Bradley-McCallion

@Bradley-McCallion Bradley-McCallion commented Mar 8, 2026

Copy link
Copy Markdown
Contributor

Closes #10008

Summary

uv export now supports --emit-index-url and --emit-find-links, mirroring the equivalent flags on uv pip compile.

When --emit-index-url is passed, the generated requirements.txt will include --index-url and --extra-index-url directives for indexes configured in [tool.uv.index]. Explicit indexes are emitted as global --extra-index-url entries so the exported requirements file can reference packages pinned via [tool.uv.sources]; because requirements.txt cannot represent uv's per-package index pinning semantics, uv warns when explicit indexes are emitted. When --emit-find-links is passed, --find-links entries are included. Neither is emitted by default, preserving existing behavior.

Example output with --emit-index-url:

# This file was autogenerated by uv via the following command:
#    uv export --emit-index-url
--index-url https://pypi.org/simple
--extra-index-url https://download.pytorch.org/whl/cu121

anyio==3.7.0 \
    --hash=sha256:... \
    ...

Test Plan

  • Added requirements_txt_emit_indexes to cover default, extra, and explicit indexes alongside --find-links
  • Ran cargo test --package uv --test it --features test-git export::requirements_txt_emit_indexes -- --exact
  • Ran cargo clippy --package uv --test it --features test-git --locked -- -D warnings

NOTE This is my first time contributing to uv and I am also new to Rust to all feedback very welcome

@astral-sh-bot

astral-sh-bot Bot commented Jun 6, 2026

Copy link
Copy Markdown

uv test inventory changes

This PR changes the tests when compared with the latest main baseline.

  • Added tests: 4
  • Removed tests: 0
  • Changed suites: 1
uv::it: +4 / -0

Added:

  • uv::it::export::requirements_txt_emit_explicit_index_url
  • uv::it::export::requirements_txt_emit_extra_index_url
  • uv::it::export::requirements_txt_emit_index_url
  • uv::it::sync::no_install_env_var_conflicts

Removed: none

@charliermarsh charliermarsh marked this pull request as ready for review June 6, 2026 01:10
@charliermarsh charliermarsh added the enhancement New feature or improvement to existing functionality label Jun 6, 2026
@charliermarsh charliermarsh changed the title Add --emit-index-url and --emit-find-links to uv export Add --emit-index-url and --emit-find-links to uv export Jun 6, 2026
@charliermarsh charliermarsh enabled auto-merge (squash) June 6, 2026 01:15
@charliermarsh charliermarsh disabled auto-merge June 6, 2026 01:19
@charliermarsh charliermarsh merged commit 60ee390 into astral-sh:main Jun 6, 2026
53 of 55 checks passed
konstin added a commit that referenced this pull request Jun 10, 2026
Released on 2026-06-10.

### Enhancements

- Add `--emit-index-url` and `--emit-find-links` to `uv export`
([#18370](#18370))
- Add `--find-links` support for `uv pip list`
([#16103](#16103))
- Group executable install errors during `uv python install`
([#19691](#19691))
- Use ICF in macOS release builds to reduce binary sizes
([#19615](#19615))

### Preview features

- Add initial hidden `uv upgrade` command
([#19678](#19678))
- Reject Git revisions in `uv upgrade`
([#19742](#19742))

### Configuration

- Recognize `UV_NO_INSTALL_PROJECT`, `UV_NO_INSTALL_WORKSPACE`,
`UV_NO_INSTALL_LOCAL`
([#19323](#19323))

### Performance

- Speed up discovery of large workspaces
([#18311](#18311))

### Bug fixes

- Allow unknown preview flags with a warning again
([#19669](#19669))
- Apply dependency exclusions to direct requirements
([#19699](#19699))
- Avoid following external symlinks during cache clean
([#19682](#19682))
- Avoid following symlinks during cache prune
([#19543](#19543))
- Fix Git cache keys for worktrees and packed refs
([#19706](#19706))
- Make resolver error handling iterative to avoid stack overflows
([#19695](#19695))
- Pass `VIRTUAL_ENV` through `cygpath` inside `fish` on Windows
([#19703](#19703))
- Rebuild explicit local directory tool installs
([#19591](#19591))
- Validate egg top-level entries as identifiers
([#19679](#19679))

### Documentation

- Document `--find-links` caching behavior
([#19585](#19585))
- Add a small section for malware checks
([#19680](#19680))
blake-hamm added a commit to blake-hamm/bhamm-lab that referenced this pull request Jun 10, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [ghcr.io/astral-sh/uv](https://github.com/astral-sh/uv) | stage | patch | `0.11.19` → `0.11.20` |

---

### Release Notes

<details>
<summary>astral-sh/uv (ghcr.io/astral-sh/uv)</summary>

### [`v0.11.20`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#01120)

Released on 2026-06-10.

##### Enhancements

- Add `--emit-index-url` and `--emit-find-links` to `uv export` ([#&#8203;18370](astral-sh/uv#18370))
- Add `--find-links` support for `uv pip list` ([#&#8203;16103](astral-sh/uv#16103))
- Group executable install errors during `uv python install` ([#&#8203;19691](astral-sh/uv#19691))
- Use ICF in macOS release builds to reduce binary sizes ([#&#8203;19615](astral-sh/uv#19615))

##### Preview features

- Add initial hidden `uv upgrade` command ([#&#8203;19678](astral-sh/uv#19678))
- Reject Git revisions in `uv upgrade` ([#&#8203;19742](astral-sh/uv#19742))

##### Configuration

- Recognize `UV_NO_INSTALL_PROJECT`, `UV_NO_INSTALL_WORKSPACE`, `UV_NO_INSTALL_LOCAL` ([#&#8203;19323](astral-sh/uv#19323))

##### Performance

- Speed up discovery of large workspaces ([#&#8203;18311](astral-sh/uv#18311))

##### Bug fixes

- Allow unknown preview flags with a warning again ([#&#8203;19669](astral-sh/uv#19669))
- Apply dependency exclusions to direct requirements ([#&#8203;19699](astral-sh/uv#19699))
- Avoid following external symlinks during cache clean ([#&#8203;19682](astral-sh/uv#19682))
- Avoid following symlinks during cache prune ([#&#8203;19543](astral-sh/uv#19543))
- Fix Git cache keys for worktrees and packed refs ([#&#8203;19706](astral-sh/uv#19706))
- Make resolver error handling iterative to avoid stack overflows ([#&#8203;19695](astral-sh/uv#19695))
- Pass `VIRTUAL_ENV` through `cygpath` inside `fish` on Windows ([#&#8203;19703](astral-sh/uv#19703))
- Rebuild explicit local directory tool installs ([#&#8203;19591](astral-sh/uv#19591))
- Validate egg top-level entries as identifiers ([#&#8203;19679](astral-sh/uv#19679))

##### Documentation

- Document `--find-links` caching behavior ([#&#8203;19585](astral-sh/uv#19585))
- Add a small section for malware checks ([#&#8203;19680](astral-sh/uv#19680))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMjAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjIyMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: Renovate Bot <renovate@bhamm-lab.com>
Reviewed-on: https://codeberg.org/blake-hamm/bhamm-lab/pulls/186
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or improvement to existing functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Emit index urls in uv export same way as uv pip compile --emit-index-url

2 participants