jenkins-bot merged this change.
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.