o
    0if4                     @  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Z3dAddZ4ej5dBddZ6ej5dCdDd#d$Z7dEd%d&Z8G d'd( d(ej9Z:eG d)d* d*Z;G d+d, d,eZ<d-d.dFd1d2Z=G d3d4 d4eZ>G d5d6 d6ej?j@ZAG d7d8 d8eZBG d9d: d:eZCdGd?d@ZDdS )H    )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   ]/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/pip/_internal/utils/logging.pyr   (   s    r   	exc_classtype[BaseException]excBaseExceptionreturnboolc                 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-   Generator[StringIO, None, None]c               	   c  s    i } t  jD ]}t|tr|j| |< qttj	}| s"|V  dS t
t|  j}t||dd}z| D ]}||_q5|V  W |  D ]\}}||_qCdS |  D ]\}}||_qQw )z-Capture all pip logs in a buffer temporarily.NTfileno_color	soft_wrap)loggingr   handlersr(   RichPipStreamHandlerconsoler   from_streamsysstdoutnextitervaluesr1   
PipConsoleitems)r4   handlerfake_streamr1   fake_consoleoriginal_consoler   r   r    capture_logging;   s*   

rC      numintGenerator[None, None, None]c              	   c  sD    t  t_t j| 7  _zdV  W t j| 8  _dS t j| 8  _w )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)rE   r   r   r    
indent_log[   s   "rK   c                   C  s   t tddS )NrJ   r   )getattrrI   r   r   r   r    rH   j      rH   c                      s@   e Zd ZdZddd fddZdddZd fddZ  ZS )IndentingFormatterz%Y-%m-%dT%H:%M:%SF)add_timestampargsr   rO   r&   kwargsr%   Nonec                  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)rO   super__init__)selfrO   rP   rQ   	__class__r   r    rT   q   s   zIndentingFormatter.__init__	formattedstrlevelnorF   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: )r3   WARNING
startswithr   ERROR)rU   rX   rZ   r   r   r    get_message_start   s   


z$IndentingFormatter.get_message_startrecordlogging.LogRecordc                   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>   s    z-IndentingFormatter.format.<locals>.<listcomp>T)	rS   formatr_   rZ   rO   
formatTimerH   join
splitlines)rU   r`   rX   message_startrV   re   r    rh      s   zIndentingFormatter.format)rP   r   rO   r&   rQ   r   r%   rR   )rX   rY   rZ   rF   r%   rY   )r`   ra   r%   rY   )r   r   r   default_time_formatrT   r_   rh   __classcell__r   r   rV   r    rN   n   s    
rN   c                   @  s(   e Zd ZU ded< ded< dddZdS )IndentedRenderabler   
renderablerF   indentr6   r
   optionsr   r%   r   c                 c  sL    | | j|}t|}|D ]}td| j V  |E d H  tdV  qd S )Nrb   
)renderrp   r   split_linesrq   )rU   r6   rr   segmentslinesrd   r   r   r    __rich_console__   s   

z#IndentedRenderable.__rich_console__N)r6   r
   rr   r   r%   r   )r   r   r   __annotations__rx   r   r   r   r    ro      s   
 ro   c                   @  s   e Zd ZdddZdS )r=   r%   rR   c                 C  s   t  d N)r'   rU   r   r   r    on_broken_pipe   s   zPipConsole.on_broken_pipeN)r%   rR   )r   r   r   r|   r   r   r   r    r=      s    r=   Fstderrr~   r
   c                 C  s,   | rt d us
J dt S td usJ dtS )Nzstderr rich console is missing!zstdout rich console is missing!)_stderr_console_stdout_consoler}   r   r   r    get_console   s
   r   c                      sD   e Zd ZU g Zded< d fddZdddZd fddZ  ZS )r5   zClassVar[list[str] | None]KEYWORDSr6   r
   r%   rR   c                   s   t  j|dddt d d S )NF)r6   	show_time
