Allow prereleases, locals, and URLs in non-editable path requirements (#2671)

## Summary

This PR enables the resolver to "accept" URLs, prereleases, and local
version specifiers for direct dependencies of path dependencies. As a
result, `uv pip install .` and `uv pip install -e .` now behave
identically, in that neither has a restriction on URL dependencies and
the like.

Closes https://github.com/astral-sh/uv/issues/2643.
Closes https://github.com/astral-sh/uv/issues/1853.
This commit is contained in:
Charlie Marsh 2024-03-27 18:17:09 -04:00 committed by GitHub
parent 4b69ad4281
commit cf30932831
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 484 additions and 77 deletions

View file

@ -66,6 +66,11 @@ impl PreReleaseStrategy {
.chain(manifest.constraints.iter())
.chain(manifest.overrides.iter())
.filter(|requirement| requirement.evaluate_markers(markers, &[]))
.chain(manifest.lookaheads.iter().flat_map(|lookahead| {
lookahead.requirements().iter().filter(|requirement| {
requirement.evaluate_markers(markers, lookahead.extras())
})
}))
.chain(manifest.editables.iter().flat_map(|(editable, metadata)| {
metadata.requires_dist.iter().filter(|requirement| {
requirement.evaluate_markers(markers, &editable.extras)
@ -95,6 +100,11 @@ impl PreReleaseStrategy {
.chain(manifest.constraints.iter())
.chain(manifest.overrides.iter())
.filter(|requirement| requirement.evaluate_markers(markers, &[]))
.chain(manifest.lookaheads.iter().flat_map(|lookahead| {
lookahead.requirements().iter().filter(|requirement| {
requirement.evaluate_markers(markers, lookahead.extras())
})
}))
.chain(manifest.editables.iter().flat_map(|(editable, metadata)| {
metadata.requires_dist.iter().filter(|requirement| {
requirement.evaluate_markers(markers, &editable.extras)