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

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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/xZOL
Download Telegram
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
🔥53
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
33😍3
JetBrains опубликовали State of Developer Ecosystem 2025 — опрос 24 500+ разработчиков из 190+ стран. Python на первом месте с 35%.

Топ языков:


🐍 Python — 35%
☕️ Java — 33%
🌐 JavaScript — 26%
🧩 TypeScript — 22%
🎨 HTML/CSS — 16%

Важная оговорка: это не «все программисты мира», а преимущественно аудитория JetBrains. PyCharm, IntelliJ, WebStorm — у компании сильные IDE именно для Python, Java и веб-стека. Так что выборка смещена в сторону этих языков. Например, Go и Rust-разработчики чаще сидят в VS Code, Swift-девелоперы — в Xcode.

Тем не менее, тренд понятен: Python уверенно держится в топе благодаря AI/ML и автоматизации. 41% Python-разработчиков в опросе используют язык для машинного обучения.​

Другие находки:
🔘85% используют AI-инструменты для кода
🔘TypeScript, Rust и Go — лидеры по потенциалу роста
🔘PHP и Ruby продолжают снижаться​

Для более объективной картины стоит смотреть несколько источников: Stack Overflow Survey, TIOBE, RedMonk, GitHub Octoverse. Но то, что Python стабильно в топ-3 везде — факт.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2👎1🏆1
Команда urllib3 столкнулась с неприятным открытием: механизм DeprecationWarning в Python фактически не работает. Библиотека три года предупреждала об устаревших API — через документацию, changelog и встроенные предупреждения. В версии 2.6.0 эти методы удалили. И всё сломалось.

Что произошло: после релиза посыпались баг-репорты от Kubernetes-клиента, Fastly, Airflow и других крупных проектов. Разработчики были в шоке — никто не видел предупреждений и не знал, что API исчезнет. Команде urllib3 пришлось срочно откатывать изменения и возвращать удалённые методы.

Почему так вышло: DeprecationWarning в Python по умолчанию отключён. Интерпретатор просто игнорирует эти предупреждения, если разработчик явно не включил их показ. В итоге API годами кричал о своей устарелости, но его никто не слышал.

Какие есть варианты:

🔘Использовать UserWarning вместо DeprecationWarning — он не игнорируется по умолчанию

🔘Делать более частые мажорные релизы по SemVer, как в криптографических библиотеках

🔘Менять культуру работы с предупреждениями в экосистеме — но это долгий путь

Вывод для авторов библиотек: если полагаетесь только на стандартные предупреждения — велика вероятность, что их никто не увидит до момента, пока код не сломается.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
4🗿4👍1😱1
Python's random.seed() игнорирует знак числа — и это не баг

Андрей Карпати наткнулся на неочевидное поведение: random.seed(5) и random.seed(-5) дают одинаковую последовательность случайных чисел.​

➡️ Как обнаружилось
Карпати работал над nanochat и хотел использовать знак seed'а для разделения train/test данных. Получил баг: train и test оказались идентичными.​

➡️ Почему так
В исходниках CPython (_randommodule.c, строка 321) явно вызывается abs():
// "This algorithm relies on the number being unsigned"
n = PyNumber_Absolute(arg);

Знак просто отбрасывается.​

➡️ Баг или фича?
Формально — не баг. Документация гарантирует только то, что одинаковый seed даст одинаковую последовательность. Но не гарантирует, что разные seed'ы дадут разные последовательности.​

Карпати считает это ошибкой дизайна: знаковый бит мог бы удвоить пространство seed'ов. Простое решение: n -> 2*abs(n) + int(n < 0).​

➡️ Что дальше

🔘Не полагаться на отрицательные seed'ы как на «другие»

🔘В NumPy отрицательные seed'ы вызывают ошибку — там строже​

🔘Открыт issue на GitHub для обновления документации​

import random
random.seed(42)
print(random.random()) # 0.6394267984578837

random.seed(-42)
print(random.random()) # 0.6394267984578837


@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93😱1
Kreuzberg v4 — вышла новая версия библиотеки для извлечения текста, таблиц и метаданных из 56+ форматов.

