jenkins-bot merged this change.

View Change

Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
feat(TokenWallet): login automatically

The following script used to fail with
"AssertionError: User must login in this site".

from pywikibot import Site
print(Site().tokens['edit'])

This patch makes TokenWallet.load_tokens and TokenWallet.__getitem__
login automatically if not already.

Change-Id: I3f5c8fa873aa447b1d7679cbfc9f004af2ffdc93
---
M pywikibot/site.py
1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/pywikibot/site.py b/pywikibot/site.py
index 18a745d..d212853 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -1740,7 +1740,10 @@
"""Container for tokens."""

def __init__(self, site):
- """Initializer."""
+ """Initializer.
+
+ @type site: pywikibot.site.APISite
+ """
self.site = site
self._tokens = {}
self.failed_cache = set() # cache unavailable tokens.
@@ -1755,7 +1758,8 @@
in one request.
@type all: bool
"""
- assert self.site.user(), 'User must login in this site'
+ if self.site.user() is None:
+ self.site.login()

self._tokens.setdefault(self.site.user(), {}).update(
self.site.get_tokens(types, all=all))
@@ -1771,7 +1775,8 @@

def __getitem__(self, key):
"""Get token value for the given key."""
- assert self.site.user(), 'User must login in this site'
+ if self.site.user() is None:
+ self.site.login()

user_tokens = self._tokens.setdefault(self.site.user(), {})
# always preload all for users without tokens

To view, visit change 516994. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I3f5c8fa873aa447b1d7679cbfc9f004af2ffdc93
Gerrit-Change-Number: 516994
Gerrit-PatchSet: 2
Gerrit-Owner: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: Dalba <dalba.wiki@gmail.com>
Gerrit-Reviewer: Xqt <info@gno.de>
Gerrit-Reviewer: jenkins-bot (75)