From a32cd450dfb5fb7bc9d0e1150d99a16e19264c02 Mon Sep 17 00:00:00 2001 From: Kaushik Kulkarni Date: Sat, 24 Apr 2021 14:53:37 -0500 Subject: [PATCH] infer counter if not already present in UniqueNameGenerator's state --- pytools/__init__.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/pytools/__init__.py b/pytools/__init__.py index 688c9cd..926d4c7 100644 --- a/pytools/__init__.py +++ b/pytools/__init__.py @@ -2125,6 +2125,9 @@ def generate_unique_names(prefix): try_num += 1 +UNIQUE_NAME_GEN_COUNTER_RE = re.compile(r"^(?P\w+)_(?P\d+)$") + + def generate_numbered_unique_names( prefix: str, num: Optional[int] = None) -> Iterable[Tuple[int, str]]: if num is None: @@ -2189,6 +2192,17 @@ class UniqueNameGenerator: counter = self.prefix_to_counter.get(based_on, None) + # {{{ try to get counter from based_on if not already present + + if counter is None: + counter_match = UNIQUE_NAME_GEN_COUNTER_RE.match(based_on) + + if counter_match: + based_on = counter_match.groupdict()["based_on"] + counter = int(counter_match.groupdict()["counter"]) + + # }}} + for counter, var_name in generate_numbered_unique_names(based_on, counter): if not self.is_name_conflicting(var_name): break -- GitLab