
    yIf                        d Z ddlm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
mZ ddlmZ ddlmZmZmZmZ ddlmZmZmZmZ dd	lmZmZmZ ej        ej        ej        ej        ej         ej!        d
Z" e#e"$                                          Z% ej&                    Z'eeef         Z( G d de          Z) G d de
          Z* G d dej+                  Z,ddZ-ddZ.d dZ/ G d de0          Z1dS )!z!Handle reporting from within tox.    )annotationsN)contextmanager)BytesIOTextIOWrapper)Path)Threadcurrent_thread	enumeratelocal)IOClassVarIteratorTuple)ForeStyleinit)r                  c                      e Zd ZU dZi Zded<   ddZeedd
                        Z	e
dd            Zej        dd            Zedd            Zed d!d            Zed"d            ZdS )#_LogThreadLocalz=A thread local variable that inherits values from its parent.zClassVar[dict[int | None, str]]_ident_to_dataout_errOutErrreturnNonec                    | j                             t          t                      dd           d          | _        || _        d S )Nparent_identROOT)r   getgetattrr	   namer   selfr   s     >/var/www/piapp/venv/lib/python3.11/site-packages/tox/report.py__init__z_LogThreadLocal.__init__$   s;    '++GN4D4DnVZ,[,[]cdd	    Iterator[None]c               #     K   dfd} t           j        | ct           _        	 d V  t           _        d S # t           _        w xY w)Nr&   r   r   r   c                N    t                      j        | _         |            d S N)r	   identr    )r&   	old_starts    r'   	new_startz/_LogThreadLocal.patch_thread.<locals>.new_start+   s%     . 0 0 6DIdOOOOOr)   )r&   r   r   r   )r   start)r0   r/   s    @r'   patch_threadz_LogThreadLocal.patch_thread(   sc      	 	 	 	 	 	 #),		6<	%EEE$FLLL9FL$$$$s	   6 Astrc                    | j         S r-   )_namer&   s    r'   r$   z_LogThreadLocal.name5   s
    zr)   valuec                    || _         | j                                        d t                      D             z
  D ]}| j                            |           || j        t                      j        <   d S )Nc                    h | ]	}|j         
S  )r.   ).0ts     r'   	<setcomp>z'_LogThreadLocal.name.<locals>.<setcomp>=   s    2P2P2Pq172P2P2Pr)   )r5   r   keysr
   popr	   r.   )r&   r7   r.   s      r'   r$   z_LogThreadLocal.name9   su    
(--//2P2PIKK2P2P2PP 	+ 	+E##E****6;N,,2333r)   r$   c              #  X   K   | j         |c}| _         	 d V  || _         d S # || _         w xY wr-   )r$   )r&   r$   previouss      r'   	with_namez_LogThreadLocal.with_nameA   sB      "i$)	!EEE DIIIDI    s     	)NyesboolOutErr | NoneIterator[OutErr]c              #  
  K   | j         \  }}	 |rM|=|                     d| j         |          }|                     d| j         |          }n|\  }}||f| _         | j         V  |r||f| _         d S d S # |r	||f| _         w xY w)Nzout-zerr-)r   _maker$   )r&   rC   r   previous_outprevious_errouterrs          r'   suspend_out_errz_LogThreadLocal.suspend_out_errI   s      %)\"l	: (?**%7DI%7%7FFC**%7DI%7%7FFCC&HC"Cx, :+\9: :s :+\99999s   AA5 5Bprefixbased_ofr   c                v    t          t          |  d|j                   t          j        d                    S )N-F)encoding)r   NamedBytesIOr$   localegetpreferredencoding)rN   rO   s     r'   rH   z_LogThreadLocal._makeY   s:    \V*E*Ehm*E*EFFQWQlmrQsQsttttr)   )r   r   r   r   r   r*   r   r3   )r7   r3   r   r   r$   r3   r   r*   r-   rC   rD   r   rE   r   rF   )rN   r3   rO   r   r   r   )__name__
__module____qualname____doc__r   __annotations__r(   staticmethodr   r2   propertyr$   setterrB   rM   rH   r:   r)   r'   r   r      s        GG68N8888    	% 	% 	% ^ \	%    X 
[< < < [< ! ! ! ^! : : : : ^: u u u \u u ur)   r   c                        e Zd Zd fdZ xZS )rS   r$   r3   r   r   c                V    t                                                       || _        d S r-   )superr(   r$   )r&   r$   	__class__s     r'   r(   zNamedBytesIO.__init___   s$    			r)   )r$   r3   r   r   )rZ   r[   r\   r(   __classcell__re   s   @r'   rS   rS   ^   s=                 r)   rS   c                  4    e Zd Zd' fd	Zd(d
Zed)d            Zed*d            Zed+d            Z	ed+d            Z
ed,d            Zej        d-d            Zed.d/d            Zd0dZed1d             Zd2d#Zeed3d$                        Zd4d&Z xZS )5
ToxHandlerlevelint
is_coloredrD   r   r   r   r   c                    t          |          | _        t                                          | j                   |rt                       || _        |                     ||           d S )N)stream)r   _localrd   r(   stdoutr   _is_colored_setup_level)r&   rj   rl   r   re   s       r'   r(   zToxHandler.__init__g   sd    %g..,,, 	FFF%*e,,,,,r)   c                   |                      |           |                     t          j        ||          | _        |                     t          j        ||          | _        |                     t          j        ||          | _        d S r-   )	setLevel_get_formatterloggingERROR_error_formatterWARNING_warning_formatterINFO_remaining_formatter)r&   rl   rj   s      r'   rr   zToxHandler._setup_levelo   sn    e $ 3 3GM5* U U"&"5"5gouj"Y"Y$($7$7eZ$X$X!!!r)   r$   r3   r*   c              #  x   K   | j                             |          5  dV  ddd           dS # 1 swxY w Y   dS )zj
        Set a new tox environment context.

        :param name: the name of the tox environment
        N)ro   rB   )r&   r$   s     r'   with_contextzToxHandler.with_contextu   s       [""4(( 	 	EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /33c                    | j         j        S )z):return: the current tox environment name)ro   r$   r6   s    r'   r$   zToxHandler.name   s     {r)   r   c                &    | j         j        d         S )z$:return: the current standard outputr   ro   r   r6   s    r'   rp   zToxHandler.stdout        {"1%%r)   c                &    | j         j        d         S )z#:return: the current standard errorr   r   r6   s    r'   stderrzToxHandler.stderr   r   r)   IO[str]c                    | j         S )zO:return: the current stream to write to (alias for the current standard output))rp   r6   s    r'   rn   zToxHandler.stream   s     {r)   r7   c                    dS )zIgnore anyone changing this.Nr:   )r&   r7   s     r'   rn   zToxHandler.stream   s      r)   NrC   rE   rF   c              #  z   K   | j                             ||          5 }|V  d d d            d S # 1 swxY w Y   d S r-   )ro   rM   )r&   rC   r   out_err_ress       r'   rM   zToxHandler.suspend_out_err   s      [((g66 	+	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   044tuple[bytes, bytes]c                    | j         j                            |d                    | j        j                            |d                    d S )Nr   r   )rp   bufferwriter   r%   s     r'   write_out_errzToxHandler.write_out_err   sB      ,,,  ,,,,,r)   enabled_levellogging.Formatterc           	     ^   d|rF| t           j        k    rt          j        n)| t           j        k    rt          j        nt          j        dfd} d |t          j                   }|t           j	        k    rZ |t          j
                   d |t          j                   |  |t          j                   d	 |t          j                   } |t          j                    |t          j                   d
 |t          j                   |z   }t          j        |          S )N valrk   r   r3   c                *    rt          |           ndS )Nr   )r3   )r   colors    r'   _cz%ToxHandler._get_formatter.<locals>._c   s    $,3s888",r)   z %(message)sz$ %(relativeCreated)d %(levelname).1sz [%(pathname)s:%(lineno)d]z%(env_name)s:)r   rk   r   r3   )rv   rw   r   REDry   CYANWHITEr   	RESET_ALLDEBUGGREENDIMBRIGHTMAGENTA	Formatter)rj   r   rl   r   fmtr   s        @r'   ru   zToxHandler._get_formatter   sX    	#%%'/))	
	- 	- 	- 	- 	- 	- 99BBu$7$799GM))2dj>> C Crr%/GZGZ C\_ Cacacdidmanan C C-/R-@-@C C  EL!!W22dl#3#3WW""U_BUBUWWZ]] %%%r)   recordlogging.LogRecordc                   | j         j        dn| j         j        |_        t          t	          |j                  j                  t          fdt          j	        D             d          }|j        |dz   d          |_        |j
        t          j        k    r| j                            |          S |j
        t          j        k    rb| j        rA|j        dk    r6|j        r/dt&          j         dt&          j         dt&          j         d	|_        | j                            |          S | j                            |          S )
Nrootc              3  `   K   | ](}                     |          t          |          V  )d S r-   )
startswithlen)r;   pbasenames     r'   	<genexpr>z$ToxHandler.format.<locals>.<genexpr>   s=      !U!UQh>Q>QRS>T>T!U#a&&!U!U!U!U!U!Ur)   )defaultr   z%s%s> %sz%s>z %s)ro   r$   env_namer3   r   pathnameparentmaxsyspathlevelnorv   rw   rx   formatry   rq   msgargsr   NORMALr   r   rz   r|   )r&   r   len_sys_path_matchr   s      @r'   r   zToxHandler.format   s&   $(K$4$<&&$+BRtFO,,344 !U!U!U!U#(!U!U!U_abbb /*<q*@*B*BC>W]**(//777>W_,, SFJ*$<$<$<R%,RR%)RReoRRR
*11&999(//777r)   c               #  v   K   t                                           5  d V  d d d            d S # 1 swxY w Y   d S r-   )r   r2   r:   r)   r'   r2   zToxHandler.patch_thread   s       ))++ 	 	EEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   .22	verbosityc                    t          |          }t                              |           |                     | j        |           d S r-   )
_get_levelLOGGERrt   rr   rq   )r&   r   rj   s      r'   update_verbosityzToxHandler.update_verbosity   s@    9%%$*E22222r)   )rj   rk   rl   rD   r   r   r   r   )rl   rD   rj   rk   r   r   rX   rW   )r   r   )r   r   )r7   r   r   r   r-   rY   )r   r   r   r   )rj   rk   r   rk   rl   rD   r   r   )r   r   r   r3   rV   )r   rk   r   r   )rZ   r[   r\   r(   rr   r   r~   r`   r$   rp   r   rn   ra   rM   r   r_   ru   r   r2   r   rf   rg   s   @r'   ri   ri   d   s       - - - - - -Y Y Y Y    ^       X  & & & X& & & & X&    X ]+ + + ]+     ^- - - -
 & & & \&,8 8 8 8    ^ \3 3 3 3 3 3 3 3r)   ri   r   rk   rl   rD   r   c                   t          t                     t          |           }t                              |           dD ]}t	          j        |          }d|_        t          j        t          j	        f}t          |||          }t                              |           t	          j        dt	          j        |          t          j                               |S )N)zdistlib.utilfilelockTzsetup logging to %s on pid %s)_clean_handlersr   r   rt   rv   	getLoggerdisabledr   rp   r   ri   
addHandlerdebuggetLevelNameosgetpid)r   rl   rj   r$   loggerr   handlers          r'   setup_reportr      s    Fy!!E
OOE,  "4((z3:.G
G44G
gM173G3N3NPRPYP[P[\\\Nr)   c                B    t           t          | t                             S r-   )LEVELSmin	MAX_LEVEL)r   s    r'   r   r      s    #i++,,r)   loglogging.Loggerr   c                ^    t          | j                  D ]}|                     |           d S r-   )listhandlersremoveHandler)r   log_handlers     r'   r   r      s<    CL)) ' '+&&&&' 'r)   c                      e Zd ZdZdS )HandledErrorz7Error that has been handled so no need for stack trace.N)rZ   r[   r\   r]   r:   r)   r'   r   r      s        AAAAr)   r   )r   rk   rl   rD   r   ri   )r   rk   r   rk   )r   r   r   r   )2r]   
__future__r   rT   rv   r   r   
contextlibr   ior   r   pathlibr   	threadingr   r	   r
   r   typingr   r   r   r   coloramar   r   r   CRITICALrw   ry   r{   r   NOTSETr   r   r>   r   r   r   r   r   rS   StreamHandlerri   r   r   r   RuntimeErrorr   r:   r)   r'   <module>r      sU   ' ' " " " " " "   				 



 % % % % % % % % % % % % % %       > > > > > > > > > > > > 0 0 0 0 0 0 0 0 0 0 0 0 & & & & & & & & & & }|}~
 
 C						}m+	,<u <u <u <u <ue <u <u <u~    7   l3 l3 l3 l3 l3& l3 l3 l3^   - - - -' ' ' '
B B B B B< B B B B Br)   