jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/412500 )
Change subject: [IMPR] Deprecate site.page_exists method ......................................................................
[IMPR] Deprecate site.page_exists method
- In the current implementation Page.exists() calls the site method page_exists which calls the upper tier Page.pageid property. But the tier direction page level -> site level -> data access level -> comm layer shouldn't be mixed if possible - Therefore deprecate the site method and use the page method directly
Change-Id: I75bd91e43b1f145eeb8ab2d63fbae1073cead733 --- M pywikibot/page.py M pywikibot/site.py M tests/site_tests.py 3 files changed, 27 insertions(+), 24 deletions(-)
Approvals: Dvorapa: Looks good to me, but someone else must approve Dalba: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py index 7b5b0c6..33761ae 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -802,7 +802,7 @@
@rtype: bool """ - return self.site.page_exists(self) + return self.pageid > 0
@property def oldest_revision(self): diff --git a/pywikibot/site.py b/pywikibot/site.py index 9bb3eb4..e9c0e72 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -6,7 +6,7 @@ groups of wikis on the same topic in different languages. """ # -# (C) Pywikibot team, 2008-2017 +# (C) Pywikibot team, 2008-2018 # # Distributed under the terms of the MIT license. # @@ -3110,13 +3110,14 @@ ) self._update_page(page, query)
+ @deprecated('page.exists()') def page_exists(self, page): """Return True if and only if page is an existing page on site.""" return page.pageid > 0
def page_restrictions(self, page): """Return a dictionary reflecting page protections.""" - if not self.page_exists(page): + if not page.exists(): raise NoPage(page) if not hasattr(page, "_protection"): self.loadpageinfo(page) diff --git a/tests/site_tests.py b/tests/site_tests.py index f2dd8ef..9d15082 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -436,7 +436,9 @@ """Test ApiSite methods for getting page-specific info.""" mysite = self.get_site() mainpage = self.get_mainpage() - self.assertIsInstance(mysite.page_exists(mainpage), bool) + with suppress_warnings('pywikibot.site.APISite.page_exists', + DeprecationWarning): + self.assertIsInstance(mysite.page_exists(mainpage), bool) self.assertIsInstance(mysite.page_restrictions(mainpage), dict) self.assertIsInstance(mysite.page_can_be_edited(mainpage), bool) self.assertIsInstance(mysite.page_isredirect(mainpage), bool) @@ -446,7 +448,7 @@ self.assertRaises(pywikibot.IsNotRedirectPage, mysite.getredirtarget, mainpage) a = list(mysite.preloadpages([mainpage])) - self.assertEqual(len(a), int(mysite.page_exists(mainpage))) + self.assertEqual(len(a), int(mainpage.exists())) if a: self.assertEqual(a[0], mainpage)
@@ -614,37 +616,37 @@ self.assertLessEqual(len(fwd), 10) for page in fwd: self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) rev = list(mysite.allpages(reverse=True, start="Aa", total=12)) self.assertLessEqual(len(rev), 12) for page in rev: self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) self.assertLessEqual(page.title(), "Aa") for page in mysite.allpages(start="Py", total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) self.assertGreaterEqual(page.title(), "Py") for page in mysite.allpages(prefix="Pre", total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) self.assertTrue(page.title().startswith("Pre")) for page in mysite.allpages(namespace=1, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 1) for page in mysite.allpages(filterredir=True, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) self.assertTrue(page.isRedirectPage()) for page in mysite.allpages(filterredir=False, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) self.assertFalse(page.isRedirectPage())
@@ -654,7 +656,7 @@ for page in mysite.allpages( filterlanglinks=True, total=3, namespace=4): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 4) self.assertNotEqual(page.langlinks(), [])
@@ -663,7 +665,7 @@ mysite = self.get_site() for page in mysite.allpages(filterlanglinks=False, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertEqual(page.namespace(), 0) self.assertEqual(page.langlinks(), [])
@@ -672,12 +674,12 @@ mysite = self.get_site() for page in mysite.allpages(minsize=100, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertGreaterEqual(len(page.text.encode(mysite.encoding())), 100) for page in mysite.allpages(maxsize=200, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) if (len(page.text.encode(mysite.encoding())) > 200 and mysite.data_repository() == mysite): unittest_print( @@ -692,12 +694,12 @@ mysite = self.get_site() for page in mysite.allpages(protect_type="edit", total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertIn("edit", page._protection) for page in mysite.allpages(protect_type="edit", protect_level="sysop", total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) self.assertIn("edit", page._protection) self.assertIn("sysop", page._protection["edit"])
@@ -815,24 +817,24 @@ for image in ai)) for impage in mysite.allimages(start="Ba", total=5): self.assertIsInstance(impage, pywikibot.FilePage) - self.assertTrue(mysite.page_exists(impage)) + self.assertTrue(impage.exists()) self.assertGreaterEqual(impage.title(withNamespace=False), "Ba") # Bug T17985 - reverse and start combined; fixed in v 1.14 for impage in mysite.allimages(start="Da", reverse=True, total=5): self.assertIsInstance(impage, pywikibot.FilePage) - self.assertTrue(mysite.page_exists(impage)) + self.assertTrue(impage.exists()) self.assertLessEqual(impage.title(withNamespace=False), "Da") for impage in mysite.allimages(prefix="Ch", total=5): self.assertIsInstance(impage, pywikibot.FilePage) - self.assertTrue(mysite.page_exists(impage)) + self.assertTrue(impage.exists()) self.assertTrue(impage.title(withNamespace=False).startswith("Ch")) for impage in mysite.allimages(minsize=100, total=5): self.assertIsInstance(impage, pywikibot.FilePage) - self.assertTrue(mysite.page_exists(impage)) + self.assertTrue(impage.exists()) self.assertGreaterEqual(impage.latest_file_info["size"], 100) for impage in mysite.allimages(maxsize=2000, total=5): self.assertIsInstance(impage, pywikibot.FilePage) - self.assertTrue(mysite.page_exists(impage)) + self.assertTrue(impage.exists()) self.assertLessEqual(impage.latest_file_info["size"], 2000)
def test_newfiles(self): @@ -1039,7 +1041,7 @@ if item in pnames: for page in mysite.pages_with_property(item, total=5): self.assertIsInstance(page, pywikibot.Page) - self.assertTrue(mysite.page_exists(page)) + self.assertTrue(page.exists()) if item == 'disambiguation': self.assertTrue(page.isDisambig) else:
pywikibot-commits@lists.wikimedia.org