Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .jules/bolt.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,3 +77,7 @@
## 2024-11-20 - Optimize multiple tuple generation from a single collection
**Learning:** `build_rule_metadata` derives exactly two collections, `owasp` and `cwe`, from the same references. Replacing its two generator traversals with one explicit loop reduces element visits from about 2N to N. Both versions remain O(N), so this is a constant-factor optimization rather than an asymptotic complexity improvement.
**Action:** Combine repeated traversal when fixed derived collections share one source, while preserving ordering and classification semantics. Benchmark the production hot path before claiming a material wall-clock improvement.

## 2024-11-20 - Reduce dict.fromkeys generator overhead
**Learning:** Using `dict.fromkeys()` with generator expressions incurs significant generator overhead and frame allocation in hot paths compared to explicit loops building a dictionary (`seen = {}`).
**Action:** Replace `dict.fromkeys(item for ...)` with explicit loops and dictionary assignments (`seen[item] = None`) when deduplicating items while maintaining order in high-throughput functions.
21 changes: 10 additions & 11 deletions appguardrail_core/rules.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,12 +106,10 @@ 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."""
return tuple(
dict.fromkeys(
" ".join(match.group(1).split())
for match in REFERENCE_RE.finditer(message or "")
)
)
seen = {}
for match in REFERENCE_RE.finditer(message or ""):
seen[" ".join(match.group(1).split())] = None
return tuple(seen)
Comment on lines +109 to +112

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Reference semantics remain equivalent

Duplicate assignment retains each key's first position. tuple(seen) therefore preserves normalization, ordering, and deduplication from the prior implementation.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.



def _category_for_references(references: tuple[str, ...], fallback: str) -> str:
Expand Down Expand Up @@ -174,8 +172,9 @@ def validate_rule_metadata(metadata: RuleMetadata | dict[str, Any]) -> list[str]


def _merge_references(*groups: tuple[str, ...]) -> tuple[str, ...]:
return tuple(
dict.fromkeys(
reference for group in groups for reference in group if reference
)
)
seen = {}
for group in groups:
for reference in group:
if reference:
seen[reference] = None
return tuple(seen)
Comment on lines +175 to +180

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Falsey references remain excluded

The explicit if reference retains the prior filter. Nested iteration also preserves group order and first-seen deduplication.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Loading