
    ܙd                         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 Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z G d de j                  Zedk    r e j                     dS dS )    N)compile_isolated)jitnjit)typesutils)tag)length_of_iteratorc                 8    d}t          |           D ]}||z  }|S Nr   range)nsis      6lib/python3.11/site-packages/numba/tests/test_range.pyloop1r      s,    	A1XX  	QH    c                 :    d}t          | |          D ]}||z  }|S r   r   )abr   r   s       r   loop2r      s.    	A1a[[  	QHr   c                 <    d}t          | ||          D ]}||z  }|S r   r   )r   r   cr   r   s        r   loop3r      s0    	A1a^^  	QHr   c                 :    t          t          |                     S Nlenr   )r   s    r   
range_len1r   "   s    uQxx==r   c                 <    t          t          | |                    S r   r   )r   r   s     r   
range_len2r!   %   s    uQ{{r   c                 >    t          t          | ||                    S r   r   )r   r   r   s      r   
range_len3r#   (   s    uQ1~~r   c                 T    t          t          t          |                               S r   )r	   iterr   r   s    r   range_iter_len1r'   *   s    d588nn---r   c                 :    t          t          |                     S r   )r	   r%   r&   s    r   range_iter_len2r)   -   s    d1gg&&&r   c                     t          |           }t          | |          }t          | ||          }g }|||fD ])}|                    |j        |j        |j        f           *|S r   )r   appendstartstopstep)r,   r-   r.   r1r2r3tmprs           r   range_attrsr4   0   sn    	uB	ud		B	udD	!	!B
C"b\ . .

AGQVQV,----Jr   c                      t          |          }t          ||          }t          |||          } fd|||fD             S )Nc                     g | ]}|v S  r7   ).0r3   vals     r   
<listcomp>z"range_contains.<locals>.<listcomp>=   s    +++C1H+++r   r   )r9   r,   r-   r.   r/   r0   r1   s   `      r   range_containsr;   9   sN    	uB	ud		B	udD	!	!B++++r2rl++++r   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )	TestRangec                     t           }t          |t          j        g          }|j        }|                      |d           |d                     d S )N   )r   r   r   int16entry_point
assertTrueselfpyfunccrescfuncs       r   test_loop1_int16zTestRange.test_loop1_int16B   sL    66 a&&)),,,,,r   c                     t           }t          |t          j        t          j        g          }|j        }|                      |dd           |dd                     d S )N      )r   r   r   r@   rA   rB   rC   s       r   test_loop2_int16zTestRange.test_loop2_int16H   sU    ek(BCC aVVAq\\22222r   c                     t           }t          |t          j        gdz            }|j        }g d}|D ]}|                      ||  ||            d S )N   )rJ      rJ   )rP      rN   )irR   )rR   rR   )r   r   r   int32rA   assertEqual)rD   rE   rF   rG   arglistargss         r   test_loop3_int32zTestRange.test_loop3_int32N   sx    (9:: 
 
 
  	: 	:DUUD\664=9999	: 	:r   c           
         t           }t          j        t          j        t          j        g}g d}|D ]Y}t          ||g          }|j        }|D ]<}|                      | ||                     | ||                               =Zd S N)r?   r   )r   r   r@   rT   int64r   rA   rU   )rD   rE   typelistrV   typrF   rG   args           r   test_range_len1zTestRange.test_range_len1[   s    Kek:** 	D 	DC#FSE22D$E D D  ss3xx&&S2B2BCCCCD	D 	Dr   c                    t           }t          j        t          j        t          j        g}g d}|D ]Yt          |gdz            }|j        }|D ]9}t          fd|D                       }|                      ||  ||            :Zd S )N))rJ   rK   )rK   rJ   )r[   rP   c              3   .   K   | ]} |          V  d S r   r7   r8   xr^   s     r   	<genexpr>z,TestRange.test_range_len2.<locals>.<genexpr>m   +      33cc!ff333333r   )	r!   r   r@   rT   r\   r   rA   tuplerU   	rD   rE   r]   rV   rF   rG   rW   args_r^   s	           @r   test_range_len2zTestRange.test_range_len2e   s    Kek:*** 	@ 	@C#FSEAI66D$E @ @3333d33333  ????@	@ 	@r   c                    t           }t          j        t          j        t          j        g}g d}|D ]Yt          |gdz            }|j        }|D ]9}t          fd|D                       }|                      ||  ||            :Zd S )NrO   rN   c              3   .   K   | ]} |          V  d S r   r7   rd   s     r   rf   z,TestRange.test_range_len3.<locals>.<genexpr>}   rg   r   )	r#   r   r@   rT   r\   r   rA   rh   rU   ri   s	           @r   test_range_len3zTestRange.test_range_len3p   s    Kek:
 
 
  	@ 	@C#FSEAI66D$E @ @3333d33333  ????@	@ 	@r   c           
      (   t           }t          }t          j        t          j        t          j        g}g d}|D ]Y}t          ||g          }|j        }|D ]<}|                      | ||                     | ||                               =Zd S rZ   )	r   r'   r   r@   rT   r\   r   rA   rU   )	rD   
