diff --git a/fiddle/_src/daglish_extensions.py b/fiddle/_src/daglish_extensions.py index b65b474d..4f37ab4e 100644 --- a/fiddle/_src/daglish_extensions.py +++ b/fiddle/_src/daglish_extensions.py @@ -122,7 +122,7 @@ def is_unshareable(value: Any) -> bool: "|".join([ r"\.(?P[\w_]+)", # future improvement: support escape sequences. - r"\[(?P\d+|'[^']+'|\"[^\"]+\")\]", + r"\[(?P-?\d+|'[^']+'|\"[^\"]+\")\]", ]) ) ) diff --git a/fiddle/_src/daglish_extensions_test.py b/fiddle/_src/daglish_extensions_test.py index 5925f2d9..8ac5a1c1 100644 --- a/fiddle/_src/daglish_extensions_test.py +++ b/fiddle/_src/daglish_extensions_test.py @@ -94,6 +94,14 @@ def fn(x: int) -> int: daglish.Key("bar"), ), }, + { + "path": "[-1][0].foo", + "expected": ( + daglish.Key(-1), + daglish.Key(0), + daglish.Attr("foo"), + ), + }, ) def test_parse_path(self, path, expected): actual = daglish_extensions.parse_path(path)