
    gN                        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 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)	FrameTypereturnNonec                   K   t          j        t           j                  } t          t           j                  5 }t          j        t           j                   t          j        t           j                   t          j                     d {V  t          j        t           j                   t          j                     d {V  |2 3 d {V }|t           j        k    sJ  n6 t          |          dk    sJ t          j        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   raise_signalr   wait_all_tasks_blockedr
   pytestraisesRuntimeError	__anext__)origreceiversignums      d/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/trio/_tests/test_signals.pytest_open_signal_receiverr      s|     FM**D	fm	,	, 7 	FM***FM****,,,,,,,,,FM****,,,,,,,,,$ 	 	 	 	 	 	 	&V]****E % (11Q6666FM***$ 	 	 	 	 	 	 	&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D5 +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	C
 
 
   "&-99 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 		               FM**d222222s5   A<A%A<%A)	)A<,A)	-A<<B B c                     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9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                 0  K   t          t          j        t          j                  5 } 	 t	          t          j        t          j                             d }t          d          D ]}t          j        t          j                   t          j        t          j                   t                       d {V  || 	                                 d {V }o| 	                                 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 
# 
##FM222#FM222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"E;8F:E;;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          j        t          j                   t          j        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          j        t          j                   t          j        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          j        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          j        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          j        t          j                   t          j        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   }   sI     #&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#FM222#FM222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&2=B;/C&;B?	?C&B?	C&&C*-C*%H=A&G0$H0G4	4H7G4	8HHH8K(J=1K(=K	K(K	K((K,/K,'N-AN
N-N	N-N	N--N14N1"T8<%R+!A&RR+RR+RR+T8+R/	/T82R/	3A7T88T<?T<r0   )
__future__r   r   typingr   r   r   r1   trio.testingr    r   _signalsr	   r
   r   typesr   r   r#   r(   r+   r5   r;   rE   rQ   ri   r&   r'   r   <module>rp      sd   " " " " " "  * * * * * * * *   $ $ $ $ $ $       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'   