Основные модули¶
В этом разделе описаны основные модули библиотеки 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¶
Конфигурация паттерна генерации.
Атрибуты¶
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¶
Проверяет корректность регулярного выражения.
pattern: Строка с регулярным выражением
fucktar.default_patterns¶
Модуль встроенных паттернов.
Подмодули¶
users: Паттерны пользовательских данныхnetwork: Сетевые паттерныgeo: Географические паттерныdate: Паттерны даты и времениsystem: Системные паттерны