a
    shL/                     @  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 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* e+ Z,da-dZ.e$dZ/G dd de0Z1ddddddZ2ej3d;dddddZ4dd d!d"Z5G d#d$ d$ej6Z7eG d%d& d&Z8G d'd( d(eZ9d)d*dd+d,d-d.Z:G d/d0 d0eZ;G d1d2 d2ej<j=Z>G d3d4 d4eZ?G d5d6 d6eZ@ddd7dd8d9d:ZAdS )<    )annotationsN)	Generator)	dataclass)TextIOWrapper)Filter)AnyClassVar)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   W/var/www/html/assistant/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*      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)r-   r   r   r   
indent_log;   s
    r1   r#   c                   C  s   t tddS )Nr0   r   )getattrr/   r   r   r   r   r.   J   s    r.   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)argsr5   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)r5   super__init__)selfr5   r7   r8   	__class__r   r   r:   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: )loggingWARNING
startswithr   ERROR)r;   r?   r@   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.
        rA    c                   s   g | ]} | qS r   r   ).0lineprefixr   r   
<listcomp>}       z-IndentingFormatter.format.<locals>.<listcomp>T)	r9   formatrF   r@   r5   
formatTimer.   join
splitlines)r;   rI   r?   message_startr<   rM   r   rQ   p   s    zIndentingFormatter.format)r   r   r   default_time_formatr:   rF   rQ   __classcell__r   r   r<   r   r4   N   s
   r4   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   )consoleoptionsr#   c                 c  sJ   | | j|}t|}|D ](}td| j V  |E d H  tdV  qd S )NrJ   
)renderrY   r   Zsplit_linesrZ   )r;   r[   r\   segmentslinesrL   r   r   r   __rich_console__   s    

z#IndentedRenderable.__rich_console__N)r   r   r   __annotations__ra   r   r   r   r   rX      s   
rX   c                   @  s   e Zd ZddddZdS )
PipConsoler6   r2   c                 C  s   t  d d S N)r$   r;   r   r   r   on_broken_pipe   s    zPipConsole.on_broken_pipeN)r   r   r   rf   r   r   r   r   rc      s   rc   Fstderrr	   )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                      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 )RichPipStreamHandlerzClassVar[list[str] | None]KEYWORDSr	   r6   )r[   r#   c                   s   t  j|dddt d d S )NF)r[   Z	show_timeZ
show_levelZ	show_pathZhighlighter)r9   r:   r   )r;   r[   r<   r   r   r:      s    zRichPipStreamHandler.__init__rG   rH   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)r3   r%   r7   tupler   r   r>   rX   r.   rQ   Zrender_messager@   rB   rE   r   rC   r[   print	ExceptionhandleError)r;   rI   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   r9   rt   )r;   rI   r!   r"   r<   r   r   rt      s    z RichPipStreamHandler.handleError)	r   r   r   rm   rb   r:   rv   rt   rW   r   r   r<   r   rl      s   

rl   c                      s"   e Zd Zdd fddZ  ZS )BetterRotatingFileHandlerr   r2   c                   s   t tj| j t  S rd   )r   ospathdirnamebaseFilenamer9   _openre   r<   r   r   r      s    zBetterRotatingFileHandler._open)r   r   r   r   rW   r   r   r<   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,   r6   )levelr#   c                 C  s
   || _ d S rd   )r   )r;   r   r   r   r   r:      s    zMaxLevelFilter.__init__rG   r    rH   c                 C  s   |j | jk S rd   )r@   r   r;   rI   r   r   r   filter   s    zMaxLevelFilter.filterN)r   r   r   r:   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).
    rG   r    rH   c                   s   t  | S rd   )r9   r   r   r<   r   r   r      s    zExcludeLoggerFilter.filter)r   r   r   r   r   rW   r   r   r<   r   r      s   r   z
str | None)	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)INFOrE   rC   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   rQ   )r   rQ   r5   )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)rB   r   r   rC   rE   CRITICALr   getLevelNamerc   rw   rz   rj   rh   config
dictConfigsubprocess_loggerr   r4   )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+   )B
__future__r   
contextlibr'   rB   logging.handlersr|   rw   	threadingcollections.abcr   Zdataclassesr   ior   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   localr/   rj   ri   r   rs   r   r*   contextmanagerr1   r.   	Formatterr4   rX   rc   rk   rl   r   RotatingFileHandlerr{   r   r   r   r   r   r   r   <module>   sP    3	<