U
    iâËd  ã                   @   sÒ   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
 eƒ Zde_eƒ Zde_eƒ 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G dd„ de	ƒZedkrÎe ¡  dS )é    N)Úcompile_isolatedÚFlags)ÚtypesÚerrors)ÚTestCaseÚCompilationCacheTc                 C   s   t | ƒ }}|| S ©N©Ústr©ÚaÚbÚc© r   úR/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numba/tests/test_dataflow.pyÚassignments   s    r   c                 C   s   t | ƒ } }}|| | S r   r	   )r   r   r   Údr   r   r   Úassignments2   s    r   c                 C   s   | |kr| n|d }|S ©Né   r   r   r   r   r   Úvar_propagate1   s    r   c                 C   s    d| |kr| n|d d  }|S )Nr   é   g       @r   r   r   r   r   Úvar_propagate2#   s    r   c                 C   s   d| |kr| p| }|S r   r   r   r   r   r   Úvar_propagate3(   s    r   c                 C   s(   d| d o|d  p"| d o"|d }|S )Nr   é   r   r   r   r   r   Úvar_propagate4-   s    $r   c                 C   s   d|   k odk S   S )Nr   é   r   )r   r   r   r   Úchained_compare3   s    r   c                 C   s*   d}d}|| kr"t dƒD ]}|}q|| S )Né   r   r   ©Úrange)ÚxÚir   r   r   r   Ústack_effect_error8   s    r#   c                 C   s*   t | ƒD ]}d} ||kr q"q|} || fS )Nr   r   )Únr!   r"   r   r   r   Ú	for_breakA   s    r%   c                 C   sB   ||  } }|||  }}}|||| f\} }}}| | | | | S r   r   )r   r   r   r   Úer   r   r   Úvar_swappingK   s    
r'   c                   @   s¤   e Zd Zdd„ Zefdd„Zefdd„Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zefdd„Zdd„ Zefdd„Zdd„ Zefdd„Zdd„ Zefdd„Zdd „ Zd!S )"ÚTestDataFlowc                 C   s   t ƒ | _d S r   )r   Úcache©Úselfr   r   r   ÚsetUpS   s    zTestDataFlow.setUpc                 C   s>   t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q d S )N©Úflags©éÿÿÿÿr   r   )r   r   r   Úint32Úentry_pointÚassertPreciseEqual©r+   r.   ÚpyfuncÚcrÚcfuncr!   r   r   r   Útest_assignmentsV   s
    zTestDataFlow.test_assignmentsc                 C   sN   t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q |tkrJ|dƒ d S )Nr-   r/   r   )r   r   r   r1   r2   r3   Úforce_pyobj_flagsr4   r   r   r   Útest_assignments2]   s    zTestDataFlow.test_assignments2c                 C   s8   | j j|tjtjftd�}|j}|  ||Ž ||Ž ¡ d S )Nr-   )r)   Úcompiler   r1   Úno_pyobj_flagsr2   r3   )r+   r5   Úargsr6   r7   r   r   r   Úrun_propagate_funcj   s
    ÿzTestDataFlow.run_propagate_funcc                 C   s   |   td¡ |   td¡ d S ©N©r   r   ©r   r   )r>   r   r*   r   r   r   Útest_var_propagate1p   s    z TestDataFlow.test_var_propagate1c                 C   s   |   td¡ |   td¡ d S r?   )r>   r   r*   r   r   r   Útest_var_propagate2t   s    z TestDataFlow.test_var_propagate2c                 C   sL   |   td¡ |   td¡ |   td¡ |   td¡ |   td¡ |   td¡ d S )Nr@   rA   )r   r   ©r0   r   )r   r   ©r   r0   )r>   r   r*   r   r   r   Útest_var_propagate3x   s    z TestDataFlow.test_var_propagate3c                 C   sp   |   td¡ |   td¡ |   td¡ |   td¡ |   td¡ |   td¡ |   td¡ |   td¡ |   td	¡ d S )
N)r   r   )r   r   )r   r0   )r   r   )r   r   rE   )r0   r   rD   )r0   r0   )r>   r   r*   r   r   r   Útest_var_propagate4€   s    z TestDataFlow.test_var_propagate4c                 C   s>   t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q d S )Nr-   )r   r   r   r   é   )r   r   r   r1   r2   r3   r4   r   r   r   Útest_chained_compare‹   s
    z!TestDataFlow.test_chained_comparec                 C   s   |   t¡ d S r   )rI   r<   r*   r   r   r   Útest_chained_compare_npm’   s    z%TestDataFlow.test_chained_compare_npmc                 C   s>   t }t|tjf|d�}|j}dD ]}|  ||ƒ||ƒ¡ q d S )Nr-   )r   r   r   r   )r#   r   r   r1   r2   r3   r4   r   r   r   Útest_stack_effect_error•   s
    z$TestDataFlow.test_stack_effect_errorc                 C   s   |   t¡ d S r   )rK   r<   r*   r   r   r   Útest_stack_effect_error_npmž   s    z(TestDataFlow.test_stack_effect_error_npmc                 C   sH   t }t|tjfd |d�}|j}ttdddƒƒ}|  ||Ž ||Ž ¡ d S )Nr   r-   r   é
   r   )r'   r   r   r1   r2   Útupler    r3   )r+   r.   r5   r6   r7   r=   r   r   r   Útest_var_swapping¡   s
    zTestDataFlow.test_var_swappingc                 C   s   |   t¡ d S r   )rO   r<   r*   r   r   r   Útest_var_swapping_npm¨   s    z"TestDataFlow.test_var_swapping_npmc                 C   sJ   t }t|tjtjf|d�}|j}dD ] \}}|  |||ƒ|||ƒ¡ q$d S )Nr-   ))rH   r   )rH   é   )r%   r   r   Zintpr2   r3   )r+   r.   r5   r6   r7   r$   r!   r   r   r   Útest_for_break«   s
    zTestDataFlow.test_for_breakc                 C   s   |   t¡ d S r   )rR   r<   r*   r   r   r   Útest_for_break_npm³   s    zTestDataFlow.test_for_break_npmN)Ú__name__Ú
__module__Ú__qualname__r,   r9   r8   r:   r>   rB   rC   rF   rG   rI   rJ   rK   rL   rO   rP   rR   rS   r   r   r   r   r(   Q   s    	r(   Ú__main__)ÚwarningsZunittestZnumba.core.compilerr   r   Z
numba.corer   r   Znumba.tests.supportr   r   Zenable_pyobj_flagsZenable_pyobjectr9   Zforce_pyobjectr<   r   r   r   r   r   r   r   r#   r%   r'   r(   rT   Úmainr   r   r   r   Ú<module>   s,   	
f