
    J/Ph                        d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d Zd Zed	v rfej        j        j        Zej        j        j        Zej        j        j        Zej        j        j        Zej        j        j        Zej        j        j        Zd
ddddZ ej        edk    d           G d de	                      Z ej        edk    d           G d de	                      Z ej        edk    d           G d de	                      Ze dk    r ej!                     dS dS )    N)Mockcall)TestCase)jitobjmode)	PYVERSION)_numba_unpicklec                     d| _         | S )z4Decorator to enable sys.monitoring on the dispatcherT)_enable_sysmon)disps    _/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_sys_monitoring.pyr   r      s    DK    c                  `    t           t          d          d                         fd} | fS )Nint64(int64)c                     | dz   S N    xs    r   foozgenerate_usecase.<locals>.foo   s     1ur   c                 &    d | dz             z  S )N      r   )r   r   s    r   call_fooz"generate_usecase.<locals>.call_foo   s    33q1u::~r   )r   r   )r   r   s    @r   generate_usecaser      sT       ^     =r   )      )r      DebuggerCoverageProfiler	Optimizer)r   r   r   r   r   zneeds Python 3.12+c                       e Zd Zd Zd Zd ZddZd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestMonitoringc                    g }t          d          D ]A}t          j                            |           |                    t
          |                    B|r-dd                    |           }|                     |           t                      \  | _	        | _
        d| _        | j        dz   dz   | _        d| j        z  | _        t          j        j        | _        d S )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   setUpzTestMonitoring.setUp7   s     q 	: 	:A~&&q))5$$%5a%8999 	1ii..1 1C MM# #3"4"4$-(Q,* 4?2~1r   c                 H   |t                    }|                     |j        d           d t          j        | j                  D             }|d         j        }t          | j        j        |          t          | j	        j        d          f}|
                    |           d S )Nr   c                 (    g | ]}|j         d k    |S )RESUME)opname.0r   s     r   
<listcomp>z7TestMonitoring.check_py_start_calls.<locals>.<listcomp>S   s.     ) ) )a8x'' '''r   r   )PY_STARTassertEqual
call_countdisget_instructionsr   offsetr   __code__r   assert_has_calls)r7   allcalls	mockcallsinstrH   callss         r   check_py_start_callsz#TestMonitoring.check_py_start_callsM   s     X&	-q111) )3/>> ) ) )adm,f55dh'++-""5)))))r   c                 \   |t                    }|                     |j        d           d t          j        | j                  D             d         j        }t          | j        j	        d| j
                  t          | j        j	        || j                  g}|                    |           d S )Nr   c                     g | ]}|S r   r   r@   s     r   rB   z8TestMonitoring.check_py_return_calls.<locals>.<listcomp>f   s    AAA!AAAr   r   )	PY_RETURNrD   rE   rF   rG   r   rH   r   r   rI   r3   r4   rJ   )r7   rK   rL   rH   rN   s        r   check_py_return_callsz$TestMonitoring.check_py_return_calls[   s     Y'	-q111 BAS1$-@@AAA"ELdh'DO<<dm,fd6JKKM""5)))))r   Nc                    	 || j         }n|}t          j                            |d           i }d}|D ];}t	                      }	t          j                            |||	           |	||<   ||z  }<t          j                            ||            ||  |D ]#}t          j                            ||d            $t          j                            |t                     t          j                            |           no# |D ]#}t          j                            ||d            $t          j                            |t                     t          j                            |           w xY w|S )Ncustom_monitorr   )	r6   r+   r,   use_tool_idr   register_callback
set_events	NO_EVENTSfree_tool_id)
r7   functionargseventsr6   _tool_id	callbacksevent_bitmaskeventcallbacks
             r   run_with_eventszTestMonitoring.run_with_eventsk   st   	2<"N&&x1ABBBIM ' '66005(KKK#+	% &N%%h>>>HdOO   H H005$GGGGN%%h	:::N''1111   H H005$GGGGN%%h	:::N''1111s   BD   A,E,c                     |                      | j        | j        ft          f          }|                     t          |          d           |                     |           d S r   )rd   r   r2   rC   rD   lenrO   r7   cbs     r   test_start_eventzTestMonitoring.test_start_event   sW    !!$-$(xkJJR!$$$!!"%%%%%r   c                     |                      | j        | j        ft          f          }|                     t          |          d           |                     |           d S r   )rd   r   r2   rS   rD   rf   rT   rg   s     r   test_return_eventz TestMonitoring.test_return_event   sW    !!$-$(ylKKR!$$$""2&&&&&r   c                     |                      | j        | j        ft          t          f          }|                     t          |          d           |                     |           |                     |           d S )Nr   )	rd   r   r2   rC   rS   rD   rf   rT   rO   rg   s     r   test_call_event_chainz$TestMonitoring.test_call_event_chain   su    !!$-$(#+Y"79 9 	R!$$$""2&&&!!"%%%%%r   c                 h   t          d          d             }	 | j        }t          j                            |d           i }d}t
          t          f}|D ];}t                      }t          j                            |||           |||<   ||z  }<t          j        	                    ||j
        |            || j                  }|D ]#}t          j                            ||d            $t          j        	                    ||j
        d           t          j                            |           np# |D ]#}t          j                            ||d            $t          j        	                    ||j
        d           t          j                            |           w xY w|                     ||                    | j                             |                     t          |          d           |t
                                                    |t                                                    d S )Nr   c                     | dz   S )Nr   r   r   s    r   r   zPTestMonitoring.test_instrumented_code_does_not_trigger_numba_events.<locals>.foo       q5Lr   rV   r   r   )r   r6   r+   r,   rW   rC   rS   r   rX   set_local_eventsrI   r2   r[   rD   py_funcrf   assert_not_called)	r7   r   r6   r`   ra   r^   rb   rc   results	            r   4test_instrumented_code_does_not_trigger_numba_eventszCTestMonitoring.test_instrumented_code_does_not_trigger_numba_events   s   	^			 	 
			1lGN&&w0@AAAIM	*F ' '6600%JJJ#+	% &N++GS\,9; ; ;S]]F G G00%FFFFN++GS\1EEEN''0000   G G00%FFFFN++GS\1EEEN''0000 	TX!6!6777Y+++(--///)..00000s   B-D3 3A-F c                 N   d }	 | j         }t          j                            |d           t          j                            ||j        t                     t          j                            |t          t                                  t          |          | j
                  }|                     | || j
                             t          j                            |t          d            t          j                            ||j        d           t          j                            |           d S # t          j                            |t          d            t          j                            ||j        d           t          j                            |           w xY w)Nc                     | dz   S r   r   r   s    r   r   zBTestMonitoring.test_instrumented_code_can_be_compiled.<locals>.foo   s    q5Lr   rV   r   )r6   r+   r,   rW   rq   rI   rC   rX   r   r   r2   rD   r[   )r7   r   r6   rt   s       r   &test_instrumented_code_can_be_compiledz5TestMonitoring.test_instrumented_code_can_be_compiled   sN   	 	 		1lGN&&w0@AAAN++GS\8LLLN,,WhGGGSXXdh''FVSS]]333N,,WhEEEN++GS\1EEEN''00000 N,,WhEEEN++GS\1EEEN''0000s   CD7 7A-F$c                 <   d }t           j        j        j        }d } ||          }|                     |d|f          }||                                           |t                    }|                     |d|f          }||                                          d S )Nc                 \     | d          d              | d          fd            }|S )Nzvoid()c               3      K   dV  d S )Nr)   r   r   r   r   producerzTTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate.<locals>.producer   s      r   zint64()c                  6                 } t          |           S N)next)pr|   s    r   consumerzTTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate.<locals>.consumer   s    HJJAwwr   r   )decr   r|   s     @r   generatezBTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate   sX    S]]  ] S^^    ^ Or   c                     d S )Nc                     | S r~   r   )fns    r   <lambda>zTTestMonitoring.test_unhandled_events_are_ignored.<locals>.<lambda>.<locals>.<lambda>   s     r   r   )sigs    r   r   zBTestMonitoring.test_unhandled_events_are_ignored.<locals>.<lambda>   s    mm r   r   )r+   r,   r^   PY_YIELDrd   assert_called_oncer   rs   )r7   r   rb   wrapperpy_consumerpy_cbnb_consumernb_cbs           r   !test_unhandled_events_are_ignoredz0TestMonitoring.test_unhandled_events_are_ignored   s    
	 
	 
	 %.++hw''$$["x@@e'')))hsmm$$["x@@e&&(((((r   c                    	 t           }| j        }t          j                            |d           t          j                            ||           t          j                            |          }|                     ||           |                     | j	                  }t          j                            |          }|                     ||           |                     || j
                   t          j                            |t                     t          j                            |           d S # t          j                            |t                     t          j                            |           w xY w)NrV   )rC   r6   r+   r,   rW   rY   
get_eventsrD   r   r2   r4   rZ   r[   )r7   rb   r6   active_eventsrt   s        r    test_event_with_no_callback_runsz/TestMonitoring.test_event_with_no_callback_runs   s1   
	1ElGN&&w0@AAAN%%gu555N55g>>M]E222]]48,,FN55g>>M]E222VT%9:::N%%gy999N''00000 N%%gy999N''0000s   C-D5 5AE;c                    t          t          j        j                  }	 t          }| j        }t          j                            |d           t          j                            ||           t          j                            |||           t          j        	                    |          }| 
                    ||           |                     | j                  }t          j        	                    |          }| 
                    ||           | 
                    || j                   |                                 t          j                                         t          j                            ||d            t          j                            |t                      t          j                            |           d S # t          j                                         t          j                            ||d            t          j                            |t                      t          j                            |           w xY w)N)return_valuerV   )r   r+   r,   DISABLErC   r6   rW   rY   rX   r   rD   r   r2   r4   assert_calledrestart_eventsrZ   r[   )r7   rc   rb   r6   r   rt   s         r   test_disable_from_callbackz)TestMonitoring.test_disable_from_callback  s    S^%;<<<	1ElGN&&w0@AAAN%%gu555N,,WeXFFFN55g>>M]E222]]48,,FN55g>>M]E222VT%9:::""$$$ N))+++N,,WeTBBBN%%gy999N''00000 N))+++N,,WeTBBBN%%gy999N''0000s   D"G BIc                    	 | j         t          j                            d           t          t                      }t          j                            |           fdt          t          d          fd                        } |d           |	                                  |d           t          j        
                    t                     |                                 |                     |j        d           t          j        
                    t                     t          j                            d            t          j                                       d S # t          j        
                    t                     t          j                            d            t          j                                       w xY w)NrV   c                 P    | r"t           j                                       d S d S r~   )r+   r,   rY   )switch_on_eventrb   r6   s    r   objmode_enable_eventzGTestMonitoring.test_mutation_from_objmode.<locals>.objmode_enable_event>  s3    " >N--gu=====> >r   r   c                 b    t           5   |            d d d            n# 1 swxY w Y   | dz   S )N   )r   )enabler   s    r   r   z6TestMonitoring.test_mutation_from_objmode.<locals>.fooB  s{      1 1((0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1z!s   !%%r   r   r   )r6   r+   r,   rW   rS   r   rX   r   r   rs   rY   rZ   r   rD   rE   r[   )r7   rc   r   rb   r   r6   s      @@@r   test_mutation_from_objmodez)TestMonitoring.test_mutation_from_objmode2  s   '	1 lGN&&w0@AAAEvvHN,,WeXFFF> > > > > >   " " " " !  ^" CFFF&&((( CFFF N%%gy999""$$$ X0!444N%%gy999N,,WeTBBBN''00000 N%%gy999N,,WeTBBBN''0000s   DE4 4A'Gc           	         t           j        j        t          ft           j        j        t
          ft           j        j        t          ft           j        j        t
          t          fi}i }	 |	                                D ]z\  }}t           j        
                    |d|            d}i }|||<   |D ]F}t                      }|t          k    r!t           j                            |||           |||<   ||z  }G{|                                D ]"}t           j                            ||           #|                     | j                   |	                                D ]z\  }}|D ].}|t          k    r!t           j                            ||d            /t           j                            |t                     t           j                            |           {n# |	                                D ]z\  }}|D ].}|t          k    r!t           j                            ||d            /t           j                            |t                     t           j                            |           {w xY w|t           j        j                 }	|                     t'          |	          d           |	t                   }|                                 |t           j        j                 }
|                     t'          |
          d           |                     |
           |t           j        j                 }|                     t'          |          d           |                     |           |t           j        j                 }|                     t'          |          d           |                     |           |                     |           d S )Ncustom_monitor_r   r   r   )r+   r,   DEBUGGER_IDrZ   COVERAGE_IDrC   r5   rS   OPTIMIZER_IDitemsrW   r   rX   keysrY   r   r2   r[   rD   rf   rs   rO   rT   )r7   tool_ids_2_eventsall_callbacksr6   r^   ra   r`   rb   rc   dbg_toolcov_tool	prof_toolopt_tools                r   test_multiple_tool_idz$TestMonitoring.test_multiple_tool_id\  s    !^7) ^7( ^7) ^8"*I!7	: 	5#4#:#:#<#< + +**74Og4O4OPPP !	)2g&# + +E#vvH	))88%9AC C C'/Ie$!U*MM+ -1133 B B))'=AAAAMM$(### $5#:#:#<#< 5 5# O OE	))88%NNN))'9===++G44445#4#:#:#<#< 5 5# O OE	))88%NNN))'9===++G44445 !!;<X***I&""$$$ !!;<X***!!(+++ "#."<=	Y+++""9--- !!<=X***!!(+++""8,,,,,s   (C G BI)c                 
   t                      }t                      }t                      }dt          t          d          fd                        }d }	 | j        }t          j                            |d           t          j                            |t          |           t          j                            |t          |           t          j                            |t          |           t          j                            |t          t          z  t          z             	  |             n# t          $ r}|}Y d }~nd }~ww xY wt          j                            |t                     |                                 |j        d         }|                     |j        d         t$          j                   |                     |j        d         d         t                     |                     |j        d         d         d                    |                                 |j        d         }	|                     |	j        d         t$          j                   |                     |	j        d         t,                     |j        d         }
|                     |
j        d         |j        j                   |                     |
j        d         t                     |                     t3          |
j        d                              |                                 |j        d         }|                     |j        d         |j        j                   |                     |j        d         t                     |                     t3          |j        d                              t          j                            |t                     t          j                            |t          d            t          j                            |t          d            t          j                            |t          d            t          j                            |           n# t          j                            |t                     t          j                            |t          d            t          j                            |t          d            t          j                            |t          d            t          j                            |           w xY w|                     t3          |                     d S )Nexception raised()c                  "    t                     r~   )
ValueErrorr:   s   r   r   z9TestMonitoring.test_raising_under_monitoring.<locals>.foo  s     S//!r   rV   r   r   r   )r   r   r   r6   r+   r,   rW   rX   rS   RAISE	PY_UNWINDrY   r   rZ   r   call_args_listrD   r]   r	   rI   r   assertIsInstanceKeyErrorrr   assertInstrr[   )r7   ret_callbackraise_callbackunwind_callbackr   store_raisedr6   raisesthe_callnumba_unpickle_callfoo_callunwind_callr:   s               @r   test_raising_under_monitoringz,TestMonitoring.test_raising_under_monitoring  sf   
 vv&& 		T	" 	" 	" 	" 
 
	" .	1lGN&&w0@AAAN,,WiNNNN,,We^LLLN,,Wi-<> > >N%%gy5/@9/LMMM& & & &%& N%%gy999 ++--- $215HX]1-/GHHHX]1-a0*===X]1-a03S999 ((***"0"?"B05a8,57 7 7!!"5":1"=xHHH%4Q7HX]1-s{/CDDD!!(-"2J???MM#s8=#344555 ..000)8;K[-a0#+2FGGG!!+"21"5zBBBMM#s;#3A#677888N%%gy999N,,WiFFFN,,WeTBBBN,,WiFFFN''0000	 N%%gy999N,,WiFFFN,,WeTBBBN,,WiFFFN''0000c3|,,-----s9   CQ* '
D2 1Q* 2
E<E>Q* EI+Q* *B8T"c                 
   t                      }t                      }t                      }dt          t          d          fd                        }d }	 | j        }t          j                            |d           t          j                            |t          |           t          j                            |t          |           t          j                            |t          |           t          j                            |t          t          z  t          z             	  |             n# t          $ r}|}Y d }~nd }~ww xY wt          j                            |t                     |                                 |j        d         }|                     |j        d         t$          j                   |                     |j        d         d         t                     |                     |j        d         d         d                    |                                 |                     |j        d           |j        d         }	|                     |	j        d         t$          j                   |                     |	j        d         t.                     |j        d         }
|                     |
j        d         |j        j                   |                     |
j        d         t                     |                     t5          |
j        d                              |j        d         }t	          j                    j        }|                     |j        d         |           |                     |j        d         t                     |                     t5          |j        d                              |                                 t          j                            |t                     t          j                            |t          d            t          j                            |t          d            t          j                            |t          d            t          j                            |           n# t          j                            |t                     t          j                            |t          d            t          j                            |t          d            t          j                            |t          d            t          j                            |           w xY w|                     t5          |                     d S )	Nr   r   c                  "    t                     r~   )StopIterationr   s   r   r   z@TestMonitoring.test_stop_iteration_under_monitoring.<locals>.foo  s      $$$r   rV   r   r   r   r   )r   r   r   r6   r+   r,   rW   rX   rS   r   STOP_ITERATIONrY   r   rZ   r   r   rD   r]   r	   rI   r   rE   r   r   rr   r   r   	_getframef_coders   r[   )r7   return_callbackr   stopiter_callbackr   r   r6   r   r   r   r   	meth_calltest_method_coder:   s                @r   $test_stop_iteration_under_monitoringz3TestMonitoring.test_stop_iteration_under_monitoring  s    && FF 		T	% 	% 	% 	% 
 
	% :	1lGN&&w0@AAAN,,Wi-<> > >N,,We-;= = =N,,Wn->@ @ @N%%g&/.&@5&HJ J J&  & & &%& N%%gy999 ..000 '5a8HX]1-/GHHHX]1-a0-@@@X]1-a03S999 ((***^6::: #1"?"B05a8,57 7 7!!"5":1"=xHHH &4Q7HX]1-s{/CDDD!!(-"2MBBBMM#s8=#344555 '5a8I"}5Y^A.0@AAA!!)."3]CCCMM#s9>!#455666 //111N%%gy999N,,WiFFFN,,WndKKKN,,WeTBBBN''0000	 N%%gy999N,,WiFFFN,,WndKKKN,,WeTBBBN''0000c3|,,-----s9   CR '
D2 1R 2
E<E>R EJR B8Uc                    d}t          t          |                    }d }	 t          }| j        }t          j                            |d           t          j                            ||           t          j                            |||           | 	                    | j
                   n# t          $ r}|}Y d }~nd }~ww xY wt          j                            ||d            t          j                            |t                     t          j                            |           nj# t          j                            ||d            t          j                            |t                     t          j                            |           w xY w|                                 |                     |t          |                     d S )Ndeliberately broken callbackside_effectrV   )r   r   rC   r6   r+   r,   rW   rY   rX   r   r2   rZ   r[   r   r   r   )r7   r:   rc   r   rb   r6   r   s          r   6test_raising_callback_unwinds_from_jit_on_success_pathzETestMonitoring.test_raising_callback_unwinds_from_jit_on_success_path2  s   
 -JsOO444	1ElGN&&w0@AAAN%%gu555N,,WeXFFFHHTX 	" 	" 	"!LLLLLL	" N,,WeTBBBN%%gy999N''0000 N,,WeTBBBN%%gy999N''0000##%%%c3|,,-----s1   B	B- ,D, -
C7B>9D, >CD, ,A'Fc                 r   d}dt          t          |                    } G d dt                    t          t	          d          fd                        }d }	 t
          }| j        }t          j        	                    |d           t          j        
                    ||           t          j                            |||            |             n# t          $ r}|}Y d }~nd }~ww xY wt          j                            ||d            t          j        
                    |t                     t          j                            |           nj# t          j                            ||d            t          j        
                    |t                     t          j                            |           w xY w|                                 |                     |j        d	           |j        d
         }|                     |j        d
         t&          j                   |                     |j        d         t,                     |j        d         }	|                     |	j        d
         |j        j                   |                     |	j        d         |j                   |j        d         }
t          j                    j        }|                     |
j        d
         |           |                     |
j        d         |j                   |                     ||j                   d S )Nr   deliberately broken executionr   c                       e Zd ZdS )]TestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.LocalExceptionN__name__
__module____qualname__r   r   r   LocalExceptionr   Z          Dr   r   r   c                                  r~   r   r   msg_executions   r   raisingzVTestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.raising]       !.///r   rV   r   r   r   r   )r   r   	Exceptionr   r   r   r6   r+   r,   rW   rY   rX   rZ   r[   r   rD   rE   r   r]   r	   rI   r   r   rr   assertIsr   r   r   )r7   msg_callbackrc   r   r   rb   r6   r   r   raising_callr   r   r   r   s               @@r   6test_raising_callback_unwinds_from_jit_on_raising_pathzETestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_pathM  s    67J|$<$<===	 	 	 	 	Y 	 	 	 
	T	0 	0 	0 	0 	0 
 
	0 	1ElGN&&w0@AAAN%%gu555N,,WeXFFFGIIII 	" 	" 	"!LLLLLL	" N,,WeTBBBN%%gy999N''0000 N,,WeTBBBN%%gy999N''0000   ,a000 '5a8,1!4o6NOOO16q98DDD  .q1*1-w/GHHHl'*H,@AAA +A.	=??1*,<===inQ')=>>> 	lH$8999992   "A9C E 
C2&C-(E -C22E A'Gc                   	
 d}d
t          t          |                    } G d dt                    	t          t	          d          	
fd                        }d }	 t
          }| j        }t          j        	                    |d           t          j        
                    ||           t          j                            |||            |             n# t          $ r}|}Y d }~nd }~ww xY wt          j                            ||d            t          j        
                    |t                     t          j                            |           nj# t          j                            ||d            t          j        
                    |t                     t          j                            |           w xY w|                                 |j        d	         }|                     |j        d	         |j        j                   |                     t)          |j        d
                   	           |                     t+          |j        d
                   
           |                     ||j                   d S )Nr   r   r   c                       e Zd ZdS )\TestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path.<locals>.LocalExceptionNr   r   r   r   r   r     r   r   r   r   c                                  r~   r   r   s   r   r   zUTestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path.<locals>.raising  r   r   rV   r   r   )r   r   r   r   r   r   r6   r+   r,   rW   rY   rX   rZ   r[   r   r   rD   r]   rr   rI   typer   r   r   )r7   r   rc   r   r   rb   r6   r   r   r   r   s            @@r   5test_raising_callback_unwinds_from_jit_on_unwind_pathzDTestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path  sw    67J|$<$<===	 	 	 	 	Y 	 	 	 
	T	0 	0 	0 	0 	0 
 
	0 	1ElGN&&w0@AAAN%%gu555N,,WeXFFFGIIII 	" 	" 	"!LLLLLL	" N,,WeTBBBN%%gy999N''0000 N,,WeTBBBN%%gy999N''0000##%%%  .q1*1-w/GHHHl/233^DDD\.q122MBBB 	lH$899999r   c                 b    d }d }t          j                    }t          j        | |f          }t          j                    }t          j        | |f          }||f}|D ]}|                                 |D ]}|                                  fd}	 |	|            |	|           d S )Nc                 D   	 |                      | j        | j        ft          ft          j        j                  }|                     t          |          d           | 	                    |           d S # t          $ r }|                    |           Y d }~d S d }~ww xY wN)r6   r   )rd   r   r2   rC   r+   r,   r   rD   rf   rO   r   putr7   qrh   es       r   t1_workz@TestMonitoring.test_monitoring_multiple_threads.<locals>.t1_work  s    	))$-$(+3+25.2L * N N   R!,,,))"-----   a   A1A5 5
B?BBc                 D   	 |                      | j        | j        ft          ft          j        j                  }|                     t          |          d           | 	                    |           d S # t          $ r }|                    |           Y d }~d S d }~ww xY wr   )rd   r   r2   rS   r+   r,   r   rD   rf   rT   r   r   r   s       r   t2_workz@TestMonitoring.test_monitoring_multiple_threads.<locals>.t2_work  s    	))$-$(+4,25.2L * N N   R!,,,**2.....   ar   )targetr]   c                     |                                  dk    r`|                                 s5t          |                                            |                                 5                    d           d S d S )Nr   zqueue supposed to be empty)qsizeemptyprintgetfail)r   r7   s    r   assert_empty_queuezKTestMonitoring.test_monitoring_multiple_threads.<locals>.assert_empty_queue  si    wwyyA~~'')) #!%%''NNN '')) #		677777 ~r   )queueQueue	threadingThreadstartr0   )
r7   r   r   q1t1q2t2threadstr  s
   `         r    test_monitoring_multiple_threadsz/TestMonitoring.test_monitoring_multiple_threads  s    
	 
	 
	
	 
	 
	 []]WD":>>>[]]WD":>>>r( 	 	AGGIIII 	 	AFFHHHH	8 	8 	8 	8 	8 	22r   r~   )r   r   r   r;   rO   rT   rd   ri   rk   rm   ru   rx   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r&   r&   .   sS       2 2 2,* * ** * *    8& & &' ' '& & &.1 1 1B1 1 1&) ) )21 1 1*"1 "1 "1H(1 (1 (1T?- ?- ?-BA. A. A.FP. P. P.d. . .69: 9: 9:v.: .: .:`. . . . .r   r&   c                       e Zd Zd ZdS )TestMonitoringSelfTestc                     |                      t          j        ddddi          }|                     dt	          |                     d S )Nr&   ri   z-mcProfile)flagsz	skipped=1)subprocess_test_runnerr&   r   r   r   )r7   rs     r   +test_skipping_of_tests_if_monitoring_in_usezBTestMonitoringSelfTest.test_skipping_of_tests_if_monitoring_in_use  sU     ''(A(8(:/3Z.@ ( B B 	k3q66*****r   N)r   r   r   r  r   r   r   r  r    s#        + + + + +r   r  c                       e Zd Z ej        ddi          d             Z ej        ddi          d             Z ej        ddi          d             Zd	S )
TestMonitoringEnvVarControlNUMBA_ENABLE_SYS_MONITORING )envvarsc                 Z    t           d             }|                     |j                   d S )Nc                     | dz   S r   r   r   s    r   r   z9TestMonitoringEnvVarControl.test_default_off.<locals>.foo  rp   r   r   assertFalser   r7   r   s     r   test_default_offz,TestMonitoringEnvVarControl.test_default_off  <     
	 	 
	 	+,,,,,r   0c                 Z    t           d             }|                     |j                   d S )Nc                     | dz   S r   r   r   s    r   r   z:TestMonitoringEnvVarControl.test_override_off.<locals>.foo  rp   r   r!  r#  s     r   test_override_offz-TestMonitoringEnvVarControl.test_override_off  r%  r   1c                 Z    t           d             }|                     |j                   d S )Nc                     | dz   S r   r   r   s    r   r   z9TestMonitoringEnvVarControl.test_override_on.<locals>.foo  rp   r   )r   
assertTruer   r#  s     r   test_override_onz,TestMonitoringEnvVarControl.test_override_on  s:     
	 	 
	 	*+++++r   N)r   r   r   r   run_test_in_subprocessr$  r)  r.  r   r   r   r  r    s        $X$.35 5 5- -5 5- %X$.46 6 6- -6 6- %X$.46 6 6, ,6 6, , ,r   r  __main__)"rF   r  r+   r  unittestunittest.mockr   r   numba.tests.supportr   numbar   r   numba.core.utilsr   numba.core.serializer	   r   r   r,   r^   rC   rS   r   r   r   rZ   r/   
skipUnlessr&   r  r  r   mainr   r   r   <module>r9     sF   



  



      $ $ $ $ $ $ $ $ ( ( ( ( ( (         & & & & & & 0 0 0 0 0 0  	 	 	 """~$-H%/IN!'E%/I^*9N%/I #""#% %  Y')+?@@w
 w
 w
 w
 w
X w
 w
 A@w
t Y')+?@@
+ 
+ 
+ 
+ 
+X 
+ 
+ A@
+ Y')+?@@, , , , ,( , , A@,: zHMOOOOO r   