Давайте я в ближайшие пару дней расскажу о свежих релизах в мире Python, которые мне показались важными. Начну с того, что pyflakes (он используется в flake8) теперь нормально работает с магией типизации, а конкретно:

  1. Не отмечает импорты для аннотации переменных через комментарий как неиспользуемые. Например, если вы пишете a = [] # type: List[str], то pyflakes теперь видит, что from typing import List используется для этой аннотации. Без аннотации переменных mypy не работает. Нормальная аннотация в примере выше выглядит так: a: List[str] = []. Такая модная аннотация появилась только в Python 3.6, но Python 3.5 официально поддерживается ещё полтора года. К слову, поддержка Python 3.4 заканчивается 16 марта.

  2. Не ругается на @typing.overload как переопределение функции. @overload используется для обозначения зависимости типов выходных значений функции от входных (немножко generics). Например:

    ...

@overload
def decode(response: bytes) -> str:
    ...

def decode(response):
    <actual implementation>```
В примере выше тип выходных значений `decode` зависит от входных: если передали `None`, то вернется тоже `None`, а если передали `bytes`, то на выходе будет `str`. Выглядит это ужасно громоздко, как и вся типизация в Python, но альтернатив в мире Python пока что нет.