
    
f#3                        d dl Z d dlZd dlZd dlmZ  G d de j                  Z G d de j                  Z G d de j                  Z	 G d	 d
e j                  Z
 G d de j                  Zedk    r e j                     dS dS )    N)Arrayc                   P    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 ZdS )TestSlicingc                     d}|D ]Z}|j         |         |j         |         k    r<|j        dk    r|j        dk    r5|                     d|j         d|j                    [d S )N)C_CONTIGUOUSF_CONTIGUOUSr   zcontiguous flag mismatch:
got=z
expect=)flagssizefail)selfarrnparrattrsattrs        ;lib/python3.11/site-packages/numba/tests/test_dummyarray.pyassertSameContigzTestSlicing.assertSameContig	   s    . 	8 	8Dy%+d"3338q==UZ1__ III"yyy%++7 8 8 8	8 	8    c                    t          j        d          }t          j        d|j        |j        |j        j                  }|                     ||           d}|D ]l}||d          }||d          }|                     ||           | 	                    |j        |j                   | 	                    |j        |j                   md S N   r   )r         
npemptyr   	from_descshapestridesdtypeitemsizer   assertEqualr   r   r   xxxexpectgots          r   test_slice0_1dzTestSlicing.test_slice0_1d   s    oaem#k24 4c5))) 	: 	:A122YFabb'C!!#v...SY555S[&.9999	: 	:r   c                 f   t          j        d          }t          j        d|j        |j        |j        j                  }d}|D ]l}|d |         }|d |         }|                     ||           | 	                    |j        |j                   | 	                    |j        |j                   md S r   r   r$   s          r   test_slice1_1dzTestSlicing.test_slice1_1d$   s    oaem#k24 4 	: 	:A2A2YFbqb'C!!#v...SY555S[&.9999	: 	:r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }d}t          j	        ||          D ]o\  }}|||         }|||         }| 
                    ||           |                     |j        |j                   |                     |j        |j                   pd S r   r   r   r   r   r   r    r!   r"   	itertoolsproductr   r#   )r   r   r   r%   r&   yr'   r(   s           r   test_slice2_1dzTestSlicing.test_slice2_1d0   s    oaem#k24 4%b"-- 	: 	:DAq1Q3ZFac(C!!#v...SY555S[&.9999	: 	:r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }d}|D ]l}||d          }||d          }|                     ||           | 	                    |j        |j                   | 	                    |j        |j                   mt          j        ||          D ]w\  }}||d |d f         }||d |d f         }|                     ||           | 	                    |j        |j                   | 	                    |j        |j                   xd S )Nr      r   )r   r   r   r   )r   r   r   r   r   r    r!   r"   r   r#   r.   r/   r   r   r   r%   r&   r'   r(   r0   s           r   test_slice0_2dzTestSlicing.test_slice0_2d>   sP     oaem#k24 4 	: 	:A122YFabb'C!!#v...SY555S[&.9999%b"-- 	: 	:DAq122qrr6]Fabb!""f+C!!#v...SY555S[&.9999	: 	:r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }d}|D ]l}|d |         }|d |         }|                     |j        |j                   |                     |j        |j                   | 	                    ||           mt          j        ||          D ]w\  }}|d |d |f         }|d |d |f         }|                     |j        |j                   |                     |j        |j                   | 	                    ||           xd S Nr3   r   )r   r   r   )r   r   r   r   r   r    r!   r"   r#   r   r.   r/   r5   s           r   test_slice1_2dzTestSlicing.test_slice1_2dQ   sP     oaem#k24 4 	/ 	/A2A2YFbqb'CSY555S[&.999!!#v....%b"-- 	/ 	/DAq2A2rr6]Fbqb"1"f+CSY555S[&.999!!#v....	/ 	/r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }d}t          j	        ||||          D ]y\  }}}}|||||f         }|||||f         }	| 
                    |	|           |                     |	j        |j                   |                     |	j        |j                   zt          j	        ||          D ]w\  }
}|||||f         }|||||f         }	| 
                    |	|           |                     |	j        |j                   |                     |	j        |j                   xd S r8   r-   )r   r   r   r%   stuvr'   r(   r&   r0   s               r   test_slice2_2dzTestSlicing.test_slice2_2dd   sy     oaem#k24 4#+BB;; 	: 	:JAq!Q1Q3!8_Fac1Q3h-C!!#v...SY555S[&.9999%b"-- 	: 	:DAq1Q3!8_Fac1Q3h-C!!#v...SY555S[&.9999	: 	:r   c                 j   t          j        d          }t          j        d|j        |j        |j        j                  }d}|D ]n}|d d |         }|d d |         }|                     ||           | 	                    |j        |j                   | 	                    |j        |j                   od S )Nr   r   r   r   r   r   r   r$   s          r   test_strided_1dzTestSlicing.test_strided_1dy   s    oaem#k24 4 	: 	:A33Q3ZFccc(C!!#v...SY555S[&.9999	: 	:r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }d}t          j	        ||          D ]{\  }}|d d |d d |f         }|d d |d d |f         }| 
                    ||           |                     |j        |j                   |                     |j        |j                   |d S )Nr3   r   rA   r-   )r   r   r   r%   abr'   r(   s           r   test_strided_2dzTestSlicing.test_strided_2d   s      oaem#k24 4%b"-- 	: 	:DAq33Q3!8_Fccc33Q3h-C!!#v...SY555S[&.9999	: 	:r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }d}t          j	        |||          D ]\  }}}|d d |d d |d d |f         }|d d |d d |d d |f         }| 
                    ||           |                     |j        |j                   |                     |j        |j                   d S )N)r   r4      r   rA   r-   )	r   r   r   r%   rD   rE   cr'   r(   s	            r   test_strided_3dzTestSlicing.test_strided_3d   s    ##oaem#k24 4 (R44 	: 	:GAq!33Q3!SSqS=)Fccc33Q3!m$C!!#v...SY555S[&.9999	: 	:r   c                 V   t          j        d          }t          j        |d          }t          j        d|j        |j        |j                  }|                     |j	        d         |j	        d                    |                     |j	        d         |j	        d                    d S )N)r   r      )r   r   r   )axesr   r   r   )
