§
    2@Äjç�  ã                   ó˜  — d dl Z 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 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)ÚCounter)ÚMockÚcall)ÚTestCase)ÚjitÚobjmode)Ú	PYVERSION)Ú_numba_unpicklec                 ó   — d| _         | S )z4Decorator to enable sys.monitoring on the dispatcherT)Ú_enable_sysmon)Údisps    úPC:\Projects\Historical\venv\Lib\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   € ð �1‰uˆr   c                 ó&   •— d ‰| dz   ¦  «        z  S )Né   é   r   )r   r   s    €r   Úcall_fooz"generate_usecase.<locals>.call_foo   s   ø€ Ø�3�3�q˜1‘u‘:”:‰~Ðr   )r   r   )r   r   s    @r   Úgenerate_usecaser      sT   ø€ ÝÝˆÑÔðð ñ Ôñ „^ððð ð ð ð ð �ˆ=Ðr   )©é   é   )r   é   )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„ 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.setUp9   sÙ   € ð ˆÝ�q‘”ð 	:ð 	:ˆAÝŒ~×&Ò& qÑ)Ô)Ð5Ø×$Ò$Õ%5°aÔ%8Ñ9Ô9Ð9øàð 	ð1à—i’i Ñ.Ô.ð1ð 1ˆCð �MŠM˜#ÑÔÐõ #3Ñ"4Ô"4ÑˆŒ�$”-ØˆŒØœ( Q™,¨Ñ*ˆŒØ  4¤?Ñ2ˆÔå”~Ô1ˆŒˆˆr   c                 ó¨   — t          ¦   «         }| j        j        | j        j        h}|j        D ]#}|j        ^}}||v r||g|¢R xx         dz  cc<   Œ$|S r   )r   r   Ú__code__r   Ú_mock_call_args_listÚargs)r:   Ú	mockcallsÚmatchedÚtarget_codeobjsÚcb_argsÚcodeobjrB   s          r   Úgather_mock_calls_multithreadsz-TestMonitoring.gather_mock_calls_multithreadsO   su   € å‘)”)ˆØœ=Ô1°4´8Ô3DÐEˆØ Ô5ð 	/ð 	/ˆGØ&œ|ÐˆW�tØ˜/Ð)Ð)Ø˜Ð( 4Ð(Ð(Ð)Ð)Ô)¨QÑ.Ð)Ð)Ñ)øØˆr   c                 óÜ  — |                       |t                   ¦  «        }|                      t          |¦  «        d¦  «         d„ t	          j        | j        ¦  «        D ¦   «         }|d         j        }|                      || j        j        |f         d¦  «         |                      || j	        j        df         d¦  «         |                      | 
                    ¦   «         d¦  «         d S )Nr   c                 ó(   — g | ]}|j         d k    ¯|‘ŒS ©ÚRESUME©Úopname©Ú.0r   s     r   ú
