jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/462471 )
Change subject: [IMPR] Derive ArgumentDeprecationWarning from FutureWarning
......................................................................
[IMPR] Derive ArgumentDeprecationWarning from FutureWarning
Derive ArgumentDeprecationWarning from FutureWarning which is recommended
for warnings intended to be seen by application end users. Keep inheritance
from UserWarning for backward compatibility.
Change-Id: I6f3fdb9b01b1460e28c379b1804278843fb30c0e
---
M pywikibot/exceptions.py
1 file changed, 2 insertions(+), 2 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/exceptions.py b/pywikibot/exceptions.py
index cdadc09..1be8d9a 100644
--- a/pywikibot/exceptions.py
+++ b/pywikibot/exceptions.py
@@ -81,7 +81,7 @@
- FamilyMaintenanceWarning: missing information in family definition
"""
#
-# (C) Pywikibot team, 2008-2019
+# (C) Pywikibot team, 2008-2020
#
# Distributed under the terms of the MIT license.
#
@@ -104,7 +104,7 @@
pass
-class ArgumentDeprecationWarning(UserWarning):
+class ArgumentDeprecationWarning(UserWarning, FutureWarning):
"""Command line argument that is no longer supported."""
--
To view, visit https://gerrit.wikimedia.org/r/462471
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: I6f3fdb9b01b1460e28c379b1804278843fb30c0e
Gerrit-Change-Number: 462471
Gerrit-PatchSet: 6
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki(a)aol.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Framawiki <framawiki(a)tools.wmflabs.org>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot (75)
Gerrit-CC: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-CC: Zoranzoki21 <zorandori4444(a)gmail.com>
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/571001 )
Change subject: [bugfix] always use Site.userinfo in favour of Site._userinfo
......................................................................
[bugfix] always use Site.userinfo in favour of Site._userinfo
- always use Site.userinfo in favour of Site._userinfo to ensure
_siteinfo attribute is given
- print a warning if no user is logged in when retrieving userinfo
- check for "anon" and "id" in userinfo for logged_in() method
- additional tests in TestDrySite.test_logged_in()
- use subTest for TestDrySite.test_logged_in()
Bug: T243794
Change-Id: I9c1072d2af2c7c237a0f89c8a0482b644d2e92f0
---
M pywikibot/site.py
M tests/dry_site_tests.py
2 files changed, 36 insertions(+), 12 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 02edc0c..040c8d8 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -1959,15 +1959,17 @@
def logged_in(self):
"""Verify the bot is logged into the site as the expected user.
- The expected usernames are those provided as either the user or sysop
- parameter at instantiation.
+ The expected usernames are those provided as the user parameter
+ at instantiation.
@rtype: bool
"""
if not hasattr(self, '_userinfo'):
return False
+ if 'anon' in self.userinfo or not self.userinfo.get('id'):
+ return False
- if 'name' not in self.userinfo or not self.userinfo['name']:
+ if not self.userinfo.get('name'):
return False
if self.userinfo['name'] != self.username():
@@ -2137,6 +2139,9 @@
assert 'userinfo' in uidata['query'], \
"API userinfo response lacks 'userinfo' key"
self._userinfo = uidata['query']['userinfo']
+ if 'anon' in self._userinfo or not self._userinfo.get('id'):
+ pywikibot.warning('No user is logged in on site {}'
+ .format(self))
return self._userinfo
userinfo = property(fget=getuserinfo, doc=getuserinfo.__doc__)
@@ -2183,7 +2188,7 @@
@rtype: bool
"""
- return 'blockinfo' in self._userinfo
+ return 'blockinfo' in self.userinfo
@deprecated('has_right() or is_blocked()', since='20141218')
@remove_last_args(['sysop'])
@@ -2279,7 +2284,7 @@
U{https://www.mediawiki.org/wiki/API:Userinfo}
"""
- return right.lower() in self._userinfo['rights']
+ return right.lower() in self.userinfo['rights']
@remove_last_args(['sysop'])
def has_group(self, group):
@@ -2289,12 +2294,12 @@
but will usually include bot.
U{https://www.mediawiki.org/wiki/API:Userinfo}
"""
- return group.lower() in self._userinfo['groups']
+ return group.lower() in self.userinfo['groups']
@remove_last_args(['sysop'])
def messages(self):
"""Return true if the user has new messages, and false otherwise."""
- return 'messages' in self._userinfo
+ return 'messages' in self.userinfo
@need_extension('Echo')
def notifications(self, **kwargs):
diff --git a/tests/dry_site_tests.py b/tests/dry_site_tests.py
index a37454f..a999dd3 100644
--- a/tests/dry_site_tests.py
+++ b/tests/dry_site_tests.py
@@ -30,18 +30,37 @@
def test_logged_in(self):
"""Test logged_in() method."""
x = self.get_site()
-
- x._userinfo = {'name': None, 'groups': []}
+ x._userinfo = {'name': None, 'groups': [], 'id': 1}
x._username = 'user'
- self.assertFalse(x.logged_in())
+ with self.subTest(variant='name: None'):
+ self.assertFalse(x.logged_in())
x._userinfo['name'] = 'user'
- self.assertTrue(x.logged_in())
+ with self.subTest(variant='name: user'):
+ self.assertTrue(x.logged_in())
+ x._userinfo['name'] = 'otheruser'
+ with self.subTest(variant='name: otheruseer'):
+ self.assertFalse(x.logged_in())
+
+ x._userinfo['id'] = 0
x._userinfo['name'] = 'user'
+ with self.subTest(variant='id: 0'):
+ self.assertFalse(x.logged_in())
+
+ x._userinfo['id'] = 1
+ with self.subTest(variant='id: 1'):
+ self.assertTrue(x.logged_in())
+
+ x._userinfo['anon'] = ''
+ with self.subTest(variant='anon'):
+ self.assertFalse(x.logged_in())
+
+ del x._userinfo['anon']
x._userinfo['groups'] = ['sysop']
- self.assertTrue(x.logged_in())
+ with self.subTest(variant='sysop'):
+ self.assertTrue(x.logged_in())
def test_user_agent(self):
"""Test different variants of user agents."""
--
To view, visit https://gerrit.wikimedia.org/r/571001
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: I9c1072d2af2c7c237a0f89c8a0482b644d2e92f0
Gerrit-Change-Number: 571001
Gerrit-PatchSet: 7
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Huji <huji.huji(a)gmail.com>
Gerrit-Reviewer: Pasleim <pascal.leimer(a)bluewin.ch>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: Zoranzoki21 <zorandori4444(a)gmail.com>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/571008 )
Change subject: [IMPR] replace Site.userinfo['rights'] with Site.has_right
......................................................................
[IMPR] replace Site.userinfo['rights'] with Site.has_right
Change-Id: I083779a8f56e15459e692c125036409765107cf9
---
M pywikibot/page.py
M pywikibot/site.py
M pywikibot/specialbots.py
M scripts/category.py
M scripts/redirect.py
5 files changed, 17 insertions(+), 22 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py
index af90868..c154adf 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -1917,7 +1917,7 @@
reason = pywikibot.input('Please enter a reason for the deletion:')
# If user has 'delete' right, delete the page
- if 'delete' in self.site.userinfo['rights']:
+ if self.site.has_right('delete'):
answer = 'y'
if prompt and not hasattr(self.site, '_noDeletePrompt'):
answer = pywikibot.input_choice(
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 0ad71fe..f91c2f0 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -1304,7 +1304,7 @@
'can perform requested action.'
.format(self.sitename))
if right is not None:
- if right in self.userinfo['rights']:
+ if self.has_right(right):
return fn(self, *args, **kwargs)
if grp == 'user':
self.login(False)
@@ -5034,10 +5034,10 @@
err = ('deletedrevs: User:{} not authorized to '
.format(self.user()))
- if 'deletedhistory' not in self.userinfo['rights']:
+ if not self.has_right('deletedhistory'):
raise Error(err + 'access deleted revisions.')
if content:
- if 'undelete' not in self.userinfo['rights']:
+ if not self.has_right('undelete'):
raise Error(err + 'view deleted content.')
revids = kwargs.pop('revids', None)
@@ -5291,7 +5291,7 @@
token = self.tokens['edit']
if bot is None:
- bot = ('bot' in self.userinfo['rights'])
+ bot = self.has_right('bot')
params = dict(action='edit', title=page,
text=text, token=token, summary=summary, bot=bot,
recreate=recreate, createonly=createonly,
@@ -6354,7 +6354,7 @@
# An offset != 0 doesn't make sense without a file key
assert(_offset == 0 or _file_key is not None)
# check for required user right
- if 'upload' not in self.userinfo['rights']:
+ if not self.has_right('upload'):
raise Error(
"User '%s' does not have upload rights on site %s."
% (self.user(), self))
@@ -6592,7 +6592,7 @@
}
else:
# upload by URL
- if 'upload_by_url' not in self.userinfo['rights']:
+ if not self.has_right('upload_by_url'):
raise Error(
"User '%s' is not authorized to upload by URL on site %s."
% (self.user(), self))
diff --git a/pywikibot/specialbots.py b/pywikibot/specialbots.py
index 2bfbed1..cd74fee 100644
--- a/pywikibot/specialbots.py
+++ b/pywikibot/specialbots.py
@@ -3,7 +3,7 @@
"""Library containing special bots."""
#
# (C) Rob W.W. Hooft, Andre Engels 2003-2004
-# (C) Pywikibot team, 2003-2019
+# (C) Pywikibot team, 2003-2020
#
# Distributed under the terms of the MIT license.
#
@@ -423,8 +423,7 @@
pywikibot.output('Uploading file to {0}...'.format(site))
ignore_warnings = self.ignoreWarning is True or self._handle_warnings
- if ('://' in file_url
- and 'upload_by_url' not in site.userinfo['rights']):
+ if '://' in file_url and not site.has_right('upload_by_url'):
file_url = self.read_file_content(file_url)
try:
@@ -462,7 +461,7 @@
return
# early check that user has proper rights to upload
- if 'upload' not in self.targetSite.userinfo['rights']:
+ if not self.targetSite.has_right('upload'):
pywikibot.error(
"User '%s' does not have upload rights on site %s."
% (self.targetSite.user(), self.targetSite))
diff --git a/scripts/category.py b/scripts/category.py
index 41c69a3..4897134 100755
--- a/scripts/category.py
+++ b/scripts/category.py
@@ -119,8 +119,8 @@
# (C) leogregianin, 2004-2008
# (C) Ben McIlwain (CydeWeys), 2006-2015
# (C) Anreas J Schwab, 2007
-# (C) xqt, 2009-2019
-# (C) Pywikibot team, 2008-2019
+# (C) xqt, 2009-2020
+# (C) Pywikibot team, 2008-2020
#
# Distributed under the terms of the MIT license.
#
@@ -573,12 +573,9 @@
page don't exist.
"""
self.site = pywikibot.Site()
- self.can_move_cats = (
- 'move-categorypages' in self.site.userinfo['rights'])
- self.noredirect = (
- delete_oldcat
- and 'suppressredirect' in self.site.userinfo['rights']
- )
+ self.can_move_cats = self.site.has_right('move-categorypages')
+ self.noredirect = delete_oldcat \
+ and self.site.has_right('suppressredirect')
# Create attributes for the categories and their talk pages.
self.oldcat = self._makecat(oldcat)
self.oldtalk = self.oldcat.toggleTalkPage()
diff --git a/scripts/redirect.py b/scripts/redirect.py
index 7f576f8..41a159b3 100755
--- a/scripts/redirect.py
+++ b/scripts/redirect.py
@@ -427,8 +427,7 @@
@return: A valid speedy deletion template.
@rtype: str or None
"""
- if self.getOption('delete') \
- and 'delete' not in self.site.userinfo['rights']:
+ if self.getOption('delete') and not self.site.has_right('delete'):
sd = self.getOption('sdtemplate')
if not sd and i18n.twhas_key(self.site,
'redirect-broken-redirect-template'):
@@ -465,7 +464,7 @@
assert page.site == self.site, (
'target page is on different site {0}'.format(page.site))
reason = i18n.twtranslate(self.site, summary_key)
- if 'delete' in page.site.userinfo['rights']:
+ if page.site.has_right('delete'):
page.delete(reason, prompt=False)
elif self.sdtemplate:
pywikibot.output('User does not have delete right, '
--
To view, visit https://gerrit.wikimedia.org/r/571008
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: I083779a8f56e15459e692c125036409765107cf9
Gerrit-Change-Number: 571008
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: D3r1ck01 <xsavitar.wiki(a)aol.com>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/571011 )
Change subject: [IMPR] replace Site.userinfo['groups'] with Site.has_group
......................................................................
[IMPR] replace Site.userinfo['groups'] with Site.has_group
Change-Id: I1151a9ab36cae16f7672dab9c1096224211a1ab1
---
M pywikibot/site.py
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 0ad71fe..02edc0c 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -5612,7 +5612,7 @@
if newpage.exists():
for prot in self.page_restrictions(
newpage).values():
- if prot[0] not in self._userinfo['groups']:
+ if not self.has_group(prot[0]):
failed_page = newpage
break
else:
--
To view, visit https://gerrit.wikimedia.org/r/571011
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: I1151a9ab36cae16f7672dab9c1096224211a1ab1
Gerrit-Change-Number: 571011
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: jenkins-bot (75)