zen_of_python | Unsorted

Telegram-канал zen_of_python - Zen of Python

20070

Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL

Subscribe to a channel

Zen of Python

Классика

@zen_of_python (теперь и в Max)

Читать полностью…

Zen of Python

Senior-level решение задачи

@zen_of_python (теперь и в Max)

Читать полностью…

Zen of Python

Финал Tproger Awards уже близко! 🔥

Заканчивается февраль, и наше голосование за лучшие релизы года тоже подходит к концу.

К тем, кто вручил участникам золотые мыши, вопросов нет. Тех, кто еще не посещал премию, зовем предпоследний раз! Не упускайте возможность выбрать лучшую компанию года.

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

Голосуйте: https://tprg.ru/QtJE

Читать полностью…

Zen of Python

Weekend Offer Multitrack: быстрый найм для опытных специалистов

Яндекс приглашает бэкенд-разработчиков с опытом от 5 лет на C++, Python, Go или Java/Kotlin получить офер за 2 дня и поработать в трёх командах на выбор.

Приходите, если вам важно видеть результат своей работы в живых системах и метриках, а не только в merged PR.

Как всё проходит:

🟢 До 6 марта — регистрация на сайте.
🟢 14 марта — технические секции.
🟢 15 марта — финальная секция и офер.

После получения офера у вас будет возможность выбрать три команды и в течение нескольких недель поочерёдно поработать в каждой. Такой формат позволит не только познакомиться с коллегами и технологическим стеком, но и оценить задачи и рабочие процессы в каждой команде.

Подробности и форма регистрации — по ссылке.

Это #партнёрский пост

Читать полностью…

Zen of Python

Вышел Starlette 1.0.0rc1, первый релиз-кандидат после 8 лет разработки

Напомню, Starlette — легковесный ASGI-фреймворк для Python. Поддерживает WebSocket, HTTP/2, фоновые задачи, middleware и маршрутизацию. На нём построен FastAPI, Starlette отвечает за всю сетевую часть, а FastAPI добавляет сверху валидацию через Pydantic и автогенерацию OpenAPI-схемы.

Том Кристи создал Starlette в июне 2018, а сейчас Марсело Трилесинский (Kludex) выпустил первый RC версии 1.0. Почти 10 млн скачиваний в день, а с недавних пор ещё и зависимость Python MCP SDK.

Что в релизе. Удаление deprecated-фич, помеченных для удаления в 1.0.0, плюс финальные баг-фиксы. Никаких крупных новых API, акцент на стабильности.

Реакция сообщества. «Starlette работала настолько стабильно, что казалось, будто 1.0 уже давно вышла». Несколько человек отметили, что узнали о Starlette как о зависимости, только когда начали копаться в MCP-серверах.

Установка: pip install starlette==1.0.0rc1

@zen_of_python, также в Max

Читать полностью…

Zen of Python

МФТИ запускает онлайн-школу «Предпринимательское планирование»

Преподаватели с кафедры Технологического предпринимательства, а окончание школы даёт поступление в магистратуру на эту кафедру без экзаменов.

В школе основы и работа мини-группах: разработка бизнес-модели, фокус на рынке, стратегия роста. А в магистратуре приоритет на запуске бизнеса, в том числе работа с реальными успешными предпринимателями.

@neuro_channel, также в Max

Читать полностью…

Zen of Python

Кейсы из номинации «Дизайн года» ждут ваших голосов

Осталась ровно неделя до конца голосования в премии Tproger. Уже дико хочется узнать, кто в лидерах! Но даже мы в команде стараемся держать интригу. И чтобы скоротать время, давайте посмотрим на дизайнерские кейсы компаний:

— AcademiaDev представила интерактивную инсталляцию, которая разлетелась по СМИ и собрала 48 млн охвата.


— ИИ-платформа Сократик рассказала, как устроена их система по генерации готовых презентаций.


— Островок поделился, как они сделали отдельную айдентику для Ostrovok! Tech.


Закидайте их своими голосами: https://tprg.ru/WLvk

Читать полностью…

Zen of Python

Какой кейс станет облачным продуктом года?

