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")
--
To view, visit
https://gerrit.wikimedia.org/r/306244
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: If2353b2d2b586dbbcf561151c4b815a4e4c5b1c3
Gerrit-PatchSet: 4
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <info(a)gno.de>
Gerrit-Reviewer: John Vandenberg <jayvdb(a)gmail.com>
Gerrit-Reviewer: Mpaa <mpaa.wiki(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>