Revision: 4371 Author: cosoleto Date: 2007-09-27 14:12:09 +0000 (Thu, 27 Sep 2007)
Log Message: ----------- Fix bug #1802910: Swedish wikis (and only they) use 's:t' and 's:a' as an abbreviation for 'saint', 'src' as abbreviation for 'wikisource'. Consequently, added in family.py a get_known_families(code) function.
Modified Paths: -------------- trunk/pywikipedia/family.py trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/family.py =================================================================== --- trunk/pywikipedia/family.py 2007-09-27 11:55:26 UTC (rev 4370) +++ trunk/pywikipedia/family.py 2007-09-27 14:12:09 UTC (rev 4371) @@ -30,13 +30,13 @@ 'tr','tk','tw','udm','bug','uk','ur','vec','vo','fiu-vro','wa', 'vls','war','wo','wuu','ts','ii','yi','yo','zh-yue','cbk-zam','diq','zea','bat-smg','zh', 'zh-tw','zh-cn'] - + # knownlanguages is the same list but sorted by code self.knownlanguages = list(self.alphabetic) self.knownlanguages.sort() - + self.langs = {} - + # Translation used on all wikis for the different namespaces. # (Please sort languages alphabetically) # You only need to enter translations that differ from _default. @@ -1767,7 +1767,7 @@ # element that contains the actual page content; change this for # wikis that use something else (e.g., mozilla family) self.content_id = "bodyContent" - + # A dictionary where keys are family codes that can be used in # inter-family interwiki links. Values are not used yet. # Generated from http://tools.wikimedia.de/~daniel/interwiki-en.txt: @@ -2189,7 +2189,7 @@ # on_one_line is a list of languages that want the category links # one-after-another on a single line self.category_on_one_line = [] - + # String used as separator between category links and the text self.category_text_separator = '\r\n\r\n'
@@ -2258,17 +2258,26 @@ for num, val in namespaces.items(): self.namespaces[num][code]=val
+ def get_known_families(self, code): + if code == 'sv': + # In Swedish wiki projects 's:' is part of page title + # not a family prefix for 'wikisource'. + d = self.known_families.copy() + d.pop('s') ; d['src'] = 'wikisource' + return d + return self.known_families + def linktrail(self, code, fallback = '_default'): if self.linktrails.has_key(code): return self.linktrails[code] elif fallback: return self.linktrails[fallback] else: - raise KeyError('ERROR: linktrail in language %s unknown' % code) + raise KeyError('ERROR: linktrail in language %s unknown' % code)
def namespace(self, code, ns_number, fallback = '_default', all = False): if not self.isDefinedNS(ns_number): - raise KeyError('ERROR: Unknown namespace %d for %s:%s' % (ns_number, code, self.name)) + raise KeyError('ERROR: Unknown namespace %d for %s:%s' % (ns_number, code, self.name)) elif self.isNsI18N(ns_number, code): v = self.namespaces[ns_number][code] elif fallback:
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2007-09-27 11:55:26 UTC (rev 4370) +++ trunk/pywikipedia/wikipedia.py 2007-09-27 14:12:09 UTC (rev 4371) @@ -243,7 +243,7 @@ site = getSite() elif type(site) in [type(''), type(u'')]: site = getSite(site) - + self._site = site
if not insite: @@ -304,8 +304,8 @@ if t != '' and t[0] == ':': self._namespace = 0 t = t[1:] - elif lowerNs in self.site().family.known_families: - if self.site().family.known_families[lowerNs] == self.site().family.name: + elif lowerNs in self.site().family.get_known_families(code = self.site().lang): + if self.site().get_family.known_families(code = self.site().lang)[lowerNs] == self.site().family.name: t = m.group(2) else: # This page is from a different family @@ -1357,7 +1357,7 @@ category links in the page text. """ try: - category_links_to_return = getCategoryLinks(self.get(nofollow_redirects=nofollow_redirects), self.site()) + category_links_to_return = getCategoryLinks(self.get(nofollow_redirects=nofollow_redirects), self.site()) except NoPage: category_links_to_return = [] return category_links_to_return @@ -4031,7 +4031,7 @@ return self.isInterwikiLink(rest) else: return True - if first in self.family.known_families: + if first in self.family.get_known_families(code = self.lang): if first == self.family.name: return self.isInterwikiLink(rest) else:
Am Donnerstag, 27. September 2007 16:12 schrieb cosoleto@svn.wikimedia.org:
Revision: 4371
Fix bug #1802910: Swedish wikis (and only they) use 's:t' and 's:a' as an abbreviation for 'saint', 'src' as abbreviation for 'wikisource'. Consequently, added in family.py a get_known_families(code) function.
Hi,
As far as I know, this only applies to the Swedish Wikipedia. I tried a [[S:t foobar]] link on sv.wiktionary, and it became a Wikisource link. Not sure about other sv: projects, though.
Daniel
Modified Paths:
trunk/pywikipedia/family.py trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/family.py
--- trunk/pywikipedia/family.py 2007-09-27 11:55:26 UTC (rev 4370) +++ trunk/pywikipedia/family.py 2007-09-27 14:12:09 UTC (rev 4371) @@ -30,13 +30,13 @@ 'tr','tk','tw','udm','bug','uk','ur','vec','vo','fiu-vro','wa',
'vls','war','wo','wuu','ts','ii','yi','yo','zh-yue','cbk-zam','diq','zea',' bat-smg','zh', 'zh-tw','zh-cn']
# knownlanguages is the same list but sorted by code self.knownlanguages = list(self.alphabetic) self.knownlanguages.sort()
self.langs = {}
# Translation used on all wikis for the different namespaces. # (Please sort languages alphabetically) # You only need to enter translations that differ from _default.
@@ -1767,7 +1767,7 @@ # element that contains the actual page content; change this for # wikis that use something else (e.g., mozilla family) self.content_id = "bodyContent"
# A dictionary where keys are family codes that can be used in # inter-family interwiki links. Values are not used yet. # Generated from
http://tools.wikimedia.de/~daniel/interwiki-en.txt: @@ -2189,7 +2189,7 @@ # on_one_line is a list of languages that want the category links # one-after-another on a single line self.category_on_one_line = []
# String used as separator between category links and the text self.category_text_separator = '\r\n\r\n'
@@ -2258,17 +2258,26 @@ for num, val in namespaces.items(): self.namespaces[num][code]=val
- def get_known_families(self, code):
if code == 'sv':
# In Swedish wiki projects 's:' is part of page title
# not a family prefix for 'wikisource'.
d = self.known_families.copy()
d.pop('s') ; d['src'] = 'wikisource'
return d
return self.known_families
- def linktrail(self, code, fallback = '_default'): if self.linktrails.has_key(code): return self.linktrails[code] elif fallback: return self.linktrails[fallback] else:
raise KeyError('ERROR: linktrail in language %s unknown' %
code) + raise KeyError('ERROR: linktrail in language %s unknown' % code)
def namespace(self, code, ns_number, fallback = '_default', all =
False): if not self.isDefinedNS(ns_number):
raise KeyError('ERROR: Unknown namespace %d for %s:%s' %
(ns_number, code, self.name)) + raise KeyError('ERROR: Unknown namespace %d for %s:%s' % (ns_number, code, self.name)) elif self.isNsI18N(ns_number, code): v = self.namespaces[ns_number][code] elif fallback:
Modified: trunk/pywikipedia/wikipedia.py
--- trunk/pywikipedia/wikipedia.py 2007-09-27 11:55:26 UTC (rev 4370) +++ trunk/pywikipedia/wikipedia.py 2007-09-27 14:12:09 UTC (rev 4371) @@ -243,7 +243,7 @@ site = getSite() elif type(site) in [type(''), type(u'')]: site = getSite(site)
self._site = site if not insite:
@@ -304,8 +304,8 @@ if t != '' and t[0] == ':': self._namespace = 0 t = t[1:]
elif lowerNs in self.site().family.known_families:
if self.site().family.known_families[lowerNs] ==
self.site().family.name: + elif lowerNs in self.site().family.get_known_families(code = self.site().lang): + if self.site().get_family.known_families(code = self.site().lang)[lowerNs] == self.site().family.name: t = m.group(2) else: # This page is from a different family @@ -1357,7 +1357,7 @@ category links in the page text. """ try:
category_links_to_return =
getCategoryLinks(self.get(nofollow_redirects=nofollow_redirects), self.site()) + category_links_to_return = getCategoryLinks(self.get(nofollow_redirects=nofollow_redirects), self.site()) except NoPage: category_links_to_return = [] return category_links_to_return @@ -4031,7 +4031,7 @@ return self.isInterwikiLink(rest) else: return True
if first in self.family.known_families:
if first in self.family.get_known_families(code = self.lang): if first == self.family.name: return self.isInterwikiLink(rest) else:
Pywikipedia-l mailing list Pywikipedia-l@lists.wikimedia.org http://lists.wikimedia.org/mailman/listinfo/pywikipedia-l
Daniel Herding wrote:
As far as I know, this only applies to the Swedish Wikipedia. I tried a [[S:t foobar]] link on sv.wiktionary, and it became a Wikisource link. Not sure about other sv: projects, though.
Yes, this is correct. Then I fix to limit the behaviour only in wikipedia family.
I should like know when this stuff in projects configuration is changed in order to precede bot mistakes...
Francesco Cosoleto