a
    $lJh,/                     @   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Zd dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZmZmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ d d	lmZ d d
l m!Z! d dl"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* e+ Z,da-dZ.e$dZ/G dd de0Z1ee2 e2e3dddZ4e j5d3e6ed dddZ7e6dddZ8G dd dej9Z:eG dd  d Z;G d!d" d"eZ<d#d$e3ed%d&d'Z=G d(d) d)eZ>G d*d+ d+ej?j@ZAG d,d- d-eZBG d.d/ d/eZCe6e3eeD e6d0d1d2ZEdS )4    N)	dataclass)TextIOWrapper)Filter)AnyClassVar	GeneratorListOptionalType)ConsoleConsoleOptionsConsoleRenderableRenderableTypeRenderResultRichCast)NullHighlighter)RichHandler)Segment)Style)VERBOSE	getLogger)WINDOWS)DEPRECATION_MSG_PREFIX)
ensure_dirz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   M/var/www/shaz/venv/lib/python3.9/site-packages/pip/_internal/utils/logging.pyr   %   s   r   )	exc_classexcreturnc                 C   s0   | t u rdS tsdS t|to.|jtjtjfv S )NTF)BrokenPipeErrorr   
isinstanceOSErrorerrnoEINVALEPIPE)r!   r"   r   r   r    _is_broken_pipe_error+   s
    r*      )NNN)numr#   c              	   c   sD   t  t_t j| 7  _zdV  W t j| 8  _nt j| 8  _0 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_log8   s
    r0   r#   c                   C   s   t tddS )Nr/   r   )getattrr.   r   r   r   r    r-   G   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)argsr4   kwargsr#   c                   s   || _ t j|i | 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)r4   super__init__)selfr4   r5   r6   	__class__r   r    r8   N   s    zIndentingFormatter.__init__)	formattedlevelnor#   c                 C   s.   |t jk rdS |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)r9   r<   r=   r   r   r    get_message_start]   s    


z$IndentingFormatter.get_message_startrecordr#   c                    sl   t  |}| ||j}|| }d | jr<| | d  dt  7  d fdd|dD }|S )z
        Calls the standard formatter, but will indent all of the log message
        lines by our current indentation level.
        r>    c                    s   g | ]} | qS r   r   ).0lineprefixr   r    
<listcomp>z       z-IndentingFormatter.format.<locals>.<listcomp>T)	r7   formatrC   r=   r4   
formatTimer-   join
splitlines)r9   rE   r<   message_startr:   rI   r    rM   m   s    zIndentingFormatter.format)r   r   r   default_time_formatr   boolr8   strintrC   r?   	LogRecordrM   __classcell__r   r   r:   r    r3   K   s   r3   c                   @   s0   e Zd ZU eed< eed< eeedddZ	dS )IndentedRenderable
renderableindent)consoleoptionsr#   c                 c   sJ   | | j|}t|}|D ](}td| j V  |E d H  tdV  qd S )NrF   
)renderrY   r   Zsplit_linesrZ   )r9   r[   r\   segmentslinesrH   r   r   r    __rich_console__   s    

z#IndentedRenderable.__rich_console__N)
r   r   r   r   __annotations__rU   r   r   r   ra   r   r   r   r    rX   ~   s
   
rX   c                   @   s   e Zd ZddddZdS )
PipConsoleNr1   c                 C   s   t  d d S N)r$   r9   r   r   r    on_broken_pipe   s    zPipConsole.on_broken_pipe)r   r   r   rf   r   r   r   r    rc      s   rc   Fstderr)rh   r#   c                 C   s0   | rt d usJ dt S td us(J dtS d S )Nzstderr rich console is missing!zstdout rich console is missing!)_stderr_console_stdout_consolerg   r   r   r    get_console   s
    rk   c                       sf   e Zd ZU g Zeeee   ed< e	dd fddZ
ejddddZejdd fd	d
Z  ZS )RichPipStreamHandlerKEYWORDSN)r[   r#   c                    s   t  j|dddt d d S )NF)r[   Z	show_timeZ
show_levelZ	show_pathZhighlighter)r7   r8   r   )r9   r[   r:   r   r    r8      s    zRichPipStreamHandler.__init__rD   c                 C   s   d }t |ddrVt|jts J |j\}t|tttfsFJ | dt|t d}nN| 	|}| 
||}|jd ur|jtjkrtdd}n|jtjkrtdd}z| jj|dd|d	 W n ty   | | Y n0 d S )
NZrichFz is not rich-console-renderable)rZ   Zred)colorZyellowignore)ZoverflowZcropstyle)r2   r%   r5   tupler   r   rT   rX   r-   rM   Zrender_messager=   r?   rB   r   r@   r[   print	ExceptionhandleError)r9   rE   rp   Zrich_renderablerY   messager   r   r    emit   s.    



