a
    þ
þd¹  ã                   @   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rÎe  ¡  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   ú_/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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 | ]}ˆ |v ‘qS r   r   )Ú.0r)   ©Úvalr   r   Ú
<listcomp>=   ó    z"range_contains.<locals>.<listcomp>r
   )r-   r"   r#   r$   r%   r&   r'   r   r,   r   Úrange_contains9   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   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   r3   r4   r5   r6   r   r   r   Útest_loop2_int16H   s    zTestRange.test_loop2_int16c                 C   sF   t }t|tjgd ƒ}|j}g d¢}|D ]}|  ||Ž ||Ž ¡ q(d S )Né   ©)r<   é   r<   )rA   é   r?   )éöÿÿÿiõÿÿÿrC   )rC   rC   éþÿÿÿ)r   r   r   Úint32r4   ÚassertEqual)r7   r8   r9   r:   ÚarglistÚargsr   r   r   Útest_loop3_int32N   s    zTestRange.test_loop3_int32c                 C   sb   t }tjtjtjg}g d¢}|D ]<}t||gƒ}|j}|D ] }|  |||ƒƒ|||ƒƒ¡ q:q d S ©N)r2   r   éûÿÿÿ)r   r   r3   rE   Úint64r   r4   rF   )r7   r8   ÚtypelistrG   Útypr9   r:   Úargr   r   r   Útest_range_len1[   s    zTestRange.test_range_len1c                    st   t }tjtjtjg}g d¢}|D ]N‰ t|ˆ gd ƒ}|j}|D ].}t‡ fdd„|D ƒƒ}|  ||Ž ||Ž ¡ q>q d S )N))r<   r=   )r=   r<   )rK   éÿÿÿÿrA   c                 3   s   | ]}ˆ |ƒV  qd S r   r   ©r+   Úx©rN   r   r   Ú	<genexpr>m   r/   z,TestRange.test_range_len2.<locals>.<genexpr>)	r   r   r3   rE   rL   r   r4   ÚtuplerF   ©r7   r8   rM   rG   r9   r:   rH   Zargs_r   rT   r   Útest_range_len2e   s    zTestRange.test_range_len2c                    st   t }tjtjtjg}g d¢}|D ]N‰ t|ˆ gd ƒ}|j}|D ].}t‡ fdd„|D ƒƒ}|  ||Ž ||Ž ¡ q>q d S )Nr@   r?   c                 3   s   | ]}ˆ |ƒV  qd S r   r   rR   rT   r   r   rU   }   r/   z,TestRange.test_range_len3.<locals>.<genexpr>)	r   r   r3   rE   rL   r   r4   rV   rF   rW   r   rT   r   Útest_range_len3p   s    zTestRange.test_range_len3c           	      C   sf   t }t}tjtjtjg}g d¢}|D ]<}t||gƒ}|j}|D ] }|  |||ƒƒ|||ƒƒ¡ q>q$d S rJ   )	r   r   r   r3   rE   rL   r   r4   rF   )	r7   Z
range_funcÚrange_iter_funcrM   rG   rN   r9   r:   rO   r   r   r   Útest_range_iter_len1€   s    zTestRange.test_range_iter_len1c                 C   s>   t }t|t tj¡gƒ}|j}g d¢}|  ||ƒt|ƒ¡ d S )N)r<   rA   r?   é   r2   )r    r   r   ÚListZintpr4   rF   r   )r7   rZ   r9   r:   rG   r   r   r   Útest_range_iter_list‹   s
    zTestRange.test_range_iter_listc                 C   sF   t }g d¢}t|tjfd ƒ}|j}|D ]}|  ||Ž ||Ž ¡ q(d S )N)©r   r   r<   ©r   rQ   r<   ©rQ   r<   r<   ©rQ   r\   r<   ©rQ   r\   é
   ©r2   rK   rD   r?   )r*   r   r   rL   r4   rF   )r7   r8   rG   r9   r:   rO   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 ]2}	|D ](}
|  ||
g|	¢R Ž ||
g|	¢R Ž ¡ qPqHddidgd	d
g}t|dd}|D ]2}	|D ](}
|  ||
g|	¢R Ž ||
g|	¢R Ž ¡ q¦qžd S )N)	r_   )rQ   r   r<   )r<   r   rQ   r`   )r   r<   rQ   ra   rb   rc   re   TF)rC   iúÿÿÿrK   éüÿÿÿrD   rQ   r   r<   rA   r\   r2   r=   rd   )gš™™™™™ñ¿g      ð¿g        g      ð?gš™™™™™ñ?)y      ð?        y      ð?      ð?yš™™™™™ñ?        y      ð?š™™™™™ñ?r   r<   Úabc)r<   )Zforceobj)r0   r   rF   r   )r7   r8   rG   Z	bool_valsZint_valsZ
float_valsZcomplex_valsZvallistr:   rO   r-   Znon_numeric_valsZ	cfunc_objr   r   r   Útest_range_contains    s$    

ÿ(zTestRange.test_range_containsN)Ú__name__Ú
__module__Ú__qualname__r;   r>   rI   rP   rX   rY   r[   r^   rf   ri   r   r   r   r   r1   @   s   
r1   Ú__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*   r0   ZTestCaser1   rj   Úmainr   r   r   r   Ú<module>   s*   	 