25 lines
1.7 KiB
Plaintext
25 lines
1.7 KiB
Plaintext
# Правила проекта 2025-etpgrf при обработке ИИ
|
||
|
||
## Общие сведения
|
||
- **Проект:** Python-библиотека для экранной типографики для веб (висячая пунктуация, неразрывные пробелы, перенос слов и т.д.).
|
||
- **Язык:** Python 3.10+.
|
||
- **Стиль кода:** PEP8.
|
||
- **Типизация:** Обязательные Type Hints для аргументов и возвращаемых значений.
|
||
- **Язык комментариев:** Русский.
|
||
|
||
## Архитектура
|
||
- **Точка входа:** Класс `Typographer` в `etpgrf/typograph.py`.
|
||
- **Обработка HTML:**
|
||
- Использовать `BeautifulSoup4` (предпочтительно парсер `lxml`).
|
||
- НИКОГДА не парсить HTML регулярными выражениями.
|
||
- **Санитизация:** Всегда выполняется *до* рекурсивного обхода дерева.
|
||
- **Рекурсия:** Использовать `_walk_tree` для обработки текстовых узлов, сохраняя структуру HTML.
|
||
- **Конфигурация:** Все константы (regex, коды символов, классы) должны быть в `etpgrf/config.py`.
|
||
|
||
## Тестирование
|
||
- **Фреймворк:** `pytest`.
|
||
- **Структура:**
|
||
- Юнит-тесты: `tests/test_<module>.py`.
|
||
- Интеграционные тесты: `tests/test_typograph.py`.
|
||
- **Философия:** Тестировать как режим простого текста ("plain text"), так и режим HTML.
|