Intermédiaire·2 min·1 septembre 2026

Wrapture : tracer et mocker le code Python sans le toucher

🎧 Résumé audio0:00 / 0:00
Un nouvel outil Python permet d'observer et de modifier n'importe quelle fonction sans l'éditer — entièrement généré par une IA dirigée.
Wrapture : tracer et mocker le code Python sans le toucher

Pourquoi ça compte pour toi

Si tu travailles sur du code existant (legacy ou tiers), tu vas adorer. Wrapture te laisse ajouter du tracing, des tests, des observations sans toucher à une ligne de la base de code. C'est un gain de temps énorme pour déboguer, tester, ou monitorer en production sans risque.

Ce qu'il faut retenir

  • 1.Hybride mock + tracing : remplace unittest.mock ET ajoute de l'instrumentation temps réel
  • 2.Déclaratif : définis ce que tu veux tracer en TOML, pas en Python — pensé pour le legacy
  • 3.OpenTelemetry natif : tes traces arrivent directement dans ton système de monitoring existant

Tu galères avec le jargon ?

Lis la version réécrite en mode débutant — toutes les idées, sans le jargon.

Pourquoi c'est différent des outils habituels

La plupart des solutions te forcent à choisir : soit tu mockes (unittest.mock), soit tu traces (OpenTelemetry). Wrapture fusionne les deux. Tu peux intercepter une fonction, changer son retour pour un test, ET enregistrer chaque appel simultanément.

Deux cas d'usage concrets

Cas 1 : mocker sans refactor

Imagine une classe Gateway avec une méthode charge() que tu appelles de partout. Tu veux la tester sans vraiment facturer :

with wrapture.binding(Gateway, "charge").on_call.returns({"id": "stub", "amount": 0}):
    assert OrderService().place(500)["id"] == "stub"

Zéro changement dans OrderService. Le mock est local, temporaire, transparent.

Cas 2 : transformer le résultat à la volée

Tu veux garder le vrai comportement mais modifier la réponse :

charge = wrapture.binding(Gateway, "charge")
charge.on_call.transforms_result(lambda r: {**r, "id": "ch_TEST"})
with charge:
    assert OrderService().place(500) == {"id": "ch_TEST", "amount": 500}

Le résultat réel passe dans ta fonction, tu le transformes, et c'est ce que le code voit.

Configuration déclarative pour le legacy

C'est là que ça devient dingue. Au lieu de parcourir du Python, tu déclares tes besoins de tracing en config :

capture = "summary"

[[observe]]
target = "domain:Calculator"
name = ["outer", "inner"]

[[sink]]
type = "jsonlines"
path = "trace.jsonl"

Zéro code modifié. Wrapture se branche directement sur tes fonctions, capture les appels, et produit des logs structurés. Idéal pour du code que tu n'oses pas toucher.

Note : construit par une IA, vraiment bien dirigée

Graham Dumpleton (le mec derrière wrapt et l'agent Python de New Relic) a construit Wrapture entièrement via IA. Mais attention : ce n'est PAS du « vibe coding » où tu lances un prompt et croises les doigts. Graham connaît le coin Python sur le bout des doigts, il a conçu l'architecture, et l'IA a simplement traduit sa vision en code. Un bon exemple de ce qu'on peut faire avec une IA quand on sait exactement ce qu'on veut.

Le projet n'a que quelques semaines. À suivre.

Et concrètement pour toi ?

Choisis ton profil — la lecture de l'article change selon qui tu es.

🔭 Curieux

Pour toi, Wrapture montre comment l'IA commence à écrire les outils que les devs utilisent, pas juste le code applicatif — c'est une mutation du métier de dev. Retiens que sans toucher une ligne de code existant, on peut le modifier, le tracer et le monitorer : ça change la notion de « intouchable ».

Newsletters Noésis

3 minutes d'IA dans ta boîte mail, chaque matin.

Rejoins les francophones qui comprennent, essaient et progressent avec l'IA. Choisis ce que tu veux recevoir. Désabonnement en 1 clic.

Explorer les thèmes de cet article :