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]