o
    i                     @   s|   d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z
 d dlmZmZ d dlmZ G dd deZedkr<e   dS dS )	    N)njitjitliteral_unroll)event)TestCaseoverride_config)_lazy_pformatc                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )	TestEventc                 C   s   t dd   ttj| _d S )Nc                   S   s   d S N r   r   r   T/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/numba/tests/test_event.py<lambda>   s    z!TestEvent.setUp.<locals>.<lambda>)r   lenev_registered _TestEvent__registered_listenersselfr   r   r   setUp   s   zTestEvent.setUpc                 C   s   |  ttj| j d S r
   )assertEqualr   r   r   r   r   r   r   r   tearDown   s   zTestEvent.tearDownc                 C   sb   t dd }td}|d W d    n1 sw   Y  | |tj | t|jd d S )Nc                 S      | |  S r
   r   xr   r   r   foo      z.TestEvent.test_recording_listener.<locals>.foonumba:compile      )r   r   install_recorderassertIsInstanceRecordingListenerassertGreaterEqualr   buffer)r   r   recr   r   r   test_recording_listener   s   

z!TestEvent.test_recording_listenerc                 C   L   t dd }|d ||jd }|d d }| |t | |d d S )Nc                 S   r   r
   r   r   r   r   r   r   %   r   z/TestEvent.test_compiler_lock_event.<locals>.foor   r   timerscompiler_lockr   get_metadata
signaturesr    floatassertGreaterr   r   mdlock_durationr   r   r   test_compiler_lock_event$      
z"TestEvent.test_compiler_lock_eventc                 C   r&   )Nc                 S   r   r
   r   r   r   r   r   r   0   r   z+TestEvent.test_llvm_lock_event.<locals>.foor   r   r'   	llvm_lockr)   r.   r   r   r   test_llvm_lock_event/   r2   zTestEvent.test_llvm_lock_eventc                 C   s   t dd }td}|d W d    n1 sw   Y  | t|jd |jD ]7\}}|j}| |d t | |d t | |d t | |d	 t	 | |d
 t | |d t q+d S )Nc                 S   r   r
   r   r   r   r   r   r   ;   r   z*TestEvent.test_run_pass_event.<locals>.fooznumba:run_passr   r   namequalnamemoduleflagsargsreturn_type)
r   r   r   r-   r   r#   datar    strr   )r   r   recorder_r   r;   r   r   r   test_run_pass_event:   s   

zTestEvent.test_run_pass_eventc                    sr   | G  fdddt j}tdd  | }t d|} d W d    n1 s,w   Y  | || d S )Nc                       (   e Zd Z fddZ fddZdS )z3TestEvent.test_install_listener.<locals>.MyListenerc                    s`    |jtjj  |jd |jd   |jd }|  |jd |j	 d S Nr   
dispatcherr9   )
r   statusr   EventStatusSTARTkindassertIsr;   assertNotIn	overloadsr   r   rB   r   utr   r   on_startQ   s   
z<TestEvent.test_install_listener.<locals>.MyListener.on_startc                    N    |jtjj  |jd |jd }|  |jd |j	 d S rA   
r   rC   r   rD   ENDrF   r;   rG   assertInrI   rJ   rK   r   r   on_endZ   s
   
z:TestEvent.test_install_listener.<locals>.MyListener.on_endN__name__
__module____qualname__rM   rR   r   rK   r   r   
MyListenerP       	rW   c                 S      | S r
   r   r   r   r   r   r   b      z,TestEvent.test_install_listener.<locals>.foor   r   )r   Listenerr   install_listenerrG   )r   rW   listeneryieldedr   rK   r   test_install_listenerM   s   

zTestEvent.test_install_listenerc                    sR   | G  fdddt j}tdd  | }t d|  d t d| d S )Nc                       r@   )z2TestEvent.test_global_register.<locals>.MyListenerc                    rN   rA   )
r   rC   r   rD   rE   rF   r;   rG   rH   rI   rJ   rK   r   r   rM   q   
   
z;TestEvent.test_global_register.<locals>.MyListener.on_startc                    rN   rA   rO   rJ   rK   r   r   rR   z   r`   z9TestEvent.test_global_register.<locals>.MyListener.on_endNrS   r   rK   r   r   rW   p   rX   rW   c                 S   rY   r
   r   r   r   r   r   r      rZ   z+TestEvent.test_global_register.<locals>.foor   r   )r   r[   r   register
unregister)r   rW   r]   r   rK   r   test_global_registerm   s   
zTestEvent.test_global_registerc                 C   s   t dddd }td}|  W d    n1 sw   Y  | t|jd |j|jd  }|j\}|j|jd  }| 	|j
d d	 t | 	|j
d d
 t d S )NT)forceobjc                  S   s$   t   d} tdD ]}| |7 } q	| S )Nr   
   )objectrange)cir   r   r   r      s
   
z-TestEvent.test_lifted_dispatcher.<locals>.foor      r   r'   r(   r3   )r   r   r   r"   r   r#   rI   r+   liftedr    metadatar,   )r   r   r$   cresldisplifted_cresr   r   r   test_lifted_dispatcher   s"   
z TestEvent.test_lifted_dispatcherc                    s  t tj t fddtfdd}tdd |d W d    n1 s)w   Y  dd	 }||d
}|d
}||d}|d}| |d |d  | |d |d  | | |d  | | |d  | |d |d  | |d |d  d S )Nc                    sH   d}t  D ]}|d| iv r|d7 }q|t| d 7 }qt| |fS )Nr   1r   )r   r   )r   npsqrtsin)r   accri   )ar   r   bar   s   
z-TestEvent.test_timing_properties.<locals>.barc                    s    t | | fS r
   )rr   zerosr   )rw   r   r   r      s   z-TestEvent.test_timing_properties.<locals>.fooLLVM_PASS_TIMINGSTr   c                 S   s   |  | jd }|| S )Nr   )r*   r+   )fnpropr/   r   r   r   
get_timers   s   z4TestEvent.test_timing_properties.<locals>.get_timersr'   llvm_pass_timingsr3   r(   )tuplestringascii_lowercaser   r   
assertLessget_total_time)r   r   r|   
foo_timers
bar_timersfoo_llvm_timerbar_llvm_timerr   )rv   rw   r   test_timing_properties   s>   
	










z TestEvent.test_timing_propertiesN)rT   rU   rV   r   r   r%   r1   r4   r?   r_   rc   rp   r   r   r   r   r   r	      s     r	   __main__)unittestr   numpyrr   numbar   r   r   
numba.corer   r   numba.tests.supportr   r   numba.core.utilsr   r	   rT   mainr   r   r   r   <module>   s     N