
    ןEfI                     t    d dl Z d dlZd dlmZ d dlmZ de j        dde j        fdZ G d d          Z	d Z
dS )	    Nwraps)gTc                 "      fd}|S )Nc                 H     t                      fd            }|S )Nc                  r   t                    r
             t          j        t                    t	          j                    }rPoM                    
d	j        	j        t          |           d d         t          |          d d                    
}d}	  	| i |}t	          j                    |z
  }r
|k    r}d}oe                    |d||	j        	j        t          |           d d         t          |          d d         t          |          d d         	  	         |S # t          $ rx 
}t	          j                    |z
  }r
|k    r}d}oO                    |d||	j        	j        t          |           d d         t          |          d d                     w xY w)	NzProfiler Start %s.%s(*%s, **%s)    z:alarmz-Profiler Finish%s (%.3f) %s.%s(*%s, **%s): %si,  i  z,Profiler Exception%s (%.3f) %s.%s(*%s, **%s))
callablelogging	getLogger__name__timeperf_counterlog
__module__repr	Exception)argskwargst0local_level	alarm_msgresultdurationalarm_levelalarm_thresholdflevel	log_startloggers          ./cmf/cmf_profile.pyinnerz(timeit.<locals>.decorator.<locals>.inner
   s     "~ *844"$$B T T6::<L!*d4jj#.>VTcT@RT T  KID+F++,..3" )x/'A'A"-K (I i6::!PR[]eL!*d4jj#.>VTcT@RTXY_T`T`afbfafTgi i  	 	 	#,..3" )x/'A'A"-K (I T6::!OQZ\dL!*d4jj#.>VTcT@RT T 	s    BD4 4BF6r   )r   r#   r   r   r   r    r!   s   ` r"   	decoratorztimeit.<locals>.decorator	   sN    	q#	 #	 #	 #	 #	 #	 #	 #	 #	 
#	H      )r    r   r!   r   r   r$   s   ````` r"   timeitr'      s=    & & & & & & & & &N r%   c                   "    e Zd ZddZd Zd ZdS )ProfilerDataCtxNc                 0    || _         || _        d | _        d S N)nametagr   )selfr,   r-   s      r"   __init__zProfilerDataCtx.__init__4   s    	r%   c                 6    t          j                     | _        d S r+   )r   r   )r.   s    r"   	__enter__zProfilerDataCtx.__enter__9   s    )++r%   c                    t          t          dd           }|nt          t          j                    | j        z
  dz  d          }|                    | j        g           }|                    | j        r	|| j        gn|           d S d S )Nprofiler_datai     )	getattrr   roundr   r   
setdefaultr,   appendr-   )r.   exc_typeexc_valexc_tbr3   duration_msr   s          r"   __exit__zProfilerDataCtx.__exit__<   s    ?D99$tw!6 <a@@K**49b99CJJ$(KTX..LLLLL %$r%   r+   )r   r   __qualname__r/   r1   r=   r&   r%   r"   r)   r)   3   sK           
  M M M M Mr%   r)   c                 <     t                      fd            }|S )u   
    Декоратор для функций и методов, записывает в лог время и количество выполнений.
    c                      t          j         dj                   5   | i |cd d d            S # 1 swxY w Y   d S )N:)r)   r   r>   )r   r   funcs     r"   r#   z profiler_data_log.<locals>.innerH   s    EE$2CEEFF 	) 	)4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   599r   )rB   r#   s   ` r"   profiler_data_logrC   D   s5     4[[) ) ) ) [) Lr%   )r   r   	functoolsr   flaskr   DEBUGWARNINGr'   r)   rC   r&   r%   r"   <module>rH      s                  tT_f_n ( ( ( (VM M M M M M M M"    r%   