More info. Lines marked >>>RJC>>> are my debug prints.
% pwb login >>>RJC>>> APISite.version() >>>RJC>>> SiteInfo._get_general(key=generator, expiry=1 day, 0:00:00 >>>RJC>>> general not in self._cache >>>RJC>>> forcing >>>RJC>>> props: ['namespaces', 'namespacealiases', 'general'] >>>RJC>>> SiteInfo._get_siteinfo(prop=['namespaces', 'namespacealiases', 'general'], expiry=1 day, 0:00:00) >>>RJC>>> request: /w/api.php?action=query&meta=siteinfo&siprop=namespaces|namespacealiases|general&continue= WARNING: API error readapidenied: You need read permission to use this module. >>>RJC>>> Caught APIError: readapidenied: You need read permission to use this module. [help: See https://MYWIKI/w/api.php for API usage. Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes.] >>>RJC>>> No read persmissions ERROR: You have no API read permissions. Seems you are not logged in. Logging in to my_family:en as me@me_bot WARNING: API warning (main): Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes. WARNING: API warning (login): Fetching a token via "action=login" is deprecated. Use "action=query&meta=tokens&type=login" instead. >>>RJC>>> self.action: login >>>RJC>>> login_result: {'warnings': {'main': {'*': 'Subscribe to the mediawiki-api-announce mailing list at <https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce> for notice of API deprecations and breaking changes.'}, 'login': {'*': 'Fetching a token via "action=login" is deprecated. Use "action=query&meta=tokens&type=login" instead.'}}, 'login': {'result': 'NeedToken', 'token': 'f71af5fc300dbd72908ede7648441f0263e120a0+\\'}} ERROR: Received incorrect login token. Forcing re-login. >>>RJC>>> TokenWallet.__getitem__(login) >>>RJC>>> self.site.user(): None >>>RJC>>> self._currentuser: None >>>RJC>>> self._tokens: {} >>>RJC>>> calling self.site.get_tokens([]) >>>RJC>>> APISite.get_tokens([]) >>>RJC>>> not type or load_all not false >>>RJC>>> ParamInfo.parameter(module=query+tokens, param_name=type >>>RJC>>> ParamInfo.fetch({'query+tokens'} >>>RJC>>> self._paraminfo: {} >>>RJC>>> calling self._init() >>>RJC>>> ParamInfo._init() >>>RJC>>> self._modules: {} >>>RJC>>> APISite.version() >>>RJC>>> SiteInfo._get_general(key=generator, expiry=1 day, 0:00:00 >>>RJC>>> general not in self._cache >>>RJC>>> forcing >>>RJC>>> props: ['namespaces', 'namespacealiases', 'general'] >>>RJC>>> SiteInfo._get_siteinfo(prop=['namespaces', 'namespacealiases', 'general'], expiry=1 day, 0:00:00) >>>RJC>>> request: /w/api.php?action=query&meta=siteinfo&siprop=namespaces|namespacealiases|general&continue= WARNING: API error readapidenied: You need read permission to use this module. >>>RJC>>> Caught APIError: readapidenied: You need read permission to use this module.