from __future__ import annotations import re from dataclasses import dataclass ADDRESS = re.compile(r"^@([a-z0-9][a-z0-9._-]*):(?:[ \t]*)(.+)$", re.IGNORECASE) @dataclass(frozen=True) class RoutedMessage: target_repo: str body: str def parse_address_line(line: str) -> RoutedMessage | None: """Parse one complete direct-address line; ordinary input returns None.""" match = ADDRESS.match(line.rstrip("\r\n")) if not match: return None return RoutedMessage(target_repo=match.group(1), body=match.group(2))