3
g-                 @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZ d dlmZ d dlmZ d dlmZ yd dlZW n ek
r   d dlZY nX yd dlmZ W n ek
r   dZY nX ej Z ed	Z!G d
d deZ"ee# e#e$dddZ%e j&d&e'ed dddZ(e'dddZ)G dd dej*Z+e,e
e,ge,f dddZ-G dd dej.Z/G dd dej0j1Z2G dd  d eZ3G d!d" d"eZ4e'e$ee, e'd#d$d%Z5dS )'    N)Filter)IOAnyCallableIteratorOptionalTextIOTypecast)VERBOSE	getLogger)WINDOWS)DEPRECATION_MSG_PREFIX)
ensure_dir)coloramazpip.subprocessorc               @   s   e Zd ZdZdS )BrokenStdoutLoggingErrorzO
    Raised if BrokenPipeError occurs for the stdout stream while logging.
    N)__name__
__module____qualname____doc__ r   r   Y/var/www/tester-filtro-web/env/lib/python3.6/site-packages/pip/_internal/utils/logging.pyr   !   s   r   )	exc_classexcreturnc             C   s0   | t krdS tsdS t|to.|jtjtjfkS )NTF)BrokenPipeErrorr   
isinstanceOSErrorerrnoEINVALEPIPE)r   r   r   r   r   _is_broken_pipe_error'   s
    r!      )numr   c             c   s6   t  t_t j| 7  _z
dV  W dt j| 8  _X dS )zv
    A context manager which will cause the log output to be indented for any
    log messages emitted inside it.
    N)get_indentation
_log_stateindentation)r#   r   r   r   
indent_log4   s
    
r'   )r   c               C   s   t tddS )Nr&   r   )getattrr%   r   r   r   r   r$   C   s    r$   c                   sZ   e Zd ZdZddeeedd fddZeeedd	d
Z	e
jed fddZ  ZS )IndentingFormatterz%Y-%m-%dT%H:%M:%SF)add_timestampN)argsr*   kwargsr   c               s   || _ t j|| dS )z
        A logging.Formatter that obeys the indent_log() context manager.

        :param add_timestamp: A bool indicating output lines should be prefixed
            with their record's timestamp.
        N)r*   super__init__)selfr*   r+   r,   )	__class__r   r   r.   J   s    zIndentingFormatter.__init__)	formattedlevelnor   c             C   s.   |t jk rdS |jtrdS |t jk r*dS dS )zv
        Return the start of the formatted log message (not counting the
        prefix to add to each line).
         z	WARNING: zERROR: )loggingWARNING
startswithr   ERROR)r/   r1   r2   r   r   r   get_message_startY   s    


z$IndentingFormatter.get_message_start)recordr   c                sl   t  j|}| j||j}|| }d | jr<| j| d  dt  7  dj fdd|jdD }|S )z
        Calls the standard formatter, but will indent all of the log message
        lines by our current indentation level.
        r3    c                s   g | ]} | qS r   r   ).0line)prefixr   r   
<listcomp>v   s    z-IndentingFormatter.format.<locals>.<listcomp>T)	r-   formatr8   r2   r*   
formatTimer$   join
splitlines)r/   r9   r1   Zmessage_start)r0   )r=   r   r?   i   s    zIndentingFormatter.format)r   r   r   default_time_formatr   boolr.   strintr8   r4   	LogRecordr?   __classcell__r   r   )r0   r   r)   G   s   

r)   )colorsr   c                 s   t t d fdd}|S )N)inpr   c                s   dj t | tjjg S )Nr3   )rA   listr   ZStyleZ	RESET_ALL)rJ   )rI   r   r   wrapped{   s    z_color_wrap.<locals>.wrapped)rE   )rI   rL   r   )rI   r   _color_wrapz   s    rM   c                   s   e Zd Zer2ejeejjfej	eejj
fgZng Zdee edd fddZedddZeddd	Zejed
 fddZejdd
 fddZ  ZS )ColorizedStreamHandlerN)streamno_colorr   c                s,   t  j| || _tr(tr(tj| j| _d S )N)r-   r.   	_no_colorr   r   AnsiToWin32rO   )r/   rO   rP   )r0   r   r   r.      s    zColorizedStreamHandler.__init__)r   c             C   s.   t r"tr"ttj| j}|jtjkS | jtjkS )zA
        Return whether the handler is using sys.stdout.
        )r   r   r
   rR   rO   rL   sysstdout)r/   rO   r   r   r   _using_stdout   s    z$ColorizedStreamHandler._using_stdoutc             C   sZ   t  s| jrdS t| jt js$| jn| jj}t|drB|j rBdS tj	j
