
    G j,h                       % 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rS SKJ	r	J
r
  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJrJrJrJr  S S	KJr  S SKrS SKrS
SKJrJrJ r J!r!J"r"J#r#J$r$J%r%  S
SK&J'r'J(r(  S
SK)J*r*  S
SK+J,r,J-r-J.r.  \(       a  S SK/J0r0  S
SK1J2r2  \Rf                  S:X  a  Sr4S\5S'   O\r4S\5S'   S\5S'   S\5S'   S\5S'   \Rl                  S:H  r7\(       d  \7(       d  \Rf                  S:w  a  S SKJ8r8J9r9J:r:  OSu  r8r9r:SFS jr;\;" S5      r<\;" S5      r=\;" S5      r>\7(       a  SGS jr?OSGS jr?\      SHS  j5       r@\      SHS! j5       rA\R                  R                  S"\@\A/S#S$/S%9rD\
S&\\   4   rES\5S''   \DSIS( j5       rF\DSIS) j5       rG\D    SIS* j5       rH\DSIS+ j5       rI\DSIS, j5       rJ\;" S-5      rK\DSIS. j5       rL\DSIS/ j5       rMSJS0 jrNSJS1 jrO\'SJS2 j5       rP\DSIS3 j5       rQSJS4 jrR\DSIS5 j5       rS\R                  R                  \7(       + S6S79\DSIS8 j5       5       rU\R                  R                  \7(       + S6S79\D    SIS9 j5       5       rV\(SJS: j5       rWSJS; jrXSJS< jrYSKS= jrZ\R                  R                  \7(       + S>S79      SLS? j5       r[SJS@ jr\\R                  R                  \" SA5      R                  5       (       + SBS79SJSC j5       r^SKSD jr_SJSE jr`g)M    )annotationsN)AsyncIteratorCallable)AbstractAsyncContextManagerasynccontextmanager)partial)Path)Signals)TYPE_CHECKINGAnyNoReturn	TypeAlias)mock   )EventProcess_core
fail_aftermove_on_afterrun_processsleepsleep_forever)skip_if_fbsd_pipes_brokenslow)open_process)	MockClockassert_no_checkpointswait_all_tasks_blocked)	FrameType)ReceiveStreamwin32r   
SignalTypeSIGKILLSIGTERMSIGUSR1posix)r#   r$   r%   )NNNc                0    [         R                  SSSU -   /$ )Nz-u-czimport sys; )sys
executable)codes    l/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/trio/_tests/test_subprocess.pypythonr-   @   s    NND$(=>>    zsys.exit(0)zsys.exit(1)z0sys.stdout.buffer.write(sys.stdin.buffer.read())c                    S[        U 5      /$ )Nr   )strsecondss    r,   SLEEPr3   J   s    W&&r.   c                     [        SU  S35      $ )Nzimport time; time.sleep())r-   r1   s    r,   r3   r3   O   s    0	;<<r.   c                   #    [        U 0 UD6I S h  vN n U7v   UR                  5         UR                  5       I S h  vN   g  N3 N! UR                  5         UR                  5       I S h  vN    f = f7fN)r   killwait)argskwargsprocs      r,   open_process_then_killr=   S   s`     
 t.v..D
		iik /
 	 			iiksB   A7AA7A	 #A7A A7A7	$A4-A0.A44A7c                  #    [         R                  " 5        IS h  vN nUR                  SS5        UR                  [	        [
        /U Q70 UD65      I S h  vN n[        U[        5      (       d   eUnU7v   UR                  R                  5         S S S 5      IS h  vN   g  N NO N	! , IS h  vN  (       d  f       g = f7f)NcheckF)
r   open_nursery
setdefaultstartr   r   
isinstancer   cancel_scopecancel)r:   r;   nurseryvaluer<   s        r,   run_process_in_nurseryrH   `   s     
 !!##w'5)mmGK$I$$I&$IJJ%))))
##% $##J $###sV   CB&C8B,B(<B,C B*!C(B,*C,C2B53C?Cbackground_processr   zrun_process in nursery)ids.BackgroundProcessTypec                  #    U " [         5       IS h  vN nUR                  5       I S h  vN   S S S 5      IS h  vN   [        W[        5      (       d   eUR                  b   eUR
                  S:X  d   e[        U5      S[          S3:X  d   eU " [        5       IS h  vN nUR                  5       I S h  vN   S S S 5      IS h  vN   UR
                  S:X  d   e[        U5      SR                  [        S5      :X  d   eg  N N N! , IS h  vN  (       d  f       N= f N Nn N`! , IS h  vN  (       d  f       Nu= f7f)Nr   <trio.Process : exited with status 0>   <trio.Process {!r}: {}>exited with status 1)		EXIT_TRUEr9   rC   r   _pidfd
returncoderepr
EXIT_FALSEformatrI   r<   s     r,   
test_basicrY   z   s    !),,iik -,dG$$$$;;??a:>)4KLLLL!*--iik .-??a:299    - -,,, . .---s   EDEDDDED
A%E!D&"E%D,9D(:D,>E	D*
=ED
ED#DD#E(D,*E,E2D53E?Ec                  #    [         R                  " SSS9   U " [        5       IS h  vN nUR                  b   eUR	                  5       I S h  vN   S S S 5      IS h  vN   [        W[        5      (       d   eUR                  b   eUR                  S:X  d   e[        U5      S[         S3:X  d   eU " [        5       IS h  vN nUR	                  5       I S h  vN   S S S 5      IS h  vN   UR                  S:X  d   e[        U5      SR                  [        S	5      :X  d   e S S S 5        g  GN N N! , IS h  vN  (       d  f       N= f N Nx Nj! , IS h  vN  (       d  f       N= f! , (       d  f       g = f7f)
N#trio._subprocess.can_try_pidfd_openFnewr   rM   rN   rO   rP   rQ   )r   patchrR   rS   r9   rC   r   rT   rU   rV   rW   rX   s     r,   test_basic_no_pidfdr_      s9    	9u	E%i00D;;&&&))+ 10 $(((({{"""!###Dz~i[8OPPPP%j11T))+ 21!###Dz6=="
 
 	
 
 
F	E0 1000 2 2111 
F	Es   FE5D4E5#D;D7D;E5 D9!A%E5EE5
EEE#E5.E/;E5+	F4E57D;9E5;E	EE	E5EE5E2	!E$"E2	.E55
F?Fc                  #    U " [        S5      5       IS h  vN nUR                  b   eS[        U5      ;   d   eUR                  5         UR                  R                  5         UR                  c   eS[        U5      ;   d   eUR                  b   eUR                  c   eS S S 5      IS h  vN   g  N N! , IS h  vN  (       d  f       g = f7f)N'  runningexited)r3   rT   rU   r8   _procr9   rS   )rI   ps     r,   test_auto_update_returncoderf      s      "%+..!||###DG###		||'''47"""xx||''' /.....sE   CB6CB	B:%C0B81C8C:C CCCc                  #    U " [        S5      5       IS h  vN n[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        UR                  UR                  5        [        5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   [        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        UR                  UR                  5        [        5       I S h  vN   UR                  5         S S S 5      IS h  vN   S S S 5      IS h  vN   g  GNb GNG N N! , IS h  vN  (       d  f       N= f N N[ N=! , IS h  vN  (       d  f       NR= f NI! , IS h  vN  (       d  f       g = f7f)N
   )	r3   r   r@   
start_soonr9   r   rD   rE   r8   rI   r<   rF   s      r,   test_multi_waitrk      s2    !%),,%%''7tyy)tyy)tyy)(***  '') (' %%''7tyy)tyy)tyy)(***IIK (' -,,' +	 (''' ( +	 (''' -,,,s   GE:GG E=G AFF F8G FG !F"G %AF$F F$G $F"%G )G4F>5G=G  FG F	
FF	G  F$"G $F;	*F-+F;	7G >G GG	GGc           	       #    [         R                  " SSS9   U " [        S5      5       IS h  vN n[        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        UR                  UR                  5        [        5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   [        R                  " 5        IS h  vN nUR                  UR                  5        UR                  UR                  5        UR                  UR                  5        [        5       I S h  vN   UR                  5         S S S 5      IS h  vN   S S S 5      IS h  vN   S S S 5        g  GNj GNO N N! , IS h  vN  (       d  f       N= f N Nc NE! , IS h  vN  (       d  f       NZ= f NQ! , IS h  vN  (       d  f       Nf= f! , (       d  f       g = f7f)Nr[   Fr\   rh   )r   r^   r3   r   r@   ri   r9   r   rD   rE   r8   rj   s      r,   test_multi_wait_no_pidfdrm      sT    	9u	E%eBi00D))++w""499-""499-""499-,...$$++- ,+ ))++w""499-""499-""499-,...		 ,+ 10 
F	E0+ /	 ,+++ , /	 ,+++ 1000 
F	Es  H	G8FG8GF
GAF"/F
0F"GF G7F<
8G;AGF>
G/G:G ;G?G8
GG8	H	G8GF" G"F9(F+)F95G>G GGG	GGG8G5	$G'%G5	1G88
HH	zbdata = sys.stdin.buffer.read(); sys.stdout.buffer.write(data); sys.stderr.buffer.write(data[::-1])c           
     L  ^^#    U " [         [        R                  [        R                  [        R                  S9 IS h  vN mSmSUU4S jjnS	S jnTR                  c   eTR                  c   e[
        R                  " 5        IS h  vN n[
        R                  " 5       S-   UR                  l	        UR                  U5        UR                  UTR                  T5        UR                  UTR                  TS S S2   5        S S S 5      IS h  vN   WR                  R                  (       a   eTR                  5       I S h  vN S:X  d   eS S S 5      IS h  vN   g  GN% N NU! , IS h  vN  (       d  f       Nj= f N< N(! , IS h  vN  (       d  f       g = f7f)
Nstdinstdoutstderrs+   the quick brown fox jumps over the lazy dogc                    >#    TR                   c   eTR                   R                  T 5      I S h  vN   TR                   R                  5       I S h  vN   g  N' N7fr7   )rp   send_allaclose)msgr<   s   r,   
feed_inputtest_pipes.<locals>.feed_input   sL     ::)))**%%c*****##%%% +%s!   .AA!AAAAc                V   #    [        5       nU   S h  vN nX#-  nM   N

 X!:X  d   eg 7fr7   )	bytearray)streamexpectedseenchunks       r,   check_output test_pipes.<locals>.check_output   s0     ;D% ev###s   )  ) 	)g      >@r   returnNone)r{   r    r|   bytesr   r   )+COPY_STDIN_TO_STDOUT_AND_BACKWARD_TO_STDERR
subprocessPIPErq   rr   r   r@   current_timerD   deadlineri   cancelled_caughtr9   )rI   rw   r   rF   rv   r<   s       @@r,   
test_pipesr      sB    !3oo	 
 
<	& 	&
	$ {{&&&{{&&&%%''7,1,>,>,@4,GG  )z*|T[[#>|T[[#dd)D (' ''8888YY[ A%%%=  , (''' !=   s   <F$ E%F$AF
E(F
A9E,	F
E*4F
	F

F
F$F F$(F
*F
,F	2E53F	?F
F$
F!FF!F$c                  ^^#    U " [        S5      [        R                  [        R                  [        R                  S9 IS h  vN m[        (       a  SOSmSUU4S jjnTR                  c   eTR
                  c   eTR                  c   e[        S5         TR                  R                  S5      I S h  vN   [        S5      I S h  vN   TR                  R                  S	T-   5      I S h  vN   U" S
S5      I S h  vN   TR                  R                  ST-   S-   T-   5      I S h  vN   U" SS5      I S h  vN   U" SS5      I S h  vN   TR                  R                  ST-   5      I S h  vN   U" SS
5      I S h  vN   TR                  R                  S5      I S h  vN   [        S5       nU" SS
5      I S h  vN   S S S 5        WR                  (       d   eTR                  R                  T5      I S h  vN   U" SS5      I S h  vN   TR                  R                  5       I S h  vN   TR
                  R                  S5      I S h  vN S:X  d   eTR                  R                  S5      I S h  vN S:X  d   eTR                  5       I S h  vN   S S S 5        S S S 5      IS h  vN   TR                  S
:X  d   eg  GN GN GN GN GN GN GN GN GNt GNf GNF GN,! , (       d  f       GN1= f GN N N N N Np! , (       d  f       Nt= f Nk! , IS h  vN  (       d  f       N= f7f)Nzidx = 0
while True:
    line = sys.stdin.readline()
    if line == '': break
    request = int(line.strip())
    print(str(idx * 2) * request)
    print(str(idx * 2 + 1) * request * 2, file=sys.stderr)
    idx += 1
ro      
s   
c                  >#    [         R                  " 5        IS h  vN n        SU4S jjnTR                  c   eTR                  c   eUR	                  UTR                  XS-  5        UR	                  UTR                  US-  U S-  S-   5        S S S 5      IS h  vN   g  N N! , IS h  vN  (       d  f       g = f7f)Nc                $  >#    US:  aQ  U R                  U5      I S h  vN nX2 R                  5       [        U5      -  :X  d   eU[        U5      -  nUS:  a  MQ  US:X  d   eU R                  [        T5      5      I S h  vN T:X  d   eg  Nm N7f)Nr   )receive_someencodelen)r{   countdigitresultnewlines       r,   	drain_one3test_interactive.<locals>.expect.<locals>.drain_one#  s     
  !)'-':':5'A!A%G*;*;*=F*KLLLV,  !) !A:%:!'!4!4S\!BBgMMM	 "B Cs'   BB:B%B BBBr   rO   )r{   r    r   intr   r   r   r   )r   r@   rq   rr   ri   )idxrequestrF   r   r   r<   s       r,   expect test_interactive.<locals>.expect   s     ))++w
N)
N
N 
N 	
N {{...{{...""9dkk7!GL""9dkk7Q;aRST# ,+++++sE   CB(CA6B,C"B*#C*C,C2B53C?C   s   12g?s   345r   i90  s   100s   200rO   d   r         0   s   999999   i?B r.   )r   r   r   r   r   r   )r-   r   r   r&   rp   rq   rr   r   rt   r   r   r   ru   r   r9   rT   )rI   r   scoper   r<   s      @@r,   test_interactiver     s     "		
 oo  
 5%g	U 	U( zz%%%{{&&&{{&&&]**%%e,,,***%%fw&6777E"""**%%fw&6&?'&IJJJC.  C.  **%%dWn555A,**%%i000s#uQl"" $))))**%%g...F###**##%%%11!44;;;11!44;;;))+' Q z ??a{R -7"J  50" $# /#%44' ]Q   s  AMKM	AL)L9K:LK%L2K3LK+L/K"0L K%LK(%L7K+8LK.	"L+K1,L;K7K4
	K79LL	LL!L9L:"LL(LLL#L$L(L)0M;L'<MLLLL"L%L(L+L.L1L4K77
L	LLLLLL
L$	 L)'M)M /L20M <Mc                   #    [        S [        S5       5       5      n [        [        U SSS9I S h  vN nUR                  [        :X  d   eUR
                  S:X  d   eUR                  U :X  d   eUR                  S:X  d   e[        [        SS9I S h  vN nUR                  [        :X  d   eUR
                  S:X  d   eUR                  S:X  d   eUR                  b   e[        [        U SSS9I S h  vN nUR                  [        :X  d   eUR
                  S:X  d   eUR                  U :X  d   eUR                  U S S S2   :X  d   e[        R                  " [        5         [        [        S	S
9I S h  vN   S S S 5        Sn[        R                  " [        US9   [        [        [        R                  S
9I S h  vN   S S S 5        [        R                  " [        US9   [        [        [        R                  S9I S h  vN   S S S 5        [        R                  " [        UR                  SSS5      S9   [        [        [        R                  S9I S h  vN   S S S 5        [        R                  " [        SS9   [        [        S[        R                   S9I S h  vN   S S S 5        [        R                  " [        SS9   [        [        SS S9I S h  vN   S S S 5        g  GN GNZ GN GN|! , (       d  f       GN= f GNI! , (       d  f       GNN= f GN! , (       d  f       GN= f N! , (       d  f       N= f N! , (       d  f       N= f N{! , (       d  f       g = f7f)Nc              3  P   #    U  H  n[         R                  " S S5      v   M     g7f)r      N)randomrandint).0_s     r,   	<genexpr>test_run.<locals>.<genexpr>P  s     >A3''s   $&i   T)rp   capture_stdoutcapture_stderrr   r.   r   r   zoh no, it's textrp   z^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)*$match)rq   rq   rr   rO   )rr   z.^can't specify both stdout and capture_stdout$)r   rq   z.^can't specify both stderr and capture_stderr$)r   rr   )r   ranger   CATr:   rT   rq   rr   r   pytestraisesUnicodeError
ValueErrorr   r   replaceDEVNULL)datar   pipe_stdout_errors      r,   test_runr   O  s    >u>>D	 F ;;#!!!==D   ==Cs488F;;#!!!==C==   3	 F ;;EEEE!!!==D   ==D2J&&& 
|	$#%7888 
% H	z):	;#Z__555 
<	z):	;#joo666 
<	''(A>
 #joo666	

 
?
 #d:;M;MNNN	

 
?
 #d4@@@	
 
_ 9 	9 
%	$
 	6 
<	; 	7 
<	; 	7	
 
 	O	
 
 	A	
 
s2  /M+K*A!M+K-A M+4K05A0M+%K67K38K6<#M+ L?L L!M+% L LL 
2M+< L4L2L4!!M+!M#M$M(!M+	MMM!
M+-M+0M+3K66
L M+L
LM+L  
L/*M+2L44
M>M+M
MM+M
M($M+c                 z  #    [        S5      n [        R                  " [        R                  5       n[        U [        R                  SS9I S h  vN   S S S 5        WR                  R                  U :X  d   eUR                  R                  S:X  d   eUR                  R                  S:X  d   eUR                  R                  b   e[        U SSSS9I S h  vN nUR                  U :X  d   eUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg  N! , (       d  f       N= f N`7f)	Nz/sys.stderr.buffer.write(b'test\n'); sys.exit(1)T)rp   r   rO   s   test
F)r   r   r?   r.   )r-   r   r   r   CalledProcessErrorr   r   rG   cmdrT   rr   rq   r:   )r   excinfor   s      r,   test_run_checkr     s    
C
DC	z44	5#Z%7%7MMM 
6==###==##q(((==9,,,=='''	 F ;;#==C==I%%%!!! 	N 
6	5s<   0D;D(D&D(BD;D9AD;&D((
D62D;c                    #    [        [        R                  SS/SS-  S9I S h  vN n U R                  S:X  d   eU R                  U R
                  s=L a  b   e   eg  N97f)Nr(   zimport sys; sys.stdin.close()   xi   r   r   )r   r)   r*   rT   rq   rr   )r   s    r,   test_run_with_broken_piper     sa     	>?Vm F !!!==FMM11111s   "A A:A c                L  #    U " [         [        R                  [        R                  [        R                  S9 IS h  vN nUR                  c   eUR
                  c   eUR                  b   eUR                  R                  S5      I S h  vN   UR                  R                  5       I S h  vN   / n UR                  R                  S5      I S h  vN nUS:X  a  OUR                  U5        M=  SR                  U5      S:X  d   eS S S 5      IS h  vN   WR                  S:X  d   e[        [         SS[        R                  S9I S h  vN nUR                  S:X  d   eUR
                  S:X  d   eUR                  b   eU " [        [        R                  [        R                  S	9 IS h  vN nUR
                  b   eUR                  b   eUR                  R!                  5       I S h  vN   UR#                  5       I S h  vN   S S S 5      IS h  vN   UR                  S:X  d   e[$        (       GaQ   [&        R(                  " 5       u  pVU " [         [        R                  U[        R                  S9 IS h  vN n[&        R*                  " U5        UR                  b   eUR
                  b   eUR                  b   eUR                  R                  S5      I S h  vN   UR                  R!                  5       I S h  vN   UR#                  5       I S h  vN S:X  d   e[&        R,                  " US
5      S:X  d   e[&        R,                  " US
5      S:X  d   eS S S 5      IS h  vN   [&        R*                  " U5        g g  GNR GN GN GN GN! , IS h  vN  (       d  f       GN= f GNk GN
 GN GN GN! , IS h  vN  (       d  f       GN= f GNa N N N Ny! , IS h  vN  (       d  f       N= f! [&        R*                  " W5        f = f7f)Nro   s   1234T   r.   s   12344321r   )rp   r   rr   )rp   rr   i   )r   r   r   STDOUTstdiorq   rr   rt   send_eofr   appendjoinrT   r   r   rp   ru   r9   r&   ospipecloseread)rI   r<   outputr~   r   rws          r,   test_stderr_stdoutr     ss    !3oo  	 
 
zz%%%{{&&&{{"""jj!!'***jj!!###**11"55E|MM% 	 
 xx;...% & ??a 3  	 F !!!==K'''==    "oo    
{{"""{{"""jj!!!iik  ??au	779DA); oo!((	 
 zz))){{***{{***jj))'222jj'')))!YY[(A---wwq$';666wwq$'3...   HHQK) [ 	+# 6   , 	"    3)(     HHQKs  <P$NP$ANN!N0N1%NN5NP$N7P$N:A#P$3N=4P$7<O	3O 4O	OO	P$O"P$?AP	 O$P	 A"O/)O'*!O/O)O/#O+$AO/(P	 3O-4P	 8P$NNNP$N7%N(&N72	P$=P$ O	O	P$	O!OO!P$$P	 'O/)O/+O/-P	 /P5O86PP	 	P!!P$c                 D  #    [         R                  " [        5       n [        S/SS9I S h  vN   S S S 5        S[	        W R
                  5      ;   d   eS[	        U R
                  5      ;   d   e[        (       al  [         R                  " [        5       n [        S/SS9I S h  vN   S S S 5        [         R                  " [        5       n [        SSS9I S h  vN   S S S 5        g g  N! , (       d  f       N= f NV! , (       d  f       NZ= f N4! , (       d  f       g = f7f)	Nlszutf-8)encodingzunbuffered byte streamsz&the 'encoding' option is not supportedT)shellF)r   r   	TypeErrorr   r0   rG   r&   )r   s    r,   test_errorsr     s     	y	!WD6G444 
" %GMM(::::3s7==7IIIIu]]9%vT222 &]]9%t5111 &% 	 	5 
"	! 3 &% 2 &%s   D C)C'C)A#D C<#C:$C<("D 
DDD
D 'C))
C73D :C<<
D
D D
DD c                D  ^ #          SU 4S jjnU" [         R                  [        5      I S h  vN   U" [         R                  [        5      I S h  vN   [
        (       d  [        (       d  [        R                  S:w  a  U" S [        5      I S h  vN   g g  Ni NH N
7f)Nc                  >#    [        S5       nT" [        S5      5       IS h  vN nU " U5        UR                  5       I S h  vN   S S S 5      IS h  vN   S S S 5        WR                  (       a   e[        (       a  Uc   eWR
                  U* :X  d   eg WR
                  S:w  d   eg  N Nh NZ! , IS h  vN  (       d  f       No= f! , (       d  f       Nx= f7f)N      ?  r   )r   r3   r9   r   r&   rT   )send_itsignumr   r<   rI   s       r,   test_one_signal%test_signals.<locals>.test_one_signal  s      35)%+66$iik!! 76   ))))5%%%??vg---??a''' 7! 7666  st   CCB,CB2B.B2
CB0CAC,C.B20C2C		8B;9C		C
CCr!   c                ,    U R                  [        5      $ r7   )send_signalr%   r<   s    r,   <lambda>test_signals.<locals>.<lambda>  s    4+;+;G+Dr.   )r   zCallable[[Process], None]r   zsignal.Signals | Noner   r   )
r   r8   r#   	terminater$   r   r&   r)   platformr%   )rI   r   s   ` r,   test_signalsr     s     (*(%( 
( ',,
000
'++W
555 Mee(?DgNNN )@ 15 	Os3   -B B"B B?B BB B B zPOSIX specific)reasonc                  #    [         (       a  [        R                  S:X  a  g [        R                  " [        R                  [        R
                  5      n U " [        S5      5       IS h  vN n[        R                  " 5        IS h  vN nUR                  UR                  5        [        5       I S h  vN   UR                  5         [        R                  " 5       S-   UR                  l        S S S 5      IS h  vN   WR                  R                   (       a   eUR"                  S:X  d   eS S S 5      IS h  vN   [        R                  " [        R                  U5        g  N N N No! , IS h  vN  (       d  f       N= f NL! , IS h  vN  (       d  f       Na= f! [        R                  " [        R                  U5        f = f7f)Nr!   r   r   r   )r   r)   r   signalSIGCHLDSIG_IGNr3   r   r@   ri   r9   r   r8   r   rD   r   r   rT   rI   old_sigchldr<   rF   s       r,   test_wait_reapable_failsr     s(     }0--?K3 &eDk22d))++w""499-,...		050B0B0Ds0J$$-	 ,+
 ++<<<<??a''' 32 	fnnk2 3+. ,+++ 3222 	fnnk2s   AGF& ,E(-F& 0F
E*F)E07E,8;E03F>E.?3F2F& =F
>F& &G(F& *F,E0.F0F	6E97F	F
F& F#FF#F& &'GGc           	       #    [         (       a  [        R                  S:X  a  g [        R                  " SSS9   [
        R
                  " [
        R                  [
        R                  5      n U " [        S5      5       IS h  vN n[        R                  " 5        IS h  vN nUR                  UR                  5        [        5       I S h  vN   UR                  5         [        R                  " 5       S-   UR                   l        S S S 5      IS h  vN   WR                   R$                  (       a   eUR&                  S:X  d   eS S S 5      IS h  vN   [
        R
                  " [
        R                  U5         S S S 5        g  GN N N Ny! , IS h  vN  (       d  f       N= f NV! , IS h  vN  (       d  f       Nk= f! [
        R
                  " [
        R                  U5        f = f! , (       d  f       g = f7f)Nr!   r[   Fr\   r   r   r   )r   r)   r   r   r^   r   r   r   r3   r   r@   ri   r9   r   r8   r   rD   r   r   rT   r   s       r,   !test_wait_reapable_fails_no_pidfdr   /  sJ    
 }0	9u	EmmFNNFNNC	7 *%+66$ --//7&&tyy10222IIK494F4F4H34NG((1	 0/
 #//@@@@!+++ 76 MM&..+6 
F	E 7/2 0/// 7666 MM&..+6 
F	Es   6H4G0-GFGF, F

!F,$)FF
;F	F,F3F,GF*G%G0>	HG
F,FF,F'FF'#F,*G,G	2F53G	?G'G--G00
G>:Hc                 T  ^^ SSK Jn   [        (       a)  [        R                  S:X  d  [        R                  S:X  a  g U R
                  R                  S5      (       d  [        R                  " S5        SSK	J
n  Sm[        R                  " S	S
/5      mSUU4S jjn[        R                  " [        R                  U5      n [        R                  " S5        U" TR                   5        TR#                  SS9S:X  d   e TR$                  c   TR'                  5         TR#                  5         [        R                  " [        R                  U5        g ! TR$                  c   TR'                  5         TR#                  5         [        R                  " [        R                  U5        f = f)Nr   )wait_child_exitingr!   darwinwaitidzwaitid only)sync_wait_reapableFr   3600c                *   > SmTR                  5         g NT)r8   )sigframe	got_alarmsleepers     r,   on_alarm#test_waitid_eintr.<locals>.on_alarm^  s    	r.   rO   )timeouti)r   r   r  zFrameType | Noner   r   )_subprocess_platformr   r   r)   r   
__module__endswithr   skip_subprocess_platform.waitidr   r   Popenr   SIGALRMalarmpidr9   rT   r8   )r   r   r  old_sigalrmr  r  s       @@r,   test_waitid_eintrr  H  s'    :}#,,'1S\\X5M((11(;;M"
 I01G 
 --9K
3Q7;;'||A|&",,,% LLNLLNfnnk2 % LLNLLNfnnk2s   =E AF'c            	     v  ^#    SmSU4S jjn [         R                  " 5        IS h  vN nUR                  [        [        [        S5      U S95        [        5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   T(       d   eg  Nq N: N! , IS h  vN  (       d  f       N'= f7f)NFc                   >#    SmU R                  5          [        5       I S h  vN   U R                  c   eg  N! U R                  c   ef = f7fr   )r   r   rT   )r<   custom_deliver_cancel_calleds    r,   custom_deliver_cancel9test_custom_deliver_cancel.<locals>.custom_deliver_cancelt  sL     '+$	//!!??... "??...s%   A; 9; A; AAra   deliver_cancelr<   r   r   r   	r   r@   ri   r   r   r3   r   rD   rE   )r  rF   r  s     @r,   test_custom_deliver_cancelr  q  s     #( 	/ !!##wKt=RS	
 %&&&##% $# ('' $ 	'	 $###sV   $B9BB95B B!B?B9
BB9BB9B6%B(&B62B9c            	        ^ SS jmSU4S jjn [         R                  " [         R                  " [         R                  " [        SS95      5         [        R
                  " U SS9  S S S 5        g ! , (       d  f       g = f)	Nc                @   #    U R                  5         [        S5      e7f)Nfoo)r   r   r   s    r,   r  6test_bad_deliver_cancel.<locals>.custom_deliver_cancel  s     s   c            	     P  >#    [         R                  " 5        IS h  vN n U R                  [        [        [        S5      TS95        [        5       I S h  vN   U R                  R                  5         S S S 5      IS h  vN   g  Nh N1 N	! , IS h  vN  (       d  f       g = f7f)Nra   r  r  )rF   r  s    r,   do_stuff)test_bad_deliver_cancel.<locals>.do_stuff  st     %%''7U4[AVW )***  '') ('' +	 ('''sV   B&BB&5BBB5B& B
B&B
B&B#BB#B&z^foo$r   T)strict_exception_groupsr  r   )r   RaisesGroup	RaisesExcr   r   run)r!  r  s    @r,   test_bad_deliver_cancelr'    sX     * 
		6++JgFG
 			(D9
 
 
s   A//
A=c                  ^#    [         R                  mSU4S jjnU R                  [         SU5        [        R                  " [
        SS9   [        R                  " 5        IS h  vN nUR                  [        [        S5      5        [        5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   S S S 5        g  Nh N9 N! , IS h  vN  (       d  f       N&= f! , (       d  f       g = f7f)Nc                *   > T" U 5        [        S5      e)Nwhoops)OSError)selforiginal_terminates    r,   broken_terminate>test_warn_on_failed_cancel_terminate.<locals>.broken_terminate  s    4 hr.   r   z
.*whoops.*r   ra   )r,  r   r   r   )r   r   setattrr   warnsRuntimeWarningr   r@   ri   r   r3   r   rD   rE   )monkeypatchr.  rF   r-  s      @r,   $test_warn_on_failed_cancel_terminater4    s      **  .>?	nL	9%%''7{E$K8(***  '') (' 
:	9'* (''' 
:	9sx   A	D C/&C'C/*-CCC6C/CC/	D C/CC/C,	CC,	(C//
C=9D z
posix onlyc                  #    UR                  [        SS 5        [        R                  " [        SS9   [
        R                  " 5        IS h  vN nUR                  [        [        S5      5        [        5       I S h  vN   UR                  R                  5         S S S 5      IS h  vN   S S S 5        g  Nh N9 N! , IS h  vN  (       d  f       N&= f! , (       d  f       g = f7f)Nr   c                     g r7    )r:   s    r,   r   8test_warn_on_cancel_SIGKILL_escalation.<locals>.<lambda>  s    Dr.   z.*ignored SIGTERM.*r   ra   )r0  r   r   r1  r2  r   r@   ri   r   r3   r   rD   rE   )autojump_clockr3  rF   s      r,   &test_warn_on_cancel_SIGKILL_escalationr:    s     
 .@A	n,A	B%%''7{E$K8(***  '') (' 
C	B'* (''' 
C	Bsv   2C(CB7C-B=?B9 B=C)B;*C.	C(7C9B=;C=C	CC	C
C%!C(c                   #    [         R                  " [        R                  5         [        R
                  " 5        IS h  vN n U R                  [        [        5      I S h  vN n[        U[        5      (       d   eUnS S S 5      IS h  vN   S S S 5        WR                  S:X  d   eg  Nj NJ N#! , IS h  vN  (       d  f       N8= f! , (       d  f       NA= f7f)NrO   )r   r$  r   r   r   r@   rB   r   rV   rC   r   rT   )rF   rG   r<   s      r,    test_run_process_background_failr<    s     			J99	:%%''7!--Z@@EeW----!D (' 
;
 ??a	 (@ (''' 
;	:sv   %CCB,CB2#B.$B2CB0CC,C.B20C2C		8B;9C		C
CC/dev/fdz,requires a way to iterate through open filesc                   #    [         R                  " 5         [        [        S5      R	                  5       5      n [        [        5      I S h  vN   [        [        S5      R	                  5       5      U :X  d   e[        R                  " [        R                  5         [        [        5      I S h  vN   S S S 5        [        [        S5      R	                  5       5      U :X  d   e[        R                  " [        5         [        S/5      I S h  vN   S S S 5        [        [        S5      R	                  5       5      U :X  d   eg  N N! , (       d  f       N= f NJ! , (       d  f       NN= f7f)Nr=  z	/dev/fd/0)gccollectsetSyncPathiterdirr   rR   r   r   r   r   rV   PermissionError)starting_fdss    r,   test_for_leaking_fdsrF    s     
 JJLx	*2245L
i
   x	"**,-===	z44	5*%%% 
6x	"**,-===		';-((( 
(x	"**,-=== ! 	& 
6	5
 	) 
(	'sh   A
E-EAE-E	0E1E	5A
E-?EEE2E-E		
EE-E
E*&E-c                   #    SS jnU R                  [        R                  SU5        [        R                  " [
        [
        5         [        [        SS9I S h  vN   S S S 5        g  N! , (       d  f       g = f7f)Nc                    #    g7f)Noopsr7  )r:   r;   s     r,   very_broken_open9test_run_process_internal_error.<locals>.very_broken_open  s     s   _open_processTr   )r:   objectr;   rM  r   r0   )r0  trio_subprocessr   r$  AttributeErrorr   rR   )r3  rJ  s     r,   test_run_process_internal_errorrQ    sX      ((/;KL			NN	;)D999 
<	;9 
<	;s0   AA;A*A(A*	A;(A**
A84A;c                   ^#    S mSU4S jjn [        [        S5      5      I S h  vN n[        R                  " 5        IS h  vN nUR	                  X5        [        5       I S h  vN   [        T[        5      (       d   eUR                  5         [        5          UR                  R                  5         UR                  5         S S S 5        [        S5         TR                  5       I S h  vN   S S S 5        TR                  5       (       d   S5       eS S S 5      IS h  vN   g  GN N N! , (       d  f       Nn= f NQ! , (       d  f       NU= f N0! , IS h  vN  (       d  f       g = f7f)Nc                v   >#    [        5       mU R                  5       I S h  vN   TR                  5         g  N7fr7   )r   r9   rA  )r<   noticed_exits    r,   wait_and_tell7test_subprocess_pidfd_unnotified.<locals>.wait_and_tell  s-     wiik 	s   979ra   r   z,child task wasn't woken after poll, DEADLOCKr  )r   r3   r   r@   ri   r   rC   r   r   r   rd   r9   pollr   is_set)rU  r<   rF   rT  s      @r,    test_subprocess_pidfd_unnotifiedrY    s    L eDk**D!!##w=/$&&&,...."$JJOOIIK	 %
 1 ##%%%  ""$$T&TT$ $## +#& %$ &  $###s   "E/D(E/D+E/E&D-'5E+D/EE.E /E3$EE/"E#E/+E/-E/
D=	9E E
E	EE/E,EE,(E/)r+   r0   r   	list[str])r2   r   r   rZ  )r:   r   r;   r   r   zAsyncIterator[Process])rI   rK   r   r   r   )r3  pytest.MonkeyPatchr   r   )r9  r   r3  r[  r   r   )a
__future__r   r?  r   r   r   r   r)   collections.abcr   r   
contextlibr   r   	functoolsr   pathlibr	   rB  r
   typingr   r   r   r   unittestr   r   rN   r   r   r   r   r   r   r   r   _core._tests.tutilr   r   lowlevelr   testingr   r   r   typesr   _abcr    r   r"   __annotations__namer&   r#   r$   r%   r-   rR   rV   r   r3   r=   rH   markparametrizebackground_process_paramrK   rY   r_   rf   rk   rm   r   r   r   r   r   r   r   r   r   skipifr   r   r  r  r'  r4  r:  r<  existsrF  rQ  rY  r7  r.   r,   <module>rp     s   " 	 	    
 3 G  $     	 	 	 A # N N$<<7 J	 #J	#	 	 	 
7%CLLG$;00 0GWg? =!	M"
?@'
= 			 	 	 
&
&
& 
& 
& ";;2234	12 3   $,(*$ y   " 
 
& (-(	( (  &  ( /5*/ + & &D I  I X6Ar"* 2 2 B BJ2 O O: I&673  83( I&677-7	7  87. %3 %3P(0:(*  Il3
*
*#
* 

* 4
*  ""$$9  >	> :Ur.   