Zen of Python
Полный Дзен Пайтона в одном канале Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site Регистрация в перечне РКН: https://tprg.ru/xZOL
نمایش بیشتر📈 تحلیل کانال تلگرام Zen of Python
کانال Zen of Python (@zen_of_python) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 19 271 مشترک است و جایگاه 6 967 را در دسته فناوری و برنامهها و رتبه 35 078 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 19 271 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 04 ژوئن, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 19 و در ۲۴ ساعت گذشته برابر 7 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 12.73% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 5.61% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 2 454 بازدید دریافت میکند. در اولین روز معمولاً 1 082 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 11 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند github, rust, pip, api, install تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Полный Дзен Пайтона в одном канале
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/xZOL”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 05 ژوئن, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
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_pythonpyproject.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_pythonpython-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_pythonchat.*, 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_pythonpyproject.toml список пакетов через workspace.members, и Hatch автоматически установит их все в одно окружение в режиме editable. Работает как workspace в Cargo или npm — все пакеты в одном виртуальном окружении, IDE видит их все, pytest может импортировать что угодно.
3️⃣Второе нововведение — поддержка PEP 735 dependency groups. Это стандартизированный способ группировать зависимости прямо в pyproject.toml, не создавая кучу отдельных файлов типа requirements-dev.txt, requirements-test.txt и так далее. Теперь можно держать всё в одном месте: группы для разработки, тестирования, линтеров и т.д. Причём это именно стандарт, а не очередное проприетарное решение одного инструмента.
3️⃣Также добавили опцию sbom-files для включения Software Bill of Materials в пакеты. SBOM — это, по сути, полная спецификация всех компонентов и зависимостей вашего софта, что становится важным для безопасности и compliance. Если нужно отслеживать, что именно входит в ваш пакет и откуда оно взялось, теперь можно это делать стандартным способом.
Код в репо, или вот прямая ссылка на новый релиз.
@zen_of_pythonst.title и выводом таблицы данных в браузере;
🔘подключает Pandas, подгружает датасет, строит базовые графики в один‑два вызова API Streamlit;
🔘добавляет интерактивность через st.selectbox и кеширование данных декоратором, чтобы всё работало быстро.
Главная мысль: для внутренних дашбордов и чтобы быстро посмотреть, что вообще в данных происходит, часто достаточно одного Python‑файла со Streamlit, который можно запускать локально или на внутреннем сервере. Это сильно проще, чем поднимать BI, тащить React или городить отдельный сервис только ради пары графиков.
Оригинал на YT, если вам там удобнее смотреть.
@zen_of_python@app.route может быть вызвана HTTP-запросом, даже если в коде она нигде не вызывается напрямую. Использует систему confidence levels (0-100) — чем ниже значение, тем больше потенциально мертвого кода покажет, включая роуты и хелперы.
Как работает
Анализирует AST, находит неиспользуемые функции, классы, импорты. Для веб-фреймворков применяет пониженный confidence (по умолчанию 60, для роутов — 20). Тестовые файлы исключает автоматически, потому что их вызовы не очевидны статически. Можно запускать в интерактивном режиме и выбирать, что удалять — использует LibCST, поэтому правильно обрабатывает многострочные импорты, алиасы, декораторы и async-функции.
Запуск
pip install skylos
skylos /path/to/project # базовый анализ
skylos --confidence 20 app.py # показать роуты
skylos --interactive /project # выбрать, что удалить
skylos run # веб-интерфейс на localhost:5090
В выдаче — тип находки, confidence score, местоположение. Результаты в benchmarks: быстрее Vulture, лучше recall, чем у Flake8/Ruff. Но как и любой статический анализатор, не ловит getattr() или динамические импорты.
Код в репо, на картинке пример выдачи результатов анализа. Есть также плагин для VS Code.
@zen_of_pythonpip install pyrefly
pyrefly init
pyrefly check --summarize-errors
pyrefly init создаст или обновит конфиг (pyproject.toml или pyrefly.toml), а pyrefly check прогонит типизацию по проекту и покажет сводку ошибок.
Простейший пример, который Pyrefly сразу подсветит:
def add(a: int, b: int) -> int:
return str(a + b)
Аннотация говорит, что функция возвращает int, но фактически возвращается str, и Pyrefly отметит это как ошибку типов. Дальше можно подключить его как сервер языка в редакторе (через LSP или готовое расширение) и получать те же проверки прямо во время набора кода.
Статус беты говорит, что в принципе уже можно начинать использовать в своих проектах. Если уже пробовали — поделитесь мнением в комментариях, пожалуйста.
@zen_of_pythonpip install pymupdf4llm-c или cargo: cargo add pymupdf4llm-c.
Для каждой страницы создается JSON с массивом блоков:
[
{
"type": "paragraph|heading|table|list|figure",
"text": "content",
"bbox": [x0, y0, x1, y1],
"font_size": 11.0,
"font_weight": "normal",
"page_number": 0
}
]
Для таблиц добавляются row_count, col_count, confidence. Координаты в PDF points, типы блоков для семантической обработки.
Как использовать
from pymupdf4llm_c import to_json
# В память
results = to_json("report.pdf", collect=True)
for page in results:
for block in page:
if block['type'] == 'table':
process_table(block) # свой код для таблиц
Можно писать в файлы: to_json(pdf_path, output_dir=Path("json")). Для Rust есть to_json_collect() и extract_page_json().
Полезно, когда:
— требуется предсказуемая структура для векторных баз;
— нужно различать заголовки, списки, таблицы при чанкинге;
— скорость критична: C-реализация быстрее Python-аналогов;
— работаешь с документами, где важна иерархия и расположение элементов.
Перед использованием нужно собрать: ./build.sh. Проект свежий, но рабочий. Код в репо.
@zen_of_python--strict из TypeScript, но на стеке uv + ruff + basedpyright. Идея простая: вместо того, чтобы каждый раз настраивать линтеры, типизацию и менеджер окружений вручную, вы копируете готовый pyproject.toml и сразу получаете очень агрессивные правила по стилю и типам.
В этом шаблоне uv отвечает за управление проектом и зависимостями, ruff — за линтинг и форматирование, а basedpyright — за строгую статическую типизацию с максимальным количеством включённых проверок.
Забрать можно в репозитории, там же инструкции по использованию.
Для новых проектов просто копируете pyproject.toml, меняете секцию [project] под себя, создаёте src/your_package и tests/. Затем установка:
uv venv
.venv\Scripts\activate # Windows
# или source .venv/bin/activate
uv pip install -e ".[dev]"
И далее просто пользуетесь по необходимости:
uv run ruff format .
uv run ruff check . --fix
uv run basedpyright
uv run pytest
Такой сетап хорошо заходит, если вы любите, когда инструменты сразу ломают билд за любые подозрительные места: неописанные типы, мёртвый код, неиспользуемые импорты, странные конструкции и т.п. Из минусов — порог входа выше: придётся либо писать типы везде, либо постоянно удовлетворять строгим линт‑правилам, но для долгоживущих библиотек и сервисов это может сильно окупиться.
@zen_of_python%, str.format, string.Template и f-строк. Синтаксис очень похож на f-строки (те же {} и выражения), но результатом выражения t"..." будет уже не str, а объект шаблона.
Главное отличие: t-строка сама по себе не делает готовую строку, а возвращает объект Template, внутри которого по отдельности лежат куски текста и интерполяции со всеми их метаданными. Это даёт библиотекам возможность сначала пройтись по этим частям (экранировать, валидировать, форматировать), а уже потом собирать финальный вывод.
Из-за этого t-строки полезны в первую очередь авторам библиотек: логированию, шаблонизаторам, SQL/HTML-обёрткам и любому коду, где хочется контролировать интерполяцию до склейки в строку. Для обычного прикладного кода ничего не меняется — продолжаете использовать f-строки, пока конкретная библиотека явно не попросит передать ей t-строку вместо готового текста.
Нырнуть поглубже можно в статье или на видео к посту.
@zen_of_pythontable.c.column, который нормально дружит с проверкой типов и делает код понятнее. Плюс поверх движка добавлены обёртки и декораторы: они берут на себя создание подключений и управление транзакциями.
Пример:
import sqlalchemy as sa
from sqla_fancy_core import TableBuilder
tb = TableBuilder()
class Author:
id = tb.auto_id()
name = tb.string("name")
created_at = tb.created_at()
updated_at = tb.updated_at()
Table = tb("author")
Проект задуман под продакшен: для тех, кто хочет конструктор запросов вместо ORM, но без потери читаемости и безопасности. По словам автора, в отличие от Peewee тут есть аннотации типов и официальная работа с async, Piccolo менее гибкий и сильно навязан по архитектуре, а Pypika не защищает от SQL‑инъекций по умолчанию. В итоге это просто способ сделать SQLAlchemy Core чуть более строгим и удобным, не меняя стек целиком.
Есть отдельное демо по использованию.
@zen_of_python
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
