144 lines
5.8 KiB
Markdown
144 lines
5.8 KiB
Markdown
# Contributing
|
||
|
||
Спасибо за участие в проекте T-Invest!
|
||
|
||
## Быстрый старт
|
||
|
||
1. Сделайте [fork](https://opensource.tbank.ru/invest/invest-python/-/forks/new) проекта
|
||
2. Склонируйте репозиторий на свой локальный компьютер
|
||
```bash
|
||
git clone https://opensource.tbank.ru/<username>/invest-python.git
|
||
```
|
||
> Вы должны использовать свой username вместо `username`
|
||
3. Создайте новую ветку для ваших изменений
|
||
```bash
|
||
git checkout -b branch_name
|
||
```
|
||
4. Добавьте изменения и выполните команды на локальной машине (см. ниже)
|
||
1. Установите зависимости
|
||
2. Проверьте свой код с помощью тестов и линтеров
|
||
5. Создайте коммит своих изменений. Формат описан ниже
|
||
```bash
|
||
git add .
|
||
git commit -m "feat: add new feature"
|
||
```
|
||
6. Отправьте свои изменения на github
|
||
```bash
|
||
git push
|
||
```
|
||
7. Создайте Pull Request в этот репозиторий
|
||
|
||
## Commit Message Format
|
||
|
||
Мы придерживаемся соглашений [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) для наименование коммитов.
|
||
|
||
> A specification for adding human and machine readable meaning to commit messages.
|
||
|
||
Body и Footer можно указать по желанию.
|
||
|
||
### Commit Message Header
|
||
|
||
```
|
||
<type>(<scope>): <short summary>
|
||
│ │ │
|
||
│ │ └─⫸ Summary in present tense. Not capitalized. No period at the end.
|
||
│ │
|
||
│ └─⫸ Commit Scope: grpc, async, mypy, schemas, sandbox
|
||
│
|
||
└─⫸ Commit Type: feat|fix|build|ci|docs|perf|refactor|test|chore
|
||
```
|
||
|
||
#### Type
|
||
|
||
| feat | Features | A new feature |
|
||
|----------|--------------------------|--------------------------------------------------------------------------------------------------------|
|
||
| fix | Bug Fixes | A bug fix |
|
||
| docs | Documentation | Documentation only changes |
|
||
| style | Styles | Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) |
|
||
| refactor | Code Refactoring | A code change that neither fixes a bug nor adds a feature |
|
||
| perf | Performance Improvements | A code change that improves performance |
|
||
| test | Tests | Adding missing tests or correcting existing tests |
|
||
| build | Builds | Changes that affect the build system or external dependencies (example scopes: mypy, pip, pytest) |
|
||
| ci | Continuous Integrations | Changes to our CI configuration files and scripts (example scopes: Github Actions) |
|
||
| chore | Chores | Other changes that don't modify src or test files |
|
||
| revert | Reverts | Reverts a previous commit |
|
||
|
||
## Выполнение команд на локальной машине
|
||
|
||
Для работы с проектом рекомендуем использовать [poetry](https://pypi.org/project/poetry/).
|
||
|
||
Также рекомендуем использовать таск раннер make. Все команды описаны в Makefile. Вы можете их скопировать и запускать напрямую.
|
||
|
||
## Установка зависимостей
|
||
|
||
```
|
||
make install-poetry
|
||
make install
|
||
```
|
||
|
||
### Виртуальное окружение
|
||
|
||
По умолчанию, poetry создает виртуальное окружение в директории `~/.cache/pypoetry/virtualenvs/`. Чтобы создавать виртуальное окружение в директории проекта, выполните команду:
|
||
|
||
```
|
||
poetry config virtualenvs.in-project true
|
||
```
|
||
|
||
Вы можете сами создать виртуальное окружение в директории проекта:
|
||
|
||
```
|
||
python -m venv .venv
|
||
```
|
||
|
||
poetry будет использовать его.
|
||
|
||
### Запуск тестов
|
||
|
||
```
|
||
make test
|
||
```
|
||
|
||
### Запуск линтеров
|
||
|
||
```
|
||
make lint
|
||
```
|
||
|
||
### Запуск автоформатирования
|
||
|
||
```
|
||
make format
|
||
```
|
||
|
||
### Загрузка proto файлов
|
||
|
||
```
|
||
make download-protos
|
||
```
|
||
|
||
По дефолту загружает из ветки `main`.
|
||
|
||
### Генерация клиента
|
||
|
||
```
|
||
make gen-grpc
|
||
```
|
||
|
||
Затем, добавить изменения в модули:
|
||
- t_tech/invest/\_\_init__.py
|
||
- t_tech/invest/async_services.py
|
||
- t_tech/invest/schemas.py
|
||
- t_tech/invest/services.py
|
||
|
||
### Загрузка proto файлов и генерация клиента
|
||
|
||
Можно упростить все до одной команды.
|
||
|
||
```
|
||
make gen-client
|
||
```
|
||
|
||
### Release новой версии
|
||
|
||
Релиз новой версии происходит автоматически после слияния изменений в main ветку.
|