Спасибо за интерес к проекту! Поспособствовать развитию `pynspd` можно несколькими способами:

- Поставить ⭐ на [GitHub](https://github.com/yazmolod/pynspd);
- Попробовать `pynspd` в работе и [сообщить о найденных проблемах](https://github.com/yazmolod/pynspd/issues);
- Поучаствовать в разработке проекта.

## Старт для разработки

Для начала разработки вам нужно сделать свой [форк репозитория pynspd](https://github.com/yazmolod/pynspd/fork).

!!! warning "Использование внешних утилит"
    Описанные ниже команды использует:

    - [`task`](https://taskfile.dev/docs/installation) - запуск команд в терминале;
    - [`uv`](https://docs.astral.sh/uv/getting-started/installation/) - современный пакетный менеджер для `python`.
    
    Перед началом работы убедитесь, что они установлены.

После этого клонировать репозиторий локально, перейти в скачанную папку и запустить скрипт установки:


```bash
git clone https://github.com/YOUR-USERNAME/pynspd
cd pynspd
task install
```




## Async/Sync

Подход к поддержке обоих async/sync API в `pynspd` был вдохновлен аналогичным в [Hishel](https://hishel.com/contributing/#async-and-sync). 
Если кратко: мы пишем только асинхронный код, а потом специальным скриптом создаем синхронную версию.

Исходя из этого, от разработчика требуется писать код только в папках `**/_async`.
Синхронный код генерируется при помощи команды:

```bash
task unasync
```

## Тестирование и линтинг
Запуск тестов осуществляется при помощи команды:

```bash
task tests
```

Линтинг и форматирование:

```bash
task lint
```

## Написание документации

Страницы документации располагаются в папке `docs/` проекта.

Для локального разворачивания сайта документации, воспользуйтесь командой:

```bash
task docs
```

