Быстрый старт¶
Это руководство поможет вам быстро начать работу с FUCKTAR.
Создание простого генератора¶
Для начала создадим простой генератор пользовательских данных:
from dataclasses import dataclass
from fucktar.generator import BasePattern
from fucktar.config import PatternConfig
from fucktar.default_patterns.users import UserRuPatterns
from fucktar.default_patterns.network import NetworkPatterns
@dataclass
class User:
first_name: str
last_name: str
email: str
phone: str
ipv4: str
class UserPatterns(BasePattern[User]):
# Определяем паттерны для полей
first_name = UserRuPatterns.first_name
last_name = UserRuPatterns.last_name
email = UserRuPatterns.email
phone = UserRuPatterns.phone
ipv4 = NetworkPatterns.ipv4
# Конфигурация паттерна
pattern_config = PatternConfig(
scope="users", # Имя scope для хранения истории
unique_fields=["email"] # Поля, по которым проверяется уникальность
)
# Генерация одного пользователя
user = UserPatterns().generate()
print(user)
# Генерация списка пользователей
users = UserPatterns().generate(count=10)
print(users)
Генерация уникальных данных¶
Для генерации уникальных данных используйте метод configure():
# Генерация уникальных пользователей
unique_users = (
UserPatterns()
.configure(unique=True) # Включаем режим уникальности
.generate(count=100)
)
Установка значений по умолчанию¶
Вы можете установить значения по умолчанию для определенных полей:
# Установка значений по умолчанию
users = (
UserPatterns()
.default_values(city="Москва", country="Россия")
.generate(count=10)
)
Настройка параметров генерации¶
FUCKTAR позволяет настраивать различные параметры генерации:
# Расширенная конфигурация
users = (
UserPatterns()
.configure(unique=True, ignore_count=False)
.generate(
count=1000,
max_attempts=100, # Максимальное число попыток генерации уникального объекта
timeout=30 # Таймаут в секундах
)
)
Работа с историей генерации¶
FUCKTAR автоматически сохраняет историю сгенерированных объектов. Вы можете управлять этой историей:
from fucktar.storage import ScopeStorage
# Удаление истории для определенного scope
ScopeStorage.remove("users")
# Очистка всей истории
ScopeStorage.clear_all()
Обработка ошибок¶
При работе с FUCKTAR важно обрабатывать возможные ошибки:
from fucktar.exceptions import (
UniqueGenerationError,
TimeoutGenerationError,
PatternConfigError
)
try:
users = UserPatterns().configure(unique=True).generate(count=1000000, timeout=5)
except TimeoutGenerationError:
print("Превышено время генерации")
except UniqueGenerationError:
print("Не удалось сгенерировать уникальные данные")
except PatternConfigError:
print("Ошибка в конфигурации паттерна")
Многопоточность¶
FUCKTAR безопасно работает в многопоточных приложениях:
import concurrent.futures
from fucktar.generator import BasePattern
def generate_users_batch(count):
return UserPatterns().configure(unique=True).generate(count=count)
# Генерация в нескольких потоках
with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
futures = [
executor.submit(generate_users_batch, 100)
for _ in range(4)
]
results = [future.result() for future in futures]
Теперь вы готовы к использованию FUCKTAR в ваших проектах! Более подробную информацию вы найдете в других разделах документации.