
    xKgz                        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	m
Z
 d dlmZmZ d dlmZ d dlmZ d Zedk(  rej&                  j(                  j*                  Zej&                  j(                  j,                  Zej&                  j(                  j.                  Zej&                  j(                  j0                  Zej&                  j(                  j2                  Zej&                  j(                  j4                  Zd	d
dddZe
 G d de	             Ze
 G d de	             Zedk(  r ej>                          yy)    N)Mockcall)TestCaseskip_unless_py312)jitobjmode)	PYVERSION)_numba_unpicklec                  8    t        d      d        fd} | fS )Nint64(int64)c                     | dz   S N    xs    c/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_sys_monitoring.pyfoozgenerate_usecase.<locals>.foo   s    1u    c                      d | dz         z  S )N      r   )r   r   s    r   call_fooz"generate_usecase.<locals>.call_foo   s    3q1u:~r   )r   )r   r   s    @r   generate_usecaser      s+      =r   )      DebuggerCoverageProfiler	Optimizer)r   r   r   r   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y)TestMonitoringc                    g }t        d      D ]:  }t        j                  j                  |      #|j	                  t
        |          < |r%ddj                  |       }| j                  |       t               \  | _	        | _
        d| _        | j                  dz   dz   | _        d| j                  z  | _        t        j                  j                  | _        y )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.setUp0   s     qA~~&&q)5$$%5a%89  8ii./1C MM# #3"4$-((Q,* 4??2~~11r   c                    |t            }| j                  |j                  d       t        j                  | j
                        D cg c]  }|j                  dk(  r| }}|d   j                  }t        | j
                  j                  |      t        | j                  j                  d      f}|j                  |       y c c}w )Nr   RESUMEr   )PY_STARTassertEqual
call_countdisget_instructionsr   opnameoffsetr   __code__r   assert_has_calls)r3   allcalls	mockcallsr   instr@   callss          r   check_py_start_callsz#TestMonitoring.check_py_start_callsF   s     X&	--q1//> )>a88x' > )admm,,f5dhh''+-""5))s   Cc                    |t            }| j                  |j                  d       t        j                  | j
                        D cg c]  }| c}d   j                  }t        | j                  j                  d| j                        t        | j
                  j                  || j                        g}|j                  |       y c c}w )Nr   r   )	PY_RETURNr;   r<   r=   r>   r   r@   r   r   rA   r/   r0   rB   )r3   rC   rD   r   r@   rF   s         r   check_py_return_callsz$TestMonitoring.check_py_return_callsT   s     Y'	--q1 !11$--@A@!@A"ELLdhh''DOO<dmm,,fd6J6JKM""5) Bs   	CNc                    	 || j                   }n|}t        j                  j                  |d       i }d}|D ]7  }t	               }	t        j                  j                  |||	       |	||<   ||z  }9 t        j                  j                  ||        ||  |D ]#  }t        j                  j                  ||d        % t        j                  j                  |t               t        j                  j                  |       |S # |D ]#  }t        j                  j                  |d        % t        j                  j                  t               t        j                  j                  |       w xY w)Ncustom_monitorr   )	r2   r'   r(   use_tool_idr   register_callback
set_events	NO_EVENTSfree_tool_id)
r3   functionargseventsr2   _tool_id	callbacksevent_bitmaskeventcallbacks
             r   run_with_eventszTestMonitoring.run_with_eventsd   s)   	2<<"NN&&x1ABIM6005(K#+	% &	   NN%%h>dO  005$G  NN%%h	:NN''1	  005$G  NN%%h	:NN''1s   BD A-E2c                     | j                  | j                  | j                  ft        f      }| j	                  t        |      d       | j                  |       y r   )r[   r   r.   r:   r;   lenrG   r3   cbs     r   test_start_eventzTestMonitoring.test_start_event   sD    !!$--$((xkJR!$!!"%r   c                     | j                  | j                  | j                  ft        f      }| j	                  t        |      d       | j                  |       y r   )r[   r   r.   rJ   r;   r]   rK   r^   s     r   test_return_eventz TestMonitoring.test_return_event   sD    !!$--$((ylKR!$""2&r   c                     | j                  | j                  | j                  ft        t        f      }| j                  t        |      d       | j                  |       | j                  |       y )Nr   )	r[   r   r.   r:   rJ   r;   r]   rK   rG   r^   s     r   test_call_event_chainz$TestMonitoring.test_call_event_chain   sZ    !!$--$((#+Y"79 	R!$""2&!!"%r   c                 L   t        d      d        }	 | j                  }t        j                  j	                  |d       i }d}t
        t        f}|D ]7  }t               }t        j                  j                  |||       |||<   ||z  }9 t        j                  j                  ||j                  |        || j                        }|D ]#  }t        j                  j                  ||d        % t        j                  j                  ||j                  d       t        j                  j                  |       | j                  ||j                  | j                               | j                  t        |      d       |t
           j!                          |t           j!                          y # D ]#  }t        j                  j                  |d        % t        j                  j                  |j                  d       t        j                  j                  |       w xY w)Nr   c                     | dz   S )Nr   r   r   s    r   r   zPTestMonitoring.test_instrumented_code_does_not_trigger_numba_events.<locals>.foo   s    q5Lr   rM   r   r   )r   r2   r'   r(   rN   r:   rJ   r   rO   set_local_eventsrA   r.   rR   r;   py_funcr]   assert_not_called)	r3   r   r2   rW   rX   rU   rY   rZ   results	            r   4test_instrumented_code_does_not_trigger_numba_eventszCTestMonitoring.test_instrumented_code_does_not_trigger_numba_events   s   	^		 
		1llGNN&&w0@AIM	*F600%J#+	% &	   NN++GS\\,9;]F00%F  NN++GS\\1ENN''0 	TXX!67Y+(--/)..0  00%F  NN++GS\\1ENN''0s   B5F/ /A4H#c                 \   d }	 | j                   }t        j                  j                  |d       t        j                  j	                  ||j
                  t               t        j                  j                  |t        t                       t        |      | j                        }| j                  | || j                               t        j                  j                  |t        d        t        j                  j	                  ||j
                  d       t        j                  j                  |       y # t        j                  j                  t        d        t        j                  j	                  ||j
                  d       t        j                  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   rM   r   )r2   r'   r(   rN   rg   rA   r:   rO   r   r   r.   r;   rR   )r3   r   r2   rj   s       r   &test_instrumented_code_can_be_compiledz5TestMonitoring.test_instrumented_code_can_be_compiled   s   		1llGNN&&w0@ANN++GS\\8LNN,,WhGSXdhh'FVS]3NN,,WhENN++GS\\1ENN''0 NN,,WhENN++GS\\1ENN''0s   CD: :A1F+c                    d }t         j                  j                  j                  }d } ||      }| j	                  |d|f      }||   j                           |t              }| j	                  |d|f      }||   j                          y )Nc                 D     | d      d         | d      fd       }|S )Nzvoid()c               3      K   d y w)Nr%   r   r   r   r   producerzTTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate.<locals>.producer   s     s   zint64()c                  (            } t        |       S N)next)prr   s    r   consumerzTTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate.<locals>.consumer   s    JAwr   r   )decrw   rr   s     @r   generatezBTestMonitoring.test_unhandled_events_are_ignored.<locals>.generate   s8    ]  ^  Or   c                     d S )Nc                     | S rt   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    mr   r   )r'   r(   rU   PY_YIELDr[   assert_called_oncer   ri   )r3   ry   rY   wrapperpy_consumerpy_cbnb_consumernb_cbs           r   !test_unhandled_events_are_ignoredz0TestMonitoring.test_unhandled_events_are_ignored   s    
	 %%..+w'$$["x@e'')sm$$["x@e&&(r   c                    	 t         }| j                  }t        j                  j	                  |d       t        j                  j                  ||       t        j                  j                  |      }| j                  ||       | j                  | j                        }t        j                  j                  |      }| j                  ||       | j                  || j                         t        j                  j                  |t               t        j                  j                  |       y # t        j                  j                  t               t        j                  j                  |       w xY w)NrM   )r:   r2   r'   r(   rN   rP   
get_eventsr;   r   r.   r0   rQ   rR   )r3   rY   r2   active_eventsrj   s        r    test_event_with_no_callback_runsz/TestMonitoring.test_event_with_no_callback_runs   s    
	1EllGNN&&w0@ANN%%gu5NN55g>M]E2]]488,FNN55g>M]E2VT%9%9:NN%%gy9NN''0 NN%%gy9NN''0s   C+D1 1AE6c                    t        t        j                  j                        }	 t        }| j
                  }t        j                  j                  |d       t        j                  j                  ||       t        j                  j                  |||       t        j                  j                  |      }| j                  ||       | j                  | j                        }t        j                  j                  |      }| j                  ||       | j                  || j                         |j                          t        j                  j                          t        j                  j                  ||d        t        j                  j                  |t                t        j                  j#                  |       y # t        j                  j                          t        j                  j                  d        t        j                  j                  |t                t        j                  j#                  |       w xY w)N)return_valuerM   )r   r'   r(   DISABLEr:   r2   rN   rP   rO   r   r;   r   r.   r0   assert_calledrestart_eventsrQ   rR   )r3   rZ   rY   r2   r   rj   s         r   test_disable_from_callbackz)TestMonitoring.test_disable_from_callback  s    S^^%;%;<	1EllGNN&&w0@ANN%%gu5NN,,WeXFNN55g>M]E2]]488,FNN55g>M]E2VT%9%9:""$ NN))+NN,,WeTBNN%%gy9NN''0 NN))+NN,,WeTBNN%%gy9NN''0s   DG BI	c                 r   	 | j                   t        j                  j                  d       t        t               }t        j                  j                  |       fdt        d      fd       } |d       |j                           |d       t        j                  j                  t               |j                          | j                  |j                  d       t        j                  j                  t               t        j                  j                  d        t        j                  j                         y # t        j                  j                  t               t        j                  j                  d        t        j                  j                         w xY w)NrM   c                 L    | r!t         j                  j                         y y rt   )r'   r(   rP   )switch_on_eventrY   r2   s    r   objmode_enable_eventzGTestMonitoring.test_mutation_from_objmode.<locals>.objmode_enable_event7  s    "NN--gu= #r   r   c                 \    t         5   |        d d d        | dz   S # 1 sw Y   | dz   S xY w)N   )r   )enabler   s    r   r   z6TestMonitoring.test_mutation_from_objmode.<locals>.foo;  s-    (0 z! z!s   	+r   r   r   )r2   r'   r(   rN   rJ   r   rO   r   ri   rP   rQ   r   r;   r<   rR   )r3   rZ   r   rY   r   r2   s      @@@r   test_mutation_from_objmodez)TestMonitoring.test_mutation_from_objmode+  s<   &	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   C&E A&F6c           	      |   t         j                  j                  t        ft         j                  j                  t
        ft         j                  j                  t        ft         j                  j                  t
        t        fi}i }	 |j                         D ]v  \  }}t         j                  j                  |d|        d}i }|||<   |D ]@  }t               }|t        k7  r!t         j                  j                  |||       |||<   ||z  }B x |j                         D ]"  }t         j                  j                  |       $ | j                  | j                          |j                         D ]z  \  }}|D ]-  }|t        k7  st         j                  j                  ||d        / t         j                  j                  |t               t         j                  j#                  |       | 	 |t         j                  j                     }	| j%                  t'        |	      d       |	t           }|j)                          |t         j                  j                     }
