
    vKg\                    N   % 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	  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JrJr  S SKrS SKrS SKJrJ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.J/r/  S SK0J1r1  S	SK2J3r3  \Rh                  S:X  a  Sr5S\6S'   O\r5S\6S'   S\6S'   S\6S'   S\6S'   \Rn                  S:H  r8\(       d  \8(       d  \Rh                  S:w  a  S SKJ9r9J:r:J;r;  OSu  r9r:r;SDS jr<\<" S5      r=\<" S5      r>\<" S5      r?\8(       a  SES jr@OSES jr@SFS  jrA\	SGS! j5       rB\	SGS" j5       rC\R                  R                  S#\B\C/S$S%/S&9rF\S'\\   4   rGS\6S('   \FSHS) j5       rH\F    SHS* j5       rI\FSHS+ j5       rJ\<" S,5      rK\FSHS- j5       rL\FSHS. j5       rMSIS/ jrNSIS0 jrO\&SIS1 j5       rP\FSHS2 j5       rQSIS3 jrR\FSHS4 j5       rS\R                  R                  \8(       + S5S69\FSHS7 j5       5       rU\'SIS8 j5       rVSIS9 jrWSIS: jrXSJS; jrY\R                  R                  \8(       + S<S69      SKS= j5       rZSIS> jr[\R                  R                  \" S?5      R                  5       (       + S@S69SISA j5       r]SJSB jr^SISC jr_g)L    )annotationsN)asynccontextmanager)partial)Path)Signals)TYPE_CHECKINGAnyAsyncContextManagerAsyncIteratorCallableNoReturn)MatcherRaisesGroup   )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)	TypeAlias)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    [/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/trio/_tests/test_subprocess.pypythonr.   C   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-   SLEEPr4   M   s    W&&r/   c                     [        SU  S35      $ )Nzimport time; time.sleep())r.   r2   s    r-   r4   r4   R   s    0	;<<r/   c                    [         (       d  [        (       d  [        R                  S:w  a  U R                  U* :H  $ U R                  S:g  $ )Nr"   r   )r   r'   r*   platform
returncode)procsigs     r-   
got_signalr<   V   s6    Mee(?3$&&!##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kwargsr:   s      r-   open_process_then_killrC   ]   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7v   UR                  R                  5         S S S 5      IS h  vN   g  Np N6 N	! , IS h  vN  (       d  f       g = f7f)NcheckF)r   open_nursery
setdefaultstartr   r   cancel_scopecancel)rA   rB   nurseryr:   s       r-   run_process_in_nurseryrL   g   sy     !!##w'5)%mmGK,Q$,Q&,QRR
##%	 $##R $###sV   B-BB-8BB#B<B-BB-BB-B*BB*&B-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   z<trio.Process z: exited with status 0>   z<trio.Process {!r}: {}>zexited with status 1)		EXIT_TRUEr@   
isinstancer   _pidfdr9   repr
EXIT_FALSEformat)rM   r:   s     r-   
test_basicrX   y   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                  #    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)r4   r9   rU   r?   _procr@   rT   )rM   ps     r-   test_auto_update_returncoder_      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
   )	r4   r   rF   
start_soonr@   r   rI   rJ   r?   )rM   r:   rK   s      r-   test_multi_waitrc      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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r>   )rf   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r>   )	bytearray)streamexpectedseenchunks       r-   check_output test_pipes.<locals>.check_output   s0     ;D% ev###s   )  ) 	)g      >@r   returnNone)rq   r!   rr   bytesry   rz   )+COPY_STDIN_TO_STDOUT_AND_BACKWARD_TO_STDERR
subprocessPIPErg   rh   r   rF   current_timerI   deadlinerb   cancelled_caughtr@   )rM   rm   ru   rK   rl   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
re      
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)rq   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   rQ   )rq   r!   r   intr   r   ry   rz   )r   rF   rg   rh   rb   )idxrequestrK   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   200rQ   d   r         0   s   999999   i?B r/   )r   r   r   r   ry   rz   )r.   r}   r~   r'   rf   rg   rh   r   rj   r   r   r   rk   r   r@   r9   )rM   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  N   #    U H  n[         R                  " S S5      v   M     g7f)r      N)randomrandint).0_s     r-   	<genexpr>test_run.<locals>.<genexpr>&  s     >A3''s   #%i   T)rf   capture_stdoutcapture_stderrr   r/   r   rw   zoh no, it's textrf   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)rg   rg   rh   rQ   )rh   z.^can't specify both stdout and capture_stdout$)r   rg   z.^can't specify both stderr and capture_stderr$)r   rh   )r{   ranger   CATrA   r9   rg   rh   r|   pytestraisesUnicodeError
ValueErrorr}   r~   replaceDEVNULL)datar   pipe_stdout_errors      r-   test_runr   %  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)rf   r   rQ   s   test
F)r   r   rE   r/   )r.   r   r   r}   CalledProcessErrorr   r   valuecmdr9   rh   rg   rA   )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+   r9   rg   rh   )r   s    r-   test_run_with_broken_piper   s  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)Nre   s   1234T   r/   s   12344321r   )rf   r   rh   )rf   rh   i   )r|   r}   r~   STDOUTstdiorg   rh   rj   send_eofr   appendjoinr9   r   r   rf   rk   r@   r'   ospipecloseread)rM   r:   outputrt   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   r1   r   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   r4   r@   r   r'   r9   )send_itsignumr   r:   rM   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      $ r>   )send_signalr&   r:   s    r-   <lambda>test_signals.<locals>.<lambda>  s    4+;+;G+Dr/   )r   zCallable[[Process], None]r   zsignal.Signals | Nonery   rz   )
r   r?   r$   	terminater%   r   r'   r*   r8   r&   )rM   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*   r8   signalSIGCHLDSIG_IGNr4   r   rF   rb   r@   r   r?   r   rI   r   r   r9   )rM   old_sigchldr:   rK   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                 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)r?   )r;   frame	got_alarmsleepers     r-   on_alarm#test_waitid_eintr.<locals>.on_alarm  s    	r/   rQ   )timeouti)r;   r   r   zFrameType | Nonery   rz   )_subprocess_platformr   r   r*   r8   
__module__endswithr   skip_subprocess_platform.waitidr   r}   Popenr   SIGALRMalarmpidr@   r9   r?   )r   r   r   old_sigalrmr   r   s       @@r-   test_waitid_eintrr    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   r9   )r:   custom_deliver_cancel_calleds    r-   custom_deliver_cancel9test_custom_deliver_cancel.<locals>.custom_deliver_cancel1  sL     '+$	//!!??... "??...s%   A; 9; A; AArZ   deliver_cancelr:   r   ry   rz   	r   rF   rb   r   r   r4   r   rI   rJ   )r  rK   r  s     @r-   test_custom_deliver_cancelr  .  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 [        [        [        [        S5      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_cancelG  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)NrZ   r	  r  )rK   r  s    r-   do_stuff)test_bad_deliver_cancel.<locals>.do_stuffK  st     %%''7U4[AVW )***  '') ('' +	 ('''sV   B&BB&5BBB5B& B
B&B
B&B#BB#B&z^foo$T)strict_exception_groupsr  rx   )r   r   r   r   run)r  r  s    @r-   test_bad_deliver_cancelr  F  s>     * 
[W!=>	?		(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   rZ   )r  r   ry   r   )r   r   setattrr   warnsRuntimeWarningr   rF   rb   r   r4   r   rI   rJ   )monkeypatchr  rK   r  s      @r-   $test_warn_on_failed_cancel_terminater$  X  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 r>    )rA   s    r-   r   8test_warn_on_cancel_SIGKILL_escalation.<locals>.<lambda>m  s    Dr/   z.*ignored SIGTERM.*r   rZ   )r   r   r   r!  r"  r   rF   rb   r   r4   r   rI   rJ   )autojump_clockr#  rK   s      r-   &test_warn_on_cancel_SIGKILL_escalationr*  h  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                 v  #    [        [        R                  5         [        R                  " 5        IS h  vN n U R                  [        [        5      I S h  vN nS S S 5      IS h  vN   S S S 5        WR                  S:X  d   eg  NQ N1 N#! , IS h  vN  (       d  f       N8= f! , (       d  f       NA= f7f)NrQ   )	r   r}   r   r   rF   rH   r   rV   r9   )rK   r:   s     r-    test_run_process_background_failr,  x  sw     	Z22	3%%''7")--Z"HHD (' 
4 ??a (H (''' 
4	3ss   B9B(BB(BB
BB((B)B(-B9B(
BB(B%	BB%	!B((
B62B9/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_fdsr6    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        [        [        [        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oopsr'  )rA   rB   s     r-   very_broken_open9test_run_process_internal_error.<locals>.very_broken_open  s     s   r   Tr   )rA   objectrB   r<  ry   r1   )r   trio_subprocessr   AttributeErrorr   rR   )r#  r:  s     r-   test_run_process_internal_errorr@    sR      ((.:JK	^^	4)D999 
5	49 
5	4s.   ;A0AAA	A0A
A-)A0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r>   )r   r@   r1  )r:   noticed_exits    r-   wait_and_tell7test_subprocess_pidfd_unnotified.<locals>.wait_and_tell  s-     wiik 	s   979rZ   r   z,child task wasn't woken after poll, DEADLOCKr  )r   r4   r   rF   rb   r   rS   r   r   r   r]   r@   pollr   is_set)rD  r:   rK   rC  s      @r-    test_subprocess_pidfd_unnotifiedrH    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,   r1   ry   	list[str])r3   r   ry   rI  )r:   r   r;   r#   ry   bool)rA   r	   rB   r	   ry   zAsyncIterator[Process])rM   rO   ry   rz   rx   )r#  pytest.MonkeyPatchry   rz   )r)  r   r#  rK  ry   rz   )`
__future__r   r/  r   r   r   r}   r*   
contextlibr   	functoolsr   pathlibr   r2  r   typingr   r	   r
   r   r   r   r   r=  trio.testingr   r    r   r   r   r   r   r   r   r   _core._tests.tutilr   r   lowlevelr   testingr   r   r   typesr   typing_extensionsr    _abcr!   r8   r#   __annotations__namer'   r$   r%   r&   r.   rR   rV   r   r4   r<   rC   rL   markparametrizebackground_process_paramrO   rX   r_   rc   r|   r   r   r   r   r   r   r   r   skipifr   r  r  r  r$  r*  r,  existsr6  r@  rH  r'  r/   r-   <module>r`     s;   " 	 	    
 *  $     -	 	 	 A # N N+$<<7 J	 #J	#	 	 	 
7%CLLG$;00 0GWg? =!	M"
?@'
=$   & & ";;2234	12 3   $,C1DW1M,M#N y N  " (-(	( (  & /5*/ + & &D I  I X6Ar"* 2 2 B BJ2 O O: I&673  83( %3 %3P(0:$*  Il3
*
*#
* 

* 4
*  ""$$9  >	> :Ur/   