From cb3e52829b601ae574ce0178f58e605e7a37f2b3 Mon Sep 17 00:00:00 2001 From: Saugat Pachhai Date: Fri, 20 Nov 2020 14:31:16 +0545 Subject: [PATCH] interpolation: support `[]` indices syntax (#4918) Via pyparsing. The error message is not that great, as it's greedy. But, it does point out where the mistakes are, correctly most of the time. :) Also raises appropriate error messages for ParseError --- dvc/parsing/interpolate.py | 57 ++++++++++++++++++++++++++++++++++++-- setup.py | 1 + 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/dvc/parsing/interpolate.py b/dvc/parsing/interpolate.py index 18cb3a735..0bbe3f3e3 100644 --- a/dvc/parsing/interpolate.py +++ b/dvc/parsing/interpolate.py @@ -1,22 +1,48 @@ import re import typing +from pyparsing import ( + CharsNotIn, + ParseException, + ParserElement, + Suppress, + ZeroOrMore, +) + +from dvc.exceptions import DvcException + if typing.TYPE_CHECKING: from typing import List, Match from .context import Context +LBRACK = "[" +RBRACK = "]" +PERIOD = "." KEYCRE = re.compile( r""" (?=3.0.5", "dictdiffer>=0.8.1", "python-benedict>=0.21.1", + "pyparsing==2.4.7", ]