jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/572484 )
Change subject: [bugfix] Use site.userinfo getter instead of site._userinfo within api
......................................................................
[bugfix] Use site.userinfo getter instead of site._userinfo within api
- use site.userinfo getter instead of site._userinfo within api which may
cause unexpected results
Request.__init__():
- use str instead of repr when raising Error "attempted as IP"
which is the same in Python 2 and 3
- show the unexpected username with then the warning
CachedRequest._uniquedescriptionstr():
- compare against LoginStatus.AS_USER
- remove max expression because login_status cannot be higher than
LoginStatus.NOT_LOGGED_IN
dry_api_tests.py:
- update test due to the new exception behaviour
- use subTest for each subtest
- additional tests within test_unexpected_user and test_normal
Bug: T243794
Change-Id: I448b851a844ea58351a2a4fed8b16db9855c6eab
---
M pywikibot/data/api.py
M tests/dry_api_tests.py
2 files changed, 38 insertions(+), 38 deletions(-)
Approvals:
Zhuyifei1999: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 0702d38..bbb9b57 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -1246,18 +1246,19 @@
# Client side verification that the request is being performed
# by a logged in user, and warn if it isn't a config username.
if self.write:
- if not hasattr(self.site, '_userinfo'):
- raise Error('API write action attempted without userinfo')
- assert('name' in self.site._userinfo)
+ try:
+ username = self.site.userinfo['name']
+ except KeyError:
+ raise Error('API write action attempted without user name')
- if 'anon' in self.site._userinfo:
- raise Error('API write action attempted as IP %r'
- % self.site._userinfo['name'])
+ if 'anon' in self.site.userinfo:
+ raise Error("API write action attempted as IP '{}'"
+ .format(username))
- if not self.site.user():
+ if not self.site.user() or self.site.username() != username:
pywikibot.warning(
- 'API write action by unexpected username commenced.\n'
- 'userinfo: %r' % self.site._userinfo)
+ 'API write action by unexpected username {} commenced.\n'
+ 'userinfo: {!r}'.format(username, self.site.userinfo))
# MediaWiki 1.23 allows assertion for any action,
# whereas earlier WMF wikis and others used an extension which
@@ -2176,19 +2177,16 @@
"""
login_status = self.site._loginstatus
- if login_status > pywikibot.site.LoginStatus.NOT_LOGGED_IN and \
- hasattr(self.site, '_userinfo') and \
- 'name' in self.site._userinfo:
+ if login_status >= pywikibot.site.LoginStatus.AS_USER:
# This uses the format of Page.__repr__, without performing
# config.console_encoding as done by Page.__repr__.
# The returned value can't be encoded to anything other than
# ascii otherwise it creates an exception when _create_file_name()
# tries to encode it as utf-8.
- user_key = 'User(User:%s)' % self.site._userinfo['name']
+ user_key = 'User(User:{})'.format(self.site.userinfo['name'])
else:
- user_key = pywikibot.site.LoginStatus(
- max(login_status, pywikibot.site.LoginStatus.NOT_LOGGED_IN))
- user_key = repr(user_key)
+ user_key = repr(pywikibot.site.LoginStatus(
+ pywikibot.site.LoginStatus.NOT_LOGGED_IN))
request_key = repr(sorted(self._encoded_items().items()))
return repr(self.site) + user_key + request_key
diff --git a/tests/dry_api_tests.py b/tests/dry_api_tests.py
index a9a03d3..4d29f85 100644
--- a/tests/dry_api_tests.py
+++ b/tests/dry_api_tests.py
@@ -241,36 +241,38 @@
def test_no_user(self):
"""Test Request object when not a user."""
- site = self.get_site()
+ self.site._userinfo = {}
+ with self.subTest(userinfo=self.site._userinfo):
+ self.assertRaisesRegex(pywikibot.Error,
+ 'API write action attempted without user',
+ Request, site=self.site,
+ parameters={'action': 'edit'})
- del site._userinfo
- self.assertRaisesRegex(pywikibot.Error, ' without userinfo',
- Request, site=site,
- parameters={'action': 'edit'})
-
- site._userinfo = {'name': '1.2.3.4', 'groups': [], 'anon': ''}
-
- # unicode string with "u" is returned with Python 2
- self.assertRaisesRegex(pywikibot.Error, " as IP u?'1.2.3.4'",
- Request, site=site,
- parameters={'action': 'edit'})
+ self.site._userinfo = {'name': '1.2.3.4', 'groups': [], 'anon': ''}
+ with self.subTest(userinfo=self.site._userinfo):
+ self.assertRaisesRegex(pywikibot.Error, " as IP '1.2.3.4'",
+ Request, site=self.site,
+ parameters={'action': 'edit'})
def test_unexpected_user(self):
"""Test Request object when username is not correct."""
- site = self.get_site()
- site._userinfo = {'name': 'other_username', 'groups': []}
- site._username = 'myusername'
+ self.site._userinfo = {'name': 'other_username', 'groups': [],
+ 'id': '1'}
+ self.site._username = 'myusername'
# Ignore warning: API write action by unexpected username commenced.
with patch('pywikibot.warning'):
- Request(site=site, parameters={'action': 'edit'})
+ Request(site=self.site, parameters={'action': 'edit'})
+ self.assertNotEqual(self.site.user(), self.site.username())
+ self.assertNotEqual(self.site.userinfo['name'], self.site.username())
+ self.assertFalse(self.site.logged_in())
def test_normal(self):
"""Test Request object when username is correct."""
- site = self.get_site()
- site._userinfo = {'name': 'myusername', 'groups': []}
- site._username = 'myusername'
-
- Request(site=site, parameters={'action': 'edit'})
+ self.site._userinfo = {'name': 'myusername', 'groups': [], 'id': '1'}
+ self.site._username = 'myusername'
+ Request(site=self.site, parameters={'action': 'edit'})
+ self.assertEqual(self.site.user(), self.site.username())
+ self.assertTrue(self.site.logged_in())
class DryMimeTests(TestCase):
@@ -310,7 +312,7 @@
# fake write test needs the config username
site = self.get_site()
site._username = 'myusername'
- site._userinfo = {'name': 'myusername', 'groups': []}
+ site._userinfo = {'name': 'myusername', 'groups': [], 'id': '1'}
parameters = {'action': 'upload', 'file': 'MP_sounds.png',
'filename': join_images_path('MP_sounds.png')}
req = Request(site=site, mime=True, parameters=parameters)
--
To view, visit https://gerrit.wikimedia.org/r/572484
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I448b851a844ea58351a2a4fed8b16db9855c6eab
Gerrit-Change-Number: 572484
Gerrit-PatchSet: 5
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck <alangiderick(a)gmail.com>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki(a)aol.com>
Gerrit-Reviewer: Dalba <dalba.wiki(a)gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki(a)tools.wmflabs.org>
Gerrit-Reviewer: Huji <huji.huji(a)gmail.com>
Gerrit-Reviewer: JJMC89 <JJMC89.Wikimedia(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <Ladsgroup(a)gmail.com>
Gerrit-Reviewer: Legoktm <legoktm(a)member.fsf.org>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Multichill <maarten(a)mdammers.nl>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Zhuyifei1999 <zhuyifei1999(a)gmail.com>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/581740 )
Change subject: Revert "[bugfix] Don't expect default Site is in random sample"
......................................................................
Revert "[bugfix] Don't expect default Site is in random sample"
This reverts commit 106291f8dfa19d19d6c823bb83787e47e404e938.
Change-Id: I7c6b15d8090e0b88f21b75af4bcb1b927f25e520
---
M tests/generate_family_files_tests.py
1 file changed, 5 insertions(+), 0 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/generate_family_files_tests.py b/tests/generate_family_files_tests.py
index ab8806b..19a6f59 100644
--- a/tests/generate_family_files_tests.py
+++ b/tests/generate_family_files_tests.py
@@ -65,7 +65,12 @@
gen = self.generator_instance
gen.run()
+ with self.subTest(test='Test whether default is loaded'):
+ self.assertIn(self.site.lang, gen.wikis)
+
with self.subTest(test='Test element counts'):
+ if self.site.lang not in gen.prefixes:
+ gen.prefixes += [self.site.lang]
self.assertCountEqual(gen.prefixes, gen.wikis)
# test creating Site from url
--
To view, visit https://gerrit.wikimedia.org/r/581740
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I7c6b15d8090e0b88f21b75af4bcb1b927f25e520
Gerrit-Change-Number: 581740
Gerrit-PatchSet: 1
Gerrit-Owner: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/581703 )
Change subject: [tests] Fix error message in need_right
......................................................................
[tests] Fix error message in need_right
- show username instead of <bound method ...>
(https://travis-ci.org/github/wikimedia/pywikibot/jobs/663162283#L3814)
Change-Id: Ib1af6248becb6c35226c62af53ff00f0b9140be7
---
M pywikibot/site/__init__.py
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py
index 3c4f4a8..bd0a87f 100644
--- a/pywikibot/site/__init__.py
+++ b/pywikibot/site/__init__.py
@@ -1336,7 +1336,7 @@
elif right is not None and not self.has_right(right):
raise UserRightsError('User "{}" does not have required '
'user right "{}"'
- .format(self.user, right))
+ .format(self.user(), right))
return fn(self, *args, **kwargs)
if not __debug__:
--
To view, visit https://gerrit.wikimedia.org/r/581703
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ib1af6248becb6c35226c62af53ff00f0b9140be7
Gerrit-Change-Number: 581703
Gerrit-PatchSet: 2
Gerrit-Owner: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/581574 )
Change subject: [bugfix] Don't expect default Site is in random sample
......................................................................
[bugfix] Don't expect default Site is in random sample
- this failed in wowwiki lately:
https://travis-ci.org/github/wikimedia/pywikibot/jobs/663162283
Bug: T214009
Change-Id: I8c0e5db0444c08d4812ef274470356a856f1a955
---
M tests/generate_family_files_tests.py
1 file changed, 0 insertions(+), 5 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/tests/generate_family_files_tests.py b/tests/generate_family_files_tests.py
index 19a6f59..ab8806b 100644
--- a/tests/generate_family_files_tests.py
+++ b/tests/generate_family_files_tests.py
@@ -65,12 +65,7 @@
gen = self.generator_instance
gen.run()
- with self.subTest(test='Test whether default is loaded'):
- self.assertIn(self.site.lang, gen.wikis)
-
with self.subTest(test='Test element counts'):
- if self.site.lang not in gen.prefixes:
- gen.prefixes += [self.site.lang]
self.assertCountEqual(gen.prefixes, gen.wikis)
# test creating Site from url
--
To view, visit https://gerrit.wikimedia.org/r/581574
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I8c0e5db0444c08d4812ef274470356a856f1a955
Gerrit-Change-Number: 581574
Gerrit-PatchSet: 2
Gerrit-Owner: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/572204 )
Change subject: [bugfix] Add captcha support for "simple" type
......................................................................
[bugfix] Add captcha support for "simple" type
Bug: T60546
Change-Id: Ia46ee1f2f26f8a9a4a1ec7ccbb5026775e9698cd
---
M pywikibot/site/__init__.py
1 file changed, 1 insertion(+), 3 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site/__init__.py b/pywikibot/site/__init__.py
index 67604ac..3c4f4a8 100644
--- a/pywikibot/site/__init__.py
+++ b/pywikibot/site/__init__.py
@@ -5421,9 +5421,7 @@
captcha = result['edit']['captcha']
req['captchaid'] = captcha['id']
- if captcha['type'] == 'math':
- # TODO: Should the input be parsed through eval
- # in py3?
+ if captcha['type'] in ['math', 'simple']:
req['captchaword'] = input(captcha['question'])
continue
--
To view, visit https://gerrit.wikimedia.org/r/572204
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia46ee1f2f26f8a9a4a1ec7ccbb5026775e9698cd
Gerrit-Change-Number: 572204
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Bináris <wikiposta(a)gmail.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Ysangkok <ysangkok(a)gmail.com>
Gerrit-Reviewer: jenkins-bot (75)
Gerrit-CC: Alex Monk <krenair(a)gmail.com>
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/579864 )
Change subject: [IMPR] logging._inited_routines as a set
......................................................................
[IMPR] logging._inited_routines as a set
- change logging._inited_routines from list to set
for better lookup
Change-Id: Ia4d9a5b287767edfb43390f4142b9dbee8a58707
---
M pywikibot/logging.py
1 file changed, 4 insertions(+), 4 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/logging.py b/pywikibot/logging.py
index 1074188..033c628 100644
--- a/pywikibot/logging.py
+++ b/pywikibot/logging.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
"""Logging functions."""
#
-# (C) Pywikibot team, 2010-2019
+# (C) Pywikibot team, 2010-2020
#
# Distributed under the terms of the MIT license.
#
@@ -22,7 +22,7 @@
unicode = str
_init_routines = []
-_inited_routines = []
+_inited_routines = set()
def add_init_routine(routine):
@@ -35,10 +35,10 @@
for init_routine in _init_routines:
if init_routine not in _inited_routines:
init_routine()
- _inited_routines.append(init_routine)
+ _inited_routines.add(init_routine)
# Clear the list of routines to be inited
- _init_routines[:] = []
+ _init_routines[:] = [] # the global variable is used with slice operator
# User output/logging functions
--
To view, visit https://gerrit.wikimedia.org/r/579864
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia4d9a5b287767edfb43390f4142b9dbee8a58707
Gerrit-Change-Number: 579864
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: jenkins-bot (75)