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

Reply via email to