<listcomp>zDTestMonitoring.check_py_start_calls_multithreads.<locals>.<listcomp>`   ó.   € ð )ð )ð )�aØ”8˜xÒ'Ð'ð Ø'Ð'Ð'r   r   é   )rH   ÚPY_STARTÚassertEqualÚlenÚdisÚget_instructionsr   Úoffsetr@   r   Útotal)r:   ÚallcallsrD   ÚinstrY   s        r   Ú!check_py_start_calls_multithreadsz0TestMonitoring.check_py_start_calls_multithreadsY   sÛ   € ð ×5Ò5°h½xÔ6HÑIÔIˆØ×Ò�˜W™œ qÑ)Ô)Ð)ð)ð )�3Ô/°´Ñ>Ô>ð )ñ )ô )ˆà�a””ˆØ×Ò˜ ¤Ô!7¸Ð!?Ô@À!ÑDÔDÐDØ×Ò˜ ¤Ô!2°AÐ!5Ô6¸Ñ:Ô:Ð:Ø×Ò˜Ÿš™œ¨!Ñ,Ô,Ð,Ð,Ð,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 rK   rM   rO   s     r   rQ   z7TestMonitoring.check_py_start_calls.<locals>.<listcomp>m   rR   r   r   )rT   rU   Ú
call_countrW   rX   r   rY   r   r@   r   Úassert_has_calls)r:   r[   rC   r\   rY   Úcallss         r   Úcheck_py_start_callsz#TestMonitoring.check_py_start_callsg   s¡   € ð �XÔ&ˆ	Ø×Ò˜Ô-¨qÑ1Ô1Ð1ð)ð )�3Ô/°´Ñ>Ô>ð )ñ )ô )ˆà�a””ˆå�d”mÔ,¨fÑ5Ô5Ý�d”hÔ'¨Ñ+Ô+ð-ˆà×"Ò" 5Ñ)Ô)Ð)Ð)Ð)r   c                 óª  — |                       |t                   ¦  «        }d„ t          j        | j        ¦  «        D ¦   «         d         j        }|                      || j        j        d| j	        f         d¦  «         |                      || j        j        || j
        f         d¦  «         |                      |                     ¦   «         d¦  «         d S )Nc                 ó   — g | ]}|‘ŒS r   r   rO   s     r   rQ   zETestMonitoring.check_py_return_calls_multithreads.<locals>.<listcomp>y   ó   € ÐAÐAÐA˜�!ÐAÐAÐAr   éÿÿÿÿr   r   rS   )rH   Ú	PY_RETURNrW   rX   r   rY   rU   r   r@   r6   r7   rZ   )r:   r[   rD   rY   s       r   Ú"check_py_return_calls_multithreadsz1TestMonitoring.check_py_return_calls_multithreadsu   sÄ   € ð ×5Ò5°h½yÔ6IÑJÔJˆØAÐA�SÔ1°$´-Ñ@Ô@ÐAÑAÔAÀ"ÔEÔLˆØ×Ò˜ ¤Ô!2°A°t´Ð!FÔGÈÑKÔKÐKØ×ÒØ�D”MÔ*¨F°DÔ4HÐHÔIÈ1ñ	
ô 	
ð 	
ð 	×Ò˜Ÿš™œ¨!Ñ,Ô,Ð,Ð,Ð,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   rO   s     r   rQ   z8TestMonitoring.check_py_return_calls.<locals>.<listcomp>‹   rf   r   rg   r   )rh   rU   r`   rW   rX   r   rY   r   r   r@   r6   r7   ra   )r:   r[   rC   rY   rb   s        r   Úcheck_py_return_callsz$TestMonitoring.check_py_return_calls€   s¡   € ð �YÔ'ˆ	Ø×Ò˜Ô-¨qÑ1Ô1Ð1ð BÐA�SÔ1°$´-Ñ@Ô@ÐAÑAÔAÀ"ÔEÔLˆÝ�d”hÔ'¨¨D¬OÑ<Ô<Ý�d”mÔ,¨f°dÔ6JÑKÔKðMˆà×"Ò" 5Ñ)Ô)Ð)Ð)Ð)r   Nc                 ó*  — 	 |€| j         }n|}t          j                             |d¦  «         i }d}|D ];}	t	          ¦   «         }
t          j                             ||	|
¦  «         |
||	<   ||	z  }Œ<t          j                             ||¦  «         |�
 |¦   «           ||Ž  |�
 |¦   «          t          j                             |t          ¦  «         |D ]#}	t          j                             ||	d ¦  «         Œ$t          j                             |¦  «         n{# |�
 |¦   «          t          j                             |t          ¦  «         |D ]#}	t          j                             ||	d ¦  «         Œ$t          j                             |¦  «         w xY w|S )NÚcustom_monitorr   )	r9   r.   r/   Úuse_tool_idr   Úregister_callbackÚ
