jenkins-bot has submitted this change and it was merged.
Change subject: support special sites in APISite.fromDBName()
......................................................................
support special sites in APISite.fromDBName()
that constructor could not initialize some sites correctly,
such as multilingual ones (Meta-Wiki, Commons, Wikidata)
also updated site_tests.py accordingly
Change-Id: I6e8f78bfe09bd985ff7b2b988d39d02e05898ee3
---
M pywikibot/site.py
M tests/site_tests.py
2 files changed, 15 insertions(+), 9 deletions(-)
Approvals:
Merlijn van Deen: Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py
index ef20492..79cadc8 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -643,14 +643,19 @@
action='sitematrix')
data = req.submit()
for num in data['sitematrix']:
- if num in ['specials', 'count']:
+ if num == 'count':
continue
- lang = data['sitematrix'][num]['code']
- for site in data['sitematrix'][num]['site']:
- if site['dbname'] == dbname:
- if site['code'] == 'wiki':
- site['code'] = 'wikipedia'
- return APISite(lang, site['code'])
+ if 'code' in data['sitematrix'][num]:
+ lang = data['sitematrix'][num]['code']
+ for site in data['sitematrix'][num]['site']:
+ if site['dbname'] == dbname:
+ if site['code'] == 'wiki':
+ site['code'] = 'wikipedia'
+ return APISite(lang, site['code'])
+ else:
+ for site in data['sitematrix'][num]:
+ if site['dbname'] == dbname:
+ return APISite(site['code'], site['code'])
raise ValueError("Cannot parse a site out of %s." % dbname)
def _generator(self, gen_class, type_arg=None, namespaces=None,
diff --git a/tests/site_tests.py b/tests/site_tests.py
index ae2c92a..51a9c9e 100644
--- a/tests/site_tests.py
+++ b/tests/site_tests.py
@@ -64,8 +64,9 @@
self.assertEqual(pywikibot.site.APISite.fromDBName('eswikisource'),
pywikibot.Site('es', 'wikisource'))
self.assertEqual(pywikibot.site.APISite.fromDBName('dewikinews'),
pywikibot.Site('de', 'wikinews'))
self.assertEqual(pywikibot.site.APISite.fromDBName('ukwikivoyage'),
pywikibot.Site('uk', 'wikivoyage'))
-
- self.assertRaises(ValueError, pywikibot.site.APISite.fromDBName,
'metawiki')
+ self.assertEqual(pywikibot.site.APISite.fromDBName('metawiki'),
pywikibot.Site('meta', 'meta'))
+ self.assertEqual(pywikibot.site.APISite.fromDBName('commonswiki'),
pywikibot.Site('commons', 'commons'))
+ self.assertEqual(pywikibot.site.APISite.fromDBName('wikidatawiki'),
pywikibot.Site('wikidata', 'wikidata'))
def testLanguageMethods(self):
"""Test cases for languages() and related
methods"""
--
To view, visit
https://gerrit.wikimedia.org/r/132231
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6e8f78bfe09bd985ff7b2b988d39d02e05898ee3
Gerrit-PatchSet: 2
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <ricordisamoa(a)live.it>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Russell Blau <russblau(a)imapmail.org>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>