jenkins-bot has submitted this change. ( 
https://gerrit.wikimedia.org/r/c/pywikibot/core/+/777297 )

Change subject: [bugfix] Python 3.5 does not support inline flags inside groups
......................................................................

[bugfix] Python 3.5 does not support inline flags inside groups

Also make textlib._ignore_case a public method

Bug: T305226
Change-Id: Idc6d286ac420059d76cdc23f6f0b50c2f5d29869
---
M pywikibot/textlib.py
M scripts/image.py
2 files changed, 16 insertions(+), 12 deletions(-)

Approvals:
  Matěj Suchánek: Looks good to me, but someone else must approve
  Xqt: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/pywikibot/textlib.py b/pywikibot/textlib.py
index 9d32247..8b16d4e 100644
--- a/pywikibot/textlib.py
+++ b/pywikibot/textlib.py
@@ -211,8 +211,8 @@

         pattern = case_escape(namespace.case, old)
         # namespaces may be any mixed case
-        namespaces = [_ignore_case(ns) for ns in namespace]
-        namespaces.append(_ignore_case('msg'))
+        namespaces = [ignore_case(ns) for ns in namespace]
+        namespaces.append(ignore_case('msg'))
         pattern = re.sub(r'_|\\ ', r'[_ ]', pattern)
         templateRegexP = (
             r'{{\s*(%(namespace)s:)?%(pattern)s'
@@ -229,8 +229,12 @@
         return lambda text: any(predicate(text) for predicate in predicates)


-def _ignore_case(string: str) -> str:
-    """Return a case-insensitive pattern for the string."""
+def ignore_case(string: str) -> str:
+    """Return a case-insensitive pattern for the string.
+
+    .. versionchanged:: 7.2
+       `_ignore_case` becomes a public method
+    """
     return ''.join(
         '[{}{}]'.format(c, s) if c != s else c
         for s, c in zip(string, string.swapcase()))
@@ -242,7 +246,7 @@
         r'<{0}(?:>|\s+[^>]*(?<!/)>)'  # start tag
         r'[\s\S]*?'  # contents
         r'</{0}\s*>'  # end tag
-        .format(_ignore_case(tag_name)))
+        .format(ignore_case(tag_name)))


 def _tag_regex(tag_name: str):
@@ -270,24 +274,24 @@
         'interwiki': (
             r'\[\[:?(%s)\s?:[^\]]*\]\]\s*',
             lambda site: '|'.join(
-                _ignore_case(i) for i in site.validLanguageLinks()
+                ignore_case(i) for i in site.validLanguageLinks()
                 + list(site.family.obsolete.keys()))),
         # Module invocations (currently only Lua)
         'invoke': (
             r'\{\{\s*\#(?:%s):[\s\S]*?\}\}',
             lambda site: '|'.join(
-                _ignore_case(mw) for mw in site.getmagicwords('invoke'))),
+                ignore_case(mw) for mw in site.getmagicwords('invoke'))),
         # this matches internal wikilinks, but also interwiki, categories, and
         # images.
         'link': re.compile(r'\[\[[^\]|]*(\|[^\]]*)?\]\]'),
         # pagelist tag (used in Proofread extension).
         'pagelist': re.compile(r'<{}[\s\S]*?/>'
-                               .format(_ignore_case('pagelist'))),
+                               .format(ignore_case('pagelist'))),
         # Wikibase property inclusions
         'property': (
             r'\{\{\s*\#(?:%s):\s*[Pp]\d+.*?\}\}',
             lambda site: '|'.join(
-                _ignore_case(mw) for mw in site.getmagicwords('property'))),
+                ignore_case(mw) for mw in site.getmagicwords('property'))),
         # lines that start with a colon or more will be indented
         'startcolon': re.compile(r'(?:(?<=\n)|\A):(.*?)(?=\n|\Z)'),
         # lines that start with a space are shown in a monospace font and
diff --git a/scripts/image.py b/scripts/image.py
index a52a208..84785e7 100755
--- a/scripts/image.py
+++ b/scripts/image.py
@@ -46,7 +46,7 @@
 import pywikibot
 from pywikibot import i18n, pagegenerators
 from pywikibot.bot import SingleSiteBot
-from pywikibot.textlib import case_escape
+from pywikibot.textlib import case_escape, ignore_case
 from scripts.replace import ReplaceRobot as ReplaceBot


@@ -91,8 +91,8 @@
         escaped = re.sub('\\\\[_ ]', '[_ ]', escaped)
         if not self.opt.loose or not self.new_image:
             image_regex = re.compile(
-                r'\[\[ *(?i:{})\s*:\s*{} *(?P<parameters>\|[^\n]+?|) *\]\]'
-                .format('|'.join(namespace), escaped))
+                r'\[\[ *(?:{})\s*:\s*{} *(?P<parameters>\|[^\n]+?|) *\]\]'
+                .format('|'.join(ignore_case(s) for s in namespace), escaped))
         else:
             image_regex = re.compile(r'' + escaped)


--
To view, visit https://gerrit.wikimedia.org/r/c/pywikibot/core/+/777297
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/settings

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Change-Id: Idc6d286ac420059d76cdc23f6f0b50c2f5d29869
Gerrit-Change-Number: 777297
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <[email protected]>
Gerrit-Reviewer: D3r1ck01 <[email protected]>
Gerrit-Reviewer: Matěj Suchánek <[email protected]>
Gerrit-Reviewer: Xqt <[email protected]>
Gerrit-Reviewer: jenkins-bot
Gerrit-MessageType: merged
_______________________________________________
Pywikibot-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to