§
    ø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Ý Ð&cÐY^Ð&cÐ&cÐ&cÑdÔdÐdÝ�	˜4œ9 eÑ,Ô,Ð,Ð,Ð,ó    ©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ˆØ�{Š{‰}Œ}ð 	@Ý ¨Ð&>Ð&>Ð&>Ñ?Ô?Ð?Ø�|Š|‰~Œ~ð 	?Ý ¨Ð&=Ð&=Ð&=Ñ>Ô>Ð>Ý�	˜4œ9 dÑ+Ô+Ð+Ð+Ð+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ØÝ�T”NÝ'Øð 	ñ 	
ô 	
ð 	
ð Ð(Ð(Ð(Ø×ÒØØØ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Ð1�V�V¨rÐ^°7Ð^È*Ð<\½D¼J¸JÐZ\Ð^Ð^Ñ_Ô_Ð_Ð_Ð_ð	`ð 	`r9   é   c                ó   — g | ]	}|j         ‘Œ
S r@   )Úelapsed)Ú.0Úos     r7   ú
<listcomp>zreport.<locals>.<listcomp>‚   s   € Ð?Ð?Ð?¨Q˜qœyÐ?Ð?Ð?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Øð ð ˆØ×Ò˜#œ(¥g¤jÒ0ÐF°CÔ4FÑGÔGÐGØ�Š�s”{Ñ#Ô#Ð#ØCLÐPQÂ>À>Ð?Ð?°#´,Ð?Ñ?Ô?Ð?ÐWYÐØPcÐkÐL˜ŸšÐ IÐ IÐ5HÐ IÑ IÔ IÑIÔIÐLÐLÐLÐLÐikˆØ”�sÐ#6Ñ7Ô7Ñ7ˆÝ)¨#Ñ.Ô.‰
ˆˆUØq�3”8ÐqÐq˜sÐqÐq c¤lÐqÐqÐY^Ð8fÐ8UÀ%Ð8UÐ8UÐ8UÈeÐ8UÐ8UÐ8UÐdfÐqÐqÐqˆØˆˆu�cÑÔÐÐåŒ~ÑÔ %Ñ'€HÝ�:‰ŒÐ3¥s¨7¡|¤|Ð#3€HØð Øˆ�tŒzÐK°HÐKÐKÐKÐKÑLÔLÐLÝŒzÐØ
€F�4Œ8ÐG°ÐGÐGÐGÐGÑHÔHÐHÝ
ˆ4�y„y�A‚~€~Ø#'¨¤7¤?Ð:ˆt�AŒwŒ|ˆ|¸Ð:Øˆ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ˆˆØ	Œ•W”ZÒ	Ð	Ø�4œ:ˆUˆˆØ	Ô	ð 7Ø4¨#¬(Ð4Ð4µd´kˆUˆˆà, #¤(Ð,Ð,­d¬hˆUˆØ�ˆ:Ð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Ð2 Q�q”v˜qÐ2Ð2Ð2r9   c                ó    •— g | ]
}‰|         ‘ŒS r@   r@   )rq   ÚenvÚname_to_runs     €r7   rs   zexecute.<locals>.<listcomp>Ë   s   ø€ Ð1ZÐ1ZÐ1ZÀs°+¸cÔ2BÐ1ZÐ1ZÐ1Zr9   Ú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  ø€ Ý‘g”g�u™wœwˆt€IØ%'€GØ;=€MØ	„J×,Ò,Ñ.Ô.Ð.Ý! %¤*§/¢/Ñ"3Ô"3Ñ4Ô4€KØð 8ð 8ˆÝ�Y˜œ
 4Ô(Ñ)Ô)×5Ò5Ñ7Ô7Ð7Ð7Ø(Ñ€Hˆlð*%Ý˜[¨%µ°[Ñ1AÔ1AÑBÔBˆÝÝ"Ø Ø˜ g¨}¸iÈÈ{Ð\cÐeiÐjð
ñ 
ô 
ˆð
 	�Š‰Œˆð	Ø�KŠK‰MŒMˆM‰MøÝ ð 	ñ 	ð 	Ý%+­FµHÔ4DÑ%EÔ%EÀt�lˆHØ#(ˆGÔ Ý�LŠLÐDÅbÄiÁkÄkÑRÔRÐRØ�MŠM‰OŒOˆOå#+­D°×1DÒ1DÑ1FÔ1FÑ,GÔ,GÑ#HÔ#Hð (ð (‘�˜Ø!Ÿ=š=™?œ?�à˜uÐ$Ð$¨V¯[ª[©]¬]Ð$Ø×%Ò%Ñ'Ô'Ð'øØ�IŠI‰KŒKˆKå˜6 >°4Ñ8Ô8ˆDØÐ D§K¢K¡M¤MÐØ—’‘”�à—’‘”�Ø�KŠK‰MŒMˆMˆMˆMð%	øøøð( 3Ð2¨'Ð2Ñ2Ô2ˆØ1ZÐ1ZÐ1ZÐ1ZÈkÐ1ZÑ1ZÔ1Zˆå•g˜eœjÔ0°-ÀÑFÔFÈÌÑWÔWÐWåØŒJÔÔ$ØØŒJÔÔ)ØŒJÔÔ(ñ	
ô 
ˆ	ð ð 	%Ý•6˜8Ñ$Ô$Ð$øøð 3Ð2¨'Ð2Ñ2Ô2ˆØ1ZÐ1ZÐ1ZÐ1ZÈkÐ1ZÑ1ZÔ1Zˆå•g˜eœjÔ0°-ÀÑFÔFÈÌÑWÔWÐWåØŒJÔÔ$ØØŒJÔÔ)ØŒJÔÔ(ñ	
ô 
ˆ	ð ð 	%Ý•6˜8Ñ$Ô$Ð$Ð$ð	%øøøàÐ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ÐX˜Vœ^Ð=�”	�	°´°ÈtÌyˆØˆˆ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 }n¿t          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   ø€ Ø—’˜GœLÔ-Ñ.Ô.Ð.ÝØØ”NÔ*ÐI¨g¬nÔ.IØ$(¨E Mðñ ô ð 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Ý$5°e¸[È)Ñ$TÔ$TÐ!ðð ð ð ð ð ð ð ð1-Ý-¸+ÐZfÐgÑgÔg�Ø&(�ð(Ø'ð 	?ð 	?˜Ý)-­i¸¼ÀC¼Ñ)IÔ)I˜Ø$×+Ò+Ñ-Ô-ð KØ*×3Ò3Ñ5Ô5Ð5Ý>D¹h¼h˜FÝ"1°sÀEÐPRÐ]_ÕjwÐ"xÑ"xÔ"x˜CØ"×-Ò-¨cÑ2Ô2Ð2Ð2à%-§_¢_°T¸>Ñ%JÔ%J˜FØ0>˜ fÑ-Ð-à(ð 3Ø9=˜˜å!%¥l°=Ñ&AÔ&AÑ!BÔ!B˜Ø'4×'8Ò'8¸Ñ'@Ô'@˜ðØ%+§]¢]¡_¤_˜F˜FøÝ-ð 	ð 	ð 	Ø(×1Ò1Ñ3Ô3Ð3Ø#/Ô#4Ô#9˜DÝ%4Ø%)Ø(-Ø%'Ø)+Ý)6ð&ñ &ô &˜F˜F˜Fð	øøøð  Ÿš vÑ.Ô.Ð.Ø!Ÿš f¤kÑ2Ô2Ð2å#Ð$9¸2Ñ>Ô>�Hà$, Ð B°]Ð1B�IØ ð 5Ø/4˜Ô,ØÐ)Ý,¨V°W¸eÀTÑJÔJÐJØ ð ØñQ(ðP øå ð ð ð ÝÔ!Ð"2Ñ3Ô3Ð3Øðøøøð ð ×!Ò! tÐ!Ñ,Ô,Ð,Ð,ø�×!Ò! tÐ!Ñ,Ô,Ð,Ð,øøøÐ,ð}>	-ð >	-ð >	-ñ >	-ô >	-ð >	-ð >	-ð >	-ð >	-ð >	-ð >	-øøøð >	-ð >	-ð >	-ð >	-ð@	à#ð ,ð ,�Ø”
˜4Ô ×)Ò)Ñ+Ô+Ð+Ð+ð,ð �HŠH‰JŒJˆJˆJˆJøˆD�HŠH‰JŒJˆJˆJøøøøð	à#ð ,ð ,�Ø”
˜4Ô ×)Ò)Ñ+Ô+Ð+Ð+ð,ð �HŠH‰JŒJˆJˆJøˆD�HŠH‰JŒJˆJˆJøøøøøøs£   …	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  € ð Œk�WœZÒ'€GØ×Ò˜6 7Ñ+Ô+Ð+Ý•9˜eœj¨¬Ô5Ñ6Ô6€GØ„ð 
àØœØœð%
ð %
ˆŒ˜Ñ!ð
 ˆu€}€}˜œÔ+Ô9¸UÐBÐBØ×0Ò0Ñ2Ô2ˆØÐØ"Ô/ð 	5ð 	5ˆKØ%×<Ò<Ñ>Ô>ˆ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¨   è è € å˜E 6Ñ*Ô*�K€Eˆ4Ø
ð 	Ø"$ˆØ!ˆ	Øð 	)ð 	)ˆCØ�CŒy˜9Ñ$ð )Ø× Ò  Ñ%Ô%Ð%Ð%à×#Ò# 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ˆÝ•d�7 G¤L°Ô$;Ñ<Ô<Ô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   