Перейти к содержанию

Wrapture: обёртки, тестирование и трассировка в Python

5.0/10

Контекст

Саймон Уиллисон анонсирует новую библиотеку Грэма Дамплтона Wrapture, которая развивает идеи monkeypatching из wrapt и применяет их одновременно к тестированию и трассировке. Она позиционируется как альтернатива unittest.mock и способ наблюдать за кодом, которым вы не управляете.

Суть

Ключевая идея — легко оборачивать любую функцию или метод, чтобы перехватывать все вызовы, трассировать их или подменять возвращаемое значение. Wrapture включает поддержку OpenTelemetry и конфигурационный механизм добавления трассировки в существующий проект: например, секция observe указывает цель domain:Calculator и имена outer/inner, а sink пишет JSON Lines в trace.jsonl. В тестах библиотека предлагает паттерны вроде wrapture.binding(Gateway, 'charge').on_call.returns(...) для заглушки и transforms_result для изменения результата исходного метода. Уиллисон отмечает, что проект очень молод — ему всего несколько недель, — но начало многообещающее. Отдельно он подчёркивает, что это первый крупный проект Дамплтона, полностью написанный ИИ-ассистентом под его руководством: это была инженерия, а не «vibe coding», поскольку автор точно знал, каким должен быть результат.

Вывод

Для Уиллисона Wrapture интересна как практичный инструмент, объединяющий тестирование и трассировку, и как пример того, как опытный разработчик может использовать ИИ для реализации собственного замысла, а не как источник готового дизайна.