Ctrl K
ComunidadGuías…

app/masking/surrogate_generator.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
from __future__ import annotations

from collections import defaultdict


class SurrogateGenerator:
    """Generate deterministic, obviously synthetic values for one request."""

    def __init__(self) -> None:
        self._counters: defaultdict[str, int] = defaultdict(int)

    def generate(self, entity_type: str) -> str:
        self._counters[entity_type] += 1
        index = self._counters[entity_type]
        generators = {
            "PERSON": lambda value: f"Demo Person {value}",
            "ORG": lambda value: f"Example Organization {value}",
            "EMAIL": lambda value: f"demo.{value}@example.test",
            "PHONE": lambda value: f"+1 202-555-{value % 10_000:04d} ext {value}",
            "IP_ADDRESS": lambda value: f"198.51.{(value // 254) % 254}.{value % 254 + 1}",
            "DOMAIN": lambda value: f"demo-{value}.example.test",
            "URL": lambda value: f"https://example.test/resource/{value}",
            "API_KEY": lambda value: f"sk-test-maskgate-{value:024d}",
            "FILE_PATH": lambda value: rf"C:\MaskGate\Synthetic\file-{value}.txt",
            "MONEY": lambda value: f"${value:,}.00",
            "CARD_NUMBER": lambda value: f"0000 0000 {value // 10_000:04d} {value % 10_000:04d}",
            "BANK": lambda value: f"Example Bank {value}",
            "LOCATION": lambda value: f"Example Location {value}",
        }
        generator = generators.get(
            entity_type,
            lambda value: f"Synthetic {entity_type.title()} {value}",
        )
        return generator(index)