r   r   	transposer   r   r   r    r"   r#   r	   )r   zr   s      r   test_issue_2766zTestSlicing.test_issue_2766   s    HYL+++oa!)QZ@@0#)N2KLLL0#)N2KLLLLLr   N)__name__
__module____qualname__r   r)   r+   r1   r6   r9   r?   rB   rF   rJ   rP    r   r   r   r      s        
8 
8 
8: : :
: 
: 
:
: 
: 
:: : :&/ / /&: : :*
: 
: 
:
: 
: 
:
: 
: 
:M M M M Mr   r   c                   V    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 Zd ZdS )TestReshapec                 h   t          j        d          }t          j        d|j        |j        |j        j                  }|                    dd          }|                    dd          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr3   r   r4   r   
r   r   r   r   r   r    r!   r"   reshaper#   r   r   r   r'   r(   s        r   test_reshape_2d2dzTestReshape.test_reshape_2d2d   s      oaem#k24 4q!$$kk!Q"FL111fn55555r   c                 d   t          j        d          }t          j        d|j        |j        |j        j                  }|                    d          }|                    d          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr3   r      rX   rZ   s        r   test_reshape_2d1dzTestReshape.test_reshape_2d1d   s      oaem#k24 4u%%kk%  #FL111fn55555r   c                 l   t          j        d          }t          j        d|j        |j        |j        j                  }|                    ddd          }|                    ddd          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )NrL   r   r4   r   r4   rL   r   rX   rZ   s        r   test_reshape_3d3dzTestReshape.test_reshape_3d3d   s    ##oaem#k24 4q!Q''kk!Q""1%FL111fn55555r   c                 h   t          j        d          }t          j        d|j        |j        |j        j                  }|                    dd          }|                    dd          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr`   r      r4   rX   rZ   s        r   test_reshape_3d2dzTestReshape.test_reshape_3d2d   s    ##oaem#k24 4ua((kk%##A&FL111fn55555r   c                 d   t          j        d          }t          j        d|j        |j        |j        j                  }|                    d          }|                    d          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr`   r   <   rX   rZ   s        r   test_reshape_3d1dzTestReshape.test_reshape_3d1d   s    ##oaem#k24 4y))kk)$$Q'FL111fn55555r   c                 h   t          j        d          }t          j        d|j        |j        |j        j                  }|                    dd          }|                    dd          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr3   r   r   r   rX   rZ   s        r   test_reshape_infer2d2dz"TestReshape.test_reshape_infer2d2d   s      oaem#k24 4r1%%kk"a  #FL111fn55555r   c                 d   t          j        d          }t          j        d|j        |j        |j        j                  }|                    d          }|                    d          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr3   r   r   rX   rZ   s        r   test_reshape_infer2d1dz"TestReshape.test_reshape_infer2d1d   s      oaem#k24 4r""kk"ooa FL111fn55555r   c                 l   t          j        d          }t          j        d|j        |j        |j        j                  }|                    ddd          }|                    ddd          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr`   r   r4   r   r   rX   rZ   s        r   test_reshape_infer3d3dz"TestReshape.test_reshape_infer3d3d   s    ##oaem#k24 4q"a((kk!R##A&FL111fn55555r   c                 h   t          j        d          }t          j        d|j        |j        |j        j                  }|                    dd          }|                    dd          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr`   r   rL   r   rX   rZ   s        r   test_reshape_infer3d2dz"TestReshape.test_reshape_infer3d2d   s    ##oaem#k24 4q"%%kk!R  #FL111fn55555r   c                 d   t          j        d          }t          j        d|j        |j        |j        j                  }|                    d          }|                    d          d         }| 	                    |j        |j                   | 	                    |j        |j                   d S )Nr`   r   r   rX   rZ   s        r   test_reshape_infer3d1dz"TestReshape.test_reshape_infer3d1d   s    ##oaem#k24 4r""kk"ooa FL111fn55555r   c                 f   t          j        d          }t          j        d|j        |j        |j        j                  }|                     t                    5 }|
                    ddd           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr`   r   r   rL   z&can only specify one unknown dimensionr   r   r   r   r   r    r!   r"   assertRaises
ValueErrorrY   assertInstr	exceptionr   r   r   raisess       r   test_reshape_infer_two_unknownsz+TestReshape.test_reshape_infer_two_unknowns   s    ##oaem#k24 4 z** 	#fKKB"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#>FDT@U@UVVVVVs   A>>BBc                 d   t          j        d          }t          j        d|j        |j        |j        j                  }|                     t                    5 }|
                    dd           d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nr`   r   r      z.cannot infer valid shape for unknown dimensionrs   ry   s       r    test_reshape_infer_invalid_shapez,TestReshape.test_reshape_infer_invalid_shape	  s    ##oaem#k24 4 z** 	fKKA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	FFL\H]H]^^^^^s   A==BBN)rQ   rR   rS   r[   r^   ra   rd   rg   ri   rk   rm   ro   rq   r{   r~   rT   r   r   rV   rV      s        6 6 66 6 66 6 66 6 66 6 66 6 66 6 66 6 66 6 66 6 6W W W_ _ _ _ _r   rV   c                       e Zd Zd Zd ZdS )TestSqueezec                     t          j        d          }t          j        d|j        |j        |j        j                  } fd} |||            ||                                d         |                                           dD ]<} ||                    |          d         |                    |                     =d S )Nr   r   r   r   r   rL   r   c                                          | j        |j                                        | j        |j                   d S )N)r#   r   r    )arr1arr2r   s     r   _assert_equal_shape_stridesz=TestSqueeze.test_squeeze.<locals>._assert_equal_shape_strides  s=    TZ444T\4<88888r   )r   r   r   )r   r   )r   r   )r   r   )r   r   r   axis)	r   r   r   r   r   r    r!   r"   squeeze)r   r   r   r   r   s   `    r   test_squeezezTestSqueeze.test_squeeze  s    +,,ou{EM5;+?
 
	9 	9 	9 	9 	9 	$#C///##CKKMM!$4emmooFFF@ 	 	D''&&q)5==d=+C+C   	 	r   c                    t          j        d          }t          j        d|j        |j        |j        j                  }|                     t                    5  |
                    d           d d d            n# 1 swxY w Y   |                     t                    5  |
                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   )r   rL   )r   r   r   r   r   r    r!   r"   rt   ru   r   )r   r   r   s      r   test_squeeze_invalid_axisz%TestSqueeze.test_squeeze_invalid_axis#  s@   +,,ou{EM5;+?
 
 z** 	  	 KKQK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 z** 	% 	%KKVK$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s$   A==BB"CC
