î
yË Xÿ  ã               @   s‰   d  Z  d d l Z d d l Z d d l Z d d l Z d d g Z e j d ƒ Z Gd d „  d e ƒ Z	 d d d	 d „ Z
 d
 d „  Z d S)zPThe debug module contains utilities and functions for better
debugging Gunicorn.é    NÚspewÚunspewz\W+c               @   s4   e  Z d  Z d Z d d d d „ Z d d „  Z d S)ÚSpewz
    NTc             C   s   | |  _  | |  _ d  S)N)Útrace_namesÚshow_values)Úselfr   r   © r   ú>/home/ubuntu/projects/ifolica/build/gunicorn/gunicorn/debug.pyÚ__init__   s    	zSpew.__init__c             C   sÍ  | d k rÉ| j  } d | j k r„ | j d } | j d ƒ sO | j d ƒ rb | d  d … } n  | j d } t j | | ƒ } nQ d } y t j | ƒ } | | } Wn+ t k
 rÔ d | j j	 | j
 f } Yn X|  j d  k só | |  j k rÉt d	 | | | j ƒ  f ƒ |  j s|  Sg  }	 t j | ƒ }
 xn |
 D]f } | | j k ro|	 j d
 | | j | f ƒ n  | | j k r9|	 j d
 | | j | f ƒ q9q9W|	 rÆt d d j |	 ƒ ƒ qÆqÉn  |  S)NÚlineÚ__file__z.pycz.pyoé   Ú__name__z	[unknown]z,Unknown code named [%s].  VM instruction #%dz	%s:%s: %sz%s=%rz	%sú éÿÿÿÿ)Úf_linenoÚ	f_globalsÚendswithÚ	linecacheÚgetlineÚinspectZgetsourcelinesÚIOErrorÚf_codeÚco_nameÚf_lastir   ÚprintÚrstripr   Ú_token_spliterÚsplitÚappendÚf_localsÚjoin)r   ÚframeÚeventÚargÚlinenoÚfilenameÚnamer   ÚsrcÚdetailsÚtokensÚtokr   r   r	   Ú__call__   s<    		!% zSpew.__call__)r   Ú
__module__Ú__qualname__Ú__doc__r
   r,   r   r   r   r	   r      s   r   Fc             C   s   t  j t |  | ƒ ƒ d S)zpInstall a trace hook which writes incredibly detailed logs
    about what code is being executed to stdout.
    N)ÚsysÚsettracer   )r   r   r   r   r	   r   <   s    c               C   s   t  j d ƒ d S)z-Remove the trace hook installed by spew.
    N)r0   r1   r   r   r   r	   r   C   s    )r/   r0   r   Úrer   Ú__all__Úcompiler   Úobjectr   r   r   r   r   r   r	   Ú<module>   s   )