U
    cUhE.                     @   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Z<G d%d& d&ej=j>Z?G d'd( d(eZ@G d)d* d*eZAe5e2eeB e5d+d,d-ZCd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    [/opt/bot/vods_filmes/script/venv/lib/python3.8/site-packages/pip/_internal/utils/logging.pyr   #   s   r   )	exc_classexcreturnc                 C   s0   | t krdS tsdS t|to.|jtjtjfkS )NTF)BrokenPipeErrorr   
isinstanceOSErrorerrnoEINVALZEPIPE)r"   r#   r    r    r!   _is_broken_pipe_error)   s
    r*      )NNN)numr$   c              	   c   s6   t  t_t j| 7  _z
dV  W 5 t j| 8  _X 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
    
r0   r$   c                   C   s   t tddS )Nr/   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)argsr4   kwargsr$   c                   s   || _ t j|| 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   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)r9   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   s     z-IndentingFormatter.format.<locals>.<listcomp>T)	r7   formatrC   r=   r4   
formatTimer-   join
splitlines)r9   rE   r<   Zmessage_startr:   rI   r!   rL   k   s    zIndentingFormatter.format)r   r   r   default_time_formatr   boolr8   strintrC   r?   	LogRecordrL   __classcell__r    r    r:   r!   r3   I   s   r3   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 )NrF   
)ZrenderrW   r   Zsplit_linesrX   )r9   rY   rZ   segmentslinesrH   r    r    r!   __rich_console__   s    

z#IndentedRenderable.__rich_console__N)
r   r   r   r   __annotations__rS   r   r   r   r^   r    r    r    r!   rV   |   s   
 rV   c                   @   s   e Zd ZddddZdS )
PipConsoleNr1   c                 C   s   t  d d S N)r%   r9   r    r    r!   on_broken_pipe   s    zPipConsole.on_broken_pipe)r   r   r   rc   r    r    r    r!   r`      s   r`   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)filerg   Z	soft_wrapF)rY   Z	show_timeZ
show_levelZ	show_pathZhighlighter)r7   r8   r`   r   )r9   rf   rg   r:   r    r!   r8      s    zRichPipStreamHandler.__init__rD   c                 C   s   d }t |ddrVt|jts t|j\}t|tttfsFt| dt|t	 d}nN| 
|}| ||}|jd k	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k
r   | | Y nX d S )
NZrichFz is not rich-console-renderable)rX   Zred)ZcolorZyellowignore)ZoverflowZcropstyle)r2   r&   r5   tupleAssertionErrorr   r   rR   rV   r-   rL   Zrender_messager=   r?   rB   r   r@   rY   print	ExceptionhandleError)r9   rE   rj   Zrich_renderablerW   messager    r    r!   emit   s2      


zRichPipStreamHandler.emitc                    sF   t  dd \}}|r:|r:| jjt jkr:t||r:t t |S )z1Called when logging is unable to log some output.Nr+   )	sysexc_inforY   rh   stdoutr*   r   r7   ro   )r9   rE   r"   r#   r:   r    r!   ro      s    z RichPipStreamHandler.handleError)r   r   r   re   r   r	   r   rR   r_   r
   rQ   r8   r?   rT   rq   ro   rU   r    r    r:   r!   rd      s   

rd   c                       s"   e Zd Zed fddZ  ZS )BetterRotatingFileHandlerr1   c                    s   t tj| j t  S ra   )r   ospathdirnamebaseFilenamer7   _openrb   r:   r    r!   rz      s    zBetterRotatingFileHandler._open)r   r   r   r   rz   rU   r    r    r:   r!   ru      s   ru   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 ra   )r|   )r9   r|   r    r    r!   r8      s    zMaxLevelFilter.__init__rD   c                 C   s   |j | jk S ra   )r=   r|   r9   rE   r    r    r!   filter   s    zMaxLevelFilter.filter)	r   r   r   rS   r8   r?   rT   rQ   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).
    rD   c                    s   t  | S ra   )r7   r~   r}   r:   r    r!   r~      s    zExcludeLoggerFilter.filter)	r   r   r   r   r?   rT   rQ   r~   rU   r    r    r:   r!   r      s   r   )	verbosityrg   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k	}|rt|}d}nd}|}|d	krd
nd}ddd}	ddd}
dddg|rd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/d0d1|iid2 |S )3znConfigures and sets up all of the logging

    Returns the requested logging level, as its integer value.
    r+      NDEBUGz	/dev/null)INFOrB   r@   zext://sys.stdoutzext://sys.stderr)rt   stderrz0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)rf   rh   rY   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   r4   )rX   indent_with_timestamprf   rt   r   r   rX   )r|   classrg   rf   filters	formatterr   r   )r|   r   rf   rg   r   r   rh   zutf-8r   )r|   r   filenameencodingdelayr   )rY   r   r   r   )r|   handlerszpip._vendorr|   )versionZdisable_existing_loggersr   Z
formattersr   rootZloggers)r?   r   r   r@   rB   CRITICALr   getLevelNameZconfigZ
dictConfigsubprocess_loggerr   r3   )r   rg   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+   )D
contextlibr(   r?   Zlogging.handlersrv   rr   	threadingZdataclassesr   ior   r   typingr   r   r   r   r	   r
   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   Zpip._internal.utils.deprecationr   pip._internal.utils.miscr   localr.   r   rn   r   BaseExceptionrQ   r*   contextmanagerrS   r0   r-   	Formatterr3   rV   r`   rd   r   ZRotatingFileHandlerru   r{   r   rR   r   r    r    r    r!   <module>   sF   $ 3<