veilletech.fr
12 sept. Feed du jour
#07 PYTHON Article

wrapture : tracer Python sans toucher au code

Instrumenter sans éditer : l'observabilité arrête d'être une dette.

Graham Dumpleton, auteur de wrapt et mod_wsgi, a publié le 31 août wrapture, une bibliothèque de monkey patching qui sert autant aux tests qu'à l'observabilité. L'instrumentation se déclare dans un fichier TOML, sans modifier le code de l'application, et s'exporte vers OpenTelemetry.

1 min de lectureintermédiairevidéo 1:17
Partager
Sommaire3 sections
  1. Ce qui se passe
  2. Ce que ça couvre
  3. À retenir

Ce qui se passe

wrapture est une bibliothèque de monkey patching publiée le 31 août 2026 par Graham Dumpleton — l'auteur de wrapt et de mod_wsgi. Depuis, il publie un tutoriel presque chaque jour : dix à ce jour. Simon Willison, qui la signale, s'étonne du peu de bruit autour d'elle.

Sa particularité est de servir deux usages qu'on outille d'habitude séparément : les tests et l'observabilité.

Ce que ça couvre

Côté tests, elle remplace unittest.mock sur son terrain : substituer un comportement, enregistrer les appels sous forme de chronologies affichables en arbres, faire varier la réponse d'une méthode d'un appel à l'autre (comportement par phases). Elle ne se limite pas aux appelables : attributs, dictionnaires et générateurs se patchent aussi.

Côté observabilité, c'est du traçage à la New Relic : tracer une application en fonctionnement, mesurer les durées appel par appel ou agrégées pour trouver le code lent, exporter vers OpenTelemetry.

Le point qui change la pratique est la configuration en TOML : on active le traçage dans un fichier séparé, sans modifier une ligne de Python. Le paquet complémentaire wrapture-instrumentation fournit l'instrumentation prête pour aiohttp.client, aiohttp.web, django, fastapi, flask, grpc, http.client, httpx, jinja2, requests, sqlalchemy, sqlite3, starlette, urllib.request, urllib3, uvicorn, werkzeug.serving, wsgiref.simple_server, xmlrpc.client et xmlrpc.server.

Des ateliers interactifs sous forme de notebooks JupyterLab complètent le tout.

Source : Simon Willison.