Практический пример использования Protocol

Опубликовано 26 February 2024 в Python • Помечено python, protocol, typing

Представьте себе ситуацию: у вас есть микросервисы, в каждом своя конфигурация со своим набором параметров; есть библиотечный код, который получает и использует объекты конфигураций. Представили? А теперь в этот код надо завести подсказки типов. И тут представили? Давайте проведем мысленный эксперимент и попробуем это сделать. Вариантов в целом несколько.


Продолжить чтение

Использование typing.Generic в Python

Опубликовано 18 February 2022 в Python • Помечено python, type hints, typing, mypy, PyCharm

Я работаю над проектом с довольно большой кодовой базой. Проект с историей. Некоторые части наша команда написала задолго до аннотаций типов. Мы до сих пор добавляем их в наш легаси код и улучшаем существующие подсказки. Стоит эта игра свеч? Определенно. Наши пользователи - разработчики. Они открывают наш код в PyCharm ежедневно. И они надеются, что он поможет им решить их задачи максимально быстро и просто.


Продолжить чтение

Использовать Optional в абстрактных классах или нет?

Опубликовано 06 September 2018 в Python • Помечено python, typing

Подсказки типов в Python необязательны: вы вольны выбирать пользоваться или ими или нет. Но начав включать их в свой код, точно возникнут определенныме трудности аннотирования функций или переменных. Эта статья — моя точка зрения на один специфический случай.


Продолжить чтение

Tuple[Callable, Any, ...]

Опубликовано 29 January 2018 в Python • Помечено typing, mypy, python

Подсказки с типами могут сильно помочь в работе с большим проектом на Питоне. Тем не менее, иногда они требуют рефакторинга кода. Я писал об этом в прошлом году в этой статье, но тогда я не смог найти хорошего примера иллюстрирующего то, что я хочу сказать.


Продолжить чтение

Как внедрить mypy в проекте на Python 2.7

Опубликовано 11 December 2017 в Python • Помечено typing, mypy, python

Я многократно писал, что описание типов в питоне помогает в работе с большими и средними проектами. При этом, если внедрять типы, то нужно регулярно делать статический анализ, причем в CI. А вот это уже не так-то просто внедрить. Эта статья - мой рассказ о том какие трудности придется преодолеть в процессе внедрения.


Продолжить чтение