
    ie9                    @   % S r SSKJr  SSKrSSKJr  SSKJr  SSKJr  SSKrSSK	r	SSK
r
SSKrSSKrSSKJr  SSKJr  SS	KJr  SS
KJr  SSKrSSKJr  SSKrSSKr SSKJr   " S S5      rS*S jr " S S\	R6                  5      r " S S5      r " S S5      r    S+S jr " S S\5      r S,S jr!S-S jr"\#S:X  GaK  \$r$S\%S'   \$RM                  5       u  r'r(r)r*\*cg  \
RV                  " 5       r,\RZ                  R]                  S\,5        \,\
R^                  -   \
R`                  Rc                  S S!5      -   \
R`                  S '   O\*\l-        \'S"   \
R`                  S#'   \'S$   \
R`                  S%'   \2" \'S&   5      \
R`                  S''   \" \(S5      r3\"" \3\)Rc                  S5      5        \
RZ                  Ri                  \'S(   S   5      \3Rj                  l6        \'\3l'        0 \3l7        \" \3\$5      r8\3Rr                  Ru                  \3S)9  gg! \ a	    S*S jr GNf = f).a/  
This module is executed in remote subprocesses and helps to
control a remote testing session and relay back information.
It assumes that 'py' is importable and does not have dependencies
on the rest of the xdist code.  This means that the xdist-plugin
needs not to be installed in remote environments.
    )annotationsN)	Generator)Iterable)Sequence)Any)Literal)	TypedDict)Union)_prepareconfig)setproctitlec                    g N titles    K/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/xdist/remote.pyr   r   #   s        c                  H    \ rS rSrSrSS.SS jjrSS jrSS jrSS jrS	r	g
)Producer'   z
Simplified implementation of the same interface as py.log, for backward compatibility
since we dropped the dependency on pylib.
Note: this is defined here because this module can't depend on xdist, so we need
to have the other way around.
Tenabledc                   Xl         X l        g r   )namer   )selfr   r   s      r   __init__Producer.__init__/   s    	r   c                h    [        U 5      R                   SU R                  < SU R                   S3$ )N(z
, enabled=))type__name__r   r   r   s    r   __repr__Producer.__repr__3   s.    t*%%&a		}Jt||nANNr   c                    U R                   (       a0  [        SU R                   S3/UQ70 UDS[        R                  0D6  g g )N[]file)r   printr   sysstderr)r   aks      r   __call__Producer.__call__6   s6    <<Adii["=Q=!=#**= r   c                4    [        U 5      " XR                  S9$ )Nr   )r!   r   )r   r   s     r   __getattr__Producer.__getattr__:   s    Dz$55r   )r   r   N)r   strr   boolreturnNone)r6   r4   )r-   r   r.   r   r6   r7   )r   r4   r6   r   )
r"   
__module____qualname____firstlineno____doc__r   r$   r/   r2   __static_attributes__r   r   r   r   r   '   s!     6: O>6r   r   c                <     [        U 5        g ! [         a     g f = fr   )r   	Exceptionr   s    r   worker_titler?   >   s!    U s    
c                      \ rS rSrSrSrg)MarkerF   r   r   N)r"   r8   r9   r:   SHUTDOWNr<   r   r   r   rA   rA   F   s    Hr   rA   c                      \ rS rSrSr\\\\R                     4   r
S
S jrSS jrSS jrSS jr\R                   SS j5       rSrg	)	TestQueueJ   zcA simple queue that can be inspected and modified while the lock is held via the ``lock()`` method.c                    [         R                  " 5       U l        UR                  5       U l        UR                  5       U l        g r   )collectionsdeque_itemsRLock_lockEvent_has_items_event)r   	execmodels     r   r   TestQueue.__init__O   s/    9D9J9J9L__&
 ) 1r   c                     U R                  5        nU(       a  UR                  5       sS S S 5        $  S S S 5        U R                  R                  5         MV  ! , (       d  f       N*= fr   )lockpopleftrN   wait)r   locked_itemss     r   getTestQueue.getT   sM    '//1   !!&&( s   A
A&c                z    U R                  5        nUR                  U5        S S S 5        g ! , (       d  f       g = fr   )rR   append)r   itemrU   s      r   putTestQueue.put\   s%    YY[L% [[s   ,
:c                    U R                  5          [        R                  " U5      U l        S S S 5        g ! , (       d  f       g = fr   )rR   rH   rI   rJ   )r   iterables     r   replaceTestQueue.replace`   s'    YY[%++H5DK [[s	   6
Ac              #    #    U R                       U R                  v   U R                  (       a  U R                  R                  5         OU R                  R	                  5          S S S 5        g ! U R                  (       a  U R                  R                  5         f U R                  R	                  5         f = f! , (       d  f       g = f7fr   )rL   rJ   rN   setclearr#   s    r   rR   TestQueue.lockd   s     ZZ2kk!;;))--/))//1 Z ;;))--/))//1 Zs4   CB:A/AB:&	C/AB77B::
CC)rN   rJ   rL   N)rO   zexecnet.gateway_base.ExecModel)r6   Item)rZ   re   r6   r7   )r^   zIterable[Item]r6   r7   )r6   z"Generator[collections.deque[Item]])r"   r8   r9   r:   r;   r
   intr   rA   rC   re   r   rV   r[   r_   
contextlibcontextmanagerrR   r<   r   r   r   rE   rE   J   sK    mgfoo../D2
)&6 2 2r   rE   c                  P   \ rS rSrSS jrSS jr\R                  SS j5       r\R                  SS j5       r	\R                  " SS9SS j5       r
\R                  SS	 j5       r    SS
 jrSS jr\R                  SS j5       rSS jr      S S jr\R                  SS j5       r\R                        S!S j5       r\R                        S!S j5       r\R                  S"S j5       r\R                  S#S j5       r\R                            S$S j5       rSrg)%WorkerInteractorp   c                v   Xl         UR                  nUR                  SS5      U l        US   U l        [        SU R                   3UR                  R                  S9U l        X l	        [        U R                  R                  R                  5      U l        S U l        UR                  R!                  U 5        g )Nworkerid?
testrunuidzworker-r   )configworkerinputrV   rm   ro   r   optiondebuglogchannelrE   gatewayrO   torunnextitem_indexpluginmanagerregister)r   rp   ru   rq   s       r   r   WorkerInteractor.__init__q   s    &,&8&8#
C8%l3gdmm_5v}}?R?RSt||33==>
EI%%d+r   c                `    U R                  SX5        U R                  R                  X45        g )Nsending)rt   ru   send)r   r   kwargss      r   	sendeventWorkerInteractor.sendevent|   s$    D)4.)r   c                    [        U5      nUR                  S5       H  nU R                  SU5        M     [        R	                  SUS9  g )N
zIERROR>internal_error)formatted_error)r4   splitrt   
interactorr   )r   excreprr   lines       r   pytest_internalerror%WorkerInteractor.pytest_internalerror   sB    g,#))$/DHHY% 0-Or   c                D    Xl         [        5       nU R                  SUS9  g )Nworkerready)
workerinfo)sessiongetinfodictr   )r   r   r   s      r   pytest_sessionstart$WorkerInteractor.pytest_sessionstart   s     ]
}<r   T)hookwrapperc              #     #    U R                   R                  n[        U5      US'   U R                  R                  US'   U R                  R
                  US'   S v   U R                  SUS9  g 7f)N
exitstatus
shouldfail
shouldstopworkerfinished)workeroutput)rp   r   rf   r   r   r   r   )r   r   r   s      r   pytest_sessionfinish%WorkerInteractor.pytest_sessionfinish   s^     '+{{'?'?%(_\"%)\\%<%<\"%)\\%<%<\"'lCs   A,A.c                &    U R                  S5        g )Ncollectionstartr   r#   s    r   pytest_collection"WorkerInteractor.pytest_collection   s    ()r   c                >   U[         R                  L a*  U R                  R                  [         R                  5        g Uu  p#U R	                  SX#5        US:X  a(  US    H  nU R                  R                  U5        M      g US:X  aK  [        [        U R                  R                  5      5       H  nU R                  R                  U5        M      g US:X  a*  U R                  R                  [         R                  5        g US:X  a  U R                  US   5        g g )Nzreceived commandruntestsindicesruntests_allshutdownsteal)
rA   rC   rw   r[   rt   rangelenr   itemsr   )r   commandr   r   is        r   handle_commandWorkerInteractor.handle_command   s     foo%JJNN6??+#T2:I&

q! '^#3t||1123

q! 4ZJJNN6??+W_JJvi() r   c                N  ^ [        U5      mU R                  R                  5        n[        U4S jU 5       5      n[	        U5      [	        T5      :X  a&  U R                  R                  U4S jU 5       5        O/ nSSS5        U R                  SWS9  g! , (       d  f       N= f)z
Remove tests from the queue.

Removes either all requested tests, or none, if some of these tests
are not in the queue (for example, if they were processed already).

:param indices: indices of the tests to remove.
c              3  6   >#    U  H  oT;   d  M
  Uv   M     g 7fr   r   .0rZ   requested_sets     r   	<genexpr>)WorkerInteractor.steal.<locals>.<genexpr>   s     Q<4=;P$$<   		c              3  6   >#    U  H  oT;  d  M
  Uv   M     g 7fr   r   r   s     r   r   r      s      #%1T5NDD\r   Nunscheduled)r   )rb   rw   rR   listr   r_   r   )r   r   locked_queuestolenr   s       @r   r   WorkerInteractor.steal   s     GZZ__,Q<QQF 6{c-00

"" #%1#    	}f5 s   AB
B$c                   U R                  S5        U R                  R                  U R                  [        R
                  S9  U R                  R                  5       U l        U R                  [        R
                  LaS  U R                  5         UR                  (       d  UR                  (       a   gU R                  [        R
                  La  MS  g)Nzentering main loop)	endmarkerT)rt   ru   setcallbackr   rA   rC   rw   rV   rx   run_one_testr   r   )r   r   s     r   pytest_runtestloop#WorkerInteractor.pytest_runtestloop   s    %&  !4!4 P"jjnn.!!8!!W%7%7	 !!8 r   c                   [        U R                  [        5      (       d   eU R                  U l        U R                  R                  5       U l        U R                  R                  nXR                     nU R                  [        R                  L a  S nOU R                  c   eXR                     n[        SUR                  -  5        [        R                  " 5       nU R                  R                  R!                  X#S9  [        R                  " 5       U-
  n[        S5        U R#                  SU R                  US9  g )Nz[pytest-xdist running] %s)rZ   nextitemz[pytest-xdist idle]runtest_protocol_complete)
item_indexduration)
isinstancerx   rf   r   rw   rV   r   r   rA   rC   r?   nodeidtimeperf_counterrp   hookpytest_runtest_protocolr   )r   r   rZ   r   startr   s         r   r   WorkerInteractor.run_one_test   s    $--s3333--"jjnn.""__%&//1H&&222001H04;;>?!!#00d0N$$&.*+'DOOh 	 	
r   c                   UR                  S5      (       a  U H  n[        5       nUR                  S5       Ha  n[        UR                  5      S:  a  UR                  S   OUR
                  R                  SS5      nUR                  [        U5      5        Mc     U(       d  M  UR                   SSR                  [        U5      5       3Ul        M     g g )N	loadgroupxdist_groupr   r   default@_)getvaluerb   iter_markersr   argsr   rV   addr4   r   joinsorted_nodeid)r   rp   r   rZ   gnamesmarkr   s          r   pytest_collection_modifyitems.WorkerInteractor.pytest_collection_modifyitems   s     ??;''#&5 --m<D tyy>A- 		!![[__VY? 
 JJs4y) = "&++a0H/IJ  (r   c                    U R                  S[        U R                  R                  5      UR                   Vs/ s H  o"R
                  PM     snS9  g s  snf )Ncollectionfinish)topdirids)r   r4   rp   rootpathr   r   )r   r   rZ   s      r   pytest_collection_finish)WorkerInteractor.pytest_collection_finish   sE    t{{++,)077 	 	
 8s   Ac                $    U R                  SXS9  g )Nlogstartr   locationr   r   r   r   s      r   pytest_runtest_logstart(WorkerInteractor.pytest_runtest_logstart  s     	z&Dr   c                $    U R                  SXS9  g )N	logfinishr   r   r   s      r   pytest_runtest_logfinish)WorkerInteractor.pytest_runtest_logfinish  s     	{6Er   c                T   U R                   R                  R                  U R                   US9nU R                  US'   U R                  US'   U R
                  US'   U R                  R                  U R                     R                  UR                  :X  d   eU R                  SUS9  g )Nrp   reportr   	worker_idtestrun_uid
testreportdata)
rp   r   pytest_report_to_serializabler   rm   ro   r   r   r   r   r   r   r   s      r   pytest_runtest_logreport)WorkerInteractor.pytest_runtest_logreport  s    {{==;;v > 
 "__\ MM["oo]||!!$//299V]]JJJ|$/r   c                    UR                   (       d?  U R                  R                  R                  U R                  US9nU R	                  SUS9  g g )Nr   collectreportr   )passedrp   r   r   r   r   s      r   pytest_collectreport%WorkerInteractor.pytest_collectreport#  sK     }};;##AA{{6 B D NN?N6	 r   c                <    U R                  S[        U5      UUUS9  g )Nwarning_recorded)warning_message_datawhenr   r   )r   serialize_warning_message)r   warning_messager  r   r   s        r   pytest_warning_recorded(WorkerInteractor.pytest_warning_recorded,  s)     	!:?!K 	 	
r   )	ru   rp   r   rt   rx   r   ro   rw   rm   N)rp   pytest.Configru   execnet.Channelr6   r7   )r   r4   r   objectr6   r7   )r   r  r6   r7   )r   pytest.Sessionr6   r7   )r   rf   r6   zGenerator[None, object, None])r6   r7   )r   z5tuple[str, dict[str, Any]] | Literal[Marker.SHUTDOWN]r6   r7   )r   zSequence[int]r6   r7   )r   r  r6   r5   )rp   r  r   zlist[pytest.Item]r6   r7   )r   r4   r   ztuple[str, int | None, str]r6   r7   )r   zpytest.TestReportr6   r7   )r   zpytest.CollectReportr6   r7   )
r  warnings.WarningMessager  r4   r   r4   r   ztuple[str, int, str] | Noner6   r7   )r"   r8   r9   r:   r   r   pytesthookimplr   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r<   r   r   r   rj   rj   p   s   	,* __P P __= =
 __&D 'D __* **L*	**60 __ 
2KK !K 
	K( __
 
 __EE .E 
	E E __FF .F 
	F F __0 0 __7 7 __
0
 
 	

 .
 

 
r   rj   c                2   [        U R                  [        5      (       a  [        U R                  5      R                  n[        U R                  5      R
                  n[        U R                  5      n [        R                  " U R                  R                  5        U R                  R                  nOU R                  nS nS nS nU R                  (       a-  U R                  R                  nU R                  R
                  nOS nS nUUUUUUS.nU R                   H1  nUS;   a  M  [        X5      n	 [        R                  " U	5        XU'   M3     U$ ! [        R                   a    S n Nf = f! [        R                   a    [        U	5      Xx'    Mw  f = f)N)message_strmessage_modulemessage_class_namemessage_argscategory_modulecategory_class_name)messagecategory)r   r  Warningr!   r8   r"   r4   execnetdumpsr   	DumpErrorr  _WARNING_DETAILSgetattrrepr)
r  r  r  r  r  r  r  result	attr_nameattrs
             r   r  r  =  s{    /))733o556AA!/"9"9:CC/112	8MM/11667 +2277L%--!)22==-66??" #(0$*2F %55	//2	%MM$ !%9 6 MK    	 L	 B    	+ $T
F	+s$   4*E 5E1E.-E.1!FFc                  f    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   Srg)
WorkerInfoip  r4   versionztuple[int, int, int, str, int]version_infosysplatformplatform
executablecwdidzexecnet.XSpecspecr   N)r"   r8   r9   r:   __annotations__r<   r   r   r   r&  r&  p  s-    L00MO	HG
r   r&  c            	         SS K n [        [        R                  [	        [        R
                  5      [        R                   U R                  5       [        R                  [        R                  " 5       S9$ )Nr   )r'  r(  r)  r*  r+  r,  )	r*  dictr+   r'  tupler(  r+  osgetcwd)r*  s    r   r   r   {  sJ    3++,LL""$>>IIK r   basetempc                6   U R                  S5      S:H  U R                  l        SU R                  l        SU R                  l        SU R                  l        SU R                  l        S U R                  l        S U R                  l        XR                  l	        g )Ndistr   Fno)
r   rr   r   
looponfailusepdbr7  distloadnumprocessesmaxprocessesr5  )rp   r5  s     r   setup_configr>    sn    $oof5DFMM$FMM FMMFMM"FMM!%FMM!%FMM%MMr   __channelexec__r  ru   
PYTHONPATH ro   PYTEST_XDIST_TESTRUNUIDrm   PYTEST_XDIST_WORKERworkercountPYTEST_XDIST_WORKER_COUNTmainargv)rp   )r   r4   r6   r7   )r  r  r6   zdict[str, Any])r6   r&  )rp   r  r5  z
str | Noner6   r7   );r;   
__future__r   rH   collections.abcr   r   r   rg   enumr3  r+   r   typingr   r   r	   r
   warnings_pytest.configr   r  r  r   ImportErrorr   r?   EnumrA   rE   rj   r  r&  r   r>  r"   ru   r/  receiverq   r   option_dictchange_sys_pathr4  
importpathpathinsertpathsepenvironrV   r4   rp   basename_parserprogr   r   r   pytest_cmdline_mainr   r   r   <module>r[     s   #  % $ $   	 
       )  )6 6.TYY #2 #2LJ
 J
Z0,00f 
&   &G_&6=oo6G3K{OYY[
:&#bjjnn\2&FF 	

<  #,7,EBJJ()(3J(?BJJ$%.1+m2L.MBJJ*+D$'F45''**;z+B1+EFFNN$FF!&'2J
KK##6#21 !e  s   H HH