
    yIf%                       d Z ddlmZ ddlZddlZddlZddlmZ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 dd	lmZmZ dd
lmZ erddlmZ ddlmZ ddlmZ ee gdf         Z!eee!e!ge"f         Z# ej$        e%          Z& G d d          Z' G d de          Z( G d de          Z) G d de          Z* G d d          Z+dZ,dS )zAAbstract base API for executing commands within tox environments.    )annotationsN)ABCabstractmethod)contextmanager)TYPE_CHECKINGAnyCallableIteratorNoReturnSequencecast)Fore   )ExecuteRequestStdinSource)	SyncWrite)TracebackType)OutErr)ToxEnvc                  v    e Zd ZddZedd            Zedd            Zedd	            Zedd
            Z	dS )ExecuteOptionsenvr   returnNonec                    || _         d S N)_env)selfr   s     C/var/www/piapp/venv/lib/python3.11/site-packages/tox/execute/api.py__init__zExecuteOptions.__init__   s    			    c                    |j                             dgdt          d           |j                             dgdt          d           |j                             dgd	t          d
           d S )Nsuicide_timeoutz6timeout to allow process to exit before sending SIGINTg        )keysdescof_typedefaultinterrupt_timeoutz+timeout before sending SIGTERM after SIGINTg333333?terminate_timeoutz,timeout before sending SIGKILL after SIGTERMg?)conf
add_configfloatclsr   s     r   register_confzExecuteOptions.register_conf    s    #$I	 	 	
 	
 	
 	%&>	 	 	
 	
 	
 	%&?	 	 	
 	
 	
 	
 	
r!   r,   c                L    t          t          | j        j        d                   S )Nr#   r   r,   r   r*   r   s    r   r#   zExecuteOptions.suicide_timeout5   s    E49>*;<===r!   c                L    t          t          | j        j        d                   S )Nr(   r1   r2   s    r   r(   z ExecuteOptions.interrupt_timeout9       E49>*=>???r!   c                L    t          t          | j        j        d                   S )Nr)   r1   r2   s    r   r)   z ExecuteOptions.terminate_timeout=   r4   r!   Nr   r   r   r   r   r,   )
__name__
__module____qualname__r    classmethodr/   propertyr#   r(   r)    r!   r   r   r      s            
 
 
 [
( > > > X> @ @ @ X@ @ @ @ X@ @ @r!   r   c                      e Zd ZddZeedd
                        Zeddd            Zedd            Zedd            Z	d dZ
ed!d            Zed!d            Zed"d            ZdS )#ExecuteStatusoptionsr   outr   errr   r   c                >    d | _         || _        || _        || _        d S r   )outcomer@   _out_err)r   r@   rA   rB   s       r   r    zExecuteStatus.__init__C   s"    '+				r!   
int | Nonec                    t           r   NotImplementedErrorr2   s    r   	exit_codezExecuteStatus.exit_codeI   
     "!r!   Ntimeoutfloat | Nonec                    t           r   rI   )r   rM   s     r   waitzExecuteStatus.waitN       !!r!   contentstrc                    t           r   rI   )r   rR   s     r   write_stdinzExecuteStatus.write_stdinR   rQ   r!   c                    t           r   rI   r2   s    r   	interruptzExecuteStatus.interruptV   rQ   r!   tuple[SyncWrite, SyncWrite]c                @    | j         | j        f}||c| _         | _        |S r   )rE   rF   )r   rA   rB   ress       r   set_out_errzExecuteStatus.set_out_errZ   s%    i""C	49
r!   	bytearrayc                    | j         j        S r   )rE   rR   r2   s    r   rA   zExecuteStatus.out_       y  r!   c                    | j         j        S r   )rF   rR   r2   s    r   rB   zExecuteStatus.errc   r^   r!   dict[str, Any]c                    i S r   r=   r2   s    r   metadatazExecuteStatus.metadatag   s    	r!   )r@   r   rA   r   rB   r   r   r   )r   rG   r   )rM   rN   r   rG   )rR   rS   r   r   r   r   )rA   r   rB   r   r   rX   )r   r\   )r   r`   )r8   r9   r:   r    r<   r   rK   rP   rU   rW   r[   rA   rB   rb   r=   r!   r   r?   r?   B   s+           " " " ^ X" " " " " ^" " " " ^" " " " ^"   
 ! ! ! X! ! ! ! X!    X  r!   r?   c                  r    e Zd ZU dZeZded<   ddZedd            Z	e
dd            Zedd            ZdS )Executez0Abstract API for execution of a tox environment.ztype[ExecuteOptions]_option_classcoloredboolr   r   c                    || _         d S r   )_colored)r   rg   s     r   r    zExecute.__init__q   s    r!   requestr   showout_errr   r   r   Iterator[ExecuteStatus]c              #    K   t          j                    }	 |d         j        |d         j        }}t          |j        |r|nd           }t          |j        |r|nd | j        rt          j        nd           }	|5  |	5  |                     || 	                    |          ||	          }
|
5 }|V  d d d            n# 1 swxY w Y   |j
        }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    }n# t          j                    }w xY wt          ||||j        |	j        |||
j        |j        	  	        |_        d S )Nr   r   )time	monotonicbufferr   namerj   r   REDbuild_instancerf   rK   Outcometextcmdrb   rD   )r   rk   rl   rm   r   startrA   rB   out_syncerr_syncinstancestatusrK   ends                 r   callzExecute.callt   s        	#qz('!**;C $+@33DAAH $+@33DdmBe$((aeffH - -8 - -..w8J8J38O8OQY[cdd ! LLL! ! ! ! ! ! ! ! ! ! ! ! ! ! !",		- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .""CC$.""C"""" MMLO

 

sx   A"D 9C0<.C*B;/C;B??CB?
CC0C	C0 C	!C0$D 0C44D 7C48D D$r@   r   rA   r   rB   ExecuteInstancec                    t           r   rI   r   rk   r@   rA   rB   s        r   ru   zExecute.build_instance   s
     "!r!   c                :    | j                             |           d S r   )rf   r/   r-   s     r   r/   zExecute.register_conf   s    '',,,,,r!   N)rg   rh   r   r   )
rk   r   rl   rh   rm   r   r   r   r   rn   )
rk   r   r@   r   rA   r   rB   r   r   r   r6   )r8   r9   r:   __doc__r   rf   __annotations__r    r   r   r   ru   r;   r/   r=   r!   r   re   re   l   s         ::*8M8888        
 
 
 ^
@ " " " ^" - - - [- - -r!   re   c                      e Zd ZdZddZedd            Zedd            Zedd            Z	edd            Z
eedd                        ZdS ) r   z#An instance of a command execution.rk   r   r@   r   rA   r   rB   r   r   c                >    || _         || _        || _        || _        d S r   )rk   r@   rE   rF   r   s        r   r    zExecuteInstance.__init__   s"    				r!   ContentHandlerc                    | j         j        S r   )rE   handlerr2   s    r   out_handlerzExecuteInstance.out_handler   r^   r!   c                    | j         j        S r   )rF   r   r2   s    r   err_handlerzExecuteInstance.err_handler   r^   r!   r?   c                    t           r   rI   r2   s    r   	__enter__zExecuteInstance.__enter__   rQ   r!   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                    t           r   rI   )r   r   r   r   s       r   __exit__zExecuteInstance.__exit__   s
     "!r!   Sequence[str]c                    t           r   rI   r2   s    r   rx   zExecuteInstance.cmd   rL   r!   N)
rk   r   r@   r   rA   r   rB   r   r   r   )r   r   )r   r?   )r   r   r   r   r   r   r   r   )r   r   )r8   r9   r:   r   r    r<   r   r   r   r   r   rx   r=   r!   r   r   r      s        --    ! ! ! X! ! ! ! X! " " " ^" " " " ^" " " " ^ X" " "r!   r   c                  n    e Zd ZdZdZd#dZd$dZd%dZd&dZd&dZ	d'dZ
d(dZed)d            Zd*d!Zd"S )+rv   zResult of a command execution.r   rk   r   show_on_standardrh   rK   rG   rA   rS   rB   ry   r,   r~   rx   r   rb   r`   r   r   c
                    || _         || _        || _        || _        || _        || _        || _        || _        |	| _        dS )aa  
        Create a new execution outcome.

        :param request: the execution request
        :param show_on_standard: a flag indicating if the execution was shown on stdout/stderr
        :param exit_code: the exit code for the execution
        :param out: the standard output of the execution
        :param err: the standard error of the execution
        :param start: a timer sample for the start of the execution
        :param end: a timer sample for the end of the execution
        :param cmd: the command as executed
        :param metadata: additional metadata attached to the execution
        N)	rk   r   rK   rA   rB   ry   r~   rx   rb   )
r   rk   r   rK   rA   rB   ry   r~   rx   rb   s
             r   r    zOutcome.__init__   sH    2  0"
 r!   c                "    | j         | j        k    S r   )rK   OKr2   s    r   __bool__zOutcome.__bool__   s    ~((r!   c                Z    | j         j         d| j         d| j        dd| j        j         S )Nz: exit z in z.2fz seconds for )	__class__r8   rK   elapsedrk   	shell_cmdr2   s    r   __repr__zOutcome.__repr__   sJ    ~& - -t~ - -4<] - -L*- -	
r!   c                    | j         $| j         | j        k    r|                                  |                     t          j                   dS )z$Assert that the execution succeeded.NrK   r   _assert_faillog_run_doneloggingINFOr2   s    r   assert_successzOutcome.assert_success   F    >%$.DG*C*C','''''r!   c                    | j         $| j         | j        k    r|                                  |                     t          j                   dS )z!Assert that the execution failed.Nr   r2   s    r   assert_failurezOutcome.assert_failure   r   r!   r   c                   | j         du r| j        r]t          j                            | j                   | j                            d          st          j                            d           | j        rt          j                            t          j	                   t          j                            | j                   t          j                            t          j
                   | j                            d          st          j                            d           |                     t          j                   t          | j                  )NF
)r   rA   sysstdoutwriteendswithrB   stderrr   rt   RESETr   r   CRITICAL
SystemExitrK   r2   s    r   r   zOutcome._assert_fail  s    E))x +
  ***x((.. +J$$T***x +
  ***
  ***
  ,,,x((.. +J$$T***'*+++(((r!   lvlintc           	         | j         }d}| j        r9dd                    d | j                                        D                        }t                              |d| j        | j        |j        |j	        |           dS )z
        Log that the run was done.

        :param lvl: the level on what to log as interpreted by :func:`logging.log`
          z, c              3  *   K   | ]\  }}| d | V  dS )=Nr=   ).0kvs      r   	<genexpr>z'Outcome.log_run_done.<locals>.<genexpr>  s0      $R$RDAqZZAZZ$R$R$R$R$R$Rr!   zexit %s (%.2f seconds) %s> %s%sN)
rk   rb   joinitemsLOGGERlogrK   r   cwdr   )r   r   reqrb   s       r   r   zOutcome.log_run_done  s     l= 	UT499$R$RDM<O<O<Q<Q$R$R$RRRTTH

-NLGM	
 	
 	
 	
 	
r!   c                     | j         | j        z
  S )z+:return: time the execution took in seconds)r~   ry   r2   s    r   r   zOutcome.elapsed(  s     x$*$$r!   tuple[str, str]c                    | j         | j        fS )z::return: a tuple of the standard output and standard error)rA   rB   r2   s    r   rm   zOutcome.out_err-  s    x!!r!   N)rk   r   r   rh   rK   rG   rA   rS   rB   rS   ry   r,   r~   r,   rx   r   rb   r`   r   r   )r   rh   )r   rS   rc   )r   r   )r   r   r   r   r7   )r   r   )r8   r9   r:   r   r   r    r   r   r   r   r   r   r<   r   rm   r=   r!   r   rv   rv      s        ((	
B!! !! !! !!F) ) ) )
 
 
 
( ( ( (( ( ( () ) ) )
 
 
 
( % % % X%" " " " " "r!   rv   )r   re   r   r   r?   rv   r   )-r   
__future__r   r   r   rp   abcr   r   
contextlibr   typingr   r   r	   r
   r   r   r   coloramar   rk   r   r   streamr   typesr   
tox.reportr   tox.tox_env.apir   bytesr   r   Executor	getLoggerr8   r   r   r?   re   r   rv   __all__r=   r!   r   <module>r      s8   G G " " " " " "  



  # # # # # # # # % % % % % % S S S S S S S S S S S S S S S S S S       0 0 0 0 0 0 0 0       '######!!!!!!&&&&&&5'4-(^^^DcIJ		8	$	$#@ #@ #@ #@ #@ #@ #@ #@L' ' ' ' 'C ' ' 'T5- 5- 5- 5- 5-c 5- 5- 5-p!" !" !" !" !"c !" !" !"Hg" g" g" g" g" g" g" g"Tr!   