Давайте думать, подсказывайте голосовать! В этой номинации Tproger Awards также участвуют пять компаний. Вот статьи про их продукты:

👍ПАК виртуализации от Гравитона, который построен по гиперконвергентной архитектуре, что предусматривает простое и предсказуемое масштабирование.


👍ИИ-ассистент от Рунити, который начинался как внутренний продукт, но уже вышел на внешний рынок.


👍VPS от SmartApe, который помог онлайн-школе выдержать рост нагрузки в 5 раз.


👍Контейнерная платформа «Штурвал» от Лаборатории Числитель, благодаря которой система стала устойчива к высоким нагрузкам.


👍Облачная платформа от Selectel, которая позволяет компаниям самим управлять данными, подключать нужные сервисы в несколько кликов и иметь доступ к поддержке 24/7.


Что из этого достойно золотой мыши — решать вам. Переходите на сайт голосования и выбирайте тот самый кейс 👍

Читать полностью…

Zen of Python

25 лет на ORM, теперь — raw queries + dataclasses. И вот почему

Майкл Кеннеди (автор Talk Python to Me) отказался от ORM/ODM в пользу паттерна Raw+DC: сырые запросы к базе + Python dataclasses на границе слоя доступа к данным.

🔘Главный аргумент: ИИ-ассистенты пишут нативные запросы в разы лучше, чем ORM-код. У PyMongo в 53 раза больше загрузок, чем у Beanie, и нативный синтаксис MongoDB одинаковый в Node, PHP, Go. Разница в обучающих данных огромна.

🔘Паттерн простой: raw query → dict → from_doc() → dataclass. Type safety, автокомплит в IDE, поддержка mypy — всё на месте. Без магии ORM, без зависимости от фреймворка.

🔘В комментах согласны с ИИ-аргументом, но напоминают: ORM — это не только запросы, но и миграции, валидация, защита от SQL-инъекций. Raw SQL повышает порог ответственности за безопасность.

📎 Тред на r/Python

А вы как обычно кодите?

@zen_of_python

Telegram | Max

Читать полностью…

Zen of Python

Бенчмарк 8 Python-библиотек для извлечения текста из документов

Авторы Kreuzberg выложили обновлённое сравнение 8 open source инструментов для text extraction: Kreuzberg, Apache Tika, Docling, Unstructured, PDFPlumber, Pandoc, PyMuPDF4LLM, MarkItDown, Mineru. 56 типов файлов, p50/p95/p99 по скорости и памяти, quality score против ground truth.

Методика: бенчмарк-харнес на Rust, запускается в GitHub Actions CI. Замеряют extraction duration, throughput, memory, success rate. Качество измеряют через сравнение извлечённого текста с эталоном.

И что бы вы думали, кто победил? Конечно же сам Kreuzberg. Он покрывает больше всего форматов (49/56), success rate 99,1%. Docling и Unstructured надёжны, но в разы медленнее. Docling на сложных файлах может считать 60+ минут на файл.

​Но бенчмарк открытый и воспроизводимый, так что в целом как будто Kreuzberg реально можно пробовать.

@zen_of_python

Читать полностью…

Zen of Python

Премия Tproger объявляется открытой! 🐀

Каждый год команды разработки фиксят баги, выкатывают редизайн, добавляют фичи или создают совершенно новые продукты внутри известных нам брендов. Какие-то результаты работы мы видим, но чаще внутрянка не доступна и оценить по достоинству ее не получается.

Отсюда родилась идея Премии Tproger. В ней ИТ-компании делятся успешными кейсами разработки, а аудитория решает, какой проект заслуживает награды — золотой мыши 🐀

В премии участвуют 16 компаний в 4 номинациях:
Продукт года

Здесь представлены платформенные решения, направленные на комплексную автоматизацию ключевых направлений деятельности: от контроля безопасности разработки ПО и ИТ-инфраструктуры до управления ресурсами компании.

Облачный продукт года
В этом разделе вас ждут платформы виртуализации, облачные среды для AI/ML, инструменты управления кластерами и микросервисами, обеспечивающие высокую производительность и быстрый запуск цифровых сервисов.

IT-ивент года
Участники рассказывают о профессиональных конференциях и хакатонах, объединяющих тысячи разработчиков и инженеров.

