Zen of Python
19.9K subscribers
1.32K photos
193 videos
38 files
3.38K links
Полный Дзен Пайтона в одном канале

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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Весь год вы носили футболки и джинсы… Хватит!

Заглядывайте к нам в виртуальную примерочную и выбирайте себе идеальный скин для встречи Нового года.

Осторожно, эти наряды могут наповал сразить ваших коллег…

Реклама
👍4🤣31
Tryolabs опубликовали 11-й ежегодный топ Python-библиотек

Команда перелопатила сотни проектов и отобрала те, что реально полезны в продакшене. Критерии: практическая польза (не хайп), активная поддержка, понятная ценность для разработчика. AI-библиотек могло быть 90%, но список специально разделили на две части.

➡️ Категория «Не ИИ»

0️⃣ty — тайпчекер на Rust от Astral (авторы ruff и uv). Инкрементальный анализ на уровне функций — меняешь одну функцию, перепроверяется только она

1️⃣complexipy — измеряет когнитивную сложность кода (не цикломатическую). Есть GitHub Action, pre-commit хук и расширение для VS Code

3️⃣Kreuzberg — извлекает данные из 50+ форматов, работает на Rust, биндинги для Python/TS/Ruby/Go. Есть CLI, REST API и MCP-сервер

3️⃣throttled-py — rate limiting с пятью алгоритмами (Fixed Window, Token Bucket, GCRA и др.), поддержка Redis и async

4️⃣httptap — waterfall-визуализация HTTP-запросов: DNS, TLS handshake, время ответа — всё по фазам

5️⃣fastapi-guard — security-мидлварь для FastAPI: IP-фильтры, геоблокировка, детект SQL-инъекций

6️⃣modshim — оверлей модификаций поверх чужих модулей без monkey-patching и форков

7️⃣Spec Kit — спецификации как источник истины для AI-ассистентов. Пишешь spec → AI генерит код по плану, а не угадывает (и всё же что-то про ИИ — прим. ред.)

8️⃣skylos — поиск мёртвого кода + детект уязвимостей, включая паттерны vibe-coded кода

9️⃣FastOpenAPI — автогенерация OpenAPI-документации для Flask, Falcon, Tornado, Django и ещё 4 фреймворков

➡️ Категория «AI/ML/Data»

0️⃣MCP Python SDK + FastMCP — стандарт подключения LLM к внешним данным (Anthropic)

1️⃣TOON — Token-Oriented Object Notation, JSON-like, но YAML-стиль для вложенности + CSV-формат для массивов. Экономия 40-60% токенов, заголовки с длиной помогают LLM валидировать структуру

3️⃣Deep Agents — агентный фреймворк с planning через write_todos/read_todos, файловой системой (ls, read_file, edit_file), спавном субагентов

3️⃣smolagents — агенты в ~1000 строк кода. LLM пишет действия как Python, а не JSON → на 30% меньше шагов на бенчмарках. Поддержка любых LLM, E2B/Docker/WASM sandbox

4️⃣LlamaIndex Workflows — event-driven архитектура: степы + события вместо DAG. Async-first, автовывод типов из аннотаций, стриминг результатов, чекпоинты для возобновления

5️⃣Batchata — единый интерфейс для batch API Anthropic/OpenAI/Gemini. Экономия 50%, лимиты по стоимости, dry-run для оценки расходов, Pydantic-валидация выходов

6️⃣MarkItDown — PDF/DOCX/PPTX/Excel/HTML/аудио → Markdown. Сохраняет структуру (заголовки, таблицы, списки)

7️⃣Data Formulator — визуализация через natural language + drag-n-drop. Указываешь поля которых ещё нет («profit_margin») → AI генерит трансформацию

8️⃣LangExtract — извлечение структурированных данных с точной привязкой к позиции в тексте (character offset). Критично для медицины/юридики. Few-shot, чанкинг для длинных документов, HTML-визуализация

9️⃣GeoAI — мост между PyTorch/Transformers и геоданными. Поиск спутниковых снимков → подготовка датасета → обучение → инференс → визуализация через Leafmap

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1162
pyreqwest — новый HTTP-клиент на Rust для Python. GIL-free, HTTP/2 из коробки, sync и async с одинаковым API. Автор — тот же разработчик, который открыл issue #3215 в httpx о 10x просадке производительности при конкурентных запросах.

Зачем переходить с httpx
httpx/httpcore имеют давние проблемы с connection pooling — при 20 конкурентных запросах httpx в 10+ раз медленнее aiohttp. Эти баги висят годами. pyreqwest решает их на уровне архитектуры, потому что connection pool реализован на Rust.

➡️ Если httpx работает — можно не трогать. Но в высоконагруженных системах он станет бутылочным горлышком.

