Graham Dumpleton发布wrapture:基于wrapt的Python测试与追踪库,全代码由AI助手编写
该库可替代unittest.mock,支持OpenTelemetry及纯配置方式为现有项目添加追踪;这是Dumpleton首个完全由AI助手按指示完成的大型项目。
AI解读:wrapture是Graham Dumpleton发布的新Python库,它把wrapt的monkeypatching思路同时用到测试和追踪上,既能替代unittest.mock做替换,也能在不改动代码的情况下记录被观察对象的调用。它最直接的用处是让开发者快速给第三方库或遗留系统挂上观测——比如用一段TOML配置就能让Calculator对象被追踪输出到JSONL文件,还自带OpenTelemetry支持。对写测试的人来说,它提供了一种更简洁的stub方式。更特殊的是这个项目的生产过程:Dumpleton声称每行代码和文档都由AI助手在他的明确指导下完成,他不是盲发prompt的vibe coding,而是先有精确设计再用AI实现。这说明在有资深工程师把关的前提下,AI可以负担较大的完整项目开发,但这不等于AI能独立设计系统,实际效果仍依赖人的判断,项目才几周大,成熟度还有待观察。
Graham Dumpleton(wrapt、mod_wsgi和New Relic Python代理作者)发布新项目wrapture,将wrapt的monkeypatching思想扩展到同时用于测试和追踪。据其介绍,该库可包装任意函数或方法,实现访问追踪或覆盖返回值,兼作unittest.mock的替代品,并向现有项目添加追踪。
配置式追踪与项目状态
wrapture支持OpenTelemetry,并提供完全基于配置的机制为现有Python项目添加追踪,例如使用TOML配置(capture = "summary"、[[observe]] target = "domain:Calculator"、[[sink]] type = "jsonlines" path = "trace.jsonl")。
该项目仍非常年轻,仅诞生数周,但已具备良好开端。
AI驱动开发过程
Dumpleton表示,这是其首次尝试完全由Agent驱动的大型项目:wrapture的每行代码和文档均由AI助手在其指导下编写。他强调,这不是vibe coding——不是一次性提示生成代码堆而缺乏判断能力;他从一开始就精心设计了工程,对Python特定领域长期熟悉,AI是生产工具而非设计来源。
测试使用示例
在一篇后续发布的文章中,Dumpleton展示了wrapture所支持的测试模式。例如,可通过wrapture.binding(Gateway, "charge").on_call.returns()实现stub化,简化测试代码。
另一个示例演示了调用原始方法并修改返回值的功能:通过transforms_result(lambda r: {**r, "id": "ch_TEST"})修改stub结果。