# Контрибьютинг

Хотите помочь проекту? **Внесите свой вклад в его исходный код!**

aliceio - проект с открытым исходным кодом, и каждый может внести в него свой вклад любым возможным способом.

## Разработка

Прежде чем вносить какие-либо изменения в код фреймворка,
необходимо [форкнуть проект](https://docs.github.com/ru/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo){:target="_blank"}
и [клонировать его](https://docs.github.com/ru/repositories/creating-and-managing-repositories/cloning-a-repository){:target="_blank"} на свой ПК,
а также знать, [как сделать пул-реквест](https://docs.github.com/ru/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request){:target="_blank"}.

Также, поскольку этот проект написан на Python, вам потребуется его установить (рекомендуется использовать последние версии, но можно использовать любую, начиная с 3.8).

### Виртуальное окружение

Вы можете создать виртуальную среду в директории с помощью модуля `venv` (он должен быть предварительно установлен по умолчанию):

```bash
python -m venv .venv
```

Это действие создаст директорию `.venv` с двоичными файлами Python, после чего вы сможете устанавливать пакеты в эту изолированную среду.


### Активация окружения

Linux / macOS:
```bash
source .venv/bin/activate
```

Windows cmd:
```shell
.\.venv\Scripts\activate
```

Windows PowerShell:
```shell
.\.venv\Scripts\activate.ps1
```

Чтобы проверить, сработало ли это, используйте следующую команду, она должна показать версию и путь до `pip` внутри изолированной среды:
```bash
pip -V
```

Также убедитесь, что в вашей виртуальной среде установлена последняя версия `pip`, чтобы избежать ошибок на следующих шагах:
```bash
python -m pip install --upgrade pip
```

### Установка проекта

После активации среды склонируйте ваш форк aliceio и установите зависимости:
```bash
git clone https://github.com/<YOUR-NAME>/aliceio.git
```

Linux / macOS:
```bash
pip install -e ."[dev,test,docs,fast,redis,proxy]"
```

Windows:
```bash
pip install -e .[dev,test,docs,fast,redis,proxy]
```

### Внесение изменений

На этом этапе вы можете вносить любые изменения в код, какие захотите. \
Это могут быть исправления, внедрение нового функционала или ваши эксперименты.

### Формат кода

Обратите внимание, что проект использует линтеры, форматтеры и прочие, поэтому и вам следует их здесь использовать. \
Убедимся, что вы всё делаете правильно, и вот так проверим код:
```bash
black aliceio tests examples
isort aliceio tests examples
ruff check --fix aliceio tests examples
mypy aliceio
```

Также можно установить pre-commit хук:
```bash
pre-commit install
```

### Запуск тестов

Все изменения должны быть протестированы:
```bash
pytest tests
```
Также, если вы что-то делаете с Redis'ом, вам нужно будет проверить, всё ли работает с ним:
```bash
pytest --redis redis://<host>:<port>/<db> tests
```

### Документация

Мы используем `MkDocs` для создания документации, все исходники расположены в директории *docs*. \
Вы можете изменить их и [запустить сервер](https://www.mkdocs.org/user-guide/cli/#mkdocs-serve){:target="_blank"} для предварительного просмотра:
```bash
mkdosc serve
```

### Завершение
После того, как вы внесли все свои изменения, опубликуйте их в ваш форк, создайте пул-реквест, как указано в начале статьи, и дождитесь его проверки. \
В нём опишите свои изменения в одном или нескольких предложениях, чтобы разработчики знали, что изменилось в фреймворке.

## Звёздочка на гитхабе

Вы можете отметить репозиторий звездой. Перейдите в него (https://github.com/K1rL3s/aliceio) и нажмите на кнопку со звёздочкой справа сверху.

## Связь

Заходите в наш [тг-чатик](https://t.me/aliceio_chat){:target="_blank"}, задавайте и отвечайте на вопросы
