From 83e78e6834e2e2ae7a22b3267400c6e6e0555474 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 19 Jul 2026 06:39:23 +0000 Subject: [PATCH] perf: cache regex compilation in custom_recognizer _parse_rules Co-authored-by: zrt219 <199104500+zrt219@users.noreply.github.com> --- openmed/openmed/core/custom_recognizer.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openmed/openmed/core/custom_recognizer.py b/openmed/openmed/core/custom_recognizer.py index a916536..c8085d9 100644 --- a/openmed/openmed/core/custom_recognizer.py +++ b/openmed/openmed/core/custom_recognizer.py @@ -368,6 +368,7 @@ def _parse_rules( ) -> tuple[_CompiledRule, ...]: entries = _expand_entries(values, require_label=require_label) rules = [] + _compiled: dict[tuple[str, int], re.Pattern[str]] = {} for index, (entry, default_label) in enumerate(entries): raw_value, label, entry_case_sensitive, confidence, rule_id = _parse_entry( entry, @@ -379,12 +380,15 @@ def _parse_rules( ) pattern = re.escape(raw_value) if kind.endswith("_term") else raw_value flags = 0 if entry_case_sensitive else re.IGNORECASE + cache_key = (pattern, flags) + if cache_key not in _compiled: + _compiled[cache_key] = re.compile(pattern, flags) rules.append( _CompiledRule( kind=kind, label=label, rule_id=rule_id, - pattern=re.compile(pattern, flags), + pattern=_compiled[cache_key], confidence=confidence, ) )