
    g$                    P   d dl mZ d dlZd dlZd dlmZmZ er
d dlmZm	Z	m
Z
 d dlZd dlZd dlmZmZ ddlmZ ddlmZmZ dd	l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  ed      ZddZ ddZ!ddZ"ejF                  jI                  d      dd       Z%ddZ&ddZ'ddZ(ddZ)y)    )annotationsN)TYPE_CHECKINGTypeVar)AsyncGenerator	Coroutine	Generator)MatcherRaisesGroup   )_core)!create_asyncio_future_in_new_loop'ignore_coroutine_never_awaited_warnings)ConflictDetectorNoPublicConstructorcoroutine_or_errorfinalfixup_module_metadatageneric_functionis_main_threadwait_all_tasks_blocked)r   Tc                   K   t        d      t        d      } 5  | 5  t        d       d d d        d d d        t        j                  t        j
                  d      5  5  5  	 d d d        d d d        d d d        dfd}t        t        t        j
                  d            5  t	        j                         4 d {   }|j                  |       |j                  |       d d d       d {    d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w7 {7 K# 1 d {  7  sw Y   [xY w# 1 sw Y   y xY ww)Nul1ul2ok)matchc                 d   K    5  t                d {    d d d        y 7 # 1 sw Y   y xY wwNr   )r   s   H/var/www/html/venv/lib/python3.12/site-packages/trio/_tests/test_util.pywait_with_ul1z,test_ConflictDetector.<locals>.wait_with_ul11   s3      	+(***	+ 	+*	+ 	+s    0$"$	0$-0returnNone)
r   printpytestraisesr   BusyResourceErrorr
   r	   open_nursery
start_soon)r   r!   nurseryr   s      @r    test_ConflictDetectorr,   $   s?    
5
!C
5
!C	  	$K	 
u..e	<  	 	
+ 
WU44e<	= .%%' 	. 	.7}-}-	. 	.. .	 	  	 	 	. 	. 	. 	. 	.. .s   E#DDD-E# D2#D&&D(D&0D281E#)ED>E#E)E4E 5E9	E#D	DDE#D#D&&D/	+D22D;7E#>E EE	E	E	EE E#c                    dd l } dd l} | j                  j                  dk(  sJ | j                  j                  dk(  sJ | j
                  j                  j                  dk(  sJ | j                  j                  j                  dk(  sJ | j                  j                  j                  dk(  sJ | j                  j                  j                  j                  dk(  sJ | j
                  j                  j                  j                  dk(  sJ | j                  j                  dk(  sJ | j                  j                  dk(  sJ | j
                  j                   j                  j                  dk(  sJ | j
                  j                   j                  j                  dk(  sJ | j"                  j                  d	k(  sJ | j"                  j$                  j                  d
k(  sJ | j"                  j$                  j                  d
k(  sJ y )Nr   trioztrio.abcztrio.lowlevelztrio.testing	Cancelledsend_allzSendStream.send_allztrio.to_threadrun_sync)r.   trio.testingr/   
__module__r)   abcStreamlowlevelwait_task_rescheduledtesting	trio_test
ParkingLot__init__r0   __name____qualname__
SendStream	to_threadr1   )r.   s    r     test_module_metadata_is_fixed_upr@   ;   s   >>$$...''611188??%%333==..99_LLL<<!!,,>>> ==##,,77?JJJ88??##..*<<< >>""k111>>&&+55588''00J>>>88''448MMMM>>""&6666>>""++z999>>""//:===    c                 ~   K   t               sJ dd} t        j                  j                  |        d {    y 7 w)Nc                     t               rJ y r   )r    rA   r    not_main_threadz,test_is_main_thread.<locals>.not_main_threadV   s    !####rA   r"   )r   r.   r?   r1   )rE   s    r    test_is_main_threadrF   S   s1     $ ..
!
!/
222s   3=;=z(ignore:.*@coroutine.*:DeprecationWarningc                 P    G d d      t               5  dd} t        j                  t              5 }t	         |               d d d        dt        j                        v sJ dd lt        j                  dk  rbj                  	 	 dfd       }t        j                  t              5 }t	         |              d d d        dt        |j                        v sJ t        j                  t              5 }t	        t                      d d d        dt        |j                        v sJ t        j                  t              5 }t	        t               d d d        dt        |j                        v sJ t        j                  t              5 }t	                       d d d        d	t        |j                        v sJ t        j                  t              5 }t	        fd
       d d d        d	t        |j                        v sJ t        j                  t              5 }t	        t        g dg       d d d        dt        |j                        v sJ 	 	 	 	 dd}t        j                  t              5 }t	        |dg       d d d        d}|t        |j                        v sJ ~d d d        y # 1 sw Y   rxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nc                      e Zd ZdZy))test_coroutine_or_error.<locals>.DeferredzJust kiddingN)r<   r3   r=   __doc__rD   rA   r    DeferredrI   _   s    rA   rK   c                    K   y wr   rD   rD   rA   r    fz"test_coroutine_or_error.<locals>.fd   s	     s   zexpecting an async functionr   )      c               3  D   K    j                  d      E d {    y 7 w)N   )sleep)asyncios   r    generator_based_coroz5test_coroutine_or_error.<locals>.generator_based_coroo   s      #==+++s     rS   twistedc                              S r   rD   )rK   s   r    <lambda>z)test_coroutine_or_error.<locals>.<lambda>   s	    xz rA   )rQ   r   rN   zappears to be synchronousc                  K   d  y wr   rD   )_s    r    	async_genz*test_coroutine_or_error.<locals>.async_gen   s      s   	z5expected an async function but got an async generatorr"   )r#   z2Generator[Coroutine[None, None, None], None, None])rY   objectr#   zAsyncGenerator[None, None])r   r&   r'   	TypeErrorr   strvaluerS   sysversion_info	coroutiner   len)rM   excinforT   rZ   msgrK   rS   s        @@r    test_coroutine_or_errorre   ]   s     
