o
    UhL/                     @  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   c/var/www/html/figdemos/bartoux_crm/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EINVALZ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   "r2   c                   C  s   t tddS )Nr1   r   )getattrr0   r   r   r   r   r/   J      r/   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   r6   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)r6   super__init__)selfr6   r7   r8   	__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?   rA   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.
        rB    c                   s   g | ]} | qS r   r   ).0lineprefixr   r   
<listcomp>}   s    z-IndentingFormatter.format.<locals>.<listcomp>T)	r:   formatrG   rA   r6   
formatTimer/   join
splitlines)r<   rH   r?   Zmessage_startr=   rM   r   rP   p   s   zIndentingFormatter.format)r7   r   r6   r$   r8   r   r#   r9   )r?   r@   rA   r-   r#   r@   )rH   rI   r#   r@   )r   r   r   default_time_formatr;   rG   rP   __classcell__r   r   r=   r   r5   N   s    
r5   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 )NrJ   
)renderrW   r   split_linesrX   )r<   rY   rZ   segmentslinesrL   r   r   r   __rich_console__   s   

z#IndentedRenderable.__rich_console__N)rY   r	   rZ   r
   r#   r   )r   r   r   __annotations__r`   r   r   r   r   rV      s   
 rV   c                   @  s   e Zd ZdddZdS )
PipConsoler#   r9   c                 C  s   t  d N)r%   r<   r   r   r   on_broken_pipe   s   zPipConsole.on_broken_pipeN)r#   r9   )r   r   r   re   r   r   r   r   rb      s    rb   Fstderrrg   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_consolerf   r   r   r   get_console   s
   rj   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]KEYWORDSrY   r	   r#   r9   c                   s   t  j|dddt d d S )NF)rY   	show_time
show_level	show_pathhighlighter)r:   r;   r   )r<   rY   r=   r   r   r;      s   
zRichPipStreamHandler.__init__rH   rI   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)rX   red)coloryellowignore)overflowcropstyle)r3   r&   r7   tupler   r   r@   rV   r/   rP   Zrender_messagerA   rC   rF   r   rD   rY   print	ExceptionhandleError)r<   rH   rx   Zrich_renderablerW   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_inforY   filestdoutr*   r   r:   r|   )r<   rH   r   r!   r=   r   r   r|      s   z RichPipStreamHandler.handleError)rY   r	   r#   r9   )rH   rI   r#   r9   )	r   r   r   rl   ra   r;   r~   r|   rU   r   r   r=   r   rk      s
   
 

rk   c                      s   e Zd Zd fddZ  ZS )BetterRotatingFileHandlerr#   r   c                   s   t tj| j t  S rc   )r   ospathdirnamebaseFilenamer:   _openrd   r=   r   r   r      s   
zBetterRotatingFileHandler._open)r#   r   )r   r   r   r   rU   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#   r9   c                 C  s
   || _ d S rc   )r   )r<   r   r   r   r   r;      s   
zMaxLevelFilter.__init__rH   rI   r$   c                 C  s   |j | jk S rc   )rA   r   r<   rH   r   r   r   filter   r4   zMaxLevelFilter.filterN)r   r-   r#   r9   rH   rI   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).
    rH   rI   r#   r$   c                   s   t  | S rc   )r:   r   r   r=   r   r   r      s   zExcludeLoggerFilter.filterr   )r   r   r   r   r   rU   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)INFOrF   rD   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)streamr   )rY   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   rP   )r   rP   r6   )rX   indent_with_timestampr   r   r   rX   )r   classrY   filters	formatterr   r   zutf-8r   )r   r   filenameencodingdelayr   )rY   r   r   r   )r   handlerszpip._vendorr   )versionZdisable_existing_loggersr   
formattersr   rootZloggers)rC   r   r   rD   rF   CRITICALr   getLevelNamerb   r   r   ri   rg   configZ
dictConfigsubprocess_loggerr   r5   )r   r   r   Zlevel_numberr   Zinclude_user_logZadditional_log_fileZ
root_levelZvendored_log_levelZhandler_classesr   rh   r   r   r   setup_logging   s   

"
Fr   )r   r    r!   r"   r#   r$   )r+   )r,   r-   r#   r.   )r#   r-   )rg   r$   r#   r	   )r   r-   r   r$   r   r   r#   r-   )B
__future__r   
contextlibr(   rC   Zlogging.handlersr   r   	threadingcollections.abcr   dataclassesr   ior   r   typingr   r   pip._vendor.rich.consoler	   r
   r   r   r   r   Zpip._vendor.rich.highlighterr   Zpip._vendor.rich.loggingr   Zpip._vendor.rich.segmentr   pip._vendor.rich.styler   Zpip._internal.utils._logr   r   pip._internal.utils.compatr   Zpip._internal.utils.deprecationr   pip._internal.utils.miscr   localr0   ri   rh   r   r{   r   r*   contextmanagerr2   r/   	Formatterr5   rV   rb   rj   rk   r   ZRotatingFileHandlerr   r   r   r   r   r   r   r   <module>   sR     

3	<