a
    b3jf4                     @  s*  d dl m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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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+m,Z, e- Z.da/dZ0e%dZ1G dd de2Z3ddddddZ4ej5ddddZ6ej5d>dd d!d"d#Z7ddd$d%Z8G d&d' d'ej9Z:eG d(d) d)Z;G d*d+ d+eZ<d,d-dd.d/d0d1Z=G d2d3 d3eZ>G d4d5 d5ej?j@ZAG d6d7 d7eZBG d8d9 d9eZCddd:dd;d<d=ZDdS )?    )annotationsN)	Generator)	dataclass)StringIOTextIOWrapper)Filter)AnyClassVar)ConsoleConsoleOptionsConsoleRenderableRenderableTypeRenderResultRichCast)NullHighlighter)RichHandler)Segment)Style)VERBOSE	getLogger)WINDOWS)DEPRECATION_MSG_PREFIX)StreamWrapper
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   x/www/wwwroot/dpstar/app/297b3aabda72fedb274352021c2dd8b5_venv/lib/python3.9/site-packages/pip/_internal/utils/logging.pyr   (   s   r   ztype[BaseException]BaseExceptionbool)	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,   zGenerator[StringIO, None, None]r%   c               	   c  s   i } t  jD ]}t|tr|j| |< qttj	}| sB|V  dS t
t|  j}t||dd}z2| D ]
}||_qh|V  W |  D ]\}}||_qn|  D ]\}}||_q0 dS )z-Capture all pip logs in a buffer temporarily.NTfileno_colorZ	soft_wrap)loggingr   handlersr'   RichPipStreamHandlerconsoler   from_streamsysstdoutnextitervaluesr0   
PipConsoleitems)r2   handlerZfake_streamr0   Zfake_consoleZoriginal_consoler   r   r    capture_logging;   s$    

r>      intzGenerator[None, None, None])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)rA   r   r   r    
indent_log[   s
    rE   c                   C  s   t tddS )NrD   r   )getattrrC   r   r   r   r    rB   j   s    rB   c                      sX   e Zd ZdZddddddd fdd	Zd
dd
dddZdd
d fddZ  ZS )IndentingFormatterz%Y-%m-%dT%H:%M:%SF)add_timestampr   r"   None)argsrH   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)rH   super__init__)selfrH   rJ   rK   	__class__r   r    rM   q   s    zIndentingFormatter.__init__strr@   )	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: )r1   WARNING
startswithr   ERROR)rN   rR   rS   r   r   r    get_message_start   s    


z$IndentingFormatter.get_message_startlogging.LogRecord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.
        rT    c                   s   g | ]} | qS r   r   ).0lineprefixr   r    
<listcomp>       z-IndentingFormatter.format.<locals>.<listcomp>T)	rL   formatrX   rS   rH   
formatTimerB   join
splitlines)rN   r[   rR   message_startrO   r_   r    rc      s    zIndentingFormatter.format)r   r   r   default_time_formatrM   rX   rc   __classcell__r   r   rO   r    rG   n   s
   rG   c                   @  s0   e Zd ZU ded< ded< ddddd	d
ZdS )IndentedRenderabler   
renderabler@   indentr
   r   r   )r4   optionsr%   c                 c  sJ   | | j|}t|}|D ](}td| j V  |E d H  tdV  qd S )Nr\   
)renderrk   r   Zsplit_linesrl   )rN   r4   rm   segmentslinesr^   r   r   r    __rich_console__   s    

z#IndentedRenderable.__rich_console__N)r   r   r   __annotations__rr   r   r   r   r    rj      s   
rj   c                   @  s   e Zd ZddddZdS )r;   rI   r-   c                 C  s   t  d d S N)r&   rN   r   r   r    on_broken_pipe   s    zPipConsole.on_broken_pipeN)r   r   r   rv   r   r   r   r    r;      s   r;   Fstderrr
   )rx   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_consolerw   r   r   r    get_console   s
    r{   c                      sV   e Zd ZU g Zded< ddd fddZddd	d
dZddd	 fddZ  ZS )r3   zClassVar[list[str] | None]KEYWORDSr
   rI   )r4   r%   c                   s   t  j|dddt d d S )NF)r4   Z	show_timeZ
show_levelZ	show_pathZhighlighter)rL   rM   r   )rN   r4   rO   r   r    rM      s    zRichPipStreamHandler.__init__rY   rZ   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)rl   red)coloryellowignore)ZoverflowZcropstyle)rF   r'   rJ   tupler   r   rQ   rj   rB   rc   Zrender_messagerS   r1   rW   r   rU   r4   print	ExceptionhandleError)rN   r[   r   Zrich_renderablerk   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?   )	r6   exc_infor4   r/   r7   r,   r   rL   r   )rN   r[   r#   r$   rO   r   r    r      s    z RichPipStreamHandler.handleError)	r   r   r   r|   rs   rM   r   r   ri   r   r   rO   r    r3      s   

r3   c                      s"   e Zd Zdd fddZ  ZS )BetterRotatingFileHandlerr   r-   c                   s   t tj| j t  S rt   )r   ospathdirnamebaseFilenamerL   _openru   rO   r   r    r      s    zBetterRotatingFileHandler._open)r   r   r   r   ri   r   r   rO   r    r      s   r   c                   @  s,   e Zd ZdddddZdddd	d
ZdS )MaxLevelFilterr@   rI   )levelr%   c                 C  s
   || _ d S rt   )r   )rN   r   r   r   r    rM     s    zMaxLevelFilter.__init__rY   r"   rZ   c                 C  s   |j | jk S rt   )rS   r   rN   r[   r   r   r    filter  s    zMaxLevelFilter.filterN)r   r   r   rM   r   r   r   r   r    r     s   r   c                      s(   e Zd ZdZddd fddZ  ZS )ExcludeLoggerFilterzQ
    A logging Filter that excludes records from a logger (or its children).
    rY   r"   rZ   c                   s   t  | S rt   )rL   r   r   rO   r   r    r     s    zExcludeLoggerFilter.filter)r   r   r   r   r   ri   r   r   rO   r    r     s   r   z
str | None)	verbosityr0   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)INFOrW   rU   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)streamr/   )r4   console_errorsconsole_subprocessuser_logTr.   Fz*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   rc   )r   rc   rH   )rl   indent_with_timestampr   r   r   rl   )r   classr4   filters	formatterr   r/   zutf-8r   )r   r   filenameencodingdelayr   )r4   r   r   r   )r   r2   zpip._vendorr   )versiondisable_existing_loggersr   
formattersr2   rootloggers)r1   r   r   rU   rW   CRITICALr   getLevelNamer;   r6   r7   rz   rx   config
dictConfigsubprocess_loggerr   rG   )r   r0   r   level_numberr   include_user_logadditional_log_file
root_levelvendored_log_levelhandler_classesr2   ry   r   r   r    setup_logging  s    

"
Fr   )r?   )E
__future__r   
contextlibr)   r1   logging.handlersr   r6   	threadingcollections.abcr   Zdataclassesr   ior   r   r   typingr   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   r   localrC   rz   ry   r   r   r   r,   contextmanagerr>   rE   rB   	FormatterrG   rj   r;   r{   r3   r2   RotatingFileHandlerr   r   r   r   r   r   r   r    <module>   sT    3	<