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
Version: core-(2.0)
Severity: critical
See Also:
https://bugzilla.wikimedia.org/show_bug.cgi?id=64188