U
    d                     @   s\   d Z ddlZddlZddlZddlZddgZedZG dd deZ	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                   @   s   e Zd ZdddZdd ZdS )SpewNTc                 C   s   || _ || _d S )Ntrace_namesshow_values)selfr   r    r	   2/tmp/pip-unpacked-wheel-1tw_qy24/gunicorn/debug.py__init__   s    zSpew.__init__c                 C   sN  |dkrJ|j }d|jkr\|jd }|ds8|drD|d d }|jd }t||}nBd}zt|}|| }W n& tk
r   d|jj	|j
f }Y nX | jd ks|| jkrJtd	||| f  | js| S g }	t|}
|
D ]J}||jkr|	d
||j| f  ||jkr|	d
||j| f  q|	rJtdd|	  | 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inspect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__   sB    





 

zSpew.__call__)NT)r   
__module____qualname__r   r-   r	   r	   r	   r
   r      s   
r   Fc                 C   s   t 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   ;   s    c                   C   s   t d dS )z-Remove the trace hook installed by spew.
    N)r0   r1   r	   r	   r	   r
   r   B   s    )NF)__doc__r0   r   rer   __all__compiler   objectr   r   r   r	   r	   r	   r
   <module>   s   
(