Фичи
🔘HTTP/1.1 и HTTP/2 (у aiohttp нет HTTP/2)
🔘Автодекомпрессия: zstd, gzip, brotli, deflate
🔘TLS через rustls
🔘Connection pooling, стриминг, multipart
🔘Куки, прокси, редиректы, таймауты
🔘Полные type hints, zero Python-зависимостей
🔘Встроенный мок для тестов + подключение к ASGI напрямую

Быстрый старт:
# uv add pyreqwest

from pyreqwest.client import ClientBuilder, SyncClientBuilder

async def example_async():
async with ClientBuilder().error_for_status(True).build() as client:
response = await client.get("https://httpbun.com/get").query({"q": "val"}).build().send()
print(await response.json())

def example_sync():
with SyncClientBuilder().error_for_status(True).build() as client:
print(client.get("https://httpbun.com/get").query({"q": "val"}).build().send().json())


📎 Код на GitHub

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍101
Вышел Gazetteer — офлайн геокодер на Python, который не врёт на границах

Небольшое напоминание, зачем это вообще нужно:
➡️ Reverse geocoding — когда есть координаты, а нужно понять что там: страна, регион, город. Нужно для аналитики доставки, логистики, геотаргетинга, обработки GPS-логов. Проблема: большинство офлайн-решений ищут ближайшую точку (nearest-neighbor). У границ это ломается — ближайший город может быть в другой стране.

Gazetteer проверяет, в какой полигон реально попадает координата. KD-Tree для быстрого отсева + валидация вхождения в polygon.

Характеристики
🔘210+ стран, 145 000+ административных границ
🔘10 000 координат за <2 секунды (<0,4 мс на точку)
🔘Single-process и multiprocessing
🔘Без внешних API — никаких лимитов и платежей
🔘Автор говорит, что начинал как toy project, но оказалось production-ready.

📎 Код на GitHub, документация на сайте

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
Servy — свежий проект для запуска Python-скриптов (на самом деле не только Python) как Windows-сервисов без боли

Проблема: нужно, чтобы Python-скрипт работал в фоне как сервис Windows: стартовал при загрузке, перезапускался при падении, писал логи. Стандартный sc работает только с приложениями, специально написанными как сервисы, а pythonw.exe + Task Scheduler — костыль без нормального мониторинга.

Решение: Servy. Указываешь путь к Python, скрипт, аргументы, рабочую директорию, env-переменные → Install → готово. Есть GUI для тех, кто не любит CLI.

Что умеет

🔘Логирование stdout/stderr с ротацией (по размеру и дате)
🔘Health checks + автоперезапуск при падении
🔘Мониторинг CPU/RAM в реальном времени
🔘Уведомления о падениях
🔘Pre/post-launch хуки
🔘Экспорт/импорт конфигов

Установка
winget install servy
choco install -y servy
scoop install servy


📎 Код на GitHub, пример для Python, на видео демо

@zen_of_python
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Выпущен Mesa 3.4.0 — фреймворк для агентного моделирования на Python

➡️ Что такое агентное моделирование

Вместо описания системы уравнениями — задаёте простые правила для отдельных «агентов» (птицы, машины, люди) и смотрите, как из их взаимодействий возникают паттерны. Как формируются пробки? Как распространяются эпидемии? Как стаи птиц самоорганизуются? ABM (agent-based model) отвечает на такие вопросы.

➡️ Что такое Mesa

Основной Python-фреймворк для ABM. Интегрирован с NumPy, pandas, Matplotlib. Даёт инструменты для пространственных отношений, планирования агентов, сбора данных. Используется для моделирования эпидемий, рыночной динамики, экологических систем.

➡️ Что нового в 3.4.0

🔘Единое время симуляции. Раньше время было разбросано: model.steps в простых моделях, simulator.time в discrete event. Теперь единый model.time для всех.

🔘Воспроизводимость batch run. Новый параметр rng для явного контроля random seeds. Раньше при фиксированном seed все итерации давали одинаковые результаты вместо независимых реплик.

Прочее:
🔘Визуализация: поддержка AgentPortrayalStyle в Altair
🔘Удалён экспериментальный cell space → стабильный mesa.discrete_space
🔘Python 3.12+ обязателен
🔘Миграция на новую GitHub-организацию mesa

📎 Код на GitHub, подробнее в заметках по релизу, есть онлайн-демо

На скриншоте — классический пример Wolf Sheep: волки (красные) охотятся на овец (голубые), овцы едят траву (зелёные клетки). Справа — график динамики популяций: видно, как система приходит к равновесию.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
«Стандартная рабочая станция» согласно регламенту компании
😁21