
    5>qj_6                       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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+m,Z,m-Z-  ej\                         Z/da0dZ1 e%d      Z2 G d de3      Z4d*dZ5ejl                  d+d       Z7ejl                  d,d-d       Z8d.dZ9 G d dejt                        Z;e G d d             Z< G d de      Z=ddd/d Z> G d! d"e      Z? G d# d$ej                  j                        ZB G d% d&e      ZC G d' d(e      ZDd0d)ZEy)1    )annotationsN)	Generator)	dataclass)StringIOTextIOWrapper)Filter)AnyClassVar)ConsoleConsoleOptionsConsoleRenderableRenderableTypeRenderResultRichCast)NullHighlighter)RichHandler)Segment)Style)VERBOSE	getLogger)WINDOWS)DEPRECATION_MSG_PREFIX)StreamWrapper
ensure_dirlooks_like_cizpip.subprocessorc                      e Zd ZdZy)BrokenStdoutLoggingErrorzO
    Raised if BrokenPipeError occurs for the stdout stream while logging.
    N)__name__
__module____qualname____doc__     Z/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/pip/_internal/utils/logging.pyr   r   (   s    r#   r   c                    | t         u ryt        syt        |t              xr, |j                  t        j
                  t        j                  fv S )NTF)BrokenPipeErrorr   
isinstanceOSErrorerrnoEINVALEPIPE)	exc_classexcs     r$   _is_broken_pipe_errorr.   .   s=    O#
 c7#P		ellEKK5P(PPr#   c               #  
  K   i } t        j                         j                  D ]"  }t        |t              s|j
                  | |<   $ t        j                  t        j                        }| s| yt        t        | j                                     j                  }t        ||d      }	 | D ]	  }||_         | | j                         D ]  \  }}||_         y# | j                         D ]  \  }}||_         w xY ww)z-Capture all pip logs in a buffer temporarily.NT)fileno_color	soft_wrap)loggingr   handlersr'   RichPipStreamHandlerconsoler   from_streamsysstdoutnextitervaluesr1   
PipConsoleitems)r4   handlerfake_streamr1   fake_consoleoriginal_consoles         r$   capture_loggingrC   ;   s      H$$&// 0g34 !(HW	0  ++CJJ7K D*+,55H;TRL/ 	+G*GO	+)1)9 	/%G%.GO	/)9 	/%G%.GO	/s#   4DA5D-C ? D!D  Dc              #     K   t               t        _        t        xj                  | z  c_        	 d t        xj                  | z  c_        y# t        xj                  | z  c_        w xY w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)nums    r$   
indent_logrI   [   sN      -.Jc!&#%
#%s   -A,A A,A))A,c                 $    t        t        dd      S )NrG   r   )getattrrF   r"   r#   r$   rE   rE   j   s    :}a00r#   c                  L     e Zd ZdZdd	 	 	 	 	 	 	 d fdZddZd	 fdZ xZS )
IndentingFormatterz%Y-%m-%dT%H:%M:%SF)add_timestampc               2    || _         t        |   |i | y)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)rN   super__init__)selfrN   argskwargs	__class__s       r$   rQ   zIndentingFormatter.__init__q   s     +$)&)r#   c                    |t         j                  k  ry|j                  t              ry|t         j                  k  ryy)zv
        Return the start of the formatted log message (not counting the
        prefix to add to each line).
         z	WARNING: zERROR: )r3   WARNING
startswithr   ERROR)rR   	formattedlevelnos      r$   get_message_startz$IndentingFormatter.get_message_start   s9    
 W__$ 67 W]]"r#   c                8   t         |   |      }| j                  ||j                        }||z   }d}| j                  r| j                  |       d}|dt               z  z  }dj                  |j                  d      D cg c]  }||z   	 c}      }|S c c}w )z
        Calls the standard formatter, but will indent all of the log message
        lines by our current indentation level.
        rW    T)	rP   formatr]   r\   rN   
formatTimerE   join
splitlines)rR   recordr[   message_startprefixlinerU   s         r$   r`   zIndentingFormatter.format   s    
 GN6*	..y&..I!I-	/02F#)))GGy7K7KD7QRtVd]RS	 Ss   B)rS   r	   rN   boolrT   r	   returnNone)r[   strr\   intri   rk   )rd   logging.LogRecordri   rk   )r   r   r    default_time_formatrQ   r]   r`   __classcell__rU   s   @r$   rM   rM   n   sH    -
 $** * 	*
 
*  r#   rM   c                  6    e Zd ZU ded<   ded<   	 	 	 	 	 	 ddZy)IndentedRenderabler   
renderablerl   indentc              #     K   |j                  | j                  |      }t        j                  |      }|D ]3  }t        d| j                  z         |E d {    t        d       5 y 7 w)Nr_   
)renderrs   r   split_linesrt   )rR   r6   optionssegmentslinesrg   s         r$   __rich_console__z#IndentedRenderable.__rich_console__   sc      >>$//7;##H- 	 D#+,,OO$-	 s   AA/A-A/N)r6   r   ry   r   ri   r   )r   r   r    __annotations__r|   r"   r#   r$   rr   rr      s*    K  )7 	 r#   rr   c                      e Zd ZddZy)r=   c                    t               d N)r&   )rR   s    r$   on_broken_pipezPipConsole.on_broken_pipe   s     T)r#   N)ri   rj   )r   r   r    r   r"   r#   r$   r=   r=      s    *r#   r=   Fstderrc                R    | rt         J d       t         S t        J d       t        S )Nzstderr rich console is missing!zstdout rich console is missing!)_stderr_console_stdout_consoler   s    r$   get_consoler      s5    *M,MM**M,MM*r#   c                  D     e Zd ZU g Zded<   d fdZddZd fdZ xZS )r5   zClassVar[list[str] | None]KEYWORDSc                >    t         |   |dddt                      y )NF)r6   	show_time
show_level	show_pathhighlighter)rP   rQ   r   )rR   r6   rU   s     r$   rQ   zRichPipStreamHandler.__init__   s'    ') 	 	
r#   c                p   d }t        |dd      ret        |j                  t              sJ |j                  \  }t        |t        t
        t        f      s
J | d       t        |t                     }n| j                  |      }| j                  ||      }|j                  S|j                  t        j                  k\  rt        d      }n)|j                  t        j                  k\  rt        d      }	 | j                   j#                  |dd|	       y # t$        $ r | j'                  |       Y y w xY w)
NrichFz is not rich-console-renderable)rt   red)coloryellowignore)overflowcropstyle)rK   r'   rS   tupler   r   rk   rr   rE   r`   render_messager\   r3   rZ   r   rX   r6   print	ExceptionhandleError)rR   rd   r   rich_renderablers   messages         r$   emitzRichPipStreamHandler.emit   s   " 665)fkk5111!'_"3Xs!C C!""ABC  *<(9*J kk&)G,,VW=J~~)>>W]]2!.E^^w6!1E	%LLzH5PUV 	%V$	%s   8D D54D5c                    t        j                         dd \  }}|r>|r<| j                  j                  t         j                  u rt        ||      r
t               t        | !  |      S )z1Called when logging is unable to log some output.N   )	r8   exc_infor6   r0   r9   r.   r   rP   r   )rR   rd   r,   r-   rU   s       r$   r   z RichPipStreamHandler.handleError   s\     +	3 !!SZZ/%i5*,,w"6**r#   )r6   r   ri   rj   )rd   rm   ri   rj   )	r   r   r    r   r}   rQ   r   r   ro   rp   s   @r$   r5   r5      s"    +-H(-
%8+ +r#   r5   c                        e Zd Zd fdZ xZS )BetterRotatingFileHandlerc                    t        t        j                  j                  | j                               t
        |          S r   )r   ospathdirnamebaseFilenamerP   _open)rR   rU   s    r$   r   zBetterRotatingFileHandler._open   s*    277??4#4#456w}r#   )ri   r   )r   r   r    r   ro   rp   s   @r$   r   r      s     r#   r   c                      e Zd ZddZddZy)MaxLevelFilterc                    || _         y r   )level)rR   r   s     r$   rQ   zMaxLevelFilter.__init__  s	    
r#   c                4    |j                   | j                  k  S r   )r\   r   )rR   rd   s     r$   filterzMaxLevelFilter.filter  s    ~~

**r#   N)r   rl   ri   rj   rd   rm   ri   rh   )r   r   r    rQ   r   r"   r#   r$   r   r     s    +r#   r   c                  $     e Zd ZdZd fdZ xZS )ExcludeLoggerFilterzQ
    A logging Filter that excludes records from a logger (or its children).
    c                $    t         |   |       S r   )rP   r   )rR   rd   rU   s     r$   r   zExcludeLoggerFilter.filter  s     7>&)))r#   r   )r   r   r    r!   r   ro   rp   s   @r$   r   r     s    * *r#   r   c                N   | dk\  rt         j                  }n^| dk(  rt        }nR| dk(  rt         j                  }n<| dk(  rt         j                  }n&| dk  rt         j
                  }nt         j                  }t        j                  |      }|du}|r|}d}nd}|}|d	v rd
nd}ddd}	g d|rdgng z   }
|dd}t               rd|d<   t        d-dt        j                  i|at        d-dt        j                  i|}t         j                  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)INFOrZ   rX   z0pip._internal.utils.logging.RichPipStreamHandlerz5pip._internal.utils.logging.BetterRotatingFileHandler)streamr0   )r6   console_errorsconsole_subprocessuser_logT)r1   r2   Fforce_interactiver0   z*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   r`   )r   r`   rN   )rt   indent_with_timestampr   r   r   rt   )r   classr6   filters	formatterr   zutf-8r   )r   r   filenameencodingdelayr   )r6   r   r   r   )r   r4   zpip._vendorr   )versiondisable_existing_loggersr   
formattersr4   rootloggersr"   )r3   r   r   rX   rZ   CRITICALr   getLevelNamer   r=   r8   r9   r   r   config
dictConfigsubprocess_loggerr   rM   )	verbosityr1   user_log_filelevel_numberr   include_user_logadditional_log_file
root_levelvendored_log_levelhandler_classesr4   console_optionsr   s                r$   setup_loggingr     s:    A~}}	a	b	b}}	b''||  .E %D0+
)
 ',/@&@g EGO C(bH 4<$&OO 05+, DcjjDODO DcjjDODONN(- G$__%
 +-22+
 L-22'  -+
 -+%)*
 #,X6. 46HI!) ',X6. 45!)# #,X6. 89!)' %,V4 3 '!!81 D $$ &1C'DECB	
DL r#   )r,   ztype[BaseException]r-   BaseExceptionri   rh   )ri   zGenerator[StringIO, None, None])r   )rH   rl   ri   zGenerator[None, None, None])ri   rl   )r   rh   ri   r   )r   rl   r1   rh   r   z
str | Noneri   rl   )F
__future__r   
contextlibr)   r3   logging.handlersr   r8   	threadingcollections.abcr   dataclassesr   ior   r   r   typingr	   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   r   r   localrF   r   r   r   r   r   r.   contextmanagerrC   rI   rE   	FormatterrM   rr   r=   r   r5   r4   RotatingFileHandlerr   r   r   r   r"   r#   r$   <module>r      sG   "     	 
  % ! &     9 0 , ( 7 . B M MY__
01 y 
Q / /> & &10** 0f      * * #( 9+; 9+x 0 0 D D +V +*& *~r#   