Zen of Python – Telegram
Zen of Python
20K subscribers
1.31K photos
190 videos
38 files
3.36K links
Полный Дзен Пайтона в одном канале

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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
Python 2025: что посмотреть

В этом году питон‑коммьюнити много говорит про развитие разработчиков, виртуальные окружения, AST‑магию, большие данные и новые паттерны RAG. Для бэкграунда очень советую документалку Python: The Documentary и Q&A с Гвидо и компанией.

Про развитие и карьеру
🔘Выйти из «ада туториалов» — как перестать смотреть бесконечные курсы и начать делать свои проекты (с помощью ИИ тоже).
🔘Менторинг в обе стороны — как помогать другим и параллельно прокачивать себя, не закапываясь в синдром самозванца.
🔘Design Pressure — про то, как инструменты и процессы незаметно гнут архитектуру кода, и что с этим делать.

Инструменты, AST и железо
🔘Виртуальные окружения прошлого, настоящего и будущего (и куда движутся uv‑подобные тулзы).
🔘AST‑парсинг для ускорения библиотек и переписывания кода до попадания в C‑расширения.
🔘Как не умереть от огромных JSON‑ов: стриминг, JSON Lines и более компактные форматы.
🔘Чип PyXL, который гоняет Python прямо в железе и даёт серьёзный буст без переписывания кода.

Данные, RAG и аналитика
🔘Narwhals: один API поверх Polars, DuckDB, PyArrow, pandas и cuDF — меньше if‑ов, больше совместимости.
🔘DuckDB как способ приручить «зоопарк файлов» и собрать нормальные пайплайны.
🔘Structured RAG is better than RAG от Гвидо — как структурированный RAG делает ответы точнее и даёт долгую память ИИ, плюс новая Python‑библиотека под это.
🔘Футбол‑аналитика на Polars, Keras и GNN: превращаем координаты игроков в метрики и модели уровня профклубов.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1
Вышла свежая либа для авторизации в Python — PyPermission. Это небольшая RBAC‑библиотека, которая реализует классическую модель ролей по NIST: есть роли, есть права, права можно складывать в иерархии (chat.*, chat.global, ticket.close.own и т.д.), а дальше вы просто спрашиваете у системы: «есть ли у пользователя Х такое‑то право?».​

Идея в том, чтобы описать все разрешения декларативно, а не размазывать if role == ... по коду. Вы заводите PermissionNode`‑класс с перечислением прав, настраиваете `Authority и храните роли с привязанными пользователями либо в JSON/YAML‑файле, либо в базе через SQLAlchemy — PyPermission сам разрулит наследование ролей и проверку доступа через метод subject_has_permission.​

Устанавливается всё обычным pip install PyPermission, а если нужен конкретный бэкенд хранения, то PyPermission[sqlalchemy] или PyPermission[yaml]. Авторы честно помечают проект как alpha: API ещё могут поломать, но уже есть рабочие примеры, тесты и заготовленная документация, так что если вы как раз думаете, как аккуратно оформить права в своём сервисе или админке на Python, это хороший кандидат попробовать.

Код в репо, отдельно документация.

@zen_of_python
👍142
Автор два года пилил свою библиотеку для Dependency Injection в Python и наконец выкатил её в продакшен-ready состоянии. Называется python-injection, и главная фишка — минимум конфигурации и максимум простоты.​

Работает всё на декораторах и type hints: вешаете @injectable или @singleton на класс, а потом @inject на функцию — и зависимости резолвятся автоматически по аннотациям типов. Поддерживаются четыре типа времени жизни: transient (новый инстанс каждый раз), singleton, constant (для конфигов) и scoped (привязка к контексту). Есть поддержка async, профили для переключения зависимостей между окружениями и scoped-зависимости через context manager.​

Комьюнити сравнивает проект с dependency-injector и другими решениями. Автор отмечает, что его подход менее инвазивный: если захотите избавиться от библиотеки, достаточно убрать декораторы — код останется рабочим. Из минусов — нужно не забывать импортировать модули, где объявлены декораторы, иначе зависимости не зарегистрируются. Работает только на Python 3.12+.​

Установка стандартная: pip install python-injection. Дальше импортируете нужные декораторы из injection и размечаете классы и функции.​

Код в репо.

@zen_of_python
5🔥1
Cookiecutter — это CLI-утилита для генерации проектов из шаблонов. Если вам надоело каждый раз копипастить структуру папок, настраивать pyproject.toml, README и прочую обвязку — инструмент закрывает боль.

Работает просто: берёте готовый шаблон (свой или чужой с GitHub), запускаете cookiecutter, отвечаете на вопросы в интерактивном режиме — и получаете готовую структуру проекта с подставленными значениями. Шаблоны используют Jinja2, так что можно делать условную генерацию, циклы и любую логику внутри. Переменные задаются в cookiecutter.json, там же можно указать дефолтные значения и валидацию. Есть хуки для запуска скриптов до и после генерации — например, сразу инициализировать git или установить зависимости.

На GitHub уже куча готовых шаблонов: cookiecutter-pypackage для Python-пакетов, cookiecutter-django для Django-проектов, шаблоны для pytest-плагинов и много других. Проект зрелый — 24 тысячи звёзд, почти 300 контрибьюторов, используется в 35 тысячах репозиториев. Работает на Windows, Mac и Linux, поддерживает Python 3.8–3.12.

Быстрый старт: pipx install cookiecutter или python -m pip install --user cookiecutter, затем cookiecutter gh:audreyfeldroy/cookiecutter-pypackage — и через пару вопросов у вас готовый Python-пакет со всей структурой.

Код в репо.

@zen_of_python
5
Вышел Pact Python v3 — библиотека для контрактного тестирования микросервисов. Если кратко: Pact позволяет тестировать взаимодействие между сервисами без поднятия всех зависимостей. Consumer описывает, какие запросы он будет делать и какие ответы ожидает, это записывается в JSON-контракт. Потом этот контракт проигрывается против реального provider'а.​

Главное изменение в v3 — переезд с Ruby-бинарников на Rust FFI. Раньше библиотека тащила за собой Ruby-обёртки, теперь всё работает через нативную Rust-библиотеку, скомпилированную под разные платформы. Это дало поддержку Pact Specification v3/v4, нормальные мэтчеры и генераторы данных, async message testing для событийных архитектур.​

Что появилось в API:
🔘Мэтчеры: like(), each_like(), regex(), uuid(), each_key(), each_value()​
🔘Генераторы тестовых данных
🔘Асинхронные сообщения для Kafka/RabbitMQ и подобных
🔘Улучшенные ошибки при несовпадении контрактов

Пример как может выглядеть код:
from pact.v3 import Pact

pact = Pact("consumer", "provider")
(pact
.upon_receiving("a request for users")
.with_request("GET", "/users")
.will_respond_with(200)
.with_body({"users": like([{"id": 1, "name": "Alice"}])}))


Миграция с v2 потребует изменений — переименовали set_state в state_handler, поменяли сигнатуры message handler'ов. Python 3.8 больше не поддерживается.

Код в репо, документация на офф. сайте, установка как обычно pip install pact-python.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥5
Команда Puzl Cloud выложила в опенсорс KubeSDK — Python-клиент для работы с Kubernetes API. Основная идея: сделать типизированный async-first клиент с минимумом зависимостей, который удобно использовать в продакшене и при работе с несколькими кластерами одновременно.​

Чем отличается от официального kubernetes-client/python:
🔘Полностью асинхронный из коробки (не как обёртка поверх sync-кода)
🔘Все методы и модели типизированы — IDE нормально автокомплитит
🔘Встроенный генератор моделей: скармливаешь ему Kubernetes API — получаешь dataclasses для всех ресурсов, включая CRD
🔘Единый интерфейс для core-ресурсов и custom resources
🔘Заточен под высокую нагрузку и мульти-кластерные сценарии​

Есть альтернативы — kubernetes_asyncio, kr8s, lightkube — но у каждой свои компромиссы. kubernetes_asyncio генерируется из OpenAPI и тоже async, но не такой developer-friendly. kr8s поддерживает и sync, и async, но там другой подход к моделям.​

Код в репо, установка pip install kubesdk[cli].

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Forwarded from Нейроканал
Вайб-кодер смотрит, как ИИ просит прощения после удаления всех файлов на диске C:

#постИИрония
😁41🦄3🤣2❤‍🔥1
Forwarded from Типичный программист
Летим зимовать ✈️

Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.

Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!

Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:

😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech

Теперь осталось нажать на кнопку участия под этим постом и вы в игре!

Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.

Всем удачи!

Участников: 19
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2
JetBrains выпустили PyCharm 2025.3 — и это важный релиз, потому что PyCharm Community Edition официально всё. Теперь есть только один PyCharm: базовые фичи (включая Jupyter) бесплатно, расширенные — по подписке Pro.​

