When using python-hcl2 6.0.0 string like:
"arn:aws:iam::123456789012:user/$${aws:username}",
raise errors when parsed.
For Terraform escaping the dollar sign is a common occurrence, so this feels rather critical.
Partial exception trace:
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/hcl2/api.py", line 28, in loads
tree = parser().parse(text + "\n")
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/lark.py", line 655, in parse
return self.parser.parse(text, start=start, on_error=on_error)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parser_frontends.py", line 104, in parse
return self.parser.parse(stream, chosen_start, **kw)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 42, in parse
return self.parser.parse(lexer, start)
~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 88, in parse
return self.parse_from_state(parser_state)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 111, in parse_from_state
raise e
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser.py", line 102, in parse_from_state
state.feed_token(token)
~~~~~~~~~~~~~~~~^^^^^^^
File "/Users/igor.serko/code/test_python_hcl2/.venv/lib/python3.13/site-packages/lark/parsers/lalr_parser_state.py", line 80, in feed_token
raise UnexpectedToken(token, expected, state=self, interactive_parser=None)
lark.exceptions.UnexpectedToken: Unexpected token Token('COLON', ':') at line 8, column 44.
Expected one of:
* RBRACE
* BINARY_OP
* QMARK
Test script and full exception available at
https://gist.github.com/iserko/264e93178a4b2f6d408d78572c794b36
When I downgrade to 5.1.1 my test input is parsed correctly:
{'data': [{'aws_iam_policy_document': {'my_doc': {'statement': [{'sid': '', 'effect': 'Allow', 'resources': ['arn:aws:iam::123456789012:mfa/$${aws:username}', 'arn:aws:iam::123456789012:user/$${aws:username}'], 'actions': ['iam:List*']}]}}}]}
When using python-hcl2 6.0.0 string like:
raise errors when parsed.
For Terraform escaping the dollar sign is a common occurrence, so this feels rather critical.
Partial exception trace:
Test script and full exception available at
https://gist.github.com/iserko/264e93178a4b2f6d408d78572c794b36
When I downgrade to 5.1.1 my test input is parsed correctly: