https://github.com/ktsstudio/backend-school-template-project
https://github.com/ktsstudio/backend-school-template-project
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/ktsstudio/backend-school-template-project
- Owner: ktsstudio
- Created: 2024-03-18T06:53:20.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-28T16:01:03.000Z (about 2 years ago)
- Last Synced: 2025-01-24T20:16:58.345Z (over 1 year ago)
- Language: Python
- Size: 14.6 KB
- Stars: 1
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Памятка по работе с проектом
## Начало работы с проектом
Для начала работы с проектом необходимо создать репозиторий по [шаблону](https://github.com/ktsstudio/backend-school-template-project). Для этого используйте кнопку "Use this template".

После этого его можно локально клонировать себе на компьютер:
``` sh
git clone <ссылка на репозиторий>
```
---
## Ветки dev и main
После того как скопируете репозиторий, скорее всего, вы будете находиться в main-ветке.
Как правило, ветка `main` (`master`) содержит в себе _production-ready_ код, т.е. именно из этой ветки проект будет катиться. Поэтому сама разработка из этой ветки обычно не ведется, туда делают merge финальных изменений.
Создадим ветку dev:
``` sh
git checkout -b dev
```
Dev — чаще всего общая тестовая ветка. От `dev-ветки` ответвляются `feature-ветки`, в которые добавляется новая функциональность, тестируется, проходит ревью и "сливается" в `dev-ветку`.
Создадим `feature`-ветку:
``` sh
git checkout -b <<название ветки>>
```
После чего создается [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).
`Pull request (PR)` позволяет другим разработчикам провести ревью и оставить комментарии к написанному коду, прежде чем проверять его и делать релиз.
---
## Работа в репозитории
### Gitignore
Файл .gitignore содержит информацию о том, какие файлы не следует сохранять в удаленный репозиторий – локальные конфиги, файлы библиотек, специфичные файлы IDE или операционной системы.
Самый простой способ составить подходящий `.gitignore` файл — воспользоваться ресурсом [gitignore.io](https://www.toptal.com/developers/gitignore/)
Обратите внимание, что в шаблоне проекта уже присутствует файл `.gitignore`. Остается убедиться, что у вас нет каких-то дополнительных файлов, которые следует туда добавить.
---
### Виртуальное окружение
#### Создание виртуального окружения
Виртуальное окружение позволяет разделять проекты, зависимости и даже версии языка.
**Пример.** Есть два проекта. Один использует библиотеку `example` версии 1, второй – версии 2. Они не могут существовать одновременно, и версии могут конфликтовать из-за каких-то других зависимостей. Поэтому мы создаем два виртуальных окружения, каждое для своего проекта. `PyCharm` может создавать их автоматически. `Python` будет видеть только библиотеки из своего виртуального окружения, что существенно облегчит сосуществование множества проектов на одном компьютере.
**Создадим:**
``` sh
python -m venv <название окружения>
```
> Принято называть окружение `env` или `venv` -– `([virtual] environment)`.
Задать версию языка для виртуального окружения, например 3.12:
```
python3.12 -m venv <название окружения>
```
> Обратите внимание, что для этого нужно чтобы эта версия была установлена в системе.
#### Активация
**Для Linux/MacOS:**
``` sh
source <название окружения>/bin/activate
```
**Для Windows:**
``` sh
<название окружения>\Scripts\activate.bat
```
---
### Зависимости
В файл `requirements.txt` принято записывать зависимости проекта – список библиотек и их версий, без которых проект не сможет запуститься. Добавляя в проект использование новой библиотеки, обязательно нужно записать ее в `requirements.txt`. При релизе зависимости устанавливаются из же этого файла.
Пример файла:
```requirements.txt
aiohttp==3.8.1
black==22.6.0
freezegun==1.2.1
pytest==7.1.2
pytest-aiohttp==1.0.4
```
Если в новой версии из библиотеки будет удалено что-то важное для проекта, то ничего не сломается, потому что мы фиксируемся на старой версии. В дальнейшем мы можем вручную обновить версию и сразу проследить, что при обновлении все работает как нужно. Либо что-то починить, если сломалось.
Установить все необходимые библиотеки можно при помощи команды…
```sh
pip install <библиотека>
```
…либо:
```sh
pip install -r requirements.txt
```
Лучше всего ставить библиотеки в виртуальное окружение.
---
### Ruff
[Библиотека](https://docs.astral.sh/ruff/) для автоматического форматирования кода и проверки его на ошибки. Рекомендуется использовать, чтобы код был читаемым и соответствовал `pep-8`. Для применения потребуется поставить библиотеку в виртуальное окружение.
**Отформатировать код:**
```sh
ruff format
```
**Проверить код**
```sh
ruff check --fix
```
В файле `pyproject.toml` можно сконфигурировать библиотеку.
Например:
```toml
[tool.ruff]
line-length = 80
indent-width = 4
target-version = "py312"
```
> Обратите внимание, что в `pyproject.toml` для вас уже добавлена рекомендуемая конфигурация.
> По договоренности с вашим ментором конфигурацию можно отредактировать.