
    5f                     2    d Z ddlZddlZddlZd Zd Zd Zy)zLog helper functions.    Nc                 N    | j                   dt        | d| j                        S )N.__qualname__)
__module__getattr__name__)clss    2/usr/lib/python3/dist-packages/oslo_log/helpers.py_get_full_class_namer      s%    nnc>3<<@B B    c                 V    t        j                  t        | |j                  d            S )zReturns True if a given method is obj's method.

    You can not simply test a given method like:

    return inspect.ismethod(method)

    This is because functools.wraps converts the method to a function
    in log_method_call function.
    N)inspectismethodr   r   )objmethods     r
   
_is_methodr      s"     GC$?@@r   c                      t        j                   j                        t        j                          fd       }|S )zDecorator helping to log method calls.

    :param method: Method to decorate to be logged.
    :type method: method definition
    c                      d}| r@| d   }t        |      r,t        |t              r|n|j                  }t	        |      }d}nd}nd}|j
                  | |d  |d}j                  d|        | i |S )Nr      static)callermethod_nameargskwargszK%(caller)s method %(method_name)s called with arguments %(args)s %(kwargs)s)r   
isinstancetype	__class__r   r   debug)	r   r   args_start_pos	first_argr	   r   datalogr   s	          r
   wrapperz log_method_call.<locals>.wrapper0   s    QI)V,$.y$$?y%// -c2!"!F %^_-A 			 >?C	Et&v&&r   )logging	getLoggerr   	functoolswraps)r   r#   r"   s   ` @r
   log_method_callr(   (   s=     

F--
.C__V' '& Nr   )__doc__r&   r   r$   r   r   r(    r   r
   <module>r+      s$       B

Ar   