Metadata-Version: 2.4
Name: funny-word-generator
Version: 0.1.1
Summary: Генератор смешных и нелепых слов с оценкой 'забавности'
Author: Eiztrips
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: ruff>=0.3.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"

# Funny Word Generator

Генератор смешных и нелепых слов для Python на основе фонетических паттернов. Пакет подбирает забавные сочетания звуков, прикрепляет к ним нелепые суффиксы и использует систему баллов (funniness score), чтобы возвращать только самые «острые» и дурацкие варианты.

## Особенности

- **Алгоритм скоринга**: Слова получают баллы за редкие гласные («ы», «э»), твердые и шипящие согласные («ш», «ч», «к», «п»), и нелепые суффиксы («-ып», «-ун»).
- **Анализ паттернов**: Слова строятся по шаблонам для получения тягучего или абсурдного звучания (например, CVC + суффикс).
- **CLI-интерфейс**: Возможность генерации напрямую из консоли.
- **Чистый код**: Пакет строго типизирован, соответствует современным стандартам (Python 3.10+) и легко расширяем.

## Установка

Поскольку пакет использует `pyproject.toml`, вы можете установить его стандартными средствами pip:

```bash
pip install .
```

Или для установки вместе с инструментами разработки (тесты, линтеры):
```bash
pip install ".[dev]"
```

## Использование из кода

Вы можете импортировать `WordGenerator` в ваши Python скрипты. Класс позволяет настраивать порог "забавности" — чем он выше, тем жестче отбор сгенерированных кандидатов.

```python
from funny_word_generator import WordGenerator

# Создаем генератор с минимальным порогом оценки (F-score = 3)
generator = WordGenerator(threshold=3)

# Генерируем 5 слов
words = generator.generate(count=5)

print(words)
# Пример вывода: ['Шокып', 'Чумтыр', 'Грожик', 'Жочун', 'Хыпюр']
```

## Использование через CLI

После установки пакета в вашем терминале будет доступна утилита `funny-words`.

```bash
$ funny-words --count 5 --threshold 4
Сгенерировано 5 забавных слов (Порог: 4):
----------------------------------------
Шокып
Чумпыр
Кхурюн
Жучуп
Пачаш
```

Список аргументов:
- `-c`, `--count`: Количество слов для генерации (по умолчанию 5).
- `-t`, `--threshold`: Минимальный балл забавности слова.

## Разработка и тестирование

Для запуска тестов мы используем `pytest`. Убедитесь, что вы установили dev-зависимости.

```bash
# Запуск тестов
pytest

# Запуск проверки типов
mypy .

# Запуск линтера
ruff check .
```

## Принцип работы алгоритма

1. **Создание базы**: Исходно берутся массивы твердых согласных и редких гласных.
2. **Паттерны**: Накладывается шаблон сборки слогов.
3. **Скоринг (Оценка F)**:
   - +балл за наличие необычных гласных после шипящих.
   - +бонус за использование специальных «детских» окончаний (-ик, -ып, -юр).
   - Отрицательные баллы за банальность или попадание в стоп-лист.
4. **Фильтрация**: Кандидаты, набравшие баллы ниже порогового значения (threshold), отбрасываются. Выдается список из самых успешных мутаций.
