From af4e37f48abb0e22da68a4c713eeb3f358442f3c Mon Sep 17 00:00:00 2001 From: Nils Philippsen Date: Mon, 9 Oct 2023 14:33:25 +0200 Subject: [PATCH] Fix insufficiently quoted regular expressions These went under the radar until Python 3.12 started warning about them. Signed-off-by: Nils Philippsen --- ...ficiently-quoted-regular-expressions.patch | 76 +++++++++++++++++++ itstool.spec | 9 ++- 2 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 0001-Fix-insufficiently-quoted-regular-expressions.patch diff --git a/0001-Fix-insufficiently-quoted-regular-expressions.patch b/0001-Fix-insufficiently-quoted-regular-expressions.patch new file mode 100644 index 0000000..1290769 --- /dev/null +++ b/0001-Fix-insufficiently-quoted-regular-expressions.patch @@ -0,0 +1,76 @@ +From 32c7d07664dc37765100285d1202d488cd6a27e8 Mon Sep 17 00:00:00 2001 +From: Nils Philippsen +Date: Mon, 9 Oct 2023 14:26:43 +0200 +Subject: [PATCH] Fix insufficiently quoted regular expressions + +These went under the radar until Python 3.12 started warning about them. + +Signed-off-by: Nils Philippsen +--- + itstool.in | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +diff --git a/itstool.in b/itstool.in +index c21ad4b..4452616 100755 +--- a/itstool.in ++++ b/itstool.in +@@ -220,7 +220,7 @@ class Message (object): + if not isinstance(text, ustr_type): + text = ustr(text, 'utf-8') + self._message[-1] += text.replace('&', '&').replace('<', '<').replace('>', '>') +- if re.sub('\s+', ' ', text).strip() != '': ++ if re.sub(r'\s+', ' ', text).strip() != '': + self._empty = False + + def add_entity_ref (self, name): +@@ -318,7 +318,7 @@ class Message (object): + message += '<_:%s-%i/>' % (msg.name, placeholder) + placeholder += 1 + if not self._preserve: +- message = re.sub('\s+', ' ', message).strip() ++ message = re.sub(r'\s+', ' ', message).strip() + return message + + def get_preserve_space (self): +@@ -456,9 +456,9 @@ class LocNote (object): + if self._preserve_space: + return self.locnote + else: +- return re.sub('\s+', ' ', self.locnote).strip() ++ return re.sub(r'\s+', ' ', self.locnote).strip() + elif self.locnoteref is not None: +- return '(itstool) link: ' + re.sub('\s+', ' ', self.locnoteref).strip() ++ return '(itstool) link: ' + re.sub(r'\s+', ' ', self.locnoteref).strip() + return '' + + +@@ -889,7 +889,7 @@ class Document (object): + trans = translations.ugettext('_\x04translator-credits') + if trans is None or trans == 'translator-credits': + return +- regex = re.compile('(.*) \<(.*)\>, (.*)') ++ regex = re.compile(r'(.*) \<(.*)\>, (.*)') + for credit in trans.split('\n'): + match = regex.match(credit) + if not match: +@@ -924,7 +924,7 @@ class Document (object): + prevnode = None + if node.prev is not None and node.prev.type == 'text': + prevtext = node.prev.content +- if re.sub('\s+', '', prevtext) == '': ++ if re.sub(r'\s+', '', prevtext) == '': + prevnode = node.prev + for lang in sorted(list(translations.keys()), reverse=True): + locale = self.get_its_locale_filter(node) +@@ -1468,7 +1468,7 @@ def match_locale(extrange, locale): + localei += 1 + return True + +-_locale_pattern = re.compile('([a-zA-Z0-9-]+)(_[A-Za-z0-9]+)?(@[A-Za-z0-9]+)?(\.[A-Za-z0-9]+)?') ++_locale_pattern = re.compile(r'([a-zA-Z0-9-]+)(_[A-Za-z0-9]+)?(@[A-Za-z0-9]+)?(\.[A-Za-z0-9]+)?') + def convert_locale (locale): + # Automatically convert POSIX-style locales to BCP47 + match = _locale_pattern.match(locale) +-- +2.41.0 + diff --git a/itstool.spec b/itstool.spec index fe1c570..68bb461 100644 --- a/itstool.spec +++ b/itstool.spec @@ -1,6 +1,6 @@ Name: itstool Version: 2.0.7 -Release: 5%{?dist} +Release: 6%{?dist} Summary: ITS-based XML translation tool License: GPL-3.0-or-later @@ -8,6 +8,8 @@ URL: http://itstool.org/ Source0: http://files.itstool.org/itstool/%{name}-%{version}.tar.bz2 # See: https://github.com/itstool/itstool/issues/25 Patch0: https://sources.debian.org/data/main/i/itstool/2.0.5-2/debian/patches/fix_crash_912099.patch#/%{name}-2.0.5-fix-crash-wrong-encoding.patch +# Filed upstream at https://github.com/itstool/itstool/pull/51 +Patch1: 0001-Fix-insufficiently-quoted-regular-expressions.patch BuildArch: noarch @@ -24,6 +26,7 @@ how to separate it into PO file messages. %prep %setup -q %patch -P0 -p1 -b .encoding +%patch -P1 -p1 -b .py312-regex %build export PYTHON=%{__python3} @@ -41,6 +44,10 @@ export PYTHON=%{__python3} %{_mandir}/man1/itstool.1* %changelog +* Mon Oct 09 2023 Nils Philippsen - 2.0.7-6 +- Fix insufficiently quoted regular expressions which caused excessive warnings + with Python 3.12 + * Mon Aug 21 2023 Parag Nemade - 2.0.7-5 - Migrate to SPDX license expression