Today my bot encountered https://www.wikidata.org/wiki/Q3211336 . This contains the deleted property P288.
This crashes the bot:
Traceback (most recent call last):
File "C:\pywikibot\core\article_to_category.py", line 97, in <module> main() File "C:\pywikibot\core\article_to_category.py", line 94, in main bot.run() File "C:\pywikibot\core\article_to_category.py", line 52, in run if not u'P910' in itemB.get().get('claims').keys(): File "C:\pywikibot\core\pywikibot\page.py", line 2571, in get c = Claim.fromJSON(self.repo, claim) File "C:\pywikibot\core\pywikibot\page.py", line 2776, in fromJSON if claim.getType() == 'wikibase-item': File "C:\pywikibot\core\pywikibot\page.py", line 2715, in getType self.type = self.repo.getPropertyType(self) File "C:\pywikibot\core\pywikibot\site.py", line 3533, in getPropertyType dtype = data['entities'][prop.getID().lower()]['datatype']
KeyError: u'p288'
If you look at https://git.wikimedia.org/blob/pywikibot%2Fcore.git/a1d63c8ba608b87d3a3aff6acc8dbbc29085eb8f/pywikibot%2Fpage.py from line 2776 and furthere, you'll see that it tries to lookup the type of the property. That fails because the property is deleted.
I don't think the lookup is needed, see https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q3211336&format=json :
"P288": [
{ "id": "q3211336$00f2cba0-4c06-ee8d-9598-d8c034b663ed", "mainsnak": { "snaktype": "value", "property": "P288", "datavalue": { "value": { "entity-type": "item", "numeric-id": 2304194 }, "type": "wikibase-entityid" } }, "type": "statement", "rank": "normal" }
]
This should be used to construct the claim instead of the extra lookup
Version: core-(2.0)
Severity: normal