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:
--
To view, visit
https://gerrit.wikimedia.org/r/412500
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I75bd91e43b1f145eeb8ab2d63fbae1073cead733
Gerrit-Change-Number: 412500
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dalba <dalba.wiki(a)gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com>
Gerrit-Reviewer: jenkins-bot <>