Commit 2d8ea84a by Arun Babu Neelicattu Committed by Bjorn Neergaard

masonry: write PEP 610 metadata for editable builds

parent e4e5497e
from __future__ import annotations
import hashlib
import json
import os
import shutil
......@@ -241,6 +242,18 @@ class EditableBuilder(Builder):
added_files.append(dist_info.joinpath("entry_points.txt"))
# write PEP 610 metadata
direct_url_json = dist_info.joinpath("direct_url.json")
direct_url_json.write_text(
json.dumps(
{
"dir_info": {"editable": True},
"url": self._poetry.file.path.parent.as_uri(),
}
)
)
added_files.append(direct_url_json)
record = dist_info.joinpath("RECORD")
with record.open("w", encoding="utf-8") as f:
for path in added_files:
......
from __future__ import annotations
import json
import os
import shutil
......@@ -9,6 +10,7 @@ from typing import TYPE_CHECKING
import pytest
from cleo.io.null_io import NullIO
from deepdiff import DeepDiff
from poetry.factory import Factory
from poetry.masonry.builders.editable import EditableBuilder
......@@ -105,6 +107,15 @@ def test_builder_installs_proper_files_for_standard_packages(
assert dist_info.joinpath("METADATA").exists()
assert dist_info.joinpath("RECORD").exists()
assert dist_info.joinpath("entry_points.txt").exists()
assert dist_info.joinpath("direct_url.json").exists()
assert not DeepDiff(
{
"dir_info": {"editable": True},
"url": simple_poetry.file.path.parent.as_uri(),
},
json.loads(dist_info.joinpath("direct_url.json").read_text()),
)
assert dist_info.joinpath("INSTALLER").read_text() == "poetry"
assert (
......@@ -157,6 +168,7 @@ My Package
assert str(dist_info.joinpath("INSTALLER")) in records
assert str(dist_info.joinpath("entry_points.txt")) in records
assert str(dist_info.joinpath("RECORD")) in records
assert str(dist_info.joinpath("direct_url.json")) in records
baz_script = f"""\
#!{tmp_venv.python}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment