
    si                     H   S r SSKrSSKrSSKrSSKJrJr  SSKJrJr  SSKJ	r	J
r
JrJrJrJrJr  SSKJr  SSKJrJr  \" \5      r\\\
\	\S	.r\R0                  " \S
5         " S S\5      r " S S\5      r\S 5       rS r\4S jr\	4S jr\S\	S4S j5       rS\ 4S jr!g)zConfigure logging for conda.    N)datetimetimezone)cachepartial)DEBUGINFOWARNFilter	FormatterStreamHandler	getLogger   )TRACE)
_FORMATTERattach_stderr_handler)r      r         r   c                   p    \ rS rSr\R
                  " S5      r\" \" \R                  S5      5      r
S rSrg)TokenURLFilter$   z(|https?://)(|\s|(?:(?:\d{1,3}\.){3}\d{1,3})|(?:(?:[a-zA-Z0-9-]{1,20}\.){0,10}(?:[a-zA-Z]{2}[a-zA-Z0-9-]{0,18})))(|:\d{1,5})?/t/[a-z0-9A-Z-]+/z\1\2\3/t/<TOKEN>/c                     [        UR                  [        5      (       d  gUR                  (       a%  UR                  UR                  -  Ul        SUl        U R	                  UR                  5      Ul        g)a  
Since Python 2's getMessage() is incapable of handling any
strings that are not unicode when it interpolates the message
with the arguments, we fix that here by doing it ourselves.

At the same time we replace tokens in the arguments which was
not happening until now.
TN)
isinstancemsgstrargsTOKEN_REPLACE)selfrecords     6lib/python3.13/site-packages/conda/gateways/logging.pyfilterTokenURLFilter.filter2   sU     &**c** ;;fkk1FJFK''

3
     N)__name__
__module____qualname____firstlineno__recompileTOKEN_URL_PATTERNstaticmethodr   subr   r!   __static_attributes__r$   r#   r    r   r   $   s6    

	
 !):)>)>@T!UVMr#   r   c                   D   ^  \ rS rSrSrSrU 4S jrU 4S jr S rSr	U =r
$ )StdStreamHandlerF   z?Log StreamHandler that always writes to the current sys stream.
c                 P   > [         TU ]  [        [        U5      5        Xl        U ?g)zZ
Args:
    sys_stream: stream name, either "stdout" or "stderr" (attribute of module sys)
N)super__init__getattrsys
sys_streamstream)r   r8   	__class__s     r    r5   StdStreamHandler.__init__K   s#    
 	j12$Kr#   c                 b   > US:X  a  [        [        U R                  5      $ [        TU ]  U5      $ )Nr9   )r6   r7   r8   r4   __getattribute__)r   attrr:   s     r    __getattr__StdStreamHandler.__getattr__T   s,    8300w'--r#   c                     U R                  U5      nU R                  nSnUR                  XB-  5        [        USU R                  5      nUR                  U5        U R                  5         g! [         a    U R                  U5         gf = f)ak  
Emit a record.

If a formatter is specified, it is used to format the record.
The record is then written to the stream with a trailing newline.  If
exception information is present, it is formatted using
traceback.print_exception and appended to the stream.  If the stream
has an 'encoding' attribute, it is used to determine how to do the
output to the stream.
z%s
terminatorN)formatr9   writer6   rB   flush	ExceptionhandleError)r   r   r   r9   fsrB   s         r    emitStdStreamHandler.emitm   sw    	%++f%C[[FBLL" tGJLL$JJL  	%V$	%s   A*A- -B
B)r8   )r%   r&   r'   r(   __doc__rB   r5   r?   rI   r.   __classcell__)r:   s   @r    r0   r0   F   s$    IJ.&% %r#   r0   c                  h    [        S5      R                  [        5        [        5         [	        5         g )Nconda)r   setLevelr	   set_conda_log_levelinitialize_std_loggersr$   r#   r    initialize_loggingrR      s#     g%r#   c                  P   [        S5      n S GH  n[        SU 35      n/ Ul        UR                  [        5        [        U5      nUR                  [        5        UR                  U 5        UR                  U5        UR                  [        5       5        SUl
        [        SU S35      n/ Ul        UR                  [        5        [        U5      nSUl        UR                  [        5        UR                  U 5        UR                  U5        SUl
        GM     [        S5      n/ Ul        UR                  [        5        [        S5      nUR                  [        5        UR                  U 5        UR                  [        5       5        UR                  U5        SUl
        g )	Nz%(message)s)stdoutstderrzconda.Flog zconda.stdout.verboserT   )r   r   handlersrO   r   r0   setFormatter
addHandler	addFilterr   	propagater   rB   )	formatterr9   loggerhandlerstdlog_loggerstdlog_handlerverbose_loggerverbose_handlers           r    rQ   rQ      sf    -(I&VF8,-"6*Y''")* !F6(#"67!#u%)&1$&!&##I.  0"'' '* 56N ND!&x0OT"  +n./o.$Nr#   c                 ,    [        U S[        5       /S9  g )NrN   )levellogger_namefilters)r   r   )re   s    r    rP   rP      s    7^EUDVWr#   c                     U [         :  a  [        S5      OS n[        X[        5       /S9  [	        U 5        [        U S[        5       /S9  [        U S[        5       /S9  g )Nz%(message)s
)r]   rg   requests)rg   zrequests.packages.urllib3)r   r   r   r   rP   )re   r]   s     r    set_all_logger_levelrj      sV    .3tm	/*I%~?O>PQ %n6F5GH*^5E4Fr#   c                 ,   Uc9  [         R                  " [        R                  5      R	                  S5      nSU S3n[        U 5      n[        R                  " U5      nUR                  [        5        UR                  U5        UR                  U5        g )Nz%Y%m%d-%H%M%Sz.conda.z.log)r   nowr   utcstrftimer   loggingFileHandlerrY   r   rO   rZ   )rf   re   path	timestampconda_loggerr_   s         r    set_file_loggingrt      sv    |LL.77H	4([)L!!$'G$UG$r#   	log_levelc                 F    [        U 5        [        R                  SU 5        g )Nzlog_level set to %d)rj   rV   debug)ru   s    r    set_log_levelrx      s    #II#Y/r#   )"rK   ro   r)   r7   r   r   	functoolsr   r   r   r   r	   r
   r   r   r   common.constantsr   	common.ior   r   r%   rV   _VERBOSITY_LEVELSaddLevelNamer   r0   rR   rQ   rP   rj   rt   intrx   r$   r#   r    <module>r      s    #  	 
 ' $   % 9    UG $V D>%} >%L  "%J # X  % 	 !%U 	% 	%0S 0r#   