set_eventsÚ	NO_EVENTSÚfree_tool_id)r:   ÚfunctionrB   Úeventsr9   ÚbarrierÚ_tool_idÚ	callbacksÚevent_bitmaskÚeventÚcallbacks              r   Úrun_with_eventszTestMonitoring.run_with_events�   s«  € ð
	2ØˆØœ<��à"�ÝŒN×&Ò& xÐ1AÑBÔBÐBØˆIØˆMØð 'ð '�Ý™6œ6�Ý”×0Ò0°¸5À(ÑKÔKÐKØ#+�	˜%Ñ Ø Ñ&��åŒN×%Ò% h°Ñ>Ô>Ð>ØÐ"à�‘	”	�	ØˆH�dˆOˆOð Ð"ð �‘	”	�	ÝŒN×%Ò% hµ	Ñ:Ô:Ð:Øð Hð H�Ý”×0Ò0°¸5À$ÑGÔGÐGÐGÝŒN×'Ò'¨Ñ1Ô1Ð1Ð1øð Ð"ð �‘	”	�	ÝŒN×%Ò% hµ	Ñ:Ô:Ð:Øð Hð H�Ý”×0Ò0°¸5À$ÑGÔGÐGÐGÝŒN×'Ò'¨Ñ1Ô1Ð1Ð1øøøØÐs   ‚BD ÄA8Fc                 óÆ   — |                       | j        | j        ft          f¦  «        }|                      t          |¦  «        d¦  «         |                      |¦  «         d S r   )r|   r   r5   rT   rU   rV   rc   ©r:   Úcbs     r   Útest_start_eventzTestMonitoring.test_start_eventµ   sW   € à×!Ò! $¤-°$´(°½x¸kÑJÔJˆà×Ò�˜R™œ !Ñ$Ô$Ð$Ø×!Ò! "Ñ%Ô%Ð%Ð%Ð%r   c                 óÆ   — |                       | j        | j        ft          f¦  «        }|                      t          |¦  «        d¦  «         |                      |¦  «         d S r   )r|   r   r5   rh   rU   rV   rl   r~   s     r   Útest_return_eventz TestMonitoring.test_return_event¼   sW   € à×!Ò! $¤-°$´(°½y¸lÑKÔKˆà×Ò�˜R™œ !Ñ$Ô$Ð$Ø×"Ò" 2Ñ&Ô&Ð&Ð&Ð&r   c                 óü   — |                       | j        | j        ft          t          f¦  «        }|                      t          |¦  «        d¦  «         |                      |¦  «         |                      |¦  «         d S )Nr   )	r|   r   r5   rT   rh   rU   rV   rl   rc   r~   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Ü   ó   € à�q‘5ˆLr   rn   r   r   )r   r9   r.   r/   ro   rT   rh   r   rp   Úset_local_eventsr@   r5   rs   rU   Úpy_funcrV   Úassert_not_called)	r:   r   r9   rx   ry   ru   rz   r{   Úresults	            r   Ú4test_instrumented_code_does_not_trigger_numba_eventszCTestMonitoring.test_instrumented_code_does_not_trigger_numba_eventsÚ   s  € å	ˆ^Ñ	Ô	ð	ð 	ñ 
Ô	ð	ð	1Ø”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAØˆIØˆMÝ¥	Ð*ˆFØð 'ð '�Ý™6œ6�Ý”×0Ò0°¸%ÀÑJÔJÐJØ#+�	˜%Ñ Ø Ñ&��åŒN×+Ò+¨G°S´\Ø,9ñ;ô ;ð ;à�S˜œ‘]”]ˆFàð Gð G�Ý”×0Ò0°¸%ÀÑFÔFÐFÐFÝŒN×+Ò+¨G°S´\À1ÑEÔEÐEÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øð  ð Gð G�Ý”×0Ò0°¸%ÀÑFÔFÐFÐFÝŒN×+Ò+¨G°S´\À1ÑEÔEÐEÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøð 	×Ò˜ §¢¨T¬XÑ!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   € Ø�q‘5ˆLr   rn   r   )r9   r.   r/   ro   rˆ   r@   rT   rp   r   r   r5   rU   rs   )r:   r   r9   r‹   s       r   Ú&test_instrumented_code_can_be_compiledz5TestMonitoring.test_instrumented_code_can_be_compiledû   sN  € ð	ð 	ð 	ð	1Ø”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×+Ò+¨G°S´\Å8ÑLÔLÐLÝŒN×,Ò,¨WµhÅÁÄÑGÔGÐGà•S˜‘X”X˜dœhÑ'Ô'ˆFØ×Ò˜V S S¨¬¡]¤]Ñ3Ô3Ð3åŒN×,Ò,¨WµhÀÑEÔEÐEÝŒN×+Ò+¨G°S´\À1ÑEÔEÐEÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0Ð0øõ ŒN×,Ò,¨WµhÀÑEÔEÐEÝŒN×+Ò+¨G°S´\À1ÑEÔEÐEÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøs   …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   ø€ à�H‘J”J�Ý˜A‘w”w�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   € ˜m˜m€ r   r   )r.   r/   ru   ÚPY_YIELDr|   Úassert_called_oncer   rŠ   )r:   rš   rz   ÚwrapperÚpy_consumerÚpy_cbÚnb_consumerÚnb_cbs           r   Ú!test_unhandled_events_are_ignoredz0TestMonitoring.test_unhandled_events_are_ignored  s¨   € ð
	ð 
	ð 
	õ ”Ô%Ô.ˆà+Ð+ˆØ�h˜wÑ'Ô'ˆØ×$Ò$ [°"¸°xÑ@Ô@ˆØˆeŒ×'Ò'Ñ)Ô)Ð)à�h�s‘m”mˆØ×$Ò$ [°"¸°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)Nrn   )rT   r9   r.   r/   ro   rq   Ú
