Resolve find-links paths relative to the configuration file#10827
Resolve find-links paths relative to the configuration file#10827charliermarsh merged 8 commits intoastral-sh:mainfrom
find-links paths relative to the configuration file#10827Conversation
… pyproject.toml or uv.toml is now relative to the config file
…onfig-file uv.toml)
|
Thanks. It would be useful to include a test here (that fails on |
|
|
We already have a few checked-in that you can use in |
|
@charliermarsh |
|
@charliermarsh Anything else required to merge here? |
|
No, I just need time to review the changes. |
|
Great, thanks for your time! |
find-links paths relative to the configuration file
|
Indeed wasn't sure about the &mut. Thanks for the fixes |
|
Yeah the |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.5.22` -> `0.5.24` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>astral-sh/uv (astral-sh/uv)</summary> ### [`v0.5.24`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0524) [Compare Source](astral-sh/uv@0.5.23...0.5.24) ##### Enhancements - Improve determinism of resolution by always setting package priorities ([#​10853](astral-sh/uv#10853)) - Upgrade to `cargo-dist` 0.28.0; improves several installer behaviors ([#​10884](astral-sh/uv#10884)) ##### Performance - Remove dependencies clone in resolver ([#​10880](astral-sh/uv#10880)) - Use Hashbrown's raw entry API to reduce hashes and clone in resolver priority determination ([#​10881](astral-sh/uv#10881)) ##### Bug fixes - Allow fallback to Python download on non-critical discovery errors ([#​10908](astral-sh/uv#10908)) ##### Preview features - Register managed Python version with the Windows Registry (PEP 514) ([#​10634](astral-sh/uv#10634)) ##### Documentation - Improve documentation for some environment variables ([#​10887](astral-sh/uv#10887)) - Add git subdirectory example ([#​10894](astral-sh/uv#10894)) ### [`v0.5.23`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0523) [Compare Source](astral-sh/uv@0.5.22...0.5.23) ##### Enhancements - Add `--refresh` to `uv venv` ([#​10834](astral-sh/uv#10834)) - Add `--no-default-groups` command-line flag ([#​10618](astral-sh/uv#10618)) ##### Bug fixes - Sort extras and groups when comparing lockfile requirements ([#​10856](astral-sh/uv#10856)) - Include `commit_id` and `requested_revision` in `direct_url.json` ([#​10862](astral-sh/uv#10862)) - Invalidate lockfile when static versions change ([#​10858](astral-sh/uv#10858)) - Make GitHub fast path errors non-fatal ([#​10859](astral-sh/uv#10859)) - Remove warnings for `--frozen` and `--locked` in `uv run --script` ([#​10840](astral-sh/uv#10840)) - Resolve `find-links` paths relative to the configuration file ([#​10827](astral-sh/uv#10827)) - Respect visitation order for proxy packages ([#​10833](astral-sh/uv#10833)) - Treat version mismatch errors as non-fatal in fast paths ([#​10860](astral-sh/uv#10860)) - Mark `--locked` and `--upgrade` are conflicting ([#​10836](astral-sh/uv#10836)) - Relax error checking around unconditional enabling of conflicting extras ([#​10875](astral-sh/uv#10875)) ##### Documentation - Reduce ambiguity in conflicting extras example ([#​10877](astral-sh/uv#10877)) - Update pre-commit documentation ([#​10756](astral-sh/uv#10756)) ##### Error messages - Error when workspace contains conflicting Python requirements ([#​10841](astral-sh/uv#10841)) - Improve uvx error message when uv is missing ([#​9745](astral-sh/uv#9745)) </details> --- ### Configuration 📅 **Schedule**: 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 MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMjIuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEyNC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
One-liner
Relative find-links configuration to local path from a pyproject.toml or uv.toml is now relative to the config file
Summary
Background
One can configure find-links in a
pyproject.tomloruv.tomlfile, which are located from the cli arg, system directory, user directory, or by traversing parent directories until one is encountered.This PR addresses the following scenario:
pyproject.tomloruv.tomlfilefind-linksoption. (eg under[tool.uv]forpyproject.toml)find-linksoption is configured to point to a local subdirectory in the project:packages/subdir, which is the current working directoryuv run my_script.py. This will locate thepyproject.tomlin the parent directoryCurrent Behavior
subdir/packages/to find packages, and fails.New Behavior
packages/to find the packages, and succeedsWhy is this behavior change OK?
Test Plan
subdir, previously, runninguv sync --offlinewould fail resolving the tdqm package, and after the change it succeeds.uv sync --show-settingsto show the actually-resolved settings - now having the desired path inflat_index.url.pathAlternative designs considered
impl Deserialize for IndexUrlto parse ahead of time directly with a base directory by having a customDeserializerwith a base dir field, but it seems to contradict the design of the serdeDeserializetrait - which should work with allDeserializersFuture work
Optionswould be desired, but is out of scope for the current PR.