U
    iâËda  ã                   @   sl   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 G dd„ deƒZedkrhe  ¡  dS )é    N)ÚnjitÚjitÚliteral_unroll)Úevent)ÚTestCaseÚoverride_configc                   @   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
   úO/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_event.pyÚ<lambda>   ó    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   sN   t dd„ ƒ}t d¡�}|dƒ W 5 Q R X |  |tj¡ |  t|jƒd¡ d S )Nc                 S   s   | |  S r	   r
   ©Úxr
   r
   r   Úfoo   s    z.TestEvent.test_recording_listener.<locals>.fooúnumba:compileé   é   )r   r   Úinstall_recorderÚassertIsInstanceZRecordingListenerÚassertGreaterEqualr   Úbuffer)r   r   Úrecr
   r
   r   Útest_recording_listener   s    
z!TestEvent.test_recording_listenerc                 C   sL   t dd„ ƒ}|dƒ | |jd ¡}|d d }|  |t¡ |  |d¡ d S )Nc                 S   s   | |  S r	   r
   r   r
   r
   r   r   $   s    z/TestEvent.test_compiler_lock_event.<locals>.foor   r   ÚtimersÚcompiler_lock©r   Úget_metadataÚ
signaturesr   ÚfloatÚassertGreater©r   r   ÚmdZlock_durationr
   r
   r   Útest_compiler_lock_event#   s    
z"TestEvent.test_compiler_lock_eventc                 C   sL   t dd„ ƒ}|dƒ | |jd ¡}|d d }|  |t¡ |  |d¡ d S )Nc                 S   s   | |  S r	   r
   r   r
   r
   r   r   /   s    z+TestEvent.test_llvm_lock_event.<locals>.foor   r   r#   Ú	llvm_lockr%   r*   r
   r
   r   Útest_llvm_lock_event.   s    
zTestEvent.test_llvm_lock_eventc              	   C   s¶   t dd„ ƒ}t d¡�}|dƒ W 5 Q R X |  t|jƒd¡ |jD ]n\}}|j}|  |d t¡ |  |d t¡ |  |d t¡ |  |d	 t¡ |  |d
 t¡ |  |d t¡ qBd S )Nc                 S   s   | |  S r	   r
   r   r
   r
   r   r   :   s    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   Ústr)r   r   ZrecorderÚ_r   r5   r
   r
   r   Útest_run_pass_event9   s    
zTestEvent.test_run_pass_eventc              	      s^   | ‰G ‡ ‡fdd„dt jƒ}tdd„ ƒ‰ |ƒ }t  d|¡�}ˆ dƒ W 5 Q R X |  ||¡ d S )Nc                       s(   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   Ú
dispatcherr3   )
r   Ústatusr   ÚEventStatusÚSTARTÚkindÚassertIsr5   ÚassertNotInÚ	overloads©r   r   r:   ©r   Úutr
   r   Úon_startP   s    
z<TestEvent.test_install_listener.<locals>.MyListener.on_startc                    sN   ˆ  |jtjj¡ ˆ  |jd¡ |jd }ˆ |ˆ ¡ ˆ |jd |j	¡ d S r9   ©
r   r;   r   r<   ZENDr>   r5   r?   ZassertInrA   rB   rC   r
   r   Úon_endY   s
    
z:TestEvent.test_install_listener.<locals>.MyListener.on_endN©Ú__name__Ú
__module__Ú__qualname__rE   rG   r
   rC   r
   r   Ú
MyListenerO   s   	rL   c                 S   s   | S r	   r
   r   r
   r
   r   r   a   s    z,TestEvent.test_install_listener.<locals>.foor   r   )r   ÚListenerr   Zinstall_listenerr?   )r   rL   ÚlistenerÚyieldedr
   rC   r   Útest_install_listenerL   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                       s(   e Zd Z‡ ‡fdd„Z‡ ‡fdd„ZdS )z2TestEvent.test_global_register.<locals>.MyListenerc                    sN   ˆ  |jtjj¡ ˆ  |jd¡ |jd }ˆ |ˆ ¡ ˆ |jd |j	¡ d S r9   )
r   r;   r   r<   r=   r>   r5   r?   r@   rA   rB   rC   r
   r   rE   p   s
    
z;TestEvent.test_global_register.<locals>.MyListener.on_startc                    sN   ˆ  |jtjj¡ ˆ  |jd¡ |jd }ˆ |ˆ ¡ ˆ |jd |j	¡ d S r9   rF   rB   rC   r
   r   rG   y   s
    
z9TestEvent.test_global_register.<locals>.MyListener.on_endNrH   r
   rC   r
   r   rL   o   s   	rL   c                 S   s   | S r	   r
   r   r
   r
   r   r   ‚   s    z+TestEvent.test_global_register.<locals>.foor   r   )r   rM   r   ÚregisterÚ
unregister)r   rL   rN   r
   rC   r   Útest_global_registerl   s    
zTestEvent.test_global_registerc              	   C   s’   t dd„ ƒ}t d¡�}|ƒ  W 5 Q R X |  t|jƒd¡ |j|jd  }|j\}|j|jd  }|  	|j
d d t¡ |  	|j
d d t¡ d S )	Nc                  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$   r-   )r   r   r   r   r   r    rA   r'   Zliftedr   Úmetadatar(   )r   r   r!   ZcresZldispZ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 5 Q R X 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kr&|d7 }q|t | d ¡7 }qt | ¡|fS )Nr   Ú1r   )r   r   )r   ÚnpÚsqrtÚsin)r   ÚaccrX   )Úar
   r   Úbar«   s    
z-TestEvent.test_timing_properties.<locals>.barc                    s   ˆ t  | | f¡ƒS r	   )r]   Zzerosr   )rb   r
   r   r   µ   s    z-TestEvent.test_timing_properties.<locals>.fooZ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#   Zllvm_pass_timingsr-   r$   )ÚtupleÚstringÚascii_lowercaser   r   Z
assertLessZget_total_time)r   r   re   Z
foo_timersZ
bar_timersZfoo_llvm_timerZbar_llvm_timerr
   )ra   rb   r   Útest_timing_properties¨   s<    
	




ÿ
ÿ
ÿ
ÿ
ÿ
ÿz TestEvent.test_timing_propertiesN)rI   rJ   rK   r   r   r"   r,   r.   r8   rP   rS   r[   ri   r
   r
   r
   r   r      s    r   Ú__main__)Zunittestrg   Únumpyr]   Znumbar   r   r   Z
numba.corer   r   Znumba.tests.supportr   r   r   rI   Úmainr
   r
   r
   r   Ú<module>   s    N