Page MenuHomePhabricator

Page.previousRevision exception
Closed, DeclinedPublic

Description

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

Details

Reference
bz72344

Event Timeline

bzimport raised the priority of this task from to Needs Triage.Nov 22 2014, 3:55 AM
bzimport set Reference to bz72344.
bzimport added a subscriber: Unknown Object (????).

Bah. This was caused by a local change. Sorry.