show_level	show_pathhighlighter)rS   rT   r   )rU   r6   rV   r   r    rT      s   
zRichPipStreamHandler.__init__r`   ra   c                 C  s   d }t |ddr+t|jtsJ |j\}t|tttfs#J | dt|t d}n'| 	|}| 
||}|jd urR|jtjkrGtdd}n|jtjkrRtdd}z| jj|dd|d	 W d S  tyn   | | Y d S w )
NrichFz is not rich-console-renderable)rq   red)coloryellowignore)overflowcropstyle)rL   r(   rP   tupler   r   rY   ro   rH   rh   render_messagerZ   r3   r^   r   r\   r6   print	ExceptionhandleError)rU   r`   r   rich_renderablerp   messager   r   r    emit   s0   



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.NrD   )	r8   exc_infor6   r0   r9   r-   r   rS   r   )rU   r`   r!   r#   rV   r   r    r      s   z RichPipStreamHandler.handleError)r6   r
   r%   rR   )r`   ra   r%   rR   )	r   r   r   r   ry   rT   r   r   rn   r   r   rV   r    r5      s
   
 

r5   c                      s   e Zd Zd fddZ  ZS )BetterRotatingFileHandlerr%   r   c                   s   t tj| j t  S rz   )r   ospathdirnamebaseFilenamerS   _openr{   rV   r   r    r      s   
zBetterRotatingFileHandler._open)r%   r   )r   r   r   r   rn   r   r   rV   r    r      s    r   c                   @  s    e Zd ZdddZdd
dZdS )MaxLevelFilterlevelrF   r%   rR   c                 C  s
   || _ d S rz   )r   )rU   r   r   r   r    rT     s   
zMaxLevelFilter.__init__r`   ra   r&   c                 C  s   |j | jk S rz   )rZ   r   rU   r`   r   r   r    filter  rM   zMaxLevelFilter.filterN)r   rF   r%   rR   r`   ra   r%   r&   )r   r   r   rT   r   r   r   r   r    r     s    
r   c                      s"   e Zd ZdZd fddZ  ZS )	ExcludeLoggerFilterzQ
    A logging Filter that excludes records from a logger (or its children).
    r`   ra   r%   r&   c                   s   t  | S rz   )rS   r   r   rV   r   r    r     s   zExcludeLoggerFilter.filterr   )r   r   r   r   r   rn   r   r   rV   r    r     s    r   	verbosityr1   user_log_file
str | Nonec                 C  s  | dkrt j}n"| dkrt}n| dkrt j}n| dkrt j}n| dkr't j}nt j}t |}|du}|r:|}d}nd}|}|d	v rDd
nd}ddd}	g d|rSd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.
    rD      NDEBUGz	/dev/null)INFOr^   r\   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)streamr0   )r6   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   rh   )r   rh   rO   )rq   indent_with_timestampr   r   r   rq   )r   classr6   filters	formatterr   r0   zutf-8r   )r   r   filenameencodingdelayr   )r6   r   r   r   )r   r4   zpip._vendorr   )versiondisable_existing_loggersr   
formattersr4   rootloggers)r3   r   r   r\   r^   CRITICALr   getLevelNamer=   r8   r9   r   r~   config
dictConfigsubprocess_loggerr   rN   )r   r1   r   level_numberr   include_user_logadditional_log_file
root_levelvendored_log_levelhandler_classesr4   r   r   r   r    setup_logging  s   

"
Fr   )r!   r"   r#   r$   r%   r&   )r%   r.   )rD   )rE   rF   r%   rG   )r%   rF   )r~   r&   r%   r
   )r   rF   r1   r&   r   r   r%   rF   )E
__future__r   
contextlibr*   r3   logging.handlersr   r8   	threadingcollections.abcr   dataclassesr   ior   r   r   typingr   r	   pip._vendor.rich.consoler
   r   r   r   r   r   pip._vendor.rich.highlighterr   pip._vendor.rich.loggingr   pip._vendor.rich.segmentr   pip._vendor.rich.styler   pip._internal.utils._logr   r   pip._internal.utils.compatr   pip._internal.utils.deprecationr   pip._internal.utils.miscr   r   localrI   r   r   r   r   r   r-   contextmanagerrC   rK   rH   	FormatterrN   ro   r=   r   r5   r4   RotatingFileHandlerr   r   r   r   r   r   r   r    <module>   sV     

3	<