From 5e60cffcfe984d9e231da256c082a73ca9b10475 Mon Sep 17 00:00:00 2001 From: Jorge Juarez Date: Tue, 10 Mar 2026 01:13:11 +0000 Subject: [PATCH] refactor(governance): type annotate forbidden emojis and reuse regex pattern --- src/va_agent/governance.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/va_agent/governance.py b/src/va_agent/governance.py index 27936e0..a94212f 100644 --- a/src/va_agent/governance.py +++ b/src/va_agent/governance.py @@ -4,7 +4,7 @@ import json import logging import re -from typing import Literal +from typing import Literal, cast from google.adk.agents.callback_context import CallbackContext from google.adk.models import LlmRequest, LlmResponse @@ -22,7 +22,7 @@ from .config import settings logger = logging.getLogger(__name__) -FORBIDDEN_EMOJIS = [ +FORBIDDEN_EMOJIS: list[str] = [ "🄵", "šŸ”Ŗ", "šŸŽ°", @@ -144,11 +144,18 @@ Devuelve un JSON con la siguiente estructura: person_pattern = r"(?:šŸ§‘|šŸ‘©|šŸ‘Ø)" tone_pattern = r"[\U0001F3FB-\U0001F3FF]?" + emoji_separator: str = "|" + sorted_emojis = cast( + "list[str]", sorted(FORBIDDEN_EMOJIS, key=len, reverse=True) + ) + escaped_emojis = [re.escape(emoji) for emoji in sorted_emojis] + emoji_pattern = emoji_separator.join(escaped_emojis) + # Unique pattern that combines all forbidden emojis, including skin tones and compound emojis return re.compile( rf"{person_pattern}{tone_pattern}\u200dā¤ļø?\u200dšŸ’‹\u200d{person_pattern}{tone_pattern}" # kissers rf"|{person_pattern}{tone_pattern}\u200dā¤ļø?\u200d{person_pattern}{tone_pattern}" # lovers - rf"|{'|'.join(map(re.escape, sorted(FORBIDDEN_EMOJIS, key=len, reverse=True)))}" # simple emojis + rf"|{emoji_pattern}" # simple emojis rf"|šŸ–•{tone_pattern}" # middle finger with all skin tone variations )