
     f	                        d dl mZ d dlZd dlmZm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 ddlmZ erd d	lmZ ddZddZddZddZddZddZddZddZddZdS )    )annotationsN)TYPE_CHECKINGNoReturn)RaisesGroup   )_core)_signal_handlerget_pending_signal_countopen_signal_receiver)signal_raise)	FrameTypereturnNonec                 |  K   t          j        t           j                  } t          t           j                  5 }t	          t           j                   t	          t           j                   t          j                     d {V  t	          t           j                   t          j                     d {V  |2 3 d {V }|t           j        k    sJ  n6 t          |          dk    sJ t	          t           j                   |2 3 d {V }|t           j        k    sJ  n6 t          |          dk    sJ 	 d d d            n# 1 swxY w Y   t          j	        t                    5  |                                 d {V  d d d            n# 1 swxY w Y   t          j        t           j                  | u sJ d S )Nr   )signal	getsignalSIGILLr   r   r   wait_all_tasks_blockedr
   pytestraisesRuntimeError	__anext__)origreceiversignums      [/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_signals.pytest_open_signal_receiverr      sp     FM**D	fm	,	, 7 	V]###V]###*,,,,,,,,,V]###*,,,,,,,,,$ 	 	 	 	 	 	 	&V]****E % (11Q6666V]###$ 	 	 	 	 	 	 	&V]****E % (11Q66666!7 7 7 7 7 7 7 7 7 7 7 7 7 7 7" 
|	$	$ # #  """""""""# # # # # # # # # # # # # # #FM**d222222s=   B E:C AED!+EEE(FFFc                 V  K   t          j        t           j                  } t          j        t
          d          5  t          t           j        d          5  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t           j                  | u sJ d S )Nz2(signal number out of range|invalid signal value)$matchi )r   r   r   r   r   
ValueErrorr   r   s    r   >test_open_signal_receiver_restore_handler_after_one_bad_signalr#   +   s     FM**D	N
 
 
   "&-99 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	               FM**d222222s5   A<A%A<%A)	)A<,A)	-A<<B B c                    K   t          j        t          d          5  t                      5  	 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 )NzNo signals were providedr   )r   r   	TypeErrorr        r   $test_open_signal_receiver_empty_failr(   6   s      	y(B	C	C	C  !## 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s.   A;A?	A?	AAAc                   K   t          j        t           j                  } t          t           j        t           j                  5  	 d d d            n# 1 swxY w Y   t          j        t           j                  | u sJ d S N)r   r   r   r   r"   s    r   @test_open_signal_receiver_restore_handler_after_duplicate_signalr+   <   s      FM**D	fmV]	;	;                 FM**d222222s   AAAc                    K   dd} t          j        t                    5  t          j                            t          j        |            d {V  d d d            d S # 1 swxY w Y   d S )Nr   r   c                 p   K   t          t          j                  5  	 d d d            d S # 1 swxY w Y   d S r*   )r   r   SIGINTr&   r'   r   naughtyz0test_catch_signals_wrong_thread.<locals>.naughtyE   s}      !&-00 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +//r   r   )r   r   r   trio	to_threadrun_syncrun)r/   s    r   test_catch_signals_wrong_threadr5   D   s          
|	$	$ 9 9n%%dh8888888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   1AA"%A"c                   K   t          t          j                  5  t          t          j                  5 } t          j                    4 d {V }|                    | j                   |                    | j                   d d d           d {V  n# 1 d {V 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 r*   )	r   r1   BusyResourceErrorr   r   r   open_nursery
start_soonr   )r   nurserys     r   "test_open_signal_receiver_conflictr;   M   s     	T+	,	, 7 7!&-00 	7H(** 7 7 7 7 7 7 7g""8#5666""8#56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7sX   CB45BB4
B!!B4$B!%B4(C4B8	8C;B8	<CCCc                    K   t          j                    } t          j                    }|                    | j        d           |                                  d {V  d S )NT)
idempotent)r1   Eventr   current_trio_tokenrun_sync_soonsetwait)evtokens     r   +wait_run_sync_soon_idempotent_queue_barrierrE   W   sW      	B$&&E	4000
''))OOOOOOOOOr'   c                   K   t          t          j        t          j                  5 } 	 t	          t          j        t          j                             d }t          d          D ]}t          t          j                   t          t          j                   t                       d {V  || 	                                 d {V }e| 	                                 d {V }|t          j        t          j        fv sJ ||k    sJ |}t          |           dk    r-| 	                                 d {V  t          |           dk    -n(# t          $ r dd l}|                                 Y nw xY wd d d            d S # 1 swxY w Y   d S )N
   r   )r   r   r   SIGFPEprintr   ranger   rE   r   r
   BaseException	traceback	print_exc)r   previous_gotrL   s        r   'test_open_signal_receiver_no_starvationrQ   ^   s      
fmV]	;	; "x	"&"6=11222H2YY 
# 
#V]+++V]+++ACCCCCCCCC#%-%7%7%9%9999999HH ( 2 2 4 4444444C6=&-"@@@@@(????"HH*84499((********* +84499 	" 	" 	" !!!!!	"%" " " " " " " " " " " " " " " " " "s5   FD"EF"E1.F0E11FFFc                 :
  K   t                      dfd} t          d           t          t          j        t          j        h|           5  t          t          j        t          j                  5 }t          t          j                   t          t          j                   d d d            n# 1 swxY w Y   t                       d {V  d d d            n# 1 swxY w Y   t          j        t          j        hk    sJ 	                                 t          d	           t          t          j        t          j        h|           5  t          t          j        t          j                  5 }t          t          j                   t          t          j                   t                       d {V  t          |          d	k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          j        hk    sJ 	                                 t          d
           t          t          j        ht          j                  5  t          t          j                  5 }t          t          j                   d d d            n# 1 swxY w Y   t                       d {V  d d d            n# 1 swxY w Y   t          d           t          t          j        ht          j                  5  t          t          j                  5 }t          t          j                   t                       d {V  t          |          dk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   dd}t          t          j        t          j        h|          5  t          j        t                    5 }t          t          j        t          j                  5 }t          t          j                   t          t          j                   t                       d {V  t          |          d	k    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        }|j        d         h}t#          |j        t                    sJ |                    |j        j        d                    |t          j        t          j        hk    sJ 	 d d d            d S # 1 swxY w Y   d S )NsignointframeFrameType | Noner   r   c                2                         |            d S r*   )add)rS   rU   delivered_directlys     r   direct_handlerzAtest_catch_signals_race_condition_on_exit.<locals>.direct_handler   s    u%%%%%r'      r         r   r   c                     t          |           r*   )r   )r   rU   s     r   raise_handlerz@test_catch_signals_race_condition_on_exit.<locals>.raise_handler   s    6"""r'   r   )rS   rT   rU   rV   r   r   )r   rT   rU   rV   r   r   )rA   rI   r	   r   r   rH   r   r   rE   clearr
   SIG_IGNr   r   r   valueargs
isinstance__context__rX   )rZ   r   r_   excinfoexcsignumsrY   s         @r   )test_catch_signals_race_condition_on_exitri   }   s1     #&55& & & & & & 
!HHH 
&-7	H	H < <!&-?? 	(8''''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( :;;;;;;;;;	< < < < < < < < < < < < < < <
 &-!?????	!HHH 
&-7	H	H ; ;!&-?? 	;8''''''=?????????+H55:::::		; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; &-!????? 
!HHH	&-&.	9	9 < <!&-00 	(H'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(9;;;;;;;;;< < < < < < < < < < < < < < < 
!HHH	&-&.	9	9 ; ;!&-00 	;H'''=?????????+H55:::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;; ; ; ; ; ; ; ; ; ; ; ; ; ; ;# # # # 
&-7	G	G 9 9]<(( 	?G%fmV]CC ?xV]+++V]+++ACCCCCCCCC/99Q>>>>>	? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? m8A;-#/<88888CO(+,,,6=&-8888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s6  %C23B1%C1B5	5C8B5	9CC #C %G33AGG3G 	 G3#G 	$G33G7:G7$K>J$K$J(	(K+J(	,KKKN(AM8,N8M<	<N?M<	 NNNT%RAQ, R,Q00R3Q04R7TR	T
R	A7TTTr0   )
__future__r   r   typingr   r   r   r1   trio.testingr    r   _signalsr	   r
   r   _utilr   typesr   r   r#   r(   r+   r5   r;   rE   rQ   ri   r&   r'   r   <module>rq      sv   " " " " " "  * * * * * * * *   $ $ $ $ $ $       V V V V V V V V V V              3 3 3 303 3 3 3   3 3 3 39 9 9 97 7 7 7   " " " ">>9 >9 >9 >9 >9 >9r'   