LeMyst / WikibaseIntegrator

A Python module to manipulate data on a Wikibase instance (like Wikidata) through the MediaWiki Wikibase API and the Wikibase SPARQL endpoint.
MIT License
67 stars 14 forks source link

Exception has occurred: MWApiError 'The supplied language code "ak" was not recognized.' #617

Closed lubianat closed 1 year ago

lubianat commented 1 year ago

Hi!

I am running a bot that uses WikibaseIntegrator to add some stuff on Wikidata (https://www.wikidata.org/wiki/User:TiagoLubianaBot).

I've got the following error:

Exception has occurred: MWApiError
'The supplied language code "ak" was not recognized.'
  File "/home/lubianat/Documents/wiki_related/WikibaseIntegrator/wikibaseintegrator/wbi_helpers.py", line 173, in mediawiki_api_call
    raise MWApiError(json_data["error"])
  File "/home/lubianat/Documents/wiki_related/WikibaseIntegrator/wikibaseintegrator/wbi_helpers.py", line 285, in mediawiki_api_call_helper
    return mediawiki_api_call(
  File "/home/lubianat/Documents/wiki_related/WikibaseIntegrator/wikibaseintegrator/wbi_helpers.py", line 441, in edit_entity
    return mediawiki_api_call_helper(data=params, is_bot=is_bot, **kwargs)
  File "/home/lubianat/Documents/wiki_related/WikibaseIntegrator/wikibaseintegrator/entities/baseentity.py", line 243, in _write
    json_result: dict = edit_entity(data=data, id=entity_id, type=self.type, summary=summary, clear=clear, is_bot=is_bot, allow_anonymous=allow_anonymous,
  File "/home/lubianat/Documents/wiki_related/WikibaseIntegrator/wikibaseintegrator/entities/item.py", line 166, in write
    json_data = super()._write(data=self.get_json(), **kwargs)
  File "/home/lubianat/Documents/wiki_related/opentargets2wikidata/src/add_linked_diseases_to_wikidata.py", line 145, in <module>
    item.write(summary="Update genetic associations from Open Targets.")
wikibaseintegrator.wbi_exceptions.MWApiError: 'The supplied language code "ak" was not recognized.'

Not sure what happened, do you have any guesses?

LeMyst commented 1 year ago

Hello @lubianat It's hard to say with just the error message, and your code (https://github.com/lubianat/opentargets2wikidata/blob/master/src/add_linked_diseases_to_wikidata.py)

Can you add a debug output before your item.write()? Something like this print(item.get_json()) and post the result here.

To help us see what's wrong with the data sent to WD.

lubianat commented 1 year ago

Sure! That only happens when the item has a label in the "ak" language.

WikibaseIntegrator can pull the data, but cannot write it back. This is the bit that writes:

        try:
            # Write the item after adding all claims for this disease
            item.write(summary="Update genetic associations from Open Targets.")
        except Exception as e:
            print(e)
            print(item.get_json()["labels"])

The item has many labels, including 'ak': {'language': 'ak', 'value': 'Asikyire yareɛ'}:

{'it': {'language': 'it', 'value': 'diabete mellito'}, 'fr': {'language': 'fr', 'value': 'diabète sucré'}, 'en': {'language': 'en', 'value': 'diabetes'}, 'de': {'language': 'de', 'value': 'Diabetes mellitus'}, 'af': {'language': 'af', 'value': 'Suikersiekte'}, 'am': {'language': 'am', 'value': 'ስኳር በሽታ'}, 'an': {'language': 'an', 'value': 'Diabetis mellitus'}, 'ar': {'language': 'ar', 'value': 'السكري'}, 'arz': {'language': 'arz', 'value': 'مرض السكر'}, 'ast': {'language': 'ast', 'value': 'Diabetes'}, 'as': {'language': 'as', 'value': 'বহুমুত্ৰ ৰোগ'}, 'az': {'language': 'az', 'value': 'şəkərli diabet'}, 'be': {'language': 'be', 'value': 'цукровы дыябет'}, 'bg': {'language': 'bg', 'value': 'Захарен диабет'}, 'bn': {'language': 'bn', 'value': 'বহুমূত্ররোগ'}, 'br': {'language': 'br', 'value': 'Diabet'}, 'bs': {'language': 'bs', 'value': 'Diabetes mellitus'}, 'ca': {'language': 'ca', 'value': 'diabetis mellitus'}, 'ckb': {'language': 'ckb', 'value': 'شەکرە'}, 'cs': {'language': 'cs', 'value': 'diabetes mellitus'}, 'cy': {'language': 'cy', 'value': 'clefyd siwgr'}, 'da': {'language': 'da', 'value': 'sukkersyge'}, 'dv': {'language': 'dv', 'value': 'ހަކުރު ބަލި'}, 'el': {'language': 'el', 'value': 'σακχαρώδης διαβήτης'}, 'eo': {'language': 'eo', 'value': 'diabeto'}, 'es': {'language': 'es', 'value': 'diabetes mellitus'}, 'et': {'language': 'et', 'value': 'suhkurtõbi'}, 'eu': {'language': 'eu', 'value': 'diabetes mellitus'}, 'fa': {'language': 'fa', 'value': 'مرض قند'}, 'fi': {'language': 'fi', 'value': 'diabetes'}, 'fo': {'language': 'fo', 'value': 'Sukursjúka'}, 'ga': {'language': 'ga', 'value': 'diaibéiteas'}, 'gl': {'language': 'gl', 'value': 'Diabetes mellitus'}, 'gn': {'language': 'gn', 'value': 'Tuguyasuka'}, 'gu': {'language': 'gu', 'value': 'મધુપ્રમેહ'}, 'he': {'language': 'he', 'value': 'סוכרת'}, 'hi': {'language': 'hi', 'value': 'मधुमेह'}, 'hr': {'language': 'hr', 'value': 'šećerna bolest'}, 'hu': {'language': 'hu', 'value': 'cukorbetegség'}, 'ia': {'language': 'ia', 'value': 'Diabete'}, 'id': {'language': 'id', 'value': 'Diabetes mellitus'}, 'ilo': {'language': 'ilo', 'value': 'diabetes'}, 'io': {'language': 'io', 'value': 'diabeto'}, 'is': {'language': 'is', 'value': 'Sykursýki'}, 'ja': {'language': 'ja', 'value': '糖尿病'}, 'jv': {'language': 'jv', 'value': 'Kencing Manis'}, 'ka': {'language': 'ka', 'value': 'შაქრის დიაბეტი'}, 'kk': {'language': 'kk', 'value': 'Қант диабеті'}, 'km': {'language': 'km', 'value': 'ជំងឺទឹកនោមផ្អែម'}, 'kn': {'language': 'kn', 'value': 'ಮಧುಮೇಹ'}, 'ko': {'language': 'ko', 'value': '당뇨병'}, 'la': {'language': 'la', 'value': 'diabetes mellitus'}, 'lb': {'language': 'lb', 'value': 'Zockerkrankheet'}, 'lij': {'language': 'lij', 'value': 'Diabete Mellìo'}, 'lt': {'language': 'lt', 'value': 'Cukrinis diabetas'}, 'lv': {'language': 'lv', 'value': 'cukura diabēts'}, 'mk': {'language': 'mk', 'value': 'Шеќерна болест'}, 'ml': {'language': 'ml', 'value': 'പ്രമേഹം'}, 'mn': {'language': 'mn', 'value': 'Чихрийн шижин'}, 'mr': {'language': 'mr', 'value': 'मधुमेह'}, 'ms': {'language': 'ms', 'value': 'Penyakit kencing manis'}, 'my': {'language': 'my', 'value': 'ဆီးချိုရောဂါ'}, 'ne': {'language': 'ne', 'value': 'मधुमेह'}, 'new': {'language': 'new', 'value': 'मधुमेह'}, 'nl': {'language': 'nl', 'value': 'diabetes mellitus'}, 'nn': {'language': 'nn', 'value': 'diabetes mellitus'}, 'oc': {'language': 'oc', 'value': 'diabèta sucrat'}, 'om': {'language': 'om', 'value': 'Diabetes'}, 'or': {'language': 'or', 'value': 'ମଧୁମେହ'}, 'os': {'language': 'os', 'value': 'Сæкæрниз'}, 'pam': {'language': 'pam', 'value': 'Diabetes mellitus'}, 'pl': {'language': 'pl', 'value': 'cukrzyca'}, 'pnb': {'language': 'pnb', 'value': 'شوگر'}, 'ps': {'language': 'ps', 'value': 'ډايبېټېز مېلېټوز'}, 'pt': {'language': 'pt', 'value': 'diabetes mellitus'}, 'qu': {'language': 'qu', 'value': "Misk'i unquy"}, 'ro': {'language': 'ro', 'value': 'diabet zaharat'}, 'rue': {'language': 'rue', 'value': 'Цукрёвый діабет'}, 'ru': {'language': 'ru', 'value': 'сахарный диабет'}, 'sa': {'language': 'sa', 'value': 'मधुमेहः'}, 'sh': {'language': 'sh', 'value': 'Dijabetes'}, 'si': {'language': 'si', 'value': 'දියවැඩියාව'}, 'sk': {'language': 'sk', 'value': 'Diabetes mellitus'}, 'sl': {'language': 'sl', 'value': 'sladkorna bolezen'}, 'so': {'language': 'so', 'value': 'Sokorow'}, 'sq': {'language': 'sq', 'value': 'Diabetes mellitus'}, 'sr': {'language': 'sr', 'value': 'шећерна болест'}, 'su': {'language': 'su', 'value': 'Diabétes mélitus'}, 'sv': {'language': 'sv', 'value': 'diabetes'}, 'sw': {'language': 'sw', 'value': 'Kisukari'}, 'ta': {'language': 'ta', 'value': 'நீரிழிவு நோய்'}, 'te': {'language': 'te', 'value': 'మధుమేహం'}, 'tg': {'language': 'tg', 'value': 'Диабети қанд'}, 'th': {'language': 'th', 'value': 'เบาหวาน'}, 'tk': {'language': 'tk', 'value': 'Süýjülik'}, 'tl': {'language': 'tl', 'value': 'Diabetes mellitus'}, 'tr': {'language': 'tr', 'value': 'diyabet'}, 'uk': {'language': 'uk', 'value': 'цукровий діабет'}, 'ur': {'language': 'ur', 'value': 'ذیابیطس'}, 'vi': {'language': 'vi', 'value': 'tiểu đường'}, 'war': {'language': 'war', 'value': 'Diabetes mellitus'}, 'yi': {'language': 'yi', 'value': 'צוקערקרענק'}, 'zh': {'language': 'zh', 'value': '糖尿病'}, 'be-tarask': {'language': 'be-tarask', 'value': 'цукровы дыябэт'}, 'tt': {'language': 'tt', 'value': 'шикәр авыруы'}, 'pa': {'language': 'pa', 'value': 'ਸ਼ੱਕਰ ਰੋਗ'}, 'cv': {'language': 'cv', 'value': 'Сахăрлă диабет'}, 'sr-ec': {'language': 'sr-ec', 'value': 'шећерна болест'}, 'uz': {'language': 'uz', 'value': 'Qandli diabet'}, 'nb': {'language': 'nb', 'value': 'diabetes'}, 'sgs': {'language': 'sgs', 'value': 'Sokraus diabets'}, 'yue': {'language': 'yue', 'value': '糖尿'}, 'nan': {'language': 'nan', 'value': 'Thn̂g-jiō-pēⁿ'}, 'sah': {'language': 'sah', 'value': 'Диабет'}, 'se': {'language': 'se', 'value': 'diabetes'}, 'hy': {'language': 'hy', 'value': 'շաքարային դիաբետ'}, 'ba': {'language': 'ba', 'value': 'Шәкәр диабеты'}, 'ak': {'language': 'ak', 'value': 'Asikyire yareɛ'}, 'gsw': {'language': 'gsw', 'value': 'Diabetes mellitus'}, 'li': {'language': 'li', 'value': 'Sókkergekrenkdje'}, 'ceb': {'language': 'ceb', 'value': 'Diabetes mellitus'}, 'lg': {'language': 'lg', 'value': 'Okugwamu amazzi'}, 'bxr': {'language': 'bxr', 'value': 'Саахарай диабет'}, 'srn': {'language': 'srn', 'value': 'sukru'}, 'xmf': {'language': 'xmf', 'value': 'შანქარიშ დიაბეტი'}, 'jam': {'language': 'jam', 'value': 'dayabiitis'}, 'azb': {'language': 'azb', 'value': 'دیابت'}, 'lez': {'language': 'lez', 'value': 'Шекердин диабет'}, 'bpy': {'language': 'bpy', 'value': 'ডায়াবেটিস'}, 'ky': {'language': 'ky', 'value': 'Кант диабети'}, 'pap': {'language': 'pap', 'value': 'Diabétis Mellitus'}, 'ku': {'language': 'ku', 'value': 'Nexweşiya şekir'}, 'sd': {'language': 'sd', 'value': 'ڊيابطس'}, 'zh-hant': {'language': 'zh-hant', 'value': '糖尿病'}, 'xh': {'language': 'xh', 'value': 'iswekile yemellitus'}, 'zu': {'language': 'zu', 'value': 'isifo sikashukela'}, 'wuu': {'language': 'wuu', 'value': '糖尿病'}, 'hyw': {'language': 'hyw', 'value': 'Շաքարախտ'}, 'rmf': {'language': 'rmf', 'value': 'gullesko duk'}, 'smn': {'language': 'smn', 'value': 'diabetes'}, 'sms': {'language': 'sms', 'value': 'diabetes'}, 'min': {'language': 'min', 'value': 'Diabetes melitus'}, 'gcr': {'language': 'gcr', 'value': 'Djabèt (sendromm)'}, 'nqo': {'language': 'nqo', 'value': 'ߟߌߞߐ߮ ߗߊߥߎ߲'}, 'tt-cyrl': {'language': 'tt-cyrl', 'value': 'шикәр авыруы'}, 'din': {'language': 'din', 'value': 'Tuaanyëŋeeiabïk'}, 'ug': {'language': 'ug', 'value': 'دىئابېت كېسىلى'}, 'shn': {'language': 'shn', 'value': 'ယဵဝ်ႈဝၢၼ်'}, 'ary': {'language': 'ary', 'value': 'مرض د سكار'}, 'ce': {'language': 'ce', 'value': 'Шекаран диабет'}, 'nia': {'language': 'nia', 'value': 'Fökhö gulo'}, 'smj': {'language': 'smj', 'value': 'såhkårdávdda'}, 'bho': {'language': 'bho', 'value': 'शुगर रोग'}, 'crh': {'language': 'crh', 'value': 'şeker diabeti'}, 'mt': {'language': 'mt', 'value': 'dijabete mellitus'}, 'ha': {'language': 'ha', 'value': 'Ciwon suga'}, 'gd': {'language': 'gd', 'value': 'Tinneas an t-siùcair'}, 'mnw': {'language': 'mnw', 'value': 'ဏမ်ဍာတ်၊ ယဲ'}, 'pt-br': {'language': 'pt-br', 'value': 'diabetes mellitus'}, 'kcg': {'language': 'kcg', 'value': 'Zwan shuga'}, 'gv': {'language': 'gv', 'value': 'diabeetys'}, 'kw': {'language': 'kw', 'value': 'kleves melys'}, 'ks': {'language': 'ks', 'value': 'ذیابیٖطٔس'}, 'mi': {'language': 'mi', 'value': 'Mate huka'}, 'blk': {'language': 'blk', 'value': 'ဆီႏနွိုးရောႏဂါႏ'}, 'lmo': {'language': 'lmo', 'value': 'Diabet zucherad'}, 'shi': {'language': 'shi', 'value': 'Addyabiṭṭ'}, 'zh-hans': {'language': 'zh-hans', 'value': '糖尿病'}, 'frr': {'language': 'frr', 'value': 'Diabetes mellitus'}, 'bcl': {'language': 'bcl', 'value': 'Diabetes'}, 'za': {'language': 'za', 'value': 'Oknyouhdiemz'}, 'sn': {'language': 'sn', 'value': 'Chitsvigiri'}}
LeMyst commented 1 year ago

There is an open bug on phabricator: https://phabricator.wikimedia.org/T345474

But the "ak" language was removed from Wikidata: https://phabricator.wikimedia.org/T333765

Remove it from your labels