U
    9%e                     @   s   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	m
Z
 d dlmZ d dlm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 jZedkre   dS )    N)compile_isolated)jitnjit)typesutils)tag)length_of_iteratorc                 C   s   d}t | D ]}||7 }q|S Nr   range)nsi r   U/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/numba/tests/test_range.pyloop1   s    
r   c                 C   s    d}t | |D ]}||7 }q|S r	   r
   )abr   r   r   r   r   loop2   s    
r   c                 C   s"   d}t | ||D ]}||7 }q|S r	   r
   )r   r   cr   r   r   r   r   loop3   s    
r   c                 C   s   t t| S Nlenr   )r   r   r   r   
range_len1"   s    r   c                 C   s   t t| |S r   r   )r   r   r   r   r   
range_len2%   s    r   c                 C   s   t t| ||S r   r   )r   r   r   r   r   r   
range_len3(   s    r   c                 C   s   t tt| S r   )r   iterr   r   r   r   r   range_iter_len1*   s    r   c                 C   s   t t| S r   )r   r   r   r   r   r   range_iter_len2-   s    r    c                 C   sL   t | }t | |}t | ||}g }|||fD ]}||j|j|jf q,|S r   )r   appendstartstopstep)r"   r#   r$   r1r2r3tmprr   r   r   range_attrs0   s    
r*   c                    s6   t |}t ||}t |||} fdd|||fD S )Nc                    s   g | ]} |kqS r   r   ).0r)   valr   r   
<listcomp>=   s     z"range_contains.<locals>.<listcomp>r
   )r-   r"   r#   r$   r%   r&   r'   r   r,   r   range_contains9   s    
r/   c                   @   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 )	TestRangec                 C   s0   t }t|tjg}|j}| |d|d d S )N   )r   r   r   int16entry_point
assertTrueselfpyfunccrescfuncr   r   r   test_loop1_int16B   s    zTestRange.test_loop1_int16c                 C   s8   t }t|tjtjg}|j}| |dd|dd d S )N      )r   r   r   r2   r3   r4   r5   r   r   r   test_loop2_int16H   s    zTestRange.test_loop2_int16c                 C   sJ   t }t|tjgd }|j}ddddg}|D ]}| || ||  q,d S )N   r;      r;   r@      r>   irD   rD   rD   )r   r   r   int32r3   assertEqual)r6   r7   r8   r9   arglistargsr   r   r   test_loop3_int32N   s    zTestRange.test_loop3_int32c                 C   sd   t }tjtjtjg}dddg}|D ]<}t||g}|j}|D ] }| |||||| q<q"d S Nr1   r   )r   r   r2   rG   int64r   r3   rH   )r6   r7   typelistrI   typr8   r9   argr   r   r   test_range_len1[   s    
zTestRange.test_range_len1c                    sv   t }tjtjtjg}dddg}|D ]N t| gd }|j}|D ].}t fdd|D }| || ||  q@q"d S )N)r;   r<   )r<   r;   )rM   r@   c                 3   s   | ]} |V  qd S r   r   r+   xrP   r   r   	<genexpr>m   s     z,TestRange.test_range_len2.<locals>.<genexpr>)	r   r   r2   rG   rN   r   r3   tuplerH   r6   r7   rO   rI   r8   r9   rJ   args_r   rV   r   test_range_len2e   s    
zTestRange.test_range_len2c                    sx   t }tjtjtjg}ddddg}|D ]N t| gd }|j}|D ].}t fdd|D }| || ||  qBq$d S )Nr?   rA   rC   rE   r>   c                 3   s   | ]} |V  qd S r   r   rT   rV   r   r   rW   }   s     z,TestRange.test_range_len3.<locals>.<genexpr>)	r   r   r2   rG   rN   r   r3   rX   rH   rY   r   rV   r   test_range_len3p   s    zTestRange.test_range_len3c           	      C   sh   t }t}tjtjtjg}dddg}|D ]<}t||g}|j}|D ] }| |||||| q@q&d S rL   )	r   r   r   r2   rG   rN   r   r3   rH   )	r6   Z
range_funcrange_iter_funcrO   rI   rP   r8   r9   rQ   r   r   r   test_range_iter_len1   s    
zTestRange.test_range_iter_len1c                 C   sD   t }t|ttjg}|j}dddddg}| ||t| d S )Nr;   r@   r>      r1   )r    r   r   ListZintpr3   rH   r   )r6   r]   r8   r9   rI   r   r   r   test_range_iter_list   s
    zTestRange.test_range_iter_listc                 C   sN   t }ddddddg}t|tjfd }|j}|D ]}| || ||  q0d S )Nr   r   r;   r   rS   r;   rS   r;   r;   rS   r_   r;   rS   r_   
   r1   rM   rF   r>   )r*   r   r   rN   r3   rH   )r6   r7   rI   r8   r9   rQ   r   r   r   test_range_attrs   s    zTestRange.test_range_attrsc                 C   s   t }ddddddddd	g	}d
dg}dddddddddddddg}dddddg}ddd d!g}|| | | }t|}|D ].}	|D ]$}
| ||
f|	 ||
f|	  q~qvd"didgd#d$g}t|d
d%}|D ].}	|D ]$}
| ||
f|	 ||
f|	  qqd S )&Nrb   )rS   r   r;   )r;   r   rS   rc   )r   r;   rS   rd   re   rf   rh   TFrD   irM   rF   rS   r   r;   r@   r_   r1   r<   rg   gg      g        g      ?g?y      ?        y      ?      ?y?        y      ??r   abc)r;   )Zforceobj)r/   r   rH   r   )r6   r7   rI   Z	bool_valsZint_valsZ
float_valsZcomplex_valsZvallistr9   rQ   r-   Znon_numeric_valsZ	cfunc_objr   r   r   test_range_contains   sD    
     
$zTestRange.test_range_containsN)__name__
__module____qualname__r:   r=   rK   rR   r[   r\   r^   ra   ri   rl   r   r   r   r   r0   @   s   
r0   __main__)ZunittestsysnumpyZnumba.core.compilerr   Znumbar   r   Z
numba.corer   r   Znumba.tests.supportr   Znumba.cpython.rangeobjr   r   r   r   r   r   r   r   r    r*   r/   ZTestCaser0   rm   mainr   r   r   r   <module>   s*   	 