get_eventsrU   r   r5   r7   rr   rs   )r:   rz   r9   Úactive_eventsr‹   s        r   Ú test_event_with_no_callback_runsz/TestMonitoring.test_event_with_no_callback_runs'  s1  € ð
	1ÝˆEØ”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×%Ò% g¨uÑ5Ô5Ð5åœN×5Ò5°gÑ>Ô>ˆMØ×Ò˜]¨EÑ2Ô2Ð2Ø—]’] 4¤8Ñ,Ô,ˆFÝœN×5Ò5°gÑ>Ô>ˆMØ×Ò˜]¨EÑ2Ô2Ð2Ø×Ò˜V TÔ%9Ñ:Ô:Ð:åŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0Ð0øõ ŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøs   ‚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_valuern   )r   r.   r/   ÚDISABLErT   r9   ro   rq   rp   r©   rU   r   r5   r7   Úassert_calledÚrestart_eventsrr   rs   )r:   r{   rz   r9   rª   r‹   s         r   Útest_disable_from_callbackz)TestMonitoring.test_disable_from_callback<  sÒ  € õ ¥S¤^Ô%;Ð<Ñ<Ô<ˆð	1ÝˆEØ”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×%Ò% g¨uÑ5Ô5Ð5ÝŒN×,Ò,¨W°e¸XÑFÔFÐFÝœN×5Ò5°gÑ>Ô>ˆMØ×Ò˜]¨EÑ2Ô2Ð2Ø—]’] 4¤8Ñ,Ô,ˆFÝœN×5Ò5°gÑ>Ô>ˆMØ×Ò˜]¨EÑ2Ô2Ð2Ø×Ò˜V TÔ%9Ñ:Ô:Ð:Ø×"Ò"Ñ$Ô$Ð$õ ŒN×)Ò)Ñ+Ô+Ð+ÝŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0Ð0øõ ŒN×)Ò)Ñ+Ô+Ð+ÝŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøs   ¡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)Nrn   c                 óP   •— | r"t           j                             ‰‰¦  «         d S d S r•   )r.   r/   rq   )Úswitch_on_eventrz   r9   s    €€r   Úobjmode_enable_eventzGTestMonitoring.test_mutation_from_objmode.<locals>.objmode_enable_eventl  s3   ø€ Ø"ð >Ý”N×-Ò-¨g°uÑ=Ô=Ð=Ð=Ð=ð>ð >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>.foop  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   )r9   r.   r/   ro   rh   r   rp   r   r   rŠ   rq   rr   r¯   rU   r`   rs   )r:   r{   r   rz   rµ   r9   s      @@@r   Útest_mutation_from_objmodez)TestMonitoring.test_mutation_from_objmode`  sÀ  øøø€ ð'	1ð ”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝˆEå‘v”vˆHÝŒN×,Ò,¨W°e¸XÑFÔFÐFð>ð >ð >ð >ð >ð >õ Ý�Ñ Ô ð"ð "ð "ð "ñ !Ô ñ Œ^ð"ð ˆC�‰FŒFˆFØ×&Ò&Ñ(Ô(Ð(ð ˆC�‰FŒFˆFõ ŒN×%Ò% g­yÑ9Ô9Ð9à×"Ò"Ñ$Ô$Ð$ð ×Ò˜XÔ0°!Ñ4Ô4Ð4åŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0Ð0øõ ŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøs   …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_IDrr   ÚCOVERAGE_IDrT   r8   rh   ÚOPTIMIZER_IDÚitemsro   r   rp   Úkeysrq   r   r5   rs   rU   rV   rŠ   rc   rl   )r:   Útool_ids_2_eventsÚall_callbacksr9   ru   ry   rx   rz   r{   Ú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×#:Ò#:Ñ#<Ô#<ð +ð +‘�˜Ý”×*Ò*¨7Ð4OÀgÐ4OÐ4OÑPÔPÐPØ !�Ø�	Ø)2�˜gÑ&Ø#ð +ð +�EÝ#™vœv�Hà¥	Ò)Ð)Ýœ×8Ò8¸À%Ø9AñCô Cð Cà'/�I˜eÑ$Ø! UÑ*�M�Mð+ð -×1Ò1Ñ3Ô3ð Bð B�Ý”×)Ò)¨'°=ÑAÔAÐAÐAØ�MŠM˜$œ(Ñ#Ô#Ð#ð $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   rn   r   r   r   )r   r   r   r9   r.   r/   ro   rp   rh   ÚRAISEÚ	PY_UNWINDrq   rÌ   rr   r¡   Úcall_args_listrU   rB   r
   r@   r¯   ÚassertIsInstanceÚKeyErrorr‰   ÚassertInÚstrrs   )r:   Úret_callbackÚraise_callbackÚunwind_callbackr   Ústore_raisedr9   ÚraisesÚthe_callÚnumba_unpickle_callÚfoo_callÚunwind_callr=   s               @r   Útest_raising_under_monitoringz,TestMonitoring.test_raising_under_monitoringË  sf  ø€ õ
 ‘v”vˆÝ™œˆÝ™&œ&ˆà ˆå	Ý	ˆT‰Œð	"ð 	"ð 	"ð 	"ñ 
Œñ 
Œð	"ð ˆð.	1Ø”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×,Ò,¨WµiÀÑNÔNÐNÝŒN×,Ò,¨Wµe¸^ÑLÔLÐLÝŒN×,Ò,¨WµiØ-<ñ>ô >ð >åŒN×%Ò% g­y½5Ñ/@Å9Ñ/LÑMÔMÐMð&Ø�‘”��øÝð &ð &ð &Ø%������øøøøð&øøøõ ŒN×%Ò% g­yÑ9Ô9Ð9ð ×+Ò+Ñ-Ô-Ð-ð $Ô2°1Ô5ˆHØ×Ò˜Xœ]¨1Ô-­Ô/GÑHÔHÐHØ×Ò˜Xœ]¨1Ô-¨aÔ0µ*Ñ=Ô=Ð=Ø×Ò˜Xœ]¨1Ô-¨aÔ0°Ô3°SÑ9Ô9Ð9ð ×(Ò(Ñ*Ô*Ð*Ø"0Ô"?ÀÔ"BÐØ×ÒÐ0Ô5°aÔ8Ý,Ô5ñ7ô 7ð 7à×!Ò!Ð"5Ô":¸1Ô"=½xÑHÔHÐHØ%Ô4°QÔ7ˆHØ×Ò˜Xœ]¨1Ô-¨s¬{Ô/CÑDÔDÐDØ×!Ò! (¤-°Ô"2µJÑ?Ô?Ð?Ø�MŠM˜#�s 8¤=°Ô#3Ñ4Ô4Ñ5Ô5Ð5ð ×.Ò.Ñ0Ô0Ð0Ø)Ô8¸Ô;ˆKØ×Ò˜[Ô-¨aÔ0°#´+Ô2FÑGÔGÐGØ×!Ò! +Ô"2°1Ô"5µzÑBÔBÐBØ�MŠM˜#�s ;Ô#3°AÔ#6Ñ7Ô7Ñ8Ô8Ð8åŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×,Ò,¨WµiÀÑFÔFÐFÝŒN×,Ò,¨Wµe¸TÑBÔBÐBÝŒN×,Ò,¨WµiÀÑFÔFÐFÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øõ	 ŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×,Ò,¨WµiÀÑFÔFÐFÝŒN×,Ò,¨Wµe¸TÑBÔBÐBÝŒN×,Ò,¨WµiÀÑFÔFÐFÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøà�Š�c�3˜|Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-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   rn   r   r   r   r   )r   r   r   r9   r.   r/   ro   rp   rh   rÎ   ÚSTOP_ITERATIONrq   rá   rr   r¡   rÐ   rU   rB   r
   r@   r¯   r`   rÑ   rÒ   r‰   rÓ   rÔ   Ú	_getframeÚf_coderŠ   rs   )r:   Úreturn_callbackrÖ   Ústopiter_callbackr   rØ   r9   rÙ   rÚ   rÛ   rÜ   Ú	meth_callÚtest_method_coder=   s                @r   Ú$test_stop_iteration_under_monitoringz3TestMonitoring.test_stop_iteration_under_monitoring  s©  ø€ õ ™&œ&ˆÝ™œˆÝ ™FœFÐà ˆå	Ý	ˆT‰Œð	%ð 	%ð 	%ð 	%ñ 
Œñ 
Œð	%ð ˆð:	1Ø”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×,Ò,¨WµiØ-<ñ>ô >ð >åŒN×,Ò,¨WµeØ-;ñ=ô =ð =åŒN×,Ò,¨WµnØ->ñ@ô @ð @åŒN×%Ò% gÝ&/µ.Ñ&@Å5Ñ&HñJô Jð Jð&Ø�‘”��øÝ ð &ð &ð &Ø%������øøøøð&øøøõ ŒN×%Ò% g­yÑ9Ô9Ð9ð ×.Ò.Ñ0Ô0Ð0ð 'Ô5°aÔ8ˆHØ×Ò˜Xœ]¨1Ô-­Ô/GÑHÔHÐHØ×Ò˜Xœ]¨1Ô-¨aÔ0µ-Ñ@Ô@Ð@Ø×Ò˜Xœ]¨1Ô-¨aÔ0°Ô3°SÑ9Ô9Ð9ð ×(Ò(Ñ*Ô*Ð*à×Ò˜^Ô6¸Ñ:Ô:Ð:ð #1Ô"?ÀÔ"BÐØ×ÒÐ0Ô5°aÔ8Ý,Ô5ñ7ô 7ð 7à×!Ò!Ð"5Ô":¸1Ô"=½xÑHÔHÐHð &Ô4°QÔ7ˆHØ×Ò˜Xœ]¨1Ô-¨s¬{Ô/CÑDÔDÐDØ×!Ò! (¤-°Ô"2µMÑBÔBÐBØ�MŠM˜#�s 8¤=°Ô#3Ñ4Ô4Ñ5Ô5Ð5ð 'Ô5°aÔ8ˆIÝ"œ}™œÔ5ÐØ×Ò˜Yœ^¨AÔ.Ð0@ÑAÔAÐAØ×!Ò! )¤.°Ô"3µ]ÑCÔCÐCØ�MŠM˜#�s 9¤>°!Ô#4Ñ5Ô5Ñ6Ô6Ð6ð ×/Ò/Ñ1Ô1Ð1åŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×,Ò,¨WµiÀÑFÔFÐFÝŒN×,Ò,¨WµnÀdÑKÔKÐKÝŒN×,Ò,¨Wµe¸TÑBÔBÐBÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øõ	 ŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×,Ò,¨WµiÀÑFÔFÐFÝŒN×,Ò,¨WµnÀdÑKÔKÐKÝŒN×,Ò,¨Wµe¸TÑBÔBÐBÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøà�Š�c�3˜|Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-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_effectrn   )r   rÌ   rT   r9   r.   r/   ro   rq   rp   r   r5   rr   rs   r¡   rÓ   rÔ   )r:   r=   r{   rØ   rz   r9   rÙ   s          r   Ú6test_raising_callback_unwinds_from_jit_on_success_pathzETestMonitoring.test_raising_callback_unwinds_from_jit_on_success_path`  s—  € ð
 -ˆå¥J¨s¡O¤OÐ4Ñ4Ô4ˆàˆð	1ÝˆEØ”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×%Ò% g¨uÑ5Ô5Ð5ÝŒN×,Ò,¨W°e¸XÑFÔFÐFØ�HŠH�T”XÑÔÐÐøÝð 	"ð 	"ð 	"Ø!ˆLˆLˆLˆLˆLˆLøøøøð	"øøøõ ŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øõ ŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøà×#Ò#Ñ%Ô%Ð%Ø�Š�c�3˜|Ñ,Ô,Ñ-Ô-Ð-Ð-Ð-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ò   ˆ  ó   € € € € € ØˆDr   r÷   rÊ   c                  ó   •—  ‰ ‰¦  «        ‚r•   r   ©r÷   Úmsg_executions   €€r   ÚraisingzVTestMonitoring.test_raising_callback_unwinds_from_jit_on_raising_path.<locals>.raising‹  ó   ø€ ð !�. Ñ/Ô/Ð/r   rn   r   r   r   r   )r   rÌ   Ú	Exceptionr   r   rÎ   r9   r.   r/   ro   rq   rp   rr   rs   r¯   rU   r`   rÐ   rB   r
   r@   rÑ   rÒ   r‰   ÚassertIsrí   rã   rä   )r:   Úmsg_callbackr{   rü   rØ   rz   r9   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_path{  s  øø€ ð 6ˆØ7ˆå¥J¨|Ñ$<Ô$<Ð=Ñ=Ô=ˆð	ð 	ð 	ð 	ð 	�Yñ 	ô 	ð 	õ 
Ý	ˆT‰Œð	0ð 	0ð 	0ð 	0ð 	0ñ 
Œñ 
Œð	0ð ˆð	1ÝˆEØ”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×%Ò% g¨uÑ5Ô5Ð5ÝŒN×,Ò,¨W°e¸XÑFÔFÐFØˆG‰IŒIˆIˆIøÝð 	"ð 	"ð 	"Ø!ˆLˆLˆLˆLˆLˆLøøøøð	"øøøõ ŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øõ ŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øøøà×ÒÑ Ô Ð à×Ò˜Ô,¨aÑ0Ô0Ð0ð 'Ô5°aÔ8ÐØ×ÒÐ,Ô1°!Ô4µoÔ6NÑOÔOÐOØ×ÒÐ1Ô6°qÔ9½8ÑDÔDÐDð  Ô.¨qÔ1ˆØ×Ò˜Ô*¨1Ô-¨w¬Ô/GÑHÔHÐHØ�Š�lÔ'¨Ô*¨HÔ,@ÑAÔAÐAð Ô+¨AÔ.ˆ	Ýœ=™?œ?Ô1ÐØ×Ò˜œ¨Ô*Ð,<Ñ=Ô=Ð=Ø�Š�i”n QÔ'¨Ô)=Ñ>Ô>Ð>ð 	�Š�l HÔ$8Ñ9Ô9Ð9Ð9Ð9ó2   Á"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   rn   r   r   )r   rÌ   rþ   r   r   rÏ   r9   r.   r/   ro   rq   rp   rr   rs   r¡   rÐ   rU   rB   r‰   r@   ÚtyperÔ   rÿ   rí   )r:   r   r{   rü   rØ   rz   r9   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Ø”lˆGÝŒN×&Ò& wÐ0@ÑAÔAÐAÝŒN×%Ò% g¨uÑ5Ô5Ð5ÝŒN×,Ò,¨W°e¸XÑFÔFÐFØˆG‰IŒIˆIˆIøÝð 	"ð 	"ð 	"Ø!ˆLˆLˆLˆLˆLˆLøøøøð	"øøøõ ŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ9Ô9Ð9ÝŒN×'Ò'¨Ñ0Ô0Ð0Ð0øõ ŒN×,Ò,¨W°e¸TÑBÔBÐBÝŒN×%Ò% g­yÑ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Ô2°MÑBÔBÐBð 	�Š�l HÔ$8Ñ9Ô9Ð9Ð9Ð9r  c                 ó   ‡ ‡
‡— t          j        d¦  «        Š
ˆ
fd„Šˆfd„}ˆfd„}t          j        ¦   «         }t          j        |‰ |f¬¦  «        }t          j        ¦   «         }t          j        |‰ |f¬¦  «        }||f}|D ]}|                     ¦   «          Œ|D ]}|                     ¦   «          Œˆ fd„}	 |	|¦  «          |	|¦  «         d S )Nr   c                  ó0   •— ‰                       ¦   «          d S r•   )Úwait)rv   s   €r   Ú
barrier_cbzCTestMonitoring.test_monitoring_multiple_threads.<locals>.barrier_cbî  s   ø€ Ø�LŠL‰NŒNˆNˆNˆNr   c                 ó’  •— 	 |                       | j        | j        ft          ft          j        j        ‰¬¦  «        }|                      t          |¦  «        d¦  «         |  	                    |¦  «         d S # t          $ rE}|                     d                     t          j        |¦  «        ¦  «        ¦  «         Y d }~d S d }~ww xY w©N)r9   rv   r   Ú )r|   r   r5   rT   r.   r/   r¼   rU   rV   r]   rþ   Úputr3   Ú	tracebackÚformat_exception©r:   Úqr   Úer  s       €r   Út1_workz@TestMonitoring.test_monitoring_multiple_threads.<locals>.t1_workñ  sÎ   ø€ ð
>à×)Ò)¨$¬-¸$¼(¸Ý+3¨+Ý25´.Ô2LØ2<ð *ñ >ô >�ð
 × Ò ¥ R¡¤¨!Ñ,Ô,Ð,Ø×6Ò6°rÑ:Ô:Ð:Ð:Ð:øÝð >ð >ð >Ø—’�b—g’g�iÔ8¸Ñ;Ô;Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøøó   ƒA2A7 Á7
CÂ:CÃCc                 ó’  •— 	 |                       | j        | j        ft          ft          j        j        ‰¬¦  «        }|                      t          |¦  «        d¦  «         |  	                    |¦  «         d S # t          $ rE}|                     d                     t          j        |¦  «        ¦  «        ¦  «         Y d }~d S d }~ww xY wr  )r|   r   r5   rh   r.   r/   r½   rU   rV   ri   rþ   r  r3   r  r  r  s       €r   Út2_workz@TestMonitoring.test_monitoring_multiple_threads.<locals>.t2_workþ  sÎ   ø€ ð
>à×)Ò)¨$¬-¸$¼(¸Ý+4¨,Ý25´.Ô2LØ2<ð *ñ >ô >�ð
 × Ò ¥ R¡¤¨!Ñ,Ô,Ð,Ø×7Ò7¸Ñ;Ô;Ð;Ð;Ð;øÝð >ð >ð >Ø—’�b—g’g�iÔ8¸Ñ;Ô;Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=øøøøð>øøør  )ÚtargetrB   c                 óø   •— |                       ¦   «         dk    r`|                      ¦   «         s5t          |                      ¦   «         ¦  «         |                      ¦   «         ¯5‰                     d¦  «         d S d S )Nr   zqueue supposed to be empty)ÚqsizeÚemptyÚprintÚgetÚfail)r  r:   s    €r   Úassert_empty_queuezKTestMonitoring.test_monitoring_multiple_threads.<locals>.assert_empty_queue  si   ø€ Ø�wŠw‰yŒy˜AŠ~ˆ~ØŸ'š'™)œ)ð #Ý˜!Ÿ%š%™'œ'‘N”N�Nð Ÿ'š'™)œ)ð #à—	’	Ð6Ñ7Ô7Ð7Ð7Ð7ð ˆ~r   )Ú	threadingÚBarrierÚqueueÚQueueÚThreadÚstartr3   )r:   r  r  Úq1Út1Úq2Út2ÚthreadsÚtr"  rv   r  s   `         @@r   Ú test_monitoring_multiple_threadsz/TestMonitoring.test_monitoring_multiple_threadsæ  s4  øøø€ õ Ô# AÑ&Ô&ˆð	ð 	ð 	ð 	ð 	ð	>ð 	>ð 	>ð 	>ð 	>ð	>ð 	>ð 	>ð 	>ð 	>õ Œ[‰]Œ]ˆÝÔ W°D¸"°:Ð>Ñ>Ô>ˆÝŒ[‰]Œ]ˆÝÔ W°D¸"°:Ð>Ñ>Ô>ˆà�r�(ˆØð 	ð 	ˆAØ�GŠG‰IŒIˆIˆIØð 	ð 	ˆAØ�FŠF‰HŒHˆHˆHð	8ð 	8ð 	8ð 	8ð 	8ð 	Ð˜2ÑÔÐØÐ˜2ÑÔÐÐÐr   )NN)rô   rõ   rö   r>   rH   r]   rc   ri   rl   r|   r€   r‚   r„   rŒ   r�   r§   r«   r±   r¹   rÇ   rÞ   ré   rî   r  r	  r/  r   r   r   r)   r)   0   sŠ  € € € € € ð2ð 2ð 2ð,ð ð ð-ð -ð -ð*ð *ð *ð	-ð 	-ð 	-ð*ð *ð *ð  ?CØ $ð#ð #ð #ð #ðJ&ð &ð &ð'ð 'ð 'ð&ð &ð &ð.1ð 1ð 1ðB1ð 1ð 1ð&)ð )ð )ð21ð 1ð 1ð*"1ð "1ð "1ðH(1ð (1ð (1ðT?-ð ?-ð ?-ðBA.ð A.ð A.ðFP.ð P.ð P.ðd.ð .ð .ð69:ð 9:ð 9:ðv.:ð .:ð .:ð`8ð 8ð 8ð 8ð 8r   r)   c                   ó   — e Zd Zd„ ZdS )ÚTestMonitoringSelfTestc                 ó–   — |                       t          j        ddddi¬¦  «        }|                      dt	          |¦  «        ¦  «         d S )Nr)   r€   z-mÚcProfile)Úflagsz	skipped=1)Úsubprocess_test_runnerr)   rõ   rÓ   rÔ   )r:   Úrs     r   Ú+test_skipping_of_tests_if_monitoring_in_usezBTestMonitoringSelfTest.test_skipping_of_tests_if_monitoring_in_use$  sU   € ð ×'Ò'­Ô(AØ(8Ø(:Ø/3°ZÐ.@ð (ñ Bô Bˆð 	�Š�k¥3 q¡6¤6Ñ*Ô*Ð*Ð*Ð*r   N)rô   rõ   rö   r7  r   r   r   r1  r1  !  s#   € € € € € ð+ð +ð +ð +ð +r   r1  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_MONITORINGr  )Úenvvarsc                 óZ   — t           d„ ¦   «         }|                      |j        ¦  «         d S )Nc                 ó   — | dz   S r   r   r   s    r   r   z9TestMonitoringEnvVarControl.test_default_off.<locals>.foo4  r‡   r   ©r   ÚassertFalser   ©r:   r   s     r   Útest_default_offz,TestMonitoringEnvVarControl.test_default_off1  ó<   € õ 
ð	ð 	ñ 
Œð	ð 	×Ò˜Ô+Ñ,Ô,Ð,Ð,Ð,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=  r‡   r   r>  r@  s     r   Útest_override_offz-TestMonitoringEnvVarControl.test_override_off:  rB  r   Ú1c                 óZ   — t           d„ ¦   «         }|                      |j        ¦  «         d S )Nc                 ó   — | dz   S r   r   r   s    r   r   z9TestMonitoringEnvVarControl.test_override_on.<locals>.fooF  r‡   r   )r   Ú
assertTruer   r@  s     r   Útest_override_onz,TestMonitoringEnvVarControl.test_override_onC  s:   € õ 
ð	ð 	ñ 
Œð	ð 	�Š˜Ô*Ñ+Ô+Ð+Ð+Ð+r   N)rô   rõ   rö   r   Úrun_test_in_subprocessrA  rF  rK  r   r   r   r9  r9  /  sÀ   € € € € € à$€XÔ$Ø.°Ð3ð5ñ 5ô 5ð-ð -ñ5ô 5ð-ð %€XÔ$Ø.°Ð4ð6ñ 6ô 6ð-ð -ñ6ô 6ð-ð %€XÔ$Ø.°Ð4ð6ñ 6ô 6ð,ð ,ñ6ô 6ð,ð ,ð ,r   r9  Ú__main__)%rW   r%  r.   r#  r  ÚunittestÚcollectionsr   Úunittest.mockr   r   Únumba.tests.supportr   Únumbar   r   Únumba.core.utilsr	   Únumba.core.serializer
   r   r   r/   ru   rT   rh   rÎ   rÏ   râ   rr   r2   Ú
skipUnlessr)   r1  r9  rô   Úmainr   r   r   ú<module>rW     sd  ðØ 
€
€
€
Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð ð	ð 	ð 	ð Ð4Ð4Ð4ØŒ~Ô$Ô-€HØ”Ô%Ô/€IØŒNÔ!Ô'€EØ”Ô%Ô/€IØ”^Ô*Ô9€NØ”Ô%Ô/€Ið #Ø"Ø"Ø#ð%ð %Ð ð €Ô�Y 'Ò)Ð+?Ñ@Ô@ðmð mð mð mð m�Xñ mô mñ AÔ@ðmð` €Ô�Y 'Ò)Ð+?Ñ@Ô@ð
+ð 
+ð 
+ð 
+ð 
+˜Xñ 
+ô 
+ñ AÔ@ð
+ð €Ô�Y 'Ò)Ð+?Ñ@Ô@ð,ð ,ð ,ð ,ð , (ñ ,ô ,ñ AÔ@ð,ð: ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   