Проект телеграм-бота, который позволяет всем желающим и нуждающимся получить ответы на все необходимые вопросы в телеграме. “Расправь крылья!”.
Бот забирает необходимые вопросы и контакты с базы данных сайта на CMS Wordpress.
-
3.1. Правила работы с git
3.2. Настройка poetry
3.3. Настройка pre-commit
-
4.2. Запуск в Docker
Имя | Описание |
---|---|
infrastructure | Docker-compose файлы для запуска проекта с помощью Docker |
src | к описанию этой папки стоит вернутся когда рефакторинг закончим |
Примечение: использование Poetry и pre-commit при работе над проектом обязательно.
- Две основные ветки:
master
иdevelop
- Ветка
develop
— “предрелизная”. Т.е. здесь должен быть рабочий и выверенный код - Создавая новую ветку, наследуйтесь от ветки
develop
- В
master
находится только production-ready код (CI/CD) - Правила именования веток
- весь новый функционал —
feature/название-функционала
- исправление ошибок —
bugfix/название-багфикса
- весь новый функционал —
- Пушим свою ветку в репозиторий и открываем Pull Request
Poetry - это инструмент для управления зависимостями и виртуальными окружениями, также может использоваться для сборки пакетов. В этом проекте Poetry необходим для дальнейшей разработки приложения, его установка обязательна.
Как скачать и установить?
Установите poetry следуя инструкции с официального сайта.
Команды для установки:
Для UNIX-систем и Bash on Windows вводим в консоль следующую команду:curl -sSL https://install.python-poetry.org | python -
Для WINDOWS PowerShell:
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -
После установки перезапустите оболочку и введите команду
poetry --version
Если установка прошла успешно, вы получите ответ в формате
Poetry (version 1.2.0)
Для дальнейшей работы введите команду:
poetry config virtualenvs.in-project true
Выполнение данной команды необходимо для создания виртуального окружения в папке проекта.
После предыдущей команды создадим виртуальное окружение нашего проекта с помощью команды:
poetry install
Результатом выполнения команды станет создание в корне проекта папки .venv. Зависимости для создания окружения берутся из файлов poetry.lock (приоритетнее) и pyproject.toml
Для добавления новой зависимости в окружение необходимо выполнить команду
poetry add <package_name>
Пример использования:
poetry add starlette
Также poetry позволяет разделять зависимости необходимые для разработки, от основных. Для добавления зависимости необходимой для разработки и тестирования необходимо добавить флаг --dev
poetry add <package_name> --dev
Пример использования:
poetry add pytest --dev
Порядок работы после настройки
Чтобы активировать виртуальное окружение, введите команду:
poetry shell
Существует возможность запуска скриптов и команд с помощью команды без активации окружения:
poetry run <script_name>.py
Примеры:
poetry run python script_name>.py
poetry run pytest
poetry run black
Порядок работы в оболочке не меняется. Пример команды для Win:
python src\run_bot.py
Доступен стандартный метод работы с активацией окружения в терминале с помощью команд:
Для WINDOWS:
source .venv/Scripts/activate
Для UNIX:
source .venv/bin/activate
В этом разделе представлены наиболее часто используемые команды. Подробнее: https://python-poetry.org/docs/cli/
poetry shell
poetry add <package_name>
poetry update
Настройка pre-commit
1. Убедиться, что pre-comit установлен:
pre-commit --version
-
Настроить git hook скрипт:
pre-commit install
Далее при каждом коммите у вас будет происходить автоматическая проверка линтером, а так же будет происходить автоматическое приведение к единому стилю.
Перед запуском проекта необходимо создать копию файла
.env.example
, назвав его .env
и установить значение токена бота, базы данных почты и тд.
В локальной разработке предусмотрено использование персистентности бота в файле pickle. (Хранится в корневой директории local_persistence
, если необходимо сбросить состояние бота - необоходимо удалить файл.)
Запуск бота в локальной среде рекомендуется выполнять с помощью команд:
запуск django-приложения (Без БД) вместе с ботом для локальной разработки:
# Перейти в директорию c кодовой базой проекта src/, где лежит manage.py
cd src/
# Запустить веб-сервер командой
poetry run uvicorn config.asgi:application --reload
запуск бота с контейнером PostgreSQL:
make runbot-db
запуск контейнера с PostgreSQL:
make rundb
остановка контейнера с PostgreSQL:
make stopdb
остановка контейнера с PostgreSQL и удаление базы данных:
make deletedb
наполнение PostgreSQL тестовыми данными:
# Not ready yet
make filldb
-
Запуск
Redis
(работает в режимеredis=True
) - убедитесь, что в .env установлено необходимое значение -
Убедиться, что
docker compose
установлен:docker compose --version
-
Из папки
infra/dev/
запуститьdocker-compose
:sudo docker-compose -f docker-compose.stage.yaml up
Все тесты запускаются командой:
pytest
Или
make run_tests
Выборочно тесты запускаются с указанием выбранного файла:
pytest test_start.py
Или
make run_unit_tests
Для написания тестов используется pytest. Основные настройки тестов хранятся в файле conftest.py. Фикстуры хранятся в файле fixtures/fixture_data.py Основные тесты бота хранятся в файле test_bot.py. В зависимости от функционала тестов можно добавлять файлы тестов. Файлы тестов должны начинаться с "test_".
Разработчик самостоятельно определяет функционал, который будет покрыт данными. Но, как правило, рекомендуется тестировать все написанные самостоятельно основные функции бота, функции отправки и получения сообщений, функции перенаправления на сторонние или внутренние ресурсы.