Спасибо, что хотите помочь проекту. Ниже — всё, что нужно, чтобы PR прошёл ревью и CI с первого раза.
pip install -e ".[dev]" # или: uv sync --extra devТе же команды, что гоняет CI:
ruff check . # линтер
pytest -m "not integration" --cov=fias_public_api # юнит-тесты + покрытие- Юнит-тесты работают полностью офлайн — все HTTP-вызовы замоканы.
- Покрытие гейтится на 95% branch coverage (
fail_underвpyproject.toml). pytest -m integration— живые тесты противfias.nalog.ru, локально можно не запускать.
- Не ходите в сеть из юнит-тестов. Сетевые тесты помечаются
@pytest.mark.integrationи не входят в обычный прогон. - Мокайте
requests.request, а неrequests.get/requests.post— клиент вызывает именно его. - Новый метод API добавляется в оба клиента (
SyncFPAиAsyncFPA) и в таблицуtests/endpoints.py— паритет sync/async проверяется автоматически.
- Сообщения на русском, без подписей и трейлеров от ботов.
- Не бампайте
versionвpyproject.toml— версию выставляет мейнтейнер при релизе черезlota push vX.Y.Z.
- Форк → ветка от
main→ PR вmain. - Опишите, что меняется и зачем; если поведение меняется — скажите об этом явно.
- CI (
ruff+pytestна Python 3.10–3.13) должен быть зелёным — публикация на PyPI гейтится этими же проверками.
Публичные имена (SyncFPA, AsyncFPA, get_token_sync, get_token_async,
AddressType, STANDART_HEADERS, STANDARD_HEADERS, retry_on_error и
константы-алиасы) ломать нельзя без явного обсуждения в issue.