Конфигурация¶
В этом разделе описана конфигурация библиотеки FUCKTAR.
Конфигурация паттернов¶
Каждый паттерн должен иметь конфигурацию, определяемую через PatternConfig:
from fucktar.config import PatternConfig
class UserPatterns(BasePattern[User]):
first_name = UserRuPatterns.first_name
last_name = UserRuPatterns.last_name
email = UserRuPatterns.email
pattern_config = PatternConfig(
scope="users", # Имя scope для хранения истории
unique_fields=["email"] # Поля, по которым проверяется уникальность
)
Параметры PatternConfig¶
scope(str): Имя области видимости для хранения истории генерации. Используется для разделения истории между разными типами данных.unique_fields(list[str]): Список полей, по которым проверяется уникальность. Может быть пустым для отключения проверки уникальности.
Динамическая конфигурация¶
Вы можете настраивать параметры генерации динамически с помощью метода configure():
users = (
UserPatterns()
.configure(
unique=True, # Включить режим уникальности
ignore_count=False # Не игнорировать запрошенное количество
)
.generate(count=100)
)
Параметры configure()¶
unique(bool): Включить режим генерации уникальных данныхignore_count(bool): Если True, вернуть столько данных, сколько удалось сгенерировать, даже если меньше запрошенного количества
Установка значений по умолчанию¶
Вы можете установить значения по умолчанию для полей с помощью метода default_values():
Значения по умолчанию имеют приоритет над регулярными выражениями при генерации.
Параметры метода generate()¶
Метод generate() принимает несколько параметров для тонкой настройки процесса генерации:
users = UserPatterns().generate(
count=100, # Количество объектов для генерации
max_attempts=1000, # Максимальное число попыток генерации уникального объекта
timeout=30 # Таймаут генерации в секундах
)
Подробное описание параметров¶
count(int): Количество объектов для генерации. По умолчанию 1.max_attempts(int): Максимальное число неудачных попыток генерации уникального объекта подряд. По умолчанию 1000.timeout(int): Таймаут генерации в секундах. По умолчанию 30.
Fluent-интерфейс¶
FUCKTAR использует fluent-интерфейс для цепочки вызовов конфигурационных методов:
users = (
UserPatterns()
.configure(unique=True, ignore_count=False)
.default_values(city="Москва")
.generate(count=100, timeout=60)
)
Это позволяет гибко комбинировать различные параметры конфигурации.
Примеры конфигураций¶
Генерация с ограничением по времени¶
Генерация с высокой гарантией уникальности¶
# Генерация с увеличенным числом попыток
unique_users = (
UserPatterns()
.configure(unique=True)
.generate(count=10000, max_attempts=10000)
)
Генерация с игнорированием количества¶
# Генерация уникальных данных с ограничением по попыткам
users = (
UserPatterns()
.configure(unique=True, ignore_count=True)
.generate(count=1000000, max_attempts=100)
)
Рекомендации по конфигурации¶
- Всегда указывайте осмысленные имена для scope в PatternConfig
- Используйте unique_fields только для тех полей, по которым действительно нужна уникальность
- Устанавливайте разумные значения для max_attempts и timeout в зависимости от сложности паттернов
- Используйте default_values для полей, которые должны иметь фиксированные значения
- Комбинируйте методы конфигурации в цепочку для лучшей читаемости кода