B
    é¹`  ã               @   s(   d Z G dd„ deƒZG dd„ deƒZdS )z
Tracing utils
c               @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú	TagTracerc             C   s   i | _ d | _d| _d S )Né    )Ú
_tags2procÚ_writerÚindent)Úself© r   úW/home/kop/projects/devel/pgwui/test_venv/lib/python3.7/site-packages/pluggy/_tracing.pyÚ__init__   s    zTagTracer.__init__c             C   s   t | |fƒS )N)ÚTagTracerSub)r   Únamer   r   r   Úget   s    zTagTracer.getc       	      C   sŒ   t |d tƒr$|d }|d d… }ni }d tt|ƒ¡}d| j }d||d |¡f g}x(| ¡ D ]\}}| d|||f ¡ qbW d |¡S )Néÿÿÿÿú z  z
%s%s [%s]
ú:z%s    %s: %s
Ú )Ú
isinstanceÚdictÚjoinÚmapÚstrr   ÚitemsÚappend)	r   ÚtagsÚargsÚextraÚcontentr   Úlinesr   Úvaluer   r   r   Ú_format_message   s    
zTagTracer._format_messagec             C   sR   | j d k	r |r |   |  ||¡¡ y| j| }W n tk
rB   Y nX |||ƒ d S )N)r   r   r   ÚKeyError)r   r   r   Ú	processorr   r   r   Ú_processmessage    s    zTagTracer._processmessagec             C   s
   || _ d S )N)r   )r   Úwriterr   r   r   Ú	setwriter*   s    zTagTracer.setwriterc             C   s6   t |tƒrt| d¡ƒ}nt |tƒs(t‚|| j|< d S )Nr   )r   r   ÚtupleÚsplitÚAssertionErrorr   )r   r   r    r   r   r   Úsetprocessor-   s    
zTagTracer.setprocessorN)	Ú__name__Ú
__module__Ú__qualname__r	   r   r   r!   r#   r'   r   r   r   r   r      s   
r   c               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r
   c             C   s   || _ || _d S )N)Úrootr   )r   r+   r   r   r   r   r	   6   s    zTagTracerSub.__init__c             G   s   | j  | j|¡ d S )N)r+   r!   r   )r   r   r   r   r   Ú__call__:   s    zTagTracerSub.__call__c             C   s   |   | j| j|f ¡S )N)Ú	__class__r+   r   )r   r   r   r   r   r   =   s    zTagTracerSub.getN)r(   r)   r*   r	   r,   r   r   r   r   r   r
   5   s   r
   N)Ú__doc__Úobjectr   r
   r   r   r   r   Ú<module>   s   /