Rebase: Uninstall existing non-editable versions when installing editable requirements bug (#682)

Separate branch for rebasing #677 onto main because i don't trust the
rebase enough to force push.

Closes #677.

---

If you install `black` from PyPI, then `-e ../black`, we need to
uninstall the existing `black`. This sounds simple, but that in turn
requires that we _know_ `-e ../black` maps to the package `black`, so
that we can mark it for uninstallation in the install plan. This, in
turn, means that we need to build editable dependencies prior to the
install plan.

This is just a bunch of reorganization to fix that specific bug
(installing multiple versions of `black` if you run through the above
workflow): we now run through the list of editables upfront, mark those
that are already installed, build those that aren't, and then ensure
that `InstallPlan` correctly removes those that need to be removed, etc.

Closes #676.

Co-authored-by: Charlie Marsh <charlie.r.marsh@gmail.com>
This commit is contained in:
konsti
2023-12-18 10:28:14 +01:00
committed by GitHub
parent 0bb2c92246
commit f4f67ebde0
13 changed files with 626 additions and 279 deletions

View File

@@ -0,0 +1,2 @@
def a():
pass

View File

@@ -0,0 +1,12 @@
[tool.poetry]
name = "black"
version = "0.1.0"
description = ""
authors = ["konstin <konstin@mailbox.org>"]
[tool.poetry.dependencies]
python = "^3.10"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"