Что нового:
🔘uv по умолчанию — при создании проекта теперь предлагается uv вместо venv. Для тех кто не в курсе: uv — это менеджер пакетов от Astral (создатели Ruff), работает в 10-100 раз быстрее pip​
🔘LSP-интеграции из коробки: Ruff и Pyright теперь настраиваются прямо в Settings → Python → Tools. Не нужны сторонние плагины​
🔘Remote Jupyter — можно подключаться к удалённым Jupyter-серверам и работать с ноутбуками без локальной установки​
🔘AI Agents Debugger — дебаггер для агентных систем, показывает что происходит внутри «чёрного ящика»: входы, выходы, метаданные каждого шага​
🔘300+ багфиксов​

Про миграцию с Community: если использовали Community Edition, при обновлении до 2025.3 произойдёт автоматическая миграция на unified PyCharm. Все бесплатные фичи останутся, плюс добавится Jupyter. Исходники Community по-прежнему открыты, но готовых билдов больше не будет.​

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11👎1
Вышел release candidate pandas 3.0 — мажорный релиз с breaking changes, который готовили несколько лет. Стабильная версия ожидается через пару недель.​

Главные изменения:


🔘Строки теперь отдельный dtype — больше никакого object для текстовых колонок. Новый str dtype под капотом использует PyArrow (если установлен), иначе fallback на NumPy. Это даёт строгую типизацию, лучшую производительность и меньше использование памяти.​

🔘Copy-on-Write включён по умолчанию — конец путанице view vs copy. Теперь любой срез DataFrame/Series ведёт себя как копия. Chained assignment больше не работает, SettingWithCopyWarning удалён. Внутри pandas всё ещё использует views для оптимизации, но API стал предсказуемым.​

🔘Datetime resolution inference — при создании datetime из строк pandas теперь сам определяет нужную точность (секунды, миллисекунды, микросекунды) вместо дефолтных наносекунд.​

Удалено:
🔘DataFrame.applymap → используйте map
🔘Series.view и Series.ravel
🔘Поддержка Python 2 pickle
🔘ArrayManager
🔘Куча deprecated параметров​

Новая политика deprecation: сначала DeprecationWarning, потом FutureWarning в последнем минорном релизе, потом удаление. Меньше внезапных поломок.​

Потестить: pip install --upgrade --pre pandas, полный список изменений в рели-ноутсах.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Pyrefly — модный тайпчекер, написанный на Rust — добавил нативную поддержку Pydantic. Теперь это второй (после Mypy) инструмент, который понимает магию Pydantic-моделей без костылей.​

Pyrefly выкатили в апреле 2025 как замену старому Pyre, который использовался для кода инсты в сами-знаете-какой организации. Написан на Rust, работает со скоростью до 1,8 млн строк/сек — это в 14 раз быстрее Mypy и Pyright. В ноябре вышла бета (v0.42+), сейчас актуальная версия 0.45.​

Что поддерживается для Pydantic:
🔘ConfigDict и immutable-поля
🔘Strict vs non-strict валидация
🔘Extra fields
🔘Field constraints
🔘Root models
🔘Alias validation

Главное отличие от Mypy: всё встроено в сам тайпчекер, не нужен отдельный плагин. Pyright пока Pydantic нативно не поддерживает.​

Зачем пробовать: если у вас большой Python-проект с Pydantic-моделями — Pyrefly даст и скорость проверки, и правильный вывод типов для моделей. Есть VSCode-расширение с autocomplete, go-to-definition, автоимпортами.​​

Код на гитхабе, документация по интеграции есть как у Pyrefly, так и у Pydantic.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52
PyAtlas — интерактивная карта 10 000 самых популярных пакетов PyPI, где похожие библиотеки расположены рядом друг с другом.

Как работает: описания пакетов прогоняются через sentence transformer → получаются эмбеддинги → UMAP сжимает их в 2D → кластеризация группирует по темам. В итоге веб-фреймворки оказываются в одном углу, ML-библиотеки в другом, тулзы для тестирования в третьем.

Что можно делать:
🔘Просто тыкать и исследовать экосистему Python с высоты птичьего полёта
🔘Найти пакет, который уже используешь, и посмотреть что рядом — там будут альтернативы и связанные инструменты
🔘Обнаружить библиотеки, о которых не слышал, но которые решают похожие задачи

Практическая польза: когда ищешь «что-то вроде X, но для Y» — карта покажет соседей по смыслу, а не по алфавиту. Или когда хочешь понять что вообще существует в какой-то нише.

Под капотом: Python, sentence-transformers для эмбеддингов, UMAP для редукции размерности, HDBSCAN для кластеризации. Код открыт на GitHub.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
😍311