o
    =gE.                     @   s  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mZmZmZmZ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-e%dZ.G dd de/Z0dee1 de1de2fddZ3e j4d1de5ded fddZ6de5fddZ7G dd dej8Z9eG d d! d!Z:G d"d# d#eZ;G d$d% d%eZ<G d&d' d'ej=j>Z?G d(d) d)eZ@G d*d+ d+eZAd,e5d-e2d.eeB de5fd/d0ZCdS )2    N)	dataclass)TextIOWrapper)Filter)AnyClassVar	GeneratorListOptionalTextIOType)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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+      num)NNNc              	   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_log6   s   "r1   c                   C   s   t tddS )Nr0   r   )getattrr/   r    r    r    r!   r.   E      r.   c                	       sf   e Zd ZdZdddedededdf fd	d
ZdededefddZ	de
jdef fddZ  ZS )IndentingFormatterz%Y-%m-%dT%H:%M:%SF)add_timestampargsr5   kwargsr$   Nc                   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   r6   r7   	__class__r    r!   r9   L   s   zIndentingFormatter.__init__	formattedlevelnoc                 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recordc                    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>x   s    z-IndentingFormatter.format.<locals>.<listcomp>T)	r8   formatrD   r>   r5   
formatTimer.   join
splitlines)r:   rE   r=   message_startr;   rI   r!   rL   k   s   zIndentingFormatter.format)r   r   r   default_time_formatr   boolr9   strintrD   r@   	LogRecordrL   __classcell__r    r    r;   r!   r4   I   s     r4   c                   @   s4   e Zd ZU eed< eed< dededefddZ	dS )	IndentedRenderable
renderableindentconsoleoptionsr$   c                 c   sL    | | j|}t|}|D ]}td| j V  |E d H  tdV  qd S )NrF   
)renderrX   r   split_linesrY   )r:   rZ   r[   segmentslinesrH   r    r    r!   __rich_console__   s   

z#IndentedRenderable.__rich_console__N)
r   r   r   r   __annotations__rT   r   r   r   ra   r    r    r    r!   rW   |   s   
 rW   c                   @   s   e Zd ZdddZdS )
PipConsoler$   Nc                 C   s   t  d N)r%   r:   r    r    r!   on_broken_pipe   s   zPipConsole.on_broken_pipe)r$   N)r   r   r   rf   r    r    r    r!   rc      s    rc   c                       st   e Zd ZU g Zeeee   ed< dee	 de
ddf fddZdejddfd	d
Zdejddf fddZ  ZS )RichPipStreamHandlerKEYWORDSstreamno_colorr$   Nc                    s&   t  jt||dddddt d d S )NT)filerj   	soft_wrapF)rZ   	show_time
show_level	show_pathhighlighter)r8   r9   rc   r   )r:   ri   rj   r;   r    r!   r9      s   
zRichPipStreamHandler.__init__rE   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)rY   red)coloryellowignore)overflowcropstyle)r2   r&   r6   tupler   r   rS   rW   r.   rL   render_messager>   r@   rC   r   rA   rZ   print	ExceptionhandleError)r:   rE   rx   rich_renderablerX   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_inforZ   rk   stdoutr+   r   r8   r}   )r:   rE   r"   r#   r;   r    r!   r}      s   z RichPipStreamHandler.handleError)r   r   r   rh   r   r	   r   rS   rb   r
   rR   r9   r@   rU   r   r}   rV   r    r    r;   r!   rg      s
   
 
 rg   c                       s"   e Zd Zdef fddZ  ZS )BetterRotatingFileHandlerr$   c                    s   t tj| j t  S rd   )r   ospathdirnamebaseFilenamer8   _openre   r;   r    r!   r      s   
zBetterRotatingFileHandler._open)r   r   r   r   r   rV   r    r    r;   r!   r      s    r   c                   @   s2   e Zd ZdeddfddZdejdefddZdS )	MaxLevelFilterlevelr$   Nc                 C   s
   || _ d S rd   )r   )r:   r   r    r    r!   r9      s   
zMaxLevelFilter.__init__rE   c                 C   s   |j | jk S rd   )r>   r   r:   rE   r    r    r!   filter   r3   zMaxLevelFilter.filter)	r   r   r   rT   r9   r@   rU   rR   r   r    r    r    r!   r      s    r   c                       s,   e Zd ZdZdejdef fddZ  ZS )ExcludeLoggerFilterzQ
    A logging Filter that excludes records from a logger (or its children).
    rE   r$   c                    s   t  | S rd   )r8   r   r   r;   r    r!   r      s   zExcludeLoggerFilter.filter)	r   r   r   r   r@   rU   rR   r   rV   r    r    r;   r!   r      s     r   	verbosityrj   user_log_filec                 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}	ddd}
g d|rXdgng  }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 ||	d  d!d"gd#d$d
|
d ||	d% d!gd#d$||
d |	d% |d&gd#d'd|
d( |d)dd*d+d,||d-d.d/|iid0 |S )1znConfigures and sets up all of the logging

    Returns the requested logging level, as its integer value.
    r,      NDEBUGz	/dev/null)INFOrC   rA   zext://sys.stdoutzext://sys.stderr)r   stderrz0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)ri   rk   )rZ   console_errorsconsole_subprocessuser_logFz*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   rL   T)r   rL   r5   )rY   indent_with_timestampri   r   r   r   rY   )r   classrj   ri   filters	formatterr   r   )r   r   ri   rj   r   r   rk   zutf-8r   )r   r   filenameencodingdelayr   )rZ   r   r   r   )r   handlerszpip._vendorr   )versiondisable_existing_loggersr   
formattersr   rootloggers)r@   r   r   rA   rC   CRITICALr   getLevelNameconfig
dictConfigsubprocess_loggerr   r4   )r   rj   r   level_numberr   include_user_logadditional_log_file
root_levelvendored_log_levellog_streamshandler_classesr   r    r    r!   setup_logging   s   
		%
Ir   )r,   )D
contextlibr(   r@   logging.handlersr   r   	threadingdataclassesr   ior   r   typingr   r   r   r   r	   r
   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   localr/   r   r|   r   BaseExceptionrR   r+   contextmanagerrT   r1   r.   	Formatterr4   rW   rc   rg   r   RotatingFileHandlerr   r   r   rS   r   r    r    r    r!   <module>   sH    $ 3<"