1
1
Fork 0
mirror of https://github.com/pypa/pip synced 2023-12-13 21:30:23 +01:00

Report requested_extras for editable requirements

This commit is contained in:
Stéphane Bidoul 2023-04-11 22:24:12 +02:00
parent 2f271838e7
commit 5bfccfd62d
2 changed files with 49 additions and 1 deletions

View file

@ -79,7 +79,7 @@ def make_install_req_from_editable(
link: Link, template: InstallRequirement
) -> InstallRequirement:
assert template.editable, "template not editable"
return install_req_from_editable(
ireq = install_req_from_editable(
link.url,
user_supplied=template.user_supplied,
comes_from=template.comes_from,
@ -91,6 +91,8 @@ def make_install_req_from_editable(
hash_options=template.hash_options,
config_settings=template.config_settings,
)
ireq.extras = template.extras
return ireq
def _make_install_req_from_dist(

View file

@ -224,6 +224,52 @@ def test_install_report_local_path_with_extras(
assert "requested_extras" not in simple_report
@pytest.mark.network
def test_install_report_editable_local_path_with_extras(
script: PipTestEnvironment, tmp_path: Path, shared_data: TestData
) -> None:
"""Test report remote editable."""
project_path = tmp_path / "pkga"
project_path.mkdir()
project_path.joinpath("pyproject.toml").write_text(
textwrap.dedent(
"""\
[project]
name = "pkga"
version = "1.0"
[project.optional-dependencies]
test = ["simple"]
"""
)
)
report_path = tmp_path / "report.json"
script.pip(
"install",
"--dry-run",
"--no-build-isolation",
"--no-index",
"--find-links",
str(shared_data.root / "packages/"),
"--report",
str(report_path),
"--editable",
str(project_path) + "[test]",
)
report = json.loads(report_path.read_text())
assert len(report["install"]) == 2
pkga_report = report["install"][0]
assert pkga_report["metadata"]["name"] == "pkga"
assert pkga_report["is_direct"] is True
assert pkga_report["requested"] is True
assert pkga_report["requested_extras"] == ["test"]
simple_report = report["install"][1]
assert simple_report["metadata"]["name"] == "simple"
assert simple_report["is_direct"] is False
assert simple_report["requested"] is False
assert "requested_extras" not in simple_report
def test_install_report_to_stdout(
script: PipTestEnvironment, shared_data: TestData
) -> None: