XZise has uploaded a new change for review.
https://gerrit.wikimedia.org/r/247555
Change subject: [FEAT] site: Dynamically determine Wikibase repo
......................................................................
[FEAT] site: Dynamically determine Wikibase repo
Instead of statically defining the Wikibase repository in the family, it can
query the API to determine the repository without user input.
Bug: T85331
Change-Id: I5568d848a369c8af36a40c193e2409071e23a5fb
---
M pywikibot/site.py
1 file changed, 16 insertions(+), 4 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/55/247555/1
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 16d3e99..f67da05 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -2654,10 +2654,22 @@
def data_repository(self):
"""Return Site object for data repository e.g. Wikidata."""
- code, fam = self.shared_data_repository()
- if bool(code or fam):
- return pywikibot.Site(code, fam, self.username(),
- interface="DataSite")
+ def handle_warning(mod, warning):
+ return (mod == 'query' and
+ warning == "Unrecognized value for parameter 'meta': "
+ "wikibase")
+
+ req = self._simple_request(action='query', meta='wikibase')
+ req._warning_handler = handle_warning
+ data = req.submit()
+ if 'query' in data and 'wikibase' in data['query']:
+ data = data['query']['wikibase']['repo']['url']
+ return pywikibot.Site(
+ url=data['base'] + data['scriptpath'] + '/index.php',
+ user=self.username(), interface='DataSite')
+ else:
+ assert 'warnings' in data
+ return None
def is_image_repository(self):
"""Return True if Site object is the image repository."""
--
To view, visit https://gerrit.wikimedia.org/r/247555
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I5568d848a369c8af36a40c193e2409071e23a5fb
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: XZise <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits