
    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m	Z	m
Z
 ddlmZmZmZmZ ddlmZ ddlmZmZ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/m0Z0 erddl1m2Z2 ddl3m4Z4  G d de          Z5 G d de          Z6dHdZ7dId'Z8dJd+Z9 ej:        e;          Z<dKd2Z= G d3 d4e0          Z>dLd>Z?dMd@Z@dNdEZAdOdGZBdS )Pz9Common functionality shared across multiple type of runs.    )annotationsN)ActionArgumentErrorArgumentParser	Namespace)CancelledErrorFutureThreadPoolExecutoras_completed)Path)SIGINTHandlerssignal)EventThread)TYPE_CHECKINGAnyIteratorOptionalSequencecast)Fore)EnvList)Outcome)write_journal)ToxEnvRunResultrun_one)	RunToxEnv)stable_topological_sort)MISS_DURATIONSpinner)State)ToxEnvc                      e Zd Z	 dddZdS )SkipMissingInterpreterActionNparserr   	namespacer   valuesstr | Sequence[Any] | Noneoption_string
str | NonereturnNonec                n    |dn|}|dvrt          | d|d          t          || j        |           d S )Ntrue>   r/   falseconfigz0value must be 'config', 'true', or 'false' (got ))r   setattrdest)selfr&   r'   r(   r*   values         N/var/www/piapp/venv/lib/python3.11/site-packages/tox/session/cmd/run/common.py__call__z%SkipMissingInterpreterAction.__call__   sT     !.f333&cY^&c&c&cddd	49e,,,,,    N
r&   r   r'   r   r(   r)   r*   r+   r,   r-   __name__
__module____qualname__r8    r9   r7   r%   r%      s2         %)
- 
- 
- 
- 
- 
- 
-r9   r%   c                      e Zd Z	 dddZdS )InstallPackageActionNr&   r   r'   r   r(   r)   r*   r+   r,   r-   c                Z   |st          | d          t          t          t          |                                                    }|                                st          | | d          |                                st          | | d          t          || j        |           d S )Nzcannot be emptyz does not existz is not a file)	r   r   r   strabsoluteexistsis_filer3   r4   )r5   r&   r'   r(   r*   paths         r7   r8   zInstallPackageAction.__call__-   s      	9&7888Df%%&&//11{{}} 	@&>&>&>???||~~ 	?&=&=&=>>>	49d+++++r9   r:   r;   r<   r@   r9   r7   rB   rB   ,   s2         %), , , , , , ,r9   rB   r&   r   moderD   r,   r-   c           	        |dvr!|                      dddddt          d           |d	vre|                      d
dddd           |                      dddddd           |                      ddd t          t                   t          d           |dvr|                      dddd           |dk    r|                      ddd d           |d	vr|                      d!d"d#d           d S d S )$N>   devenvdependsz-sz--skip-missing-interpretersr1   v?zEdon't fail tests for missing interpreters: {config,true,false} choice)defaultmetavarnargsactionhelp>   r1   rK   rL   z-nz--notestno_testzdo not run the test commands
store_true)r4   rS   rR   z-bz
--pkg-onlyz--sdistonlyz#only perform the packaging activitypackage_only)rR   rS   r4   z--installpkgzRuse specified package for installation into venv, instead of packaging the projectinstall_pkg)rS   rO   of_typerR   r4   z	--developz#install package in development modedeveloprL   z--no-recreate-pkgno_recreate_pkgz?if recreate is set do not recreate packaging tox environment(s)z--skip-pkg-installskip_pkg_installz&skip package installation for this run)add_argumentr%   r   r   rB   )r&   rI   s     r7   env_run_create_flagsr]   >   s   ((()/X 	 	
 	
 	
 222/ 	 	
 	
 	
 	6 	 	
 	
 	
 	eTN' 	 	
 	
 	
 (((6	 	 	
 	
 	
 y"R	 	 	
 	
 	
 222 #9	 	 	
 	
 	
 	
 	
 32r9   startfloatrunslist[ToxEnvRunResult]
is_coloredbool	verbosityintc                >   dfd}g g }}|D ]}|                     |j        t          j        k    p|j                   |                     |j                   dk    rd	 |j        D             ng }|r#d
d                    d |D                        dnd}	|j        t          |          z
  }
t          |          \  }}d|j         d| d|j        d|	r	d|
dd|	 nd d} |||           t          j                    | z
  }t          |          ot          |           }|r' |t          j        d|dd           t          j        S  |t          j        d|dd           t%          |          dk    r|d         j        s|d         j        ndS dS )Ncolor_re   messagerD   r,   r-   c                ^    r)t          r| nd | rt          j        nd            d S d S )N )printr   RESET)rg   rh   rb   rd   s     r7   _printzreport.<locals>._printz   sQ     	`z1VVr^7^*<\DJJZ\^^_____	` 	`r9      c                    g | ]	}|j         
S r@   )elapsed).0os     r7   
<listcomp>zreport.<locals>.<listcomp>   s    ???Qqy???r9   z+cmd[,c              3     K   | ]}|d V  	dS ).2fNr@   )rq   is     r7   	<genexpr>zreport.<locals>.<genexpr>   s&       I IA I I I I I Ir9   ]rj   z  z: z (rv   z=setup[z	 seconds)z  congratulations :) (z  evaluation failed :( (   r   )rg   re   rh   rD   r,   r-   )appendcoder   OKignore_outcomeskippedoutcomesjoindurationsum_get_outcome_messagenametime	monotonicallr   GREENREDlen)r^   r`   rb   rd   rm   
successfulr   runduration_individualextrasetupmsgcoloroutr   all_goods     ``            r7   reportr   y   s   ` ` ` ` ` ` ` bJ  #(gj0FC4FGGGs{###CLPQ>>??#,????WYPckL I I5H I I IIILLLLiks#6777)#..
Uq38qqsqqclqqY^8f8U%8U8U8Ue8U8U8Udfqqquc~%'H:3s7||#3H tzKHKKKKLLLz
F48GGGGGHHH
4yyA~~#'7?:tAw||:2r9   r   r   tuple[str, int]c                    | j         rdt          j        }}nX| j        t          j        k    rdt          j        }}n4| j        rd| j         t          j        }}nd| j         t          j        }}||fS )NSKIPr~   zIGNORED FAIL code z
FAIL code )	r   r   YELLOWr}   r   r~   r   r   r   )r   r   r   s      r7   r   r      sv    
{ 7T[U	WZ		4:U		 74#(44dkU,#(,,dhU:r9   stater"   max_workers
int | Nonehas_spinnerlivec                `   t                      t                      }}g }i }| j                                         t          | j                                                  }|D ]4}	t          t          | j        |	                                                    5d\  }
}	 t          || t          |                    }t          t          d| ||||||||f	          }|                                 	 |                                 nd# t          $ rV t          t           t"          j                  d}}
d|_        t(                              dt-          j                               |                                 t3          t          |                                                    D ]E\  }}|                                }|du r(|                                s|                                 F|                                 t?          |dd           }|<|                                 r(|!                                 |"                                 |                                 Y nw xY wd |D             fd	|D             }tG          t?          | j$        j%        d
d           | j&                   tO          | j$        j%        j        || j$        j%        j(        | j$        j%        j)                  }|rt          t           |
           n# d |D             fd	|D             }tG          t?          | j$        j%        d
d           | j&                   tO          | j$        j%        j        || j$        j%        j(        | j$        j%        j)                  }|rt          t           |
           w w xY w|S )N)NFztox-interrupt)targetr   argsTFz)[%s] KeyboardInterrupt - teardown started_tstate_lockc                    i | ]
}|j         |S r@   )r   )rq   rs     r7   
<dictcomp>zexecute.<locals>.<dictcomp>   s    222Qqvq222r9   c                     g | ]
}|         S r@   r@   )rq   envname_to_runs     r7   rs   zexecute.<locals>.<listcomp>   s    1Z1Z1Zs+c2B1Z1Z1Zr9   result_json)*r   envsensure_only_run_env_is_activelistiterr   r   mark_active
ToxSpinnerr   r   _queue_and_waitr^   r   KeyboardInterruptr   r   r   SIG_IGNprint_reportloggererrorosgetpidsetreverseditemscanceldone	interruptwaitgetattrlockedrelease_stopr   confoptions_journalr   rb   rd   )r   r   r   r   r   r   resultsfuture_to_envto_run_listr   previoushas_previousspinnerthreadfuturetox_envcanceledlockordered_results	exit_coder   s                       @r7   executer      sp   gguwwtI%'G;=M	J,,...!%*//"3"344K 8 8Y
4())557777(Hl*%[%[1A1ABB" g}i{\ceij
 
 

 		KKMMMM  	 	 	%+FH4D%E%EtlH#(G LLDbikkRRRMMOOO#+D1D1D1F1F,G,G#H#H ( (!==??u$$V[[]]$%%'''IIKKK6>488DDKKMMKKMMMMM%	( 32'2221Z1Z1Z1Zk1Z1Z1Zgej0-FFWWWJ$J)J(	
 
	  	%68$$$ 32'2221Z1Z1Z1Zk1Z1Z1Zgej0-FFWWWJ$J)J(	
 
	  	%68$$$$	%s3   AL
 1D L
 EI(%L
 'I((L
 
B!N+c                  (     e Zd Zd fd	ZddZ xZS )r   enabledrc   r   r"   totalre   r,   r-   c                    t                                          ||j        j        j        |j        j        j        |           d S )N)r   coloredstreamr   )super__init__r   r   rb   _optionslog_handlerstdout)r5   r   r   r   	__class__s       r7   r   zToxSpinner.__init__   sJ    J&1>-4	 	 	
 	
 	
 	
 	
r9   resultr   successc                b    |r|j         r| j        n| j        n| j        } ||j                   d S r:   )r   skipsucceedfailr   )r5   r   r   r   s       r7   update_spinnerzToxSpinner.update_spinner   s9    BIXV^=		tyV[r9   )r   rc   r   r"   r   re   r,   r-   )r   r   r   rc   r,   r-   )r=   r>   r?   r   r   __classcell__)r   s   @r7   r   r      sQ        
 
 
 
 
 
       r9   r   r   	list[str]r   r   %dict[Future[ToxEnvRunResult], ToxEnv]r   r   r   r   c	           	     6   	 | j         5  |t          |          n|}t                      }	t          | ||	          }
dfd}	 t	          |d          }g }	 |D ]}t          t          | j        |                   }|                                rQ|	                                 t                      }t          |d	d
g t                    }|                    |           n|                    ||          }|||<   |sd }nt          t!          |                    }|                    |          }	 |                                }nI# t&          $ r< |	                                 |j        j        }t          |d	dg t                    }Y nw xY w|                    |           |	                    |j                   t          |
g           }| o| }|rd	_        |t3          ||            |rnn## t4          $ r t7          j        d            w xY w	 |                    d           n# |                    d           w xY w	 d d d            n# 1 swxY w Y   	 |D ]!}| j        |         	                                 "	 |                                 d S # |                                 w xY w# 	 |D ]!}| j        |         	                                 "	 |                                 w # |                                 w xY wxY w)Nr   r   r,   r   c                                         | j        j                   t          | j        j        pj        j        du           S )NF)suspend_display)addr   r   r   parsedrT   rV   )r   r   r   r   s    r7   _runz_queue_and_wait.<locals>._run   sM    GL-...N*Ign.I$(EM   r9   z
tox-driver)r   thread_name_prefixTF)r   r   r}   r   r   zInternal Error)r   )r   r   r,   r   )r   r   r   ready_to_run_envsr
   r   r   r   is_setteardownr	   r   r    
set_resultsubmitnextr   popr   r   r   r   r|   r   r   _handle_one_run_doneBaseExceptionlogging	exceptionshutdown)r   r   r   r   r   r   r   r   r   	completedenvs_to_run_generatorr   executorenv_listr   tox_env_to_runr   resr   tox_env_doner   	final_runr   s          ``             @r7   r   r      s   G. >	- >	-.9.A#k***{K"%%%I$5e[)$T$T!       1--+Zfggg&((' 	? 	?)-iC)I)I$++-- K*33555>DhhF"1sEPR]_jw"x"x"xC"--c2222%-__T>%J%JF0>f--( 39=!%l=&A&A!B!B'4'8'8'@'@%+]]__FF- 	 	 	(11333#/#4#9D%4%)(-%')+)6& & &FFF	  v...!fk222#$92>>H$, B]1BI  5/4,),VWeTJJJ  Q(P     !"2333  !!t!,,,,!!t!,,,,,}>	- >	- >	- >	- >	- >	- >	- >	- >	- >	- >	- >	- >	- >	- >	-@	# , ,
4 ))++++, HHJJJJJDHHJJJJ	# , ,
4 ))++++, HHJJJJDHHJJJJs   	K ;I#
C/H :EH AFH FA*H ?H;  H  H;$I#;II#K #I''K *I'+K /$J* *K L$K?*L?LLr   c                `   | j         t          j        k    }|                    | |           t	          t
          |j        | j                           }|j        r|| j         | j	        d|j        d<   |du r|j
        j        j        du r|                                }g }|j        D ]-}|                                }	|	|                    |	           .|r|j
        d         rK|D ]!}	|j        j                            |	           "|'|j        j                            |           d S d S d S d S d S )N)r   r   r   r   Fparallel_show_output)r}   r   r~   r   r   r   r   r   journalr   r   r   parallel_liveclose_and_read_out_errpackage_envsr|   r   r   write_out_err)
r   r   r   r   r   r   out_errpkg_out_err_listpackage_envpkg_out_errs
             r7   r   r   =  sh    kWZ'G67+++9ej566G 
%
 %
!
 u}}+9UBB0022"/ 	5 	5K%<<>>K& ''444 	B','=> 	B/ F F*88EEEE"*88AAAAA }BB	B 	B #"r9   to_runr   set[str]Iterator[list[str]]c              #     K   t          | |          \  }}|rIg }g }|D ]8}||         |z
  r|                    |           #|                    |           9|}|V  |GdS dS )z'Generate tox environments ready to run.N)	run_orderr|   )r   r  r   ordertodoready_to_run	new_orderr   s           r7   r   r   Z  s      E6**KE4
 	"$!	 	) 	)CCy9$ )  %%%%##C((((  	 	 	 	 	r9   %tuple[list[str], dict[str, set[str]]]c                   t          |          }i }|D ]\}t          t          | j        |                   }t          t          t          |j        d                   j                  }||z  ||<   ]t          |          }||fS )NrL   )r   r   r   r   r   r   r   )r   r  
to_run_setr  r   run_envrL   r  s           r7   r  r  i  s~    VJ "D ) )y%*S/22d7GL$;<<ABB(S		#D))E$;r9   )r&   r   rI   rD   r,   r-   )
r^   r_   r`   ra   rb   rc   rd   re   r,   re   )r   r   r,   r   )
r   r"   r   r   r   rc   r   rc   r,   re   )r   r"   r   r   r   ra   r   r   r   r   r   r   r   r   r   r   r   rc   r,   r-   )
r   r   r   r   r   r"   r   rc   r,   r-   )r   r"   r  r   r   r  r,   r  )r   r"   r  r   r,   r  )C__doc__
__future__r   r   r   r   argparser   r   r   r   concurrent.futuresr   r	   r
   r   pathlibr   r   r   r   	threadingr   r   typingr   r   r   r   r   r   coloramar   tox.config.typesr   tox.executer   tox.journalr   tox.session.cmd.run.singler   r   tox.tox_env.runnerr   tox.util.graphr   tox.util.spinnerr    r!   tox.session.stater"   tox.tox_env.apir#   r%   rB   r]   r   r   	getLoggerr=   r   r   r   r   r   r   r  r@   r9   r7   <module>r2     s   ? ? " " " " " "  				  E E E E E E E E E E E E W W W W W W W W W W W W       + + + + + + + + + + # # # # # # # # I I I I I I I I I I I I I I I I       $ $ $ $ $ $       % % % % % % ? ? ? ? ? ? ? ? ( ( ( ( ( ( 2 2 2 2 2 2 3 3 3 3 3 3 3 3 '''''''&&&&&&- - - - -6 - - -, , , , ,6 , , ,$8
 8
 8
 8
v   6	 	 	 	 
	8	$	$4 4 4 4n       R R R RjB B B B:        r9   