Enable extra build dependencies to 'match runtime' versions#15036
Enable extra build dependencies to 'match runtime' versions#15036charliermarsh merged 3 commits intomainfrom
Conversation
ffeb0cf to
ddb5edf
Compare
ddb5edf to
7b55e51
Compare
|
(Need to rebase this, then fix the TODO I commented-on above.) |
e9eafd4 to
23bd920
Compare
3918c1a to
6c430d1
Compare
|
I addressed the remaining TODOs, should be ready for review. |
|
Is it intentional that extra build dependencies work in |
|
We could make it work in |
|
It seems fine to defer that to start. |
|
It could help inform the name though... If we intend for that to work, then it's another point against things like |
|
This name has sort of grown on me, fwiw. The entire field is in preview too, so we have some leeway here. |
|
I'm always in favor of smaller PRs and adding this another PR :) I do see the current behavior ( |
| child = { path = "child" } | ||
|
|
||
| [tool.uv.extra-build-dependencies] | ||
| child = [{ requirement = "anyio", match-runtime = true }] |
There was a problem hiding this comment.
We should call this requires instead of requirement to by consistent with PEP 517 (It's still a str here and a list in PEP 517, but it's the same key)
There was a problem hiding this comment.
I don't think I agree — I don't think that's particularly clearer and matching build-requires isn't really a goal here, i.e., it's not called extra-build-requires.
| child = [{ requirement = "anyio", match-runtime = true }] | ||
| "#})?; | ||
|
|
||
| // The child should be rebuilt with anyio 3.7, without `--reinstall` |
There was a problem hiding this comment.
Can you add a test where we change the requirement in a compatible way (say anyio>3.1 to anyio>3.2) to track whether we rebuild?
There was a problem hiding this comment.
What happens if the requirement has a pin or constraint that's incompatible with the runtime dist version? We should error, right?
There was a problem hiding this comment.
I was considering erroring entirely if a version specifier or constraint is provided with match-runtime = true. What do you think?
There was a problem hiding this comment.
It would be relatively easy to support preserving both though. We'd just add a new requirement here rather than overwriting, and let the resolver do the rest.
There was a problem hiding this comment.
It seems okay to eagerly fail if any constraint is provided. It's plausible someone will have a use-case for it? but I can't think of one right now.
There was a problem hiding this comment.
I think letting the resolver handle it sounds cool, but we'd probably need to add a hint to the error for it to be a good experience and that sounds like more work we don't want to tackle rn.
There was a problem hiding this comment.
Okay, made it reject for now.
6c430d1 to
0b389f0
Compare
acd9d45 to
4883084
Compare
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.8.4` -> `0.8.5` | 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.8.5`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#085) [Compare Source](astral-sh/uv@0.8.4...0.8.5) ##### Enhancements - Enable `uv run` with a GitHub Gist ([#​15058](astral-sh/uv#15058)) - Improve HTTP response caching log messages ([#​15067](astral-sh/uv#15067)) - Show wheel tag hints in install plan ([#​15066](astral-sh/uv#15066)) - Support installing additional executables in `uv tool install` ([#​14014](astral-sh/uv#14014)) ##### Preview features - Enable extra build dependencies to 'match runtime' versions ([#​15036](astral-sh/uv#15036)) - Remove duplicate `extra-build-dependencies` warnings for `uv pip` ([#​15088](astral-sh/uv#15088)) - Use "option" instead of "setting" in `pylock` warning ([#​15089](astral-sh/uv#15089)) - Respect extra build requires when reading from wheel cache ([#​15030](astral-sh/uv#15030)) - Preserve lowered extra build dependencies ([#​15038](astral-sh/uv#15038)) ##### Bug fixes - Add Python versions to markers implied from wheels ([#​14913](astral-sh/uv#14913)) - Ensure consistent indentation when adding dependencies ([#​14991](astral-sh/uv#14991)) - Fix handling of `python-preference = system` when managed interpreters are on the PATH ([#​15059](astral-sh/uv#15059)) - Fix symlink preservation in virtual environment creation ([#​14933](astral-sh/uv#14933)) - Gracefully handle entrypoint permission errors ([#​15026](astral-sh/uv#15026)) - Include wheel hashes from local Simple indexes ([#​14993](astral-sh/uv#14993)) - Prefer system Python installations over managed ones when `--system` is used ([#​15061](astral-sh/uv#15061)) - Remove retry wrapper when matching on error kind ([#​14996](astral-sh/uv#14996)) - Revert `h2` upgrade ([#​15079](astral-sh/uv#15079)) ##### Documentation - Improve visibility of copy and line separator in dark mode ([#​14987](astral-sh/uv#14987)) </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:eyJjcmVhdGVkSW5WZXIiOiI0MS41Mi4yIiwidXBkYXRlZEluVmVyIjoiNDEuNTIuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Summary
This is an alternative to #14944 that functions a little differently. Rather than adding separate strategies, you can instead say:
Which will then enforce that
anyiouses the same version as in the lockfile.