Skip to content

Commit dcc211c

Browse files
committed
Revert "Update parsetree.py removed "?" from for x in re.compile(r"(\${.+})" …"
This reverts part of commit 042a63f. Reverted the fix for 🎫`400` as it caused new issues when traversing some bracketed situations. Fixes: #401 Change-Id: I6310c4cc91bfce2852a91a7b5db88eb652ae9e38
1 parent c9c0534 commit dcc211c

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

doc/build/changelog.rst

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ Changelog
1111
:include_notes_from: unreleased
1212

1313
.. changelog::
14-
:version: 1.3.4
14+
:version: 1.3.4 (yanked)
1515
:released: Mon May 13 2024
1616

1717
.. change::
18-
:tags: bug, parser
18+
:tags: bug, lexer
1919
:tickets: 398
2020

2121
Fixed regression caused by the fix for :ticket:`320` where new logic added
@@ -31,6 +31,9 @@ Changelog
3131
dictionary literals, would fail to be interpreted correctly even though the
3232
initial parsing is correct. Pull request courtesy Jose Galvez.
3333

34+
.. note:: this change was **reverted** and release 1.3.4 was yanked as
35+
this fix caused regressions.
36+
3437
.. changelog::
3538
:version: 1.3.3
3639
:released: Wed Apr 10 2024

doc/build/unreleased/400.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.. change::
2+
:tags: bug, lexer, regression
3+
:tickets: 400, 401
4+
5+
Reverted the fix for :ticket:`400` as it caused new issues when traversing
6+
some bracketed situations.
7+

mako/parsetree.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,10 +322,10 @@ def _parse_attributes(self, expressions, nonexpressions):
322322
for key in self.attributes:
323323
if key in expressions:
324324
expr = []
325-
for x in re.compile(r"(\${.+})", re.S).split(
325+
for x in re.compile(r"(\${.+?})", re.S).split(
326326
self.attributes[key]
327327
):
328-
m = re.compile(r"^\${(.+)}$", re.S).match(x)
328+
m = re.compile(r"^\${(.+?)}$", re.S).match(x)
329329
if m:
330330
code = ast.PythonCode(
331331
m.group(1).rstrip(), **self.exception_kwargs

test/test_lexer.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,25 @@ def test_tricky_expression(self):
810810
),
811811
)
812812

813-
def test_dict_expression(self):
813+
def test_dict_expression_issue_400_regression(self):
814+
"""test for issue #401.
815+
816+
This was the regression case for #400
817+
818+
"""
819+
template = '<%include file="${foo}${bar}"/>'
820+
821+
nodes = Lexer(template).parse()
822+
self._compare(
823+
nodes,
824+
TemplateNode(
825+
{},
826+
[IncludeTag("include", {"file": "${foo}${bar}"}, (1, 1), [])],
827+
),
828+
)
829+
830+
def _dont_test_dict_expression_issue_400(self):
831+
"""test for issue #400"""
814832
template = """
815833
<%def name="dtest(d)">
816834
% for k,v in d.items():
@@ -868,7 +886,8 @@ def test_dict_expression(self):
868886
),
869887
)
870888

871-
def test_dict_expression_2(self):
889+
def _dont_test_dict_expression_2_issue_400(self):
890+
"""test for issue #400"""
872891
template = """
873892
<%def name="thing(thing)">
874893
${type(thing)}

0 commit comments

Comments
 (0)