Основы генерации¶
В этом разделе рассматриваются основные принципы работы с библиотекой FUCKTAR.
Создание модели данных¶
Первым шагом в работе с FUCKTAR является создание модели данных с использованием dataclass:
from dataclasses import dataclass
@dataclass
class User:
first_name: str
last_name: str
email: str
age: int
Создание паттерна генерации¶
После создания модели необходимо определить паттерн генерации, который будет описывать, как генерировать данные для каждого поля:
from fucktar.generator import BasePattern
from fucktar.config import PatternConfig
from fucktar.default_patterns.users import UserRuPatterns
class UserPatterns(BasePattern[User]):
first_name = UserRuPatterns.first_name
last_name = UserRuPatterns.last_name
email = UserRuPatterns.email
age = r"^[1-9][0-9]$" # Возраст от 10 до 99 лет
pattern_config = PatternConfig(
scope="users",
unique_fields=["email"]
)
Генерация данных¶
После определения паттерна можно начинать генерацию данных:
# Генерация одного объекта
user = UserPatterns().generate()
# Генерация нескольких объектов
users = UserPatterns().generate(count=10)
Типы полей¶
FUCKTAR поддерживает различные типы полей в моделях данных:
Строковые поля¶
Строковые поля генерируются на основе регулярных выражений:
class ProductPatterns(BasePattern[Product]):
name = r"^[A-Z][a-z]{5,20} [A-Z][a-z]{3,15}$"
description = r"^[A-Za-z0-9 .,!?]{10,200}$"
Числовые поля¶
Числовые поля могут быть представлены как строки в регулярных выражениях, а затем преобразованы к нужному типу:
class ProductPatterns(BasePattern[Product]):
price = r"^\d{1,4}\.\d{2}$" # Цена в формате 0.00 - 9999.99
Булевы поля¶
Булевы поля могут быть представлены как строки:
Обработка сгенерированных данных¶
Сгенерированные данные автоматически преобразуются к типам, указанным в модели:
Ограничения¶
При работе с базовыми возможностями генерации следует учитывать следующие ограничения:
- Все поля в модели должны иметь аннотации типов
- Регулярные выражения должны быть корректными и генерировать строки, которые можно преобразовать к указанным типам
- Для сложных типов данных может потребоваться дополнительная обработка после генерации
В следующих разделах мы рассмотрим более продвинутые возможности библиотеки.