
    "
3jd                     >   S SK r S SKr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  S SK	J
r
Jr  S SKJr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  \R0                  R2                  R4                  r\R0                  R2                  R6                  r\R0                  R2                  R8                  r\R0                  R2                  R:                  r\R0                  R2                  R<                  r\R0                  R2                  R>                  rSSSSS.r \RB                  " \S:  S5       " S S\5      5       r"\RB                  " \S:  S5       " S S\5      5       r#\RB                  " \S:  S5       " S S\5      5       r$\%S:X  a  \RL                  " 5         gg)    N)Counter)Mockcall)TestCaseskip_if_sysmon_unsupported)jitobjmode)	PYVERSION)_numba_unpicklec                     SU l         U $ )z4Decorator to enable sys.monitoring on the dispatcherT)_enable_sysmon)disps    Y/home/wildlama/miniconda3/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"      )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 rS rS r	  SS	 jr
\S
 5       r\S 5       r\S 5       rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)TestMonitoring1   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.setUp:   s     qA~~&&q)5$$%5a%89  8ii./1C MM# #3"4$-((Q,* 4??2~~11r   c                     [        5       nU R                  R                  U R                  R                  1nUR                   H'  nUR
                  tpVXS;   d  M  X%/UQ7==   S-  ss'   M)     U$ r   )r   r   __code__r   _mock_call_args_listargs)r=   	mockcallsmatchedtarget_codeobjscb_argscodeobjrF   s          r   gather_mock_calls_multithreads-TestMonitoring.gather_mock_calls_multithreadsP   sf    )==114883D3DE 55G&||W)(4()Q.) 6 r   c                    U R                  U[           5      nU R                  [        U5      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                  X R                  R                  U4   S5        U R                  X R                  R                  S4   S5        U R                  UR                  5       S5        g s  snf )Nr   RESUMEr      )rL   PY_STARTassertEquallendisget_instructionsr   opnameoffsetrD   r   total)r=   allcallsrH   r   instrW   s         r   !check_py_start_calls_multithreads0TestMonitoring.check_py_start_calls_multithreadsZ   s     55hx6HIWq) //> )>a88x' > )a!7!7!?@!D!2!2A!56:!,)s   C:.C: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   rO   r   )rQ   rR   
