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

Быстрый старт

Это руководство поможет вам быстро начать работу с 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 в ваших проектах! Более подробную информацию вы найдете в других разделах документации.