jenkins-bot has submitted this change and it was merged.
Change subject: Request: warn if site not provided ......................................................................
Request: warn if site not provided
Add explicit site param for Request invocations
Bug: T77965 Change-Id: I5d6b76dac1dfdafc212b271d4b964885569163b8 --- M pywikibot/data/api.py M pywikibot/page.py M pywikibot/site.py M scripts/casechecker.py M scripts/redirect.py M scripts/watchlist.py M tests/page_tests.py 7 files changed, 9 insertions(+), 10 deletions(-)
Approvals: XZise: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py index 98c8b73..1171473 100644 --- a/pywikibot/data/api.py +++ b/pywikibot/data/api.py @@ -1105,6 +1105,7 @@ self.site = kwargs.pop("site") except KeyError: self.site = pywikibot.Site() + warn('Request() invoked without a site', RuntimeWarning, 2) if 'mime_params' in kwargs: self.mime_params = kwargs.pop('mime_params') # mime may not be different from mime_params diff --git a/pywikibot/page.py b/pywikibot/page.py index 8d17dc7..c724519 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -2819,7 +2819,7 @@ } if ccme: params['ccme'] = 1 - mailrequest = pywikibot.data.api.Request(**params) + mailrequest = pywikibot.data.api.Request(site=self.site, **params) maildata = mailrequest.submit()
if 'error' in maildata: diff --git a/pywikibot/site.py b/pywikibot/site.py index bbac719..7f25aea 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -4734,6 +4734,7 @@ data = req.submit() return data
+ @must_be(group='user') def watchpage(self, page, unwatch=False): """Add or remove page from watchlist.
@@ -4743,7 +4744,7 @@
""" token = self.tokens['watch'] - req = api.Request(action="watch", token=token, + req = api.Request(site=self, action='watch', token=token, title=page.title(withSection=False), unwatch=unwatch) result = req.submit() if "watch" not in result: diff --git a/scripts/casechecker.py b/scripts/casechecker.py index b4b608b..e7aff0a 100755 --- a/scripts/casechecker.py +++ b/scripts/casechecker.py @@ -267,7 +267,7 @@ 'pllimit': 'max', }
- req = api.Request(**wlparams) + req = api.Request(site=self.site, **wlparams) data = req.submit() if len(data['query']['pageids']) == 1: pageid = data['query']['pageids'][0] diff --git a/scripts/redirect.py b/scripts/redirect.py index 2dcaa34..e007146 100755 --- a/scripts/redirect.py +++ b/scripts/redirect.py @@ -226,8 +226,8 @@ where chain or loop detecton was halted, or None if unknown """ for apiQ in self._next_redirect_group(): - gen = pywikibot.data.api.Request(action="query", redirects="", - pageids=apiQ) + gen = pywikibot.data.api.Request(site=self.site, action='query', + redirects=True, pageids=apiQ) data = gen.submit() if 'error' in data: raise RuntimeError("API query error: %s" % data) diff --git a/scripts/watchlist.py b/scripts/watchlist.py index 62770b4..f3a0a76 100755 --- a/scripts/watchlist.py +++ b/scripts/watchlist.py @@ -64,7 +64,6 @@ params = { 'action': 'query', 'list': 'watchlistraw', - 'site': site, 'wrlimit': config.special_page_limit, }
@@ -72,7 +71,7 @@ # pywikibot.put_throttle() # It actually is a get, but a heavy one. watchlist = [] while True: - req = CachedRequest(config.API_config_expiry, **params) + req = CachedRequest(config.API_config_expiry, site=site, **params) data = req.submit() if 'error' in data: raise RuntimeError('ERROR: %s' % data) diff --git a/tests/page_tests.py b/tests/page_tests.py index 1ce104f..202189f 100644 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -16,7 +16,7 @@ import pywikibot.page
from tests.aspects import unittest, TestCase, DefaultSiteTestCase -from tests.utils import allowed_failure, expected_failure_if +from tests.utils import expected_failure_if
if sys.version_info[0] > 2: basestring = (str, ) @@ -755,12 +755,10 @@ mainpage = self.get_mainpage() self.assertIsInstance(mainpage.purge(), bool)
- @allowed_failure def test_watch(self): """Test Page.watch, with and without unwatch enabled.""" # Note: this test uses the userpage, so that it is unwatched and # therefore is not listed by script_tests test_watchlist_simulate. - # FIXME: T77965: fails on ar.wp and test.wd, but not en.wp and fr.wikt userpage = self.get_userpage() rv = userpage.watch() self.assertIsInstance(rv, bool)
pywikibot-commits@lists.wikimedia.org