| j%                  t'        |
      d       | j+                  |
       |t         j                  j                     }| j%                  t'        |      d       | j-                  |       |t         j                  j                     }| j%                  t'        |      d       | j+                  |       | j-                  |       y # |j                         D ]z  \  }}|D ]-  }|t        k7  st         j                  j                  ||d        / t         j                  j                  |t               t         j                  j#                  |       | w xY w)Ncustom_monitor_r   r   r   )r'   r(   DEBUGGER_IDrQ   COVERAGE_IDr:   r1   rJ   OPTIMIZER_IDitemsrN   r   rO   keysrP   r   r.   rR   r;   r]   ri   rG   rK   )r3   tool_ids_2_eventsall_callbacksr2   rU   rX   rW   rY   rZ   dbg_toolcov_tool	prof_toolopt_tools                r   test_multiple_tool_idz$TestMonitoring.test_multiple_tool_idT  s    !^^77) ^^77( ^^77) ^^88"*I!7	: 	5#4#:#:#<**7ogY4OP !	)2g&#E#vH	)88%9AC'/Ie$!U*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L, ,%N;A)N;c                 	   t               }t               }t               }dt        d      fd       }d }	 | j                  }t        j                  j                  |d       t        j                  j                  |t        |       t        j                  j                  |t        |       t        j                  j                  |t        |       t        j                  j                  |t        t        z  t        z         	  |        t        j                  j                  |t               |j                          |j                  d   }| j                  |j                   d   t"        j$                         | j                  |j                   d   d   t               | j                  |j                   d   d   d          |j'                          |j                  d   }	| j                  |	j                   d   t"        j$                         | j)                  |	j                   d   t*               |j                  d   }
