jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/658043 )
Change subject: [cleanup] use site._update_page with loadimageinfo method ......................................................................
[cleanup] use site._update_page with loadimageinfo method
- additional parameter verify_imageinfo in site._update_page will check 'imageinfo' content in every pageitem and probably raise an exception - call site._update_page with verify_imageinfo=True inside loadimageinfo and remove all other stuff for backward compatibility. loadimageinfo does not return a generator anymore.
Change-Id: I9093ece5c55cd6217b40a71a68ebb5ba53a77806 --- M pywikibot/site/__init__.py 1 file changed, 19 insertions(+), 18 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py index 893218b..8d9a282 100644 --- a/pywikibot/site/__init__.py +++ b/pywikibot/site/__init__.py @@ -1177,13 +1177,30 @@ return self.namespaces[num] return self.namespaces[num][0]
- def _update_page(self, page, query): + def _update_page(self, page, query, verify_imageinfo: bool = False): + """Update page attributes. + + @param page: page object to be updated + @param query: a api.QueryGenerator + @param verify_imageinfo: if given, every pageitem is checked + whether 'imageinfo' is missing. In that case an exception + is raised. + + @raises NoPage: 'missing' key is found in pageitem + @raises PageRelatedError: 'imageinfo' is missing in pageitem + """ for pageitem in query: if not self.sametitle(pageitem['title'], page.title(with_section=False)): raise InconsistentTitleReceived(page, pageitem['title']) api.update_page(page, pageitem, query.props)
+ if verify_imageinfo and 'imageinfo' not in pageitem: + if 'missing' in pageitem: + raise NoPage(page) + raise PageRelatedError( + page, 'loadimageinfo: Query on %s returned no imageinfo') + def loadpageinfo(self, page, preload=False): """Load page info from api and store in page attributes.
@@ -1312,23 +1329,7 @@ 'url', 'size', 'sha1', 'mime', 'metadata', 'archivename'], **args) - # kept for backward compatibility - # TODO: when backward compatibility can be broken, adopt - # self._update_page() pattern and remove return - for pageitem in query: - if not self.sametitle(pageitem['title'], title): - raise InconsistentTitleReceived(page, pageitem['title']) - api.update_page(page, pageitem, query.props) - - if 'imageinfo' not in pageitem: - if 'missing' in pageitem: - raise NoPage(page) - raise PageRelatedError( - page, - 'loadimageinfo: Query on %s returned no imageinfo') - - return (pageitem['imageinfo'] - if history else pageitem['imageinfo'][0]) + self._update_page(page, query, verify_imageinfo=True)
@deprecated('Check the content model instead', since='20150128', future_warning=True)