o
    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Z2ej3d?d@d d!Z4dAd"d#Z5G d$d% d%ej6Z7eG d&d' d'Z8G d(d) d)eZ9d*d+dBd.d/Z:G d0d1 d1eZ;G d2d3 d3ej<j=Z>G d4d5 d5eZ?G d6d7 d7eZ@dCd<d=ZAdS )D    )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   N/var/www/html/venv/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+      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)r-   r   r   r   
indent_log;   s   "r3   c                   C  s   t tddS )Nr2   r   )getattrr1   r   r   r   r   r0   J      r0   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   r7   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)r7   super__init__)selfr7   r8   r9   	__class__r   r   r<   Q   s   zIndentingFormatter.__init__	formattedstr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@   rB   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.
        rC    c                   s   g | ]} | qS r   r   ).0lineprefixr   r   
<listcomp>}   s    z-IndentingFormatter.format.<locals>.<listcomp>T)	r;   formatrH   rB   r7   
formatTimer0   join
splitlines)r=   rI   r@   message_startr>   rN   r   rQ   p   s   zIndentingFormatter.format)r8   r   r7   r$   r9   r   r#   r:   )r@   rA   rB   r.   r#   rA   )rI   rJ   r#   rA   )r   r   r   default_time_formatr<   rH   rQ   __classcell__r   r   r>   r   r6   N   s    
r6   c                   @  s(   e Zd ZU ded< ded< dddZdS )IndentedRenderabler   
renderabler.   indentconsoler	   optionsr
   r#   r   c                 c  sL    | | j|}t|}|D ]}td| j V  |E d H  tdV  qd S )NrK   
)renderrY   r   split_linesrZ   )r=   r[   r\   segmentslinesrM   r   r   r   __rich_console__   s   

z#IndentedRenderable.__rich_console__N)r[   r	   r\   r
   r#   r   )r   r   r   __annotations__rb   r   r   r   r   rX      s   
 rX   c                   @  s   e Zd ZdddZdS )
PipConsoler#   r:   c                 C  s   t  d N)r%   r=   r   r   r   on_broken_pipe   s   zPipConsole.on_broken_pipeN)r#   r:   )r   r   r   rg   r   r   r   r   rd      s    rd   Fstderrri   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_consolerh   r   r   r   get_console   s
   rl   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 )RichPipStreamHandlerzClassVar[list[str] | None]KEYWORDSr[   r	   r#   r:   c                   s   t  j|dddt d d S )NF)r[   	show_time
show_level	show_pathhighlighter)r;   r<   r   )r=   r[   r>   r   r   r<      s   
zRichPipStreamHandler.__init__rI   rJ   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)rZ   red)coloryellowignore)overflowcropstyle)r4   r&   r8   tupler   r   rA   rX   r0   rQ   render_messagerB   rD   rG   r   rE   r[   print	ExceptionhandleError)r=   rI   rz   rich_renderablerY   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.Nr,   )	sysexc_infor[   filestdoutr+   r   r;   r   )r=   rI   r   r!   r>   r   r   r      s   z RichPipStreamHandler.handleError)r[   r	   r#   r:   )rI   rJ   r#   r:   )	r   r   r   rn   rc   r<   r   r   rW   r   r   r>   r   rm      s
   
 

rm   c                      s   e Zd Zd fddZ  ZS )BetterRotatingFileHandlerr#   r   c                   s   t tj| j t  S re   )r   ospathdirnamebaseFilenamer;   _openrf   r>   r   r   r      s   
zBetterRotatingFileHandler._open)r#   r   )r   r   r   r   rW   r   r   r>   r   r      s    r   c                   @  s    e Zd ZdddZdd
dZdS )MaxLevelFilterlevelr.   r#   r:   c                 C  s
   || _ d S re   )r   )r=   r   r   r   r   r<      s   
zMaxLevelFilter.__init__rI   rJ   r$   c                 C  s   |j | jk S re   )rB   r   r=   rI   r   r   r   filter   r5   zMaxLevelFilter.filterN)r   r.   r#   r:   rI   rJ   r#   r$   )r   r   r   r<   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).
    rI   rJ   r#   r$   c                   s   t  | S re   )r;   r   r   r>   r   r   r      s   zExcludeLoggerFilter.filterr   )r   r   r   r   r   rW   r   r   r>   r   r      s    r   	verbosityno_color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.
    r,      NDEBUGz	/dev/null)INFOrG   rE   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)streamr   )r[   console_errorsconsole_subprocessuser_logT)r   r   	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   r7   )rZ   indent_with_timestampr   r   r   rZ   )r   classr[   filters	formatterr   r   zutf-8r   )r   r   filenameencodingdelayr   )r[   r   r   r   )r   handlerszpip._vendorr   )versiondisable_existing_loggersr   
formattersr   rootloggers)rD   r   r   rE   rG   CRITICALr   getLevelNamerd   r   r   rk   ri   config
dictConfigsubprocess_loggerr   r6   )r   r   r   level_numberr   include_user_logadditional_log_file
root_levelvendored_log_levelhandler_classesr   rj   r   r   r   setup_logging   s   

"
Fr   )r   r    r!   r"   r#   r$   )r,   )r-   r.   r#   r/   )r#   r.   )ri   r$   r#   r	   )r   r.   r   r$   r   r   r#   r.   )B
__future__r   
contextlibr(   rD   logging.handlersr   r   	threadingcollections.abcr   dataclassesr   ior   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   localr1   rk   rj   r   r~   r   r+   contextmanagerr3   r0   	Formatterr6   rX   rd   rl   rm   r   RotatingFileHandlerr   r   r   r   r   r   r   r   <module>   sR     

3	<