
31 августа 2026 года Graham Dumpleton, известный Python-разработчик, создатель библиотек wrapt и mod_wsgi, а также автор Python-агента New Relic, выпустил новую библиотеку Wrapture. За две недели проект, находящийся на стадии альфы, оброс десятком туториалов, интерактивными Jupyter-воркшопами и поддержкой OpenTelemetry. Саймон Уиллисон, отметивший инструмент в своем блоге, назвал его «швейцарским ножом для Python-разработчика» и удивился слабому резонансу в сообществе.
Wrapture предлагает единый API для двух, казалось бы, разных задач: подмена поведения функций и методов при тестировании (конкурент unittest.mock) и трассировка живых приложений (аналог New Relic, но с экспортом в OpenTelemetry). Ключевая особенность — возможность настраивать трассировку без единой строки изменений в коде, через отдельный TOML-файл.
Что изменилось
Что такое Wrapture и зачем он нужен
Wrapture — это библиотека для monkey patching, расширяющая идеи, заложенные в wrapt. Dumpleton описывает её как инструмент, который позволяет «прикрепить наблюдение к коду, который вы не контролируете, записывать, что через него проходит, и делать это, не нарушая работу программы».
Основные возможности, подтверждённые туториалами автора:
— Подмена возвращаемых значений методов (stub) — альтернатива unittest.mock.
— Запись вызовов методов в виде таймлайнов с визуализацией в виде деревьев.
— Фазовое поведение — изменение поведения патченного метода при последовательных вызовах.
— Патчинг не только функций, но и атрибутов, словарей, генераторов.
— Трассировка живого приложения с записью метрик производительности.
— Экспорт трейсов в OpenTelemetry.
— Нулевая кодовая трассировка: настройка в TOML-файле без изменения Python-кода.
Кого это касается
Отдельно стоит пакет wrapture-instrumentation, который предоставляет готовые инструменты для популярных фреймворков: Flask, Django, FastAPI, aiohttp, httpx, requests, SQLAlchemy, SQLite, Starlette, Uvicorn, gRPC, Jinja2, urllib, xmlrpc и Werkzeug.
Пример нулевой кодовой трассировки
Одна из самых сильных сторон Wrapture — конфигурация через TOML. Для того чтобы начать трассировать произвольное Python-приложение, достаточно создать файл конфигурации:
Что проверить
capture = «summary»
[[observe]]
target = «domain:Calculator»
name = [«outer», «inner»]
[[sink]]
type = «jsonlines»
path = «trace.jsonl»
Этот пример из документации показывает, как настроить трассировку методов outer и inner класса Calculator с выводом в JSON-логи. Никакого изменения исходного кода приложения не требуется.
AI как инструмент инженерии, а не «vibe coding»
Отдельного внимания заслуживает история создания Wrapture. Dumpleton прямо заявил: каждая строка кода и документации была написана AI-ассистентом под его руководством. При этом он подчёркивает разницу между осознанной инженерией и «vibe coding»:
«Это не было vibe coding, где одноразовый промпт порождает кучу сгенерированного кода, а человек надеется на лучшее, потому что ему не хватает знаний, чтобы оценить результат. Vibe coding заслужил свою плохую репутацию. Я спроектировал Wrapture тщательно с самого начала. Я провёл много времени в этом конкретном углу Python и точно знал, каким должен быть результат. AI был средством его производства, а не источником дизайна.»
Это заявление делает Wrapture интересным кейсом: библиотека, созданная AI, но спроектированная экспертом с десятилетиями опыта в предметной области.
Что это значит для Python-сообщества
Wrapture может изменить подход к тестированию и observability в Python. Вместо двух разных библиотек (unittest.mock + OpenTelemetry SDK) разработчики получают единый инструмент. Нулевая конфигурация через TOML особенно полезна для DevOps-инженеров и SRE: можно добавить трассировку в legacy-приложение за минуты, без рефакторинга.
Однако важно учитывать, что проект находится в альфа-стадии. Dumpleton предупреждает, что API может меняться. Тем не менее, наличие десятка туториалов, интерактивных воркшопов и готовой инструментации для популярных фреймворков говорит о серьёзном подходе.
Ограничения и что стоит проверить
При всём энтузиазме, Wrapture пока не прошёл боевую обкатку. Нет независимых бенчмарков производительности. Нет информации о том, как библиотека ведёт себя под высокой нагрузкой. Нет данных о совместимости с альтернативными рантаймами (PyPy, MicroPython). Отсутствуют сравнения производительности с unittest.mock и OpenTelemetry SDK.
Также стоит отметить, что Wrapture — не единственный проект в этой нише. Существуют библиотеки pytest-monkeypatch, mock и более тяжёлые решения для observability. Будет ли Wrapture достаточно лёгким для CI/CD пайплайнов — вопрос открытый.
Что дальше
Wrapture доступен на GitHub с полной документацией. Интерактивные воркшопы в формате JupyterLab позволяют быстро попробовать библиотеку в деле. Для тех, кто работает с Flask, Django или FastAPI, пакет wrapture-instrumentation даёт готовые инструменты для трассировки.
Если проект сохранит текущий темп развития и получит отзывы от сообщества, он имеет все шансы стать стандартным инструментом в арсенале Python-разработчика. Пока же — это многообещающая альфа, за которой стоит следить.
