jenkins-bot has submitted this change. (
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/874023 )
Change subject: [bugfix] Use a default result for allusers() if next() leads to
StopIteration
......................................................................
[bugfix] Use a default result for allusers() if next() leads to StopIteration
- use a default result for allusers() if next() leads to StopIteration
- catch the NoUsernameError exception in login.py script and only
show the exception message instead of raising it
- fix error messages handling
Bug: T326063
Change-Id: Ia41bc9d80fcfd2e9e88542201236ceab87c6508c
---
M pywikibot/login.py
M pywikibot/scripts/login.py
2 files changed, 28 insertions(+), 9 deletions(-)
Approvals:
Xqt: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/login.py b/pywikibot/login.py
index 1b1b661..e284b98 100644
--- a/pywikibot/login.py
+++ b/pywikibot/login.py
@@ -1,6 +1,6 @@
"""Library to log the bot in to a wiki account."""
#
-# (C) Pywikibot team, 2003-2022
+# (C) Pywikibot team, 2003-2023
#
# Distributed under the terms of the MIT license.
#
@@ -133,7 +133,7 @@
try:
data = self.site.allusers(start=main_username, total=1)
- user = next(data)
+ user = next(data, {'name': None})
except APIError as e:
if e.code == 'readapidenied':
pywikibot.warning("Could not check user '{}' exists on
{}"
@@ -294,15 +294,16 @@
self.login_to_site()
except APIError as e:
error_code = e.code
- pywikibot.error(f'Login failed ({error_code}).')
+
+ # TODO: investigate other unhandled API codes
if error_code in self._api_error:
- error_msg = 'Username "{}" {} on {}'.format(
+ error_msg = 'Username {!r} {} on {}'.format(
self.login_name, self._api_error[error_code], self.site)
if error_code in ('Failed', 'FAIL'):
- error_msg += f'\n.{e.info}'
+ error_msg += f'.\n{e.info}'
raise NoUsernameError(error_msg)
- # TODO: investigate other unhandled API codes (bug T75539)
+ pywikibot.error(f'Login failed ({error_code}).')
if retry:
self.password = None
return self.login(retry=False)
diff --git a/pywikibot/scripts/login.py b/pywikibot/scripts/login.py
index f47bc20..cbdd9a2 100755
--- a/pywikibot/scripts/login.py
+++ b/pywikibot/scripts/login.py
@@ -47,7 +47,7 @@
moved to :mod:`pywikibot.scripts` folder
"""
#
-# (C) Pywikibot team, 2003-2022
+# (C) Pywikibot team, 2003-2023
#
# Distributed under the terms of the MIT license.
#
@@ -58,7 +58,7 @@
import pywikibot
from pywikibot import config
from pywikibot.backports import Tuple, nullcontext
-from pywikibot.exceptions import SiteDefinitionError
+from pywikibot.exceptions import NoUsernameError, SiteDefinitionError
from pywikibot.login import OauthLoginManager
@@ -109,7 +109,10 @@
if logout:
site.logout()
else:
- site.login(autocreate=autocreate)
+ try:
+ site.login(autocreate=autocreate)
+ except NoUsernameError as e:
+ pywikibot.error(e)
user = site.user()
if user:
--
To view, visit
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/874023
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: Ia41bc9d80fcfd2e9e88542201236ceab87c6508c
Gerrit-Change-Number: 874023
Gerrit-PatchSet: 4
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged