Fork me on GitHub

Введение в аннотации типов Python

Общие ссылки

чтобы не проверять типы в модулях в которых нет аннотации можно добавить напротив импорта модуля

import my_module # type: ignore

Автоматическая аннотация типов в legacy code

с помощью инструментов MonkeyType и pyannotate можно для начала аннотировать свой уже написанный код.

Правила для типизации (хорошая практика)

  • избегать тип Any
  • типизировать каждую функцию целиком
  • не использовать cast

Конфигурация mypy

вдохновение было вот отсюда https://www.youtube.com/watch?v=kyVspqEcs-s

[mypy]
disallow_any_unimported = True 
disallow_untyped_calls = True  # запретить нетипизированные выводы
disallow_untyped_defs = True   # запретить нетипизированные функции
disallow_incomlete_defs = True # запретить неполностью типизированные функции
warn_unused_configs = True
plugins =   # плагины для mypy
    mypy_django_plugin.main
    mypy_drf_plugin.main
mypy_path = ./stubs 
disallow_any_decorated = True  # запрет чтобы декораторы были нетипизированы

warn_unreachable = True  № предупреждение что код не будет выполнен
strict_equality = True # проверка на строгое равенство
implicit_reexport = False
allow_redefinition = True  # позволяет переопределить переменную с произвольным типом в том                            # же блоке
warn_unused_ignore = True

[my-project.test.*]  # игнорировать ошибки у конкретного модуля
ignore_erroros = True 

social