Проверьте тип подсказки покрытия в Python - PullRequest
0 голосов
/ 10 июня 2019

Я бы хотел, чтобы в моем Python-пакете использовались подсказки типов, и чтобы CI не выполнял сборки, если это не 100%.

Могу ли я сообщить о покрытии подсказок типа, используя mypy или любой другой пакет в Python, аналогично тому, как я могу проверить покрытие кода с помощью, например, coverage.py ?

Разумно ли требовать строгого 100% покрытия типа подсказки?

1 Ответ

1 голос
/ 10 июня 2019

Могу ли я сообщить о покрытии подсказок типа, используя mypy или любой другой пакет в Python, аналогично тому, как я могу проверить покрытие кода, например, cover.py?

Да,Есть много флагов для запрета различного использования Any, а также аннотаций отсутствующего типа .Или вы можете просто передать флаг --strict , чтобы запретить большое количество сомнительных конструкций с одним флагом.Точное определение --strict может со временем меняться, поэтому оно может плохо подходить для CI (т. Е. «Почему сборка не работает, все, что я сделал, это установил новый mypy?»).Существует также несколько флагов для генерации отчетов о покрытии .

Разумно ли также требовать строгого 100% покрытия подсказок типа?

Это будет в значительной степени зависеть от того, чего вы хотите достичь с помощью подсказок типов, а также от истории и текущего состояния вашей кодовой базы.Например, если вы и все ваши коллеги-разработчики пришли из статической среды типизации (то есть, вы ранее программировали на статически типизированных языках, таких как C ++ и Java), и у вас нет большого количества старого кода Python для поддержки, тогда этоскорее всего, будет хорошо работать.С другой стороны, если у вас большой объем унаследованного кода (возможно, преобразованный из Python 2 в последнюю минуту), или если многие из ваших разработчиков привыкли к динамической типизации, тогда может быть большее несоответствие импеданса.Если вы не уверены, сработает ли это для вас, я бы предложил настроить отдельные сборки CI со строгостью и без нее.Если строгий постоянно красный, а нестрогий постоянно зеленый, у вас может возникнуть техническая или культурная проблема, которую необходимо решить, прежде чем включать обязательные подсказки типа.

...