o
    ñ‘Ojp-  ã                   @   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 j4d/d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j<j=ƒZ>G d&d'„ d'eƒZ?G d(d)„ d)eƒZ@d*e5d+e2d,eeA de5fd-d.„ZBdS )0é    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    úa/var/www/html/pharmsmart-cdr-gen/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                       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)Úfilerf   Ú	soft_wrapF)rZ   Ú	show_timeÚ
show_levelÚ	show_pathÚhighlighter)r8   r9   r   r   )r:   re   rf   r;   r    r!   r9   �   s   
ûzRichPipStreamHandler.__init__rE   c                 C   sì   d }t |jtƒs
J ‚|jdkr2t|jƒdkr2|jd }t |tttfƒs*J |› d�ƒ‚t|t	ƒ d�}n'|  
|¡}|  ||¡}|jd urY|jtjkrNtdd�}n|jtjkrYtdd�}z| jj|d	d
|d� W d S  tyu   |  |¡ Y d S w )Nz[present-rich] %sé   r   z is not rich-console-renderable)rY   Úred)ÚcolorÚyellowÚignoreF)ÚoverflowÚcropÚstyle)r&   r6   ÚtupleÚmsgÚlenr   r   rS   rW   r.   rL   Úrender_messager>   r@   rC   r   rA   rZ   ÚprintÚ	ExceptionÚhandleError)r:   rE   rt   Ú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   rg   Ústdoutr+   r   r8   r{   )r:   rE   r"   r#   r;   r    r!   r{   µ   s   ÿþýüz RichPipStreamHandler.handleError)r   r   r   rd   r   r	   r   rS   rb   r
   rR   r9   r@   rU   r~   r{   rV   r    r    r;   r!   rc   Œ   s
   
 
 rc   c                       s"   e Zd Zdef‡ fdd„Z‡  ZS )ÚBetterRotatingFileHandlerr$   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ˆ   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 rƒ   )rŠ   )r:   rŠ   r    r    r!   r9   Ï   s   
zMaxLevelFilter.__init__rE   c                 C   s   |j | jk S rƒ   )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 rƒ   )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�   Ú	verbosityrf   Ú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,   rm   éÿÿÿÿéþÿÿÿéýÿÿÿNÚDEBUGz	/dev/null)ÚINFOrC   rA   zext://sys.stdoutzext://sys.stderr)r�   Ústderrz0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)re   rg   )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_timestampre   r�   r�   r›   rY   )rŠ   Úclassrf   re   ÚfiltersÚ	formatterr•   rœ   )rŠ   rŸ   re   rf   r    r¡   rg   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Ž   rf   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   Ú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¯   rz   r   ÚBaseExceptionrR   r+   ÚcontextmanagerrT   r1   r.   Ú	Formatterr4   rW   rc   r¥   ÚRotatingFileHandlerr‚   r‰   r�   rS   r·   r    r    r    r!   Ú<module>   sF    $ 3<"