jenkins-bot has submitted this change and it was merged.
Change subject: [IMPROV] fixes: Utilize unicode_literals ......................................................................
[IMPROV] fixes: Utilize unicode_literals
With 1e54a7d6 all modules use unicode_literals which means that a few regexes in fixes.py can now be written as raw strings and can use unicode at the same time. It also removes the escape character before periods inside of character classes and closes the file object again.
Change-Id: I9012bc63ff0a8b82b28d05fbeb439fa28c46fce0 --- M pywikibot/fixes.py 1 file changed, 140 insertions(+), 134 deletions(-)
Approvals: John Vandenberg: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/fixes.py b/pywikibot/fixes.py index d84788c..ab3d336 100644 --- a/pywikibot/fixes.py +++ b/pywikibot/fixes.py @@ -7,6 +7,8 @@ # from __future__ import unicode_literals
+from pywikibot import config + __version__ = '$Id$'
parameter_help = u""" @@ -115,29 +117,29 @@ # (u'([Ww]eder) ([^,.]+?), noch', r'\1 \2 noch'), # # Vorsicht bei Substantiven, z. B. 3-Jähriger! - (u'(\d+)(minütig|stündig|tägig|wöchig|jährig|minütlich|stündlich' - u'|täglich|wöchentlich|jährlich|fach|mal|malig|köpfig|teilig' - u'|gliedrig|geteilt|elementig|dimensional|bändig|eckig|farbig' - u'|stimmig)', r'\1-\2'), + (r'(\d+)(minütig|stündig|tägig|wöchig|jährig|minütlich|stündlich' + r'|täglich|wöchentlich|jährlich|fach|mal|malig|köpfig|teilig' + r'|gliedrig|geteilt|elementig|dimensional|bändig|eckig|farbig' + r'|stimmig)', r'\1-\2'), # zusammengesetztes Wort, Bindestrich wird durchgeschleift - (u'(?<!\w)(\d+|\d+[.,]\d+)($|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min' - u'|µm|mm|cm|dm|m|km|ha|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|kcal' - u'|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)([²³]?-[\w[])', r'\1-\2\3'), + (r'(?<!\w)(\d+|\d+[.,]\d+)($|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min' + r'|µm|mm|cm|dm|m|km|ha|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|kcal' + r'|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)([²³]?-[\w[])', r'\1-\2\3'), # Größenangabe ohne Leerzeichen vor Einheit # weggelassen wegen vieler falsch Positiver: s, A, V, C, S, J, % - (u'(?<!\w)(\d+|\d+[.,]\d+)($|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min' - u'|µm|mm|cm|dm|m|km|ha|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|kcal' - u'|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)(?=\W|²|³|$)', r'\1 \2'), + (r'(?<!\w)(\d+|\d+[.,]\d+)($|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min' + r'|µm|mm|cm|dm|m|km|ha|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|kcal' + r'|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)(?=\W|²|³|$)', r'\1 \2'), # Temperaturangabe mit falsch gesetztem Leerzeichen - (u'(?<!\w)(\d+|\d+[.,]\d+)° C(?=\W|²|³|$)', r'\1' + u' °C'), + (r'(?<!\w)(\d+|\d+[.,]\d+)° C(?=\W|²|³|$)', r'\1 °C'), # Kein Leerzeichen nach Komma - (u'([a-zäöüß](]])?,)(([[)?[a-zäöüA-ZÄÖÜ])', r'\1 \3'), + (r'([a-zäöüß](]])?,)(([[)?[a-zäöüA-ZÄÖÜ])', r'\1 \3'), # Leerzeichen und Komma vertauscht - (u'([a-zäöüß](]])?) ,(([[)?[a-zäöüA-ZÄÖÜ])', r'\1, \3'), + (r'([a-zäöüß](]])?) ,(([[)?[a-zäöüA-ZÄÖÜ])', r'\1, \3'), # Plenks (d. h. Leerzeichen auch vor dem Komma/Punkt/Ausrufezeichen/Fragezeichen) # Achtung bei Französisch: https://de.wikipedia.org/wiki/Plenk#Sonderfall_Franz.C3.B6sisch # Leerzeichen vor Doppelpunkt/Semikolon kann korrekt sein, nach irgendeiner Norm für Zitationen. - (u'([a-zäöüß](]])?) ([,.!?]) (([[)?[a-zäöüA-ZÄÖÜ])', r'\1\3 \4'), + (r'([a-zäöüß](]])?) ([,.!?]) (([[)?[a-zäöüA-ZÄÖÜ])', r'\1\3 \4'), # (u'([a-z].)([A-Z])', r'\1 \2'), ], 'exceptions': { @@ -159,8 +161,8 @@ 'inside': [ r'<code>.*</code>', # because of code examples r'{{[Zz]itat|.*?}}', - r'{{' + u'§' + r'|.*?}}', # Gesetzesparagraph - u'§' + r'?\d+[a-z]', # Gesetzesparagraph + r'{{§|.*?}}', # Gesetzesparagraph + r'§?\d+[a-z]', # Gesetzesparagraph r'Ju 52/1m', # Flugzeugbezeichnung r'Ju 52/3m', # Flugzeugbezeichnung r'AH-1W', # Hubschrauberbezeichnung @@ -363,7 +365,7 @@ }, 'replacements': [ # Bindestrich, Gedankenstrich, Geviertstrich - (u'(von \d{3,4}) *(-|–|–|—|—) *(\d{3,4})', r'\1 bis \3'), + (r'(von \d{3,4}) *(-|–|–|—|—) *(\d{3,4})', r'\1 bis \3'), ], },
@@ -406,17 +408,17 @@ # space after death sign w/ linked date # (u'†[[(\d)', u'† [[\1'), # (u'†[[(\d)', u'† [[\1'), - (u'[[(\d+. (?:Januar|Februar|März|April|Mai|Juni|Juli|August|' - u'September|Oktober|November|Dezember)) (\d{1,4})]]', u'[[\1]] [[\2]]'), + (r'[[(\d+. (?:Januar|Februar|März|April|Mai|Juni|Juli|August|' + r'September|Oktober|November|Dezember)) (\d{1,4})]]', r'[[\1]] [[\2]]'), # Keine führende Null beim Datum (ersteinmal nur bei denen, bei denen auch ein Leerzeichen fehlt) - (u'0(\d+).(Januar|Februar|März|April|Mai|Juni|Juli|August|' - u'September|Oktober|November|Dezember)', r'\1. \2'), + (r'0(\d+).(Januar|Februar|März|April|Mai|Juni|Juli|August|' + r'September|Oktober|November|Dezember)', r'\1. \2'), # Kein Leerzeichen zwischen Tag und Monat - (u'(\d+).(Januar|Februar|März|April|Mai|Juni|Juli|August|' - u'September|Oktober|November|Dezember)', r'\1. \2'), + (r'(\d+).(Januar|Februar|März|April|Mai|Juni|Juli|August|' + r'September|Oktober|November|Dezember)', r'\1. \2'), # Kein Punkt vorm Jahr - (u'(\d+). (Januar|Februar|März|April|Mai|Juni|Juli|August|' - u'September|Oktober|November|Dezember).(\d{1,4})', r'\1. \2 \3'), + (r'(\d+). (Januar|Februar|März|April|Mai|Juni|Juli|August|' + r'September|Oktober|November|Dezember).(\d{1,4})', r'\1. \2 \3'), ], 'exceptions': { 'inside': [ @@ -433,7 +435,7 @@ 'regex': True, 'msg': 'isbn-formatting', # use i18n translations 'replacements': [ - # colon + # Remove colon between the word ISBN and the number (r'ISBN: (\d+)', r'ISBN \1'), # superfluous word "number" (r'ISBN( number| no.?| No.?|-Nummer|-Nr.):? (\d+)', r'ISBN \2'), @@ -441,22 +443,16 @@ # hyphen-minus as separator, or spaces between digits and separators. # Note that these regular expressions also match valid ISBNs, but # these won't be changed. - - # NOTE - # The following regexps are in u'...' format because Python 3.3 does not support - # ur'...' strings. They have been converted by copy-pasting them to Python 2.7 - # and copying back the results. - - # ur'ISBN (978|979) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d)(?!\d)' - (u'ISBN (978|979) *[\- \u2212\.\u2010-\u2015] *(\d+) *[\- ' - u'\u2212\.\u2010-\u2015] *(\d+) *[\- \u2212\.\u2010-\u2015] ' - u'*(\d+) *[\- \u2212\.\u2010-\u2015] *(\d)(?!\d)', + # These two regexes don't verify that the ISBN is of a valid format + # but just change separators into normal hypens. The isbn script + # does checks and similar but does only match ISBNs with digits and + # hypens (and optionally a X/x at the end). + (r'ISBN (978|979) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d+) ' + r'*[- −.‐-―] *(\d+) *[- −.‐-―] *(\d)(?!\d)', r'ISBN \1-\2-\3-\4-\5'), # ISBN-13
- # ur'ISBN (\d+) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d|X|x)(?!\d)' - (u'ISBN (\d+) *[\- \u2212\.\u2010-\u2015] *(\d+) *[\- ' - u'\u2212\.\u2010-\u2015] *(\d+) *[\- \u2212\.\u2010-\u2015] ' - '*(\d|X|x)(?!\d)', r'ISBN \1-\2-\3-\4'), # ISBN-10 + (r'ISBN (\d+) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d+) *[- −.‐-―] *(\d|X|x)(?!\d)', + r'ISBN \1-\2-\3-\4'), # ISBN-10 # missing space before ISBN-10 or before ISBN-13, # or non-breaking space. (r'ISBN(| | )((\d(-?)){12}\d|(\d(-?)){9}[\dXx])', r'ISBN \2'), @@ -485,96 +481,105 @@ # FIXME: Do not replace comma in non-Arabic text, # interwiki, image links or <math> syntax. # (u' ,', u' ،'), - (r'\b' + u'إمرأة' + r'\b', u'امرأة'), - (r'\b' + u'الى' + r'\b', u'إلى'), - (r'\b' + u'إسم' + r'\b', u'اسم'), - (r'\b' + u'الأن' + r'\b', u'الآن'), - (r'\b' + u'الة' + r'\b', u'آلة'), - (r'\b' + u'فى' + r'\b', u'في'), - (r'\b' + u'إبن' + r'\b', u'ابن'), - (r'\b' + u'إبنة' + r'\b', u'ابنة'), - (r'\b' + u'إقتصاد' + r'\b', u'اقتصاد'), - (r'\b' + u'إجتماع' + r'\b', u'اجتماع'), - (r'\b' + u'انجيل' + r'\b', u'إنجيل'), - (r'\b' + u'اجماع' + r'\b', u'إجماع'), - (r'\b' + u'اكتوبر' + r'\b', u'أكتوبر'), - (r'\b' + u'إستخراج' + r'\b', u'استخراج'), - (r'\b' + u'إستعمال' + r'\b', u'استعمال'), - (r'\b' + u'إستبدال' + r'\b', u'استبدال'), - (r'\b' + u'إشتراك' + r'\b', u'اشتراك'), - (r'\b' + u'إستعادة' + r'\b', u'استعادة'), - (r'\b' + u'إستقلال' + r'\b', u'استقلال'), - (r'\b' + u'إنتقال' + r'\b', u'انتقال'), - (r'\b' + u'إتحاد' + r'\b', u'اتحاد'), - (r'\b' + u'املاء' + r'\b', u'إملاء'), - (r'\b' + u'إستخدام' + r'\b', u'استخدام'), - (r'\b' + u'أحدى' + r'\b', u'إحدى'), - (r'\b' + u'لاكن' + r'\b', u'لكن'), - (r'\b' + u'إثنان' + r'\b', u'اثنان'), - (r'\b' + u'إحتياط' + r'\b', u'احتياط'), - (r'\b' + u'إقتباس' + r'\b', u'اقتباس'), - (r'\b' + u'ادارة' + r'\b', u'إدارة'), - (r'\b' + u'ابناء' + r'\b', u'أبناء'), - (r'\b' + u'الانصار' + r'\b', u'الأنصار'), - (r'\b' + u'اشارة' + r'\b', u'إشارة'), - (r'\b' + u'إقرأ' + r'\b', u'اقرأ'), - (r'\b' + u'إمتياز' + r'\b', u'امتياز'), - (r'\b' + u'ارق' + r'\b', u'أرق'), - (r'\b' + u'اللة' + r'\b', u'الله'), - (r'\b' + u'إختبار' + r'\b', u'اختبار'), - (u'==[ ]?روابط خارجية[ ]?==', u'== وصلات خارجية =='), - (r'\b' + u'ارسال' + r'\b', u'إرسال'), - (r'\b' + u'إتصالات' + r'\b', u'اتصالات'), - (r'\b' + u'ابو' + r'\b', u'أبو'), - (r'\b' + u'ابا' + r'\b', u'أبا'), - (r'\b' + u'اخو' + r'\b', u'أخو'), - (r'\b' + u'اخا' + r'\b', u'أخا'), - (r'\b' + u'اخي' + r'\b', u'أخي'), - (r'\b' + u'احد' + r'\b', u'أحد'), - (r'\b' + u'اربعاء' + r'\b', u'أربعاء'), - (r'\b' + u'اول' + r'\b', u'أول'), - (r'\b' + u'(ال|)اهم' + r'\b', u'\1أهم'), - (r'\b' + u'(ال|)اثقل' + r'\b', u'\1أثقل'), - (r'\b' + u'(ال|)امجد' + r'\b', u'\1أمجد'), - (r'\b' + u'(ال|)اوسط' + r'\b', u'\1أوسط'), - (r'\b' + u'(ال|)اشقر' + r'\b', u'\1أشقر'), - (r'\b' + u'(ال|)انور' + r'\b', u'\1أنور'), - (r'\b' + u'(ال|)اصعب' + r'\b', u'\1أصعب'), - (r'\b' + u'(ال|)اسهل' + r'\b', u'\1أسهل'), - (r'\b' + u'(ال|)اجمل' + r'\b', u'\1أجمل'), - (r'\b' + u'(ال|)اقبح' + r'\b', u'\1أقبح'), - (r'\b' + u'(ال|)اطول' + r'\b', u'\1أطول'), - (r'\b' + u'(ال|)اقصر' + r'\b', u'\1أقصر'), - (r'\b' + u'(ال|)اسمن' + r'\b', u'\1أسمن'), - (r'\b' + u'(ال|)اذكى' + r'\b', u'\1أذكى'), - (r'\b' + u'(ال|)اكثر' + r'\b', u'\1أكثر'), - (r'\b' + u'(ال|)افضل' + r'\b', u'\1أفضل'), - (r'\b' + u'(ال|)اكبر' + r'\b', u'\1أكبر'), - (r'\b' + u'(ال|)اشهر' + r'\b', u'\1أشهر'), - (r'\b' + u'(ال|)ابطأ' + r'\b', u'\1أبطأ'), - (r'\b' + u'(ال|)اماني' + r'\b', u'\1أماني'), - (r'\b' + u'(ال|)احلام' + r'\b', u'\1أحلام'), - (r'\b' + u'(ال|)اسماء' + r'\b', u'\1أسماء'), - (r'\b' + u'(ال|)اسامة' + r'\b', u'\1أسامة'), - (r'\b' + u'ابراهيم' + r'\b', u'إبراهيم'), - (r'\b' + u'اسماعيل' + r'\b', u'إسماعيل'), - (r'\b' + u'ايوب' + r'\b', u'أيوب'), - (r'\b' + u'ايمن' + r'\b', u'أيمن'), - (r'\b' + u'اوزبكستان' + r'\b', u'أوزبكستان'), - (r'\b' + u'اذربيجان' + r'\b', u'أذربيجان'), - (r'\b' + u'افغانستان' + r'\b', u'أفغانستان'), - (r'\b' + u'انجلترا' + r'\b', u'إنجلترا'), - (r'\b' + u'ايطاليا' + r'\b', u'إيطاليا'), - (r'\b' + u'اوربا' + r'\b', u'أوروبا'), - (r'\b' + u'أوربا' + r'\b', u'أوروبا'), - (r'\b' + u'اوغندة' + r'\b', u'أوغندة'), - (r'\b' + u'(ال|)ا(لماني|فريقي|سترالي)(ا|ة|تان|ان|ين|ي|ون|و|ات|)' + r'\b', u'\1أ\2\3'), - (r'\b' + u'(ال|)ا(وروب|مريك)(ا|ي|ية|يتان|يان|يين|يي|يون|يو|يات|)' + r'\b', u'\1أ\2\3'), - (r'\b' + u'(ال|)ا(ردن|رجنتين|وغند|سبان|وكران|فغان)(ي|ية|يتان|يان|يين|يي|يون|يو|يات|)' + r'\b', u'\1أ\2\3'), - (r'\b' + u'(ال|)ا(سرائيل|يران|مارات|نكليز|نجليز)(ي|ية|يتان|يان|يين|يي|يون|يو|يات|)' + r'\b', u'\1إ\2\3'), - (r'\b' + u'(ال|)(ا|أ)(رثوذكس|رثوذوكس)(ي|ية|يتان|يان|يين|يي|يون|يو|يات|)' + r'\b', u'\1أرثوذكس\4'), - (r'\b' + u'إست(عمل|خدم|مر|مد|مال|عاض|قام|حال|جاب|قال|زاد|عان|طال)(ت|ا|وا|)' + r'\b', u'است\1\2'), - (r'\b' + u'إست(حال|قال|طال|زاد|عان|قام|راح|جاب|عاض|مال)ة' + r'\b', u'است\1ة'), + # TODO: Basic explanation in English what it does + (r'\bإمرأة\b', 'امرأة'), + (r'\bالى\b', 'إلى'), + (r'\bإسم\b', 'اسم'), + (r'\bالأن\b', 'الآن'), + (r'\bالة\b', 'آلة'), + (r'\bفى\b', 'في'), + (r'\bإبن\b', 'ابن'), + (r'\bإبنة\b', 'ابنة'), + (r'\bإقتصاد\b', 'اقتصاد'), + (r'\bإجتماع\b', 'اجتماع'), + (r'\bانجيل\b', 'إنجيل'), + (r'\bاجماع\b', 'إجماع'), + (r'\bاكتوبر\b', 'أكتوبر'), + (r'\bإستخراج\b', 'استخراج'), + (r'\bإستعمال\b', 'استعمال'), + (r'\bإستبدال\b', 'استبدال'), + (r'\bإشتراك\b', 'اشتراك'), + (r'\bإستعادة\b', 'استعادة'), + (r'\bإستقلال\b', 'استقلال'), + (r'\bإنتقال\b', 'انتقال'), + (r'\bإتحاد\b', 'اتحاد'), + (r'\bاملاء\b', 'إملاء'), + (r'\bإستخدام\b', 'استخدام'), + (r'\bأحدى\b', 'إحدى'), + (r'\bلاكن\b', 'لكن'), + (r'\bإثنان\b', 'اثنان'), + (r'\bإحتياط\b', 'احتياط'), + (r'\bإقتباس\b', 'اقتباس'), + (r'\bادارة\b', 'إدارة'), + (r'\bابناء\b', 'أبناء'), + (r'\bالانصار\b', 'الأنصار'), + (r'\bاشارة\b', 'إشارة'), + (r'\bإقرأ\b', 'اقرأ'), + (r'\bإمتياز\b', 'امتياز'), + (r'\bارق\b', 'أرق'), + (r'\bاللة\b', 'الله'), + (r'\bإختبار\b', 'اختبار'), + (r'== ?روابط خارجية ?==', '== وصلات خارجية =='), + (r'\bارسال\b', 'إرسال'), + (r'\bإتصالات\b', 'اتصالات'), + (r'\bابو\b', 'أبو'), + (r'\bابا\b', 'أبا'), + (r'\bاخو\b', 'أخو'), + (r'\bاخا\b', 'أخا'), + (r'\bاخي\b', 'أخي'), + (r'\bاحد\b', 'أحد'), + (r'\bاربعاء\b', 'أربعاء'), + (r'\bاول\b', 'أول'), + (r'\b(ال|)اهم\b', r'\1أهم'), + (r'\b(ال|)اثقل\b', r'\1أثقل'), + (r'\b(ال|)امجد\b', r'\1أمجد'), + (r'\b(ال|)اوسط\b', r'\1أوسط'), + (r'\b(ال|)اشقر\b', r'\1أشقر'), + (r'\b(ال|)انور\b', r'\1أنور'), + (r'\b(ال|)اصعب\b', r'\1أصعب'), + (r'\b(ال|)اسهل\b', r'\1أسهل'), + (r'\b(ال|)اجمل\b', r'\1أجمل'), + (r'\b(ال|)اقبح\b', r'\1أقبح'), + (r'\b(ال|)اطول\b', r'\1أطول'), + (r'\b(ال|)اقصر\b', r'\1أقصر'), + (r'\b(ال|)اسمن\b', r'\1أسمن'), + (r'\b(ال|)اذكى\b', r'\1أذكى'), + (r'\b(ال|)اكثر\b', r'\1أكثر'), + (r'\b(ال|)افضل\b', r'\1أفضل'), + (r'\b(ال|)اكبر\b', r'\1أكبر'), + (r'\b(ال|)اشهر\b', r'\1أشهر'), + (r'\b(ال|)ابطأ\b', r'\1أبطأ'), + (r'\b(ال|)اماني\b', r'\1أماني'), + (r'\b(ال|)احلام\b', r'\1أحلام'), + (r'\b(ال|)اسماء\b', r'\1أسماء'), + (r'\b(ال|)اسامة\b', r'\1أسامة'), + (r'\bابراهيم\b', 'إبراهيم'), + (r'\bاسماعيل\b', 'إسماعيل'), + (r'\bايوب\b', 'أيوب'), + (r'\bايمن\b', 'أيمن'), + (r'\bاوزبكستان\b', 'أوزبكستان'), + (r'\bاذربيجان\b', 'أذربيجان'), + (r'\bافغانستان\b', 'أفغانستان'), + (r'\bانجلترا\b', 'إنجلترا'), + (r'\bايطاليا\b', 'إيطاليا'), + (r'\bاوربا\b', 'أوروبا'), + (r'\bأوربا\b', 'أوروبا'), + (r'\bاوغندة\b', 'أوغندة'), + (r'\b(ال|)ا(لماني|فريقي|سترالي)(ا|ة|تان|ان|ين|ي|ون|و|ات|)\b', + r'\1أ\2\3'), + (r'\b(ال|)ا(وروب|مريك)(ا|ي|ية|يتان|يان|يين|يي|يون|يو|يات|)\b', + r'\1أ\2\3'), + (r'\b(ال|)ا(ردن|رجنتين|وغند|سبان|وكران|فغان)' + r'(ي|ية|يتان|يان|يين|يي|يون|يو|يات|)\b', + r'\1أ\2\3'), + (r'\b(ال|)ا(سرائيل|يران|مارات|نكليز|نجليز)' + r'(ي|ية|يتان|يان|يين|يي|يون|يو|يات|)\b', + r'\1إ\2\3'), + (r'\b(ال|)(ا|أ)(رثوذكس|رثوذوكس)(ي|ية|يتان|يان|يين|يي|يون|يو|يات|)\b', + r'\1أرثوذكس\4'), + (r'\bإست(عمل|خدم|مر|مد|مال|عاض|قام|حال|جاب|قال|زاد|عان|طال)(ت|ا|وا|)\b', + r'است\1\2'), + (r'\bإست(حال|قال|طال|زاد|عان|قام|راح|جاب|عاض|مال)ة\b', r'است\1ة'), ], 'exceptions': { 'inside-tags': [ @@ -584,6 +589,7 @@ ], } }, + # TODO: Support dynamic replacement from Special pages to the localized one 'specialpages': { 'regex': False, 'msg': { @@ -688,10 +694,10 @@
# # Load the user fixes file. - -from pywikibot import config - try: - exec(compile(open(config.datafilepath("user-fixes.py")).read(), config.datafilepath("user-fixes.py"), 'exec')) + filename = config.datafilepath('user-fixes.py') + # load binary, to let compile decode it according to the file header + with open(filename, 'rb') as f: + exec(compile(f.read(), filename, 'exec')) except IOError: pass
pywikibot-commits@lists.wikimedia.org