
    g"                       d dl mZ d dlZd dlmZmZmZ d dlZd dlZd dl	Z	ddl
mZ ddlmZ ddlmZmZmZmZmZmZmZmZ ddlmZ erd d	lmZmZ  ed
          Zd%dZdZed&d            Zed&d            Z d&dZ! G d de          Z"ej#        $                    deeg          d'd            Z%ed&d            Z&ed&d            Z'ed&d            Z(d&dZ)d(d Z*d(d!Z+ej#        ,                    d"#          d&d$            Z-dS ))    )annotationsN)TYPE_CHECKINGProtocolTypeVar   )_core)slow)TooSlowError
fail_afterfail_atmove_on_after
move_on_atsleepsleep_foreversleep_until)assert_checkpoints)	AwaitableCallableTfCallable[[], Awaitable[T]]expected_durfloatreturnc                   K   t          j                    }t          j        |            d {V }t          j                    |z
  }t	          ||z             d||z  cxk    rdk     sn J |                                S )NgG?g      ?)timeperf_counteroutcomeacaptureprintunwrap)r   r   startresultdurs        e/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/trio/_tests/test_timeouts.pycheck_takes_aboutr&      s      E#A&&&&&&&&F




%C	#
( #,3333333333==??    g      ?Nonec                   K   dd} t          | t                     d {V  dd}t          |t                     d {V  t                      5  t          d           d {V  d d d            n# 1 swxY w Y   t	          t          j                              5  t          j        t
          j	                  5  t          d           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r(   c                 f   K   t          t          j                    t          z              d {V  d S N)r   r   current_timeTARGET r'   r%   sleep_1ztest_sleep.<locals>.sleep_1C   s:      %,..788888888888r'   c                 >   K   t          t                     d {V  d S r+   )r   r-   r.   r'   r%   sleep_2ztest_sleep.<locals>.sleep_2H   s*      Fmmr'   r   r   r(   )
r&   r-   r   r   r   r   r,   pytestraises	Cancelled)r/   r1   s     r%   
test_sleepr6   A   s     9 9 9 9 GV
,
,,,,,,,,    GV
,
,,,,,,,,			  Ahh               
E&((	)	)  ]5?++ 	 	((NNNNNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sH   A11A58A5C5;CC5C!	!C5$C!	%C55C9<C9c                 H   K   dd} t          | t                     d {V  d S )Nr   r(   c                    K   t          t                    5  t          d           d {V  d d d            d S # 1 swxY w Y   d S Nd   )r   r-   r   r.   r'   r%   sleep_3z#test_move_on_after.<locals>.sleep_3W   s      6"" 	 	**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   :>>r2   r&   r-   )r;   s    r%   test_move_on_afterr>   U   sD          GV
,
,,,,,,,,,,r'   c                   K   t           j                                        dfd} t          j                    4 d {V }|                    |            t          j        t                    5  t          j                     d {V  d d d            n# 1 swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r(   c                    K   t           j                                         d {V  t           j                             t	          j        d                      d S r+   )triolowlevel
checkpoint
rescheduler   Valuetasks   r%   	wake_taskz1test_cannot_wake_sleep_forever.<locals>.wake_taskb   sU      m&&(((((((((  w}T':':;;;;;r'   r2   )	rA   rB   current_taskopen_nursery
start_soonr3   r4   RuntimeErrorr   )rH   nurseryrG   s     @r%   test_cannot_wake_sleep_foreverrN   ^   s     =%%''D< < < < < <  "" ' ' ' ' ' ' 'g9%%%]<(( 	' 	'$&&&&&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   /B40B
B4B	B4B	B44
B>B>c                      e Zd Zd	dZdS )
TimeoutScopesecondsr   shieldboolr   trio.CancelScopec                   d S r+   r.   )selfrQ   rR   s      r%   __call__zTimeoutScope.__call__m   s      r'   N)rQ   r   rR   rS   r   rT   )__name__
__module____qualname__rW   r.   r'   r%   rP   rP   l   s        PPPPPPr'   rP   scopec                >  K   t          j                    5 } | t          d          5 }|                                 	 t          j                                         d {V  n)# t          j        $ r t          j	        d           Y nw xY wd|_
        t          j        t          j                  5  t          j                                         d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NTrR   zshield didn't workF)r   CancelScoper-   cancelrA   rB   rC   r5   r3   failrR   r4   )r[   outerinners      r%   test_context_shields_from_outerrc   p   s     				 -uuVD'A'A'A -U	.-**,,,,,,,,,,~ 	. 	. 	.K,-----	.]4>** 	- 	--**,,,,,,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -s{   DC:$A$#C:$#B
C:	B

(C:2%C#C:#C''C:*C'+C:.D:C>	>DC>	DDDc                 H   K   dd} t          | t                     d {V  d S )Nr   r(   c                   K   t          j                    5 } t          t          d          5  |                                  t                       d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S NTr]   )r   r^   r   r-   r_   r   ra   s    r%   rG   z:test_move_on_after_moves_on_even_if_shielded.<locals>.task   s        	"E=+M+M+M 	" 	"LLNNN  //!!!!!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s4   A:)A"A:"A&	&A:)A&	*A::A>A>r2   r=   rF   s    r%   ,test_move_on_after_moves_on_even_if_shieldedrh   }   sD      " " " " D&
)
))))))))))r'   c                 H   K   dd} t          | t                     d {V  d S )Nr   r(   c                 p  K   t          j        t                    5  t          j                    5 } t          t          d          5  |                                  t                       d {V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S rf   )	r3   r4   r
   r   r^   r   r-   r_   r   rg   s    r%   rG   z4test_fail_after_fails_even_if_shielded.<locals>.task   s{      ]<(( 	" 	"%*;*=*= 	"
I
 I
 I
 	" 	"
 LLNNN  //!!!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"sX   B+B)A<0B<B  BB BB+B	B+B	B++B/2B/r2   r=   rF   s    r%   &test_fail_after_fails_even_if_shieldedrk      sD      " " " " D&
)
))))))))))r'   c                 d  K   dd} t          j        t                    5  t          | t                     d {V  d d d            n# 1 swxY w Y   t          t          j                    dz             5  t          d           d {V  d d d            n# 1 swxY w Y   dd}t          j        t                    5  t          |t                     d {V  d d d            n# 1 swxY w Y   t          d          5  t          d           d {V  d d d            d S # 1 swxY w Y   d S )Nr   r(   c                    K   t          t          j                    t          z             5  t	          d           d {V  d d d            d S # 1 swxY w Y   d S r9   )r   r   r,   r-   r   r.   r'   r%   sleep_4ztest_fail.<locals>.sleep_4   s      U'))F233 	 	**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAr:   r   c                    K   t          t                    5  t          d           d {V  d d d            d S # 1 swxY w Y   d S r9   )r   r-   r   r.   r'   r%   sleep_5ztest_fail.<locals>.sleep_5   s       	 	**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r<   r2   )
r3   r4   r
   r&   r-   r   r   r,   r   r   )rn   rp   s     r%   	test_failrq      sS         
|	$	$ 1 10000000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
#%%+	,	,  Ahh                  
|	$	$ 1 10000000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
C  Ahh                 sG   AAA6BBB C((C,/C,D%%D),D)c                   K   t          d          } t          dft          | ft          | ffD ]I\  }}t          j        t
          d          5   ||           d {V  d d d            n# 1 swxY w Y   Jt          dft          | ft          | ft          dft          | ft          | ffD ]\\  }}t          j        t
          d          5   ||          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   ]d S )Nnanz8^(deadline|`seconds`) must (not )*be (non-negative|NaN)$match)
r   r   r   r3   r4   
ValueErrorr   r   r   r   )rs   funvalcms       r%   test_timeouts_raise_value_errorr{      s      ,,C 
		c 	 	S
 ]M
 
 
 	 	 #c((NNNNNNN		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
R	S	#			S  C ]M
 
 
 	 	 C                		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 sH   A**A.	1A.	C9C"C9"C&&C9)C&*C99C=	 C=	
mock_clock_core.MockClockc                  K   t          d          }|j        dk    sJ |                     d           t          j                    }|5 }|j        J |j        |dz   k    sJ |j        dk    sJ |dz   |_        |j        |dz   k    sJ |j        dk    sJ d|_        |j        |dz   k    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   t          d          }|j        du sJ d|_        |j        du sJ |                     d           t          j                    }|5 }|j        |dz   k    sJ ||u sJ 	 d d d            d S # 1 swxY w Y   d S )N         FT)r   relative_deadlinejumpr   r,   is_relativedeadlinerR   )r|   rcsr"   css       r%   test_timeout_deadline_on_entryr      s/     


C A%%%%OOA  E	 )~%%% {eai''''#q((((ai{eai''''#q(((( {eai''''#q((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 

C:CJ:OOA  E	 {eai''''byyyyy                 s%   	A2CCC)EEEc                h  K   t          d          }|                     d           t          j                    }d}t	          j        t          |          5  |j        |dz   k    sJ 	 d d d            n# 1 swxY w Y   |                     d           t	          j        t          |          5  |j        |dz   k    sJ 	 d d d            n# 1 swxY w Y   t	          j        t          |          5  d|_        d d d            n# 1 swxY w Y   |j        dk    sJ |j        rJ t          d          }d}t	          j
        t          |          5  |j        sJ 	 d d d            n# 1 swxY w Y   t	          j
        t          |          5  d|_        d d d            d S # 1 swxY w Y   d S )	Nr   r   zC^unentered relative cancel scope does not have an absolute deadlineru            zG^unentered non-relative cancel scope does not have a relative deadline$)r   r   r   r,   r3   warnsDeprecationWarningr   r   r   r4   rL   r   )r|   r   r"   	match_strs       r%   test_invalid_access_unenteredr      s      	q		BOOA  EUI	(		:	:	: ( ({eai'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( (OOA	(		:	:	: ( ({eai'''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
(		:	:	:                 ;!~	AB 	R  
|9	5	5	5 $ $#####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	|9	5	5	5 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !sZ   A55A9<A90CCC4DDD
E,,E03E0F''F+.F+znot implemented)reasonc                 j   K   t          d          } | j        sJ t          d          }|j        sJ d S )Nr   )r   r   r   r   )
my_fail_atmy_fail_afters     r%    test_fail_access_before_enteringr     s@      JqMMM******r'   )r   r   r   r   r   r   r2   )r[   rP   r   r(   )r|   r}   r   r(   ).
__future__r   r   typingr   r   r   r   r3   rA    r   _core._tests.tutilr	   	_timeoutsr
   r   r   r   r   r   r   r   testingr   collections.abcr   r   r   r&   r-   r6   r>   rN   rP   markparametrizerc   rh   rk   rq   r{   r   r   xfailr   r.   r'   r%   <module>r      s   " " " " " "  3 3 3 3 3 3 3 3 3 3          % % % % % %	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ) ( ( ( ( ( 433333333GCLL   > 
    & - - - -' ' ' 'Q Q Q Q Q8 Q Q Q =*"=>>	- 	- 	- ?>	- * * * * * * * *$    ,   B   D! ! ! !< +,,+ + + -,+ + +r'   