jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/584538 )
Change subject: [bugfix] Don't force re-login when logging in
......................................................................
[bugfix] Don't force re-login when logging in
site.login() calls site.getuserinfo(force=True), which can call
site._relogin() here.
Bug: T248767
Change-Id: I66ba066bceb47f360f563f0859184a163feb4cbb
---
M pywikibot/data/api.py
1 file changed, 3 insertions(+), 1 deletion(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 5e72deb..071932a 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -1788,7 +1788,9 @@
# that we are logged in as the correct user. If this is not the
# case, force a re-login.
username = result['query']['userinfo']['name']
- if self.site.user() is not None and self.site.user() != username:
+ if (self.site.user() is not None and self.site.user() != username
+ and self.site._loginstatus
+ != pywikibot.site.LoginStatus.IN_PROGRESS):
pywikibot.error(
"Logged in as '{actual}' instead of '{expected}'.\n"
'Forcing re-login.'.format(actual=username,
--
To view, visit https://gerrit.wikimedia.org/r/584538
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: I66ba066bceb47f360f563f0859184a163feb4cbb
Gerrit-Change-Number: 584538
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/584221 )
Change subject: [bugfix] Fix login error in MW < 1.27
......................................................................
[bugfix] Fix login error in MW < 1.27
My bad, last patch broke their login process. Good we now test
Fandom wiki again and can detect these issues quickly!
Change-Id: I5600dfa32d607cc59f9bd69ebe789d8de6ac3d7e
---
M pywikibot/data/api.py
1 file changed, 12 insertions(+), 5 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 164d8f0..5e72deb 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -3163,11 +3163,18 @@
fail_reason = response.get(self.keyword('reason'), '')
if status == self.keyword('success'):
return ''
- elif status in ('NeedToken', 'WrongToken') and not below_mw_1_27:
- # if incorrect login token was used,
- # force relogin and generate fresh one
- pywikibot.error('Received incorrect login token. '
- 'Forcing re-login.')
+ elif status in ('NeedToken', 'WrongToken'):
+ token = response.get('token')
+ if token and below_mw_1_27:
+ # fetched token using action=login
+ login_request['lgtoken'] = token
+ pywikibot.log('Received login token, '
+ 'proceed with login.')
+ else:
+ # if incorrect login token was used,
+ # force relogin and generate fresh one
+ pywikibot.error('Received incorrect login token. '
+ 'Forcing re-login.')
continue
elif (status == 'Throttled' or status == 'FAIL'
and response['messagecode'] == 'login-throttled'
--
To view, visit https://gerrit.wikimedia.org/r/584221
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: I5600dfa32d607cc59f9bd69ebe789d8de6ac3d7e
Gerrit-Change-Number: 584221
Gerrit-PatchSet: 7
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/583711 )
Change subject: [IMPR] Don't trust token from NeedToken response
......................................................................
[IMPR] Don't trust token from NeedToken response
It can stop working any time soon and it can also be invalid
if multiple login attempts because of endless loops.
- generate fresh login token on every login attempt
- copy _logged_in() from api.Request
- keep track of such issues
Bug: T224712
Change-Id: I55e14bb68f9558a27188d23913a6d321911d7e96
---
M pywikibot/data/api.py
1 file changed, 9 insertions(+), 8 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 57a76ee..164d8f0 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -3140,12 +3140,12 @@
if self.site.family.ldapDomain:
login_request[self.keyword('ldap')] = self.site.family.ldapDomain
- # get token using meta=tokens if supported
- if not below_mw_1_27:
- login_request[self.keyword('token')] = self.get_login_token()
-
self.site._loginstatus = -2 # IN_PROGRESS
while True:
+ # get token using meta=tokens if supported
+ if not below_mw_1_27:
+ login_request[self.keyword('token')] = self.get_login_token()
+
# try to login
login_result = login_request.submit()
@@ -3163,10 +3163,11 @@
fail_reason = response.get(self.keyword('reason'), '')
if status == self.keyword('success'):
return ''
- elif status == 'NeedToken':
- # Kept for backwards compatibility
- token = response['token']
- login_request['lgtoken'] = token
+ elif status in ('NeedToken', 'WrongToken') and not below_mw_1_27:
+ # if incorrect login token was used,
+ # force relogin and generate fresh one
+ pywikibot.error('Received incorrect login token. '
+ 'Forcing re-login.')
continue
elif (status == 'Throttled' or status == 'FAIL'
and response['messagecode'] == 'login-throttled'
--
To view, visit https://gerrit.wikimedia.org/r/583711
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: I55e14bb68f9558a27188d23913a6d321911d7e96
Gerrit-Change-Number: 583711
Gerrit-PatchSet: 13
Gerrit-Owner: Dvorapa <dvorapa(a)seznam.cz>
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: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: XZise <CommodoreFabianus(a)gmx.de>
Gerrit-Reviewer: Xqt <info(a)gno.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/584195 )
Change subject: [bugfix] Fix handling of badtoken response for login actions
......................................................................
[bugfix] Fix handling of badtoken response for login actions
Fail early (before handling 'badtoken' which needs to be logged in)
if 'badtoken' error code and login in process.
Bug: T248768
Bug: T248767
Bug: T224712
Change-Id: I2c61eba72559cc27d88506bafeb46fe814f80f6f
---
M pywikibot/data/api.py
1 file changed, 6 insertions(+), 1 deletion(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 3e201fb..57a76ee 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -1834,7 +1834,12 @@
elif code == 'assertuserfailed':
message = 'User assertion failed.'
- # Lastly, the purge module require a POST if used as anonymous user,
+ # If incorrect login token was used, we are logged out too.
+ elif (self.site._loginstatus == pywikibot.site.LoginStatus.IN_PROGRESS
+ and code == 'badtoken'):
+ message = 'Received incorrect login token.'
+
+ # Lastly, the purge module requires a POST if used as anonymous user,
# but we normally send a GET request. If the API tells us the request
# has to be POSTed, we're probably logged out.
elif code == 'mustbeposted' and self.action == 'purge':
--
To view, visit https://gerrit.wikimedia.org/r/584195
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: I2c61eba72559cc27d88506bafeb46fe814f80f6f
Gerrit-Change-Number: 584195
Gerrit-PatchSet: 5
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/584192 )
Change subject: [doc] Remove duplicate pywikibot.site docs in cache module
......................................................................
[doc] Remove duplicate pywikibot.site docs in cache module
scripts.maintenance.cache has got site's User, APISite, DataSite...
in its __all__. Sphinx autodoc also documents members of __all__,
which makes triplicates with pywikibot.site and pywikibot documentation.
This directive might also be suitable for several other modules
or maybe even for the whole framework. Let us know if you know
about any other module that needs this.
Bug: T247707
Change-Id: I780fc162a38eed604afd573e63393a295f3150f3
---
M docs/scripts/scripts.maintenance.rst
1 file changed, 1 insertion(+), 0 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/docs/scripts/scripts.maintenance.rst b/docs/scripts/scripts.maintenance.rst
index 3ff2082..24cb95e 100644
--- a/docs/scripts/scripts.maintenance.rst
+++ b/docs/scripts/scripts.maintenance.rst
@@ -10,6 +10,7 @@
--------------------------------
.. automodule:: scripts.maintenance.cache
+ :ignore-module-all:
scripts.maintenance.colors script
---------------------------------
--
To view, visit https://gerrit.wikimedia.org/r/584192
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: I780fc162a38eed604afd573e63393a295f3150f3
Gerrit-Change-Number: 584192
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/584191 )
Change subject: [doc] Update breaking change info for getVersionHistory
......................................................................
[doc] Update breaking change info for getVersionHistory
Change-Id: I20f563b45ec8864569c4f3f788c6ddbc4ea0d81a
---
M pywikibot/page/__init__.py
1 file changed, 10 insertions(+), 3 deletions(-)
Approvals:
Framawiki: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page/__init__.py b/pywikibot/page/__init__.py
index f2f6db8..a1a92b5 100644
--- a/pywikibot/page/__init__.py
+++ b/pywikibot/page/__init__.py
@@ -1758,9 +1758,16 @@
return (self._revisions[rev] for rev in
sorted(self._revisions, reverse=not reverse)[:total])
- # BREAKING CHANGE: in old framework, default value for getVersionHistory
- # returned no more than 500 revisions; now, it iterates
- # all revisions unless 'total' argument is used
+ # BREAKING CHANGES:
+ #
+ # in old framework, default value for getVersionHistory returned no more
+ # than 500 revisions; now, it returns a list of all revisions unless
+ # 'total' argument is used.
+ #
+ # in new framework each list entry is a tuple of 4 items:
+ # (revid, timestamp, user, comment)
+ # whereas old framework had a tuple of 6 items:
+ # (revid, timestamp, user, comment, size, tags)
@deprecated('Page.revisions()', since='20150206')
@deprecated_args(forceReload=None, revCount='total', step=None,
getAll=None, reverseOrder='reverse')
--
To view, visit https://gerrit.wikimedia.org/r/584191
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: I20f563b45ec8864569c4f3f788c6ddbc4ea0d81a
Gerrit-Change-Number: 584191
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Framawiki <framawiki(a)tools.wmflabs.org>
Gerrit-Reviewer: jenkins-bot (75)
jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/572561 )
Change subject: [IMPR] use getter/setter with api.Request
......................................................................
[IMPR] use getter/setter with api.Request
Bug: T245338
Change-Id: I3bc3ad4cb217118d4ea7b365822573d84c126b8c
---
M pywikibot/data/api.py
1 file changed, 11 insertions(+), 11 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api.py b/pywikibot/data/api.py
index 0702d38..8affb6e 100644
--- a/pywikibot/data/api.py
+++ b/pywikibot/data/api.py
@@ -1493,14 +1493,14 @@
if not ('tokens' in meta and 'login' in typep):
if 'userinfo' not in meta:
meta = set(meta + ['userinfo'])
- self._params['meta'] = sorted(meta)
+ self['meta'] = sorted(meta)
uiprop = self._params.get('uiprop', [])
uiprop = set(uiprop + ['blockinfo', 'hasmsg'])
- self._params['uiprop'] = sorted(uiprop)
+ self['uiprop'] = sorted(uiprop)
if 'prop' in self._params:
if self.site.has_extension('ProofreadPage'):
- prop = set(self._params['prop'] + ['proofread'])
- self._params['prop'] = sorted(prop)
+ prop = set(self['prop'] + ['proofread'])
+ self['prop'] = sorted(prop)
# When neither 'continue' nor 'rawcontinue' is present and the
# version number is at least 1.25wmf5 we add a dummy rawcontinue
# parameter. Querying siteinfo is save as it adds 'continue'.
@@ -1508,14 +1508,14 @@
and self.site.mw_version >= '1.25wmf5'):
self._params.setdefault('rawcontinue', [''])
elif self.action == 'help' and self.site.mw_version > '1.24':
- self._params['wrap'] = ['']
+ self['wrap'] = ''
if config.maxlag:
self._params.setdefault('maxlag', [str(config.maxlag)])
self._params.setdefault('format', ['json'])
- if self._params['format'] != ['json']:
- raise TypeError("Query format '%s' cannot be parsed."
- % self._params['format'])
+ if self['format'] != ['json']:
+ raise TypeError(
+ "Query format '{}' cannot be parsed.".format(self['format']))
self.__defaulted = True
@@ -1795,11 +1795,11 @@
for param in self._params:
if param.endswith('limit'):
# param values are stored a list of str
- value = self._params[param][0]
+ value = self[param][0]
if value.isdigit():
- self._params[param] = [str(int(value) // 2)]
+ self[param] = [str(int(value) // 2)]
pywikibot.output('Set {} = {}'
- .format(param, self._params[param]))
+ .format(param, self[param]))
else:
if result and not isinstance(result, dict):
raise APIError('Unknown',
--
To view, visit https://gerrit.wikimedia.org/r/572561
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: I3bc3ad4cb217118d4ea7b365822573d84c126b8c
Gerrit-Change-Number: 572561
Gerrit-PatchSet: 3
Gerrit-Owner: Xqt <info(a)gno.de>
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/583966 )
Change subject: [IMPR] Simplify code and reduce code complexity in diff.py
......................................................................
[IMPR] Simplify code and reduce code complexity in diff.py
Reduce code complexity in diff.py:
- PatchManager.review_hunks F(48) -> F(41)
Change-Id: I51884c0f7937a40dee3cabe95220f1c99754a05f
---
M pywikibot/diff.py
1 file changed, 10 insertions(+), 21 deletions(-)
Approvals:
Dvorapa: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/diff.py b/pywikibot/diff.py
index f536793..ad9cda7 100644
--- a/pywikibot/diff.py
+++ b/pywikibot/diff.py
@@ -271,16 +271,12 @@
the charnumber in brackets (e.g. <200e>).
@type replace_invisible: bool
"""
- if '\n' in text_a or '\n' in text_b:
+ if '\n' in text_a or '\n' in text_b or not by_letter:
self.a = text_a.splitlines(1)
self.b = text_b.splitlines(1)
else:
- if by_letter:
- self.a = text_a
- self.b = text_b
- else:
- self.a = text_a.splitlines(1)
- self.b = text_b.splitlines(1)
+ self.a = text_a
+ self.b = text_b
# groups and hunk have same order (one hunk correspond to one group).
s = difflib.SequenceMatcher(None, self.a, self.b)
@@ -453,7 +449,7 @@
if choice not in answers:
choice = '?'
- if choice == 'y' or choice == 'n':
+ if choice in ['y', 'n']:
super_hunk.reviewed = \
Hunk.APPR if choice == 'y' else Hunk.NOT_APPR
if next_pending is not None:
@@ -465,7 +461,7 @@
for hunk in super_hunk:
if hunk.reviewed == Hunk.PENDING:
hunk.reviewed = Hunk.NOT_APPR
- elif choice == 'a' or choice == 'd':
+ elif choice in ['a', 'd']:
for super_hunk in super_hunks[position:]:
for hunk in super_hunk:
if hunk.reviewed == Hunk.PENDING:
@@ -476,15 +472,10 @@
hunk_list = []
rng_width = 18
for index, super_hunk in enumerate(super_hunks, start=1):
- if super_hunk.reviewed == Hunk.PENDING:
- status = ' '
- elif super_hunk.reviewed == Hunk.APPR:
- status = '+'
- elif super_hunk.reviewed == Hunk.NOT_APPR:
- status = '-'
- else:
- assert False, "The super hunk's review status is " \
- 'unknown.'
+ assert super_hunk.reviewed in range(-1, 2), \
+ "The super hunk's review status is unknown."
+ status = ' +-'[super_hunk.reviewed]
+
if super_hunk[0].a_rng[1] - super_hunk[0].a_rng[0] > 0:
mode = '-'
first = self.a[super_hunk[0].a_rng[0]]
@@ -536,13 +527,11 @@
+ super_hunks[position + 1:])
pywikibot.output(
'Split into {0} hunks'.format(len(super_hunk._hunks)))
- elif choice == '?':
+ else: # choice == '?':
pywikibot.output(color_format(
'{purple}{0}{default}', '\n'.join(
'{0} -> {1}'.format(answer, help_msg[answer])
for answer in answers)))
- else:
- assert False, '%s is not a valid option' % choice
def apply(self):
"""Apply changes. If there are undecided changes, ask to review."""
--
To view, visit https://gerrit.wikimedia.org/r/583966
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: I51884c0f7937a40dee3cabe95220f1c99754a05f
Gerrit-Change-Number: 583966
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Dvorapa <dvorapa(a)seznam.cz>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot (75)
Gerrit-CC: Matěj Suchánek <matejsuchanek97(a)gmail.com>