Python AOP framework