WilliamSM94 created this task.
WilliamSM94 added a project: Pywikibot.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.
TASK DESCRIPTION
**Steps to replicate the issue** (include links if applicable):
Run the following script:
import pywikibot
site = pywikibot.Site('wikidata', 'wikidata')
repo = site.data_repository()
item = pywikibot.ItemPage(repo, 'Q668')
item.claims
**What happens?**:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/tools/__init__.py:771,
in cached.<locals>.wrapper(obj, force)
770 try:
--> 771 return getattr(obj, cache_name)
772 except AttributeError:
AttributeError: 'Claim' object has no attribute '_type'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/site/_datasite.py:272,
in DataSite.getPropertyType(self, prop)
271 try:
--> 272 dtype = data['entities'][prop.getID()]['datatype']
273 except KeyError:
KeyError: 'datatype'
During handling of the above exception, another exception occurred:
KeyError Traceback (most recent call last)
Cell In[10], line 5
3 repo = site.data_repository()
4 item = pywikibot.ItemPage(repo, 'Q668')
----> 5 item.claims
6 print('a')
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_wikibase.py:140,
in WikibaseEntity.__getattr__(self, name)
138 self._initialize_empty()
139 return getattr(self, name)
--> 140 return self.get()[name]
142 raise AttributeError("'{}' object has no attribute '{}'"
143 .format(self.__class__.__name__, name))
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_wikibase.py:1166,
in ItemPage.get(self, force, get_redirect, *args, **kwargs)
1143 def get(
1144 self,
1145 force: bool = False,
(...)
1148 **kwargs
1149 ) -> dict[str, Any]:
1150 """
1151 Fetch all item data, and cache it.
1152
(...)
1164 unwanted change to the live content
1165 """
-> 1166 data = super().get(force, *args, **kwargs)
1168 if self.isRedirectPage() and not get_redirect:
1169 raise IsRedirectPageError(self)
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_wikibase.py:737,
in WikibasePage.get(self, force, *args, **kwargs)
735 lazy_loading_id = not hasattr(self, 'id') and hasattr(self, '_site')
736 try:
--> 737 data = WikibaseEntity.get(self, force=force)
738 except NoWikibaseEntityError:
739 if lazy_loading_id:
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_wikibase.py:285,
in WikibaseEntity.get(self, force)
283 # This initializes all data
284 for key, cls in self.DATA_ATTRIBUTES.items():
--> 285 value = cls.fromJSON(self._content.get(key, {}), self.repo)
286 setattr(self, key, value)
287 data[key] = value
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_collections.py:218,
in ClaimCollection.fromJSON(cls, data, repo)
216 return this
217 for key, claims in data.items():
--> 218 this[key] = [pywikibot.page.Claim.fromJSON(repo, claim)
219 for claim in claims]
220 return this
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_wikibase.py:1720,
in Claim.fromJSON(cls, site, data)
1718 value = data['mainsnak']['datavalue']['value']
1719 # The default covers string, url types
-> 1720 if claim.type in cls.types:
1721 claim.target = cls.TARGET_CONVERTER.get(
1722 claim.type, lambda value, site: value)(value, site)
1723 else:
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/tools/__init__.py:773,
in cached.<locals>.wrapper(obj, force)
771 return getattr(obj, cache_name)
772 except AttributeError:
--> 773 val = fn(obj)
774 setattr(obj, cache_name, val)
775 return val
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/page/_wikibase.py:1404,
in Property.type(self)
1400 @property
1401 @cached
1402 def type(self) -> str:
1403 """Return the type of this property."""
-> 1404 return self.repo.getPropertyType(self)
File
~/anaconda3/envs/tr/lib/python3.12/site-packages/pywikibot/site/_datasite.py:274,
in DataSite.getPropertyType(self, prop)
272 dtype = data['entities'][prop.getID()]['datatype']
273 except KeyError:
--> 274 dtype = data['entities'][prop.getID().lower()]['datatype']
276 return dtype
KeyError: 'p7829'
**What should have happened instead?**:
Return a `pywikibot.page._collections.ClaimCollection` with the claims of the
Item.
**Software version** (on `Special:Version` page; skip for WMF-hosted wikis
like Wikipedia):
- Python 3.12.1
- Pywikibot 9.2.0
**Other information** (browser name/version, screenshots, etc.):
I checked the wikidata page of the `Q668`
(https://www.wikidata.org/wiki/Q668) and `p7829` appears marked as `(Deleted
Property)`
TASK DETAIL
https://phabricator.wikimedia.org/T368908
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: WilliamSM94
Cc: Aklapper, pywikibot-bugs-list, WilliamSM94, mevo, PotsdamLamb, Jyoo1011,
JohnsonLee01, SHEKH, Dijkstra, Khutuck, Zkhalido, Aram, Viztor, Wenyi, Tbscho,
MayS, Mdupont, JJMC89, Dvorapa, Altostratus, Avicennasis, mys_721tx, Xqt,
jayvdb, Masti, Alchimista
_______________________________________________
pywikibot-bugs mailing list -- [email protected]
To unsubscribe send an email to [email protected]