C
N)rQ   rR   rS   r   r   rT   r   r   r   r     s2          % % % % %r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )
TestExtentc                     t          j        d          }t          j        d|j        |j        |j        j                  }|j        \  }}| 	                    ||z
  |j
        |j        j        z             d S Nr   r   r   r   r   r   r   r    r!   r"   extentr#   r
   r   r   r   r;   es        r   test_extent_1dzTestExtent.test_extent_1d/  si    oaem#k24 4z1Q
U[-A ABBBBBr   c                     t          j        d          }t          j        d|j        |j        |j        j                  }|j        \  }}| 	                    ||z
  |j
        |j        j        z             d S )Nr3   r   r   r   s        r   test_extent_2dzTestExtent.test_extent_2d6  sk      oaem#k24 4z1Q
U[-A ABBBBBr   c                     t          j        d          }t          j        d|j        |j        |j        j                  }t          |	                                          \  }| 
                    ||j                   d S r   )r   r   r   r   r   r    r!   r"   listiter_contiguous_extentr#   r   r   r   r   exts       r   test_extent_iter_1dzTestExtent.test_extent_iter_1d=  sk    oaem#k24 4S//1122cj)))))r   c           
         t          j        d          }t          j        d|j        |j        |j        j                  }t          |	                                          \  }| 
                    ||j                   | 
                    t          t          |d d d         	                                                    d           d S )Nr3   r   r   )r   r   r   r   r   r    r!   r"   r   r   r#   r   lenr   s       r   test_extent_iter_2dzTestExtent.test_extent_iter_2dD  s      oaem#k24 4S//1122cj)))T#ccc("A"A"C"CDDEEqIIIIIr   N)rQ   rR   rS   r   r   r   r   rT   r   r   r   r   .  s[        C C CC C C* * *J J J J Jr   r   c                       e Zd Zd ZdS )TestIteratec                     d}t          j        |          }t          j        d|j        |j        |j        j                  }d}|D ]}|}d S )Nr4   r   )r   r   r   r   r   r    r!   r"   )r   Nr   r   r&   vals         r   test_for_loopzTestIterate.test_for_loopO  s^    oaem#k24 4  	 	CAA	 	r   N)rQ   rR   rS   r   rT   r   r   r   r   N  s#        
 
 
 
 
r   r   __main__)unittestr.   numpyr   numba.misc.dummyarrayr   TestCaser   rV   r   r   r   rQ   mainrT   r   r   <module>r      sj            ' ' ' ' ' '[M [M [M [M [M(# [M [M [M|k_ k_ k_ k_ k_(# k_ k_ k_\% % % % %(# % % %6J J J J J" J J J@    (#    zHMOOOOO r   