https://bugzilla.wikimedia.org/show_bug.cgi?id=72344

            Bug ID: 72344
           Summary: Page.previousRevision exception
           Product: Pywikibot
           Version: core (2.0)
          Hardware: All
                OS: All
            Status: NEW
          Severity: critical
          Priority: Unprioritized
         Component: General
          Assignee: [email protected]
          Reporter: [email protected]
       Web browser: ---
   Mobile Platform: ---

Page.previousRevision assumes many revisions are loaded by
Page.getVersionHistory.

$ python pwb.py shell
Welcome to the Pywikibot interactive shell!
>>> import pywikibot
>>> s = pywikibot.Site('en', 'wikipedia')
>>> p = pywikibot.Page(s, 'Main Page')
>>> p.previousRevision()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File ".../pywikibot/page.py", line 550, in previousRevision
    revkey = sorted(self._revisions, reverse=True)[1]
IndexError: list index out of range

Page.getVersionHistory loads all revisions only if total is not set, but if
total is set, it only fetches one revision.

>>> p = pywikibot.Page(s, 'Main Page')
>>> p.getVersionHistory()
[(615503846, Timestamp(2014, 7, 4, 0, 24, 48), u'Magioladitis', u'Reverted
edits by [[Special:Contribs/Magioladitis|Magioladitis]] ([[User
talk:Magioladitis|talk]]) to last version by David Levy')]
>>> p.getVersionHistory(total=2)
[(615503846, Timestamp(2014, 7, 4, 0, 24, 48), u'Magioladitis', u'Reverted
edits by [[Special:Contribs/Magioladitis|Magioladitis]] ([[User
talk:Magioladitis|talk]]) to last version by David Levy')]

This change occurred in 2009
http://git.wikimedia.org/commit/pywikibot%2Fcore.git/1946dc13

It can be seen by only running this single test method:

python -m unittest -v tests.page_tests.TestPageObject.testApiMethods

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to