20070
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
В Long Beach на PyCon US 2026 14 мая прошёл Typing Summit: четыре часа, восемь докладов, один трек. Несколько моментов с саммита.
Гвидо ван Россум открыл саммит докладом про то, что правило PEP 484 «никакого нового синтаксиса для типов» де-факто давно нарушено: TypedDict, ParamSpec, оператор type и прочее. Его аргумент: пора признать это формально и выбирать приоритеты по реальной боли пользователей. Опирался на Python Typing Survey 2025.
Дуглас Креагер из Astral (его слайд гласил «an OpenAI joint») показал девятистрочный пример, на котором все продакшен-чекеры (mypy, pyright, pyre, Pyrefly, ty) дают неверный ответ:
def choose[A](a1: A, a2: A) -> A:
return random.choice([a1, a2])
def partial[X, Y, Z](fn: Callable[[X, Y], Z], x: X) -> Callable[[Y], Z]: ...
p = partial(choose, None)
p(2) # все говорят: ошибка, 2 не None
p("hello") # то же самое
choose(None, 2) работает корректно: A решается в None | Literal[2]. После применения partial система ломается. Креагер предлагает другую стратегию: тянуть весь набор констрейнтов как отложенный обобщённый тип, без преждевременной подстановки. ty переезжает на этот подход, внутри используется тернарная структура BDD (двоичные решающие диаграммы с третьим «неопределённым» ребром).
В Python 3.14 в стандартную библиотеку добавили модуль concurrent.interpreters: публичный API для запуска нескольких полноценных интерпретаторов внутри одного процесса.
Это финал длинной истории. PEP 554 в 2017 году описал идею, PEP 684 в 2023 дал каждому интерпретатору собственный GIL, и PEP 734, принятый в июне 2025, превратил всё это в стандартный Python-модуль. До 3.14 функционал был доступен только через C API.
API ровно такой, какой ожидаешь:
import concurrent.interpreters as interpreters
interp = interpreters.create()
interp.exec('print("Hello from subinterp")')
interp.close()
pickle.multiprocessing. Каждый интерпретатор едет на своём GIL и параллельно работает на отдельном ядре.asyncio. CPU-bound подзадачи можно гонять в субинтерпретаторах, а сетевой ввод-вывод оставить в основном цикле событий.fork и spawn.
Выбор библиотеки для логирования в Python, автор сделал свежий обзор, кратко перескажу.
Стандартный logging остаётся базой — им пользуются все фреймворки и библиотеки, и через него проходит интеграция с OpenTelemetry. Но конфигурация через dictConfig не самая удобная, а контекст на уровне запроса приходится прокидывать вручную через contextvars.structlog — главный кандидат на замену. Процессорный pipeline из коробки даёт redaction, enrichment и sampling. contextvars работают через asyncio без дополнительного кода. При этом можно оставить stdlib на бэке — вся хэндлер-экосистема сохраняется. По бенчмаркам structlog примерно в 2 раза быстрее stdlib и Loguru: 242k ops/s против 139k и 147k соответственно.Loguru — минимум setup, но ценой глобального логгера без иерархии компонентов. Нет нативной OpenTelemetry-интеграции, только через InterceptHandler в обход.Logbook — legacy от Armin Ronacher. Нет structured JSON из коробки, нет OTel. Для новых проектов не рекомендуется.picologging — drop-in replacement на C от Microsoft, в 4–17 раз быстрее, но проект не поддерживается с 2023 года, нет поддержки Python 3.13+. Не для продакшена.
Главный вывод статьи: выбор библиотеки менее важен, чем практики. Structured output, консистентный контекст, правильные уровни и чистота полей — вот что делает логи полезными в production. Если stdlib с python-json-logger работает, не мигрируйте ради миграции. Если boilerplate мешает — берите structlog.
@zen_of_python
«Хочу в IT, но не знаю куда» — это нормально. Вот тест, который помогает разобраться
Тестировщик, системный разработчик, сетевой администратор, инженер по железу — когда только входишь в профессию, все звучит одинаково непонятно. И выбрать направление наугад — не лучший план.
YADRO — одна из самых быстрорастущих технологических компаний страны — сделали квиз на основе реальных задач своих стажировок. Семь вопросов без правильных и неправильных ответов: просто выбираете то, что откликается. На выходе — конкретное направление с описанием задач и честной вилкой зарплат после стажировки.
Полезно даже не для того, чтобы попасть именно в YADRO — а чтобы понять, в какую сторону вообще смотреть.
Пройти квиз: https://tprg.ru/9Dic
@zen_of_python (теперь в VK и Max)
Исследуйте инструменты для разработчиков в системе SourceCraft в новом квесте с космическими призами! https://tprg.ru/nDdZ
@zen_of_python
Устали от уймы API-ключей и танцев с бубном вокруг OpenAI, Claude и Gemini?
Снять эту головную боль может один API-роутер.
Разбираемся на Tproger, почему три разных API могут тормозить ваш проект и как подключить GPT-5.4, Claude Sonnet 4.6 и Gemini 3.1 Pro через единую точку входа без переписывания кода.
Кратко о содержании:
— Что умеет хороший роутер: fallback, балансировка, кеш, единый биллинг.
— Пошаговый гайд подключения через одни API на Python и Node.js.
— Реальный кейс: мультимодельный бот с авто-переключением за 30 минут.
— Подводные камни: контекстные окна, latency, rate limits (и как их обойти).
Читать материал: https://tprg.ru/YWhU
@zen_of_python (теперь в VK и Max)
Разработчик запустил первый PyPI-пакет repowise (инструмент для автоматической генерации wiki-документации по кодовой базе) и через несколько дней обнаружил три copycat-пакета, выложенных одновременно с идентичным описанием: «base intelligence ahead — performs every dimension».
Оказалось, это не просто спам-пустышки. Автор-одиночка форкнул его код (лицензия AGPL-3.0), прогнал через LLM для мелких правок, выложил под тремя разными именами без указания источника и без соблюдения условий лицензии.
Два важных тейка из обсуждения в треде:
— Про AGPL и ИИ-генерированный код. Даже если 95% нового пакета написано нейросетью, а вы внесли только 5% оригинального кода, то лицензия оригинала всё равно распространяется на весь форк. Это не меняет юридический статус AGPL. Отдельный спорный момент: код, созданный ИИ не во всех странах защищён авторским правом вообще.
— Про PyPI security. Команда безопасности PyPI разобрала репорт за 48 часов. Пакеты были удалены. Жаловаться стоит через форму malware («Report a security vulnerability»), а не через общую поддержку. Параллельно можно отправить DMCA-запрос на GitHub.
@zen_of_python (теперь в VK и Max)
Вышел релиз Niquests 3.18. Это современный HTTP-клиент для Python, разработка которого длится уже три года. Автор создал его как форк классической библиотеки requests, развитие которой практически остановилось.
Главная фишка Niquests в том, что это полная замена старой библиотеки. Вы можете просто написать import niquests as requests и ваш старый код, куки, авторизация и зависимости продолжат работать без изменений, но уже на новых технологиях.
Что появилось под капотом за это время:
— поддержка HTTP/2 из коробки и HTTP/3 (QUIC) при поддержке со стороны сервера;
— системное хранилище сертификатов по умолчанию (больше не нужно таскать за собой certifi);
— встроенные асинхронные методы (Async/Await);
— поддержка WebSocket и SSE через единый API;
— кастомные настройки DNS (over HTTPS, TLS, QUIC).
В реальных бенчмарках на тысячу запросов Niquests показывает среднее время в 0,55 секунды, обгоняя aiohttp (1,35 сек) и httpx (2,08 сек). Отличное обновление, если вам нужны современные стандарты протоколов, но нет желания переписывать всю сетевую логику в старых проектах.
Ссылка на репозиторий: https://github.com/jawah/niquests
@zen_of_python (теперь в VK и Max)
Django получил новый REST-фреймворк: быстрее, строже и без привязки к моделям
Для Django долгое время было два основных пути: DRF с его сериализаторами, привязанными к моделям, и django-ninja, который пытался повторить FastAPI, но в итоге принёс свои ограничения. Ни один из них не давал полной типизации, гибкости в выборе моделей данных и внятной OpenAPI-спеки из коробки.
Новый фреймворк, созданный core-разработчиком CPython, предлагает альтернативу. Его ключевые особенности:
— производительность на уровне FastAPI (всего на 30% медленнее без учёта БД);
— полная типизация, но без навязывания;
— поддержка любых моделей: pydantic, msgspec, dataclasses, TypedDict и даже собственных сериализаторов;
— строгая валидация ответов в dev-режиме — OpenAPI-спека всегда соответствует реальности;
— нативная работа с sync и async;
— стриминг (SSE, JsonLines) на ASGI;
— расширяемые контроллеры-классы, которые наследуют обычные Django View.
Проект уже содержит удобные инструменты для тестирования (polyfactory, schemathesis, tracecov) и позиционируется как AI-first: есть скилы для миграции с django-ninja, llms-full.txt и интеграции с агентами.
Подробности, примеры кода и философия разработки в статье: https://habr.com/ru/articles/1017036/
Частая ошибка начинающих в анализе данных — перебирать строки таблиц через обычные циклы for. На больших объемах такой скрипт может зависнуть надолго, потому что чистый Python просто не рассчитан на тяжелые математические расчёты.
В этом кроется главная ценность библиотек Pandas и NumPy: они не просто сокращают код, но ещё используют векторизацию — вычисления передаются на уровень оптимизированного низкоуровневого кода. В результате то, что на чистом Python занимает 50 строк и считается 10 минут, в Pandas делается одним методом и отрабатывает за секунды.
Если вы уже пишете на Python, но хотите уверенно работать с данными и перестать писать медленные «велосипеды», обратите внимание на курс «Python для анализа данных» от Яндекс Практикума PRO.
За 3 месяца вы освоите:
— Продвинутый Pandas и NumPy: векторизация, фильтрация аномалий, сводные таблицы и очистка «грязных» датасетов.
— Визуализацию: построение понятных графиков через Plotly, Matplotlib и Seaborn.
— Математическую базу: теория вероятностей, статистические тесты и грамотное проведение A/B-тестирований (чтобы не путать случайность с закономерностью).
— Основы ML: базовые модели машинного обучения для предсказаний на основе табличных данных.
Курс рассчитан на специалистов, которые хотят расширить свой стек или плавно перекатиться в Data Science. На бесплатной вводной части можно оценить, подходит ли вам курс: https://tprg.ru/bLs0
Реклама. Рекламодатель: АНО ДПО «Образовательные технологии Яндекса» ИНН 7704282033, erid: 2W5zFGYwtqw
@zen_of_python (теперь в VK и Max)
Вышло крупное обновление для NServer — минималистичного Python-фреймворка, который позволяет легко создавать кастомные DNS-серверы с помощью понятного API.
Что нового:
Главная фишка версии 3.2.0 — полноценная многопоточность. Раньше всё работало в один поток, и если серверу нужно было сделать тяжелый блокирующий запрос (например, сходить в базу данных на 10–100 мс), пропускная способность моментально падала с 10 000 до 25 запросов в секунду.
Теперь архитектура разделена на три пула потоков:
1. Для приёма входящих DNS-запросов.
2. Настраиваемое количество воркеров для обработки логики.
3. Поток для отправки ответов.
По словам автора, с новой архитектурой сервер уверенно держит от 300 до 1200 запросов в секунду даже при наличии тех самых блокирующих задержек в коде. В синтетических TCP-бенчмарках NServer даже обошёл популярный CoreDNS (когда тот используется как балансировщик) и некоторые серверы, написанные на C.
Полный ченжлог: https://nhairs.github.io/nserver/latest/changelog/
@zen_of_python (теперь в VK и Max)
OpenAI покупает Astral, которая известна в сообществе Python благодаря созданию сверхбыстрых инструментов разработки uv, Ruff, ty. Команда Astral перейдёт в подразделение, занимающееся развитием ИИ-ассистента Codex.
Как по мне это звучит как «корпорация зла покупает компанию добра».
Что это значит для разработчиков:
— Обещают, что инструменты не бросят: Глава Astral Чарли Марш заявил, что после закрытия сделки OpenAI продолжит финансово и технически поддерживать их популярные open-source проекты (линтер Ruff и менеджер пакетов uv).
— Интеграция с Codex: OpenAI планирует глубоко интегрировать технологии Astral в свой ИИ-ассистент Codex. Цель — создать систему, которая будет не просто писать код, но и автономно работать со всей инфраструктурой разработки (линтерами, тестами и зависимостями).
— Конкуренция на рынке: По словам представителей OpenAI, аудитория Codex выросла в три раза с начала года и достигла 2 млн активных пользователей в неделю. Покупка Astral — это явный шаг для усиления позиций в борьбе с Anthropic (Claude) и Cursor на рынке ИИ для разработчиков.
Финансовые условия сделки пока не разглашаются.
@zen_of_python (теперь в VK и Max)
Оказывается, есть отдельная команда Faster CPython — отдельные люди, которые целенаправленно занимаются ускорением эталонного интерпретатора языка.
В прошлом году они лишились главного спонсора, а первые версии JIT в Python 3.13 и 3.14 работали медленнее обычного интерпретатора. В тот момент казалось, что они чем-то странным занимаются.
Но сейчас разработка JIT для Python 3.15 неплохо продвинулась: на macOS AArch64 альфа-версия работает на 11-12% быстрее, а на x86_64 Linux прирост составляет 5-6%.
В статье есть подробности за счёт чего получается: https://fidget-spinner.github.io/posts/jit-on-track.html
@zen_of_python (теперь в VK и Max)
PyTogether — браузерная IDE для совместного написания кода на Python. Проект создавался с прицелом на новичков, репетиторов и проведение технических интервью, где главное — это простота и фокус на общении, а не настройка окружения.
Главные фишки платформы:
— Client-side выполнение: код выполняется прямо в браузере через Pyodide (WebAssembly), что делает платформу безопасной (песочница) и позволяет моментально использовать тяжелые библиотеки вроде NumPy и Matplotlib.
— Инструменты для общения: можно не только вместе писать код (через движок Y.js), но и рисовать прямо поверх редактора, а также общаться во встроенном голосовом и текстовом чате.
— Embed-виджеты: любой сниппет кода можно встроить к себе на сайт через iframe (отличная замена закрывающемуся сервису trinket.io).
— Никакого ИИ: автор принципиально не встраивал ИИ-помощников и Copilot, так как многие преподаватели просят чистую среду для обучения.
Проект написан на React + Django, использует Redis и Celery для умного автосохранения. Исходный код полностью открыт на GitHub, так что при желании платформу можно развернуть на своём сервере через Docker: https://github.com/SJRiz/pytogether
Попробовать в песочнице без регистрации: https://pytogether.org/playground
На видео демо совместной работы в стиле Google Docs.
@zen_of_python
Разработчик провёл масштабное исследование всех способов ускорить Python. Взял классические математические тесты (n-body, spectral-norm) и пайплайн обработки JSON, а затем прогнал их вообще через всё: от разных версий CPython и PyPy до Numba, Cython, Mojo и связки Rust/PyO3.
Самые интересные результаты бенчмарков:
— GraalPy стал главным сюрпризом. На задаче spectral-norm он разогнал выполнение в 66 раз без единого изменения в исходном коде, обогнав даже скомпилированный Cython;
— в самом Cython нашлась неприятная подстава с типами. Оказалось, что возведение в дробную степень через стандартный оператор ** работает в 40 раз медленнее, чем прямой вызов сишной функции libc.math.sqrt() с типизированными даблами;
— компилятор Cython никак не предупреждает о таких просадках при сборке. Код успешно компилируется, но теряет огромную долю потенциального ускорения.
В итоге для реального продакшена самым стабильным вариантом остаётся классический подход. Проще всего держать основную бизнес-логику на обычном интерпретаторе, а точечные узкие места переписывать на Rust или выносить в C-расширения. Код всех проверок и итоговые графики выложены в открытый доступ на гитхабе.
@zen_of_python (теперь в VK и Max)
vLLM-инференс в облаке без собственной инфраструктуры
Selectel запустил Foundation Models Catalog — управляемый сервис, где вы выбираете модель из каталога, а провайдер берёт на себя GPU, масштабирование и наблюдаемость. Движок под капотом: vLLM, питоновская библиотека поверх PyTorch, которую сейчас называют производственным стандартом для инференса.
Что это даёт на практике: вместо того чтобы поднимать свой vLLM-сервер, арендовать GPU и настраивать мониторинг, вы обращаетесь к уже готовому OpenAI-совместимому эндпоинту через openai-клиент или requests. Код тот же, что при локальном запуске. Автомасштабирование, логи и метрики включены.
В каталоге сейчас IBM Granite, Qwen, DeepSeek, Phi, Mistral; скоро Gemma и Whisper. Оплата пока за вычислительные ресурсы, следующим шагом станет тарификация по токенам.
Подробнее на Tproger.
@zen_of_python (теперь в VK и Max)
Pyrefly — быстрый type checker и language server для Python — добрался до релиза версии 1.0
С бета-версии в ноябре 2025 года прошло больше 60 выпусков. Diagnostics после сохранения ускорились в 2–125 раз, полная проверка крупных проектов — на 20–36%, памяти стало меньше на 40–60%. Соответствие спецификации Python typing выросло с 70% до 90%.
Добавили пресеты конфигурации: от отключённых проверок до strict. Для проектов без конфига — автоматический lightweight basic preset, для миграции с mypy и pyright — автоматическая конвертация настроек.
Улучшили LSP: Safe Delete, точная навигация, hover cards с богатой информацией. Полная поддержка Jupyter notebooks на уровне обычных .py файлов. Расширили поддержку Django, Pydantic, Pytest.
Два новых инструмента для внедрения в существующие кодовые базы: coverage report и baseline files (снимок текущих ошибок, чтобы показывать только новые).
Не скажу, что я план фанат, мне больше по душе ty, но они пока что на версии 0.0.35 т.е. сами дают понять, что делают крутую штуку, но в прод рановато.
@zen_of_python (теперь в VK и Max)
Откуда в России взялись программисты — история, которую вам не рассказывали
Если вы думаете, что российский IT начался с нулевых — нет. Всё началось на несколько десятилетий раньше, в закрытых НИИ и институтских подвалах.
В конце 1940-х Советскому Союзу понадобились вычислительные машины — моделировать ядерные реакции и считать ракетные траектории вручную было нереально. Учёный Сергей Лебедев построил первую советскую ЭВМ, а потом серию БЭСМ. Пиковая модель, БЭСМ-6, выпускалась почти 20 лет — именно на ней учили программированию в лучших технических вузах.
Культура, сложившаяся в условиях жёстких ограничений, никуда не исчезла. Она и стала фундаментом для Яндекса, Контура и всего остального российского бигтеха.
Читайте все 7 фактов на Tproger
@tproger
Читайте также в VK, Max и Дзен
Как писать Python-библиотеки в 2026 году — гайд от разработчика, который недавно прошёл этот путь в продакшене.
Основной тезис: экосистема Python наконец-то консолидировалась. Вместо десятка разрозненных инструментов теперь можно обойтись экосистемой Astral.
Стек:
— uv init --lib my-package — проект за одну команду, src-структура, pyproject.toml, .python-version сразу на месте
— ruff — линтинг и форматирование в одном флаконе
— mypy или ty / pyrefly — типизация (автор рекомендует попробовать все три, uv позволяет быстро переключаться)
— pytest + pytest-cov — тесты с coverage
— uv run --python 3.12 — тестирование на разных версиях Python без tox и nox
— pre-commit + CI — контроль качества до момента коммита и при релизе
Ключевой инсайт: uv настолько хорош, что для внутренних библиотек даже не обязательна публикация в PyPI. Можно ставить прямо из git-репозитория: uv add /path/to/my-package, и uv сам разберётся с билдом, кэшем и линковкой.
В конце автор разбирает реальные стеки openai-python и polars. Оба уже на ruff, но openai ещё на старом билд-инструменте (hatchling через rye), а polars обходит стандартный подход из-за Rust-ядра.
Полный гайд: https://stephenlf.dev/blog/python-library-in-2026/
В Python-сообществе обсуждают свежий PEP 831 под названием «Frame Pointers Everywhere». Авторы предлагают начиная с Python 3.15 по умолчанию собирать CPython и все Си/Rust-расширения с включёнными указателями фреймов (frame pointers).
Зачем это нужно?
Исторически компиляторы (GCC/Clang) для оптимизации вырезают указатели фреймов, освобождая один регистр процессора для вычислений. Проблема в том, что без этих указателей внешние профайлеры (perf, py-spy) и eBPF-тулы не могут нормально размотать стек вызовов. Вы пытаетесь понять, почему тормозит ваш бэкенд, открываете flame-граф, а там вместо нормального трейса — обрывки сишных функций и сломанный стек.
PEP 831 предлагает добавлять флаги --fno-omit-frame-pointer --mno-omit-leaf-frame-pointer при сборке как самого интерпретатора, так и всех сторонних пакетов, которые компилируются через sysconfig.
Главные тезисы предложения:
— Системная наблюдаемость из коробки. Любые профилировщики смогут строить идеальные flame-графы для Python-процессов без костылей.
— Нужна поддержка всей экосистемы. Цепочка фреймов работает только если все звенья (CPython, ваши C-экстеншены, библиотеки на Rust) собраны с флагами. Одна библиотека без указателей, и трейс ломается для всего процесса.
— Производительность почти не страдает. Авторы замерили падение производительности: в среднем оно составляет менее 2%. А на задачах, сильно нагружающих eval-loop, код парадоксальным образом работает даже на 1–2% быстрее из-за лучшего распределения инструкций в кэше процессора.
— Уже протестировано в бою. Все бинарники python-build-standalone (которые под капотом использует тот же uv) уже давно собираются с этими флагами. То есть половина современного питона уже работает с frame pointers, PEP просто хочет сделать это официальным стандартом.
Для тех, кому нужен каждый процент перформанса (например, в жёстком числовом дробилове), оставят флаг --without-frame-pointers при сборке интерпретатора. На Windows изменения никак не повлияют, там механизм размотки стека работает иначе и проблем с профайлингом нет.
Метрики по производительности на скрине.
@zen_of_python (теперь в VK и Max)
Astral берётся за безопасность Python — тот же Ruff-подход, теперь к PyPI
Astral запускает аудит зависимостей и обнаружение вредоносных пакетов. Логика железная — uv уже стоит в точке входа миллионов проектов и видит весь граф зависимостей. Грех не проверять.
Тайпсквоттинг, малварь в PyPI, пакеты-двойники — не абстрактные угрозы. pip install reqeusts — один символ, и вы узнаёте много нового о supply chain атаках.
В Rust, Go и Node подобная инфраструктура существует давно. Python получает её теперь — и, судя по тому, как Astral делали uv и Ruff, делают это они быстро.
@zen_of_python (теперь в VK и Max)
Учим LLM работать с файлами локально
На Тпрогер вышла пошаговая инструкция о том, как поднять локальную агентную AI‑систему из трёх компонентов:
— LibreChat — удобный UI для общения с LLM
— MCP‑сервер — стандартный доступ к файлам и инструментам
— Langflow — визуальный конструктор для многоступенчатых сценариев (с валидацией и расчётами)
Всё работает в изолированной Docker‑сети. Данные никуда не уходят.
В статье готовые docker-compose.yml, конфиги librechat.yaml, пример кастомного Python‑компонента для расчётов и таблиц, а также схемы работы каждого этапа.
@zen_of_python (теперь в VK и Max)
Вебхуки в Python: почему обработка прямо в эндпоинте это ловушка
Начинающие разработчики часто пишут обработку вебхуков в лоб: получили запрос -> обновили базу -> отправили письмо -> вернули ответ. На локальной машине всё работает, но в реальности такой подход приводит к таймаутам (внешний сервис ждёт ответа секунды), потере данных (падение во время обработки) и дублям.
В статье делятся практическим опытом перехода от «просто эндпоинта» к надёжной архитектуре с очередью задач. Ключевое решение: FastAPI принимает вебхук, проверяет подпись, кладёт задачу в Redis и мгновенно отвечает. Отдельный воркер забирает задачи из очереди и спокойно выполняет бизнес-логику. Так API не тормозит, задачи не теряются, а при необходимости можно запустить несколько воркеров для горизонтального масштабирования.
Подробнее о реализации: https://habr.com/ru/articles/1016206/
@zen_of_python (теперь в VK и Max)
Автокомплит Python в VSCode работает не всегда логично. Например, при вводе os. редактор первой строкой предлагает редкий метод os.abort вместо нужного os.path или os.remove.
И вот одному разработчику это надоело и он написал своё решение. Внимание, без ИИ. Просто по сути пересортировал по частоте использования. Алгоритм интегрирован через форк LSP для изменения порядка подсказок
Главное преимущество в скорости. Обычный поиск по таблице работает намного быстрее автокомплитов на базе ИИ и совершенно не грузит процессор. Алгоритм может хуже справляться с неизвестным кодом, но для стандартных библиотек как будто маст хэв, минусов не вижу.
Детальный разбор в блоге: https://matan-h.com/better-python-autocomplete
Исходный код проекта: https://github.com/matan-h/pyhash-complete
@zen_of_python (теперь в VK и Max)
У популярной библиотеки litellm (обертка для работы с разными LLM API) взломали релизы на PyPI. Скомпрометированы версии 1.82.7 и 1.82.8.
Злоумышленники залили заражённые пакеты напрямую в PyPI в обход пайплайнов на GitHub. Внутри лежит вредоносный файл litellm_init.pth, который автоматически срабатывает при старте абсолютно любого Python-процесса в заражённом окружении.
Что делает этот скрипт:
— собирает ваши SSH-ключи, файлы .env, доступы к AWS, GCP, Azure и конфиги Kubernetes;
— архивирует данные, шифрует их и сливает на сторонний сервер models.litellm.cloud;
— если находит токен Kubernetes, пытается расползтись по кластеру, создать привилегированные поды на всех нодах и прописать бэкдор в автозагрузку системы.
Самое забавное, что обнаружили атаку ребята из FutureSearch из-за глупого бага самих хакеров. Зловред при запуске плодит дочерний Python-процесс, который из-за логики работы .pth файлов снова вызывает зловред. Возникает бесконечная форк-бомба, которая моментально вешает систему намертво, что и привлекло внимание разработчиков.
Если вы ставили или обновляли litellm 24 марта 2026 года или позже, обязательно проверьте версию через pip show litellm и почистите кеши pip или uv. Зараженные релизы уже снесли с PyPI, но они могли остаться локально. Если вредонос успел запуститься на вашей машине или сервере, придется менять абсолютно все ключи, пароли и токены, до которых он мог дотянуться.
@zen_of_python (теперь в VK и Max)
Один из мейнтейнеров фреймворка Pydantic AI (это популярный Python-инструмент для создания ИИ-агентов, который гарантирует строгую типизацию и валидацию данных при общении с нейросетями) написал большой пост о наболевшей проблеме.
За последние 15 дней команда получила 136 пулл-реквестов. Из них приняли только 39, а 97 пришлось закрыть. Причина — это низкокачественный, сгенерированный нейросетями код, который авторы даже не пытались проверить.
Доходит до абсурда: как только в репозитории появляется новый репорт о баге, уже через несколько минут прилетают сразу несколько бессмысленных PR с «исправлениями», которые просто скопированы из ответа Claude или ChatGPT. Это отнимает у разработчиков кучу времени на ревью и мешает развивать проект.
Как они планируют с этим бороться:
— Автоматически закрывать любые PR, если они не привязаны к существующему Issue и не обсуждались заранее с командой (исключение — только мелкие опечатки).
— Мгновенно отклонять PR, если автор проигнорировал прямые указания мейнтейнера в ветке обсуждения.
Авторы подчёркивают, что всё ещё любят open-source и ждут новых контрибьюторов, но просят прекратить бездумно прогонять их комментарии через ИИ-ассистентов.
@zen_of_python (теперь в VK и Max)
22 апреля в Москве пройдет конференция по искусственному интеллекту «MLечный путь»
Это мероприятие от облачного провайдера Selectel для тех, кто не просто следит за хайпом вокруг ИИ, а внедряет модели в продакшн или управляет этим процессом. Программа разделена на два трека: для бизнеса и для технических специалистов.
В техническом блоке доклады про:
— Выбор серверного железа под разные типы ИИ-нагрузок.
— Особенности SDLC для вероятностных систем.
— Безопасность при использовании генеративных технологий в рабочих процессах.
— Как сочетать инференс классических моделей и LLM на одной платформе.
В бизнес-треке — темы про окупаемость, риски и дорожные карты внедрения.
Участие бесплатное, но количество мест ограничено.Подробная программа и регистрация — на сайте мероприятия.
Это #партнёрский пост
Создайте своего бота-голосового помощника под управлением ИИ на онлайн-курсе: «Диалоговые боты и голосовые помощники»
Записывайтесь на открытый вебинар — познакомьтесь с программой обучения и преподавателями!
Вебинар: «Телеграм-бот с искусственным интеллектом на Python»
13 апреля в 20:00 мск
На открытом уроке вы узнаете:
🔘как зарегистрировать бота через BotFather и получить Телеграм-токен;
🔘что такое LLM-API (на примере бесплатных аналогов) и как его подключить;
🔘структуру простого Python-проекта: библиотека aiogram + openai;
🔘код: обработчик сообщений, который передаёт текст в LLM и возвращает ответ пользователю;
🔘запуск бота локально.
Записывайтесь ➡️ OTUS.RU
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Несколько топовых Python-модулей, про которые не все знают
1. Tenacity (и обертка Stamina)
Мощная библиотека для настройки retry-логики. Вместо того чтобы писать самописные циклы с time.sleep(), вы просто вешаете один декоратор над функцией. Он позволяет из коробки настроить экспоненциальную задержку (exponential backoff), лимит попыток и срабатывание только на определенные типы исключений.
2. Shelve
Недооцененный модуль из стандартной библиотеки Python. Это персистентный словарь, который автоматически сохраняет свои данные в локальный файл. Идеально подходит для кэширования или сохранения стейта в простеньких CLI-скриптах, когда разворачивать даже SQLite — это оверкилл. Вы просто открываете его как обычный dict, пишете данные и закрываете.
3. Polars
Сверхбыстрая альтернатива Pandas, написанная на Rust. Скорость загрузки просто космос, быстрая обработка гигантских CSV-файлов, с которыми классический Pandas начинает тормозить.
4. Marimo
Современная замена Jupyter Notebooks. Это реактивные ноутбуки для Python, которые гарантируют воспроизводимость (нет проблемы скрытого состояния ячеек). В комментариях советуют использовать Marimo в связке с тем же Polars и DuckDB для максимально комфортного анализа данных.
@zen_of_python (теперь в VK и Max)
Как ML помогает тестировать то, что нельзя предсказать вручную?
В новом материале — кейс о том, как спроектировать систему динамической генерации тестовых сценариев для транспортного проекта. За основу взято имитационное моделирование с элементами ML.
В статье подробное описание архитектуры решения:
— пайплайн из Great Expectations, Evidently AI, DVC и Airflow;
— три слоя данных: продовые срезы, обезличенные профили и «мутации» аномалий от ML;
— а еще швейцарский сыр.
Как он там оказался, читайте в статье.
@zen_of_python (теперь в VK и Max)