Skip to content

Commit 9d4a84d

Browse files
committed
PEP 753, also fixes python-poetry/poetry#9957
1 parent 61081dd commit 9d4a84d

File tree

6 files changed

+19
-23
lines changed

6 files changed

+19
-23
lines changed

src/poetry/core/factory.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -200,12 +200,18 @@ def _configure_package_metadata(
200200
package.dynamic_classifiers = not static_classifiers
201201

202202
if urls := project.get("urls"):
203-
package.homepage = urls.get("homepage") or urls.get("Homepage")
204-
package.repository_url = urls.get("repository") or urls.get("Repository")
205-
package.documentation_url = urls.get("documentation") or urls.get(
206-
"Documentation"
207-
)
208-
package.custom_urls = urls
203+
custom_urls = {}
204+
for name, url in urls.items():
205+
lower_name = name.lower()
206+
if lower_name == "homepage":
207+
package.homepage = url
208+
elif lower_name == "repository":
209+
package.repository_url = url
210+
elif lower_name == "documentation":
211+
package.documentation_url = url
212+
else:
213+
custom_urls[name] = url
214+
package.custom_urls = custom_urls
209215
else:
210216
package.homepage = tool_poetry.get("homepage")
211217
package.repository_url = tool_poetry.get("repository")

src/poetry/core/masonry/builders/builder.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,10 +217,6 @@ def get_metadata_content(self) -> str:
217217
summary=str(self._meta.summary),
218218
)
219219

220-
# Optional fields
221-
if self._meta.home_page:
222-
content += f"Home-page: {self._meta.home_page}\n"
223-
224220
if self._meta.license:
225221
license_field = "License: "
226222
# Indentation is not only for readability, but required

src/poetry/core/masonry/metadata.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,8 @@ def from_package(cls, package: ProjectPackage) -> Metadata:
105105

106106
meta.provides_extra = list(package.extras)
107107

108-
if package.urls:
109-
for name, url in package.urls.items():
110-
if name.lower() == "homepage" and meta.home_page == url:
111-
continue
112-
if name == "repository" and url == package.urls["Repository"]:
113-
continue
114-
if name == "documentation" and url == package.urls["Documentation"]:
115-
continue
116-
117-
meta.project_urls += (f"{name}, {url}",)
108+
meta.project_urls = tuple(
109+
f"{name}, {url}" for name, url in package.urls.items()
110+
)
118111

119112
return meta

tests/masonry/builders/test_builder.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def test_get_metadata_content() -> None:
9898
assert parsed["Keywords"] == "packaging,dependency,poetry"
9999
assert parsed["Requires-Python"] == ">=3.6,<4.0"
100100
assert parsed["License"] == "MIT"
101-
assert parsed["Home-page"] == "https://python-poetry.org/"
101+
assert parsed["Home-page"] is None
102102

103103
classifiers = parsed.get_all("Classifier")
104104
assert classifiers == [
@@ -132,6 +132,7 @@ def test_get_metadata_content() -> None:
132132
urls = parsed.get_all("Project-URL")
133133
assert urls == [
134134
"Documentation, https://python-poetry.org/docs",
135+
"Homepage, https://python-poetry.org/",
135136
"Issue Tracker, https://github.com/python-poetry/poetry/issues",
136137
"Repository, https://github.com/python-poetry/poetry",
137138
]

tests/masonry/builders/test_complete.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@ def test_complete(project: str, no_vcs: bool) -> None:
188188
Name: my-package
189189
Version: 1.2.3
190190
Summary: Some description.
191-
Home-page: https://python-poetry.org/
192191
License: MIT
193192
Keywords: packaging,dependency,poetry
194193
Author: Sébastien Eustace
@@ -214,6 +213,7 @@ def test_complete(project: str, no_vcs: bool) -> None:
214213
Requires-Dist: pendulum (>=1.4,<2.0) ; (python_version ~= "2.7"\
215214
and sys_platform == "win32" or python_version in "3.4 3.5") and (extra == "time")
216215
Project-URL: Documentation, https://python-poetry.org/docs
216+
Project-URL: Homepage, https://python-poetry.org/
217217
Project-URL: Issue Tracker, https://github.com/python-poetry/poetry/issues
218218
Project-URL: Repository, https://github.com/python-poetry/poetry
219219
Description-Content-Type: text/x-rst

tests/masonry/test_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ def test_prepare_metadata_for_build_wheel(project: str) -> None:
154154
Name: my-package
155155
Version: 1.2.3
156156
Summary: Some description.
157-
Home-page: https://python-poetry.org/
158157
License: MIT
159158
Keywords: packaging,dependency,poetry
160159
Author: Sébastien Eustace
@@ -179,6 +178,7 @@ def test_prepare_metadata_for_build_wheel(project: str) -> None:
179178
Requires-Dist: cleo (>=0.6,<0.7)
180179
Requires-Dist: pendulum (>=1.4,<2.0) ; (python_version ~= "2.7" and sys_platform == "win32" or python_version in "3.4 3.5") and (extra == "time")
181180
Project-URL: Documentation, https://python-poetry.org/docs
181+
Project-URL: Homepage, https://python-poetry.org/
182182
Project-URL: Issue Tracker, https://github.com/python-poetry/poetry/issues
183183
Project-URL: Repository, https://github.com/python-poetry/poetry
184184
Description-Content-Type: text/x-rst

0 commit comments

Comments
 (0)