pkgextra: allow multiple values for reference mapping

Since we added PURLs instead of key->value we map to key->list[value]
since the keys are not longer unique.
This commit is contained in:
Christoph Reiter 2025-02-16 19:12:52 +01:00
parent 7f4f822e9b
commit a19180130b
4 changed files with 8 additions and 8 deletions

View File

@ -579,7 +579,7 @@ class Source:
for ext_id in state.ext_info_ids:
variants = []
if ext_id.id in self.pkgextra.references:
mapped = self.pkgextra.references[ext_id.id]
mapped = self.pkgextra.references[ext_id.id][0]
if mapped is None:
continue
variants = [mapped]
@ -600,7 +600,7 @@ class Source:
f"https://repology.org/tools/project-by?repo={quote(repology_repo)}&name_type=srcname&target_page=project_versions&name={quote(self.name)}", {})))
# XXX: let anitya do the searching for us, unless we have an ID
project_id = self.pkgextra.references.get("anitya", self.realname)
project_id = self.pkgextra.references.get("anitya", [self.realname])[0]
if project_id is not None:
ext.append((
ExtId("anitya", "Anitya", True, True),

View File

@ -34,7 +34,7 @@ async def update_pypi_versions(pkgextra: PkgExtra) -> None:
for entry in pkgextra.packages.values():
if "pypi" not in entry.references:
continue
pypi_name = entry.references["pypi"]
pypi_name = entry.references["pypi"][0]
assert isinstance(pypi_name, str)
normalized_name = normalize(pypi_name)
if normalized_name in projects:

View File

@ -8,7 +8,7 @@ from collections.abc import Sequence, Collection
class PkgExtraEntry(BaseModel):
"""Extra metadata for a PKGBUILD"""
references: dict[str, str | None] = Field(default_factory=dict)
references: dict[str, list[str | None]] = Field(default_factory=dict)
"""References to third party repositories"""
changelog_url: str | None = Field(default=None)
@ -39,8 +39,8 @@ class PkgExtra(BaseModel):
"""A mapping of pkgbase names to PkgExtraEntry"""
def convert_mapping(array: Sequence[str]) -> dict[str, str | None]:
converted: dict[str, str | None] = {}
def convert_mapping(array: Sequence[str]) -> dict[str, list[str | None]]:
converted: dict[str, list[str | None]] = {}
for item in array:
if ":" in item:
key, value = item.split(":", 1)
@ -48,7 +48,7 @@ def convert_mapping(array: Sequence[str]) -> dict[str, str | None]:
else:
key = item
value = None
converted[key] = value
converted.setdefault(key, []).append(value)
return converted

View File

@ -214,7 +214,7 @@ def test_vercmp():
def test_extra_to_pkgextra_entry():
assert extra_to_pkgextra_entry(
{"references": ['foo: quux', 'bar']}
).references == {'foo': 'quux', 'bar': None}
).references == {'foo': ['quux'], 'bar': [None]}
assert extra_to_pkgextra_entry(
{"changelog_url": "foo"}
).changelog_url == "foo"