Zen of Python
19.4K subscribers
1.34K photos
202 videos
38 files
3.42K links
Полный Дзен Пайтона в одном канале

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Автокомплит 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)
👍72
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/
🔥1161
Вебхуки в Python: почему обработка прямо в эндпоинте это ловушка

Начинающие разработчики часто пишут обработку вебхуков в лоб: получили запрос -> обновили базу -> отправили письмо -> вернули ответ. На локальной машине всё работает, но в реальности такой подход приводит к таймаутам (внешний сервис ждёт ответа секунды), потере данных (падение во время обработки) и дублям.

В статье делятся практическим опытом перехода от «просто эндпоинта» к надёжной архитектуре с очередью задач. Ключевое решение: FastAPI принимает вебхук, проверяет подпись, кладёт задачу в Redis и мгновенно отвечает. Отдельный воркер забирает задачи из очереди и спокойно выполняет бизнес-логику. Так API не тормозит, задачи не теряются, а при необходимости можно запустить несколько воркеров для горизонтального масштабирования.

Подробнее о реализации: https://habr.com/ru/articles/1016206/

@zen_of_python (теперь в VK и Max)
👍6
Вышел релиз 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)
This media is not supported in your browser
VIEW IN TELEGRAM
👍65👀3👎1🔥1
Учим LLM работать с файлами локально

На Тпрогер вышла пошаговая инструкция о том, как поднять локальную агентную AI‑систему из трёх компонентов:
— LibreChat — удобный UI для общения с LLM
— MCP‑сервер — стандартный доступ к файлам и инструментам
— Langflow — визуальный конструктор для многоступенчатых сценариев (с валидацией и расчётами)

Всё работает в изолированной Docker‑сети. Данные никуда не уходят.

В статье готовые docker-compose.yml, конфиги librechat.yaml, пример кастомного Python‑компонента для расчётов и таблиц, а также схемы работы каждого этапа.

@zen_of_python (теперь в VK и Max)
3
Разработчик запустил первый 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)
7👌2
Astral берётся за безопасность Python — тот же Ruff-подход, теперь к PyPI

Astral запускает аудит зависимостей и обнаружение вредоносных пакетов. Логика железная — uv уже стоит в точке входа миллионов проектов и видит весь граф зависимостей. Грех не проверять.

Тайпсквоттинг, малварь в PyPI, пакеты-двойники — не абстрактные угрозы. pip install reqeusts — один символ, и вы узнаёте много нового о supply chain атаках.

В Rust, Go и Node подобная инфраструктура существует давно. Python получает её теперь — и, судя по тому, как Astral делали uv и Ruff, делают это они быстро.

@zen_of_python (теперь в VK и Max)
❤‍🔥91