- PVSM.RU - https://www.pvsm.ru -
Всем привет! Очень большой получился дайжест: было очень много событий. Но тем будет интереснее!
17 октября прошла наша большая открытая встреча сообщества в Нижнем Новгороде, доклады с которой уже выложены в посте ниже.
Еще поговорим про Python 3.15 и его фичи, ведь он как раз был релизнут в октябре 2026. Посмотрим, что нам уже готовит Python 3.16.
Поговорим про проекты сообщества. Очень много крутых (и очень красивых!) штук подобралось.
С меня как всегда статья без нейрослопа и ИИ, с вас как всегда интересные комментарии и лайки! А вот тут [1]ссылка на прошлый дайджест [2] за сентябрь.
Погнали смотреть, что у нас в питоне происходило!
Спасибо большое всем за такой чудестный день! Больше 1000 человек было на конференции [3].
Было 7 крутых докладов на нашем потоке, море общения, новых знакомств. Заняли половину барной улицы после конфы. А теперь пришло время делиться докладами. Делюсь секцией PythoNN в порядке выступления:
Иван Кирпичников. Посмотрим на конкурента Pydantic от нашего сообщества [4]. Посмотрим: где и когда не стоит использовать Pydantic, какие у него актуальные проблемы. Поговорим, за счет чего Adaptix насколько быстрый, как он устроен. И какие уникальные фичи у него есть.
Егор Бугаенко. Новые принципы построения проектов в век ИИ. Осторожно, будет подгорать!
Алексей Гладких. Расскажу про недооценённую платформу для коммуникации, выстраивания горизонтальных связей и создания личного бренда. Покажу как можно стримить с технической стороны.
Сергей Макаров. Как можно использовать zMQTT [5] для работы в embedded устройствами?
Максим Мельников @PyLounge [6]. Работа в IT‑команде иногда подозрительно напоминает Dota 2: кто‑то фармит, кто‑то руинит, кто‑то молчит до 40-й минуты, а тимлид начинает думать, что снова играет 1 vs 9. Только вместо Рошана — прод, вместо 0/10 мидера — соседняя CRM‑команда, а вместо «gg ez» — очередной аварийный комитет. На докладе поговорим о том, как перестать играть в такой режим и начать выстраивать систему: почему токсичность и дизмораль только мешают, зачем учить людей говорить ртом и управлять ожиданиями, почему процессы не должны держаться на одном «рокстар‑игроке» и как не превращать каждый фейл в поиск того, кто заруинил. Разберём, как продавать изменения команде, договариваться с бизнесом и другими командами, фиксировать договорённости и автоматизировать правила — чтобы вместо вечного 1 vs 9 получилась команда, которая действительно играет на победу как для бизнеса, так и технического развития проекта.
Александр Целуйко. Почему msgspec [7] быстрее и меньше базовых структур (namedtuple, dataclass и тп) python и orjson (не всегда и везде есстессна).Что нужно, чтобы fastapi работал на msgspec? Как разогнать Ваш сервис на fastapi ещё быстрее? Устроим батл про msgspec vs adaptix!
Алексей Голобурдин, Диджитализируй. Почему для многих задач полностью локальные агенты это будущее, как Microsoft, Apple и hardware‑производители идут в сторону локального инференса, и как это использовать разработчику.
А еще у нас есть один спасенный доклад от Никиты Пастухова @Propan671 [8] с секции NNИнтерфейс. Там были некоторые проблемы с записью видео и звука, Никита спас что мог:
Спасибо большое всем спикерам! Было круто. Повторим в следующем году!
Всем спикерам мы всегда по традиции дарим мою опенсорс настольную игру про айтишечку: https://github.com/sobolevn/ship‑it‑boardgame [9]
Игра очень классная вышла: социальная, веселая, душная! Но и правила мы специально делали очень простыми, чтобы было легко их объяснить своим коллегам в баре под кружечку пенного.
В нее можно поиграть абсолютно бесплатно: есть возможность напечатать самому, есть вариант поиграть через Table Top Simulator. Можно даже найти игроков в нашем чате [10].
Как раз под конференцию вышла новая версия: 0.0.26 [11]
Напечатайте и сыграйте, если любите настолки!
Тут тоже есть несколько важных новостей одной строкой:
Вышел Python 3.15, но рассказывать про такое старье я как всегда не вижу смысла. Ведь мы про него рассказывали уже весь прошлый 2025 й год. Подписывайтесь [12], чтобы быть в курсе актуальных новостей, а не новостей годичной давности.
Сергей Мирянов @zzzzzzerg [13], как я писал в прошлом дайджесте [2], был выдвинут [14] и успешно принят [15] на позицию CPython core разработчика. Сергей занимается GC, что очень важная и нужная сфера в CPython. Можете поздравить Сергея в комментах!
Наконец‑то приняли мое предложение [16] (о котором я писал еще в июльском дайджесте [17]) по добавлению нового C‑API PyDict_AsFrozenDictAndClear
Ну и покажу один небольшой но интересный PR, который я недавно смерджил: https://github.com/python/cpython/pull/152632 [18] В нем я исправляю грамматику для парсинга lazy imports. Было так:
import_name[stmt_ty]:
| lazy="lazy"? 'import' a=dotted_as_names { _PyAST_Import(a, lazy ? 1 : 0, EXTRA) }
Стало так:
import_name[stmt_ty]:
| "lazy" 'import' a=dotted_as_names {
CHECK_VERSION(stmt_ty, 15, "Lazy imports are",
_PyAST_Import(a, 1, EXTRA)) }
| 'import' a=dotted_as_names { _PyAST_Import(a, 0, EXTRA) }
Что тут вообще происходит?
Данный текст — описывает формальную грамматику Python, где есть имена правил: import_name, тип C структуры для парсинга данного правила stmt_ty, варианты парсинга правила (пишутся через |), ключевые слова "lazy" и "import", действия для выполнения парсинга в C коде _PyAST_Import(a, 0, EXTRA)
Но, в Python можно использовать грамматику для парсинга еще и в виде ast.parse вызова [19], например для линтеров или тайпчекеров
А там есть параметр feature_version, чтобы парсить код из, например, Python 3.15 но для версии Python 3.12. И раньше вызов вида ast.parse('lazy import os', feature_version=(3, 12)) работал в Python 3.15+. Хотя должен был кидать SyntaxError
Потому мне пришлось разделить кейсы парсинга на две части, там где есть "lazy", я добавил CHECK_VERSION(stmt_ty, 15, "Lazy imports are", ...), чтобы вызывать правильную ошибку при feature_version меньше 3.15
Теперь все работает корректно, а вы узнали про feature_version и особенности грамматики Python. Круто?:)
Опубликовал у себя в канале свои мысли про опенсорс и ИИ. А точнее про конец опенсорса — таким каким мы его знали. И пост собрал просто кучу обсуждений.
Раз есть такой живой запрос на обсуждение: то давайте и на хабре обсудим: что будет с опенсорсом после массового появления ИИ моделей. Вот такие вводные:
CPython ограничил количество PRов от внешних контрибьюторов [21] тремя открытыми
OpenJDK запретил [22] PRы с использованием ИИ в любом виде
Litestar закрыл PRы для всех внешних контрибьюторов, поток слопа был настолько большой, что я в какой‑то момент просто бросил открывать уведомления в проекте. @PyLounge [6] написал большой пост [23] про данный случай
JazzBand после 10 лет открытой коллаборации для десятков проектов закрылся по их формулировке из‑за «слопаппокалипсиса» [24], новые участники больше не принимаются
Sindre Sorhus (один из самых популярных опенсорс разработчик в мире) закрыл все свои проекты [25] для внешних контрибьюторов
JS фреймворк hono закрывает внешние PRы [26]
Браузер LadyBird [27] закрывает внешние PRы
Платформа Codeberg объявила себя свободной [29] от LLM‑сгенерированного контента
Zig запретил использование ИИ у себя (читайте полную историю [30] про переписывание Zig → Rust и при чем тут bun)
Node.js будет молча закрывать [31] PRы с ИИ‑слопом
Linux прекращает поддержку [32] старых сетевых драйверов, чтобы справиться с количеством ИИ‑багрепортов
r/opensource запретил [33] публиковать AI‑slop проекты, формулировки у них вышли очень странные и размытые
GitHub знает о проблеме «слопа» в опенсорсе. Обсуждение [34] тут
А вот мой доклад с недавнего MoscowPython на данную тему (говорю про ту же проблему другими словами):
Но — ключевой момент всей ситуации — а что делать то? Предлагаю обсудить в комментариях. У меня пока нет ответов.
RIP #opensource, было весело!
Вышел релиз django‑modern‑rest@0.17.0 [35], мы очень значительно поработали над производительностью за последние несколько релизов. Вот и сейчас: ускорили большую часть кейсов в x1.6 и в x1.3 раза в самых горячих местах.
Мне очень нравятся цифры производительности. Уже быстрее FastAPI. А будет еще лучше!
Если еще не пробовали — смело пробуйте! У нас есть куча крутых и быстрых фич.
Django еще никогда не была настолько типизированной, приятной, удобной и быстрой!
В прошлом [2] дайджесте я показывал темный вариант темы pustota [37], а сейчас сделал светлый вариант:
Для тех, кто любит светлые темы!
А наш коллега skatromb [38] выпустил тему еще более минималистичную но похожую тему, мне очень понравилась: https://github.com/skatromb/navigate‑theme [39] Посмотрите и вы!
Библиотека, которая загружает конфиги в обычные датаклассы и проверяет типы по аннотациям. Цель простая: получить из конфига типизированный объект, а если что‑то не так, увидеть, где именно и почему: https://github.com/reagento/dature [40]
Небольшой инструмент, который помогает понять, не испортился ли ваш чат‑бот (агент) после очередных правок. Работает так: convy сам переписывается с ботом, как обычный клиент, и проверяет, правильно ли тот отвечает. Потом можно сравнить старую и новую версию и сразу увидеть, где стало хуже: https://github.com/deyna256/convy [41]
Эвент дривен фреймворк, вдохновлённый faststream, но для раста: https://github.com/powersemmi/ruststream [42]
Точные замеры HTTP по фазам и выгрузка в удобном формате (OpenTelemetry, Prometheus, JSON, HAR). Показывает, на что уходит время в каждом запросе: DNS → TCP connect → TLS handshake → ожидание сервера (TTFB) → передача тела. Результат выводится как waterfall‑таймлайн: https://github.com/ozeranskii/httptap [43]
Если вы хотите дать возможность агенту делать что‑то в Django админке — то вот библиотека для вас: https://github.com/JargeZ/django‑unfold‑agentic‑layer [44]
Идейный порт wemake‑python‑styleguide [45] для Rust! В наборе есть линты почти про всё, что по дефолту выключено: Читаемость, Размеры функций, Когнитивная сложность, Идиоматические паттерны, Паника и .unwrap() в продакшн коде: https://github.com/skatromb/easy‑peasy‑rust [46]
Потеря тасок при ООМ? Год назад столкнувшись с этим, я реализовал для своей команды 0.x версию данной очереди. Спустя около 8 месяцев успехов и фидбека — родилась вторая версия 1,x, которой я захотел поделиться с миром. Эта очередь — некий симбиоз transactional outbox и durable task queue: https://github.com/KoninMikhail/workhold‑durable‑work‑queue [47]
Совместили Telegram подобный интерфейс, принудительное сквозное шифрование и self‑hosted архитектуру. Каждый может развернуть свой сервер самостоятельно, что гарантирует нам отсутствие единой точки отказа, а протокол общения клиента с сервером — WebSocket, что делает трафик похожим на трафик обычных сайтов. E2E шифрование реализовано при помощи алгоритма Double Ratchet который был написан с нуля. Шифруем при помощи ChaChaPoly1305, ключами обмениваемся при помощи постквантового Диффи‑Хелмана. https://github.com/cathxrsys/patronus [48]
Порт docling на Расте, проект официально приняли в Linux AI community, IBM docling подписалcя. Скоро полностью заменим docling! https://github.com/docling‑project/docling.rs [49]
ETL фреймворк под питон с движком на Rust/Arrow, который грузит таблички/джисоны в/из DWH. Что‑то похожее на dlt, только по‑настоящему работающее: https://github.com/skatromb/transferred [50]
Умный UPSERT на sqlalchemy, совместимый с разными БД: https://github.com/pavel‑v‑sobolev/dbmerge [51]
benchset нужен, чтобы замерять производительность компьютера по различным метрикам: производительность CPU на 1 ядро, производительность всех доступных ядер в сумме, тд: https://github.com/mutating/benchset [52]
Extella — бесплатное приложение для Mac, Windows и Linux. Внутри — открытые проекты с GitHub, упакованные так, чтобы их можно было открыть без терминала и Docker: поставил Extella, добавил приложение на рабочий стол, работаешь. Сейчас так собрано 19 браузерных приложений: редактор схем на основе draw.io [53], Mermaid Live Editor, JSON Crack, GraphvizOnline, редактор three.js, Excalidraw, Klecks и другие. https://extella.dev/apps/diagram‑editor/ [54]
shebang [55] позволяет вам декларативно описать CLI вообще для любого скрипта. Такой, с валидациями входящих параметров, автодополнением для шелла. Смотрите как:
#!/usr/bin/env shebang
#! shebang.1
# description "Hello world"
#
# arg "source" {
# description "Copy from..."
# value "filepath" {
# type "directory"
# }
# }
# arg "to" {
# description "Copy to..."
# value "filepath" {
# glob "/archives/**"
# }
# }
cp -a "$1" $2"
Релиз arch‑blueprint 0.3: изучаем архитектуру и н т е р а к т и в н о🤌 Теперь можно сразу видеть и дерево проекта, и связи его объектов. Доступны все те же варианты модули vs классы и функции, метрики связей, группировка по неймспейсам и подсветка циклов с детализацией импортов: https://github.com/nkhitrov/arch‑blueprint [56] Обсудить релиз и задать вопросы автору можно в канале Николая Хитрова [57]
Написание читабельного кода для телеграм ботов с детерминированными сценариями, в основном для личных админок и не высоконагруженных сервисов. Доступные для Python фреймворки в основном используют FSM (конечный автомат состояний) в той или иной форме. Я же в свою очередь предлагаю иной подход, при котором не нужно выдумывать множество состояний в конечном автомате разбросанных по коду с трудно отслеживаемыми переходами. Вы просто пишите последовательный код в процедурном стиле: https://github.com/nebenwelt/pyteleflow [58]
imgproxykit — библиотека для сборки URL к imgproxy. Если не сталкивались с imgproxy: это сервер на Go (асуждаем) для обработки изображений. Формируешь для него ссылку с набором параметров обработки и оригиналом — получаешь картинку нужно размера, качества и формата. imgproxykit позволяет описать параметры python‑кодом: https://github.com/kondratevdev/imgproxykit [59]
Язык программирования для ИИ агентов. Он заставляет агентов работать с кристаллизованными контрактами, а не со свободной семантической интерпретацией текстов. Делая интерфейсы формальными, а тела реализаций — приватными, он превращает исходный код в компактный и жёсткий, не подверженный эрозии «экзоскелет», который агенты могут безопасно развивать, а люди — быстро читать. https://github.com/rete‑labs/quoll [60] Почитать и обсудить подробнее можно в канале у Феди [61]
Движок для создания презентаций с кучей анимацией и стилей. А еще умеет создавать красивые видео ролики из тех же презентаций. Код получается очень красивым! https://github.com/xfenix/slidemachina [62] Демо можно глянуть вот тут в канале у Никиты Пастухова [63]
Хотите попасть в следующий дайджест? Пишите о своем проекте в нашем чате [64], добавляйте тег #opensource, я обязательно им поделюсь!
Релизнули pytest‑mypy‑plugins@4.1.0 [65] (библиотека для тестирования mypy плагинов с pytest), поддержали mypy@2.4.0
Выпустили релиз django-stubs@6.1.2 с поддержкой mypy@2.4.0
Вышел новый dry‑python/returns@0.30.0 [66], с поддержкой mypy@2.40
Релизул jinja2-git@1.5.0 [67] плагин для отображения версии текущего коммита в jinja2 шаблонах
А если вы думаете, что я делаю что‑то полезное для мира, то поддержать можно по ссылкам:
Бусти для российских карт: https://boosty.to/sobolevn [68]
GitHub Sponsors для западных карт: https://github.com/sponsors/wemake‑services [69]
Я там ничего не продаю, просто делаю свою работу, если считаете, что я делаю полезное — можно поддержать. Если нет, то я все равно продолжу ее делать.
Подписывайтесь на главный канал [70] сообщества, если вам нравится такое читать. И возможно даже захочется поучаствовать [71]! Буду рад видеть вас частью нашего опенсорс сообщества:‑)
До встречи в следующем дайджесте и в нашем сообществе!
Автор: sobolevn
Источник [72]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/461454
Ссылки в тексте:
[1] : https://habr.com/ru/articles/1076694/
[2] ссылка на прошлый дайджест: https://habr.com/ru/articles/1091038/
[3] конференции: https://itgorky.ru/bolshaya-vstrecha
[4] на конкурента Pydantic от нашего сообщества: https://github.com/reagento/adaptix
[5] zMQTT: https://github.com/faststream-community/zMQTT
[6] @PyLounge: https://www.pvsm.ru/users/pylounge
[7] msgspec: https://github.com/msgspec/msgspec
[8] @Propan671: https://habr.com/ru/users/Propan671/
[9] https://github.com/sobolevn/ship‑it‑boardgame: https://github.com/sobolevn/ship-it-boardgame
[10] в нашем чате: https://t.me/ship_it_boardgame
[11] новая версия: 0.0.26: https://github.com/sobolevn/ship-it-boardgame/releases/tag/0.0.26
[12] Подписывайтесь: https://t.me/opensource_findings
[13] @zzzzzzerg: https://habr.com/users/zzzzzzerg
[14] выдвинут: https://discuss.python.org/t/vote-to-promote-sergey-miryanov/109283
[15] принят: https://t.me/opensource_findings/990
[16] приняли мое предложение: https://github.com/python/cpython/pull/153413
[17] в июльском дайджесте: https://habr.com/ru/articles/1065404/
[18] https://github.com/python/cpython/pull/152632: https://github.com/python/cpython/pull/152632
[19] вызова: https://docs.python.org/3/library/ast.html#ast.parse
[20] https://t.me/opensource_findings/995: https://t.me/opensource_findings/995
[21] ограничил количество PRов от внешних контрибьюторов: https://discuss.python.org/t/pull-request-limits-for-cpython-repo/109564
[22] OpenJDK запретил: https://openjdk.org/legal/ai
[23] написал большой пост: https://t.me/pylounge/1107
[24] закрылся по их формулировке из‑за «слопаппокалипсиса»: https://jazzband.co/news/2026/03/14/sunsetting-jazzband
[25] закрыл все свои проекты: https://x.com/sindresorhus/status/2105693826690298314
[26] закрывает внешние PRы: https://x.com/yusukebe/status/2107027870019445007
[27] LadyBird: https://ladybird.org/posts/changing-how-we-develop-ladybird/
[28] Godot запретил использование ИИ: https://godotengine.org/article/contribution-policy-2026
[29] объявила себя свободной: https://blog.codeberg.org/protecting-our-floss-commons-from-llms.html
[30] читайте полную историю: https://t.me/opensource_findings/963
[31] будет молча закрывать: https://github.com/nodejs/node/pull/62105/files
[32] Linux прекращает поддержку: https://rnel/git/torvalds/linux.git/commit/?id=64edfa65062dc4509ba75978116b2f6d392346f5
[33] r/opensource запретил: https://www.reddit.com/r/opensource/comments/1xelcuf/your_tokens_arent_valuable_no_more_ai/
[34] Обсуждение: https://github.com/orgs/community/discussions/185387
[35] django‑modern‑rest@0.17.0: https://github.com/wemake-services/django-modern-rest/releases/tag/0.17.0
[36] https://github.com/wemake‑services/django‑modern‑rest: https://github.com/wemake-services/django-modern-rest
[37] pustota: https://github.com/pustota-theme/pustota
[38] skatromb: https://github.com/skatromb
[39] https://github.com/skatromb/navigate‑theme: https://github.com/skatromb/navigate-theme
[40] https://github.com/reagento/dature: https://github.com/reagento/dature
[41] https://github.com/deyna256/convy: https://github.com/deyna256/convy
[42] https://github.com/powersemmi/ruststream: https://github.com/powersemmi/ruststream:
[43] https://github.com/ozeranskii/httptap: https://github.com/ozeranskii/httptap
[44] https://github.com/JargeZ/django‑unfold‑agentic‑layer: https://github.com/JargeZ/django-unfold-agentic-layer
[45] wemake‑python‑styleguide: https://github.com/wemake-services/wemake-python-styleguide
[46] https://github.com/skatromb/easy‑peasy‑rust: https://github.com/skatromb/easy-peasy-rust
[47] https://github.com/KoninMikhail/workhold‑durable‑work‑queue: https://github.com/KoninMikhail/workhold-durable-work-queue
[48] https://github.com/cathxrsys/patronus: https://github.com/cathxrsys/patronus
[49] https://github.com/docling‑project/docling.rs: https://github.com/docling-project/docling.rs#python-bindings%D0%9E%D1%84%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE
[50] https://github.com/skatromb/transferred: https://github.com/skatromb/transferred
[51] https://github.com/pavel‑v‑sobolev/dbmerge: https://github.com/pavel-v-sobolev/dbmerge
[52] https://github.com/mutating/benchset: https://github.com/mutating/benchset
[53] draw.io: http://draw.io
[54] https://extella.dev/apps/diagram‑editor/: https://extella.dev/apps/diagram-editor/
[55] shebang: https://github.com/9seconds/shebang
[56] https://github.com/nkhitrov/arch‑blueprint: https://github.com/nkhitrov/arch-blueprint
[57] в канале Николая Хитрова: https://t.me/nkhitrov_blog/585
[58] https://github.com/nebenwelt/pyteleflow: https://github.com/nebenwelt/pyteleflow
[59] https://github.com/kondratevdev/imgproxykit: https://github.com/kondratevdev/imgproxykit
[60] https://github.com/rete‑labs/quoll: https://github.com/rete-labs/quoll
[61] в канале у Феди: https://t.me/wireless_snark/124
[62] https://github.com/xfenix/slidemachina: https://github.com/xfenix/slidemachina
[63] тут в канале у Никиты Пастухова: https://t.me/fastnewsdev/423
[64] в нашем чате: https://t.me/opensource_findings_chat/
[65] pytest‑mypy‑plugins@4.1.0: https://github.com/typeddjango/pytest-mypy-plugins
[66] dry‑python/returns@0.30.0: https://github.com/dry-python/returns/releases/tag/0.30.0
[67] jinja2-git@1.5.0: https://github.com/wemake-services/jinja2-git
[68] https://boosty.to/sobolevn: https://boosty.to/sobolevn
[69] https://github.com/sponsors/wemake‑services: https://github.com/sponsors/wemake%E2%80%91services
[70] главный канал: https://telegram.me/opensource_findings
[71] поучаствовать: https://telegram.me/opensource_findings_python
[72] Источник: https://habr.com/ru/articles/1102724/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1102724
Нажмите здесь для печати.