Media is too big
VIEW IN TELEGRAM
Как провести проверку типов в 1,8 миллионах строчек Python-кода за секунду? Нил Митчел рассказывает как новый тайп-чекер Pyrefly достигает такой скорости (дубляж на русский).
Аннотации типов появились ещё в 2014 году и с тех пор стали значительно сложнее: дженерики, подтипы, flow types, field refinement и другие не всем даже известные слова. Pyrefly моделирует и проверяет эту сложную систему и делает это быстро.
В принципе тем же самым занимается uv ty, но у ребят из Astral немного другой подход: дать пользу программисту аккуратно, не ошибиться случайно в коде, который хоть и без типов, но теоретически может быть валидным. Можно сказать, что Pyrefly более агрессивный и стабильный, хотя оба проекта ещё в альфе.
Попробовать можно прям на сайте проекта: pyrefly.org/sandbox
Что ж, наконец-то кто-то сможет угнаться за скоростью написания вайб-кода и проверить хотя бы типы.
@zen_of_python
Аннотации типов появились ещё в 2014 году и с тех пор стали значительно сложнее: дженерики, подтипы, flow types, field refinement и другие не всем даже известные слова. Pyrefly моделирует и проверяет эту сложную систему и делает это быстро.
В принципе тем же самым занимается uv ty, но у ребят из Astral немного другой подход: дать пользу программисту аккуратно, не ошибиться случайно в коде, который хоть и без типов, но теоретически может быть валидным. Можно сказать, что Pyrefly более агрессивный и стабильный, хотя оба проекта ещё в альфе.
Попробовать можно прям на сайте проекта: pyrefly.org/sandbox
Что ж, наконец-то кто-то сможет угнаться за скоростью написания вайб-кода и проверить хотя бы типы.
@zen_of_python
❤2👍1
Совет управляющих Python одобрил два PEP — 798 про распаковку в comprehensions и 810 про явные ленивые импорты, оба целятся в Python 3.15.
PEP 798 добавляет возможность применять распаковку прямо в comprehensions и генераторах: можно использовать символы звездочки для объединения и слияния, например
PEP 810 вводит явный синтаксис ленивых импортов:
P.S. Кто такие эти ваши «совет управляющих»? После ухода Гвидо с роли BDFL в 2018 сообщество приняло модель управления PEP 8016 — стратегию языка и финальные решения по PEP принимает избираемый из core-разработчиков Совет из пяти человек. Этот Совет переизбирается после каждого мажорного релиза голосованием среди core-dev’ов и выступает финальным арбитром по спорным вопросам развития языка.
PEP 798 добавляет возможность применять распаковку прямо в comprehensions и генераторах: можно использовать символы звездочки для объединения и слияния, например
[*it for it in its] или {**d for d in dicts}. Приняли с оговоркой: и синхронные, и асинхронные генераторные выражения должны использовать явные циклы, без yield from, чтобы сохранить простой и единый стиль, ближе к поведению itertools.chain.from_iterable.PEP 810 вводит явный синтаксис ленивых импортов:
lazy import json и lazy from json import dumps, когда модуль реально загрузится только при первом обращении к имени — полезно для ускорения старта и экономии памяти. Совет уточнил детали: .pth не поддерживают ленивые импорты, появится sys.get_lazy_imports(), и будет зафиксирован приоритет между переменной окружения, флагом -X и вызовами sys.set_lazy_imports(), при этом стилистические правила сортировки оставят линтерам и форматтерам.P.S. Кто такие эти ваши «совет управляющих»? После ухода Гвидо с роли BDFL в 2018 сообщество приняло модель управления PEP 8016 — стратегию языка и финальные решения по PEP принимает избираемый из core-разработчиков Совет из пяти человек. Этот Совет переизбирается после каждого мажорного релиза голосованием среди core-dev’ов и выступает финальным арбитром по спорным вопросам развития языка.
🔥8❤4
В Python 3.14 появилось фишка, которая реально меняет дебаг live-процессов: безопасный внешний интерфейс отладки по PEP 768, который позволяет подключаться к уже запущенному питоновскому процессу по PID — без перезапуска и без ломания рантайма на ровном месте. В практическом виде это значит, что теперь можно сделать обычный attach встроенным pdb:
Главная фишка — все происходит в «безопасных точках» интерпретатора, без хака с инъекцией машинного кода через ptrace/LLDB и без риска словить краш, гонки за GIL или порчу памяти при сборке мусора. Интерфейс кооперируется с eval loop CPython и просто просит интерпретатор выполнить небольшой скрипт, когда это безопасно; под капотом для этого добавили пару полей в PyThreadState и используют существующий eval_breaker, поэтому накладных расходов в обычном режиме нет.
Для инструментов завезли
Если хотите детали и хороший разбор, у surister вышел пост после выступления Пабло Галиндо (соавтора PEP): там с примерами, почему старые подходы были хрупкими, и как новый протокол делает attach нормальным инструментом, а не рулеткой с падениями.
Ещё раз супер-кратко: теперь attach к живому Python — это стандартная возможность CPython 3.14, с нулевой ценой в рантайме и без трюков уровня «инжектим код в произвольной точке», что сильно упрощает жизнь при отладке долгоживущих сервисов и edge/IoT кейсов.
А вы знали, что так можно?
python -m pdb -p <PID>, залезть внутрь, посмотреть состояние, выполнить код — как будто запускал под отладчиком с самого начала.Главная фишка — все происходит в «безопасных точках» интерпретатора, без хака с инъекцией машинного кода через ptrace/LLDB и без риска словить краш, гонки за GIL или порчу памяти при сборке мусора. Интерфейс кооперируется с eval loop CPython и просто просит интерпретатор выполнить небольшой скрипт, когда это безопасно; под капотом для этого добавили пару полей в PyThreadState и используют существующий eval_breaker, поэтому накладных расходов в обычном режиме нет.
Для инструментов завезли
sys.remote_exec(pid, path_to_script): можно подложить .py-файл и он выполнится в целевом процессе при первой возможности, что удобно для быстрых диагностик: распечатать стек, проверить состояние, собрать метрики, даже если это прод и процесс нельзя трогать. Момент важный для продакшена и безопасности: механизм можно отключить через переменные/флаги (PYTHON_DISABLE_REMOTE_DEBUG, -X disable-remote-debug, сборка без поддержки), а любые вызовы проходят через audit hooks, так что всё прозрачно и контролируемо для админов.Если хотите детали и хороший разбор, у surister вышел пост после выступления Пабло Галиндо (соавтора PEP): там с примерами, почему старые подходы были хрупкими, и как новый протокол делает attach нормальным инструментом, а не рулеткой с падениями.
Ещё раз супер-кратко: теперь attach к живому Python — это стандартная возможность CPython 3.14, с нулевой ценой в рантайме и без трюков уровня «инжектим код в произвольной точке», что сильно упрощает жизнь при отладке долгоживущих сервисов и edge/IoT кейсов.
А вы знали, что так можно?
This media is not supported in your browser
VIEW IN TELEGRAM
🔥7❤1
Вот хороший учебный проект по agentic RAG, который можно поднять локально без API‑ключей и облака: только Python, LangGraph и ваш комп. Автор собрал в одном месте весь пайплайн: от подготовки данных до рабочего агента, чтобы новичкам не рыскать по разрозненным гайдам и видео. В отличие от типичных туториалов «кусочками», здесь end‑to‑end реализация с минимальными зависимостями и упором на понятность и практичность.
Что внутри по механике: конвертация PDF → Markdown, иерархическое разбиение на чанки, гибридные эмбеддинги, хранение в Qdrant, параллельная обработка мульти‑запросов, переформулировка вопросов и уточнения у человека при неоднозначностях. Контекст сжимается через саммари, а поверх всего — агент на LangGraph, который сам решает, когда переписать запрос, когда добрать родительские чанки, и когда генерировать ответ; есть простой чат‑интерфейс на Gradio.
Фишка именно в «агентности»: это не линейный проект, а петля с проверками, где агент оценивает достаточность контекста, при необходимости расширяет поиск (например, поднимая родительский уровень чанков) и только потом отвечает. Такой подход лучше тянет сложные вопросы и снижает галлюцинации, потому что решение не зашито жёстко в пайплайн — агент сам выбирает следующий шаг.
Кому зайдёт: если хочется руками понять, как склеиваются рассуждение, ретрив, переписывание запросов и память в реальном агенте — это ровно тот кейс. Репозиторий свежий и минималистичный; можно быстро форкнуть и адаптировать под свои документы.
Что внутри по механике: конвертация PDF → Markdown, иерархическое разбиение на чанки, гибридные эмбеддинги, хранение в Qdrant, параллельная обработка мульти‑запросов, переформулировка вопросов и уточнения у человека при неоднозначностях. Контекст сжимается через саммари, а поверх всего — агент на LangGraph, который сам решает, когда переписать запрос, когда добрать родительские чанки, и когда генерировать ответ; есть простой чат‑интерфейс на Gradio.
Фишка именно в «агентности»: это не линейный проект, а петля с проверками, где агент оценивает достаточность контекста, при необходимости расширяет поиск (например, поднимая родительский уровень чанков) и только потом отвечает. Такой подход лучше тянет сложные вопросы и снижает галлюцинации, потому что решение не зашито жёстко в пайплайн — агент сам выбирает следующий шаг.
Кому зайдёт: если хочется руками понять, как склеиваются рассуждение, ретрив, переписывание запросов и память в реальном агенте — это ровно тот кейс. Репозиторий свежий и минималистичный; можно быстро форкнуть и адаптировать под свои документы.
This media is not supported in your browser
VIEW IN TELEGRAM
🔥4