def pure_driver_debug_trace(f):
 @functools.wraps(f)
 def wrapper(*args, **kwargs):
  driver = args[0]
  cls_name = driver.__class__.__name__
  method_name = ('%(cls_name)s.%(method)s' % {'cls_name': cls_name, 'method': f.__name__})
  backend_name = driver._get_current_array()._backend_id
  LOG.debug(('[%(backend_name)s] Enter %(method_name)s' % {'method_name': method_name, 'backend_name': backend_name}))
  result = f(*args, **kwargs)
  LOG.debug(('[%(backend_name)s] Leave %(method_name)s' % {'method_name': method_name, 'backend_name': backend_name}))
  return result
 return wrapper

def pure_driver_debug_trace ( f ) : @ functools . wraps ( f ) def wrapper ( * args , ** kwargs ) : driver = args [ 0 ] cls_name = driver . __class__ . __name__ method_name = ( '%(cls_name)s.%(method)s' % { 'cls_name' : cls_name , 'method' : f . __name__ } ) backend_name = driver . _get_current_array ( ) . _backend_id LOG . debug ( ( '[%(backend_name)s] Enter %(method_name)s' % { 'method_name' : method_name , 'backend_name' : backend_name } ) ) result = f ( * args , ** kwargs ) LOG . debug ( ( '[%(backend_name)s] Leave %(method_name)s' % { 'method_name' : method_name , 'backend_name' : backend_name } ) ) return result return wrapper
log the method entrance and exit including active backend name .