codex / src /services /temp_mail_addressing.py
webhook's picture
Upload 137 files
89419ea verified
Raw History Blame Contribute Delete
1.11 kB
"""Helpers for Temp-Mail local-part generation and domain choice."""
from __future__ import annotations
import random
import string
from typing import Optional, Sequence
def _rng(rng: Optional[random.Random] = None) -> random.Random:
return rng or random.SystemRandom()
def generate_local_part(*, enable_prefix: bool = False, rng: Optional[random.Random] = None) -> str:
"""Generate a variable-length alphanumeric local-part.
Keeps the previous style (letters+digits+letters), but defaults to no tmp prefix.
"""
r = _rng(rng)
letters = ''.join(r.choices(string.ascii_lowercase, k=5))
digits = ''.join(r.choices(string.digits, k=r.randint(1, 3)))
suffix = ''.join(r.choices(string.ascii_lowercase, k=r.randint(1, 3)))
base = f"{letters}{digits}{suffix}"
return f"tmp{base}" if enable_prefix else base
def choose_domain(domains: Sequence[str], *, rng: Optional[random.Random] = None) -> str:
"""Choose one domain from candidate pool."""
if not domains:
raise ValueError("domains is empty")
r = _rng(rng)
return r.choice(list(domains))