ddkrVdS dS )NFisattyTZTERMZANSI)r   rQ   r   rO   rR   rL   hasattrrV   osenvironget)r/   Zreal_streamr   r   r   should_color   s    z#ColorizedStreamHandler.should_color)r9   r   c                s@   t  j|}| j r<x&| jD ]\}}|j|kr||}P qW |S )N)r-   r?   r[   COLORSr2   )r/   r9   msglevelZcolor)r0   r   r   r?      s    
zColorizedStreamHandler.formatc                s@   t j d d \}}|r4|r4| j r4t||r4t t j|S )Nr"   )rS   exc_inforU   r!   r   r-   handleError)r/   r9   r   r   )r0   r   r   r`      s    
z"ColorizedStreamHandler.handleError)NN)r   r   r   r   r4   r7   rM   ZForeZREDr5   ZYELLOWr\   r   r   rD   r.   rU   r[   rG   rE   r?   r`   rH   r   r   )r0   r   rN      s   rN   c                   s&   e Zd Zee d fddZ  ZS )BetterRotatingFileHandler)r   c                s   t tjj| j t j S )N)r   rX   pathdirnamebaseFilenamer-   _open)r/   )r0   r   r   re      s    zBetterRotatingFileHandler._open)r   r   r   r   r   re   rH   r   r   )r0   r   ra      s   ra   c               @   s.   e Zd ZeddddZejedddZdS )MaxLevelFilterN)r^   r   c             C   s
   || _ d S )N)r^   )r/   r^   r   r   r   r.      s    zMaxLevelFilter.__init__)r9   r   c             C   s   |j | jk S )N)r2   r^   )r/   r9   r   r   r   filter   s    zMaxLevelFilter.filter)	r   r   r   rF   r.   r4   rG   rD   rg   r   r   r   r   rf      s   rf   c                   s*   e Zd ZdZejed fddZ  ZS )ExcludeLoggerFilterzQ
    A logging Filter that excludes records from a logger (or its children).
    )r9   r   c                s   t  j| S )N)r-   rg   )r/   r9   )r0   r   r   rg      s    zExcludeLoggerFilter.filter)	r   r   r   r   r4   rG   rD   rg   rH   r   r   )r0   r   rh      s   rh   )	verbosityrP   user_log_filer   c             C   s  | dkrt j}nD| dkrt}n6| d1kr.t j}n&| d2kr>t j}n| d3krNt j}nt j}t j|}|dk	}|rt|}d}nd}|}|d4krd	nd}d
dd}	ddd}
dddg|rdgng  }t jj	dddt jddt
jddt
jddtddtdddd||
d  ||	d! d"d#gd$d%d	|
d  ||	d& d"gd$d%||
d  ||	d& d'gd$d%d|
d( |d)dd*d+d,||d-d.d/|iid0 |S )5znConfigures and sets up all of the logging

    Returns the requested logging level, as its integer value.
    r"         NDEBUGz	/dev/nullINFOr7   r5   zext://sys.stdoutzext://sys.stderr)rT   stderrz2pip._internal.utils.logging.ColorizedStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rO   fileconsoleconsole_errorsconsole_subprocessuser_logFz*pip._internal.utils.logging.MaxLevelFilter)z()r^   zlogging.Filter)z()namez/pip._internal.utils.logging.ExcludeLoggerFilter)exclude_warningsrestrict_to_subprocessexclude_subprocessz%(message)s)z()r?   T)z()r?   r*   )indentindent_with_timestamprO   rT   rx   rv   ry   )r^   classrP   rO   filters	formatterro   rw   rp   zutf-8rz   )r^   r{   filenameencodingdelayr}   )rq   rr   rs   rt   )r^   handlerszpip._vendorr^   )versionZdisable_existing_loggersr|   Z
formattersr   rootZloggers)rn   r7   )r4   rm   r   r5   r7   CRITICALrn   getLevelNameconfigZ
dictConfigsubprocess_loggerru   r)   )ri   rP   rj   Zlevel_numberr^   Zinclude_user_logZadditional_log_fileZ
root_levelZvendored_log_levelZlog_streamsZhandler_classesr   r   r   r   setup_logging   s    


r   )r"   )6
contextlibr   r4   Zlogging.handlersrX   rS   r   typingr   r   r   r   r   r   r	   r
   Zpip._internal.utils._logr   r   pip._internal.utils.compatr   Zpip._internal.utils.deprecationr   pip._internal.utils.miscr   	threadingImportErrordummy_threadingpip._vendorr   	Exceptionlocalr%   r   r   BaseExceptionrD   r!   contextmanagerrF   r'   r$   	Formatterr)   rE   rM   StreamHandlerrN   r   ZRotatingFileHandlerra   rf   rh   r   r   r   r   r   <module>   sB   (
3Q