TGViewer
Находки в опенсорсе Находки в опенсорсе @opensource_findings · 12.6K subscribers
Post #961 11.5K
Вышел mypy 2.0

Changelog: https://github.com/python/mypy/blob/master/CHANGELOG.md#mypy-20

Что изменилось?

По-умолчанию --local-partial-types теперь всегда включен. Он нужен для корректной типизации в разных скоупах.


a = [] # Needs type annotation when using `local-partial-types`

def func() -> None:
a.append(1)


Включили --strict-bytes по-умолчанию. Раньше тип bytes разрешал передавать memoryview и bytearray. Теперь с новым поведением bytes разрешает только bytes, все остальные типы нужно указывать отдельно.

Теперь можно переопределять переменные, даже разных типов с --allow-redefinition


def foo(cond: bool) -> None:
if cond:
for x in ["a", "b"]:
# Type of "x" is "str" here
...
else:
for x in [1, 2]:
# Type of "x" is "int" here
...


Данная фича раньше была под флагом --allow-redefinition-new, а теперь включена по-умолчанию.

Самое интересное

Добавили --num-workers, который позволяет ускорить mypy кратно на больших кодовых базах. Я буду запускать mypy прямо на кодовой базе mypy (без mypyc, без кеша, но с orjson и `sqlite_cache`):


» rm -rf .mypy_cache && time mypy --config-file mypy_self_check.ini -p mypy -p mypyc --num-workers=8
7.090 total


Против режима с одним воркером (как было до 2.0):


» rm -rf .mypy_cache && time mypy --config-file mypy_self_check.ini -p mypy -p mypyc
25.335 total


А теперь еще убираем orjson и sqlite_cache:


» rm -rf .mypy_cache && time mypy --config-file mypy_self_check.ini -p mypy -p mypyc
28.108 total


Вот такой прирост производительности. Версия с mypyc (то есть та, которую мы скачиваем из pip) будет еще быстрее.

Очень радостно, что mypy становится быстрее. Дальнейшее развитие mypyc приведет к еще большему перфу. И не только для mypy.

Обсуждение: Как быстро вы обновляете mypy на своих проектах? Насколько сурово настраиваете? Будет ли профит от нескольких воркеров?

| Поддержать | YouTube | GitHub | Чат |
GitHub mypy/CHANGELOG.md at master · python/mypy Optional static typing for Python. Contribute to python/mypy development by creating an account on GitHub.
  • 🔥 76
  • 👍 22
  • ❤ 7
  • 🙏 1
More from @opensource_findings
  1. Sep 25, 2026Монадические выражения в Python. Наконец-то! Продолжаем разговор про интересные PEPы. Пого…
  2. Sep 15, 2026PEPы в Python окончательно вышли из-под контроля Давайте посмотрим, что происходит с ПЕПам…
  3. Sep 10, 2026Большая бесплатная конференция в Нижнем Новгороде 17 октября Регистрация: https://itgorky.…
  4. Sep 1, 2026Post #985
  5. Aug 24, 2026JIT могут удалить из CPython! PEP-836: https://peps.python.org/pep-0836 JIT в CPython имее…
  6. Aug 18, 2026Как AWS у опенсорсера пакеты отжимал Нерегулярная рубрика "посмотрите, что творится!". Дан…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →