Pyrefly дорос до беты. Это быстрый type checker и языковой сервер для Python, написанный на Rust: он анализирует типы в проекте и одновременно обслуживает IDE-фичи вроде перехода к определению, подсветки типов и поиска по символам. Подходит, если вы активно используете type hints и хотите получать постоянную проверку типов без ощутимых тормозов даже на больших кодовых базах.
Быстрый старт в проекте выглядит так:
Простейший пример, который Pyrefly сразу подсветит:
Аннотация говорит, что функция возвращает
Статус беты говорит, что в принципе уже можно начинать использовать в своих проектах. Если уже пробовали — поделитесь мнением в комментариях, пожалуйста.
@zen_of_python
Быстрый старт в проекте выглядит так:
pip 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_python
👍4
Новый инструмент для поиска мертвого кода в Python-проектах, называется Skylos. Автор заявляет проблему: статические анализаторы часто ругаются на вещи, которые на самом деле используются — например, роуты или хендлеры, которые вызываются извне. И пытается её решить через сканер, который учитывает специфику фреймворков.
Skylos понимает, что функция с декоратором
Как работает
Анализирует AST, находит неиспользуемые функции, классы, импорты. Для веб-фреймворков применяет пониженный confidence (по умолчанию 60, для роутов — 20). Тестовые файлы исключает автоматически, потому что их вызовы не очевидны статически. Можно запускать в интерактивном режиме и выбирать, что удалять — использует LibCST, поэтому правильно обрабатывает многострочные импорты, алиасы, декораторы и async-функции.
Запуск
В выдаче — тип находки, confidence score, местоположение. Результаты в benchmarks: быстрее Vulture, лучше recall, чем у Flake8/Ruff. Но как и любой статический анализатор, не ловит
Код в репо, на картинке пример выдачи результатов анализа. Есть также плагин для VS Code.
@zen_of_python
Skylos понимает, что функция с декоратором
@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_python
✍4❤1
На реддите обсуждают кто какую библиотеку использует для отрисовки графиков в Python.
Сделал краткую выжимку и подборку библиотек:
🔘 Matplotlib — базовый стандарт;
🔘 Bokeh — интерактивные графики и дашборды в браузере;
🔘 Plotly.py — интерактивные 2D/3D‑графики и отчёты;
🔘 Seaborn — красивые статистические графики поверх Matplotlib;
🔘 PyQtGraph — быстрые интерактивные графики и GUI на Qt, хорошо подходит для real‑time;
🔘 Plotnine — ggplot2‑подобный, декларативный стиль построения графиков;
🔘 HoloViews — «данные сначала», декларативные интерактивные визуализации;
🔘 hvPlot — интерактивный .hvplot() для pandas/dask/xarray.
На картинке — сравнение по количеству звёзд на GitHub.
В самом треде для интерактивных графиков с зумом/hover/tooltip чаще всего советуют Plotly и Bokeh, а Matplotlib — если хватает статических картинок.
@zen_of_python
Сделал краткую выжимку и подборку библиотек:
На картинке — сравнение по количеству звёзд на GitHub.
В самом треде для интерактивных графиков с зумом/hover/tooltip чаще всего советуют Plotly и Bokeh, а Matplotlib — если хватает статических картинок.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🦄2❤1
Есть готовый шаблон FastAPI‑NiceGUI‑Template: фуллстек‑проект целиком на Python с FastAPI на бэкенде, NiceGUI на фронтенде, PostgreSQL в базе и SQLModel в качестве ORM. Он даёт асинхронный API c Pydantic‑валидацией, серверный компонентный UI, работу с БД через Docker Compose и уже настроенную JWT‑аутентификацию.
Основные фичи:
🔘 CRUD по сущностям (items);
🔘 пользователи с ролями (обычный и суперюзер) и разным уровнем доступа;
🔘 динамический UI, который подстраивается под права залогиненного пользователя;
🔘 автодоки API через Swagger UI и ReDoc.
Использовать шаблон удобно, когда нужно быстро собрать внутреннюю админку, дашборд или демо для ML/данных и при этом остаться в одном стеке на Python, без отдельного React/Vue‑фронта и Node.js‑сборки. Для старта достаточно склонировать проект, поднять PostgreSQL через Docker Compose и запустить приложение.
Код в репо, подробнее в блоге автора шаблона, на видео демо.
@zen_of_python
Основные фичи:
Использовать шаблон удобно, когда нужно быстро собрать внутреннюю админку, дашборд или демо для ML/данных и при этом остаться в одном стеке на Python, без отдельного React/Vue‑фронта и Node.js‑сборки. Для старта достаточно склонировать проект, поднять PostgreSQL через Docker Compose и запустить приложение.
Код в репо, подробнее в блоге автора шаблона, на видео демо.
@zen_of_python
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤣2👍1
Канал по нейронкам, который часто пересекается с Python по темам: @neuro_channel
Веду его тоже я, так что если вам нравятся посты в Zen of Python в последние недели, то буду рад видеть вас и в «Нейроканале».
Три примечательных поста:
1️⃣ Про утилиту, которая автоматически снимает цензуру (safety alignment) с трансформерных языковых моделей без дообучения и ручного тюнинга.
3️⃣ Разбор сборки GPT‑OSS с нуля на чистом Python, без PyTorch и без GPU: последовательно с объяснениями от Softmax и RMSNorm до Grouped Query Attention.
3️⃣ Залипательный ролик с анимацией, как нейросеть «думает» в латентном пространстве в процессе обучение распознаванию цифр.
Плюс новости о выходе новых моделей, чтобы не пропустить ничего важного. Про ту же Kimi K2 я писал ещё 7го ноября, до того как это стало мейнстримом. Сейчас вон даже в Perplexity добавили её, рядом с GPT 5.1, хотя это открытая модель.
@zen_of_python
Веду его тоже я, так что если вам нравятся посты в Zen of Python в последние недели, то буду рад видеть вас и в «Нейроканале».
Три примечательных поста:
Плюс новости о выходе новых моделей, чтобы не пропустить ничего важного. Про ту же Kimi K2 я писал ещё 7го ноября, до того как это стало мейнстримом. Сейчас вон даже в Perplexity добавили её, рядом с GPT 5.1, хотя это открытая модель.
@zen_of_python
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2