a
    |Ä#dp-  ã                   @   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/ƒZ0ee1 e1e2dœdd„Z3e j4d,e5ed dœdd„ƒZ6e5dœ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j<j=ƒZ>G d%d&„ d&eƒZ?G d'd(„ d(eƒZ@e5e2eeA e5d)œd*d+„ZBdS )-é    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    úR/var/www/html/gsl.tools/lib/python3.9/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+   é   )NNN)Ú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_log6   s
    r1   ©r$   c                   C   s   t tddƒS )Nr0   r   )Úgetattrr/   r    r    r    r!   r.   E   s    r.   c                       sZ   e Zd ZdZddœeeeddœ‡ fdd„Zeeedœd	d
„Z	e
jedœ‡ fdd„Z‡  ZS )ÚIndentingFormatterz%Y-%m-%dT%H:%M:%SF)Úadd_timestampN)Ú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   r6   r7   ©Ú	__class__r    r!   r9   L   s    zIndentingFormatter.__init__)Ú	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©Ú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.
        r?   ú c                    s   g | ]}ˆ | ‘qS r    r    )Ú.0Úline©Úprefixr    r!   Ú
<listcomp>x   ó    z-IndentingFormatter.format.<locals>.<listcomp>T)	r8   ÚformatrD   r>   r5   Ú
formatTimer.   ÚjoinÚ
splitlines)r:   rF   r=   Úmessage_startr;   rJ   r!   rN   k   s    zIndentingFormatter.format)r   r   r   Údefault_time_formatr   Úboolr9   ÚstrÚintrD   r@   Ú	LogRecordrN   Ú__classcell__r    r    r;   r!   r4   I   s   ýûr4   c                   @   s0   e Zd ZU eed< eed< eeedœdd„Z	dS )ÚIndentedRenderableÚ
renderableÚindent)ÚconsoleÚoptionsr$   c                 c   sJ   |  | j|¡}t |¡}|D ](}td| j ƒV  |E d H  tdƒV  qd S )NrG   Ú
)ÚrenderrZ   r   Úsplit_linesr[   )r:   r\   r]   ÚsegmentsÚlinesrI   r    r    r!   Ú__rich_console__�   s    

z#IndentedRenderable.__rich_console__N)
r   r   r   r   Ú__annotations__rV   r   r   r   rc   r    r    r    r!   rY   |   s
   
þrY   c                       sl   e Zd ZU g Zeeee   ed< ee	 e
ddœ‡ fdd„Zejddœdd„Zejddœ‡ fd	d
„Z‡  ZS )ÚRichPipStreamHandlerÚKEYWORDSN)ÚstreamÚno_colorr$   c                    s&   t ƒ jt||dd�dddtƒ d� d S )NT)Úfilerh   Ú	soft_wrapF)r\   Ú	show_timeÚ
show_levelÚ	show_pathÚhighlighter)r8   r9   r   r   )r:   rg   rh   r;   r    r!   r9   �   s    ûzRichPipStreamHandler.__init__rE   c                 C   sì   d }t |jtƒsJ ‚|jdkrdt|jƒdkrd|jd }t |tttfƒsTJ |› 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 )Nz[present-rich] %sé   r   z is not rich-console-renderable)r[   Úred)ÚcolorÚyellowÚignoreF)ÚoverflowÚcropÚstyle)r&   r6   ÚtupleÚmsgÚlenr   r   rU   rY   r.   rN   Úrender_messager>   r@   rC   r   rA   r\   ÚprintÚ	ExceptionÚhandleError)r:   rF   rv   Úrich_renderablerZ   Ú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\   ri   Ústdoutr+   r   r8   r}   )r:   rF   r"   r#   r;   r    r!   r}   µ   s    ÿþýüz RichPipStreamHandler.handleError)r   r   r   rf   r   r	   r   rU   rd   r
   rT   r9   r@   rW   r€   r}   rX   r    r    r;   r!   re   Œ   s   

re   c                       s"   e Zd Zedœ‡ fdd„Z‡  ZS )ÚBetterRotatingFileHandlerr2   c                    s   t tj | j¡ƒ tƒ  ¡ S ©N)r   ÚosÚpathÚdirnameÚbaseFilenamer8   Ú_open)r:   r;   r    r!   rŠ   É   s    zBetterRotatingFileHandler._open)r   r   r   r   rŠ   rX   r    r    r;   r!   r„   È   s   r„   c                   @   s.   e Zd Zeddœdd„Zejedœdd„ZdS )ÚMaxLevelFilterN)Úlevelr$   c                 C   s
   || _ d S r…   )rŒ   )r:   rŒ   r    r    r!   r9   Ï   s    zMaxLevelFilter.__init__rE   c                 C   s   |j | jk S r…   )r>   rŒ   ©r:   rF   r    r    r!   ÚfilterÒ   s    zMaxLevelFilter.filter)	r   r   r   rV   r9   r@   rW   rT   rŽ   r    r    r    r!   r‹   Î   s   r‹   c                       s*   e Zd ZdZejedœ‡ fdd„Z‡  ZS )ÚExcludeLoggerFilterzQ
    A logging Filter that excludes records from a logger (or its children).
    rE   c                    s   t ƒ  |¡ S r…   )r8   rŽ   r�   r;   r    r!   rŽ   Ü   s    zExcludeLoggerFilter.filter)	r   r   r   r   r@   rW   rT   rŽ   rX   r    r    r;   r!   r�   Ö   s   r�   )Ú	verbosityrh   Ú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œ}	dddœ}
g d¢|r°d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,   ro   éÿÿÿÿéþÿÿÿéýÿÿÿNÚDEBUGz	/dev/null)ÚINFOrC   rA   zext://sys.stdoutzext://sys.stderr)rƒ   Ústderrz0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rg   ri   )r\   Ú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›   rN   T)r›   rN   r5   )r[   Úindent_with_timestamprg   rƒ   rŸ   r�   r[   )rŒ   Úclassrh   rg   ÚfiltersÚ	formatterr—   rž   )rŒ   r¡   rg   rh   r¢   r£   ri   zutf-8r    )rŒ   r¡   ÚfilenameÚencodingÚdelayr£   )r\   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�   rh   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,   )CÚ
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   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   Úlocalr/   r±   r|   r   ÚBaseExceptionrT   r+   ÚcontextmanagerrV   r1   r.   Ú	Formatterr4   rY   re   r§   ÚRotatingFileHandlerr„   r‹   r�   rU   r¹   r    r    r    r!   Ú<module>   sD   $ 3<