o
    1c-                     @   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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 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! 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.Z/dee0 de0de1fddZ2e j3d.de4ded fddZ5de4fddZ6G dd dej7Z8eG dd  d Z9G d!d" d"eZ:G d#d$ d$ej;j<Z=G d%d& d&e	Z>G d'd( d(e	Z?d)e4d*e1d+ee@ de4fd,d-ZAdS )/    N)	dataclass)Filter)IOAnyClassVarIteratorListOptionalTextIOType)ConsoleConsoleOptionsConsoleRenderableRenderResult)NullHighlighter)RichHandler)Segment)Style)DiagnosticPipError)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   T/var/www/html/django/env/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*      numc              	   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_log4   s   "r0   c                   C   s   t tddS )Nr/   r   )getattrr.   r   r   r   r    r-   C      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argsr4   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)r4   super__init__)selfr4   r5   r6   	__class__r   r    r8   J   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)r9   r<   r=   r   r   r    get_message_startY   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>v   s    z-IndentingFormatter.format.<locals>.<listcomp>T)	r7   formatrC   r=   r4   
formatTimer-   join
splitlines)r9   rD   r<   Zmessage_startr:   rH   r    rK   i   s   zIndentingFormatter.format)r   r   r   default_time_formatr   boolr8   strintrC   r?   	LogRecordrK   __classcell__r   r   r:   r    r3   G   s     r3   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 )NrE   
)renderrV   r   split_linesrW   )r9   rX   rY   segmentslinesrG   r   r   r    __rich_console__   s   

z#IndentedRenderable.__rich_console__N)
r   r   r   r   __annotations__rR   r   r   r   r_   r   r   r   r    rU   z   s   
 rU   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)filerd   	soft_wrapF)rX   	show_time
show_level	show_pathhighlighter)r7   r8   r   r   )r9   rc   rd   r:   r   r    r8      s   
zRichPipStreamHandler.__init__rD   c                 C   s   d }|j dkr"t|jdkr"|jd }t|tsJ t|t d}n'| |}| ||}|j	d urI|j	t
jkr>tdd}n|j	t
jkrItdd}z| jj|dd	|d
 W d S  tye   | | Y d S w )Nz[present-diagnostic] %s   r   )rW   red)coloryellowignoreF)overflowcropstyle)msglenr5   r%   r   rU   r-   rK   Zrender_messager=   r?   rB   r   r@   rX   print	ExceptionhandleError)r9   rD   rr   Zdiagnostic_errorrV   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_inforX   re   stdoutr*   r   r7   rw   )r9   rD   r!   r"   r:   r   r    rw      s   z RichPipStreamHandler.handleError)r   r   r   rb   r   r	   r   rQ   r`   r
   rP   r8   r?   rS   ry   rw   rT   r   r   r:   r    ra      s
   
 
 ra   c                       s&   e Zd Zdee f fddZ  ZS )BetterRotatingFileHandlerr#   c                    s   t tj| j t  S N)r   ospathdirnamebaseFilenamer7   _open)r9   r:   r   r    r      s   
zBetterRotatingFileHandler._open)r   r   r   r   r   r   rT   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 r~   )r   )r9   r   r   r   r    r8      s   
zMaxLevelFilter.__init__rD   c                 C   s   |j | jk S r~   )r=   r   r9   rD   r   r   r    filter   r2   zMaxLevelFilter.filter)	r   r   r   rR   r8   r?   rS   rP   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).
    rD   r#   c                    s   t  | S r~   )r7   r   r   r:   r   r    r      s   zExcludeLoggerFilter.filter)	r   r   r   r   r?   rS   rP   r   rT   r   r   r:   r    r      s     r   	verbosityrd   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+   rk   NDEBUGz	/dev/null)INFOrB   r@   zext://sys.stdoutzext://sys.stderr)r|   stderrz0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rc   re   )rX   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   rK   T)r   rK   r4   )rW   indent_with_timestamprc   r|   r   r   rW   )r   classrd   rc   filters	formatterr   r   )r   r   rc   rd   r   r   re   zutf-8r   )r   r   filenameencodingdelayr   )rX   r   r   r   )r   handlerszpip._vendorr   )versionZdisable_existing_loggersr   
formattersr   rootZloggers)r?   r   r   r@   rB   CRITICALr   getLevelNameconfigZ
dictConfigsubprocess_loggerr   r3   )r   rd   r   Zlevel_numberr   Zinclude_user_logZadditional_log_fileZ
root_levelZvendored_log_levelZlog_streamsZhandler_classesr   r   r   r    setup_logging   s   
		%
Ir   )r+   )B
contextlibr'   r?   Zlogging.handlersr   rz   	threadingdataclassesr   r   typingr   r   r   r   r   r	   r
   r   pip._vendor.rich.consoler   r   r   r   Zpip._vendor.rich.highlighterr   Zpip._vendor.rich.loggingr   Zpip._vendor.rich.segmentr   pip._vendor.rich.styler   pip._internal.exceptionsr   Zpip._internal.utils._logr   r   pip._internal.utils.compatr   Zpip._internal.utils.deprecationr   pip._internal.utils.miscr   localr.   r   rv   r   BaseExceptionrP   r*   contextmanagerrR   r0   r-   	Formatterr3   rU   ra   r   ZRotatingFileHandlerr}   r   r   rQ   r   r   r   r   r    <module>   sF    (39"