aspects.py library provides means to intercept function
calls. Functions and methods (also in Python standard library and
third party code) can be wrapped so that when they are called, the
wrap is invoked first. Depending on the wrap, the execution of the
original function can be omitted, or the function can be called
arbitrarily many times. Wraps are able to modify the arguments and the
return value of the original function. In the terminology of aspect-oriented
programming, the library allows applying advices (wraps) to call
join points of
methods and functions in around fashion.