Handle missing release-relation-list field during pseudo-release lookup

Some pseudo-releases (erroneously) lack the relation to the actual
release which previously would've caused a crash.
This commit is contained in:
Boris-Chengbiao Zhou 2023-06-29 23:19:10 +02:00
parent 99f641c3bb
commit dcaac12860
2 changed files with 42 additions and 2 deletions

View file

@ -678,7 +678,10 @@ def _is_translation(r):
def _find_actual_release_from_pseudo_release(pseudo_rel: Dict) \
-> Optional[Dict]:
relations = pseudo_rel['release']["release-relation-list"]
try:
relations = pseudo_rel['release']["release-relation-list"]
except KeyError:
return None
# currently we only support trans(liter)ation's
translations = [r for r in relations if _is_translation(r)]

View file

@ -724,7 +724,7 @@ class MBLibraryTest(unittest.TestCase):
album = mb.album_for_id('d2a6f856-b553-40a0-ac54-a321e8e2da02')
self.assertEqual(album.country, 'COUNTRY')
def test_pseudo_releases_without_links(self):
def test_pseudo_releases_with_empty_links(self):
side_effect = [{
'release': {
'title': 'pseudo',
@ -762,6 +762,43 @@ class MBLibraryTest(unittest.TestCase):
album = mb.album_for_id('d2a6f856-b553-40a0-ac54-a321e8e2da02')
self.assertEqual(album.country, None)
def test_pseudo_releases_without_links(self):
side_effect = [{
'release': {
'title': 'pseudo',
'id': 'd2a6f856-b553-40a0-ac54-a321e8e2da02',
'status': 'Pseudo-Release',
'medium-list': [{
'track-list': [{
'id': 'baz',
'recording': {
'title': 'translated title',
'id': 'bar',
'length': 42,
},
'position': 9,
'number': 'A1',
}],
'position': 5,
}],
'artist-credit': [{
'artist': {
'name': 'some-artist',
'id': 'some-id',
},
}],
'release-group': {
'id': 'another-id',
},
}
},
]
with mock.patch('musicbrainzngs.get_release_by_id') as gp:
gp.side_effect = side_effect
album = mb.album_for_id('d2a6f856-b553-40a0-ac54-a321e8e2da02')
self.assertEqual(album.country, None)
def test_pseudo_releases_with_unsupported_links(self):
side_effect = [
{