call_countrT   rU   r   rV   rW   r   rD   r   assert_has_calls)r=   rY   rG   r   rZ   rW   callss          r   check_py_start_calls#TestMonitoring.check_py_start_callsh   s     X&	--q1//> )>a88x' > )admm,,f5dhh''+-""5))s   C	 C	c                    U R                  U[           5      n[        R                  " U R                  5       Vs/ s H  o3PM     snS   R
                  nU R                  X R                  R                  SU R                  4   S5        U R                  X R                  R                  X@R                  4   S5        U R                  UR                  5       S5        g s  snf )Nr   r   rP   )rL   	PY_RETURNrT   rU   r   rW   rR   r   rD   r9   r:   rX   )r=   rY   rH   r   rW   s        r   "check_py_return_calls_multithreads1TestMonitoring.check_py_return_calls_multithreadsv   s     55hy6IJ 11$--@A@!@A"ELL!2!2At!FGKMM**F4H4HHI1	
 	!, Bs   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   rd   r   )re   rR   r^   rT   rU   r   rW   r   r   rD   r9   r:   r_   )r=   rY   rG   r   rW   r`   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                  XiU
5        XU	'   X-  nM7     [        R                  R                  Xh5        Ub  U" 5         U" U6   Ub  U" 5         [        R                  R                  U[        5        U H#  n	[        R                  R                  XiS 5        M%     [        R                  R                  U5        U$ ! Ub  U" 5         [        R                  R                  W[        5        U H#  n	[        R                  R                  XiS 5        M%     [        R                  R                  U5        f = f)Ncustom_monitorr   )	r<   r1   r2   use_tool_idr   register_callback
set_events	NO_EVENTSfree_tool_id)r=   functionrF   eventsr<   barrier_tool_id	callbacksevent_bitmaskeventcallbacks              r   run_with_eventsTestMonitoring.run_with_events   sB   
	2<<"NN&&x1ABIM600(K#+% &	   NN%%h>"	dO " 	NN%%h	:00$G  NN''1 " 	NN%%h	:00$G  NN''1s   BD A8Fc                     U R                  U R                  U R                  4[        45      nU R	                  [        U5      S5        U R                  U5        g r   )rz   r   r8   rQ   rR   rS   ra   r=   cbs     r   test_start_eventTestMonitoring.test_start_event   sF     !!$--$((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   )rz   r   r8   re   rR   rS   ri   r}   s     r   test_return_event TestMonitoring.test_return_event   sF     !!$--$((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   )	rz   r   r8   rQ   re   rR   rS   ri   ra   r}   s     r   test_call_event_chain$TestMonitoring.test_call_event_chain   s\     !!$--$((#+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   rl   r   r   )r   r<   r1   r2   rm   rQ   re   r   rn   set_local_eventsrD   r8   rq   rR   py_funcrS   assert_not_called)	r=   r   r<   rv   rw   rs   rx   ry   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   rl   r   )r<   r1   r2   rm   r   rD   rQ   rn   r   r   r8   rR   rq   )r=   r   r<   r   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   )r1   r2   rs   PY_YIELDrz   assert_called_oncer   r   )r=   r   rx   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)Nrl   )rQ   r<   r1   r2   rm   ro   
get_eventsrR   r   r8   r:   rp   rq   )r=   rx   r<   active_eventsr   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_valuerl   )r   r1   r2   DISABLErQ   r<   rm   ro   rn   r   rR   r   r8   r:   assert_calledrestart_eventsrp   rq   )r=   ry   rx   r<   r   r   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)Nrl   c                 V   > U (       a!  [         R                  R                  TT5        g g r   )r1   r2   ro   )switch_on_eventrx   r<   s    r   objmode_enable_eventGTestMonitoring.test_mutation_from_objmode.<locals>.objmode_enable_eventr  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>.foov  s1     (0 z! Wz!s   	
0r   r   r   )r<   r1   r2   rm   re   r   rn   r   r   r   ro   rp   r   rR   r^   rq   )r=   ry   r   rx   r   r<   s      @@@r   test_mutation_from_objmode)TestMonitoring.test_mutation_from_objmodee  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   )r1   r2   DEBUGGER_IDrp   COVERAGE_IDrQ   r;   re   OPTIMIZER_IDitemsrm   r   rn   keysro   r   r8   rq   rR   rS   r   ra   ri   )r=   tool_ids_2_eventsall_callbacksr<   rs   rw   rv   rx   ry   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   rl   r   r   r   )r   r   r   r<   r1   r2   rm   rn   re   RAISE	PY_UNWINDro   r   rp   r   call_args_listrR   rF   r   rD   r   assertIsInstanceKeyErrorr   assertInstrrq   )r=   ret_callbackraise_callbackunwind_callbackr   store_raisedr<   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   rl   r   r   r   r"   )r   r   r   r<   r1   r2   rm   rn   re   r   STOP_ITERATIONro   r   rp   r   r   rR   rF   r   rD   r   r^   r   r   r   r   r   	_getframef_coder   rq   )r=   return_callbackr   stopiter_callbackr   r   r<   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_effectrl   )r   r   rQ   r<   r1   r2   rm   ro   rn   r   r8   rp   rq   r   r   r   )r=   r@   ry   r   rx   r<   r   s          r   6test_raising_callback_unwinds_from_jit_on_success_pathETestMonitoring.test_raising_callback_unwinds_from_jit_on_success_pathi  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>.LocalExceptioni  r   N__name__
__module____qualname____firstlineno____static_attributes__r   r   r   LocalExceptionr	        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   rl   r"   r   r   r   )r   r   	Exceptionr   r   r   r<   r1   r2   rm   ro   rn   rp   rq   r   rR   r^   r   rF   r   rD   r   r   r   assertIsr  r   r   )r=   msg_callbackry   r  r   rx   r<   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_path  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   rl   r   r   )r   r   r  r   r   r   r<   r1   r2   rm   ro   rn   rp   rq   r   r   rR   rF   r   rD   typer   r  r  )r=   r  ry   r  r   rx   r<   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                   ^ ^
^ [         R                  " S5      m
U
4S jmU4S jnU4S j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 )Nr   c                  &   > T R                  5         g r   )wait)rt   s   r   
barrier_cbCTestMonitoring.test_monitoring_multiple_threads.<locals>.barrier_cb  s    LLNr   c                   >  U R                  U R                  U R                  4[        4[        R
                  R                  TS9nU R                  [        U5      S5        U R                  U5        g ! [         a>  nUR                  SR                  [        R                  " U5      5      5         S nAg S nAff = fN)r<   rt   r    )rz   r   r8   rQ   r1   r2   r   rR   rS   r[   r  putr6   	tracebackformat_exceptionr=   qr~   er)  s       r   t1_work@TestMonitoring.test_monitoring_multiple_threads.<locals>.t1_work  s    
>))$--$((+3+25..2L2L2< * >
   R!,66r: >bggi88;<==>   A1A5 5
B=?4B88B=c                   >  U R                  U R                  U R                  4[        4[        R
                  R                  TS9nU R                  [        U5      S5        U R                  U5        g ! [         a>  nUR                  SR                  [        R                  " U5      5      5         S nAg S nAff = fr,  )rz   r   r8   re   r1   r2   r   rR   rS   rf   r  r.  r6   r/  r0  r1  s       r   t2_work@TestMonitoring.test_monitoring_multiple_threads.<locals>.t2_work  s    
>))$--$((+4,25..2L2L2< * >
   R!,77; >bggi88;<==>r6  )targetrF   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)r2  r=   s    r   assert_empty_queueKTestMonitoring.test_monitoring_multiple_threads.<locals>.assert_empty_queue$  sG    wwyA~''))!%%'N ''))		67 r   )	threadingBarrierqueueQueueThreadstartr6   )r=   r4  r8  q1t1q2t2threadstrA  rt   r)  s   `         @@r    test_monitoring_multiple_threads/TestMonitoring.test_monitoring_multiple_threads  s     ##A&		>	> [[]WD":>[[]WD":>(AGGI AFFH 	8 	22r   )r8   r   r:   r   r9   r<   )NN)r  r  r  r  rA   rL   r[   ra   rf   ri   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r$  rO  r  r   r   r   r+   r+   1   s?   2,-*	-*  ?C $#J  &  &  '  '  &  &.1B1&)21*  "1  "1H  (1  (1T  ?-  ?-B  A.  A.F  P.  P.d  .  .6  9:  9:v  .:  .:`  8  8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+   r   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_use1  sD     ''(A(A(8(:/3Z.@ ( B 	k3q6*r   r   N)r  r  r  r  rX  r  r   r   r   rR  rR  .  s    +r   rR  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\	R                  " \R                  S
S S:  S5      \R
                  " SS0S9S 5       5       rSrg
)TestMonitoringEnvVarControli<  NUMBA_ENABLE_SYS_MONITORINGr-  )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>.fooA  r   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>.fooJ  r   r   ra  rc  s     r   test_override_off-TestMonitoringEnvVarControl.test_override_offG  rf  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>.fooS  r   r   )r   
assertTruer   rc  s     r   test_override_on,TestMonitoringEnvVarControl.test_override_onP  s*     
	 
	 	**+r   Nr"   )r"   r%   rP   zneeds Python 3.14.4+c                    SSK Jn  [        R                  " SS9 n[        R                  " S[
        5        U" SS9S 5       nU R                  UR                  5        U R                  U" S5      S	5        U R                  U" S	5      S
5        S S S 5        U R                  [        W5      S5        [        US   R                  5      nU R                  SU5        g ! , (       d  f       NT= f)Nr   )r   T)recordalways)nopythonc                     U S-   $ r   r   r   s    r   r   UTestMonitoringEnvVarControl.test_userwarning_when_jit_sysmon_unavailable.<locals>.foof  s    1ur   r   r   r"   zsys.monitoring)numbar   warningscatch_warningssimplefilterUserWarningrq  r   rR   rS   r   messager   )r=   r   wr   r@   s        r   ,test_userwarning_when_jit_sysmon_unavailableHTestMonitoringEnvVarControl.test_userwarning_when_jit_sysmon_unavailableY  s     	$$D1Q!!(K8$   OOC../SVQ'SVQ' 2 	Q#!A$,,&, 21s   A3C
C*r   )r  r  r  r  r   run_test_in_subprocessrd  rk  rr  unittest
skipUnlessr1   version_infor  r  r   r   r   r[  r[  <  s    $$.35-5- $$.46-6- $$.46,6, !
* $$.46-6	-r   r[  __main__)'rT   rE  r1   rC  r/  r  r{  collectionsr   unittest.mockr   r   numba.tests.supportr   r   rz  r   r	   numba.core.utilsr
   numba.core.serializer   r   r    r2   rs   rQ   re   r   r   r   rp   r5   r  r+   rR  r[  r  mainr   r   r   <module>r     s   
  
      $ D  & 0	 ++~~$$--H%%//INN!!''E%%//I^^**99N%%//I #""#%  
Y')+?@yX y Ayx 
Y')+?@
+X 
+ A
+ 
Y')+?@3-( 3- A3-l zMMO r   