o
    i                     @   s   d dl Z d dlZd dlmZmZ d dl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d ZG dd de	Zed krke   dS dS )!    N)jitnjit)types)TestCase)length_of_iteratorc                 C   s   d}t | D ]}||7 }q|S Nr   range)nsi r   T/home/ubuntu/transcripts/venv/lib/python3.10/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      t t| S Nlenr	   )r
   r   r   r   
range_len1       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&      r   c                 C   s   t tt| S r   )r   iterr	   r   r   r   r   range_iter_len1(   r   r    c                 C   r   r   )r   r   r   r   r   r   range_iter_len2+   r   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_attrs.   s   
r+   c                    s6   t |}t ||}t |||} fdd|||fD S )Nc                    s   g | ]} |v 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_contains7   s   
r0   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   s,   t }ttjf|}| |d|d d S )N   )r   r   r   int16
assertTrueselfpyfunccfuncr   r   r   test_loop1_int16@   s   zTestRange.test_loop1_int16c                 C   s4   t }ttjtjf|}| |dd|dd d S )N      )r   r   r   r3   r4   r5   r   r   r   test_loop2_int16E   s   zTestRange.test_loop2_int16c                 C   sF   t }ttjtjtjf|}g d}|D ]}| || ||  qd S )N)r:      r:   )r>         )irA   )rA   rA   )r   r   r   int32assertEqual)r6   r7   r8   arglistargsr   r   r   test_loop3_int32J   s   zTestRange.test_loop3_int32c                 C   s^   t }tjtjtjg}g d}|D ]}t|f|}|D ]}| |||||| qqd S N)r2   r   )r   r   r3   rC   int64r   rD   )r6   r7   typelistrE   typr8   argr   r   r   test_range_len1V   s   zTestRange.test_range_len1c                    sn   t }tjtjtjg}g d}|D ]$ t  f|}|D ]}t fdd|D }| || ||  qqd S )N))r:   r;   )r;   r:   )rI   c                 3       | ]} |V  qd S r   r   r,   xrL   r   r   	<genexpr>f       z,TestRange.test_range_len2.<locals>.<genexpr>)r   r   r3   rC   rJ   r   tuplerD   r6   r7   rK   rE   r8   rF   args_r   rS   r   test_range_len2_   s   zTestRange.test_range_len2c                    sp   t }tjtjtjg}g d}|D ]% t   f|}|D ]}t fdd|D }| || ||  qqd S )Nr=   c                 3   rP   r   r   rQ   rS   r   r   rT   u   rU   z,TestRange.test_range_len3.<locals>.<genexpr>)r   r   r3   rC   rJ   r   rV   rD   rW   r   rS   r   test_range_len3i   s   zTestRange.test_range_len3c                 C   sb   t }t}tjtjtjg}g d}|D ]}t|f|}|D ]}| |||||| qqd S rH   )r   r    r   r3   rC   rJ   r   rD   )r6   
range_funcrange_iter_funcrK   rE   rL   r8   rM   r   r   r   test_range_iter_len1x   s   zTestRange.test_range_iter_len1c                 C   s>   t }ttjtjddf|}g d}| ||t| d S )NT)	reflected)r:   r>   r@      r2   )r!   r   r   ListintprD   r   )r6   r\   r8   rE   r   r   r   test_range_iter_list   s   zTestRange.test_range_iter_listc                 C   sF   t }g d}ttjtjtjf|}|D ]}| || ||  qd S )N)r   r   r:   r   rO   r:   rO   r:   r:   rO   r_   r:   rO   r_   
   r2   rI   rB   )r+   r   r   rJ   rD   )r6   r7   rE   r8   rM   r   r   r   test_range_attrs   s   zTestRange.test_range_attrsc                 C   s   t }g d}ddg}g d}g d}g d}|| | | }t|}|D ]}	|D ]}
| ||
g|	R  ||
g|	R   q(q$ddidgd	d
g}t|dd}|D ]}	|D ]}
| ||
g|	R  ||
g|	R   qSqOd S )N)	rc   )rO   r   r:   )r:   r   rO   rd   )r   r:   rO   re   rf   rg   ri   TF)rA   irI   rB   rO   r   r:   r>   r_   r2   r;   rh   )gg      g        g      ?g?)y      ?        y      ?      ?y?        y      ??r   r:   abc)r:   )forceobj)r0   r   rD   r   )r6   r7   rE   	bool_valsint_vals
float_valscomplex_valsvallistr8   rM   r.   non_numeric_vals	cfunc_objr   r   r   test_range_contains   s*   

&&zTestRange.test_range_containsN)__name__
__module____qualname__r9   r<   rG   rN   rY   rZ   r]   rb   rj   ru   r   r   r   r   r1   >   s    	

r1   c                 C   sF   t jtt| ||t jd}d}t| ||D ]
}|||< |d7 }q|S )Ndtyper   r:   )npzerosr   r	   uint64)r#   r$   r%   rR   r   vr   r   r   	my_arange   s   
r   c                   @   s   e Zd Zdd ZdS )TestRangeNumpyc              	   C   s>   t tdtdtd}| |tjdddtjd dS )z,Test that mixing `uint64` and `int64` works.r;   r   rO   ry   N)r   r{   r}   rJ   assertPreciseEqualarange)r6   r   r   r   r   test_range_safe_cast_mixed   s    z)TestRangeNumpy.test_range_safe_cast_mixedN)rv   rw   rx   r   r   r   r   r   r      s    r   __main__)unittestnumpyr{   numbar   r   
numba.corer   numba.tests.supportr   numba.core.inline_closurecallr   r   r   r   r   r   r   r    r!   r+   r0   r1   r   r   rv   mainr   r   r   r   <module>   s.    	y
	