jenkins-bot has submitted this change and it was merged.
Change subject: Revert "Make obsolete site object can be created" ......................................................................
Revert "Make obsolete site object can be created"
Note to self: actually run *all* tests. Apparently we have a duplicate set of must_be tests >_<
See https://travis-ci.org/wikimedia/pywikibot-core/jobs/21351801
This reverts commit b548a1afb74ba26d1acd508e8b6ed14f03a368ee.
Change-Id: Icd6ddbc18d0515ec4f3f786dd7eb990e064bab8c --- M pywikibot/page.py M pywikibot/site.py M tests/site_tests.py 3 files changed, 15 insertions(+), 49 deletions(-)
Approvals: Merlijn van Deen: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py index 6c0178d..f95b39b 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -997,40 +997,31 @@ # ignore any links with invalid contents continue
- def langlinks(self, include_obsolete=False): + def langlinks(self): """Return a list of all interlanguage Links on this page. - - @param include_obsolete: if true, return even Link objects whose site - is obsolete
""" # Data might have been preloaded if not hasattr(self, '_langlinks'): - self._langlinks = list(self.iterlanglinks(include_obsolete=True)) + self._langlinks = list(self.iterlanglinks())
- if include_obsolete: - return self._langlinks - else: - return filter(lambda i: not i.site.obsolete, self._langlinks) + return self._langlinks
- def iterlanglinks(self, step=None, total=None, include_obsolete=False): + def iterlanglinks(self, step=None, total=None): """Iterate all interlanguage links on this page.
@param step: limit each API call to this number of pages @param total: iterate no more than this number of pages in total - @param include_obsolete: if true, yield even Link object whose site - is obsolete @return: a generator that yields Link objects.
""" if hasattr(self, '_langlinks'): - return iter(self.langlinks(include_obsolete=include_obsolete)) + return iter(self._langlinks) # XXX We might want to fill _langlinks when the Site # method is called. If we do this, we'll have to think # about what will happen if the generator is not completely # iterated upon. - return self.site.pagelanglinks(self, step=step, total=total, - include_obsolete=include_obsolete) + return self.site.pagelanglinks(self, step=step, total=total)
def data_item(self): """ diff --git a/pywikibot/site.py b/pywikibot/site.py index 14b916a..0d1e92d 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -129,15 +129,15 @@ else: self.__family = fam
- self.obsolete = False # if we got an outdated language code, use the new one instead. if self.__code in self.__family.obsolete: if self.__family.obsolete[self.__code] is not None: self.__code = self.__family.obsolete[self.__code] else: # no such language anymore - self.obsolete = True - elif self.__code not in self.languages(): + raise NoSuchSite("Language %s in family %s is obsolete" + % (self.__code, self.__family.name)) + if self.__code not in self.languages(): if self.__family.name in list(self.__family.langs.keys()) and \ len(self.__family.langs) == 1: oldcode = self.__code @@ -707,15 +707,10 @@ @param right: the rights the logged in user should have not supported yet and thus ignored. @returns: a decorator to make sure the requirement is statisfied when - the decorated function is called. The function can be called - with as_group='sysop' to override the group set in the - decorator. + the decorated function is called. """ def decorator(fn): def callee(self, *args, **kwargs): - if self.obsolete: - raise NoSuchSite("Language %s in family %s is obsolete" - % (self.code, self.family.name)) grp = kwargs.pop('as_group', group) if grp == 'user': self.login(False) @@ -1964,14 +1959,8 @@ # No such function in the API (this method isn't called anywhere) raise NotImplementedError
- def pagelanglinks(self, page, step=None, total=None, - include_obsolete=False): - """Iterate all interlanguage links on page, yielding Link objects. - - @param include_obsolete: if true, yield even Link objects whose - site is obsolete - - """ + def pagelanglinks(self, page, step=None, total=None): + """Iterate all interlanguage links on page, yielding Link objects.""" lltitle = page.title(withSection=False) llquery = self._generator(api.PropertyGenerator, type_arg="langlinks", @@ -1985,13 +1974,9 @@ if 'langlinks' not in pageitem: continue for linkdata in pageitem['langlinks']: - link = pywikibot.Link.langlinkUnsafe(linkdata['lang'], - linkdata['*'], - source=self) - if link.site.obsolete and not include_obsolete: - continue - else: - yield link + yield pywikibot.Link.langlinkUnsafe(linkdata['lang'], + linkdata['*'], + source=self)
def page_extlinks(self, page, step=None, total=None): """Iterate all external links on page, yielding URL strings.""" diff --git a/tests/site_tests.py b/tests/site_tests.py index 10e5bdf..79db3e2 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -1113,11 +1113,7 @@ # Implemented without setUpClass(cls) and global variables as objects # were not completely disposed and recreated but retained 'memory' def setUp(self): - self.code = 'test' - self.family = lambda: None - self.family.name = 'test' self._logged_in_as = None - self.obsolete = False
def login(self, sysop): # mock call @@ -1161,12 +1157,6 @@ self.assertEqual(retval[0], args) self.assertEqual(retval[1], kwargs) self.assertEqual(self._logged_in_as, 'sysop') - - def testObsoleteSite(self): - self.obsolete = True - args = (1, 2, 'a', 'b') - kwargs = {'i': 'j', 'k': 'l'} - self.assertRaises(pywikibot.NoSuchSite, self.call_this_user_req_function, args, kwargs)
if __name__ == '__main__': try:
pywikibot-commits@lists.wikimedia.org