Introducing wrapture
Oleh Zai · Let's Make It Easy
Dipublikasikan 2026-09-01
Wrapture adalah library Python eksperimental untuk mengamati dan mengubah perilaku pemanggilan fungsi tanpa mengedit kode yang sedang diamati. Proyek ini dibuat oleh Graham Dump...
Wrapture adalah library Python eksperimental untuk mengamati dan mengubah perilaku pemanggilan fungsi tanpa mengedit kode yang sedang diamati. Proyek ini dibuat oleh Graham Dumpleton, pengembang di balik wrapt dan mod_wsgi. Fokusnya ada di dua kebutuhan yang biasanya ditangani alat berbeda: testing dan tracing.
1. Apa itu Wrapture?
Dalam testing, unittest.mock sering mengganti objek dengan mock. Cara ini praktis, tetapi mock tidak selalu memperlihatkan apa yang terjadi di dalam kode asli. Wrapture mengambil pendekatan lain: fungsi atau method dapat dibungkus, panggilan bisa dicatat, dan kode asli tetap dijalankan. Dokumentasinya menggambarkan library ini sebagai cara untuk menambahkan binding ke call site tanpa memodifikasi kode yang diamati.
Artinya, kita bisa memeriksa argumen, return value, urutan pemanggilan, atau hubungan antar-panggilan dengan konteks yang lebih dekat ke runtime sebenarnya. Itu berguna ketika bug tidak muncul pada mock sederhana, terutama saat sebuah objek memanggil method internalnya sendiri.
2. Tracing juga bagian dari desainnya
Wrapture mendukung OpenTelemetry dan menyediakan mekanisme berbasis konfigurasi untuk menambahkan observasi ke project Python yang sudah ada. Contoh di dokumentasi memakai target seperti domain Calculator dan mengirim hasil observasi ke file JSON Lines. Pendekatan konfigurasi ini dapat membantu ketika kita ingin mencoba tracing tanpa langsung menyebarkan perubahan ke banyak modul.
Graham Dumpleton menjelaskan bahwa ide tersebut berangkat dari pengalaman panjang dengan monkey patching dan instrumentasi Python. Simon Willison juga mencatat bahwa proyek ini seluruh kode dan dokumentasinya dibuat dengan bantuan AI assistant di bawah arahan Graham. Detail itu menarik, tetapi bukan bukti bahwa library otomatis matang untuk production.
3. Status alpha perlu dianggap serius
Dokumentasi resmi masih menandai Wrapture sebagai alpha sebelum versi 1.0.0. Beberapa use case utama sudah dijelaskan, termasuk testing, ad-hoc tracing, WSGI/ASGI tracing, dan export ke OpenTelemetry. Namun API dan perilaku proyek alpha masih perlu diuji terhadap kebutuhan spesifik kita.
Cara aman untuk mengevaluasinya adalah membuat project kecil, menambahkan satu wrapper, lalu membandingkan hasilnya dengan unittest.mock dan instrumentasi OpenTelemetry yang sudah digunakan. Perhatikan overhead, output trace, interaksi dengan async code, serta perilaku saat library pihak ketiga dipatch. Jangan memasang tool ini langsung ke service penting tanpa test dan rollback plan.
Wrapture punya ide yang masuk akal: testing dan observability memang sering membutuhkan akses ke call yang sama. Pertanyaan berikutnya bukan apakah demonya menarik, tetapi apakah satu mekanisme bisa tetap mudah dipahami ketika codebase mulai besar. Jawabannya baru kelihatan setelah dipakai bersama test suite dan telemetry yang sudah berjalan. Untuk library yang menyentuh runtime, dokumentasi bagus tetap harus dilengkapi reproduksi lokal dan rollback yang jelas.
Referensi: https://simonwillison.net/2026/Aug/31/introducing-wrapture/