Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue while resolving versions of editable packages. uv pip install -e {package} #1476

Closed
moaddib666 opened this issue Feb 16, 2024 · 2 comments
Labels
bug Something isn't working

Comments

@moaddib666
Copy link

Steps to reproduce

  1. Install package A in editable mode
  2. Install package B that relay on package A in editable mode

Expected result:
Packages A and B has been installed.

Actual result:

Audited 1 package in 3ms
uv pip install --prerelease=allow -e ecosystem/utils/ecosystem-utils-logging[test]
Audited 1 package in 4ms
uv pip install --prerelease=allow -e ecosystem/utils/ecosystem-utils-configuration[test]
   Built file:///Users/moaddib/PycharmProjects/spaceship/ecosystem.python/ecosystem/utils/ecosystem-utils-configuration                                                                                Built 1 editable in 829ms
  × No solution found when resolving dependencies:
  ╰─▶ Because ecosystem-utils-logging==0.0.1a0 was not found in the package registry and ecosystem-utils-configuration==0.0.1a0 depends on ecosystem-utils-logging==0.0.1a0, we can conclude that
      ecosystem-utils-configuration==0.0.1a0 cannot be used.
      And because you require ecosystem-utils-configuration==0.0.1a0, we can conclude that the requirements are unsatisfiable.
make: *** [install] Error 1
@charliermarsh charliermarsh added the bug Something isn't working label Feb 17, 2024
@charliermarsh
Copy link
Member

This is the same as #1661. (Gonna merge into that issue. This one was first, but I wrote up some notes on the other issue by chance.)

@charliermarsh charliermarsh closed this as not planned Won't fix, can't repro, duplicate, stale Feb 22, 2024
zanieb added a commit that referenced this issue Mar 28, 2024
Previously, we did not consider installed distributions as candidates
while performing resolution. Here, we update the resolver to use
installed distributions that satisfy requirements instead of pulling new
distributions from the registry.

The implementation details are as follows:

- We now provide `SitePackages` to the `CandidateSelector`
- If an installed distribution satisfies the requirement, we prefer it
over remote distributions
- We do not want to allow installed distributions in some cases, i.e.,
upgrade and reinstall
- We address this by introducing an `Exclusions` type which tracks
installed packages to ignore during selection
- There's a new `ResolvedDist` wrapper with `Installed(InstalledDist)`
and `Installable(Dist)` variants
- This lets us pass already installed distributions throughout the
resolver

The user-facing behavior is thoroughly covered in the tests, but
briefly:

- Installing a package that depends on an already-installed package
prefers the local version over the index
- Installing a package with a name that matches an already-installed URL
package does not reinstall from the index
- Reinstalling (--reinstall) a package by name _will_ pull from the
index even if an already-installed URL package is present
- To reinstall the URL package, you must specify the URL in the request

Closes #1661

Addresses:

- #1476
- #1856
- #2093
- #2282
- #2383
- #2560

## Test plan

- [x] Reproduction at `charlesnicholson/uv-pep420-bug` passes
- [x] Unit test for editable package
([#1476](#1476))
- [x] Unit test for previously installed package with empty registry
- [x] Unit test for local non-editable package
- [x] Unit test for new version available locally but not in registry
([#2093](#2093))
- ~[ ] Unit test for wheel not available in registry but already
installed locally
([#2282](#2282 (seems
complicated and not worthwhile)
- [x] Unit test for install from URL dependency then with matching
version ([#2383](#2383))
- [x] Unit test for install of new package that depends on installed
package does not change version
([#2560](#2560))
- [x] Unit test that `pip compile` does _not_ consider installed
packages
@zanieb
Copy link
Member

zanieb commented Apr 1, 2024

Hi! This should be addressed in the latest release (0.1.27) via #2596.

Let us know if you have any problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants