remove support for double braces (#5476)

This commit is contained in:
Saugat Pachhai
2021-02-16 17:21:47 +02:00
committed by GitHub
parent 66f24b8708
commit d28f5675b4
2 changed files with 8 additions and 17 deletions
+6 -6
View File
@@ -22,11 +22,10 @@ RBRACK = "]"
PERIOD = "."
KEYCRE = re.compile(
r"""
(?<!\\) # escape \${} or ${{}}
\$ # starts with $
(?:({{)|({)) # either starts with double braces or single
(.*?) # match every char inside
(?(1)}})(?(2)}) # end with same kinds of braces it opened with
(?<!\\) # escape \${}
\${ # starts with ${
(?P<inner>.*?) # match every char inside
} # end with {
""",
re.VERBOSE,
)
@@ -137,6 +136,7 @@ def parse_expr(s: str):
result = get_parser().parseString(s, parseAll=True)
except ParseException as exc:
format_and_raise_parse_error(exc)
raise AssertionError("unreachable")
joined = result.asList()
assert len(joined) == 1
@@ -144,7 +144,7 @@ def parse_expr(s: str):
def get_expression(match: "Match", skip_checks: bool = False):
_, _, inner = match.groups()
inner = match["inner"]
return inner if skip_checks else parse_expr(inner)
+2 -11
View File
@@ -6,13 +6,7 @@ from dvc.parsing.context import Context, recurse_not_a_node
@pytest.mark.parametrize(
"template, var",
[
("${value}", "value"),
("${{item}}", "item"),
("${ item }", "item"),
("${{ value }}", "value"),
],
"template, var", [("${value}", "value"), ("${ item }", "item")],
)
@pytest.mark.parametrize(
"data", [True, 12, pi, None, False, 0, "0", "123", "Foobar", "", inf, 3e4]
@@ -26,10 +20,7 @@ def test_resolve_primitive_values(data, template, var):
"template, expected",
[
(r"\${value}", "${value}"),
(r"\${{value}}", "${{value}}"),
(r"\${ value }", "${ value }"),
(r"\${{ value }}", "${{ value }}"),
(r"\${{ value }} days", "${{ value }} days"),
(r"\${ value } days", "${ value } days"),
(r"Month of \${value}", "Month of ${value}"),
(r"May the \${value} be with you", "May the ${value} be with you"),
@@ -39,7 +30,7 @@ def test_resolve_primitive_values(data, template, var):
),
],
)
def test_escape(template, expected, mocker):
def test_escape(template, expected):
context = Context({"value": "value"})
assert context.resolve(template) == expected