| j                  |
j                   d   |j,                  j$                         | j)                  |
j                   d   t               | j/                  t1        |
j                   d                |j                          |j                  d   }| j                  |j                   d   |j,                  j$                         | j)                  |j                   d   t               | j/                  t1        |j                   d                t        j                  j                  |t               t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j3                  |       | j/                  t1        |             y # t        $ r}|}Y d }~3d }~ww xY w# t        j                  j                  t               t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j3                  |       w xY w)Nexception raised()c                      t               rt   )
ValueErrorr6   s   r   r   z9TestMonitoring.test_raising_under_monitoring.<locals>.foo  s    S/!r   rM   r   r   r   )r   r   r2   r'   r(   rN   rO   rJ   RAISE	PY_UNWINDrP   r   rQ   r   call_args_listr;   rT   r
   rA   r   assertIsInstanceKeyErrorrh   assertInstrrR   )r3   ret_callbackraise_callbackunwind_callbackr   store_raisedr2   raisesthe_callnumba_unpickle_callfoo_callunwind_callr6   s               @r   test_raising_under_monitoringz,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''0s8   CQ P/ IQ /	Q8Q :Q  QQ B4S<c                 J
   t               }t               }t               }dt        d      fd       }d }	 | j                  }t        j                  j                  |d       t        j                  j                  |t        |       t        j                  j                  |t        |       t        j                  j                  |t        |       t        j                  j                  |t        t        z  t        z         	  |        t        j                  j                  |t               |j                          |j                  d   }| j                  |j                   d   t"        j$                         | j                  |j                   d   d   t               | j                  |j                   d   d   d          |j'                          | j                  |j(                  d       |j                  d   }	| j                  |	j                   d   t"        j$                         | j+                  |	j                   d   t,               |j                  d   }
| j                  |
j                   d   |j.                  j$                         | j+                  |
j                   d   t               | j1                  t3        |
j                   d                |j                  d   }t        j4                         j6                  }| j                  |j                   d   |       | j+                  |j                   d   t               | j1                  t3        |j                   d                |j9                          t        j                  j                  |t               t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j;                  |       | j1                  t3        |             y # t        $ r}|}Y d }~Yd }~ww xY w# t        j                  j                  t               t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j                  |t        d        t        j                  j;                  |       w xY w)	Nr   r   c                      t               rt   )StopIterationr   s   r   r   z@TestMonitoring.test_stop_iteration_under_monitoring.<locals>.foo  s    $$r   rM   r   r   r   r   )r   r   r2   r'   r(   rN   rO   rJ   r   STOP_ITERATIONrP   r   rQ   r   r   r;   rT   r
   rA   r   r<   r   r   rh   r   r   	_getframef_coderi   rR   )r3   return_callbackr   stopiter_callbackr   r   r2   r   r   r   r   	meth_calltest_method_coder6   s                @r   $test_stop_iteration_under_monitoringz3TestMonitoring.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''0s8   CQ. Q I:Q. 	Q+Q& Q. &Q++Q. .B4T"c                 t   d}t        t        |            }d }	 t        }| j                  }t        j
                  j                  |d       t        j
                  j                  ||       t        j
                  j                  |||       | j                  | j                         t        j
                  j                  d        t        j
                  j                  |t               t        j
                  j                  |       |j                          | j                  |t        |             y # t        $ r}|}Y d }~d }~ww xY w# t        j
                  j                  d        t        j
                  j                  |t               t        j
                  j                  |       w xY w)Ndeliberately broken callbackside_effectrM   )r   r   r:   r2   r'   r(   rN   rP   rO   r   r.   rQ   rR   r   r   r   )r3   r6   rZ   r   rY   r2   r   s          r   6test_raising_callback_unwinds_from_jit_on_success_pathzETestMonitoring.test_raising_callback_unwinds_from_jit_on_success_path(  s1   
 -JsO4	1EllGNN&&w0@ANN%%gu5NN,,WeXFHHTXX NN,,WeTBNN%%gy9NN''0##%c3|,-  	"!L	" NN,,WeTBNN%%gy9NN''0s+   BD9 9	EE	E 	EE A&F7c                 T   d}dt        t        |            } G d dt              t        d      fd       }d }	 t        }| j
                  }t        j                  j                  |d       t        j                  j                  ||       t        j                  j                  |||        |        t        j                  j                  d        t        j                  j                  |t               t        j                  j                  |       |j                          | j                  |j                  d	       |j                   d
   }| j                  |j"                  d
   t$        j&                         | j)                  |j"                  d   t*               |j                   d   }	| j                  |	j"                  d
   |j,                  j&                         | j/                  |	j"                  d   |j0                         |j                   d   }
t        j2                         j4                  }| j                  |
j"                  d
   |       | j/                  |
j"                  d   |j0                         | j/                  ||j0                         y # t        $ r}|}Y d }~d }~ww xY w# t        j                  j                  d        t        j                  j                  |t               t        j                  j                  |       w xY w)Nr   deliberately broken executionr   c                       e Zd Zy)]TestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.LocalExceptionN__name__
__module____qualname__r   r   r   LocalExceptionr   P      r   r   r   c                              rt   r   r   msg_executions   r   raisingzVTestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.raisingS       //r   rM   r   r   r   r   )r   r   	Exceptionr   r   r2   r'   r(   rN   rP   rO   rQ   rR   r   r;   r<   r   rT   r
   rA   r   r   rh   assertIsr   r   r   )r3   msg_callbackrZ   r   r   rY   r2   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_pathC  sn    67J|$<=	Y 	 
T	0 
	0 	1EllGNN&&w0@ANN%%gu5NN,,WeX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')=)=> 	lH$8$899  	"!L	" NN,,WeTBNN%%gy9NN''0s,   A:J( (	J>1J93K 9J>>K A&L'c                   	
 d}d
t        t        |            } G d dt              	t        d      	
fd       }d }	 t        }| j
                  }t        j                  j                  |d       t        j                  j                  ||       t        j                  j                  |||        |        t        j                  j                  d        t        j                  j                  |t               t        j                  j                  |       |j                          |j                  d	   }| j                  |j                   d	   |j"                  j$                         | j                  t'        |j                   d
         	       | j                  t)        |j                   d
         
       | j+                  ||j,                         y # t        $ r}|}Y d }~4d }~ww xY w# t        j                  j                  d        t        j                  j                  |t               t        j                  j                  |       w xY w)Nr   r   r   c                       e Zd Zy)\TestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path.<locals>.LocalExceptionNr   r   r   r   r   r     r   r   r   r   c                              rt   r   r   s   r   r   zUTestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path.<locals>.raising  r   r   rM   r   r   )r   r   r   r   r   r2   r'   r(   rN   rP   rO   rQ   rR   r   r   r;   rT   rh   rA   typer   r   r   )r3   r   rZ   r   r   rY   r2   r   r   r   r   s            @@r   5test_raising_callback_unwinds_from_jit_on_unwind_pathzDTestMonitoring.test_raising_callback_unwinds_from_jit_on_unwind_path}  s    67J|$<=	Y 	 
T	0 
	0 	1EllGNN&&w0@ANN%%gu5NN,,WeX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 	lH$8$89!  	"!L	" NN,,WeTBNN%%gy9NN''0s,   A:G 	G5(G0*G8 0G55G8 8A&Ic                    d }d }t        j                         }t        j                  || |f      }t        j                         }t        j                  || |f      }||f}|D ]  }|j	                           |D ]  }|j                           | j                  |j                                | j                  |j                                y )Nc                 :   	 | j                  | j                  | j                  ft        ft        j
                  j                        }| j                  t        |      d       | j                  |       y # t        $ r}|j                  |       Y d }~y d }~ww xY wN)r2   r   )r[   r   r.   r:   r'   r(   r   r;   r]   rG   r   putr3   qr_   es       r   t1_workz@TestMonitoring.test_monitoring_multiple_threads.<locals>.t1_work  s~    	))$--$((+3+25..2L2L * N   R!,))"- a   A3A6 6	B?BBc                 :   	 | j                  | j                  | j                  ft        ft        j
                  j                        }| j                  t        |      d       | j                  |       y # t        $ r}|j                  |       Y d }~y d }~ww xY wr   )r[   r   r.   rJ   r'   r(   r   r;   r]   rK   r   r   r   s       r   t2_workz@TestMonitoring.test_monitoring_multiple_threads.<locals>.t2_work  s~    	))$--$((+4,25..2L2L * N   R!,**2. ar   )targetrT   )queueQueue	threadingThreadstartr,   assertFalseqsize)	r3   r   r   q1t1q2t2threadsts	            r    test_monitoring_multiple_threadsz/TestMonitoring.test_monitoring_multiple_threads  s    
	
	 [[]WD":>[[]WD":>r(AGGI AFFH  	$$r   rt   )r   r   r   r7   rG   rK   r[   r`   rb   rd   rk   rn   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r"   r"   '   sp    2,** 8&'&.1B1&)21*"1H'1R?-B@.DO.b.68:t-:^(%r   r"   c                       e Zd Zd Zy)TestMonitoringSelfTestc                     | j                  t        j                  ddddi      }| j                  dt	        |             y )Nr"   r`   z-mcProfile)flagsz	skipped=1)subprocess_test_runnerr"   r   r   r   )r3   rs     r   +test_skipping_of_tests_if_monitoring_in_usezBTestMonitoringSelfTest.test_skipping_of_tests_if_monitoring_in_use  sD     ''(A(A(8(:/3Z.@ ( B 	k3q6*r   N)r   r   r   r	  r   r   r   r  r    s    +r   r  __main__) r=   r   r'   r   unittestunittest.mockr   r   numba.tests.supportr   r   numbar   r   numba.core.utilsr	   numba.core.serializer
   r   r(   rU   r:   rJ   r   r   r   rQ   r+   r"   r  r   mainr   r   r   <module>r     s   
  
   $ ;  & 0 ~~$$--H%%//INN!!''E%%//I^^**99N%%//I #""#%  l
%X l
% l
%^ 
+X 
+ 
+ zHMMO r   