1	2 8	 ]]9% 	$qs#	$,GMM0BBBBg%,B, ,
 y) ;W"#7#9:;GMM 2222]]9% 	D@BC	DC.... ]]9% 	B@A	BC....]]9% 	+xz*	+C....]]9% 	312	3C....]]9% 	1sYK0	1 +c'--.@@@@		'	
 ]]9% 	/y1#.	/Ec'--(((( q8 8
	$ 	$; ;	D 	D
	B 	B	+ 	+	3 	3	1 	1	/ 	/e8 8s   LJ6A(L.K?:L9K:LK:LK*":LK7+:L%L9AL;L	$L6K 	;LK	LK	LK'	"L*K4	/L7L	<LL		LL	LL%c                 8   t         dd       } | | t           cxu r| t        t        f   u sJ  J  | d       | t           d      cxk(  rdk(  sJ  J | j                  dk(  sJ | j                  dk(  sJ | j
                  dk(  sJ | j                  t
        k(  sJ y )Nc                    | S )Look, a docstring!rD   )args    r    	test_funcz(test_generic_function.<locals>.test_func   s	     
rA   *   rh   z(test_generic_function.<locals>.test_funcrj   )ri   r   r#   r   )r   intr]   rJ   r=   r<   r3   )rj   s    r    test_generic_functionrm      s      	#=)CH*======R=NIcN2.4"44444 4444!!%OOOO,,,8+++rA   c                     t          G d d             } t        j                  t              5   G d d|       }ddd       y# 1 sw Y   yxY w)zTest that subclassing a @final-annotated class is not allowed.

    This checks both runtime results, and verifies that type checkers detect
    the error statically through the type-ignore comment.
    c                      e Zd Zy)(test_final_decorator.<locals>.FinalClassNr<   r3   r=   rD   rA   r    
FinalClassrp      s    rA   rr   c                      e Zd Zy)&test_final_decorator.<locals>.SubClassNrq   rD   rA   r    SubClassrt      s    rA   ru   N)r   r&   r'   r\   )rr   ru   s     r    test_final_decoratorrv      sJ        
y	! 	z 	  s   AAc                      G d dt               } t        j                  t              5   | dd       ddd       t	        | j                  dd      |       sJ y# 1 sw Y   )xY w)zLThe NoPublicConstructor metaclass prevents calling the constructor directly.c                      e Zd ZddZy):test_no_public_constructor_metaclass.<locals>.SpecialClassc                     |dk(  sJ |dk(  sJ y)z*Check arguments can be passed to __init__.   333333	@NrD   )selfabs      r    r;   zCtest_no_public_constructor_metaclass.<locals>.SpecialClass.__init__   s    6M699rA   N)r~   rl   r   floatr#   r$   )r<   r3   r=   r;   rD   rA   r    SpecialClassry      s    	rA   r   )	metaclassr{   r|   N)r   )r   r&   r'   r\   
isinstance_create)r   s    r    $test_no_public_constructor_metaclassr      s^    !4  
y	! Q l**1*5|DDD	 s   
AA%c                    t        j                  d      } d | _        d| j                  _        d| j                  _        t        | j                  t        |              | j                  j                  dk(  sJ | j                  j                  dk(  sJ t        j                  d      }d |_        d|j                  _        d|j                  _        t        j                         |_        d|j                  _        t        j                         |_	        d|j                  _
        d|j                  _        d	 |_        d|j                  _
        d
x|j                  _        |j                  _        t        ddd d d      |_        |j                  |j                  _        t        dt        |             |j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ |j                  j                  d
k(  sJ |j                  j                  dk(  sJ |j                  j                  d
k(  sJ |j                  j                  dk(  sJ |j                  j                  dk(  sJ t        |j                  d      rJ |j                  j                   j                  dk(  sJ |j                  j                   j                  dk(  sJ |j                  j                   j                  dk(  sJ | j                          |j                          |j                          |j                         j!                          y )Nnot_trioc                      y r   rD   rD   rA   r    rW   z,test_fixup_module_metadata.<locals>.<lambda>       rA   	some_funcztrio._somemodule_implc                      y r   rD   rD   rA   r    rW   z,test_fixup_module_metadata.<locals>.<lambda>   r   rA   _something_elsenot_funclike	only_namec                      y r   rD   rD   rA   r    rW   z,test_fixup_module_metadata.<locals>.<lambda>   r   rA   _private	SomeClassrD   c                     y r   rD   r}   s    r    rW   z,test_fixup_module_metadata.<locals>.<lambda>   r   rA   c                     y r   rD   r   s    r    rW   z,test_fixup_module_metadata.<locals>.<lambda>   r   rA   )r;   methodztrio.somemoduleonly_has_namer=   r   zSomeClass.method)types
ModuleTyper   r<   r=   r   varsSimpleNamespacer   r   r3   r   typer   	recursionhasattrr   )non_trio_modulemods     r    test_fixup_module_metadatar      s   &&z2O ,O)4O&-8O*/22D4IJ$$--<<<$$11[@@@ 

2
3C CM.CMM!2CMM ,,.C .C --/C#:C !,C  CL5CLL8BBCLLCLL5 
)'	
CM "mmCMM+T#Y7==!![000==##'8888==%%444$$666<<  J...<<""&====<<$$
222%%888''+<<<<s((.999==((H444==**.????==,,0BBBBMMOLLNMMOrA   r"   )*
__future__r   r_   r   typingr   r   collections.abcr   r   r   r&   r.   r2   r	   r
    r   _core._tests.tutilr   r   _utilr   r   r   r   r   r   r   r8   r   r   r,   r@   rF   markfilterwarningsre   rm   rv   r   r   rD   rA   r    <module>r      s    " 
  )DD   -    -.CL..>03 FG< H<~,"E ArA   