
    sh                        S SK r S SKrS SKrS SKrS SKrS SKJrJr  S SKJ	r	  S SK
JrJr  S SKJr  S SKJr  S rS r\S	;   a  \R&                  R(                  R*                  r\R&                  R(                  R,                  r\R&                  R(                  R.                  r\R&                  R(                  R0                  r\R&                  R(                  R2                  r\R&                  R(                  R4                  rS
SSSS.r\R8                  " \S:  S5       " S S\	5      5       r\R8                  " \S:  S5       " S S\	5      5       r\R8                  " \S:  S5       " S S\	5      5       r\ S:X  a  \RB                  " 5         gg)    N)Mockcall)TestCase)jitobjmode)	PYVERSION)_numba_unpicklec                     SU l         U $ )z4Decorator to enable sys.monitoring on the dispatcherT)_enable_sysmon)disps    s/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_sys_monitoring.pyr   r      s    DK    c                  L   ^ [         [        S5      S 5       5       mU4S jn TU 4$ )Nint64(int64)c                     U S-   $ N    xs    r   foogenerate_usecase.<locals>.foo   s     1ur   c                     > ST" U S-   5      -  $ )N      r   )r   r   s    r   call_foo"generate_usecase.<locals>.call_foo   s    3q1u:~r   )r   r   )r   r   s    @r   generate_usecaser      s3       =r   )      )r       DebuggerCoverageProfiler	Optimizer)r   r   r   r   r   zneeds Python 3.12+c                       \ rS rSrS rS rS rSS jrS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rSrg)TestMonitoring.   c                    / n[        S5       H=  n[        R                  R                  U5      c  M%  UR	                  [
        U   5        M?     U(       a%  SSR                  U5       3nU R                  U5        [        5       u  U l	        U l
        SU l        U R                  S-   S-   U l        SU R                  -  U l        [        R                  R                  U l        g )N   zVCannot run monitoring tests when other monitors are active, found monitor(s) of type: z, 
   r   r   r   )rangesys
monitoringget_toolappendTOOL2MONITORTYPEjoinskipTestr   r   r   arg
foo_resultcall_foo_resultPROFILER_IDtool_id)selfmonitor_kindsimsgs       r   setUpTestMonitoring.setUp7   s     qA~~&&q)5$$%5a%89  8ii./1C MM# #3"4$-((Q,* 4??2~~11r   c                    U[            nU R                  UR                  S5        [        R                  " U R
                  5       Vs/ s H  nUR                  S:X  d  M  UPM     nnUS   R                  n[        U R
                  R                  U5      [        U R                  R                  S5      4nUR                  U5        g s  snf )Nr   RESUMEr   )PY_STARTassertEqual
call_countdisget_instructionsr   opnameoffsetr   __code__r   assert_has_calls)r:   allcalls	mockcallsr   instrH   callss          r   check_py_start_calls#TestMonitoring.check_py_start_callsM   s     X&	--q1//> )>a88x' > )admm,,f5dhh''+-""5))s   C	 C	c                    U[            nU R                  UR                  S5        [        R                  " U R
                  5       Vs/ s H  o3PM     snS   R                  n[        U R                  R                  SU R                  5      [        U R
                  R                  X@R                  5      /nUR                  U5        g s  snf )Nr   r   )	PY_RETURNrC   rD   rE   rF   r   rH   r   r   rI   r6   r7   rJ   )r:   rK   rL   r   rH   rN   s         r   check_py_return_calls$TestMonitoring.check_py_return_calls[   s     Y'	--q1 !11$--@A@!@A"ELLdhh''DOO<dmm,,f6J6JKM""5) Bs   C
Nc                     Uc  U R                   nOUn[        R                  R                  US5        0 nSnU H5  n[	        5       n	[        R                  R                  XXU	5        XU'   Xx-  nM7     [        R                  R                  XW5        U" U6   U H#  n[        R                  R                  XXS 5        M%     [        R                  R                  U[        5        [        R                  R                  U5        U$ ! U H$  n[        R                  R                  WUS 5        M&     [        R                  R                  W[        5        [        R                  R                  U5        f = f)Ncustom_monitorr   )	r9   r.   r/   use_tool_idr   register_callback
set_events	NO_EVENTSfree_tool_id)
r:   functionargseventsr9   _tool_id	callbacksevent_bitmaskeventcallbacks
             r   run_with_eventsTestMonitoring.run_with_eventsk   s   	2<<"NN&&x1ABIM600(K#+% &	   NN%%h>dO  00$G  NN%%h	:NN''1	  005$G  NN%%h	:NN''1s   BD A/E4c                     U R                  U R                  U R                  4[        45      nU R	                  [        U5      S5        U R                  U5        g r   )re   r   r5   rB   rC   lenrO   r:   cbs     r   test_start_eventTestMonitoring.test_start_event   sD    !!$--$((xkJR!$!!"%r   c                     U R                  U R                  U R                  4[        45      nU R	                  [        U5      S5        U R                  U5        g r   )re   r   r5   rS   rC   rh   rT   ri   s     r   test_return_event TestMonitoring.test_return_event   sD    !!$--$((ylKR!$""2&r   c                     U R                  U R                  U R                  4[        [        45      nU R                  [        U5      S5        U R                  U5        U R                  U5        g )Nr   )	re   r   r5   rB   rS   rC   rh   rT   rO   ri   s     r   test_call_event_chain$TestMonitoring.test_call_event_chain   sZ    !!$--$((#+Y"79 	R!$""2&!!"%r   c                 J   [        S5      S 5       n U R                  n[        R                  R	                  US5        0 nSn[
        [        4nU H5  n[        5       n[        R                  R                  X&U5        XsU'   XF-  nM7     [        R                  R                  X!R                  U5        U" U R                  5      nU H#  n[        R                  R                  X&S 5        M%     [        R                  R                  X!R                  S5        [        R                  R                  U5        U R                  XR                  U R                  5      5        U R                  [        U5      S5        U[
           R!                  5         U[           R!                  5         g ! W H$  n[        R                  R                  WUS 5        M&     [        R                  R                  WUR                  S5        [        R                  R                  U5        f = f)Nr   c                     U S-   $ )Nr    r   r   s    r   r   PTestMonitoring.test_instrumented_code_does_not_trigger_numba_events.<locals>.foo       q5Lr   rW   r   r   )r   r9   r.   r/   rX   rB   rS   r   rY   set_local_eventsrI   r5   r\   rC   py_funcrh   assert_not_called)	r:   r   r9   ra   rb   r_   rc   rd   results	            r   4test_instrumented_code_does_not_trigger_numba_eventsCTestMonitoring.test_instrumented_code_does_not_trigger_numba_events   s   	^		 
		1llGNN&&w0@AIM	*F600J#+% &	   NN++G\\,9;]F00F  NN++G\\1ENN''0 	TXX!67Y+(--/)..0  00%F  NN++GS\\1ENN''0s   B3F, ,A6H"c                 T   S n U R                   n[        R                  R                  US5        [        R                  R	                  X!R
                  [        5        [        R                  R                  U[        [        5       5        [        U5      " U R                  5      nU R                  X1" U R                  5      5        [        R                  R                  U[        S 5        [        R                  R	                  X!R
                  S5        [        R                  R                  U5        g ! [        R                  R                  W[        S 5        [        R                  R	                  X!R
                  S5        [        R                  R                  U5        f = f)Nc                     U S-   $ r   r   r   s    r   r   BTestMonitoring.test_instrumented_code_can_be_compiled.<locals>.foo   s    q5Lr   rW   r   )r9   r.   r/   rX   rw   rI   rB   rY   r   r   r5   rC   r\   )r:   r   r9   rz   s       r   &test_instrumented_code_can_be_compiled5TestMonitoring.test_instrumented_code_can_be_compiled   s   		1llGNN&&w0@ANN++G\\8LNN,,WhGXdhh'FVS]3NN,,WhENN++G\\1ENN''0 NN,,WhENN++G\\1ENN''0s   CD7 7A0F'c                    S n[         R                  R                  R                  nS nU" U5      nU R	                  USU45      nXR   R                  5         U" [        5      nU R	                  USU45      nXr   R                  5         g )Nc                 F   ^ U " S5      S 5       mU " S5      U4S j5       nU$ )Nzvoid()c               3      #    Sv   g 7f)Nr,   r   r   r   r   producerTTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate.<locals>.producer   s
     s   zint64()c                  (   > T" 5       n [        U 5      $ N)next)pr   s    r   consumerTTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate.<locals>.consumer   s    JAwr   r   )decr   r   s     @r   generateBTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate   s8    ]  ^  Or   c                     S $ )Nc                     U $ r   r   )fns    r   <lambda>TTestMonitoring.test_unhandled_events_are_ignored.<locals>.<lambda>.<locals>.<lambda>   s    r   r   )sigs    r   r   BTestMonitoring.test_unhandled_events_are_ignored.<locals>.<lambda>   s    mr   r   )r.   r/   r_   PY_YIELDre   assert_called_oncer   ry   )r:   r   rc   wrapperpy_consumerpy_cbnb_consumernb_cbs           r   !test_unhandled_events_are_ignored0TestMonitoring.test_unhandled_events_are_ignored   s~    
	 %%..+w'$$["x@'')sm$$["x@&&(r   c                     [         nU R                  n[        R                  R	                  US5        [        R                  R                  X!5        [        R                  R                  U5      nU R                  X15        U R                  U R                  5      n[        R                  R                  U5      nU R                  X15        U R                  X@R                  5        [        R                  R                  U[        5        [        R                  R                  U5        g ! [        R                  R                  W[        5        [        R                  R                  U5        f = f)NrW   )rB   r9   r.   r/   rX   rZ   
get_eventsrC   r   r5   r7   r[   r\   )r:   rc   r9   active_eventsrz   s        r    test_event_with_no_callback_runs/TestMonitoring.test_event_with_no_callback_runs   s    
	1EllGNN&&w0@ANN%%g5NN55g>M]2]]488,FNN55g>M]2V%9%9:NN%%gy9NN''0 NN%%gy9NN''0s   C'D- -AE2c                    [        [        R                  R                  S9n [        nU R
                  n[        R                  R                  US5        [        R                  R                  X25        [        R                  R                  X2U5        [        R                  R                  U5      nU R                  XB5        U R                  U R                  5      n[        R                  R                  U5      nU R                  XB5        U R                  XPR                  5        UR                  5         [        R                  R                  5         [        R                  R                  X2S 5        [        R                  R                  U[         5        [        R                  R#                  U5        g ! [        R                  R                  5         [        R                  R                  WWS 5        [        R                  R                  U[         5        [        R                  R#                  U5        f = f)N)return_valuerW   )r   r.   r/   DISABLErB   r9   rX   rZ   rY   r   rC   r   r5   r7   assert_calledrestart_eventsr[   r\   )r:   rd   rc   r9   r   rz   s         r   test_disable_from_callback)TestMonitoring.test_disable_from_callback  sx    S^^%;%;<	1EllGNN&&w0@ANN%%g5NN,,WXFNN55g>M]2]]488,FNN55g>M]2V%9%9:""$ NN))+NN,,WTBNN%%gy9NN''0 NN))+NN,,WeTBNN%%gy9NN''0s   DF< <BI c                   ^^^  U R                   m[        R                  R                  TS5        [        m[        5       n[        R                  R                  TTU5        UU4S jm[        [        S5      U4S j5       5       nU" S5        UR                  5         U" S5        [        R                  R                  T[        5        UR                  5         U R                  UR                  S5        [        R                  R                  T[        5        [        R                  R                  TTS 5        [        R                  R                  T5        g ! [        R                  R                  T[        5        [        R                  R                  TTS 5        [        R                  R                  T5        f = f)NrW   c                 V   > U (       a!  [         R                  R                  TT5        g g r   )r.   r/   rZ   )switch_on_eventrc   r9   s    r   objmode_enable_eventGTestMonitoring.test_mutation_from_objmode.<locals>.objmode_enable_event>  s    "NN--gu= #r   r   c                 f   > [            T" U 5        S S S 5        U S-   $ ! , (       d  f       U S-   $ = f)N   )r   )enabler   s    r   r   6TestMonitoring.test_mutation_from_objmode.<locals>.fooB  s1     (0 z! Wz!s   	
0r   r   r   )r9   r.   r/   rX   rS   r   rY   r   r   ry   rZ   r[   r   rC   rD   r\   )r:   rd   r   rc   r   r9   s      @@@r   test_mutation_from_objmode)TestMonitoring.test_mutation_from_objmode2  sD   '	1 llGNN&&w0@AEvHNN,,WeXF>  " ! " F&&( F NN%%gy9""$ X00!4NN%%gy9NN,,WeTBNN''0 NN%%gy9NN,,WeTBNN''0s   C1E A&Gc           	         [         R                  R                  [        4[         R                  R                  [
        4[         R                  R                  [        4[         R                  R                  [
        [        40n0 n UR                  5        Hu  u  p4[         R                  R                  USU 35        Sn0 nXbU'   U H?  n[        5       nU[        :w  a   [         R                  R                  X7U5        XU'   XW-  nMA     Mw     UR                  5        H#  n[         R                  R                  UW5        M%     U R                  U R                   5        UR                  5        H}  u  p4U H/  nU[        :w  d  M  [         R                  R                  X7S 5        M1     [         R                  R                  U[        5        [         R                  R#                  U5        M     U[         R                  R                     n	U R%                  ['        U	5      S5        U	[           nUR)                  5         U[         R                  R                     n
U R%                  ['        U
5      S5        U R+                  U
5        U[         R                  R                     nU R%                  ['        U5      S5        U R-                  U5        U[         R                  R                     nU R%                  ['        U5      S5        U R+                  U5        U R-                  U5        g ! UR                  5        H}  u  p4U H/  nU[        :w  d  M  [         R                  R                  X7S 5        M1     [         R                  R                  U[        5        [         R                  R#                  U5        M     f = f)Ncustom_monitor_r   r   r   )r.   r/   DEBUGGER_IDr[   COVERAGE_IDrB   r8   rS   OPTIMIZER_IDitemsrX   r   rY   keysrZ   r   r5   r\   rC   rh   ry   rO   rT   )r:   tool_ids_2_eventsall_callbacksr9   r_   rb   ra   rc   rd   dbg_toolcov_tool	prof_toolopt_tools                r   test_multiple_tool_id$TestMonitoring.test_multiple_tool_id\  s    !^^77) ^^77( ^^77) ^^88"*I!7	: 	5#4#:#:#<**7ogY4OP !	)2g&#E#vH	)889AC'/e$!*M $ $= -113))'=A 4MM$((# $5#:#:#<#E	)88N $ ))'9=++G4 $= !!;!;<X*I&""$ !!;!;<X*!!(+ "#.."<"<=	Y+""9- !!<!<=X*!!(+""8,= $5#:#:#<#E	)88N $ ))'9=++G4 $=s   CL1 1#OA,Oc                 
  ^ [        5       n[        5       n[        5       nSm[        [        S5      U4S j5       5       nS n U R                  n[        R
                  R                  US5        [        R
                  R                  U[        U5        [        R
                  R                  U[        U5        [        R
                  R                  U[        U5        [        R
                  R                  U[        [        -  [        -  5         U" 5         [        R
                  R                  U[        5        UR                  5         UR                  S   nU R!                  UR"                  S   [$        R&                  5        U R!                  UR"                  S   S   [        5        U R!                  UR"                  S   S   S   T5        UR)                  5         UR                  S   n	U R!                  U	R"                  S   [$        R&                  5        U R+                  U	R"                  S   [,        5        UR                  S   n
U R!                  U
R"                  S   UR.                  R&                  5        U R+                  U
R"                  S   [        5        U R1                  T[3        U
R"                  S   5      5        UR                  5         UR                  S   nU R!                  UR"                  S   UR.                  R&                  5        U R+                  UR"                  S   [        5        U R1                  T[3        UR"                  S   5      5        [        R
                  R                  U[        5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R5                  U5        U R1                  T[3        U5      5        g ! [         a  nUn S nAGN4S nAff = f! [        R
                  R                  W[        5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R5                  U5        f = f)Nexception raised()c                     > [        T 5      er   )
ValueErrorr=   s   r   r   9TestMonitoring.test_raising_under_monitoring.<locals>.foo  s     S/!r   rW   r   r   r   )r   r   r   r9   r.   r/   rX   rY   rS   RAISE	PY_UNWINDrZ   r   r[   r   call_args_listrC   r^   r	   rI   r   assertIsInstanceKeyErrorrx   assertInstrr\   )r:   ret_callbackraise_callbackunwind_callbackr   store_raisedr9   raisesthe_callnumba_unpickle_callfoo_callunwind_callr=   s               @r   test_raising_under_monitoring,TestMonitoring.test_raising_under_monitoring  s   
 v& 		T	" 
 
	" .	1llGNN&&w0@ANN,,WiNNN,,We^LNN,,Wi-<>NN%%gy5/@9/LM& NN%%gy9 ++- $2215HX]]1-/G/GHX]]1-a0*=X]]1-a03S9 ((*"0"?"?"B055a8,557!!"5":":1"=xH%44Q7HX]]1-s{{/C/CD!!(--"2J?MM#s8==#345 ..0)88;K[--a0#++2F2FG!!+"2"21"5zBMM#s;#3#3A#678NN%%gy9NN,,WiFNN,,WeTBNN,,WiFNN''0c3|,-M  &%&@ NN%%gy9NN,,WiFNN,,WeTBNN,,WiFNN''0s9   CQ P9 IQ 9
QQQ QQ B4Tc                 b
  ^ [        5       n[        5       n[        5       nSm[        [        S5      U4S j5       5       nS n U R                  n[        R
                  R                  US5        [        R
                  R                  U[        U5        [        R
                  R                  U[        U5        [        R
                  R                  U[        U5        [        R
                  R                  U[        [        -  [        -  5         U" 5         [        R
                  R                  U[        5        UR                  5         UR                  S   nU R!                  UR"                  S   [$        R&                  5        U R!                  UR"                  S   S   [        5        U R!                  UR"                  S   S   S   T5        UR)                  5         U R!                  UR*                  S5        UR                  S   n	U R!                  U	R"                  S   [$        R&                  5        U R-                  U	R"                  S   [.        5        UR                  S   n
U R!                  U
R"                  S   UR0                  R&                  5        U R-                  U
R"                  S   [        5        U R3                  T[5        U
R"                  S   5      5        UR                  S   n[        R6                  " 5       R8                  nU R!                  UR"                  S   U5        U R-                  UR"                  S   [        5        U R3                  T[5        UR"                  S   5      5        UR;                  5         [        R
                  R                  U[        5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R=                  U5        U R3                  T[5        U5      5        g ! [         a  nUn S nAGN[S nAff = f! [        R
                  R                  W[        5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R                  U[        S 5        [        R
                  R=                  U5        f = f)	Nr   r   c                     > [        T 5      er   )StopIterationr   s   r   r   @TestMonitoring.test_stop_iteration_under_monitoring.<locals>.foo  s      $$r   rW   r   r   r   r    )r   r   r   r9   r.   r/   rX   rY   rS   r   STOP_ITERATIONrZ   r   r[   r   r   rC   r^   r	   rI   r   rD   r   r   rx   r   r   	_getframef_codery   r\   )r:   return_callbackr   stopiter_callbackr   r   r9   r   r   r   r   	meth_calltest_method_coder=   s                @r   $test_stop_iteration_under_monitoring3TestMonitoring.test_stop_iteration_under_monitoring  s    & F 		T	% 
 
	% :	1llGNN&&w0@ANN,,Wi-<>NN,,We-;=NN,,Wn->@NN%%g&/.&@5&HJ& NN%%gy9 ..0 '55a8HX]]1-/G/GHX]]1-a0-@X]]1-a03S9 ((*^66: #1"?"?"B055a8,557!!"5":":1"=xH &44Q7HX]]1-s{{/C/CD!!(--"2MBMM#s8==#345 '55a8I"}}55Y^^A.0@A!!).."3]CMM#s9>>!#456 //1NN%%gy9NN,,WiFNN,,WndKNN,,WeTBNN''0c3|,-_ ! &%&R NN%%gy9NN,,WiFNN,,WndKNN,,WeTBNN''0s9   CQ: Q  I;Q:  
Q7*Q2,Q: 2Q77Q: :B4T.c                 l   Sn[        [        U5      S9nS n [        nU R                  n[        R
                  R                  US5        [        R
                  R                  XT5        [        R
                  R                  XTU5        U R                  U R                  5        [        R
                  R                  WWS 5        [        R
                  R                  U[        5        [        R
                  R                  U5        UR                  5         U R                  U[        U5      5        g ! [         a  nUn S nANS nAff = f! [        R
                  R                  WWS 5        [        R
                  R                  U[        5        [        R
                  R                  U5        f = f)Ndeliberately broken callbackside_effectrW   )r   r   rB   r9   r.   r/   rX   rZ   rY   r   r5   r[   r\   r   r   r   )r:   r=   rd   r   rc   r9   r   s          r   6test_raising_callback_unwinds_from_jit_on_success_pathETestMonitoring.test_raising_callback_unwinds_from_jit_on_success_path2  s-   
 -JsO4	1EllGNN&&w0@ANN%%g5NN,,WXFHHTXX NN,,WeTBNN%%gy9NN''0##%c3|,-  	"!L	" NN,,WeTBNN%%gy9NN''0s+   BD4 4
E
>E E E

E A&F3c                 `  ^^ SnSm[        [        U5      S9n " S S[        5      m[        [	        S5      UU4S j5       5       nS n [
        nU R                  n[        R                  R                  US5        [        R                  R                  Xe5        [        R                  R                  XeU5        U" 5         [        R                  R                  WWS 5        [        R                  R                  U[        5        [        R                  R                  U5        UR                  5         U R                  UR                   S	5        UR"                  S
   nU R                  UR$                  S
   [&        R(                  5        U R+                  UR$                  S   [,        5        UR"                  S   n	U R                  U	R$                  S
   UR.                  R(                  5        U R1                  U	R$                  S   UR2                  5        UR"                  S   n
[        R4                  " 5       R6                  nU R                  U
R$                  S
   U5        U R1                  U
R$                  S   UR2                  5        U R1                  XBR2                  5        g ! [         a  nUn S nAGNS nAff = f! [        R                  R                  WWS 5        [        R                  R                  U[        5        [        R                  R                  U5        f = f)Nr   deliberately broken executionr   c                       \ rS rSrSrg)]TestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.LocalExceptioniZ  r   N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   LocalExceptionr   Z      r   r   r   c                     > T " T5      er   r   r   msg_executions   r   raisingVTestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.raising]       !//r   rW   r    r   r   r   )r   r   	Exceptionr   r   r   r9   r.   r/   rX   rZ   rY   r[   r\   r   rC   rD   r   r^   r	   rI   r   r   rx   assertIsr   r   r   )r:   msg_callbackrd   r  r   rc   r9   r   r   raising_callr   r   r   r   s               @@r   6test_raising_callback_unwinds_from_jit_on_raising_pathETestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_pathM  sp    67J|$<=	Y 	 
	T	0 
 
	0 	1EllGNN&&w0@ANN%%g5NN,,WXFI NN,,WeTBNN%%gy9NN''0 ,,a0 '55a8,11!4o6N6NO166q98D  ..q1**1-w/G/GHl''*H,@,@A ++A.	==?11*,<=innQ')=)=> 	l$8$899  	"!L	" NN,,WeTBNN%%gy9NN''0s,   	A8J- -
K7J?9K ?KK A&L-c                   ^	^
 SnSm
[        [        U5      S9n " S S[        5      m	[        [	        S5      U	U
4S j5       5       nS n [
        nU R                  n[        R                  R                  US5        [        R                  R                  Xe5        [        R                  R                  XeU5        U" 5         [        R                  R                  WWS 5        [        R                  R                  U[        5        [        R                  R                  U5        UR                  5         UR                  S	   nU R!                  UR"                  S	   UR$                  R&                  5        U R!                  [)        UR"                  S
   5      T	5        U R!                  [+        UR"                  S
   5      T
5        U R-                  XBR.                  5        g ! [         a  nUn S nAGN4S nAff = f! [        R                  R                  WWS 5        [        R                  R                  U[        5        [        R                  R                  U5        f = f)Nr   r   r   c                       \ rS rSrSrg)\TestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path.<locals>.LocalExceptioni  r   Nr   r   r   r   r   r    r   r   r   r   c                     > T " T5      er   r   r   s   r   r  UTestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path.<locals>.raising  r  r   rW   r   r   )r   r   r  r   r   r   r9   r.   r/   rX   rZ   rY   r[   r\   r   r   rC   r^   rx   rI   typer   r  r   )r:   r  rd   r  r   rc   r9   r   r  r   r   s            @@r   5test_raising_callback_unwinds_from_jit_on_unwind_pathDTestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path  s    67J|$<=	Y 	 
	T	0 
 
	0 	1EllGNN&&w0@ANN%%g5NN,,WXFI NN,,WeTBNN%%gy9NN''0##%  ..q1**1-w/G/GHl//23^D\..q12MB 	l$8$89!  	"!L	" NN,,WeTBNN%%gy9NN''0s,   	A8G# #
G:-G5/G= 5G::G= =A&I#c                 X  ^  S nS n[         R                  " 5       n[        R                  " UT U4S9n[         R                  " 5       n[        R                  " UT U4S9nXF4nU H  nUR	                  5         M     U H  nUR                  5         M     U 4S jn	U	" U5        U	" U5        g )Nc                 6    U R                  U R                  U R                  4[        4[        R
                  R                  S9nU R                  [        U5      S5        U R                  U5        g ! [         a  nUR                  U5         S nAg S nAff = fN)r9   r   )re   r   r5   rB   r.   r/   r   rC   rh   rO   r  putr:   qrj   es       r   t1_work@TestMonitoring.test_monitoring_multiple_threads.<locals>.t1_work  s~    	))$--$((+3+25..2L2L * N   R!,))"- a   A0A3 3
B=BBc                 6    U R                  U R                  U R                  4[        4[        R
                  R                  S9nU R                  [        U5      S5        U R                  U5        g ! [         a  nUR                  U5         S nAg S nAff = fr  )re   r   r5   rS   r.   r/   r   rC   rh   rT   r  r  r  s       r   t2_work@TestMonitoring.test_monitoring_multiple_threads.<locals>.t2_work  s~    	))$--$((+4,25..2L2L * N   R!,**2. ar  )targetr^   c                    > U R                  5       S:w  aW  U R                  5       (       d0  [        U R                  5       5        U R                  5       (       d  M0  TR	                  S5        g g )Nr   zqueue supposed to be empty)qsizeemptyprintgetfail)r  r:   s    r   assert_empty_queueKTestMonitoring.test_monitoring_multiple_threads.<locals>.assert_empty_queue  sG    wwyA~''))!%%'N ''))		67 r   )queueQueue	threadingThreadstartr3   )
r:   r  r  q1t1q2t2threadstr&  s
   `         r    test_monitoring_multiple_threads/TestMonitoring.test_monitoring_multiple_threads  s    
	
	 [[]WD":>[[]WD":>(AGGI AFFH 	8 	22r   )r5   r   r7   r   r6   r9   r   )r   r   r   r   r>   rO   rT   re   rk   rn   rq   r{   r   r   r   r   r   r   r   r   r   r  r  r3  r   r   r   r   r(   r(   .   sp    2,** 8&'&.1B1&)21*"1H(1T?-BA.FP.d.69:v.:`.r   r(   c                       \ rS rSrS rSrg)TestMonitoringSelfTesti  c                 ~    U R                  [        R                  SSSS0S9nU R                  S[	        U5      5        g )Nr(   rk   z-mcProfile)flagsz	skipped=1)subprocess_test_runnerr(   r   r   r   )r:   rs     r   +test_skipping_of_tests_if_monitoring_in_useBTestMonitoringSelfTest.test_skipping_of_tests_if_monitoring_in_use  sD     ''(A(A(8(:/3Z.@ ( B 	k3q6*r   r   N)r   r   r   r   r<  r   r   r   r   r6  r6    s    +r   r6  c                       \ rS rSr\R
                  " SS0S9S 5       r\R
                  " SS0S9S 5       r\R
                  " SS0S9S	 5       rS
r	g)TestMonitoringEnvVarControli  NUMBA_ENABLE_SYS_MONITORING )envvarsc                 R    [         S 5       nU R                  UR                  5        g )Nc                     U S-   $ r   r   r   s    r   r   9TestMonitoringEnvVarControl.test_default_off.<locals>.foo  rv   r   r   assertFalser   r:   r   s     r   test_default_off,TestMonitoringEnvVarControl.test_default_off  ,     
	 
	 	++,r   0c                 R    [         S 5       nU R                  UR                  5        g )Nc                     U S-   $ r   r   r   s    r   r   :TestMonitoringEnvVarControl.test_override_off.<locals>.foo  rv   r   rF  rH  s     r   test_override_off-TestMonitoringEnvVarControl.test_override_off  rK  r   1c                 R    [         S 5       nU R                  UR                  5        g )Nc                     U S-   $ r   r   r   s    r   r   9TestMonitoringEnvVarControl.test_override_on.<locals>.foo  rv   r   )r   
assertTruer   rH  s     r   test_override_on,TestMonitoringEnvVarControl.test_override_on  s*     
	 
	 	**+r   r   N)
r   r   r   r   r   run_test_in_subprocessrI  rP  rW  r   r   r   r   r?  r?    su    $$.35-5- $$.46-6- $$.46,6,r   r?  __main__)"rE   r(  r.   r*  unittestunittest.mockr   r   numba.tests.supportr   numbar   r   numba.core.utilsr   numba.core.serializer	   r   r   r/   r_   rB   rS   r   r   r   r[   r2   
skipUnlessr(   r6  r?  r   mainr   r   r   <module>rc     su   
  
   $ (  & 0	 ""~~$$--H%%//INN!!''E%%//I^^**99N%%//I #""#%  
Y')+?@w
X w
 Aw
t 
Y')+?@
+X 
+ A
+ 
Y')+?@,( , A,: zMMO r   