jenkins-bot has submitted this change and it was merged.
Change subject: [IMPR] Remove disambcatname from WikimediaFamily ......................................................................
[IMPR] Remove disambcatname from WikimediaFamily
- wikipedia_family.py and commons_family.py are the only two Wikimedia families which has disambcatname set. There is one remaining non wm family (wowwiki_family) which uses it too. - rewrite site.disambcategory() method and get the category name from wikibase. Fallback to the old implementation, needed by wowwiki. - remove the disambcatname settingsfrom wikipedia_family.py and commons_family.py which is no longer needed. - delete disambcatname from WikimediaFamily which is no longer needed.
Change-Id: If2353b2d2b586dbbcf561151c4b815a4e4c5b1c3 --- M pywikibot/families/commons_family.py M pywikibot/families/wikipedia_family.py M pywikibot/family.py M pywikibot/site.py 4 files changed, 35 insertions(+), 89 deletions(-)
Approvals: Mpaa: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/families/commons_family.py b/pywikibot/families/commons_family.py index f2d0572..06d82af 100644 --- a/pywikibot/families/commons_family.py +++ b/pywikibot/families/commons_family.py @@ -45,10 +45,6 @@ ), }
- self.disambcatname = { - 'commons': 'Disambiguation' - } - # Subpages for documentation. self.doc_subpages = { '_default': ((u'/doc', ), ['commons']), diff --git a/pywikibot/families/wikipedia_family.py b/pywikibot/families/wikipedia_family.py index d700984..1d55531 100644 --- a/pywikibot/families/wikipedia_family.py +++ b/pywikibot/families/wikipedia_family.py @@ -172,84 +172,6 @@ u'分類跳轉',), }
- self.disambcatname = { - 'af': u'dubbelsinnig', - 'als': u'Begriffsklärung', - 'ang': u'Scīrung', - 'ast': u'Dixebra', - 'ar': u'صفحات توضيح', - 'be': u'Disambig', - 'be-tarask': u'Вікіпэдыя:Неадназначнасьці', - 'bg': u'Пояснителни страници', - 'ca': u'Pàgines de desambiguació', - 'cbk-zam': u'Desambiguo', - 'cs': u'Rozcestníky', - 'cy': u'Gwahaniaethu', - 'da': u'Flertydig', - 'de': u'Begriffsklärung', - 'el': u'Αποσαφήνιση', - 'en': u'All disambiguation pages', - 'eo': u'Apartigiloj', - 'es': u'Desambiguación', - 'et': u'Täpsustusleheküljed', - 'eu': u'Argipen orriak', - 'fa': u'صفحههای ابهامزدایی', - 'fi': u'Täsmennyssivut', - 'fo': u'Fleiri týdningar', - 'fr': u'Homonymie', - 'fy': u'Trochferwiisside', - 'ga': u'Idirdhealáin', - 'gl': u'Homónimos', - 'he': u'פירושונים', - 'hu': u'Egyértelműsítő lapok', - 'ia': u'Disambiguation', - 'id': u'Disambiguasi', - 'io': u'Homonimi', - 'is': u'Aðgreiningarsíður', - 'it': u'Disambigua', - 'ja': u'曖昧さ回避', - 'ka': u'მრავალმნიშვნელოვანი', - 'kw': u'Folennow klerheans', - 'ko': u'동음이의어 문서', - 'ku': u'Rûpelên cudakirinê', - 'krc': u'Кёб магъаналы терминле', - 'ksh': u'Woot met mieh wi ëijnem Senn', - 'la': u'Discretiva', - 'lb': u'Homonymie', - 'li': u'Verdudelikingspazjena', - 'ln': u'Bokokani', - 'lt': u'Nuorodiniai straipsniai', - 'ms': u'Nyahkekaburan', - 'mt': u'Diżambigwazzjoni', - 'nds': u'Mehrdüdig Begreep', - 'nds-nl': u'Wikipedie:Deurverwiespagina', - 'nl': u'Wikipedia:Doorverwijspagina', - 'nn': u'Fleirtydingssider', - 'no': u'Pekere', - 'pl': u'Strony ujednoznaczniające', - 'pt': u'Desambiguação', - 'ro': u'Dezambiguizare', - 'ru': u'Многозначные термины', - 'scn': u'Disambigua', - 'sk': u'Rozlišovacie stránky', - 'sl': u'Razločitev', - 'sq': u'Kthjellime', - 'sr': u'Вишезначна одредница', - 'su': u'Disambiguasi', - 'sv': u'Förgreningssider', - 'szl': u'Zajty ujydnoznačńajůnce', - 'th': u'การแก้ความกำกวม', - 'tl': u'Paglilinaw', - 'tr': u'Anlam ayrım', - 'uk': u'Багатозначні геопункти', - 'vi': u'Trang định hướng', - 'vo': u'Telplänovapads', - 'wa': u'Omonimeye', - 'zea': u'Wikipedia:Deurverwiespagina', - 'zh': u'消歧义', - 'zh-min-nan': u'Khu-pia̍t-ia̍h', - } - # families that redirect their interlanguage links here. self.interwiki_forwarded_from = [ 'commons', diff --git a/pywikibot/family.py b/pywikibot/family.py index 0bb5c09..d320de0 100644 --- a/pywikibot/family.py +++ b/pywikibot/family.py @@ -710,7 +710,7 @@ # A list with the name in the cross-language flag permissions self.cross_allowed = []
- # A list with the name of the category containing disambiguation + # A dict with the name of the category containing disambiguation # pages for the various languages. Only one category per language, # and without the namespace, so add things like: # 'en': "Disambiguation" @@ -1570,6 +1570,14 @@ 'mo': 'ro', }
+ def __init__(self): + """Constructor.""" + super(WikimediaFamily, self).__init__() + # WikimediaFamily uses wikibase for the category name containing + # disambiguation pages for the various languages. We need the + # wikibase code and item number: + self.disambcatname = {'wikidata': 'Q1982926'} + @property def domain(self): """Domain property.""" diff --git a/pywikibot/site.py b/pywikibot/site.py index 31cbebd..e0fd782 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -1081,12 +1081,32 @@
def disambcategory(self): """Return Category in which disambig pages are listed.""" - try: - name = '%s:%s' % (self.namespace(14), - self.family.disambcatname[self.code]) - except KeyError: - raise Error(u"No disambiguation category name found for %(site)s" - % {'site': self}) + if self.has_data_repository: + repo = self.data_repository() + repo_name = repo.family.name + try: + item = self.family.disambcatname[repo.code] + except KeyError: + raise Error( + 'No {repo} qualifier found for disambiguation category ' + 'name in {fam}_family file'.format(repo=repo_name, + fam=self.family.name)) + else: + dp = pywikibot.ItemPage(repo, item) + try: + name = dp.getSitelink(self) + except pywikibot.NoPage: + raise Error( + 'No disambiguation category name found in {repo} ' + 'for {site}'.format(repo=repo_name, site=self)) + else: # fallback for non WM sites + try: + name = '%s:%s' % (Namespace.CATEGORY, + self.family.disambcatname[self.code]) + except KeyError: + raise Error( + 'No disambiguation category name found in ' + '{site.family.name}_family for {site}'.format(site=self)) return pywikibot.Category(pywikibot.Link(name, self))
@deprecated("pywikibot.Link")
pywikibot-commits@lists.wikimedia.org