From 7db73d2ac3249e65e5861c131d349aaaa1c4cee9 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Wed, 8 Jul 2026 19:10:19 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20Optimize=20list=20deduplica?= =?UTF-8?q?tion=20using=20dict.fromkeys()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces O(N^2) list iteration with O(N) dict.fromkeys() for order-preserving deduplication in appguardrail_core/rules.py. --- appguardrail_core/rules.py | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/appguardrail_core/rules.py b/appguardrail_core/rules.py index 87180a8..9434199 100644 --- a/appguardrail_core/rules.py +++ b/appguardrail_core/rules.py @@ -90,12 +90,13 @@ def as_dict(self) -> dict[str, Any]: def extract_public_references(message: str) -> tuple[str, ...]: """Extract OWASP, CWE, and CVE references already embedded in rule copy.""" - seen: list[str] = [] - for match in REFERENCE_RE.finditer(message or ""): - reference = " ".join(match.group(1).split()) - if reference not in seen: - seen.append(reference) - return tuple(seen) + # ⚡ Bolt: Optimize list deduplication using dict.fromkeys for O(N) complexity + return tuple( + dict.fromkeys( + " ".join(match.group(1).split()) + for match in REFERENCE_RE.finditer(message or "") + ) + ) def build_rule_metadata( @@ -140,9 +141,9 @@ def validate_rule_metadata(metadata: RuleMetadata | dict[str, Any]) -> list[str] def _merge_references(*groups: tuple[str, ...]) -> tuple[str, ...]: - merged: list[str] = [] - for group in groups: - for reference in group: - if reference and reference not in merged: - merged.append(reference) - return tuple(merged) + # ⚡ Bolt: Optimize list deduplication using dict.fromkeys for O(N) complexity + return tuple( + dict.fromkeys( + reference for group in groups for reference in group if reference + ) + )