zRichPipStreamHandler.emitc                    sF   t  dd \}}|r:|r:| jjt ju r:t||r:t t |S )z1Called when logging is unable to log some output.Nr+   )	sysexc_infor[   filestdoutr*   r   r7   rt   )r9   rE   r!   r"   r:   r   r    rt      s    z RichPipStreamHandler.handleError)r   r   r   rm   r   r	   r   rT   rb   r   r8   r?   rV   rv   rt   rW   r   r   r:   r    rl      s   

rl   c                       s"   e Zd Zed fddZ  ZS )BetterRotatingFileHandlerr1   c                    s   t tj| j t  S rd   )r   ospathdirnamebaseFilenamer7   _openre   r:   r   r    r      s    zBetterRotatingFileHandler._open)r   r   r   r   r   rW   r   r   r:   r    r{      s   r{   c                   @   s.   e Zd ZeddddZejedddZdS )MaxLevelFilterN)levelr#   c                 C   s
   || _ d S rd   )r   )r9   r   r   r   r    r8      s    zMaxLevelFilter.__init__rD   c                 C   s   |j | jk S rd   )r=   r   r9   rE   r   r   r    filter   s    zMaxLevelFilter.filter)	r   r   r   rU   r8   r?   rV   rS   r   r   r   r   r    r      s   r   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).
    rD   c                    s   t  | S rd   )r7   r   r   r:   r   r    r      s    zExcludeLoggerFilter.filter)	r   r   r   r   r?   rV   rS   r   rW   r   r   r:   r    r      s   r   )	verbosityno_coloruser_log_filer#   c                 C   s  | dkrt j}nD| dkrt}n6| dkr.t j}n&| dkr>t j}n| dkrNt j}nt j}t |}|du}|rt|}d}nd}|}|d	v rd
nd}ddd}	g d|rdgng  }
tt	j
|ddatt	j|dd}t 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 tddgd d!d
|	d |dgd d!||	d |d"gd d!d|	d# |d$dd%d&d'||
d(d)d*|iid+ |S ),znConfigures and sets up all of the logging

    Returns the requested logging level, as its integer value.
    r+      NDEBUGz	/dev/null)INFOrB   r@   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)streamry   )r[   console_errorsconsole_subprocessuser_logT)ry   r   Z	soft_wrapFz*pip._internal.utils.logging.MaxLevelFilter)()r   zlogging.Filter)r   namez/pip._internal.utils.logging.ExcludeLoggerFilter)exclude_warningsrestrict_to_subprocessexclude_subprocessz%(message)s)r   rM   )r   rM   r4   )rZ   indent_with_timestampr   r   r   rZ   )r   classr[   filters	formatterr   ry   zutf-8r   )r   r   filenameencodingdelayr   )r[   r   r   r   )r   handlerszpip._vendorr   )versiondisable_existing_loggersr   
formattersr   rootloggers)r?   r   r   r@   rB   CRITICALr   getLevelNamerc   rw   rz   rj   rh   config
dictConfigsubprocess_loggerr   r3   )r   r   r   level_numberr   include_user_logadditional_log_file
root_levelvendored_log_levelhandler_classesr   ri   r   r   r    setup_logging   s    

"
Fr   )r+   )F
contextlibr'   r?   logging.handlersr|   rw   	threadingZdataclassesr   ior   r   typingr   r   r   r   r	   r
   Zpip._vendor.rich.consoler   r   r   r   r   r   Zpip._vendor.rich.highlighterr   Zpip._vendor.rich.loggingr   Zpip._vendor.rich.segmentr   Zpip._vendor.rich.styler   Zpip._internal.utils._logr   r   pip._internal.utils.compatr   pip._internal.utils.deprecationr   pip._internal.utils.miscr   localr.   rj   ri   r   rs   r   BaseExceptionrS   r*   contextmanagerrU   r0   r-   	Formatterr3   rX   rc   rk   rl   r   RotatingFileHandlerr{   r   r   rT   r   r   r   r   r    <module>   sL     3	<