Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Проверка типов в большом проекте

Проверка типов в большом проекте

Опыт внедрения проверки типов с помощью mypy в ЦИАН
Выступление на PyCon Russia 2019

Avatar for Maxim Mazaev

Maxim Mazaev

June 24, 2019
Tweet

More Decks by Maxim Mazaev

Other Decks in Programming

Transcript

  1. О чем я расскажу 4 • Статическая типизация. Плюсы, минусы,

    подводные камни • Инструменты проверки типов
  2. О чем я расскажу 5 • Статическая типизация. Плюсы, минусы,

    подводные камни • Инструменты проверки типов • Практические проблемы
  3. • 1 млн уникальных пользователей в сутки • 200+ микросервисов

    (120 на Python) • 100+ разработчиков • 30 питонистов 7 О ЦИАН
  4. Взрывной рост IT департамента (10x за 4 года) 9 2016

    год в ЦИАН Проблема: тратим время на понимание чужого кода
  5. 2016 год в ЦИАН 15 • Профит сразу • Самодокументированный

    код Пишем тайпхинты, без проверки тайпчекером
  6. 2016 год в ЦИАН 16 • Профит сразу • Самодокументированный

    код • Быстрый онбординг Пишем тайпхинты, без проверки тайпчекером
  7. 2016 год в ЦИАН 17 • Профит сразу • Самодокументированный

    код • Быстрый онбординг • Проверка есть в линтере и редакторах * Пишем тайпхинты, без проверки тайпчекером
  8. https://github.com/python/typeshed - для популярных библиотек PEP 561 - Distributing and

    Packaging Type Information 30 Type stubs для внешних зависимостей def get_reviews(key: int) -> List[Reviews]: ...
  9. 32 Метаклассы class Builder(Entity): name = String() b = Builder(name="xxx")

    gimme_builder(b) # OK gimme_dict(b.name) # Не ОК, но mypy не против
  10. • Есть готовые: dataclasses, attrs, Django, SQLAlchemy etc. • Можно

    написать свои WARNING: нестабильное API и мало документации 35 Плагины mypy
  11. 36 Что почитать по разработке плагинов Статья «Extending mypy with

    plugins» http://tiny.cc/mypy_plugins Чат про типы https://gitter.im/python/typing
  12. 43 Подробнее про наш CI/CD: РИТ++ 2019 Александр Коротков «

    Как доставить быстро и без боли. Автоматизируем релизы»
  13. • Хорошее дополнение к тестам и линтеру • Повод для

    самоанализа - а мой код точно хороший? 45 Польза от проверки типов
  14. • Хорошее дополнение к тестам и линтеру • Повод для

    самоанализа - а мой код точно хороший? • Тайпхинтам можно верить 46 Польза от проверки типов
  15. • Хорошее дополнение к тестам и линтеру • Повод для

    самоанализа - а мой код точно хороший? • Тайпхинтам можно верить • Люди быстрее вливаются в проект 47 Польза от проверки типов