
    hg!                     L   d dl Z d dlmZ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d          Zd	eg ee         f         d
edef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eddfd            Z"edd            Z#edd            Z$edd            Z%ddZ&de
j'        ddfdZ(de
j'        ddfdZ)ej         *                    d          dd            Z+dS )     N)	AwaitableCallableProtocolTypeVar   )_core)slow)TooSlowError
fail_afterfail_atmove_on_after
move_on_atsleepsleep_foreversleep_until)assert_checkpointsTfexpected_dur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        R/var/www/fb-scrape/myenv/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      ?c                    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   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_1>   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_2C   s*      Fmmr#   r   r   N)
r"   r(   r   r   r   r   r'   pytestraises	Cancelled)r*   r,   s     r!   
test_sleepr1   <   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   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_3R   s      6"" 	 	**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   :>>r-   r"   r(   )r6   s    r!   test_move_on_afterr9   P   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   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_task]   sU      m&&(((((((((  w}T':':;;;;;r#   r-   )	r<   r=   current_taskopen_nursery
start_soonr.   r/   RuntimeErrorr   )rC   nurseryrB   s     @r!   test_cannot_wake_sleep_foreverrI   Y   s     =%%''D< < < < < <  "" ' ' ' ' ' ' 'g9%%%]<(( 	' 	'$&&&&&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's6   /B40B
B4B	B4B	B44
B>B>c                   ,    e Zd Zdededej        fdZdS )TimeoutScopesecondsshieldr   c                    d S r&   r)   )selfrL   rM   s      r!   __call__zTimeoutScope.__call__h   s      r#   N)__name__
__module____qualname__floatboolr<   CancelScoperP   r)   r#   r!   rK   rK   g   s.        PP$P4;KPPPPPPr#   rK   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rM   zshield didn't workF)r   rV   r(   cancelr<   r=   r>   r0   r.   failrM   r/   )rW   outerinners      r!   test_context_shields_from_outerr^   k   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   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 NTrY   )r   rV   r   r(   rZ   r   r\   s    r!   rB   z:test_move_on_after_moves_on_even_if_shielded.<locals>.taskz   s        	"E=+M+M+M 	" 	"LLNNN  //!!!!!!!		" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s4   A:)A"A:"A&	&A:)A&	*A::A>A>r-   r8   rA   s    r!   ,test_move_on_after_moves_on_even_if_shieldedrc   x   sD      " " " " D&
)
))))))))))r#   c                  H   K   dd} t          | t                     d {V  d S )Nr   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 ra   )	r.   r/   r
   r   rV   r   r(   rZ   r   rb   s    r!   rB   z4test_fail_after_fails_even_if_shielded.<locals>.task   sy     ]<(( 	" 	"%*;*=*= 	"
I
 I
 I
 	" 	" LLNNN  //!!!!!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"sX   B+B)A<0B<B  BB BB+B	B+B	B++B/2B/r-   r8   rA   s    r!   &test_fail_after_fails_even_if_shieldedrf      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   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 r4   )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r5   r   c                     K   t          t                    5  t          d           d {V  d d d            d S # 1 swxY w Y   d S r4   )r   r(   r   r)   r#   r!   sleep_5ztest_fail.<locals>.sleep_5   s       	 	**	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r7   r-   )
r.   r/   r
   r"   r(   r   r   r'   r   r   )ri   rk   s     r!   	test_failrl      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)
rT   r   r   r.   r/   
ValueErrorr   r   r   r   )rn   funvalcms       r!   test_timeouts_raise_value_errorrv      s      ,,C 
		c 	 	S
 ]L
 
 
 	 	 #c((NNNNNNN		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
R	S	#			S  C ]L
 
 
 	 	 C                		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 sH   A**A.	1A.	C9C"C9"C&&C9)C&*C99C=	 C=	
mock_clockc                   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deadlinerM   )rw   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 )	Nry   rz   zC^unentered relative cancel scope does not have an absolute deadlinerp            zG^unentered non-relative cancel scope does not have a relative deadline$)r   r}   r   r'   r.   warnsDeprecationWarningr   r~   r   r/   rG   r|   )rw   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 )Nry   )r   r   r   r|   )
my_fail_atmy_fail_afters     r!    test_fail_access_before_enteringr     s@      JqMMM******r#   r-   ),r   typingr   r   r   r   r   r.   r<    r   _core._tests.tutilr	   	_timeoutsr
   r   r   r   r   r   r   r   testingr   r   rT   r"   r(   r1   r9   rI   rK   markparametrizer^   rc   rf   rl   rv   	MockClockr   r   xfailr   r)   r#   r!   <module>r      s    9 9 9 9 9 9 9 9 9 9 9 9          % % % % % %	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ) ( ( ( ( (GCLLxIaL(89  ST    > 
    & - - - -' ' ' 'Q Q Q Q Q8 Q Q Q =*"=>>	- 	-$ 	- 	- 	- ?>	- * * * * * * * *    ,   BU_     D!EO ! ! ! ! !< +,,+ + + -,+ + +r#   