mirror of https://github.com/pypa/pip
Allow pre-release to satisfy build requirements
This commit is contained in:
parent
cb24fb4052
commit
f7c05a5124
|
@ -0,0 +1,3 @@
|
||||||
|
Allow using a pre-release version to satisfy a build requirement. This helps
|
||||||
|
manually populated build environments to more accurately detect build-time
|
||||||
|
requirement conflicts.
|
|
@ -185,7 +185,7 @@ class BuildEnvironment:
|
||||||
installed_req_str = f"{req.name}=={dist.version}"
|
installed_req_str = f"{req.name}=={dist.version}"
|
||||||
else:
|
else:
|
||||||
installed_req_str = f"{req.name}==={dist.version}"
|
installed_req_str = f"{req.name}==={dist.version}"
|
||||||
if dist.version not in req.specifier:
|
if not req.specifier.contains(dist.version, prereleases=True):
|
||||||
conflicting.add((installed_req_str, req_str))
|
conflicting.add((installed_req_str, req_str))
|
||||||
# FIXME: Consider direct URL?
|
# FIXME: Consider direct URL?
|
||||||
return conflicting, missing
|
return conflicting, missing
|
||||||
|
|
|
@ -5,7 +5,13 @@ import tomli_w
|
||||||
|
|
||||||
from pip._internal.build_env import BuildEnvironment
|
from pip._internal.build_env import BuildEnvironment
|
||||||
from pip._internal.req import InstallRequirement
|
from pip._internal.req import InstallRequirement
|
||||||
from tests.lib import PipTestEnvironment, TestData, make_test_finder, path_to_url
|
from tests.lib import (
|
||||||
|
PipTestEnvironment,
|
||||||
|
TestData,
|
||||||
|
create_basic_wheel_for_package,
|
||||||
|
make_test_finder,
|
||||||
|
path_to_url,
|
||||||
|
)
|
||||||
from tests.lib.path import Path
|
from tests.lib.path import Path
|
||||||
|
|
||||||
|
|
||||||
|
@ -210,6 +216,25 @@ def test_validate_conflicting_pep517_backend_requirements(
|
||||||
assert result.returncode != 0 and msg in result.stderr, str(result)
|
assert result.returncode != 0 and msg in result.stderr, str(result)
|
||||||
|
|
||||||
|
|
||||||
|
def test_pep517_backend_requirements_satisfied_by_prerelease(
|
||||||
|
script: PipTestEnvironment,
|
||||||
|
data: TestData,
|
||||||
|
) -> None:
|
||||||
|
create_basic_wheel_for_package(script, "myreq", "1.0a1")
|
||||||
|
script.pip("install", "myreq==1.0a1", "--no-index", "-f", script.scratch_path)
|
||||||
|
script.pip("install", "test_backend", "--no-index", "-f", data.backends)
|
||||||
|
|
||||||
|
project_dir = make_project(
|
||||||
|
script.temp_path,
|
||||||
|
requires=["test_backend", "myreq"],
|
||||||
|
backend="test_backend",
|
||||||
|
)
|
||||||
|
project_dir.joinpath("backend_reqs.txt").write_text("myreq")
|
||||||
|
|
||||||
|
result = script.pip("install", "--no-index", "--no-build-isolation", project_dir)
|
||||||
|
assert "Installing backend dependencies:" not in result.stdout
|
||||||
|
|
||||||
|
|
||||||
def test_pep517_backend_requirements_already_satisfied(
|
def test_pep517_backend_requirements_already_satisfied(
|
||||||
script: PipTestEnvironment, tmpdir: Path, data: TestData
|
script: PipTestEnvironment, tmpdir: Path, data: TestData
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
Loading…
Reference in New Issue