jenkins-bot has submitted this change and it was merged.
Change subject: [IMPROV] LogEntry: page method instead of title
......................................................................
[IMPROV] LogEntry: page method instead of title
The name of the method title() is misleading as it actually returns a Page
instance. The title() method still redirects to the new page() method but is
deprecated and will be replaced in the future by something that just returns a
string.
Bug: T78125
Change-Id: Ic1abfaba91a6b8e117b29365a882fdcf9203ccf7
---
M pywikibot/logentries.py
M pywikibot/pagegenerators.py
M scripts/imageuncat.py
M scripts/redirect.py
M tests/logentry_tests.py
M tests/site_tests.py
6 files changed, 39 insertions(+), 12 deletions(-)
Approvals:
John Vandenberg: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/logentries.py b/pywikibot/logentries.py
index bc99909..017f558 100644
--- a/pywikibot/logentries.py
+++ b/pywikibot/logentries.py
@@ -82,16 +82,26 @@
def ns(self):
return self.data['ns']
+ @deprecated('page()')
def title(self):
+ """
+ DEPRECATED: Alias for page().
+
+ This is going to be replaced by just returning the title as a string
+ instead of a Page instance.
+ """
+ return self.page()
+
+ def page(self):
"""
Page on which action was performed.
Note: title may be missing in data dict e.g. by oversight action to
hide the title. In that case a KeyError exception will raise
"""
- if not hasattr(self, '_title'):
- self._title = pywikibot.Page(self.site, self.data['title'])
- return self._title
+ if not hasattr(self, '_page'):
+ self._page = pywikibot.Page(self.site, self.data['title'])
+ return self._page
def type(self):
return self.data['type']
@@ -136,7 +146,7 @@
if self.isAutoblockRemoval:
self._blockid = int(self.data['title'][pos + 1:])
- def title(self):
+ def page(self):
"""
Return the blocked account or IP.
@@ -149,7 +159,7 @@
if self.isAutoblockRemoval:
return self._blockid
else:
- return super(BlockEntry, self).title()
+ return super(BlockEntry, self).page()
def flags(self):
"""
diff --git a/pywikibot/pagegenerators.py b/pywikibot/pagegenerators.py
index d1a714c..3dff94f 100644
--- a/pywikibot/pagegenerators.py
+++ b/pywikibot/pagegenerators.py
@@ -890,7 +890,7 @@
for entry in site.logevents(total=total, logtype=logtype,
user=user, namespace=namespace):
try:
- yield entry.title()
+ yield entry.page()
except KeyError as e:
pywikibot.warning(u'LogeventsPageGenerator: '
u'failed to load page for %r; skipping'
@@ -1668,8 +1668,8 @@
site = pywikibot.Site()
for entry in site.logevents(logtype="upload", step=step, total=total):
# entry is an UploadEntry object
- # entry.title() returns a Page object
- yield entry.title()
+ # entry.page() returns a Page object
+ yield entry.page()
def WikibaseItemGenerator(gen):
diff --git a/scripts/imageuncat.py b/scripts/imageuncat.py
index d543730..85a6d7e 100755
--- a/scripts/imageuncat.py
+++ b/scripts/imageuncat.py
@@ -1261,7 +1261,7 @@
yesterday = today + timedelta(days=-1)
for logentry in site.logevents(logtype='upload', start=yesterday,
end=today, reverse=True):
- yield logentry.title()
+ yield logentry.page()
def recentChanges(site=None, delay=0, block=70):
diff --git a/scripts/redirect.py b/scripts/redirect.py
index b8e299c..9792ce1 100755
--- a/scripts/redirect.py
+++ b/scripts/redirect.py
@@ -351,7 +351,7 @@
pywikibot.output('.', newline=False)
for logentry in move_gen:
try:
- moved_page = logentry.title()
+ moved_page = logentry.page()
except KeyError: # hidden page
continue
pywikibot.output('.', newline=False)
diff --git a/tests/logentry_tests.py b/tests/logentry_tests.py
index 20820c9..ea17f2e 100644
--- a/tests/logentry_tests.py
+++ b/tests/logentry_tests.py
@@ -79,7 +79,9 @@
self.assertIsInstance(logentry.pageid(), int)
self.assertIsInstance(logentry.timestamp(), pywikibot.Timestamp)
if 'title' in logentry.data: # title may be missing
- self.assertIsInstance(logentry.title(), pywikibot.Page)
+ self.assertIsInstance(logentry.page(), pywikibot.Page)
+ else:
+ self.assertRaises(KeyError, logentry.page)
self.assertEqual(logentry.type(), logtype)
self.assertIsInstance(logentry.user(), unicode)
self.assertGreaterEqual(logentry.logid(), 0)
@@ -95,6 +97,7 @@
"""Create the new class."""
def test_method(logtype):
def test_logevent(self, key):
+ """Test a single logtype entry."""
self._test_logevent(logtype)
return test_logevent
@@ -192,6 +195,19 @@
self.assertIsInstance(logentry.new_ns(), int)
self.assertEqual(logentry.new_title(), logentry.target_page)
+ def test_LogEntry_title(self, key):
+ """Test title and page return the same instance."""
+ # Request multiple log entries in the hope that one might have no
+ # title entry
+ for logentry in self.site.logevents(total=5):
+ if 'title' in logentry.data: # title may be missing
+ self.assertIsInstance(logentry.title(), pywikibot.Page)
+ self.assertIs(logentry.title(), logentry.page())
+ else:
+ self.assertRaises(KeyError, logentry.title)
+ self.assertDeprecation()
+ self._reset_messages()
+
if __name__ == '__main__':
try:
diff --git a/tests/site_tests.py b/tests/site_tests.py
index 9c62d93..2fbe552 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -899,7 +899,8 @@
for entry in mysite.logevents(logtype=typ, total=3):
self.assertEqual(entry.type(), typ)
for entry in mysite.logevents(page=mainpage, total=3):
- self.assertEqual(entry.title().title(), mainpage.title())
+ self.assertEqual(entry.page().title(), mainpage.title())
+ self.assertEqual(entry.page(), mainpage)
for entry in mysite.logevents(user=mysite.user(), total=3):
self.assertEqual(entry.user(), mysite.user())
for entry in
mysite.logevents(start=pywikibot.Timestamp.fromISOformat("2008-09-01T00:00:01Z"),
total=5):
--
To view, visit https://gerrit.wikimedia.org/r/218931
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic1abfaba91a6b8e117b29365a882fdcf9203ccf7
Gerrit-PatchSet: 2
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <[email protected]>
Gerrit-Reviewer: Elyashiv <[email protected]>
Gerrit-Reviewer: John Vandenberg <[email protected]>
Gerrit-Reviewer: Ladsgroup <[email protected]>
Gerrit-Reviewer: Merlijn van Deen <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits