diff --git a/swh/indexer/metadata_dictionary.py b/swh/indexer/metadata_dictionary.py --- a/swh/indexer/metadata_dictionary.py +++ b/swh/indexer/metadata_dictionary.py @@ -603,6 +603,10 @@ def normalize_home_page(self, urls): return [{'@id': url} for url in urls] + def normalize_keywords(self, keywords): + return list(itertools.chain.from_iterable( + s.split(' ') for s in keywords)) + def normalize_license(self, licenses): return [{'@id': license} for license in licenses] diff --git a/swh/indexer/tests/test_metadata.py b/swh/indexer/tests/test_metadata.py --- a/swh/indexer/tests/test_metadata.py +++ b/swh/indexer/tests/test_metadata.py @@ -953,6 +953,20 @@ 'description': 'foo\nHydrology N°83', }) + def test_compute_metadata_pkginfo_keywords(self): + raw_content = (b"""\ +Metadata-Version: 2.1 +Name: foo +Keywords: foo bar baz +""") # noqa + result = self.pkginfo_mapping.translate(raw_content) + self.assertEqual(result, { + '@context': 'https://doi.org/10.5063/schema/codemeta-2.0', + 'type': 'SoftwareSourceCode', + 'name': 'foo', + 'keywords': ['foo', 'bar', 'baz'], + }) + def test_compute_metadata_pkginfo_license(self): raw_content = (b"""\ Metadata-Version: 2.1