Была на Python, теперь переписана на Rust, в 5-15 раз легче конкурентов, есть готовые биндинги под популярные языки. Есть настоящий async без GIL и стриминг для гигабайтных файлов.

Главное: 16–31 MB полная установка против 146 MB – 9,7 GB у Unstructured/Docling/MarkItDown. Также в новой версии встроили эмбеддинги (FastEmbed + ONNX), семантический чанкинг, определение 68 языков и MCP-сервер для Claude Desktop.

Установка для Python:
pip install kreuzberg


📎 GitHub: https://github.com/kreuzberg-dev/kreuzberg

На картинке сравнение с альтернативами.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Python 3.15.0a3 — третья альфа уже доступна, всё по графиу релизов, только что выложили.

До беты ещё полгода, но уже есть интересное.
🔘PEP 799 — встроенный sampling profiler: высокочастотный, низкий overhead, отдельный пакет для профилирования
🔘PEP 686 — UTF-8 теперь дефолтная кодировка (наконец-то!)
🔘PEP 782 — новый C API PyBytesWriter для создания bytes-объектов
🔘Больше предложений по фиксам в сообщениях об ошибках (см. скриншот)

Таймлайн
🔘Альфа 4 выйдет 13 января 2026
🔘Бета: 5 мая 2026
🔘RC: 28 июля 2026

Напоминание: альфа-релизы не для продакшна. Фичи могут измениться или исчезнуть до RC. Но посмотреть уже очень интересно, конечно.

@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Astral выпустили ty — type checker для Python, который в 10-60x быстрее mypy и Pyright

Astral — это те ребята, которые сделали uv и Ruff. Теперь у них полный тулчейн для Python: пакеты, линтинг, форматирование и type checking — всё на Rust, всё безумно быстрое.

Что такое ty
Type checker + language server. Альтернатива mypy, Pyright и Pylance. Написан на Rust, спроектирован с нуля под инкрементальность — пересчитывает только то, что изменилось.​

Скорость
🔘Без кэша: 10-60x быстрее mypy и Pyright
🔘В редакторе после правки файла в PyTorch: 4.7ms (Pyright — 386ms, Pyrefly — 2.38 сек)
🔘Это 80x и 500x разница соответственно​

Что умеет
🔘First-class intersection types, продвинутый type narrowing, reachability analysis
🔘Диагностики как у Rust-компилятора — показывает контекст из нескольких файлов, объясняет почему ошибка и как починить
🔘Полноценный LSP: Go to Definition, Rename, Auto-Complete, Auto-Import, Inlay Hints​

Как попробовать
uv tool install ty@latest

Или VS Code extension: ищите «ty» в маркетплейсе.

Сейчас Beta — команда Astral уже использует его в продакшне. Stable планируется в следующем году. В планах — поддержка Pydantic, Django и type-aware линтинг в связке с Ruff.

📎 GitHub, пост в блоге, на видео демо скорости работы

@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥102
Программисты из Tproger подготовили для вас новогоднее бинго. Заканчивайте работу, пора позалипать на этот шедевр и найти все пасхалки.

@zen_of_python
🔥1😍1
Clean Architecture в Python: не догма, а инструмент — разбор от разработчика с 30-летним стажем

Макс Кирхофф взял интервью у Сэма Кина — автора книги «Clean Architecture with Python». Сэм прошёл путь от стартапов до AWS и делится практическим подходом к архитектуре.

Ключевые моменты
🔘Clean Architecture — не «всё или ничего», а набор принципов под твой контекст
🔘Главная ценность — грамотное управление зависимостями и чёткая доменная модель
🔘Хорошая архитектура = тестируемый код (связь прямая)
🔘Бонус: чистая архитектура упрощает работу с AI-ассистентами при написании кода

Почему важно
Python любят за прагматику — и можно сохранить её, не скатываясь в спагетти-код. Архитектурные принципы адаптируются, а не навязываются.

📎 Видео на YouTube или в этом посте

@zen_of_python
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2