Question
Background
I'm migrating a project from Poetry to uv. My project depends on a package (roku) whose latest version requires a beta version of pydantic-settings. In Poetry, this worked exactly as expected — I got the latest roku and the latest stable version of every other dependency.
The problem
In uv, I have two options, both unsatisfying:
- Without
prerelease = "allow" — uv resolves an older version of roku (one that doesn't require the pydantic-settings beta), ignoring the latest release entirely.
- With
prerelease = "allow" — uv correctly picks the latest roku, but now also pulls in beta versions of unrelated packages (e.g. httpx 1.0.0b0 instead of the latest stable 0.28.1).
Neither option replicates Poetry's behavior.
How Poetry handles this
Poetry's resolver is context-aware about prereleases. When a package in the dependency graph requires a prerelease, Poetry allows that prerelease only within the transitive chain that needs it. It doesn't treat "a beta exists somewhere in my graph" as a global signal to prefer betas for all packages. The result is intuitive: you get the best version of what you asked for, and stable everywhere else.
What I'd expect from uv
A way to say: "allow prereleases where the resolution actually requires them, without globally preferring prereleases for unrelated packages."
Question
Is there a planned or existing mechanism in uv to scope prerelease allowance to specific dependency chains — similar to how Poetry handles this — without requiring the user to manually enumerate all transitive prereleases?
Platform
No response
Version
0.11.16
Question
Background
I'm migrating a project from Poetry to uv. My project depends on a package (
roku) whose latest version requires a beta version ofpydantic-settings. In Poetry, this worked exactly as expected — I got the latestrokuand the latest stable version of every other dependency.The problem
In uv, I have two options, both unsatisfying:
prerelease = "allow"— uv resolves an older version ofroku(one that doesn't require the pydantic-settings beta), ignoring the latest release entirely.prerelease = "allow"— uv correctly picks the latestroku, but now also pulls in beta versions of unrelated packages (e.g.httpx 1.0.0b0instead of the latest stable0.28.1).Neither option replicates Poetry's behavior.
How Poetry handles this
Poetry's resolver is context-aware about prereleases. When a package in the dependency graph requires a prerelease, Poetry allows that prerelease only within the transitive chain that needs it. It doesn't treat "a beta exists somewhere in my graph" as a global signal to prefer betas for all packages. The result is intuitive: you get the best version of what you asked for, and stable everywhere else.
What I'd expect from uv
A way to say: "allow prereleases where the resolution actually requires them, without globally preferring prereleases for unrelated packages."
Question
Is there a planned or existing mechanism in uv to scope prerelease allowance to specific dependency chains — similar to how Poetry handles this — without requiring the user to manually enumerate all transitive prereleases?
Platform
No response
Version
0.11.16