From 818b2eeaa922143eab7588389b2b44e326819bb0 Mon Sep 17 00:00:00 2001 From: Andrew El-Kadi Date: Tue, 28 Oct 2025 11:47:10 -0700 Subject: [PATCH] Allow negative indices in `daglish_extensions.parse_path`. PiperOrigin-RevId: 825139895 --- fiddle/_src/daglish_extensions.py | 2 +- fiddle/_src/daglish_extensions_test.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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)