]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-139742: Add support for Python 3.14 t-string prefixes in IDLE colorizer and tests...
authorAnuradha Agrawal <paysur2111@gmail.com>
Thu, 9 Oct 2025 09:24:53 +0000 (14:54 +0530)
committerGitHub <noreply@github.com>
Thu, 9 Oct 2025 09:24:53 +0000 (05:24 -0400)
Add 't' prefix to colorizer.py stringprefix regex to support Python 3.14 template strings.
Add t prefixes to test_colorizer.py source test text and adjust line numbers on test methods.
---------

Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Lib/idlelib/colorizer.py
Lib/idlelib/idle_test/test_colorizer.py
Misc/NEWS.d/next/IDLE/2025-10-08-08-35-50.gh-issue-139742.B3fZLg.rst [new file with mode: 0644]

index b4df353012b78805e34d7328c9050af4de9ba289..bffa2ddd3cd9cd2cb6c33143cc9bf0f0e137c704 100644 (file)
@@ -47,7 +47,7 @@ def make_pat():
                    name not in keyword.kwlist]
     builtin = r"([^.'\"\\#]\b|^)" + any("BUILTIN", builtinlist) + r"\b"
     comment = any("COMMENT", [r"#[^\n]*"])
-    stringprefix = r"(?i:r|u|f|fr|rf|b|br|rb)?"
+    stringprefix = r"(?i:r|u|f|fr|rf|b|br|rb|t|rt|tr)?"
     sqstring = stringprefix + r"'[^'\\\n]*(\\.[^'\\\n]*)*'?"
     dqstring = stringprefix + r'"[^"\\\n]*(\\.[^"\\\n]*)*"?'
     sq3string = stringprefix + r"'''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?"
index 308bc389384d33dc8d4bb473b06dc5b5b127c0b6..40800df97b0bd38e6dfcb1b06d80cacb3ff73916 100644 (file)
@@ -36,6 +36,7 @@ source = textwrap.dedent("""\
     # All valid prefixes for unicode and byte strings should be colored.
     r'x', u'x', R'x', U'x', f'x', F'x'
     fr'x', Fr'x', fR'x', FR'x', rf'x', rF'x', Rf'x', RF'x'
+    tr'x', Tr'x', tR'x', TR'x', rt'x', rT'x', Rt'x', RT'x'
     b'x',B'x', br'x',Br'x',bR'x',BR'x', rb'x', rB'x',Rb'x',RB'x'
     # Invalid combinations of legal characters should be half colored.
     ur'x', ru'x', uf'x', fu'x', UR'x', ufr'x', rfu'x', xf'x', fx'x'
@@ -390,19 +391,19 @@ class ColorDelegatorTest(unittest.TestCase):
                     ('6.0', ('KEYWORD',)), ('6.10', ('DEFINITION',)), ('6.11', ()),
                     ('8.0', ('STRING',)), ('8.4', ()), ('8.5', ('STRING',)),
                     ('8.12', ()), ('8.14', ('STRING',)),
-                    ('19.0', ('KEYWORD',)),
-                    ('20.4', ('KEYWORD',)), ('20.16', ('KEYWORD',)),# ('20.19', ('KEYWORD',)),
-                    #('22.4', ('KEYWORD',)), ('22.10', ('KEYWORD',)), ('22.14', ('KEYWORD',)), ('22.19', ('STRING',)),
-                    #('23.12', ('KEYWORD',)),
-                    ('24.8', ('KEYWORD',)),
-                    ('25.4', ('KEYWORD',)), ('25.9', ('KEYWORD',)),
-                    ('25.11', ('KEYWORD',)), ('25.15', ('STRING',)),
-                    ('25.19', ('KEYWORD',)), ('25.22', ()),
-                    ('25.24', ('KEYWORD',)), ('25.29', ('BUILTIN',)), ('25.37', ('KEYWORD',)),
-                    ('26.4', ('KEYWORD',)), ('26.9', ('KEYWORD',)),# ('26.11', ('KEYWORD',)), ('26.14', (),),
-                    ('27.25', ('STRING',)), ('27.38', ('STRING',)),
-                    ('29.0', ('STRING',)),
-                    ('30.1', ('STRING',)),
+                    ('20.0', ('KEYWORD',)),
+                    ('21.4', ('KEYWORD',)), ('21.16', ('KEYWORD',)),# ('21.19', ('KEYWORD',)),
+                    #('23.4', ('KEYWORD',)), ('23.10', ('KEYWORD',)), ('23.14', ('KEYWORD',)), ('23.19', ('STRING',)),
+                    #('24.12', ('KEYWORD',)),
+                    ('25.8', ('KEYWORD',)),
+                    ('26.4', ('KEYWORD',)), ('26.9', ('KEYWORD',)),
+                    ('26.11', ('KEYWORD',)), ('26.15', ('STRING',)),
+                    ('26.19', ('KEYWORD',)), ('26.22', ()),
+                    ('26.24', ('KEYWORD',)), ('26.29', ('BUILTIN',)), ('26.37', ('KEYWORD',)),
+                    ('27.4', ('KEYWORD',)), ('27.9', ('KEYWORD',)),# ('27.11', ('KEYWORD',)), ('27.14', (),),
+                    ('28.25', ('STRING',)), ('28.38', ('STRING',)),
+                    ('30.0', ('STRING',)),
+                    ('31.1', ('STRING',)),
                     # SYNC at the end of every line.
                     ('1.55', ('SYNC',)), ('2.50', ('SYNC',)), ('3.34', ('SYNC',)),
                    )
@@ -433,7 +434,7 @@ class ColorDelegatorTest(unittest.TestCase):
         eq(text.tag_nextrange('STRING', '8.12'), ('8.14', '8.17'))
         eq(text.tag_nextrange('STRING', '8.17'), ('8.19', '8.26'))
         eq(text.tag_nextrange('SYNC', '8.0'), ('8.26', '9.0'))
-        eq(text.tag_nextrange('SYNC', '30.0'), ('30.10', '32.0'))
+        eq(text.tag_nextrange('SYNC', '31.0'), ('31.10', '33.0'))
 
     def _assert_highlighting(self, source, tag_ranges):
         """Check highlighting of a given piece of code.
diff --git a/Misc/NEWS.d/next/IDLE/2025-10-08-08-35-50.gh-issue-139742.B3fZLg.rst b/Misc/NEWS.d/next/IDLE/2025-10-08-08-35-50.gh-issue-139742.B3fZLg.rst
new file mode 100644 (file)
index 0000000..c9e2f97
--- /dev/null
@@ -0,0 +1 @@
+Colorize t-string prefixes for template strings in IDLE, as done for f-string prefixes.