http://www.mediawiki.org/wiki/Special:Code/pywikipedia/10106
Revision: 10106 Author: xqt Date: 2012-04-12 19:18:46 +0000 (Thu, 12 Apr 2012) Log Message: ----------- update family file from trunk, update interwiki sorting order
Modified Paths: -------------- branches/rewrite/pywikibot/family.py
Modified: branches/rewrite/pywikibot/family.py =================================================================== --- branches/rewrite/pywikibot/family.py 2012-04-12 19:13:18 UTC (rev 10105) +++ branches/rewrite/pywikibot/family.py 2012-04-12 19:18:46 UTC (rev 10106) @@ -21,8 +21,11 @@ class Family: def __init__(self): self.name = None + # For interwiki sorting order see + # http://meta.wikimedia.org/wiki/Interwiki_sorting_order
- # Updated from http://meta.wikimedia.org/wiki/Interwiki_sorting_order + # The sorting order by language name from meta + # MediaWiki:Interwiki_config-sorting_order-native-languagename self.alphabetic = [ 'ace', 'kbd', 'af', 'ak', 'als', 'am', 'ang', 'ab', 'ar', 'an', 'arc', 'roa-rup', 'frp', 'as', 'ast', 'gn', 'av', 'ay', 'az', 'bm', @@ -36,27 +39,28 @@ 'hi', 'ho', 'hsb', 'hr', 'io', 'ig', 'ilo', 'bpy', 'id', 'ia', 'ie', 'iu', 'ik', 'os', 'xh', 'zu', 'is', 'it', 'he', 'jv', 'kl', 'kn', 'kr', 'pam', 'krc', 'ka', 'ks', 'csb', 'kk', 'kw', 'rw', 'rn', 'sw', - 'kv', 'kg', 'ht', 'ku', 'kj', 'ky', 'mrj', 'lad', 'lbe', 'lo', 'ltg', - 'la', 'lv', 'lb', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu', - 'mk', 'mg', 'ml', 'mt', 'mi', 'mr', 'xmf', 'arz', 'mzn', 'ms', - 'cdo', 'mwl', 'mdf', 'mo', 'mn', 'mus', 'my', 'nah', 'na', 'fj', - 'nl', 'nds-nl', 'cr', 'ne', 'new', 'ja', 'nap', 'ce', 'frr', 'pih', - 'no', 'nb', 'nn', 'nrm', 'nov', 'ii', 'oc', 'mhr', 'or', 'om', 'ng', - 'hz', 'uz', 'pa', 'pi', 'pfl', 'pag', 'pnb', 'pap', 'ps', 'koi', - 'km', 'pcd', 'pms', 'tpi', 'nds', 'pl', 'tokipona', 'tp', 'pnt', - 'pt', 'aa', 'kaa', 'crh', 'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', - 'rue', 'ru', 'sah', 'se', 'sm', 'sa', 'sg', 'sc', 'sco', 'stq', - 'st', 'nso', 'tn', 'sq', 'scn', 'si', 'simple', 'sd', 'ss', 'sk', - 'sl', 'cu', 'szl', 'so', 'ckb', 'srn', 'sr', 'sh', 'su', 'fi', 'sv', - 'tl', 'ta', 'kab', 'roa-tara', 'tt', 'te', 'tet', 'th', 'ti', 'tg', - 'to', 'chr', 'chy', 've', 'tr', 'tk', 'tw', 'udm', 'bug', 'uk', - 'ur', 'ug', 'za', 'vec', 'vi', 'vo', 'fiu-vro', 'wa', - 'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', 'yi', 'yo', - 'zh-yue', 'diq', 'zea', 'bat-smg', 'zh', 'zh-tw', 'zh-cn', + 'kv', 'kg', 'ht', 'ku', 'kj', 'ky', 'mrj', 'lad', 'lbe', 'lez', + 'lo', 'ltg', 'la', 'lv', 'lb', 'lt', 'lij', 'li', 'ln', 'jbo', 'lg', + 'lmo', 'hu', 'mk', 'mg', 'ml', 'mt', 'mi', 'mr', 'xmf', 'arz', + 'mzn', 'ms', 'cdo', 'mwl', 'mdf', 'mo', 'mn', 'mus', 'my', 'nah', + 'na', 'fj', 'nl', 'nds-nl', 'cr', 'ne', 'new', 'ja', 'nap', 'ce', + 'frr', 'pih', 'no', 'nb', 'nn', 'nrm', 'nov', 'ii', 'oc', 'mhr', + 'or', 'om', 'ng', 'hz', 'uz', 'pa', 'pi', 'pfl', 'pag', 'pnb', + 'pap', 'ps', 'koi', 'km', 'pcd', 'pms', 'tpi', 'nds', 'pl', + 'tokipona', 'tp', 'pnt', 'pt', 'aa', 'kaa', 'crh', 'ty', 'ksh', + 'ro', 'rmy', 'rm', 'qu', 'rue', 'ru', 'sah', 'se', 'sm', 'sa', 'sg', + 'sc', 'sco', 'stq', 'st', 'nso', 'tn', 'sq', 'scn', 'si', 'simple', + 'sd', 'ss', 'sk', 'sl', 'cu', 'szl', 'so', 'ckb', 'srn', 'sr', 'sh', + 'su', 'fi', 'sv', 'tl', 'ta', 'shi', 'kab', 'roa-tara', 'tt', 'te', + 'tet', 'th', 'ti', 'tg', 'to', 'chr', 'chy', 've', 'tr', 'tk', 'tw', + 'udm', 'bug', 'uk', 'ur', 'ug', 'za', 'vec', 'vep', 'vi', 'vo', + 'fiu-vro', 'wa', 'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', + 'yi', 'yo', 'zh-yue', 'diq', 'zea', 'bat-smg', 'zh', 'zh-tw', + 'zh-cn', ]
- # A revised sorting order worked out on - # http://meta.wikimedia.org/wiki/Interwiki_sorting_order + # The revised sorting order by first word from meta + # MediaWiki:Interwiki_config-sorting_order-native-languagename-firstword self.alphabetic_revised = [ 'ace', 'kbd', 'af', 'ak', 'als', 'am', 'ang', 'ab', 'ar', 'an', 'arc', 'roa-rup', 'frp', 'as', 'ast', 'gn', 'av', 'ay', 'az', 'bjn', @@ -71,21 +75,21 @@ 'io', 'ig', 'ilo', 'bpy', 'ia', 'ie', 'iu', 'ik', 'os', 'xh', 'zu', 'is', 'it', 'he', 'kl', 'kn', 'kr', 'pam', 'ka', 'ks', 'csb', 'kk', 'kw', 'rw', 'ky', 'rn', 'mrj', 'sw', 'kv', 'kg', 'ht', 'ku', 'kj', - 'lad', 'lbe', 'lo', 'la', 'ltg', 'lv', 'to', 'lb', 'lt', 'lij', - 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu', 'mk', 'mg', 'ml', 'krc', 'mt', - 'mi', 'mr', 'xmf', 'arz', 'mzn', 'cdo', 'mwl', 'koi', 'mdf', 'mo', - 'mn', 'mus', 'my', 'nah', 'fj', 'nl', 'nds-nl', 'cr', 'ne', 'new', - 'ja', 'nap', 'ce', 'frr', 'pih', 'no', 'nb', 'nn', 'nrm', 'nov', - 'ii', 'oc', 'mhr', 'or', 'om', 'ng', 'hz', 'uz', 'pa', 'pi', 'pfl', - 'pag', 'pnb', 'pap', 'ps', 'km', 'pcd', 'pms', 'nds', 'pl', 'pnt', - 'pt', 'aa', 'kaa', 'crh', 'ty', 'ksh', 'ro', 'rmy', 'rm', 'qu', - 'ru', 'rue', 'sah', 'se', 'sa', 'sg', 'sc', 'sco', 'stq', 'st', - 'nso', 'tn', 'sq', 'scn', 'si', 'simple', 'sd', 'ss', 'sk', 'sl', - 'cu', 'szl', 'so', 'ckb', 'srn', 'sr', 'sh', 'fi', 'sv', 'tl', 'ta', - 'kab', 'roa-tara', 'tt', 'te', 'tet', 'th', 'vi', 'ti', 'tg', - 'tpi', 'tokipona', 'tp', 'chr', 'chy', 've', 'tr', 'tk', 'tw', - 'udm', 'uk', 'ur', 'ug', 'za', 'vec', 'vo', 'fiu-vro', 'wa', - 'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', 'yi', 'yo', + 'lad', 'lbe', 'lez', 'lo', 'la', 'ltg', 'lv', 'to', 'lb', 'lt', + 'lij', 'li', 'ln', 'jbo', 'lg', 'lmo', 'hu', 'mk', 'mg', 'ml', + 'krc', 'mt', 'mi', 'mr', 'xmf', 'arz', 'mzn', 'cdo', 'mwl', 'koi', + 'mdf', 'mo', 'mn', 'mus', 'my', 'nah', 'fj', 'nl', 'nds-nl', 'cr', + 'ne', 'new', 'ja', 'nap', 'ce', 'frr', 'pih', 'no', 'nb', 'nn', + 'nrm', 'nov', 'ii', 'oc', 'mhr', 'or', 'om', 'ng', 'hz', 'uz', 'pa', + 'pi', 'pfl', 'pag', 'pnb', 'pap', 'ps', 'km', 'pcd', 'pms', 'nds', + 'pl', 'pnt', 'pt', 'aa', 'kaa', 'crh', 'ty', 'ksh', 'ro', 'rmy', + 'rm', 'qu', 'ru', 'rue', 'sah', 'se', 'sa', 'sg', 'sc', 'sco', + 'stq', 'st', 'nso', 'tn', 'sq', 'scn', 'si', 'simple', 'sd', 'ss', + 'sk', 'sl', 'cu', 'szl', 'so', 'ckb', 'srn', 'sr', 'sh', 'fi', 'sv', + 'tl', 'ta', 'shi', 'kab', 'roa-tara', 'tt', 'te', 'tet', 'th', 'vi', + 'ti', 'tg', 'tpi', 'tokipona', 'tp', 'chr', 'chy', 've', 'tr', 'tk', + 'tw', 'udm', 'uk', 'ur', 'ug', 'za', 'vec', 'vep', 'vo', 'fiu-vro', + 'wa', 'zh-classical', 'vls', 'war', 'wo', 'wuu', 'ts', 'yi', 'yo', 'zh-yue', 'diq', 'zea', 'bat-smg', 'zh', 'zh-tw', 'zh-cn', ]
@@ -98,7 +102,6 @@ self.fyinterwiki.remove('nb') self.fyinterwiki.sort(fycomp)
- self.langs = {}
# letters that can follow a wikilink and are regarded as part of @@ -108,19 +111,29 @@ # Note: this is a regular expression. self.linktrails = { '_default': u'[a-z]*', + 'ca': u'[a-zàèéíòóúç·ïü]*', + 'cs': u'[a-záčďéěíňóřšťúůýž]*', 'de': u'[a-zäöüß]*', 'da': u'[a-zæøå]*', - 'fi': u'[a-zåäö]*', - 'fr': u'[a-zàâçéèêîôû]*', + 'es': u'[a-záéíóúñ]*', + 'fa': u'[a-zابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیآأئؤة]*', + 'fi': u'[a-zäö]*', + 'fr': u'[a-zàâçéèêîôûäëïöüùÇÉÂÊÎÔÛÄËÏÖÜÀÈÙ]*', 'frr': u'[a-zäöüßåāđē]*', 'he': u'[a-zא-ת]*', 'hu': u'[a-záéíóúöüőűÁÉÍÓÚÖÜŐŰ]*', - 'it': u'[a-zàèéìòù]*', - 'kk': u'[a-zäçéğıïñöşüýа-яёәғіқңөұүһʺʹ]*', - 'ksh': u'[äöüėëijßəğåůæœça-z]*', - 'nl': u'[a-zäöüïëéèéàç]*', + 'it': u'[a-zàéèíîìóòúù]*', + 'ka': u'[a-zაბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰ“»]*', + 'kk': u'[a-zäçéğıïñöşüýʺʹа-яёәғіқңөұүһٴابپتجحدرزسشعفقكلمنڭەوۇۋۆىيچھ“»]*', + 'ksh': u'[a-zäöüėëijßəğåůæœç]*', + 'mk': u'[a-zабвгдѓежзѕијклљмнњопрстќуфхцчџш]*', + 'nl': u'[a-zäöüïëéèà]*', + 'nl': u'[a-zæøå]*', + 'pl': u'[a-zęóąśłżźćńĘÓĄŚŁŻŹĆŃ]*', 'pt': u'[a-záâàãéêíóôõúüç]*', + 'ro': u'[a-zăâîşţșțĂÂÎŞŢȘȚ]*', 'ru': u'[a-zа-я]*', + 'sk': u'[a-záäčďéíľĺňóôŕšťúýž]*', }
# Wikimedia wikis all use "bodyContent" as the id of the <div> @@ -603,6 +616,12 @@ # family. self.interwiki_forward = None
+ # Some families, e. g. wikipedia, receive forwarded interlanguage + # links from other families, e. g. incubator, commons, or meta. + # These families can set this variable to the names of their source + # families. + self.interwiki_forwarded_from = {} + # Which language codes no longer exist and by which language code # should they be replaced. If for example the language with code xx: # now should get code yy:, add {'xx':'yy'} to obsolete. If all @@ -697,6 +716,12 @@ # 'pt': { '_default': [0]} # }
+ @property + def iwkeys(self): + if self.interwiki_forward: + return pywikibot.Family(self.interwiki_forward).langs.keys() + return self.langs.keys() + def _addlang(self, code, location, namespaces = {}): """Add a new language to the langs and namespaces of the family. This is supposed to be called in the constructor of the family."""