U
    ‹Ha  ã                   @   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   ú3/tmp/pip-unpacked-wheel-xuf3ljf8/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}| ¡ D ]\}}| d|||f ¡ q`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 |   |  ||¡¡ z| j| }W n tk
rB   Y nX |||ƒ d S r
   )r   r    r   ÚKeyError)r   r   r   Ú	processorr   r   r   Ú_processmessage    s    zTagTracer._processmessagec                 C   s
   || _ d S r
   )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 r
   )Úrootr   )r   r-   r   r   r   r   r	   6   s    zTagTracerSub.__init__c                 G   s   | j  | j|¡ d S r
   )r-   r#   r   )r   r   r   r   r   Ú__call__:   s    zTagTracerSub.__call__c                 C   s   |   | j| j|f ¡S r
   )Ú	__class__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   /