range_funcrange_iter_funcr]   rV   r^   rF   rG   r_   s	            r   test_range_iter_len1zTestRange.test_range_iter_len1   s    
)Kek:** 	H 	HC#OcU;;D$E H H  ss3xx**SSXX2F2FGGGGH	H 	Hr   c                     t           }t          |t          j        t          j                  g          }|j        }g d}|                      ||          t          |                     d S )N)rJ   rP   rN      r?   )r)   r   r   ListintprA   rU   r   )rD   rq   rF   rG   rV   s        r   test_range_iter_listzTestRange.test_range_iter_list   s`    )%*UZ2H2H1IJJ !//wW66666r   c                     t           }g d}t          |t          j        fdz            }|j        }|D ]}|                      ||  ||            d S )N)r   r   rJ   r   rb   rJ   rb   rJ   rJ   rb   rt   rJ   rb   rt   
   r?   r[   rS   rN   )r4   r   r   r\   rA   rU   )rD   rE   rV   rF   rG   r_   s         r   test_range_attrszTestRange.test_range_attrs   sx    ! ! !  (:;;  	8 	8CUUC[&&#,7777	8 	8r   c           	      \   t           }g d}ddg}g d}g d}g d}||z   |z   |z   }t          |          }|D ]+}	|D ]&}
|                      ||
g|	R   ||
g|	R             ',ddidgd	d
g}t          |d          }|D ]+}	|D ]&}
|                      ||
g|	R   ||
g|	R             ',d S )N)	ry   )rb   r   rJ   )rJ   r   rb   rz   )r   rJ   rb   r{   r|   r}   r   TF)rR   ir[   rS   rb   r   rJ   rP   rt   r?   rK   r~   )gg      g        g      ?g?)y      ?        y      ?      ?y?        y      ??r   rJ   abc)rJ   )forceobj)r;   r   rU   r   )rD   rE   rV   	bool_valsint_vals
float_valscomplex_valsvallistrG   r_   r9   non_numeric_vals	cfunc_objs                r   test_range_containszTestRange.test_range_contains   sm   ! ! ! 5M	( ( (000
===x'*4 V 	F 	FC F F  s!1S!1!1!166#3D3D3D3DEEEEF !!HqeUD9...	 	J 	JC' J J  3!5!5!5!5vvc7HC7H7H7HIIIIJ	J 	Jr   N)__name__
__module____qualname__rH   rL   rX   r`   rk   rn   rr   rw   r   r   r7   r   r   r=   r=   @   s        - - -3 3 3: : :D D D	@ 	@ 	@@ @ @ 	H 	H 	H7 7 78 8 8J J J J Jr   r=   __main__)unittestsysnumpynumba.core.compilerr   numbar   r   
numba.corer   r   numba.tests.supportr   numba.cpython.rangeobjr	   r   r   r   r   r!   r#   r'   r)   r4   r;   TestCaser=   r   mainr7   r   r   <module>r      s    



  0 0 0 0 0 0         # # # # # # # # # # # # # # 5 5 5 5 5 5            . . .' ' '  , , ,J J J J J! J J JF zHMOOOOO r   