Перейти к содержанию

Основные модули

В этом разделе описаны основные модули библиотеки FUCKTAR.

fucktar.generator

Основной модуль, содержащий классы для генерации данных.

Классы

ModelGenerator

Генератор экземпляров модели на основе аннотаций типов, регулярных выражений и значений по умолчанию.

class ModelGenerator(Generic[T]):
    def __init__(
        self, model: type[T], patterns: dict[str, str], defaults: dict[str, Any]
    ) -> None:
        pass

    def generate(self) -> T:
        pass
Методы
  • __init__(self, model: type[T], patterns: dict[str, str], defaults: dict[str, Any]) - Инициализация генератора
  • model: Dataclass-модель, экземпляры которой нужно генерировать
  • patterns: Словарь {поле: регулярное выражение}
  • defaults: Значения по умолчанию для полей

  • generate(self) -> T - Генерирует один экземпляр модели

BasePattern

Базовый класс для описания паттернов генерации моделей.

class BasePattern(Generic[T]):
    model: ClassVar[type]
    pattern_config: PatternConfig | None = None

    def __init__(self) -> None:
        pass

    def configure(self, unique: bool = False, ignore_count: bool = False) -> Self:
        pass

    def default_values(self, **kwargs: Any) -> Self:
        pass

    def generate(
        self, count: int = 1, max_attempts: int = 1000, timeout: int = 30
    ) -> T | list[T] | None:
        pass
Атрибуты
  • model: Тип модели, определяется автоматически из Generic[T]
  • pattern_config: Конфигурация паттерна, должна быть определена в подклассе
Методы
  • __init__(self) - Инициализация конфигурации паттерна

  • configure(self, unique: bool = False, ignore_count: bool = False) -> Self - Конфигурация режима генерации

  • unique: Генерировать только уникальные объекты
  • ignore_count: Если True — вернуть то, что удалось сгенерировать, даже если объектов меньше, чем запрошено

  • default_values(self, **kwargs: Any) -> Self - Устанавливает значения по умолчанию для полей модели

  • kwargs: field=value

  • generate(self, count: int = 1, max_attempts: int = 1000, timeout: int = 30) -> T | list[T] | None - Генерирует объекты модели с учетом уникальности и истории

  • count: Количество объектов для генерации
  • max_attempts: Максимальное число неудачных попыток генерации уникального объекта подряд
  • timeout: Таймаут генерации в секундах

fucktar.config

Модуль конфигурации паттернов.

Классы

PatternConfig

Конфигурация паттерна генерации.

@dataclass
class PatternConfig:
    scope: str
    unique_fields: list[str]
Атрибуты
  • scope: Имя области видимости для хранения истории генерации
  • unique_fields: Список полей, по которым проверяется уникальность

fucktar.exceptions

Модуль исключений.

Классы

GeneratorError

Базовая ошибка генератора.

UniqueGenerationError

Не удалось сгенерировать уникальные объекты.

StorageError

Ошибка при работе со ScopeStorage.

PatternGenerationError

Ошибка написания регулярного выражения.

TimeoutGenerationError

Закончилось время на генерацию.

PatternConfigError

Не задана конфигурация для паттерна.

PatternValueError

Диапазон для генерации выбран неверно, исправьте регулярное выражение.

fucktar.signature

Модуль сервиса сигнатур.

Классы

SignatureService

Сервис для формирования сигнатур объектов.

Методы
  • composite(obj_dict: dict[str, Any], fields: list[str]) -> str - Формирует сигнатуру объекта по указанным полям
  • obj_dict: Словарь с данными объекта
  • fields: Список полей, которые участвуют в формировании сигнатуры

fucktar.storage

Модуль хранилища истории генерации.

Классы

ScopeHistory

Хранилище сигнатур ранее сгенерированных объектов в рамках одного scope.

Методы
  • __init__(self) - Инициализация пустой истории сигнатур

  • exists(self, sig: str) -> bool - Проверяет наличие сигнатуры в истории

  • sig: Сигнатура объекта

  • add(self, sig: str) -> None - Добавляет сигнатуру в историю

  • sig: Сигнатура объекта

ScopeStorage

Контекстный менеджер для хранения истории генерации в jsonl-файле.

Методы
  • __init__(self, path: Path) - Инициализация хранилища
  • path: Путь к файлу scope (без расширения .jsonl)

  • __enter__(self) -> Self - Открывает файл и устанавливает эксклюзивную блокировку

  • __exit__(self, *_: Any) -> None - Снимает блокировку и закрывает файл

  • load_history(self) -> ScopeHistory - Загружает историю сигнатур из файла

  • append(self, entries: list[dict[Any, Any]]) -> None - Добавляет новые записи в файл истории

  • entries: Список записей для добавления

  • remove(cls, scope_name: str) -> None - Удаляет файл определенного scope

  • scope_name: Имя scope (без расширения)

  • clear_all(cls) -> None - Удаляет все файлы .jsonl из папки .generator_scopes

fucktar.utils

Модуль утилит.

Функции

validate_regex

Проверяет корректность регулярного выражения.

def validate_regex(pattern: str) -> bool:
    pass
  • pattern: Строка с регулярным выражением

fucktar.default_patterns

Модуль встроенных паттернов.

Подмодули

  • users: Паттерны пользовательских данных
  • network: Сетевые паттерны
  • geo: Географические паттерны
  • date: Паттерны даты и времени
  • system: Системные паттерны