U
    9%e                     @   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re  dS )    N)compile_isolatedFlags)typeserrors)TestCaseCompilationCacheTc                 C   s   t |  }}|| S Nstrabc r   X/var/www/html/Darija-Ai-API/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