← Все статьи
2026-09-01 08:09 · 🤖 AI World

Wrapture: AI написал библиотеку, которую автор спроектировал сам

Грэм Дэмплтон — автор wrapt и Python-агента New Relic — выпустил Wrapture: библиотеку для обёртки функций с трассировкой, тестированием и поддержкой OpenTelemetry. Весь код написан ИИ-ассистентом. Но это принципиально другая история, чем вайб-кодинг.

Wrapture: AI написал библиотеку, которую автор спроектировал сам

Грэм Дэмплтон — автор wrapt, mod_wsgi и Python-агента New Relic — выпустил Wrapture. Библиотека позволяет обернуть любую функцию или метод так, чтобы отслеживать все вызовы, перехватывать аргументы и подменять возвращаемые значения — без изменения исходного кода. Проекту несколько недель, но уже есть полная документация, тесты и отдельный пост о паттернах тестирования.

Контекст

Wrapt — одна из самых уважаемых Python-библиотек для декораторов и monkey-patching. Дэмплтон годами работал над инструментами наблюдаемости: Python-агент New Relic, mod_wsgi для Apache — всё это инфраструктура, которая позволяет смотреть внутрь чужого кода, не трогая его. Wrapture продолжает ту же идею, но объединяет трассировку и тестирование в одном интерфейсе.

Ключевая проблема, которую решает библиотека: как наблюдать за кодом, которым ты не управляешь, не нарушая его поведения. Нужно добавить трассировку в legacy-сервис без рефакторинга? Написать тест с перехватом вызова стороннего API без громоздкого unittest.mock? Wrapture предлагает единый интерфейс для обоих сценариев.

«Присоединять наблюдение к коду, которым ты не управляешь, записывать то, что через него проходит, и делать это, не тревожа наблюдаемую программу — это проблема, о которой я никогда не переставал думать.»

Библиотека поддерживает OpenTelemetry и включает конфигурационный режим трейсинга: добавить наблюдаемость в существующий Python-проект можно через TOML-подобный конфиг, вообще не меняя исходный код. Это редкость среди инструментов такого класса.

Аналитика

Здесь два сюжета. Первый — сама библиотека. Альтернатива unittest.mock давно назревала: стандартный mock громоздкий, плохо читается и требует знания внутренностей того, что мокируешь. Wrapture предлагает wrapture.binding(Gateway, "charge").on_call.returns({...}) — синтаксис, который читается почти как спецификация. Плюс паттерн transforms_result: вызвать реальный метод и затем модифицировать его ответ — без полного мока и без потери покрытия.

Второй сюжет важнее для индустрии в целом. Дэмплтон прямо заявляет, что каждая строка Wrapture написана ИИ-ассистентом — и тут же проводит жёсткую границу: это не вайб-кодинг. Вайб-кодинг — когда промт генерирует кучу кода, а человек надеется на лучшее, потому что не может оценить результат. Здесь иначе: автор десятилетиями работал в этом углу Python и точно знал, каким должен быть результат. ИИ — инструмент производства, а не источник дизайна.

Это разделение становится центральным для понимания следующего этапа разработки ПО. Экспертиза не исчезает — она перемещается с написания кода на архитектуру, требования и верификацию. Wrapture — ранний, но убедительный пример того, как это выглядит на практике в серьёзном инструментарии, а не в учебных экспериментах.

Кейсы применения в бизнесе

B2B SaaS стартап. Команда интегрирует платёжный провайдер. Тестировать реальные вызовы дорого и ненадёжно. Wrapture позволяет заменить Gateway.charge() на заглушку с предсказуемым ответом — одной конструкцией — и дополнительно верифицировать трансформацию данных через transforms_result. Тесты становятся точнее, не зависят от внешней системы, читаются как документация.

Корпорация с legacy-кодом. Есть production Python-сервис без трассировки. Переписывать нельзя — слишком рискованно. Конфигурационный режим Wrapture позволяет добавить OpenTelemetry-трейсинг через конфиг-файл без единого изменения в исходном коде. Spans и метрики начинают поступать в любой OTEL-совместимый бэкенд, не трогая бизнес-логику.

Небольшая команда в КР или СНГ. Поддерживаете интеграцию с локальным API или сторонним сервисом. Добавить наблюдаемость с нуля — задача на недели. Конфигурационный трейсинг Wrapture снижает порог входа: описываете целевые функции в конфиге, подключаете sink, получаете трассировку без погружения в архитектуру чужого кода.

Кейсы в личной жизни

Разработчик, пишущий тесты. Если вы регулярно используете unittest.mock.patch и устали от verbose-синтаксиса — Wrapture прямая альтернатива. Паттерн with wrapture.binding(Class, "method").on_call.returns(value): компактнее и читается без расшифровки. Попробуйте переписать один тестовый файл: сразу будет понятно, подходит ли вам.

Python-разработчик на фрилансе. Добавление трейсинга в чужой проект — частая задача при аудите или консалтинге. Конфигурационный подход Wrapture означает, что можно продемонстрировать наблюдаемость заказчику за один рабочий день, не погружаясь глубоко в архитектуру его кода.

Студент или джун. Wrapture — хороший учебный пример того, как устроены monkey-patching, декораторы и перехват вызовов в Python. Исходный код написан при участии ИИ, но спроектирован экспертом — архитектура читаемая и осмысленная, не генерированный хаос. И мета-история разработки тоже полезна: смотреть, как эксперт ставит задачи ИИ-ассистенту.

Как применить сегодня

  • Установите Wrapture через pip и пройдитесь по официальной документации — она подробная и структурированная.
  • Найдите в своём проекте один тест с unittest.mock.patch и перепишите его через wrapture.binding(): сравните читаемость и объём кода.
  • Если есть legacy Python-сервис без трассировки — попробуйте конфигурационный режим: опишите целевые функции и подключите OTEL-sink в конфиге, не меняя исходный код.
  • Изучите паттерн transforms_result: он позволяет вызвать реальный метод и модифицировать его ответ — удобно для тестирования трансформаций данных от внешних API.
  • Прочитайте пост Дэмплтона о разработке через ИИ — он поднимает конкретный вопрос о том, где граница между экспертным agent-driven подходом и вайб-кодингом, и как выглядит первый на практике.
← Все статьи