Skip to content

Latest commit

 

History

History
103 lines (70 loc) · 5.84 KB

python.ru.md

File metadata and controls

103 lines (70 loc) · 5.84 KB

Wiren Board Python Style Guide

За основу взят стиль, описанный в PEP8.

Отличия от PEP8 и общие правила оформления:

  • Максимальная длина строки - 110 символов вместо 78.
  • Используем двойные кавычки для строк ("string"), не используем одинарные ('string').
  • Добавляем аннотации типов.
  • В случае длинных перечислений элементов коллекций или аргументов, после последнего аргумента добавляется запятая (для однородного автоформатирования).
  • Докстринги всегда оформляем многострочно — см. раздел Докстринги.

Ниже приведены инструкции по настройке автоформатирования и code coverage из консоли. Для настройки интеграции с VSCode воспользуйтесь инструкцией.

Докстринги

Докстринг всегда многострочный, независимо от длины текста:

  • после открывающих """ на той же строке ничего не пишем — текст начинается со следующей строки;
  • закрывающие """ стоят на отдельной строке.
# Плохо
def crc16(data: bytes) -> int:
    """Return the CRC-16/Modbus of *data* as a 16-bit int."""

# Хорошо
def crc16(data: bytes) -> int:
    """
    Return the CRC-16/Modbus of *data* as a 16-bit int.
    """

Текущий набор инструментов (black/isort/pylint) это правило не проверяет — соблюдается на ревью.

Автоматическая проверка кода

Для автоформатирования кода используется black и isort.

Для статической проверки кода используется pylint.

Что именно происходит на CI - можно посмотреть здесь (поискав по runPythonChecks; все скрипты берутся из codestyle).

В файле devcontainer.json версии расширений зафиксированы для совместимости с версиями наших инструментов.

Установка инструментов (один раз для проекта)

В зависимости от вашего проекта, необходимо настроить virtualenv или devenv по инструкции для VSCode.

Запуск

  1. Pylint

    $ python3 -m pylint $(../codestyle/python/ci/find-python-files)
  2. Black + isort (dry-run)

    $ python3 -m black --config pyproject.toml --check --diff $(../codestyle/python/ci/find-python-files)
    $ python3 -m isort --settings-file pyproject.toml --check --diff $(../codestyle/python/ci/find-python-files)
  3. Black + isort (автоформатирование)

    $ python3 -m black --config pyproject.toml $(../codestyle/python/ci/find-python-files)
    $ python3 -m isort --settings-file pyproject.toml $(../codestyle/python/ci/find-python-files)

Оценка качества тестирования (code coverage)

Для оценки покрытия кода тестами используется плагин pytest coverage. Оценка показывает процент выполнившихся строк кода относительно общего объема файлов, использованных в процессе тестирования.

Установка инструментов

Для запуска тестов необходимо настроить devenv по инструкции для VSCode.

Запуск

В зависимости от того, как вы запускаете тесты, нужно использовать разные сценарии. Минимально допустимое значение покрытия для прохождения тестов указывается в аргументе --cov-fail-under

  1. Внутри devenv

    $ pytest --cov --cov-config=.coveragerc --cov-report=term --cov-fail-under=<ЛИМИТ>
  2. Сборка wbdev (без настройки devenv)

    Работает только для wbdev ndeb и wbdev cdeb

    $ export WBDEV_PYBUILD_TEST_ARGS="--cov --cov-config=../../../.coveragerc --cov-report=term --cov-fail-under=<ЛИМИТ>"
    $ wbdev ndeb

Отчеты

Для сборки внутри devenv есть возможность сгенерировать html отчет (для варианта wbdev сложные аргументы запуска, поэтому не приводим его). Для включения генерации нужно добавить опцию запуска

--cov-report=html

В папке проекта создастся папка htmlcov. Чтобы посмотреть отчет, откройте файл index.html в браузере.