Исходный код domain.value_objects.mac_address

from dataclasses import dataclass
import re


[документация] @dataclass(frozen=True) class MacAddress: '''Value object representing a MAC address.''' value: str def __post_init__(self): if not self.is_valid(self.value): raise ValueError(f"Invalid MAC address: {self.value}") object.__setattr__(self, 'value', self.normalize(self.value))
[документация] def is_valid(self, mac: str) -> bool: '''Validate the MAC address format.''' pattern = r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' return bool(re.match(pattern, mac))
[документация] def normalize(self, mac: str) -> str: '''Normalize the MAC address to a standard format (lowercase, colon-separated).''' clean_mac = re.sub(r'[^0-9A-Fa-f]', '', mac).lower() return ':'.join(clean_mac[i:i+2] for i in range(0, 12, 2))