JavaScript
fromGrahamdumpleton
6 days agoReshaping decorated functions with wrapt - Graham Dumpleton
wrapt provides decorators that modify runtime introspection so tools see the wrapper’s calling and coroutine shape, not the wrapped target’s.
The best example of this and the reason that wrapt was created in the first place, is to instrument existing Python code to collect metrics about its performance when run in production. Since one cannot expect a customer for an application performance monitoring (APM) service to modify their code, as well as code of the third party dependencies they may use, transparently reaching in and monkey patching code at runtime is the best one can do.
The actual reason wrapt was created was to be able to perform monkey patching of Python code. One key aspect of being able to monkey patch Python code is to be able to have the ability to wrap target objects in Python with a wrapper which acts as a transparent object proxy for the original object. By extending the object proxy type, one can then intercept access to the target object to perform specific actions.