a
    ñ»jf4  ã                   @  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   úAE:\soccer\ml_env\Lib\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 ]\}}||_q„n|  ¡ D ]\}}||_qž0 dS )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Úvaluesr0   Ú
PipConsoleÚitems)r3   Ú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)rB   r   r   r    Ú
indent_log[   s
    rF   c                   C  s   t tddƒS )NrE   r   )ÚgetattrrD   r   r   r   r    rC   j   s    rC   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)ÚargsrI   Ú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)rI   ÚsuperÚ__init__)ÚselfrI   rK   rL   ©Ú	__class__r   r    rN   q   s    zIndentingFormatter.__init__ÚstrrA   )Ú	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: )r2   ÚWARNINGÚ
startswithr   ÚERROR)rO   rS   rT   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.
        rU   ú c                   s   g | ]}ˆ | ‘qS r   r   )Ú.0Úline©Úprefixr   r    Ú
<listcomp>�   ó    z-IndentingFormatter.format.<locals>.<listcomp>T)	rM   ÚformatrY   rT   rI   Ú
formatTimerC   ÚjoinÚ
splitlines)rO   r\   rS   Úmessage_startrP   r`   r    rd   �   s    zIndentingFormatter.format)r   r   r   Údefault_time_formatrN   rY   rd   Ú__classcell__r   r   rP   r    rH   n   s
   ýrH   c                   @  s0   e Zd ZU ded< ded< ddddœd	d
„ZdS )ÚIndentedRenderabler   Ú
renderablerA   Úindentr
   r   r   )r5   Úoptionsr%   c                 c  sJ   |  | j|¡}t |¡}|D ](}td| j ƒV  |E d H  tdƒV  qd S )Nr]   Ú
)Úrenderrl   r   Úsplit_linesrm   )rO   r5   rn   ÚsegmentsÚlinesr_   r   r   r    Ú__rich_console__¦   s    

z#IndentedRenderable.__rich_console__N)r   r   r   Ú__annotations__rt   r   r   r   r    rk   ¡   s   
rk   c                   @  s   e Zd Zddœdd„ZdS )r<   rJ   r-   c                 C  s   t ƒ d ‚d S ©N)r&   ©rO   r   r   r    Úon_broken_pipe²   s    zPipConsole.on_broken_pipeN)r   r   r   rx   r   r   r   r    r<   ±   s   r<   F©Ústderrr
   )rz   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_consolery   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 )r4   zClassVar[list[str] | None]ÚKEYWORDSr
   rJ   )r5   r%   c                   s   t ƒ j|dddtƒ d� d S )NF)r5   Ú	show_timeÚ
show_levelÚ	show_pathÚhighlighter)rM   rN   r   )rO   r5   rP   r   r    rN   Ä   s    ûzRichPipStreamHandler.__init__rZ   r[   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rŽtdd�}n|jtjkr¤tdd�}z| jj|dd|d	� W n tyØ   |  |¡ Y n0 d S )
NÚrichFz is not rich-console-renderable)rm   Úred)ÚcolorÚyellowÚignore)ÚoverflowÚcropÚstyle)rG   r'   rK   Útupler   r   rR   rk   rC   rd   Úrender_messagerT   r2   rX   r   rV   r5   ÚprintÚ	ExceptionÚhandleError)rO   r\   rŠ   Zrich_renderablerl   Ú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@   )	r7   Úexc_infor5   r/   r8   r,   r   rM   r�   )rO   r\   r#   r$   rP   r   r    r�   ê   s    ÿþýüz RichPipStreamHandler.handleError)	r   r   r   r~   ru   rN   r‘   r�   rj   r   r   rP   r    r4   Á   s   

r4   c                      s"   e Zd Zddœ‡ fdd„Z‡  ZS )ÚBetterRotatingFileHandlerr   r-   c                   s   t tj | j¡ƒ tƒ  ¡ S rv   )r   ÚosÚpathÚdirnameÚbaseFilenamerM   Ú_openrw   rP   r   r    r˜   þ   s    zBetterRotatingFileHandler._open)r   r   r   r˜   rj   r   r   rP   r    r“   ý   s   r“   c                   @  s,   e Zd Zdddœdd„Zdddœd	d
„ZdS )ÚMaxLevelFilterrA   rJ   )Úlevelr%   c                 C  s
   || _ d S rv   )rš   )rO   rš   r   r   r    rN     s    zMaxLevelFilter.__init__rZ   r"   r[   c                 C  s   |j | jk S rv   )rT   rš   ©rO   r\   r   r   r    Úfilter  s    zMaxLevelFilter.filterN)r   r   r   rN   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).
    rZ   r"   r[   c                   s   t ƒ  |¡ S rv   )rM   rœ   r›   rP   r   r    rœ     s    zExcludeLoggerFilter.filter)r   r   r   r   rœ   rj   r   r   rP   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 rˆd
nd}dddœ}	g d¢|r¦d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)ÚINFOrX   rV   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)Ústreamr/   )r5   Ú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ª   rd   )rª   rd   rI   )rm   Úindent_with_timestampr¦   r®   r¬   rm   )rš   Úclassr5   ÚfiltersÚ	formatterr­   r/   zutf-8r¯   )rš   r°   ÚfilenameÚencodingÚdelayr²   )r5   r§   r¨   r©   )rš   r3   zpip._vendorrš   )ÚversionÚdisable_existing_loggersr±   Ú
formattersr3   ÚrootÚloggers)r2   r¤   r   rV   rX   ÚCRITICALr¥   ÚgetLevelNamer<   r7   r8   r|   rz   ÚconfigÚ
dictConfigÚsubprocess_loggerr«   rH   )rž   r0   rŸ   Úlevel_numberrš   Úinclude_user_logÚadditional_log_fileÚ
root_levelÚvendored_log_levelÚhandler_classesr3   r{   r   r   r    Úsetup_logging  s¢    
þÿþþþ÷þýûûû
ûúè"þ
¿ÿFrÆ   )r@   )EÚ
__future__r   Ú
contextlibr)   r2   Úlogging.handlersr”   r7   Ú	threadingÚcollections.abcr   Údataclassesr   Úior   r   r   Útypingr   r	   Úpip._vendor.rich.consoler
   r   r   r   r   r   Zpip._vendor.rich.highlighterr   Úpip._vendor.rich.loggingr   Zpip._vendor.rich.segmentr   Úpip._vendor.rich.styler   Zpip._internal.utils._logr   r   Úpip._internal.utils.compatr   Úpip._internal.utils.deprecationr   Úpip._internal.utils.miscr   r   ÚlocalrD   r|   r{   r¿   rŽ   r   r,   Úcontextmanagerr?   rF   rC   Ú	FormatterrH   rk   r<   r}   r4   r3   ÚRotatingFileHandlerr“   r™   r�   rÆ   r   r   r   r    Ú<module>   sT    3	<