jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/812558 )
Change subject: [IMPR] use error instead if result['error'] within Request.submit()
......................................................................
[IMPR] use error instead if result['error'] within Request.submit()
- error is result['error'] inside the result dict
- do no longer clone error from result['error']. This is only necessary
for _internal_api_error() method where 'code' entry is deleted. Keeping
the original result enable access to all content within APIError e.g.
'results'.
Change-Id: I6529d8f6875de0b3829f1389cd51bf48f49dd7eb
---
M pywikibot/data/api/_requests.py
1 file changed, 14 insertions(+), 14 deletions(-)
Approvals:
Xqt: Looks good to me, approved
Matěj Suchánek: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/data/api/_requests.py b/pywikibot/data/api/_requests.py
index 08ac721..4610bf4 100644
--- a/pywikibot/data/api/_requests.py
+++ b/pywikibot/data/api/_requests.py
@@ -1002,18 +1002,18 @@
if 'error' not in result:
return result
- error = result['error'].copy()
+ error = result['error']
for key in result:
if key in ('error', 'warnings'):
continue
assert key not in error
error[key] = result[key]
- if '*' in result['error']:
+ if '*' in error:
# help text returned
- result['error']['help'] = result['error'].pop('*')
- code = result['error'].setdefault('code', 'Unknown')
- info = result['error'].setdefault('info', None)
+ error['help'] = error.pop('*')
+ code = error.setdefault('code', 'Unknown')
+ info = error.setdefault('info', None)
if not self._logged_in(code):
continue
@@ -1025,7 +1025,7 @@
pywikibot.log('Pausing due to database lag: ' + info)
try:
- lag = result['error']['lag']
+ lag = error['lag']
except KeyError:
lag = lagpattern.search(info)
lag = float(lag.group('lag')) if lag else 0.0
@@ -1038,17 +1038,17 @@
# API information. As this data was requested, return the
# data instead of raising an exception.
return {'help': {'mime': 'text/plain',
- 'help': result['error']['help']}}
+ 'help': error['help']}}
pywikibot.warning('API error {}: {}'.format(code, info))
pywikibot.log(' headers=\n{}'.format(response.headers))
- if self._internal_api_error(code, error, result):
+ if self._internal_api_error(code, error.copy(), result):
continue
# Phab. tickets T48535, T64126, T68494, T68619
if code == 'failed-save' \
- and self._is_wikibase_error_retryable(result['error']):
+ and self._is_wikibase_error_retryable(error):
self.wait()
continue
@@ -1090,13 +1090,13 @@
continue
if code == 'urlshortener-blocked': # T244062
- # add additional informations to result['error']
- result['error']['current site'] = self.site
+ # add additional informations to error dict
+ error['current site'] = self.site
if self.site.user():
- result['error']['current user'] = self.site.user()
+ error['current user'] = self.site.user()
else: # not logged in; show the IP
uinfo = self.site.userinfo
- result['error']['current user'] = uinfo['name']
+ error['current user'] = uinfo['name']
# raise error
try:
@@ -1105,7 +1105,7 @@
.format(pprint.pformat(param_repr)))
pywikibot.log(' response=\n{}'.format(result))
- raise pywikibot.exceptions.APIError(**result['error'])
+ raise pywikibot.exceptions.APIError(**error)
except TypeError:
raise RuntimeError(result)
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/812558
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I6529d8f6875de0b3829f1389cd51bf48f49dd7eb
Gerrit-Change-Number: 812558
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/814354 )
Change subject: [tests] Fix logentries_tests
......................................................................
[tests] Fix logentries_tests
Bug: T313184
Bug: T313186
Change-Id: I26032e21e0d24bdd4812da7d6bcc787df00cb0cf
---
M pywikibot/logentries.py
M tests/logentries_tests.py
2 files changed, 19 insertions(+), 7 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/logentries.py b/pywikibot/logentries.py
index fcc3cdc..433ffd5 100644
--- a/pywikibot/logentries.py
+++ b/pywikibot/logentries.py
@@ -217,21 +217,33 @@
@property
def oldgroups(self) -> List[str]:
- """Return old rights groups."""
+ """Return old rights groups.
+
+ .. versionchanged:: 7.5
+ No longer raise KeyError if `oldgroups` does not exists or
+ LogEntry has no additional data e.g. due to hidden data and
+ insufficient rights.
+ """
params = self._params
if 'old' in params: # old mw style (mw < 1.25)
return params['old'].split(',') if params['old'] else []
- return params['oldgroups']
+ return params.get('oldgroups', [])
@property
def newgroups(self) -> List[str]:
- """Return new rights groups."""
+ """Return new rights groups.
+
+ .. versionchanged:: 7.5
+ No longer raise KeyError if `oldgroups` does not exists or
+ LogEntry has no additional data e.g. due to hidden data and
+ insufficient rights.
+ """
params = self._params
if 'new' in params: # old mw style (mw < 1.25)
return params['new'].split(',') if params['new'] else []
- return params['newgroups']
+ return params.get('newgroups', [])
class UploadEntry(LogEntry):
diff --git a/tests/logentries_tests.py b/tests/logentries_tests.py
index 91b3a22..a996cbd 100755
--- a/tests/logentries_tests.py
+++ b/tests/logentries_tests.py
@@ -88,10 +88,12 @@
try:
self.assertIsInstance(logentry.comment(), str)
+ self.assertIsInstance(logentry.user(), str)
+ self.assertEqual(logentry.user(), logentry['user'])
except HiddenKeyError as e:
self.assertRegex(
str(e),
- r"Log entry \([^)]+\) has a hidden 'comment' key and you "
+ r"Log entry \([^)]+\) has a hidden '\w+' key and you "
r"don't have permission to view it")
except KeyError as e:
self.assertRegex(str(e), "Log entry ([^)]+) has no 'comment' key")
@@ -125,12 +127,10 @@
logentry.page()
self.assertEqual(logentry.type(), logtype)
- self.assertIsInstance(logentry.user(), str)
self.assertGreaterEqual(logentry.logid(), 0)
# test new UserDict style
self.assertEqual(logentry.type(), logentry['type'])
- self.assertEqual(logentry.user(), logentry['user'])
self.assertEqual(logentry.logid(), logentry['logid'])
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/814354
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: I26032e21e0d24bdd4812da7d6bcc787df00cb0cf
Gerrit-Change-Number: 814354
Gerrit-PatchSet: 2
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/core/+/813593 )
Change subject: [IMPR] Avoid deeply nested control flow statements in _pages submodule
......................................................................
[IMPR] Avoid deeply nested control flow statements in _pages submodule
Change-Id: Id6bf247eb3364986d225ebaef11a209f2f94317d
---
M pywikibot/page/_pages.py
1 file changed, 36 insertions(+), 21 deletions(-)
Approvals:
Matěj Suchánek: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page/_pages.py b/pywikibot/page/_pages.py
index 2c8838e..11a89fb 100644
--- a/pywikibot/page/_pages.py
+++ b/pywikibot/page/_pages.py
@@ -2198,6 +2198,7 @@
intkeys[int(key)] = args[key]
except ValueError:
named[key] = args[key]
+
for i in range(1, len(intkeys) + 1):
# only those args with consecutive integer keys can be
# treated as positional; an integer could also be used
@@ -2205,11 +2206,13 @@
# example: {{tmp|one|two|5=five|three}}
if i in intkeys:
positional.append(intkeys[i])
- else:
- for k in intkeys:
- if k < 1 or k >= i:
- named[str(k)] = intkeys[k]
- break
+ continue
+
+ for k in intkeys:
+ if k < 1 or k >= i:
+ named[str(k)] = intkeys[k]
+ break
+
for item in named.items():
positional.append('{}={}'.format(*item))
result.append((pywikibot.Page(link, self.site), positional))
@@ -2374,6 +2377,7 @@
"""
if not isinstance(recurse, bool) and recurse:
recurse = recurse - 1
+
if not hasattr(self, '_subcats'):
self._subcats = []
for member in self.site.categorymembers(
@@ -2385,14 +2389,17 @@
total -= 1
if total == 0:
return
+
if recurse:
for item in subcat.subcategories(
recurse, total=total, content=content):
yield item
- if total is not None:
- total -= 1
- if total == 0:
- return
+ if total is None:
+ continue
+
+ total -= 1
+ if total == 0:
+ return
else:
for subcat in self._subcats:
yield subcat
@@ -2400,14 +2407,17 @@
total -= 1
if total == 0:
return
+
if recurse:
for item in subcat.subcategories(
recurse, total=total, content=content):
yield item
- if total is not None:
- total -= 1
- if total == 0:
- return
+ if total is None:
+ continue
+
+ total -= 1
+ if total == 0:
+ return
def articles(self,
recurse: Union[int, bool] = False,
@@ -2489,12 +2499,15 @@
hash_value = hash(article)
if hash_value in seen:
continue
+
seen.add(hash_value)
yield article
- if total is not None:
- total -= 1
- if total == 0:
- return
+ if total is None:
+ continue
+
+ total -= 1
+ if total == 0:
+ return
def members(self, recurse: bool = False,
namespaces=None,
@@ -2518,10 +2531,12 @@
for article in subcat.members(
recurse, namespaces, total=total, content=content):
yield article
- if total is not None:
- total -= 1
- if total == 0:
- return
+ if total is None:
+ continue
+
+ total -= 1
+ if total == 0:
+ return
def isEmptyCategory(self) -> bool:
"""Return True if category has no members (including subcategories)."""
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/813593
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Id6bf247eb3364986d225ebaef11a209f2f94317d
Gerrit-Change-Number: 813593
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Matěj Suchánek <matejsuchanek97(a)gmail.com>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
jenkins-bot has submitted this change. ( https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/813870 )
Change subject: Localisation updates from https://translatewiki.net.
......................................................................
Localisation updates from https://translatewiki.net.
Change-Id: Ie4edaf76881cedefb6e1beb2fcdcf803aea7e5c7
---
M pywikibot/fr.json
1 file changed, 1 insertion(+), 1 deletion(-)
Approvals:
L10n-bot: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/fr.json b/pywikibot/fr.json
index 4063fe0..87b9f1d 100644
--- a/pywikibot/fr.json
+++ b/pywikibot/fr.json
@@ -14,7 +14,7 @@
]
},
"pywikibot-cosmetic-changes": "; changements cosmétiques",
- "pywikibot-enter-category-name": "Veuillez entrer le nom de la catégorie :",
+ "pywikibot-enter-category-name": "Veuillez saisir le nom de la catégorie :",
"pywikibot-enter-file-links-processing": "Liens vers la page de fichier qu’il faudrait traiter ?",
"pywikibot-enter-finished-browser": "Appuyez sur Entrée une fois que vous avez fini dans le navigateur.",
"pywikibot-enter-namespace-number": "Veuillez entrer un espace de noms par son numéro :",
--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/i18n/+/813870
To unsubscribe, or for help writing mail filters, visit https://gerrit.wikimedia.org/r/settings
Gerrit-Project: pywikibot/i18n
Gerrit-Branch: master
Gerrit-Change-Id: Ie4edaf76881cedefb6e1beb2fcdcf803aea7e5c7
Gerrit-Change-Number: 813870
Gerrit-PatchSet: 1
Gerrit-Owner: L10n-bot <l10n-bot(a)translatewiki.net>
Gerrit-Reviewer: L10n-bot <l10n-bot(a)translatewiki.net>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged