diff --git a/pdm/models/project_info.py b/pdm/models/project_info.py index 5b205a60e6..975608fa63 100644 --- a/pdm/models/project_info.py +++ b/pdm/models/project_info.py @@ -2,21 +2,15 @@ import itertools import sys -from typing import Any, Iterator, List +from typing import Any, Iterator from pdm import termui from pdm.pep517.metadata import Metadata if sys.version_info >= (3, 8): - from email.message import Message as DistributionMetadata from importlib.metadata import Distribution else: from importlib_metadata import Distribution - from importlib_metadata._meta import PackageMetadata as DistributionMetadata - - -def get_as_dot_list(metadata: DistributionMetadata, key: str) -> List[str]: - return metadata.get(key, "").split(",") class ProjectInfo: @@ -30,8 +24,8 @@ def __init__(self, metadata: Distribution | Metadata) -> None: def _parse(self, data: Distribution) -> dict[str, Any]: metadata = data.metadata - keywords = get_as_dot_list(metadata, "Keywords") - platforms = get_as_dot_list(metadata, "Platform") + keywords = metadata.get("Keywords", "").replace(",", ", ") + platform = metadata.get("Platform", "").replace(",", ", ") project_urls = { k.strip(): v.strip() for k, v in (row.split(",") for row in metadata.get_all("Project-URL", [])) @@ -44,8 +38,8 @@ def _parse(self, data: Distribution) -> dict[str, Any]: "email": metadata.get("Author-email", ""), "license": metadata.get("License", ""), "requires-python": metadata.get("Requires-Python", ""), - "platform": ", ".join(platforms), - "keywords": ", ".join(keywords), + "platform": platform, + "keywords": keywords, "homepage": metadata.get("Home-page", ""), "project-urls": [": ".join(parts) for parts in project_urls.items()], }