jenkins-bot has submitted this change and it was merged.
Change subject: Allow fromDBName from site ......................................................................
Allow fromDBName from site
When meta.wikimedia.org has large lag times, testConstructors halts.
Change-Id: I01a9864e5dc29f399b35ba21e7a90326d02acf61 --- M pywikibot/site.py M tests/site_tests.py 2 files changed, 24 insertions(+), 9 deletions(-)
Approvals: John Vandenberg: Looks good to me, but someone else must approve XZise: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py index e50e8ae..1da4bc5 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -1654,9 +1654,20 @@ self.tokens = TokenWallet(self)
@classmethod - def fromDBName(cls, dbname): + def fromDBName(cls, dbname, site=None): + """ + Create a site from a database name using the sitematrix. + + @param dbname: database name + @type dbname: str + @param site: Site to load sitematrix from. (Default meta.wikimedia.org) + @type site: APISite + @return: site object for the database name + @rtype: APISite + """ # TODO this only works for some WMF sites - site = pywikibot.Site('meta', 'meta') + if not site: + site = pywikibot.Site('meta', 'meta') req = site._request(expiry=datetime.timedelta(days=10), parameters={'action': 'sitematrix'}) data = req.submit() diff --git a/tests/site_tests.py b/tests/site_tests.py index 82d9e00..438e004 100644 --- a/tests/site_tests.py +++ b/tests/site_tests.py @@ -257,19 +257,23 @@
def testConstructors(self): """Test cases for site constructors.""" - self.assertEqual(pywikibot.site.APISite.fromDBName('enwiki'), + if isinstance(self.site.family, pywikibot.family.WikimediaFamily): + site = self.site + else: + site = None + self.assertEqual(pywikibot.site.APISite.fromDBName('enwiki', site), pywikibot.Site('en', 'wikipedia')) - self.assertEqual(pywikibot.site.APISite.fromDBName('eswikisource'), + self.assertEqual(pywikibot.site.APISite.fromDBName('eswikisource', site), pywikibot.Site('es', 'wikisource')) - self.assertEqual(pywikibot.site.APISite.fromDBName('dewikinews'), + self.assertEqual(pywikibot.site.APISite.fromDBName('dewikinews', site), pywikibot.Site('de', 'wikinews')) - self.assertEqual(pywikibot.site.APISite.fromDBName('ukwikivoyage'), + self.assertEqual(pywikibot.site.APISite.fromDBName('ukwikivoyage', site), pywikibot.Site('uk', 'wikivoyage')) - self.assertEqual(pywikibot.site.APISite.fromDBName('metawiki'), + self.assertEqual(pywikibot.site.APISite.fromDBName('metawiki', site), pywikibot.Site('meta', 'meta')) - self.assertEqual(pywikibot.site.APISite.fromDBName('commonswiki'), + self.assertEqual(pywikibot.site.APISite.fromDBName('commonswiki', site), pywikibot.Site('commons', 'commons')) - self.assertEqual(pywikibot.site.APISite.fromDBName('wikidatawiki'), + self.assertEqual(pywikibot.site.APISite.fromDBName('wikidatawiki', site), pywikibot.Site('wikidata', 'wikidata'))
def testLanguageMethods(self):
pywikibot-commits@lists.wikimedia.org