"""
utils/names.py — генерация случайных русских имён и фамилий.
"""
import random

MALE_NAMES = [
    "Александр", "Дмитрий", "Максим", "Сергей", "Андрей", "Алексей", "Артём",
    "Илья", "Кирилл", "Михаил", "Никита", "Матвей", "Роман", "Егор", "Арсений",
    "Иван", "Денис", "Евгений", "Даниил", "Тимофей", "Владислав", "Игорь",
    "Владимир", "Павел", "Руслан", "Марк", "Константин", "Тимур", "Олег",
    "Ярослав", "Антон", "Николай", "Глеб", "Данил", "Савелий", "Вадим",
    "Степан", "Юрий", "Богдан", "Артур", "Семён", "Макар", "Лев", "Виктор",
    "Елисей", "Захар", "Мирон", "Вячеслав", "Григорий", "Георгий",
]

FEMALE_NAMES = [
    "Анастасия", "Мария", "Анна", "Виктория", "Екатерина", "Наталья",
    "Дарья", "Полина", "Ольга", "Татьяна", "Ирина", "Елена", "Алина",
    "Юлия", "Валерия", "Кристина", "Вероника", "Арина", "Милана", "София",
    "Ксения", "Александра", "Маргарита", "Диана", "Алёна", "Карина",
    "Светлана", "Марина", "Яна", "Ева", "Василиса", "Ульяна", "Злата",
    "Нина", "Варвара", "Елизавета", "Снежана", "Кира", "Вера", "Лилия",
    "Регина", "Камила", "Аделина", "Лидия", "Амина", "Эмилия", "Таисия",
    "Агата", "Стефания", "Есения",
]

MALE_SURNAMES = [
    "Иванов", "Смирнов", "Кузнецов", "Попов", "Васильев", "Петров",
    "Соколов", "Михайлов", "Новиков", "Фёдоров", "Морозов", "Волков",
    "Алексеев", "Лебедев", "Семёнов", "Егоров", "Павлов", "Козлов",
    "Степанов", "Николаев", "Орлов", "Андреев", "Макаров", "Никитин",
    "Захаров", "Зайцев", "Соловьёв", "Борисов", "Яковлев", "Григорьев",
    "Романов", "Воробьёв", "Сергеев", "Кузьмин", "Фролов", "Александров",
    "Дмитриев", "Королёв", "Гусев", "Киселёв", "Ильин", "Максимов",
    "Поляков", "Сорокин", "Виноградов", "Ковалёв", "Белов", "Медведев",
    "Антонов", "Тарасов",
]

FEMALE_SURNAMES = [
    "Иванова", "Смирнова", "Кузнецова", "Попова", "Васильева", "Петрова",
    "Соколова", "Михайлова", "Новикова", "Фёдорова", "Морозова", "Волкова",
    "Алексеева", "Лебедева", "Семёнова", "Егорова", "Павлова", "Козлова",
    "Степанова", "Николаева", "Орлова", "Андреева", "Макарова", "Никитина",
    "Захарова", "Зайцева", "Соловьёва", "Борисова", "Яковлева", "Григорьева",
    "Романова", "Воробьёва", "Сергеева", "Кузьмина", "Фролова", "Александрова",
    "Дмитриева", "Королёва", "Гусева", "Киселёва", "Ильина", "Максимова",
    "Полякова", "Сорокина", "Виноградова", "Ковалёва", "Белова", "Медведева",
    "Антонова", "Тарасова",
]


def generate_name(gender: str = "random") -> str:
    """Случайное имя. gender: male/female/random."""
    if gender == "random":
        gender = random.choice(["male", "female"])
    return random.choice(MALE_NAMES if gender == "male" else FEMALE_NAMES)


def generate_surname(gender: str = "random") -> str:
    """Случайная фамилия. gender: male/female/random."""
    if gender == "random":
        gender = random.choice(["male", "female"])
    return random.choice(MALE_SURNAMES if gender == "male" else FEMALE_SURNAMES)


def generate_full(gender: str = "random") -> tuple:
    """Возвращает (имя, фамилия) одного пола."""
    if gender == "random":
        gender = random.choice(["male", "female"])
    return generate_name(gender), generate_surname(gender)