Дизайн года
В номинации представлены проекты, где дизайн встречается с инженерией: нейросети, создающие презентации за секунды; инсталляции, собравшие десятки миллионов контактов; и визуальные стратегии, транслирующие ценности разработки.

Теперь они в ваших руках 👍
1. Переходите на сайт премии.
2. Выбирайте понравившиеся кейсы в каждой категории.
3. И вручайте им золотую мышь.

Голосование продлится до конца февраля и уже в марте мы объявим победителей. Stay tuned!

Читать полностью…

Zen of Python

Ну и еще немного про ИИ! 😁

Одни компании недолюбливают нейросети за риск утечки конфиденциальной информации. Судя по комменту к предыдущему посту вы тоже от него устали 🤪 Но каким-то образом у разных компаний получается приручить эту химеру и выуживать из нее пользу.

Как, например, у этих ребят. Команда хотела облегчить работу коллег и создала то, что стало ключом к корпоративному ИИ. Они хотели доступ к мощным нейросетям, но так, чтобы ни байта данных не вышло за порог компании. И чтобы запускал это не только технарь, но и обычный менеджер.

Главный стоппер был предсказуем: как заставить прожорливые модели стабильно работать в облаке под нагрузкой? Решение оказалось элегантным.

Это девятый артефакт — для тех, кто побаивается нейросетей, но явно на них облизывается. Покажите вашему начальнику, скажите, что все не так страшно 👻

Читать полностью…

Zen of Python

Нашёл прекрасное: memory_graph — визуализация того, что реально происходит в памяти Python. Либа рисует граф объектов: переменные, ссылки, алиасы, копии. Сразу видно почему b += [1] и b = b + [1] — это разные вещи.

Вот примеры: Hash Map, Binary Tree, Copying, Recursion.

Установка: pip install --upgrade memory_graph

Для изучения питона — очень круто, рекомендую.

@zen_of_python

Читать полностью…

Zen of Python

И ещё один свежий релиз: вышел Python 3.14.3 с несколькими крупными фичами.

🔘Free-threading (PEP 779)

Официальная поддержка потоков без GIL. Теперь можно собрать Python без глобальной блокировки интерпретатора и получить настоящую многопоточность. Для большинства это пока не актуально — требует пересборки и совместимых библиотек. Но направление задано.

🔘T-strings (PEP 750)

Новый синтаксис t"..." — как f-strings, но без автоматической интерполяции. Возвращает шаблон, который можно обработать отдельно. Полезно для безопасной работы со строками в SQL, HTML, логах.

query = t"SELECT * FROM users WHERE id = {user_id}"
# query — не строка, а Template объект


🔘Отложенная оценка аннотаций (PEP 649)

Аннотации типов теперь вычисляются лениво. Можно писать def foo() -> Bar до определения класса Bar. Это упрощает работу с циклическими импортами и forward references.

Практический совет

Если у вас 3.14 на продакшене — обновляйтесь осторожно. А вот для экспериментов с free-threading — самое время попробовать.

@zen_of_python

Читать полностью…

Zen of Python

Мелочь, но приятно: copier-astral — шаблон, который генерит для нового проекта настройки для ruff, uv, pytest, CI/CD одной командой. Как вы поняли, всё для любителей Astral-стека (а кто сейчас не такой?).

Что внутри:
🔘uv — пакетный менеджер
🔘ruff — линтер + форматтер (замена black/isort/flake8)
🔘ty — новый тайпчекер от Astral на Rust
🔘pytest + hatch — тесты с матрицей версий
🔘MkDocs Material — документация
🔘prek — Rust-альтернатива pre-commit (быстрее)
🔘GitHub Actions — CI/CD из коробки
🔘git-cliff — changelog по Conventional Commits

Опционально: Typer CLI scaffold, Docker

Установка:

pip install copier copier-template-extensions
copier copy --trust gh:ritwiktiwari/copier-astral my-project


Почему Copier, а не cookiecutter?


Copier умеет обновлять уже созданные проекты при изменении шаблона — не нужно руками мержить новые best practices.

📎 Код в репо, доки, пример проекта

@zen_of_python

Читать полностью…

Zen of Python

Опубликован черновик PEP 827 (Type Manipulation). Он предлагает добавить в Python возможности из TypeScript, чтобы не дублировать код при описании моделей.

Допустим, у вас есть класс User для базы данных, где есть id, email, username и created_at. Вам нужен класс UserUpdate для API, где id и created_at менять нельзя, а остальные поля необязательны, можно обновить только email.

Сейчас приходится вручную писать новый класс и дублировать поля.
С PEP 827 можно будет сгенерировать его одной строкой:

UserUpdate = Partial[Omit[User, "id" | "created_at"]]


Omit убирает лишние поля из базового класса
Partial делает оставшиеся необязательными
— Если тип email изменится в главной модели, он автоматически обновится и в UserUpdate

Вместо копипасты под каждый эндпоинт (Create, Update, Read) вы описываете одну модель и генерируете производные. И всё это работает на уровне статического анализа. Черновик нацелен на Python 3.15.

@zen_of_python (теперь и в Max)

Читать полностью…

Zen of Python

Последний день голосования в Tproger Award!

Две недели, 16 компаний, 4 номинации — спасибо, что читали, участвовали и лайкали. И отдельное спасибо, что голосовали! Вообще не представляем, что вы там наделали, уже узнать хочется!

Давайте сегодня зафиналим голосовалку и раздадим по максимуму золотых мышей. Интересно, расстановка сил сможет измениться за один день?

Если потеряли, то номинации вот:
— Продукт года
— Облачный продукт года
— ИТ-ивент года
— Дизайн года

Только сайт не положите, очень просим 🙏

Пойти голосовать: https://tprg.ru/bWfy

@zen_of_python (теперь и в Max)

Читать полностью…

Zen of Python

Внезапное порно в Conda

История такая: один разработчик хотел посмотреть YouTube, открыл меню «Пуск» в винде, начал вбивать You и увидел подсказу YouPorn. Очень удивился, потому что он не смотрит порно (конечно, а как вы подумали).

Начал расследование. Оказалось, что файл с таким именем лежит в

Anaconda3\pkgs\protego\info\test\tests\test_data


Protego — Python-библиотека для парсинга файлов robots.txt. В её тестовых данных есть пример файла robots.txt с сайта YouPorn т.е. обычный тест на реальных данных из интернета. Никакого вредоносного кода, никакой атаки на supply chain, просто Windows Search проиндексировал содержимое тестовых файлов внутри пакетов Conda.

Это хороший повод напомнить: Windows Search индексирует всё подряд, включая содержимое директорий с пакетами. При разработке на винде лучше добавить такие диры в исключения. Или не разрабатывать на винде.

@zen_of_python

Читать полностью…

Zen of Python

PEP 747 принят. В typing добавится TypeForm[T] — способ аннотировать аргументы, которые принимают не значения, а сами типы: int | str, list[int], TypedDict и другие.

Раньше функции вроде trycast() или is_match() из библиотек beartype, pydantic, typeguard приходилось аннотировать через object, слишком широко, без проверки типов.

Теперь можно так:

def trycast[T](typx: TypeForm[T], value: object) -> T | None: ...
def is_match[T](value: object, typx: TypeForm[T]) -> TypeGuard[T]: ...

# Или просто переменная:
int_form: TypeForm = int | None


В Python приедет с версии 3.15. Уже сейчас доступно через typing_extensions. Экспериментальная поддержка есть в Pyright

@zen_of_python

Telegram | Max

Читать полностью…

Zen of Python

Как вам формат TOON (Token-Oriented Object Notation) вместо JSON?

Массивы объектов объявляются один раз в заголовке users[2]{id,name,role}:, а дальше идут только данные через запятую без лишних скобок и ключей. Это сокращает объём данных на 30–60%.

Для Python уже есть готовые библиотеки, например python-toon и toons. Для промтов в ИИ экономия токенов. Для людей на глаз вроде тоже проще читается.

С другой стороны это просто CSV с дополнением, вложенности не очень удобно делать. Что думаете?

@neuro_channel, также в Max

Читать полностью…

Zen of Python

Где лучшие тусовки? На тех-ивентах!

Последняя по очереди, но не по значимости — номинация «IT-ивент года». Здесь тоже собрались три компании, и если вы еще не добрались до чтения их кейсов, то давайте сделаем это вместе.

— Лаборатория Числитель собрала конференцию, на которой обсуждают строго только K8s.

Мероприятие Selectel, которое стало уже традицией, делали полностью in-house.

— Специально для своего хакатона Островок создал платформу, чтобы участвовать могли разработчики из любой точки мира.

Выбирайте компанию-фаворита и вручайте ей золотую мышь — голосование доступно на сайте.

Telegram | Max

Читать полностью…

Zen of Python

Анализ датасета QUT-DV25 (14 000 семплов малвари из PyPI) показал, что больше половины пакетов запускают reverse shell или крадут env-переменные прямо в setup.py т.е. достаточно pip install, даже без импорта.

Проблема: sdist-пакеты требуют выполнения setup.py при сборке. Это обычный Python-скрипт, он может делать что угодно — от сборки C-расширения до отправки ~/.ssh/id_rsa на C2-сервер.

Есть такой инструмент KEIP — eBPF-тул на LSM-хуках, который ставит сетевой whitelist на время pip install. Если setup.py или дочерний процесс лезет на сервер не из белого списка — весь процесс убивается

Вообще, в 2026 setup.py — это красный флаг. Если пакет без pyproject.toml и без wheel, то может он и не нужен вам?

@zen_of_python

Читать полностью…

Zen of Python

Вот ещё новость прошедшей недели: PyTorch перевёл тайпчекинг основного репозитория с MyPy на Pyrefly. Проверка всего проекта: MyPy — 50,6 сек, Pyrefly — 5,5 сек.

Вроде здорово, молодцы, но ведь есть ty. Ещё и пост в блоге написали, как будто одна известная большая корпорация повлияла.

А вы чем в 2026 тайп-чекаете?

(Да, как вы поняли, очень хочется пообщаться с вами, дайте каких-то комментариев, пожалуйста.)

Читать полностью…

Zen of Python

Выбираем лучший продукт года🐀

У нас в разгаре премия Tproger — в ней мы выбираем лучшие ИТ-разработки среди 16 компаний. Сегодня ближе знакомимся с участниками номинации «Продукт года».

В ней участвуют пять компаний. Изучаем:

👍ОТП Банк представляет ASOC-сканер, который спроектировал один разработчик за месяц.

👍Гравитон делится кейсом создания ПО мониторинга без агентов, который можно затестить бесплатно.

👍NetVision борется с недобросовестными самокатчиками с помощью платформы интеллектуального мониторинга СИМ.

👍Solar показывает appScreener, который вырос из стартапа до стандарта рынка; при работе над ним сотрудники получили научные степени.

👍Reksoft рассказывает о платформе Brain ERM, который помогает компаниям экономить до 70% времени на рутинных HR-операциях.

Если вы еще не проголосовали за понравившийся продукт — самое время это сделать. Переходите на сайт премии и выбирайте свой релиз года. Пусть золотая мышь достанется команде лучших 🔥

Читать полностью…

Zen of Python

Пять платформ, где дети учат Python через игры — от простых песочниц до олимпиадных задач. Trinket, Tynker, CodeCombat, Minecraft, CheckiO — разобрано для кого что подходит по возрасту и уровню.

@zen_of_python

Читать полностью…

Zen of Python

Документация для нейросетей — как получать нормальный код от LLM

Основная идея: вайбкодинг работает плохо не из-за моделей, а из-за отсутствия контекста. Если LLM не знает структуру проекта, стек и ограничения — она додумывает сама.

В статье разбирают, какие файлы документации стоит держать в проекте, чтобы нейросеть генерировала код в рамках существующей архитектуры, а не с нуля. Приводят готовые шаблоны.

@zen_of_python

Читать полностью…

Zen of Python

«У Python только один реальный конкурент» — и это не Rust, не Go, не Julia

Это Clojure. Автор (Ethan McCue) объясняет логику:

Для реальной конкуренции с Python в Data Science нужно два условия:
1️⃣Иметь аналогичную экосистему
3️⃣Превосходить Python в чём-то важном

Экосистема: У Clojure есть полные аналоги numpy (dtype-next), pandas (tech.ml.dataset), ML-пайплайны (metamorph.ml), плоттинг (Tableplot), ноутбуки (Clay). А чего нет — можно вызвать Python напрямую через libpython-clj.

Превосходство: Python медленный, и это не починить. CPython не может оптимизироваться, потому что детали его реализации стали частью API — сломаешь numpy/pandas. Отсюда вечное «есть быстрый способ и медленный способ» делать одно и то же.

Clojure работает на JVM, которая агрессивно оптимизирует рантайм. Можно писать логику на самом языке, а не убегать в C. Поясню тут логику автора: Python структурно не может стать быстрым — его внутренности (reference counting, GIL, C API) стали частью контракта с экосистемой. У JVM таких ограничений нет.

Станет ли Clojure массовым — вопрос удачи, но по набору характеристик это единственный язык, у которого есть шанс.

@zen_of_python

Читать полностью…

Zen of Python

PEP 822 предлагает d-строки — новый способ работы с многострочным текстом в Python 3.15.

Проблема: при использовании тройных кавычек внутри функций приходится либо ломать отступы кода, либо получать лишние пробелы в строке. d-строки автоматически удаляют общий ведущий отступ.

def example():
query = d"""
SELECT *
FROM users
WHERE active = true
"""
# query не содержит лишних пробелов слева


Работает аналогично textwrap.dedent(), но на уровне синтаксиса — без вызова функции и накладных расходов в рантайме.

Можно комбинировать с f-строками: df"""...""" для шаблонов с подстановкой переменных.

PEP пока в статусе Draft, целевая версия — Python 3.15.

@zen_of_python

Читать полностью…

Zen of Python

⚡️ Вышли критические обновления безопасности Django — 6.0.2, 5.2.11 и 4.2.28.

Закрыты три SQL-инъекции высокой критичности:

CVE-2026-1207 — инъекция через raster lookups в PostGIS при использовании пользовательских данных как индексов band.

CVE-2026-1287 — инъекция через управляющие символы в алиасах колонок при использовании FilteredRelation со специально сформированными словарями.

CVE-2026-1312 — инъекция через order_by() и FilteredRelation при использовании точки в алиасах колонок.

Также исправлены: DoS через повторяющиеся заголовки в ASGI (CVE-2025-14550), DoS через незакрытые HTML-теги в Truncator (CVE-2026-1285), timing-атака для перечисления пользователей в mod_wsgi (CVE-2025-13473).

Если используете PostGIS или FilteredRelation — обновляйтесь срочно.

@zen_of_python

Читать полностью…

Zen of Python

Bandit — SAST-сканер для Python от PyCQA (те же люди, что делают pylint и flake8). Парсит AST, ищет типичные дыры: eval(), хардкод паролей, слабая криптография, небезопасные temp-файлы.

➡️ Как работает

Каждый файл → AST → прогон плагинов по нодам → отчёт. У каждой находки два атрибута: severity (критичность) и confidence (уверенность, что это реальная проблема). Это помогает расставить приоритеты — сначала High/High, потом остальное.

Интеграция:

# .pre-commit-config.yaml
repos:
- repo: https://github.com/PyCQA/bandit
rev: 1.7.5
hooks:
- id: bandit
args: ['-ll', '-ii']

Есть официальный GitHub Action (PyCQA/bandit-action@v1) и расширение для VS Code.

Для легаси-проектов: сохраняешь текущие находки в baseline, дальше CI показывает только новые. Старые никуда не деваются, но не блокируют билд.

➡️ Bandit vs Semgrep

🔘Правила из коробки — Bandit 68, Semgrep 166 для Python

🔘Скорость — Bandit быстрее на мелких репо, у Semgrep overhead на старте

🔘Кастомные правила — у Semgrep проще (YAML), у Bandit нужно писать плагин

🔘Точность — Bandit точнее на типовых паттернах, Semgrep гибче, но больше false positives

📎 Код на GitHub

@zen_of_python

Читать полностью…
Subscribe to a channel