mirror of
https://github.com/python/cpython.git
synced 2025-11-24 12:20:42 +00:00
[3.14] gh-139742: Add support for Python 3.14 t-string prefixes in IDLE colorizer and tests (GH-139756) (#139831)
gh-139742: Add support for Python 3.14 t-string prefixes in IDLE colorizer and tests (GH-139756)
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.
---------
(cherry picked from commit 6fd1418341)
Co-authored-by: Anuradha Agrawal <paysur2111@gmail.com>
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>
This commit is contained in:
parent
08faef865c
commit
342b644bd2
3 changed files with 17 additions and 15 deletions
|
|
@ -47,7 +47,7 @@ def make_pat():
|
||||||
name not in keyword.kwlist]
|
name not in keyword.kwlist]
|
||||||
builtin = r"([^.'\"\\#]\b|^)" + any("BUILTIN", builtinlist) + r"\b"
|
builtin = r"([^.'\"\\#]\b|^)" + any("BUILTIN", builtinlist) + r"\b"
|
||||||
comment = any("COMMENT", [r"#[^\n]*"])
|
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]*)*'?"
|
sqstring = stringprefix + r"'[^'\\\n]*(\\.[^'\\\n]*)*'?"
|
||||||
dqstring = stringprefix + r'"[^"\\\n]*(\\.[^"\\\n]*)*"?'
|
dqstring = stringprefix + r'"[^"\\\n]*(\\.[^"\\\n]*)*"?'
|
||||||
sq3string = stringprefix + r"'''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?"
|
sq3string = stringprefix + r"'''[^'\\]*((\\.|'(?!''))[^'\\]*)*(''')?"
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ source = textwrap.dedent("""\
|
||||||
# All valid prefixes for unicode and byte strings should be colored.
|
# All valid prefixes for unicode and byte strings should be colored.
|
||||||
r'x', u'x', R'x', U'x', f'x', F'x'
|
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'
|
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'
|
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.
|
# 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'
|
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', ()),
|
('6.0', ('KEYWORD',)), ('6.10', ('DEFINITION',)), ('6.11', ()),
|
||||||
('8.0', ('STRING',)), ('8.4', ()), ('8.5', ('STRING',)),
|
('8.0', ('STRING',)), ('8.4', ()), ('8.5', ('STRING',)),
|
||||||
('8.12', ()), ('8.14', ('STRING',)),
|
('8.12', ()), ('8.14', ('STRING',)),
|
||||||
('19.0', ('KEYWORD',)),
|
('20.0', ('KEYWORD',)),
|
||||||
('20.4', ('KEYWORD',)), ('20.16', ('KEYWORD',)),# ('20.19', ('KEYWORD',)),
|
('21.4', ('KEYWORD',)), ('21.16', ('KEYWORD',)),# ('21.19', ('KEYWORD',)),
|
||||||
#('22.4', ('KEYWORD',)), ('22.10', ('KEYWORD',)), ('22.14', ('KEYWORD',)), ('22.19', ('STRING',)),
|
#('23.4', ('KEYWORD',)), ('23.10', ('KEYWORD',)), ('23.14', ('KEYWORD',)), ('23.19', ('STRING',)),
|
||||||
#('23.12', ('KEYWORD',)),
|
#('24.12', ('KEYWORD',)),
|
||||||
('24.8', ('KEYWORD',)),
|
('25.8', ('KEYWORD',)),
|
||||||
('25.4', ('KEYWORD',)), ('25.9', ('KEYWORD',)),
|
('26.4', ('KEYWORD',)), ('26.9', ('KEYWORD',)),
|
||||||
('25.11', ('KEYWORD',)), ('25.15', ('STRING',)),
|
('26.11', ('KEYWORD',)), ('26.15', ('STRING',)),
|
||||||
('25.19', ('KEYWORD',)), ('25.22', ()),
|
('26.19', ('KEYWORD',)), ('26.22', ()),
|
||||||
('25.24', ('KEYWORD',)), ('25.29', ('BUILTIN',)), ('25.37', ('KEYWORD',)),
|
('26.24', ('KEYWORD',)), ('26.29', ('BUILTIN',)), ('26.37', ('KEYWORD',)),
|
||||||
('26.4', ('KEYWORD',)), ('26.9', ('KEYWORD',)),# ('26.11', ('KEYWORD',)), ('26.14', (),),
|
('27.4', ('KEYWORD',)), ('27.9', ('KEYWORD',)),# ('27.11', ('KEYWORD',)), ('27.14', (),),
|
||||||
('27.25', ('STRING',)), ('27.38', ('STRING',)),
|
('28.25', ('STRING',)), ('28.38', ('STRING',)),
|
||||||
('29.0', ('STRING',)),
|
('30.0', ('STRING',)),
|
||||||
('30.1', ('STRING',)),
|
('31.1', ('STRING',)),
|
||||||
# SYNC at the end of every line.
|
# SYNC at the end of every line.
|
||||||
('1.55', ('SYNC',)), ('2.50', ('SYNC',)), ('3.34', ('SYNC',)),
|
('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.12'), ('8.14', '8.17'))
|
||||||
eq(text.tag_nextrange('STRING', '8.17'), ('8.19', '8.26'))
|
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', '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):
|
def _assert_highlighting(self, source, tag_ranges):
|
||||||
"""Check highlighting of a given piece of code.
|
"""Check highlighting of a given piece of code.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Colorize t-string prefixes for template strings in IDLE, as done for f-string prefixes.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue