Хитрый Питон
2.51K subscribers
4 photos
250 links
Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm
Download Telegram
Есть такой относительно популярный LLM-gateway/SDK — LiteLLM. Он позволяет единообразно вызывать разные облачные LLM (в том числе из Vertex, Bedrock, Azure и т.д.).

Вчера его скомпрометировали: в PyPI выпустили две версии — 1.82.7 и 1.82.8 — которые, например, крадут ключи из .ssh. Если вы его используете, самое время проверить, не задело ли вас это и если задело — срочно бегите менять ключи.

Сейчас PyPI поместил проект в карантин, и скачать эти версии уже нельзя. Подробности от разработчиков: https://github.com/BerriAI/litellm/issues/24518

Оригинальный issue на GitHub атакующий заспамил комментариями в стиле “Thanks, that helped!”, чтобы усложнить дискуссию и, видимо, выиграть себе время: https://github.com/BerriAI/litellm/issues/24512
👍23🔥9
Сегодня в первую пятницу месяца как обычно в 14:00 (по мск) обсудим новости апреля в прямом эфире Moscow Python Podcast 🎙

Новости про откат GC, packaging и жизнь с БД в эпоху агентов
Ведущие: Михаил Корнеев и Григорий Петров

📍Когда и во сколько: 1 мая в 14:00 по Москве.
Подключайтесь к удобной площадке YouTube / Rutube / VK Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15
Завтра, 10 июня обсудим новости мира Python в прямом эфире Moscow Python🎙

Перенесли выпуск с пятницы на эту среду, а всё остальное будет, как вы любите — обсудим новости с Мишей Корнеевым и Гришей Петровым.

📍Когда и во сколько: 10 июня в 14:00 по Москве.
Подключайтесь к удобной площадке YouTube / Rutube / на VK Видео ссылка будет позже
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2
Уже сегодня в 14:00 (по мск) обсудим новости июня в прямом эфире Moscow Python Podcast 🎙

Обсудим с Никитой Соболевым последние интересные релизы:
🟤Что нового будет в Python 3.15
🟤Django 6.1 Beta: главные изменения и новые возможности
🟤PEP 835: сокращённый синтаксис для метаданных Annotated
🟤Небезопасные подсказки кода: можно ли считать их уязвимостью?

Основные ведущие: Михаил Корнеев и Григорий Петров

📍Когда и во сколько: 3 июля в 14:00 по Москве.
Подключайтесь к удобной площадке Youtube / Rutube
➡️ Присоединяйтесь к эфиру или смотрите в записи на любой из площадок
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12
Прикольный проект — интерпретатор «старого» Бейсика на Python. Сам проект маленький, всего около 1000 строк, поэтому, если вам интересно немного разобраться в том, как работают интерпретаторы, рекомендую посмотреть: https://github.com/nedbat/acidica
👍12🔥3
Вышла новая версия Ruff 0.16. Казалось бы, минорный релиз, но на самом деле нет. Теперь по умолчанию включено 413 правил вместо 59, поэтому, если в конфиге у вас не зафиксирован список правил, используемых на проекте, вас ждёт сюрприз.
Ради интереса прогнал Ruff на своём пет-проекте, где до обновления всё было зелёненьким. После перехода на 0.16 получил: Found 50 errors, 34 fixable. Пойду чинить 🙂

Если планируете обновляться на большой кодовой базе, сразу закладывайте время на фиксы.

Ченджлог в блоге Astral: https://astral.sh/blog/ruff-v0.16.0
👍34
GitHub запустил пару полезных фич для безопасности CI.

Во-первых, Malware Alerts. Эта штука проверяет, нет ли зависимостей проекта в базе OpenSSF Malicious Packages, и, если находит совпадение, присылает алерт. Глобально включить её пока нельзя — только отдельно для каждого репозитория. Я у себя уже включил, вот тут инструкция https://docs.github.com/en/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/configure-malware-alerts

Вторая фича - автоматическое обнаружение и блокировка небезопасных CI-пайплайнов. Если workflow выглядит потенциально вредоносным, GitHub не запускает его, пока участник с правами на запись не подтвердит запуск. Пока это работает только для публичных репозиториев.
Если интересно подробнее почитать, как могут выглядеть подобные атаки, вот хороший разбор: https://www.stepsecurity.io/blog/introducing-secret-exfiltration-protection-for-github-actions
👍18
Вышла библиотека django-orjson, которая позволяет легко перевести Django и DRF на быстрый orjson. В комплекте — JsonResponse, renderer и parser для DRF и даже сериализатор для сессий.
В принципе, идея не новая: мы у себя перевели DRF на orjson ещё года четыре назад. Но с готовым пакетом это будет гораздо проще сделать.

Тем, у кого плюс-минус нагруженный проект или просто большие JSON-запросы и ответы, рекомендую присмотреться: https://adamj.eu/tech/2026/07/15/introducing-django-orjson/
👍16
Поддержка free-threading в библиотеках сейчас один из ключевых блокеров перехода на free-treading. Поэтому я с интересом читаю статьи, которые публикуют на этот счет разработчики библиотек - не то чтобы мне это было нужно для работы, просто очень интересно. На днях наткнулся на статью, про оптимизацию NumPy - проблема была в том, что с отключенным GIL, ThreadPoolExecutor все равно работал медленнее, чем ProcessPoolExecutor. Если вам такое интересно - рекомендую почитать, но если кратко:

- Убрали локи там, где можно было обойтись без них
- Где-то перешли на immortal-объекты, чтобы перестать дергать счетчик ссылок
- Пересели с системного malloc/free на cpython-овский аллокатор, который лучше масштабируется на большое количество потоков

В результате бенчмарк вместо 44 секунд на 32 потоках начал отрабатывать за 1,5 секунды (при использовании процессов - 6 секунд). Подробнее в статье - https://labs.quansight.org/blog/scaling-numpy-on-free-threaded-python
🔥33👍5
Вместе с прогрессом llm-ок растет нагрузка на мейнтенеров проектов, это не новость и мы много раз обсуждали это в подкасте. Но вот подъехала статья с нитересными графиками по нагрузке именно связанноы с безопасностью:

- Security-отчеты на github - ~40 за весь 2025 и уже 175 за первую половину 2026
- Полноценные CVE - ~20 за 2025 и столько же только за первую треть 2026, т.е. за весь год предполагается рост в три раза

То есть рост нагрузки очень значительный, сама статься состоит почти из одних графиков https://hugovk.dev/blog/2026/security-line-goes-up/
👍8
Вышел релиз Django 6.1. Изменений не очень много:

- QuerySet.fetch_mode позволяет более гибко управлять тем, что происходит при обращении к незагруженному полю модели - делать запрос в базу, делать запрос загружая связанные сущности одним запросом или выдавать исключение. Выглядит как действительно полезная фича
- on_delete для ForeignKey теперь можно перевесить на уровень базы данных через SQL ON DELETE, раньше это делалось python-логикой
- В ORM добавлены функции для генерации UUID v4 и UUID v7 на стороне БД
- Всякие улучшения для Content Security Policy, настройки отправки email теперь конфигурируются через словарь и много всяких других мелочей

Полный ченджлог тут https://docs.djangoproject.com/en/6.1/releases/6.1/
👍16👎1
Уже завтра в 14:00 (по мск) обсудим новости июля в прямом эфире Moscow Python Podcast 🎙

Разберём самые интересные события последних недель:
🟤 PEP 836: новый план развития JIT-компилятора для CPython;
🟤 Ruff 0.16: теперь по умолчанию включены 413 правил вместо 59;
🟤 GitHub усиливает безопасность CI;
🟤 Релиз Django 6.1;
🟤 Обсудим статью In Defense of Not Understanding Your Codebase.

📍 Когда и во сколько: 7 августа в 14:00 по Москве.
➡️ Подключайтесь к эфиру или смотрите запись на YouTube, VK или Rutube.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13
Запустили опрос python-разработчиков про типизацию - в авторах опроса Astral, JetBrains, Microsoft, Meta, discuss.python.org - т.е. очень многие из тех кто реально занимается типаии/туллингом. Это ежегодная история, предыдущий отчет тут https://engineering.fb.com/2025/12/22/developer-tools/python-typing-survey-2025-code-quality-flexibility-typing-adoption/ - мы кажется обсуждали его в подкасте.

Если вы активно используете аннотации типов - сходите пройдите, важно давать обратную связь разработчикам, я уже прошел https://www.surveymonkey.com/r/python_typing
🔥7👍4
С 2028 года Django переходит на ежегодные релизы, при этом каждый такой релиз будет LTS с тремя годами поддержки. С одной стороны, разработка вроде как замедлится, а с другой стороны, с крупными релизами больше шансов протащить крупные системные изменения. Плюс, конечно, тем, кто поддерживает сайты на Django, не придётся больше заморачиваться с LTS — не LTS.

Django 6.2 LTS в апреле 2027 станет последним релизом со "старой" нумерацией, в январе 2028 выйдет уже Django 2028. https://www.djangoproject.com/weblog/2026/aug/10/annual-release-cycle/
👍25👎2