U
    #c                    @   sz  d dl Z d dlZd dlZd dlZd dlZd dlm  mZ d dlm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZ dd Zdd Zdd	 Zejje d
ddd Zdd Zdd Zdd Zdd Zdd Z ejje d
d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,d- Z+d.d/ Z,d0d1 Z-d2d3 Z.d4d5 Z/d6d7 Z0d8d9 Z1d:d; Z2d<d= Z3d>d? Z4d@dA Z5dBdC Z6dDdE Z7dFdG Z8dHdI Z9dJdK Z:dLdM Z;dNdO Z<dPdQ Z=dRdS Z>dTdU Z?ej@dVejAdW ej@dXejAdW ejBdYdZd[ ZCd\d] ZDd^d_ ZEd`da ZFdbdc ZGddde ZHdfdg ZIdhdi ZJdjdk ZKdldm ZLdndo ZMdpdq ZNdrds ZOdtdu ZPdvdw ZQdxdy ZRdzd{ ZSd|d} ZTd~d ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[ejjeddejje dddd Z\dd Z]dd Z^dd Z_dd Z`ejjadd Zbdd ZcG dd dZddd Zedd Zfdd Zgdd Zhdd Zidd Zjej@dejkdddejkddddddddf ejkdddddddddddddf ejkdddddd ejkdddddddddf ejkddddddddddddddf gdd Zlej@ddgddd gfejkdddd dgfejkddddfejkddddd gfejkdddddgfejkddddfgdd Zmdd ZnddĄ ZoddƄ ZpddȄ Zqddʄ Zrdd̄ Zsdd΄ ZtddЄ Zuej@dejvdewddddddddf ejvdewddԍdddddddf ejvdewddddddddf xdӡgddք Zydd؄ Zzddڄ Z{dd܄ Z|ddބ Z}dd Z~dd Zejje d
ddd Zejje jdd dko e jdkddej@ddgddddgej@ddddgdd Zejje d
dej@ddgddgdd Zdd ZdS )    N)arrayarangenditerall)assert_assert_equalassert_array_equalassert_raisesIS_WASMHAS_REFCOUNTsuppress_warningsbreak_cyclesc                 C   s$   g }| j s || j |   q|S N)finishedappendmulti_indexiternextiret r   @/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_nditer.pyiter_multi_index   s
    
r   c                 C   s$   g }| j s || j |   q|S r   )r   r   indexr   r   r   r   r   iter_indices   s
    
r   c                 C   s$   g }| j s || j |   q|S r   )r   r   	iterindexr   r   r   r   r   iter_iterindices   s
    
r   zPython lacks refcounts)reasonc               	   C   sr  t d} td }t| }t|}t| g ddggd|gd6}t|j  tt| |k tt||k W 5 Q R X d }t	t| | t	t|| t ddd} td}t| }t|}t| g dgg|gd}t| }t|}|
 }tt| |k tt||k d }t	t| | t	t|| d }t	t| | t	t|| ~d S )	N   f4	readwriteupdateifcopyunsafecasting	op_dtypesdtyper%   )r   npr'   newbyteordersysgetrefcountr   r   iterationneedsapir   copy)adtZrc_aZrc_dtitZrc2_aZrc2_dtit2r   r   r   test_iter_refcount%   sH    






r3   c                  C   s  dD ] } t t| }tdt|  D ]}td gt|  }tt| D ] }d| |@ rJtd d d||< qJt|}|| | }t|g dgg}t	dd |D | t|j
g dgg}t	dd |D | t| dkr(t|dd	g dgg}t	d
d |D | q(qd S )N)            r7   r8   )r:   r7   r8   r7   )r:   r7   r:   r:   r7   r:   readonlyc                 S   s   g | ]}|qS r   r   .0xr   r   r   
<listcomp>b   s     z(test_iter_best_order.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   e   s     r      c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   i   s     )r   r)   prodrangelenslicetuplereshaper   r   Tswapaxesshaper/   dirs
dirs_indexbitaviewr   r   r   r   test_iter_best_orderP   s     
rP   c                  C   s"  dD ]} t t| }tdt|  D ]}td gt|  }tt| D ] }d| |@ rJtd d d||< qJt|}|| | }t|dd}t	dd |D |j
dd t|jdd}t	dd |D |jj
dd t| dkr(t|d	d
dd}t	dd |D |d	d
j
dd q(qd S )Nr4   r:   r;   Corderc                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   |   s     z%test_iter_c_order.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     r   rA   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     r   r)   rB   rC   rD   rE   rF   rG   r   r   ravelrH   rI   rJ   r   r   r   test_iter_c_orderk   s$    
rV   c                  C   s"  dD ]} t t| }tdt|  D ]}td gt|  }tt| D ] }d| |@ rJtd d d||< qJt|}|| | }t|dd}t	dd |D |j
dd t|jdd}t	dd |D |jj
dd t| dkr(t|d	d
dd}t	dd |D |d	d
j
dd q(qd S )Nr4   r:   r;   FrR   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     z%test_iter_f_order.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     r   rA   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     rT   rJ   r   r   r   test_iter_f_order   s$    
rX   c                  C   s"  dD ]} t t| }tdt|  D ]}td gt|  }tt| D ] }d| |@ rJtd d d||< qJt|}|| | }t|dd}t	dd |D |j
dd t|jdd}t	dd |D |jj
dd t| dkr(t|d	d
dd}t	dd |D |d	d
j
dd q(qd S )Nr4   r:   r;   ArR   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     z*test_iter_c_or_f_order.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     r   rA   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@      s     rT   rJ   r   r   r   test_iter_c_or_f_order   s$    
rZ   c                  C   sH   t ddd} t j| dgd}d|_tdd |D ddd	d
g d S )Nr   r:   r7   r   flagsr   r:   c                 S   s   g | ]}|qS r   r   )r>   r   r   r   r   r@      s     z/test_nditer_multi_index_set.<locals>.<listcomp>r8   r5   )r)   r   rG   r   r   r   )r/   r1   r   r   r   test_nditer_multi_index_set   s    r^   c                  C   sL   d} t jt ddddgdgd}t| }| f|_t| }t|| d S )Nr   o      iM  i  r   r[   )r)   r   r   r+   r,   r   r   )r   r   Zstart_countZ	end_countr   r   r   $test_nditer_multi_index_set_refcount   s    

ra   c                  C   sf   t d} t| dgdgg}tt|ddddg t| d d d dgdgg}tt|ddddg d S )	Nr8   r   r<   r   rA   r:   r7   r;   )r   r   r   r   r/   r   r   r   r   #test_iter_best_order_multi_index_1d   s
    rg   c                  C   s,  t d} t| dddgdgg}tt|dddd	d
dg t| ddjdddgdgg}tt|dd	dd
ddg t| ddd d d dgdgg}tt|d	d
ddddg t| ddd d d d df dgdgg}tt|ddddd
d	g t| ddd d dd d df dgdgg}tt|dd
d	dddg t| ddjddd d d dgdgg}tt|d	dd
dddg t| ddjddd d d d df dgdgg}tt|dddd
dd	g t| ddjddd d dd d df dgdgg}tt|ddd
dd	dg d S )Nr   r:   r7   r   r<   r   r   r   rA   r]   rA   r   rA   rA   rA   r:   rW   rR   r;   r   r   rG   r   r   r.   rf   r   r   r   #test_iter_best_order_multi_index_2d   s.    "$,.,& ( rn   c                  C   s  t d} t| ddddgdgg}tt|dddd	d
dddddddg t| dddjdddgdgg}tt|ddddd
dddd	dddg t| dddd d d dgdgg}tt|dddddddddd	d
dg t| dddd d d d df dgdgg}tt|d
ddd	ddddddddg t| dddd d d d d d df dgdgg}tt|ddd	ddd
ddddddg t| dddjddd d d dgdgg}tt|dddddd
dddd	ddg t| dddjddd d d d df dgdgg}tt|d
dddddddd	dddg t| dddjddd d d d d d df dgdgg}tt|ddd	dddddddd
dg d S )N   r:   r7   r   r<   )r   r   r   )r   r   rA   )r   rA   r   )r   rA   rA   )r   r:   r   )r   r:   rA   )rA   r   r   )rA   r   rA   )rA   rA   r   )rA   rA   rA   )rA   r:   r   )rA   r:   rA   rW   rR   r;   rm   rf   r   r   r   #test_iter_best_order_multi_index_3d   s         $     &     .     4            (      .      rp   c                  C   sf   t d} t| dgdgg}tt|ddddg t| d d d dgdgg}tt|ddddg d S )	Nr8   c_indexr<   r   rA   r:   r7   r;   r   r   r   r   rf   r   r   r   test_iter_best_order_c_index_1d%  s
    rs   c                  C   s,  t d} t| dddgdgg}tt|dddddd	g t| ddjd
ddgdgg}tt|dddddd	g t| ddd d d dgdgg}tt|ddd	dddg t| ddd d d d df dgdgg}tt|dddd	ddg t| ddd d dd d df dgdgg}tt|d	dddddg t| ddjd
dd d d dgdgg}tt|ddddd	dg t| ddjd
dd d d d df dgdgg}tt|dd	ddddg t| ddjd
dd d dd d df dgdgg}tt|d	dddddg d S )Nr   r:   r7   rq   r<   r   rA   r8   r5   rW   rR   r;   r   r   rG   r   r   r.   rf   r   r   r   test_iter_best_order_c_index_2d0  s:     $,. & ( ru   c                  C   s  t d} t| ddddgdgg}tt|dddddd	d
dddddg t| dddjdddgdgg}tt|dd
ddddddddd	dg t| dddd d d dgdgg}tt|d
ddddddddddd	g t| dddd d d d df dgdgg}tt|dd	ddddddddd
dg t| dddd d d d d d df dgdgg}tt|ddddd	ddd
ddddg t| dddjddd d d dgdgg}tt|d
ddddddddddd	g t| dddjddd d d d df dgdgg}tt|dddddd
d	dddddg t| dddjddd d d d d d df dgdgg}tt|ddddd	ddd
ddddg d S )Nro   r:   r7   rq   r<   r   rA   r8   r5   r         	   
      rW   rR   r;   rt   rf   r   r   r   test_iter_best_order_c_index_3dM  sZ     &.4  ( . r{   c                  C   sf   t d} t| dgdgg}tt|ddddg t| d d d dgdgg}tt|ddddg d S )	Nr8   f_indexr<   r   rA   r:   r7   r;   rr   rf   r   r   r   test_iter_best_order_f_index_1dr  s
    r}   c                  C   s,  t d} t| dddgdgg}tt|dddddd	g t| ddjd
ddgdgg}tt|dddddd	g t| ddd d d dgdgg}tt|ddd	dddg t| ddd d d d df dgdgg}tt|dddd	ddg t| ddd d dd d df dgdgg}tt|d	dddddg t| ddjd
dd d d dgdgg}tt|ddddd	dg t| ddjd
dd d d d df dgdgg}tt|dd	ddddg t| ddjd
dd d dd d df dgdgg}tt|d	dddddg d S )Nr   r:   r7   r|   r<   r   r8   rA   r5   rW   rR   r;   rt   rf   r   r   r   test_iter_best_order_f_index_2d}  s:     $,. & ( r~   c                  C   s  t d} t| ddddgdgg}tt|ddddd	d
ddddddg t| dddjdddgdgg}tt|ddddd	dddddd
dg t| dddd d d dgdgg}tt|ddddddddddd	d
g t| dddd d d d df dgdgg}tt|d	d
ddddddddddg t| dddd d d d d d df dgdgg}tt|ddddd
d	ddddddg t| dddjddd d d dgdgg}tt|dddddd	dddddd
g t| dddjddd d d d df dgdgg}tt|d	dddddd
dddddg t| dddjddd d d d d d df dgdgg}tt|ddddd
dddddd	dg d S )Nro   r:   r7   r|   r<   r   r   rw   r8   ry   rA   rv   rx   r5   rz   rW   rR   r;   rt   rf   r   r   r   test_iter_best_order_f_index_3d  sZ     &.4  ( . r   c                  C   s6  dD ]*} t | }t|}tdt|  D ] }td gt|  }tt| D ] }d| |@ rPtd d d||< qPt|}|| | }t|dgdgg}t	|j
d t	|d j|f t|jdgdgg}t	|j
d t	|d j|f t| dkr,t|dddgdgg}t	|j
d t	|d j|f q,qd S )Nr4   r:   r;   external_loopr<   rA   r   )r)   rB   r   rC   rD   rE   rF   rG   r   r   ndimrK   rH   rI   )rK   sizer/   rL   rM   rN   rO   r   r   r   r    test_iter_no_inner_full_coalesce  s.    

 r   c                  C   sV  t ddddd d d d d df } t| dgdgg}t|jd t|d jd	 t ddddd d d dd d f } t| dgdgg}t|jd t|d jd
 t ddddd dd d d d f } t| dgdgg}t|jd t|d jd t dddddddddddd} t| dgdgg}t|jd t|d jd d S )N   r:   r7   r8   r;   r   r<   r   re   rw   rA   )ro   r   )r   rG   r   r   r   rK   rf   r   r   r   !test_iter_no_inner_dim_coalescing  s     ((("r   c                  C   s  t dddd} t| dgdgg}t|jd t dddd}t|dgdgg}t|jd t|d	ddgdgg}t|jd t|jdgdgg}t|jd t|jd
gdgg}t|jd t|jd	dd
gdgg}t|jd t dddd}t|dd}t|jd t|jdd}t|jd t|dd}t|jd t|jdd}t|jd t|dd}t|jd t|jdd}t|jd d S )Nr   r:   r7   r8   r   r<   rq   rA   r   r|   rQ   rR   rW   rY   )r   rG   r   r   r   rI   rH   )r/   r   Za3dr   r   r   test_iter_dim_coalescing  s6    r   c                  C   s  t tdtdgdgdggd } t| jd t| jd t tdddtdgdgdggd } t| jd t| jd t tdddtdgdgdggd } t| jd t| jd t tdddtdgdgdggd } t| jd t| jd t tdddtdddgdgdggd } t| jd t| jd t tdtd	d
ddgdgdggd } t| jd	 t| jd t tdtd	d
ddgdgdggd } t| jd	 t| jd t tdtdd
ddgdgdggd } t| jd	 t| jd t tdddtd	d
ddgdgdggd } t| jd	 t| jd t tdddtd	d
ddgdgdggd } t| jd	 t| jd t tdddtdd
ddgdgdggd } t| jd	 t| jd t tddddtddddtd
d
ddgdgdggd } t| jd	 t| jd t tddddtd
d
ddgdgdggd } t| jd	 t| jd t td	d
ddtdd
ddgdgdggd } t| jd	 t| jd d S )Nr   r:   r   r<   r   r7   r:   r7   rA   r   r8   r8   r:   r7   rw   ro   )r   r   r)   int32r   itersizerK   rG   r   r   r   r   test_iter_broadcasting  s    $ 
 
 
  
 
 
 
" 
" 
" 
" 
$ 
$ 
r   c               	   C   sR  t jddddd} t| d gg dgddggd	d
d gd gdd}t|jd
 jd t|jd
 jd t| jd gg dgddggd	d
d gd gdd}t|jd
 jd t|jd
 jd t| jd gg dgddggdd	d
d gd gdd}t|jd
 jd t|jd
 jd t	t
t| d gg dgddggd	d
d gd gdd t jt dd d gdd}d S )Nr   i2r&   r:   r7   r<   	writeonlyallocater   rA   )r;   r;   r8   op_axes	itershaper9   )r   rw   r:   )r7   r:   r8   )rw   r   r:   rW   )rS   r   r   )r:   r   ro   )r;   rA   r8   rd   r   )r)   r   rG   r   r   operandsrK   stridesrH   r	   
ValueErroronesrf   r   r   r   test_iter_itershape_  s4    r   c               
   C   s*  t tttdtdgg dggd  t tttdddtdgg dggd  t tttdddtdddgg dggd  t tttdddtdddgg dggd  t tttddddtddddgg dggd  t tttd	ddd
tddddgg dggd  zRttdd
dd
tdd
dtdddgg dgdgddgg tdW n\ tk
r }  z<t| }t|ddkd|  t|ddkd|  W 5 d } ~ X Y nX zHttdddtdgg dgdggdd
gdt	j
ggdd tdW nt tk
r }  zTt| }t|ddkd|  t|ddkd|  t|ddkd|  W 5 d } ~ X Y nX z2tt	dt	dgg ddgdgg tdW n\ tk
r$ }  z<t| }t|ddkd|  t|ddkd |  W 5 d } ~ X Y nX d S )!Nr:   r7   r<   r   rx   r8   $   r   rw   rA   r   no_broadcastz$Should have raised a broadcast errorz(2,3)r   z0Message "%s" doesn't contain operand shape (2,3)z(1,2,3)z4Message "%s" doesn't contain broadcast shape (1,2,3))r8   r7   r   z(2,3)->(2,3)z7Message "%s" doesn't contain operand shape (2,3)->(2,3)z(2,)->(2,newaxis)zDMessage "%s" doesn't contain remapped operand shape(2,)->(2,newaxis)z(4,3)z6Message "%s" doesn't contain itershape parameter (4,3)r:   rA   rA   rd   z(2,1,1)z2Message "%s" doesn't contain operand shape (2,1,1)z(2,1,2)z8Message "%s" doesn't contain the broadcast shape (2,1,2))r	   r   r   r   rG   AssertionErrorstrr   findr)   newaxiszeros)emsgr   r   r   test_iter_broadcasting_errors~  s     
 
 
 
" 
" 

r   c                  C   s  t d} tttg g g  ttt| gd g dggd  ttt| gdgdgg ttt| gg ddgg ttt| gg dggdd ttt| gg dggdd ttt| gd	 g dggd
  ttt| ddgdgg ttt| ddgdgg ttt| ddgdgg ttt| ddgdgg ttt| g g g ttt| g ddgg ttt| g ddgg ttt| g ddgg ttt| g dddgg tttdg dgg tttdg dgg ttttdg dgg ttttdg dgg d| j_ttt| g dgg ttt| g dgg d| j_tt dg dgg}ttdd | ttdd | dd }dd }dd }dd }tt ddg}tt|| tt|| tt|| tt|| tt dd g}tt|| tt|| tt|| tttt	g  d S )!Nr   d   r<   zbad flagGrR   Znoonr$   r7   r:   rq   r|   r   r   r   r          ?rA   FTc                 S   s   | j S r   r   r   r   r   r   <lambda>      z(test_iter_flags_errors.<locals>.<lambda>c                 S   s   | j S r   r   r   r   r   r   r     r   c                 S   s
   d| _ d S )Nrb   r   r   r   r   r   assign_multi_index  s    z2test_iter_flags_errors.<locals>.assign_multi_indexc                 S   s
   d| _ d S Nr   r   r   r   r   r   assign_index  s    z,test_iter_flags_errors.<locals>.assign_indexc                 S   s
   d| _ d S r   )r   r   r   r   r   assign_iterindex  s    z0test_iter_flags_errors.<locals>.assign_iterindexc                 S   s
   d| _ d S )Nri   )	iterranger   r   r   r   assign_iterrange  s    z0test_iter_flags_errors.<locals>.assign_iterrangebuffered)
r   r	   r   r   	TypeErrorr)   r   r\   	writeabler   )r/   r   r   r   r   r   r   r   r   test_iter_flags_errors  sr         
r   c               	   C   s   t dt dt d  } }}t| ||gg dg}|` d|dd< t| dddg t|dddg t|dddg d|d< t|dd ddg W 5 Q R X d S )	Nr7         @r    )r7   r7   r   r:   rA   ro   )r)   r   r   r   )r/   bcr   r   r   r   test_iter_slice  s    "r   c               	   C   s   t jddddddj} t j| g ddggd	t d
gd}|" d|jd d< d|jd d< W 5 Q R X t| d t j| g ddggd	t d
gd}|. |jd dd }d|d< d|jd d< W 5 Q R X t| d d }d }d S )Nr   f8r&   r:   r7   r8   r    r!   	same_kindr   r#   r   .   r;   rA   i.)r)   r   rG   rH   r   r'   r   r   )r/   r1   r?   r   r   r   test_iter_assign_mapping!  s(     

 

r   c               	   C   s  t jddd} |   }t| jj|jjk t|g ddggdt dgd}|V t|j	d j| jj t|j
d jj| jj t|j
d |  d	|j
d d d < W 5 Q R X t|d	gd  ~t jddd} |   }t| jj|jjk t|g ddd
ggddh}t|j	d j| jj t|j
d jj| jj t|j
d |  d|j
d d d < d	|j
d d d < W 5 Q R X t|d	gd  t jddddd  } d| _t jddd| d d < t| jj  t| g dgg}t|j
d jj  t|j
d |  t| g dddgg:}t|j
d jj t|j
d |  d|j
d d d < W 5 Q R X t| dgd  td} t| d d g dgg}t|j
d jj t|j
d | d d  t| d d d	 ddgddggdd}t|d jj t|d | d d d	  d S )Nr   r   r&   r    r!   equivr#   r   r:   nbor   i90  )   i1rA   r<   alignedr7   ro   r   r   Zcontigry   
buffersize)r)   r   byteswapr*   r   r'   	byteorderr   r   dtypesr   r   r\   r   
contiguous)r/   aur   r   r   r   test_iter_nbo_align_contig4  sb    
r   c               	   C   s  t jddddd} t| g dggt dgd}|. t|jd |  t|jd jt d W 5 Q R X t jdd	ddd} t| g dd
ggdt dgd.}t|jd |  t|jd jt d W 5 Q R X t jdddddddd} t| g ddggdt dgd}t|jd |  t|jd jt d t|jd jd | d d dd d d d df } t| g ddggdt dgd}t|jd |  t|jd jt d t|jd jd t jddddddj	} t| g dd
ggdt dgd^}t|jd |  t|jd jt d t|jd jd d|jd d< t
| d dk W 5 Q R X t| d d t jdddd d d } t| g dd
ggdt dgdH}t|jd jt d t|jd jd dddg|jd d d < W 5 Q R X t| dddg d S ) Nr   r   r&   r:   r7   r    r(   r   <f4r!   r   >f4r#   r   r8   rA   r<   r.   safer   )`   rw       r;   r   )r8      0   g      )r   i4r   r"   )r8   )r)   r   rG   r   r'   r   r   rI   r   rH   r   rf   r   r   r   test_iter_array_castr  sj    "
" 



"r   c                
   C   s  t tttdddg dggtdgd t tttdddg ddggdtdgd	 t tttdddg ddggd
tdgd	 t tttdddg ddggdtdgd	 t tttdddg ddggd
tdgd	 t tttdddg ddggdtdgd	 t tttdddg ddggdtdgd	 t tttdddg ddggdtdgd	 t tttdddg ddggdtdgd	 t tttdddg ddggdtdgd	 d S )Nr:   r   r&   r<   r   r(   r.   nor#   r   r   r!   r   r   r    r   r   r   )r	   r   r   r   r)   r'   r   r   r   r   test_iter_array_cast_errors  sb     
 
 


 




r   c                  C   s  t tdg dggtdgd} t| jd td t| jjtd t| jd t tdg ddggdtdgd	} t| jd td t| jjtd t| jd t tdg ddggd
tdgd	} t| jd td t| jjtd t| jd t tdg ddggdtdgd	} t| jd td t| jjtd t| jd t dg dggtdgd} t| d jtd t| d d d S )N      @r<   r   r(   r   r.   r   r   r#   r   r   r"   r   r7   )r   r)   float32r'   r   r   valuefloat64r   r   r   r   test_iter_scalar_cast  sB    



r   c                
   C   s   t tttdg dggtdgd t ttdg dggtdgd t tttdg dggd	tdgd
 t tttdg dggdtdgd
 d S )Nr:   r    r   r(   r   r   gDcLr<   r   r#   r   r   )r	   r   r   r)   r   r'   r   r   r   r   r   test_iter_scalar_cast_errors  s$     

 


r   c               	   C   s  ddd} t jdddgd | d gdd}tr4t| }ttt| trTtt| | t|dgd	g}d
d |D }tt j|dd| d gd \}}}trtt| | t|	ddj
ddgd	gdd}t|j dd |D }tt j|dd|	ddjdd d gd \}}}tr,tt| | t|	ddj
ddgdgdd}|* |D ]}d |d< qVd gd \}}}W 5 Q R X trtt| |d k t|t jd gd dd d S )Nr7   dr/   r   rA   r:   Or&   refs_okr<   c                 S   s   g | ]}|d  qS r   r   r>   Zx_r   r   r   r@   #  s     z1test_iter_object_arrays_basic.<locals>.<listcomp>r   rQ   rR   c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r@   ,  s     rW   r    .r8   )r)   r   r   r+   r,   r	   r   r   r   rG   rH   r   r-   rU   )objr/   rcr   valsr?   r   r   r   test_iter_object_arrays_basic  sD    

 
$ r   c               	   C   s  t jddd} t| ddgdgddd	}|  |D ]}|d
  d7  < q0W 5 Q R X t| t dd  t jddd} t| ddgdgddd	}|  |D ]}|d
  d7  < qW 5 Q R X t| t dd  t jdddgd} | d } t d| d d < t| ddgdgddd	}|" |D ]}|d
  d7  < qW 5 Q R X t| t dd  t jdddgd} | d } t dd | d d < t| ddgdgddd	}|> |d d }trt|}|D ]}|d
  d7  < qW 5 Q R X trtt||d k t| t dd  d S )Nr   r   r&   r   r   r    r"   r   r#   .rA   r   )pr   r/   r   r/   )r/   r   iHr   r   iI)	r)   r   r   r   r   r   r+   r,   r   )r/   r   r?   obr   r   r   r   #test_iter_object_arrays_conversions<  sZ        
r   c                  C   s  t tdgddtdgddgdgddggd	 d
d} t| jd td t| jd td t tdgddtdgddgdgddggd	 d
d} t| jd td t| jd td t tdgddtdddgdgddggd	 dd} t| jd td t| jd td t tdgddtdddgdgddggd	 d
d} t| jd td t| jd td t tdgddtdddgdgddggd	 d
d} t| jd td t| jd td t tdgddtdddtdgddtdgddgdgddggd d
d} t| jd td t| jd td t| jd	 td t| jd td t| jd t tdgddd tdgddgg ddgddgdggd
d} t| jd td t| jd td t| jd	 td t tdgddd tdgddgdgddgddgdggd
d} t| jd td t| jd td t| jd	 td d S )Nr7   r   r&   r   r   Zcommon_dtyper<   r.   r:   r   r   rA   r   r   u4i8               @c8rx   r8   c16)r7   r   r   rx   r   r   )r   r   r   r   r)   r'   r   r   r   r   r   test_iter_common_dtypei  s      r   c            	   
   C   s  dD ]B} t d}t|gdg| gg}| t|jd |k W 5 Q R X qt d}|dd  }|d d }t||gdgdgdgg}ttj|j   W 5 Q R X t d}|}|}t||gdgdd	gdd	gg}|& t|jd |ko|jd |k W 5 Q R X t||gdgdgdgg.}t|jd |ko>t|jd |  W 5 Q R X t d}|d d d
 }|dd d
 }t||gdgdgdgg}t|jd |ko|jd |k t dtjd}|dd  }|tjd d }t||gdgdgdgg}ttj|j   W 5 Q R X dD ]~} t	ddg}|}|j
}|}t|||gdgdgdg| gg6}|j\}}}tt||  tt||  W 5 Q R X qt	ddg}|}|j
}|}t|||gdgdgdgdgg}|j\}}}t||k t||k t||k t	ddg}|}t	ddg}|j
}t|||gdgdgdgdgg}|j\}}}t||k t||k t||k t d}|d d }|dd }|dd }t|||gdgdgdgdgg}|j\}}}t||k t||k t||k d S )N)r<   r   r    ry   Zcopy_if_overlapr   rA   r;   r<   r    Zoverlap_assume_elementwiser:   r   r8   r&   r7   )r   r    rv   r   )r   r   r   r   r)   Zshares_memoryint8viewr   r   rH   )	flagr/   r   r?   r   r   Za2Zb2c2r   r   r   test_iter_copy_if_overlap  s    *2" 
r   c               	   C   sv  t ddd} t| | jgg dggd ddgddggd}ttdd	 |D  t d
ddd} t| j| gg dggd dddgd gd}ttdd	 |D  t ddddd} t dd}t| |gg dggd d dddggd}tdd	 |D | |ddd   t dd}t| |gg dggd d dddggd}tdd	 |D | |ddd   t dd}t| |gg dggd d tj	tj	dggd}tdd	 |D | |ddd   t d
ddd} t dddd}t| |gdgdggd ddddgddddggd}t|j
d t ddd} t ddd}t| |gdgdggd ddgddggd}t|j
d d S )Nr   r:   r7   r<   r   rA   r   c                 S   s   g | ]\}}||kqS r   r   r>   r?   yr   r   r   r@   	  s     z%test_iter_op_axes.<locals>.<listcomp>r   r8   c                 S   s   g | ]\}}||kqS r   r   r   r   r   r   r@     s        r5   r;   c                 S   s   g | ]\}}|| qS r   r   r   r   r   r   r@     s     c                 S   s   g | ]\}}|| qS r   r   r   r   r   r   r@     s     c                 S   s   g | ]\}}|| qS r   r   r   r   r   r   r@     s     (   r   )r:   r7   r5   r:   ro      )r7   r5   )r   rG   r   rH   r   r   r   rU   r)   r   rK   )r/   r   r   r   r   r   test_iter_op_axes  s<    *(
&&
&&
&r   c               
   C   sJ  t ddd} ttt| | gg dggd dgdgdggd ttt| | gg dggd ddgddggd ttt| | gg dggd ddgddggd ttt| | gg dggd ddgddggd ttt| | gg dggd ddgddggd ttt| | gg dggd ddgdddggd ttt| | gg dggd ddgddggd d S )	Nr   r:   r7   r<   r   rA   r   r;   )r   rG   r	   r   r   r/   r   r   r   test_iter_op_axes_errors)  s,    r  c               	   C   s  t dddd} t| }| }tdd |D dd |D  d|_| }tdd |D dd |D  t| dd	gd
dd}| }tdd |D dd |D  d|_| }tdd |D dd |D  d|_| }tdd |D dd |D  d|_t| t| | }tdd |D dd |D  t| dgd
dddd}| }W 5 Q R X tdd |D | jd
d t dddddd} t| dgd
dddd}| }W 5 Q R X tdd |D | jd
d d S )Nr   r:   r7   r8   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   J  s     z"test_iter_copy.<locals>.<listcomp>c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   N  s     r   rangedrW   rS   r   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   S  s     c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   W  s     r7   rx   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   [  s     )r:      c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   a  s     r"   r   r5   )rS   r$   r%   r   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   g  s     rR   z<i4r&   z>f8c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@   m  s     )	r   rG   r   r.   r   r   r   nextrU   )r/   r   jr   r   r   test_iter_copyC  sH      r	  r'   ZAll
loop_dtypezignore::numpy.ComplexWarningc                 C   s   |  dkr|d }nt|jdkr.|d }tjdt|  d}z||}W n tk
rj   Y d S X tj|fddd	g|gd
d}t	t|tj
rt|tjd|d | }t|}~t|}~t|| t|| d S )Nmz[ms]r   Z50  r&   r   r   r   r"   r%   r$   )lowerr)   r'   itemsizer   r*   astype	Exceptionr   Z
issubdtypenumberr   r.   r  )r'   r
  arrexpectedr1   it_copyresZres_copyr   r   r   test_iter_copy_castsp  s,    
 
r  c            	      C   s  t dt dfdt dfg} t dt dfdt dfg}t jd| d}t j|fd	d
dg|gdd}| }t|}~t|}~|d |d }t|d | t|d | | d jD ]D}|d | |d | j	}t|d | | t|d | | qd S )Nr/   zi,r   z>i,<i,>d,S17,>d,(3)f,O,i1r   z>i,>i,S17,>d,>U3,(3)d,i1,Or  r&   r   r   r   r"   r  )
r)   r'   r   r   r.   r  r  r   namesbase)	in_dtypeZ	out_dtyper  r1   r  Zres1Zres2r  fieldr   r   r   test_iter_copy_casts_structured  s.     r  c                  C   s`   t d} t| d gg dgddggd tdgd}t|jd j| j t|jd jtd d S )Nr   r<   r   r   r   r(   rA   )r   r   r)   r'   r   r   rK   rf   r   r   r    test_iter_allocate_output_simple  s    r  c               	   C   s   t d} t| d gddgdgddgg}|Z d|jd d d < |  |D ] }|d d  |d	 d 7  < qJt|jd | d  W 5 Q R X d S )
Nr   r   delay_bufallocr<   r   r    rA   .r   )r   r   r   resetr   r/   r   r?   r   r   r   ,test_iter_allocate_output_buffered_readwrite  s    r!  c               	   C   s  t ddddd} t| d gg dgddggd td	gd
}t|jd j| j t|jd j| j t|jd jtd	 t ddddddj	} t| d gg dgddggd td	gd
}t|jd j| j t|jd j| j t|jd jtd	 t dddddd
dd} t| d gg dgddggdd td	gd}t|jd j| j t|jd jd t|jd jtd	 d S )Nr   r   r&   r:   r7   r<   r   r   r   r(   rA   r   r8   r   rQ   )rS   r%   )r   r   r8   )r   rG   r   r)   r'   r   r   rK   r   rH   rI   rf   r   r   r   !test_iter_allocate_output_itorder  s.    
r"  c                  C   s   t dddddd} td | gg ddgd	ggtd
d gdddgd gd}t|jd jd t|jd jd t|jd jtd
 d S )Nr   r   r&   r:   r7   r8   r   r   r<   r   rA   r   r%   r   r   )r8   r   r   )	r   rG   r   r)   r'   r   r   rK   r   rf   r   r   r    test_iter_allocate_output_opaxes  s    r$  c                  C   s  t tdgddtdgddd gg dggd dd	gg } t| jd td t tdgd
dtdgddd gg dggd dd	gg } t| jd td t tdgddtdddd gg dggd dd	gg } t| jd td t tdgddtdd
dd gg dggd dd	gg } t| jd td t tdgddtdd
dd gg dggd dd	gg } t| jd td d S )Nr7   r   r&   r   r   r<   r:   r   r   r   r   r   r   )r   r   r   r   r)   r'   r   r   r   r   )test_iter_allocate_output_types_promotion  s(      r%  c                  C   s   t dgdd } t| d gg dgddgg}t|jd |jd  t| | d gg dgdgddgg}t|jd |jd	 k t|jd d
|jd	  d S )Nr7   r   r&   r<   r   r   r   rA   r:   =)r   r*   r   r   r   r   rf   r   r   r   *test_iter_allocate_output_types_byte_order  s    
r'  c                  C   sb   t d ddtdtdgg ddggdggd  } t| jd	 jtd
 t| jd	 jd	 d S )NrA   gffffff@ro   r7   r   r   r<   r8   r   
complex128)r   r)   r   r(  r   r   r'   r   r   r   r   r   &test_iter_allocate_output_types_scalar  s
    r)  c                  C   s  G dd dt j} t ddgddgg| }t dddj}t||d gg dgdgdd	gg}tt	|t	|j
d  tt	|t	|j
d k	 t|j
d jd
 t||d gg dgdgdd	dgg}tt	|t	|j
d  tt	|t	|j
d k	 t|j
d jd
 d S )Nc                   @   s   e Zd ZdZdS )z4test_iter_allocate_output_subtype.<locals>.MyNDArray   N)__name__
__module____qualname__Z__array_priority__r   r   r   r   	MyNDArray  s   r.  rA   r:   r7   r8   r<   r   r   r:   r:   Z
no_subtype)r)   Zndarrayr   r   r   rG   rH   r   r   typer   r   rK   )r.  r/   r   r   r   r   r   !test_iter_allocate_output_subtype  s"    r1  c                  C   s  t d} ttt| d gg dgddgg ttt| d gg dgddgg ttt| d gdgddg tttd d gg ddgddggd tdgd t d	d
dddd} ttt| d gg dgddggd tdgd dtjdggd ttt| d gg dgddggd tdgd dddggd ttt| d gg dgddggd tdgd ddddggd t d	d
dddd} ttt| d gdgdgddggd tdgd dtjdggd d S )Nr   r   r   r<   r   r    r   r(   r   r   r&   r:   r7   r8   r   rA   r#  	reduce_ok)	r   r	   r   r   r   r)   r'   rG   r   r  r   r   r    test_iter_allocate_output_errors0  sL    r3  c                  C   sh   t jd gdgd} | jd jdks&t| jt dfks<tt jd gdgdd} | jd jdksdtd S )Nint64r(   r   r   r9   )r%   r   )r)   r   r   rK   r   r   r'   r   r   r   r   test_all_allocated[  s
    r5  c                  C   s   t dddd} t| dg}|d tdd |D | d d d	d d f   | d d d
d d d d f } t| dg}|d	 tdd |D | d	d d d d f   d S )Nr   r:   r7   r8   r   rA   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   i  s     z)test_iter_remove_axis.<locals>.<listcomp>r   r;   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   n  s     )r   rG   r   Zremove_axisr   rU   rf   r   r   r   test_iter_remove_axisd  s    
*
r6  c                  C   s  t dddd} t| dg}t|jd t|jd t|jd jd dd	 |D }|  d
d	 |D }t|| t|jd tt	dd | t|jd jd |
  t|jd t|d jt  |  t|jd t|d jd t|jt d d S )Nr   r:   r7   r8   r   r9   r   c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   {  s     z;test_iter_remove_multi_index_inner_loop.<locals>.<listcomp>c                 S   s   g | ]}|qS r   r   r=   r   r   r   r@   }  s     rA   c                 S   s   | j S r   rK   r   r   r   r   r     r   z9test_iter_remove_multi_index_inner_loop.<locals>.<lambda>r   )r   rG   r   r   r   rK   itviewsZremove_multi_indexr	   r   r  r   rF   Zenable_external_loopr   )r/   r   beforeafterr   r   r   'test_iter_remove_multi_index_inner_loopp  s&    
r;  c                  C   s  d} t dddd}g dgfD ]}t||| d}tt|ttd d|_tt|ttdd t||d| d	}tt|ttd d|_tt|ttdd t|d d d
 |d| d	}tt|ttd d|_tt|ttdd t|d d d
d d d
f |d| d	}tt|ttd d|_tt|ttdd t|d d dd d d
f || d}tt|ttd d|_tt|ttdd |  d|_tt|ttdd q d S )Nr5   r   r8   r7   r:   r   r   rW   r  r;   rx   rQ      rA      )	r   rG   r   r   r   listrC   r   r  )r   r/   r\   r   r   r   r   test_iter_iterindex  s4    $"r?  c                  C   s  d} t dddddd}|jdd	}t|d
gdgd| d}t|jd tdd |D | dD ]:}||_t|j| tdd |D ||d |d   q`t|d
dgdgdd| d}t|jd tdd |D | dD ]:}||_t|j| tdd |D ||d |d   qdd }t|d
ddgdgdd| d}t|jd t||| dD ]6}||_t|j| t||||d |d   qXd S )Nr5   r   r   r&   r8   r7   r:   rW   rR   r  r<   r  r   r   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@     s     z'test_iter_iterrange.<locals>.<listcomp>)r@  rl   )r7   r   )r5   r5   )r   r   )r=  r   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@     s     r   rA   r   r   )rS   r%   r   c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@     s     c                 S   s   g | ]}|d  qS r   r   r=   r   r   r   r@     s     c                 S   s*   t jg dd}| D ]}t ||f}q|S )Nr   r&   )r)   r   concatenate)r   valr?   r   r   r   	get_array  s    z&test_iter_iterrange.<locals>.get_arrayr   )r   rG   rU   r   r   r   )r   r/   Za_fortr   rrC  r   r   r   test_iter_iterrange  sF    & &  rE  c               
   C   s(  g } |  tjddddddj   |  tjddd tjd	d
ddd  }d|_tjddd|d d < |  | |  tjdddddddj | D ]}dD ]v}g }t	|ddgdddggdd|d}|j
st|d j|k | |d   |  qtt||jdd qqd S )Nr   r   r&   r:   r7   r8   ry   r   )A   r   rA   r   r   x   r5   )rA   r:   r7   r5   rw   rz   r      r   r   r<   r   r   rQ   r   )rS   r$   r   r   rR   )r   r)   r   rG   rH   r*   r   r   r'   r   r   r   r   r.   r   r   rA  rU   )arraysr/   r   r   r   r   r   r   test_iter_buffering  s8    
  
"


rJ  c               	   C   s   t ddddj  } t| dgdddggd	d
dd}d}|& |jsf||d< |d7 }|  qFW 5 Q R X t	| j
d
dt d d S )Nr   r:   r7   r8   r   r    r   r   r   rQ   r   )r$   rS   r   r   rA   rR   )r)   r   rG   rH   r*   r   r   r   r   r   rU   r   r   r   r   test_iter_write_buffering  s    
rK  c               	   C   s  t d} t jddd}t| |gddddgd	gd
dd}t|j ttdd | ttdd | ttdd | dd }tt|| |  t|j  t|j	d |Z t|d d d|d< t|dd ddg tdd |D t
ttddgd  W 5 Q R X d S )Nr   rA   r   r&   r   r  r   r2  r    r"   r#   c                 S   s   | j S r   r   r   r   r   r   r     r   z3test_iter_buffering_delayed_alloc.<locals>.<lambda>c                 S   s   | d S r   r   r   r   r   r   r     r   c                 S   s   | dd S )Nr   r:   r   r   r   r   r   r     r   c                 S   s   d| d< d S r   r   r   r   r   r   assign_iter  s    z6test_iter_buffering_delayed_alloc.<locals>.assign_iterrb   r   r:   c                 S   s$   g | ]}|d  d |d d gqS )r   r   rA   r   r=   r   r   r   r@      s     z5test_iter_buffering_delayed_alloc.<locals>.<listcomp>)r)   r   r   r   has_delayed_bufallocr	   r   r  r   r   r>  ziprC   )r/   r   r   rL  r   r   r   !test_iter_buffering_delayed_alloc  s*    

rO  c               	   C   s|   t jddd} t| ddgdddggd	t d
gdd}|  |D ]}|d  d9  < q@W 5 Q R X t| dt jddd  d S )Nry   r   r&   r   r   r    r   r   r   r   r7   r$   r%   r   .r:   )r)   r   r   r'   r   r/   r   vr   r   r   test_iter_buffered_cast_simple"  s    


rS  c               
   C   s*  t jddd  } t| ddgdddggd	t d
 gdd}|  |D ]}|d  d9  < qLW 5 Q R X t| dt jddd  t }|t j	 t jdd
d  } t| ddgdddggdt d gdd}|  |D ]}|d  d9  < qW 5 Q R X t| dt jdd
d  W 5 Q R X d S )Nry   r   r&   r   r   r    r   r   r   r   r7   rP  .r:   r"   r   )
r)   r   r*   r   r   r'   r   r   filterZComplexWarning)r/   r   rR  supr   r   r   #test_iter_buffered_cast_byteswapped1  s0    



rV  c               	   C   s0  t jddd  } | d7 } t| ddgddd	ggd
t dgdd}|  |D ]}|d  d9  < qPW 5 Q R X t| dt jddd d  t jddd} | d7 } t| ddgddd	ggd
t d gdd}|  |D ]}|d  d9  < qW 5 Q R X t| dt jddd d  t jdt jd  } | d7 } t| ddgddd	ggd
t dgdd}|" |D ]}|d  d9  < qfW 5 Q R X t| dt jdt jd d  t jdt jd  } t| ddgddd	ggd
t dgdd}|" |D ]}|d  d9  < qW 5 Q R X t| dt jdt jd  d S )Nry   r   r&   r   r   r   r    r   r   r   r   r7   rP  .r:   y              @r   rv   )	r)   r   r*   r   r   r'   r   ZclongdoubleZ
longdoublerQ  r   r   r   +test_iter_buffered_cast_byteswapped_complexO  s^    










rW  c                     s  ddddg} t jdddd  t d	d
gdgd| d}dd |D }t|d d d t|d d d t|d d dgd gd  t|d d d t|d d d t|d d d t|d d dgd gd  t|d d d t|d jt |  ddddg} t jddd dddddgdddggdf d< dddddgdddggdf d< dddddgdddggdf d< trt d }t d	d
gdgd| d}dd |D }t|d d d t|d d d t|d d dgd gd  t|d d d t|d d d t|d d d t|d d dgd gd  t|d d d t|d jt |  d gd \}}}trtt d | dg} t j	ddg| d t d	d
gdgddd}tdd |D d d!g dddg} t j	d"d#g| d t
t fd$d% dddg}d&d'd(g}t j	d)d*g|d t d	d
gdgd|d}t|d jt | td+d |D t j	d)|dt j	d*|dg d S ),Nr/   r   r   r   r   r   r   r   r   r7   r   r&         ?r   r   r<   r"   r#   c                 S   s   g | ]}t |qS r   r)   r   r=   r   r   r   r@     s     z;test_iter_buffered_cast_structured_type.<locals>.<listcomp>r   r/   r   r   r:   r   rA   r   re   r   r   c                 S   s   g | ]}|  qS r   )r.   r=   r   r   r   r@     s     )      @r   r   c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r@     s     r5   rw   )r^  rv   test)rw   ry   rz   c                      s   t  ddgdgdddS )Nr   r   r<   r"   r   r#   )r   r   r  r   r   r     s    z9test_iter_buffered_cast_structured_type.<locals>.<lambda>)r   u2r   )r   r   rA   r:   r7   r8   r5   r   c                 S   s   g | ]}t |qS r   r]  r   r   r   r   r@     s     )r)   r   r   r   r'   r   r   r+   r,   r   r	   r   )sdtr   r   r   r?   sdt1sdt2r   r  r   'test_iter_buffered_cast_structured_type  s~       


rf  c               
   C   s|   dddg} ddg}t jddg| d}d	D ]N}t jd
dgdd}tt( t||fddg||gdd|gd W 5 Q R X q(d S )NrX  rY  r[  )r   r   )r/   r   ra  rb  r&   )r    r<   r   rA   r:   zi,ir   r   r"   zf,fr#   )r)   r   pytestraisesr   r   )rd  re  r/   ZintentZ
simple_arrr   r   r   <test_iter_buffered_cast_structured_type_failure_with_cleanup  s    
 ri  c               
   C   s   t t( tjtjdddfdgddgd W 5 Q R X tjtjdddfdgd	gddgd
} t t& |  t| }d|d< W 5 Q R X W 5 Q R X d S )Nr/   ZS1r&   r   r"   r   )r%   r$   r\   rA   r   )r%   op_flagsr$   r\   .)rg  rh  r   r)   r   r   r  )r1   bufr   r   r   test_buffered_cast_error_paths  s       rl  zCannot start subprocesszPyPy seems to not hit this.c                  C   s4   t d} tjtjd| gtjdd}d|ks0td S )Na:  
        import numpy as np
    
        it = np.nditer((np.array(1, dtype="i"),), op_dtypes=["S1"],
                       op_flags=["writeonly"], casting="unsafe", flags=["buffered"])
        buf = next(it)
        buf[...] = "a"
        del buf, it  # Flushing only happens during deallocate right now.
        z-cT)stderrtextr   )textwrapdedent
subprocesscheck_outputr+   
executableSTDOUTr   )coder  r   r   r   )test_buffered_cast_error_paths_unraisable  s    
	 rv  c               	   C   s  dg} dg}t jd| d}t d|d< t|ddgd	gd
|d}t|d jt | t|ttdD ]\}}t	t 
|d |k qhdg} dg}t jd| d}t d|d d d ddf< t|ddgdgd
|d}|\ t|d jt | d}|D ]6}t	t 
|d |k |d d  d7  < |d7 }qW 5 Q R X t|d t ddddd  dg} dg}t jd| d}t d|d d d dddf< t|ddgdgd
|d}|R t|d jt | d}|D ],}t|d | |d  d7  < |d7 }qW 5 Q R X t|d t dddddt d d  dg} dg}t jd| d}t d|d d d dddf< t|ddgd	gd
|d}t|d jt | d}|D ]}t|d | |d7 }qdg} dg}t jd| d}t d|d d d dddf< t|ddgd	gd
|d}t|d jt | d}|D ]}t|d | |d7 }q2dg} dg}t jd| d}t ddddd|d< t|ddgd	gd
|d}t|d jt | d}|D ]$}t|d || d  |d7 }qdg} dg}t jd| d}t ddd|d< t|ddgd	gd
|d}t|d jt | d}|D ],}t|d || d d d  |d7 }qFdg} dg}t jd| d}t ddd|d< t|ddgd	gd
|d}t|d jt | d}|D ]J}t|d d d || d  t|d dd  ddddg |d7 }qdg} dg}t jd| d}t ddd|d< t|ddgd	gd
|d}t|d jt | d}|D ]B}t|d d || d  t|d d || d  |d7 }qdg} d g}t jd| d}t dddd|d< t|ddgd	gd
|d}t|d jt | d}|D ]}t|d d ddf || d d d df  t|d d ddf || d d d df  t|d dd d f ddg |d7 }q8d!g} d g}t jd| d}t dddd|d< t|ddgd	gd
|d}t|d jt | d}|D ]}t|d d ddf || d d d df  t|d d ddf || d d d df  t|d dd d f ddg |d7 }q*d S )"NrX  )r/   r   r7   r:   r:   r   r&   r   r/   r   r   r<   r"   r#   r   )r/   r   rk   )r/   r   rw  r    r:   rA   )r/   r   rc   )rA   r7   r:   r:   )r/   r   rc   )r/   r   rw  H   r7   )r/   r   r   )r/   r   rd   r   )r/   r   rd   )r/   r   r   ro   )r/   r   r/  )r/   r   )r:   rA   )r/   r   )r7   r:   )r/   r   r   )r)   r   r   r   r   r'   rN  r>  rC   r   r   rG   r   )rd  re  r/   r   r?   countr   r   r    test_iter_buffered_cast_subarray  s2   ".....rz  c                  C   s  t dddd} t dddd}ttt| |gddgdgd	ggd
d t| |gddgdgd	ggd
d t dddd} t| |gdddgdgd	ggd
d t dddd} ttt| |gddgdgd	ggd
d t dddd} ttt| |gddgdgd	ggd
d d S )Nr   r:   r7   rA   ro   r   r   r    r   rQ   rR   r<   r2  r8   )r)   r   rG   r	   r   r   r   r   r   r    test_iter_buffering_badwriteback  s8    




r{  c                  C   s   t jdddgt jd} t| jt d ttt| dgdgdd	 t| dgdgd
d	}t|d d t|d jt d
 t jdddgt jd} t| jt d ttt| dgdgdd	 t| dgdgdd	}t|d d t|d jt d d S )Nabcr/   Zabcdr&   ZS4r   r<   ZS2r(   ZS6r   s   abcZU4ZU2ZU6)	r)   r   Zbytes_r   r'   r	   r   r   Zunicode_rf   r   r   r   test_iter_buffering_string  s     r}  c                  C   s4   t d} t| dddgdd}t|d j| j d S )N   r   Z	growinnerr   r5   r   r   )r)   r   r   r   r   rf   r   r   r   test_iter_buffering_growinner  s
    
r  c                     sb  t ddd  dddddg} d	d
g}ddgddggt jg} fdd}| D ]\}}}t j| d g|| ||d}|J d|jd d< |  ||_|D ]\}}	|	|	t j
7 }	q|jd }
W 5 Q R X tddD ]~}t j|d g|| |||d}|L d|jd d< |  ||_|D ]\}}||	t j
7 }q |jd }W 5 Q R X t||
 qqVd S )Ni        r   r  r   r2  r   )r<   )r    r   )r   rA   r:   )r   rA   r;   )r   r;   r;   c                  3   sn   t ddD ]^} t | dD ]N}D ]D}|  j | j  jf}tjj d|}dD ]}|||fV  qRq qq
d S )Niry   )r7   r7   r7   ri   )rC   r  r)   libstride_tricks
as_strided)xsZysr   r   r  skipr/   Zop_axes_listr   r   
get_params  s    z3test_iter_buffered_reduce_reuse.<locals>.get_params)r   r\   rj  r%   r   r;   .   )r   r\   rj  r   r%   )r)   r   floatr'   r   r.   r   r  r   r  int_rC   r   )r\   rj  r%   r  r  r   r  Znditer2Za2_inZb2_inZcomp_resbufsizeZnditer1Za1_inZb1_inr  r   r  r   test_iter_buffered_reduce_reuse  sH    
  
   r  c               	   C   s   t dddd} t dddd}t ddd}t| ||gg dd	gdgdgg ttt| ||gg dgdd	gdgg ttt| ||gg dgdgdd	gg d S )
Nr   r:   r7   r8   r   rA   ro   r<   r   )r)   r   rG   r   r	   r   )r/   r   r   r   r   r   test_iter_no_broadcast	  s     r  c                   @   sL   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S )TestIterNestedc              	      s  t dddd}t|dgddgg\}  fdd|D }t|dddddd	gd
dddddgg t|ddgdgg\}  fdd|D }t|ddgddgdd	gd
dgddgddgg t|ddgdgg\}  fdd|D }t|dddgddd	gd
ddgdddgg d S )Nro   r:   r7   r   rA   c                    s   g | ]}t  qS r   r>  r>   _r  r   r   r@   /	  s     z-TestIterNested.test_basic.<locals>.<listcomp>r8   r5   r   rv   rw   rx   ry   rz   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   3	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   7	  s     r   rG   r)   nested_itersr   selfr/   r   r   r   r  r   
test_basic*	  s    &.zTestIterNested.test_basicc              	      s&  t dddd}t|dgddgg\}  fdd|D }t|dddddd	gd
dddddgg t|ddgdgg\}  fdd|D }t|ddgddgdd	gd
dgddgddgg t|ddgdgg\}  fdd|D }t|dddgddd	gd
ddgdddgg tj|dgddggdd\}  fdd|D }t|dddddd	gd
dddddgg tj|ddgdggdd\}  fdd|D }t|ddgd
dgddgddgdd	gddgg tj|ddgdggdd\}  fdd|D }t|dddgd
ddgddd	gdddgg d S )Nro   r:   r7   r   rA   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   @	  s     z/TestIterNested.test_reorder.<locals>.<listcomp>r8   r5   r   rv   rw   rx   ry   rz   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   D	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   H	  s     rQ   rR   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   M	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   Q	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   U	  s     r  r  r   r  r   test_reorder:	  s&    &.*&.zTestIterNested.test_reorderc              	      sB  t ddddd d dd d dd d df }t|dgddgg\}  fdd|D }t|ddddd	d
gddddddgg t|ddgdgg\}  fdd|D }t|ddgddgd	d
gddgddgddgg t|ddgdgg\}  fdd|D }t|ddd	gddd
gdddgdddgg tj|dgddggdd\}  fdd|D }t|ddddddgd
d	ddddgg tj|ddgdggdd\}  fdd|D }t|ddgddgddgd
d	gddgddgg tj|ddgdggdd\}  fdd|D }t|dddgdddgd
ddgd	ddgg d S )Nro   r:   r7   r;   r   rA   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   ^	  s     z1TestIterNested.test_flip_axes.<locals>.<listcomp>r8   r5   r   rv   rw   rx   ry   rz   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   b	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   f	  s     rQ   rR   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   k	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   o	  s     c                    s   g | ]}t  qS r   r  r  r  r   r   r@   s	  s     r  r  r   r  r   test_flip_axesX	  s&    .&.*&.zTestIterNested.test_flip_axesc                    s   t ddd}t ddd}t||gdgdgg\}  fdd|D }t|ddgddgddggddgddgddggg t||gdgdgg\}  fdd|D }t|ddgddggddgddggddgddggg d S )Nr:   rA   r7   r   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   |	  s     z1TestIterNested.test_broadcast.<locals>.<listcomp>c                    s   g | ]}t  qS r   r  r  r  r   r   r@   	  s     r  )r  r/   r   r   r   r   r  r   test_broadcastv	  s    2zTestIterNested.test_broadcastc              
      s   t ddddd}tj|dgdggdd	gd
d\} t d jtd
  fdd|D }t|dddgdddgg d }t ddddd}tj|dgdggddgdd
d\} |j  Z t d jtd
 |D ]} D ]}|d  d7  < qqt|dddgdddgg W 5 Q R X W 5 Q R X t|dddgdddgg t ddddd}tj|dgdggddgdd
d\} t d jtd
 |D ]"} D ]}|d  d7  < qqt|dddgdddgg |     t|dddgdddgg d S )Nr   r   r&   r:   r7   r   rA   r<   r.   r   )rj  r%   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   	  s     z2TestIterNested.test_dtype_copy.<locals>.<listcomp>r8   r5   r   r    r!   r   )rj  r$   r%   .)r   rG   r)   r  r   r'   close)r  r/   r   r   r?   r   r   r  r   test_dtype_copy	  sH    

.
zTestIterNested.test_dtype_copyc                 C   s   t ddddd}tj|dgdggdgd	gd
dd\}}t|d jtd |D ]}|D ]}|d  d7  < q\qTt|dddgdddgg d S Nr   r   r&   r:   r7   r   rA   r   r    r   r   )r\   rj  r$   r%   .r8   r5   r   rG   r)   r  r   r'   r  r/   r   r  r?   r   r   r   r   test_dtype_buffered	  s    
z"TestIterNested.test_dtype_bufferedc                    sB  t dddd}t |g dddgg\}  fdd|D }t|dddddd	d
dddddgg t |dddgg g\}  fdd|D }t|dgdgdgdgdgd	gd
gdgdgdgdgdgg t |ddgg dgg\} }g }|D ]"} D ]}|dd |D  qqt|dddgddd	gd
ddgdddgg d S )Nro   r:   r7   rA   r   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   	  s     z*TestIterNested.test_0d.<locals>.<listcomp>r8   r5   r   rv   rw   rx   ry   rz   c                    s   g | ]}t  qS r   r  r  r  r   r   r@   	  s     c                 S   s   g | ]}|qS r   r   )r>   zr   r   r   r@   	  s     )r)   r   rG   r  r   r   )r  r/   r   r   kr?   r   r   r  r   test_0d	  s    $:zTestIterNested.test_0dc              
   C   s   t ddddd}tj|dgdggdgd	gd
dd\}}|P |@ t|d jtd |D ]}|D ]}|d  d7  < qhq`W 5 Q R X W 5 Q R X t|dddgdddgg d S r  r  r  r   r   r   %test_iter_nested_iters_dtype_buffered	  s    
(z4TestIterNested.test_iter_nested_iters_dtype_bufferedN)r+  r,  r-  r  r  r  r  r  r  r  r  r   r   r   r   r  (	  s   *r  c               	   C   sz   t d} ttt| d gg dgddggdgdggd t ddd	} ttt| d gd
gdgddggddgddggd d S )Nr   r<   r    r   r   r;   r   r:   r7   r   rA   )r)   r   r	   r   r   rG   r  r   r   r   test_iter_reduction_error	  s    

r  c               
   C   s  t d} t| d gdgdgddggdgdggd}|Z d|jd	 d
< |D ]\}}|d
  |7  < qJt|jd	 jd t|jd	 t |  W 5 Q R X t ddd} t| d gddgdgddggdd	gddggd}| d|jd	 d
< t|d	 jd t|d	 j	d |D ]2\}}t
t|D ]}||  || 7  < q"qt|jd	 jd t|jd	 t |  W 5 Q R X t d} t| d gddgdgddggd ddd	ggd}t| d gddddgdgddggd ddd	ggdd}| | |jd	 d |jd	 d |  |D ]}|d	 d
  |d 7  < q|D ]}|d	 d
  |d 7  < q8t|jd	 |jd	  t|jd	  | j W 5 Q R X W 5 Q R X d S )Nr   r2  r<   r    r   r   r;   r   rA   .r:   r7   r   r   rb   )r:   r7   r5   r   r  ry   )r   r   )r)   r   r   r   r   r   sumrG   rK   r   rC   rD   r   fillr  r   )r/   r   r?   r   r  Zit1r2   r   r   r   test_iter_reduction	  s`    

  
  r  c            
   	   C   s  t d} t jddd  }t| |gddgdgdd	ggd
gdggd}|N t|d jt d t|d j|jk |D ]\}}|d  |7  < q~W 5 Q R X t|t 	|  t d
dd} t jd
d
gdd  }t| |gdddgdgdd	ggd
dgd
dggd}|^ t|d jd t|d jd |D ]2\}}tt|D ]}||  || 7  < qLq8W 5 Q R X t|t j	| dd t dd }t j|d gddddgdgddggdd
gddggdd}|4 |jd d
 |  t|d
 ddddg W 5 Q R X t dt jdddddddf ddd
}t |j
|j|d< t jdt jd
dd}| }	|d d dd d d f }t ||gdddgdgdgg}|  |D ]\} }| d qW 5 Q R X t|dd d |	dd d  t|d d d d d S )Nr   g        r   r&   r2  r   r<   r    r   r   r;   r   rA   .r:   r7   r   re   rb   )axisr  r   r/  r   )rv   r<  rw   r8   rz   r5   r   )r)   r   r   r   r*   r   r   r'   r   r  rG   rK   r   rC   rD   r   r  r  r   r   Z	transposer   r.   )
r/   r   r   r?   r   r  r   r1   Zy_baseZy_base_copyr   r   r   test_iter_buffering_reduction$
  sd    

&

 0

r  c               	   C   s|   t d} t d}t j| |gdddgdgdggdd	}| d
d |D }W 5 Q R X t|ddddg tt|| j d S )N)r:   rv   )rA   rv   r2  r   r   r<   r    r5   )r\   rj  r   c                 S   s   g | ]\}}|j d  qS rb   r7  r   r   r   r   r@   p
  s     zDtest_iter_buffering_reduction_reuse_reduce_loops.<locals>.<listcomp>r:   )r)   r   r   r   r  r   )r/   r   r1   Zbufsizesr   r   r   0test_iter_buffering_reduction_reuse_reduce_loopsd
  s    


r  c               	   C   s  t d} t d}t dddgdddgg}t dddg}t jdddgdd}t jdddgd	d}t jdddgd
d}ttt| |gg ddgdgg ttt| |gg ddgddgg ttt| |gg dgdddgg ttt| ||gg ddgddgddgg ttt| |gg dgddgg ttt| ||gdgdgddgddgg t | ||gdgdgddgddgg ttt| ||gdgdgddgddgg t j| |gdgddgddggd
d gdd ttt j| |gdgddgddggd
d gdd ttt j| |gdgddgddggd
d gdd d S )Nr   re   TFr   rA   u1r&   r   r   r    writemaskedr<   	arraymaskr2  r   r   r  )r)   r   r   r	   r   r   r   )r/   r   r  m2Zm3Zmbad1Zmbad2r   r   r   test_iter_writemasked_badinputt
  s    

r  c                 C   s&   z
| j  W n tk
r    Y dS X dS )NTF)r8  r   )iteratorr   r   r   _is_buffered
  s
    
r  r/   re   r   r&   )&  r*  r:   )r8   i8  |   r7   )rx   r7   )r  r~  r5   r;   c              	   C   s  | j }|d d }tj|td}dddg| |d< t| |gg ddgd	d
gg}| |D ]\}}d|d< qZW 5 Q R X t| tdddg| | t| |gdgddgd	d
gg}d}|, |D ] \}}d|d< t|| rd}qW 5 Q R X |st| tdddg| | n$t| tdddg| | d| d< tj| |gdgddgd	d
ggdd gdd}| |D ]\}}d|d< qhW 5 Q R X t| tdddg| | d S )Nr;   r7   r&   TF.r    r  r<   r  rA   r   r   r   r"   r  )rK   r)   emptyboolr   r   Zbroadcast_toZmay_share_memory)r/   rK   ZrepsZmskr1   r?   r  Zis_bufferedr   r   r   test_iter_writemasked
  sN    r  mask	mask_axes)rA   r8   r  rA   r8   r   c              	   C   sn   t d}dg}dddg}ddg}|d kr0d }n|dd	gg}tt  t j| |f|||g|d
 W 5 Q R X d S )Nr6   r2  r  r    r   r   r  r   rA   )r\   rj  r   )r)   r   r	   r   r   )r  r  r  ZitflagsZ
mask_flagsZa_flagsr   r   r   r   %test_iter_writemasked_broadcast_error  s    


r  c                  C   s  t dd} |  }t jjddddt}t j| |gddgdd	gd
dggddgd}t }t	rnt
|}|D ]\}}d|f|d< qr~~~t	rt
|| t |kstt| |  ||   | | t d|f| jk st~ t	rt
||kstd S )Ni'  z>i,Or   r:   )r   r   r   r    r  r<   r  z<i,O?r(   r7   .)r)   r   r  r.   randomrandintr  r   objectr   r+   r,   Zcount_nonzeror   r   r   r'   r   )r  originalr  r1   Z	singletonry  rk  Zmask_bufr   r   r   test_iter_writemasked_decref  s,    
"r  c                  C   sJ   t t d} dddddddd	d
ddddg}|D ]}ttt| | q2d S )Nr:   r   rK   r   r8  rM  r-   Zhas_multi_indexZ	has_indexr   r   Znopr   r   r)   r   r   r	   AttributeErrordelattrr1   attrsr   r   r   )test_iter_non_writable_attribute_deletion=  s    
      r  c                  C   s8   t t d} ddddg}|D ]}ttt| | q d S )Nr:   r   r   r   r   r  r  r   r   r   %test_iter_writable_attribute_deletionG  s    r  c                  C   sT   t t d} z| d= | dd= W n* tk
r8   Y n tk
rN   tY nX d S )Nr7   rA   r:   )r)   r   r   r   r  r   r1   r   r   r   test_iter_element_deletionN  s    r  c                  C   sH  t jdddgd fd dgd} | D ] \}}|d |d< |d |d< q t| jd ddgddgd	d
gg t jdddggd fd dgdgd dgd} | D ] \}}|d |d< |d |d< qt| jd ddgddgd	d
gg t jdd d dgd} | D ]:\}}}|| |d< || |d< || |d< || |d< qt| jd ddgddgg d S )NrA   r7   r   )r   rd   r(   r   r:   r8         r2  )r;   r   )r%   r\   r   )ry   r:   N)r   r/  rh   ri   rj   rk   rw   ro   r5   )r)   r   r   r   )r1   r/   r   r   r   r   r    test_iter_allocated_array_dtypesX  s(    " "r  c               	   C   s  t ddgdgdggd } t| jd tt| d t| jd t| jd ttt|  |   tt| d ttt|  t t	
ddgdggdgd	} t| jd tt| d
 t t	
ddgdggdgdd} t| jd tt| d
 tt" t t	
ddgdggdd W 5 Q R X ddddg}t	jddd}t |ddgdgd|d} t| }t|d d t|d d t|d dgd gd  t|d d d S )Nr:   r7   r   r<   r   r   r   r5   r   rA   r   r   rX  rY  rZ  r[  r\  r   r&   r   r   r"   r#   r/   r   r   r   )r   r   r   r  r   r   r	   StopIterationr  r)   r   rD   r   r   )r   rc  r/   r   r   r   r   test_0d_iters  s>     
& r  c                     s   t tdd  ttjd ddt  td d d df< t t fdd G dd d} t ttj	j
tj|  |  gdd	 d S )
Nc                   S   s   t jdddd  S )N)ihB  r:   r   r&   )r)   r   r   r   r   r   r     r   z*test_object_iter_cleanup.<locals>.<lambda>ry   r;   c                      s0   t d d d d df  d d d d df S )Nr;   )r)   addr   r  Zoarrr   r   r     r   c                   @   s   e Zd Zdd ZdS )z#test_object_iter_cleanup.<locals>.Tc                 S   s   t dd S )NZ	Ambiguous)r   )r  r   r   r   __bool__  s    z,test_object_iter_cleanup.<locals>.T.__bool__N)r+  r,  r-  r  r   r   r   r   rH     s   rH   r   r&   )r	   r   r)   r   BUFSIZErG   r  r   r  
logical_orreducer   )rH   r   r  r   test_object_iter_cleanup  s    

r  c               	   C   sP   t d dgddgd dgddggd d d } tt t |  W 5 Q R X d S )NrA   r;   r:   )r)   r   rg  rh  r   r  )r  r   r   r   test_object_iter_cleanup_reduce  s    ,r  r  )@  r8   r:   rW   )r'   rS   c                 C   s<   t jdt jd}t j| dt|d}t|t jddtd d S )Nr  r&   rl   )r  r'   outr8   )r)   r   intpr  r  r   full)r  r  r  r   r   r   %test_object_iter_cleanup_large_reduce  s    r  c                  C   sn   t t jjd } t jjt d| fd}tt	t
||d d d f f tt	t
||d d d f fdgd d S )NrH  rA   rb   r   r[   )r)   iinfor  maxr  r  r  r   r	   r   r   )r   r  r   r   r   test_iter_too_large  s     r  c                  C   s  d} d}| | t t jjk r(|d7 }qddg| }g }t|D ],}|d d  }d||d < |t | q@t|}tdD ]&}tt	 t
|d| W 5 Q R X q~t
|dd t|D ]N}tdD ]@}t
||d | tt	 t
||d d | W 5 Q R X qqd S )NrH  rA   r:   r   r;   rv   )r)   r  r  r  rC   r   r  rF   r	   r   _multiarray_testsZtest_nditer_too_large)Z	base_sizenumZshape_templaterI  r   rK   moder   r   r   #test_iter_too_large_with_multiindex  s(    


r  c               
   C   s  t jddd} |   }t| jj|jjk t|g ddggdt dgd}| d|jd	 d d < W 5 Q R X t	|d t|g ddggdt dgd}z<|. t	|j
jd
 d	|jd	 d d < tdW 5 Q R X W n   Y nX t	|d	 t	|j
jd ttt|d t|g ddggdt dgd}|( |jd	 }d|d d < t|j
j W 5 Q R X t	|d t|j
j  d|d d < t	|d t|g ddggdt dgd}|* | |D ]}d|d< qW 5 Q R X W 5 Q R X t|g ddggdt dgd}|8 | |D ]}d|d< qW 5 Q R X ttt|d W 5 Q R X t|g ddggdt dgd}~| |D ]}d|d< qlW 5 Q R X |j}tt| d S )Nr   r   r&   r    r!   r   r#   r   r   Fz!exit context manager on exceptionTr   {   .)r)   r   r   r*   r   r'   r   r   r   r   r\   r   r   r	   getattrZwritebackifcopy	__enter__RuntimeError)r/   r   r1   r?   Zenterr   r   r   test_writebacks  s     

 

 



 
  
 
r  c                  C   s`   d
dd} ddd}| t dt d}t|t ddd	 |t dt d}t|t ddd	 dS )zC using a context amanger and using nditer.close are equivalent
    Nc           	      S   s\   t j}t | ||gg dgdgddgg}|D ]\}}}||||d q,|jd }|  |S Nr<   r   r   )r  r:   )r)   r  r   r   r  )	r?   r   r  addopr1   r/   r   r   r   r   r   r   	add_close5  s    
z(test_close_equivalent.<locals>.add_closec              
   S   sl   t j}t | ||gg dgdgddgg}|6 |D ]\}}}||||d q2|jd W  5 Q R  S Q R X d S r  )r)   r  r   r   )r?   r   r  r  r1   r/   r   r   r   r   r   add_context?  s    z*test_close_equivalent.<locals>.add_contextr5   r   ry   r:   )N)N)rC   r   )r  r  r  r   r   r   test_close_equivalent2  s    


r  c                  C   sD   t t d} tt| d |   ttt|  ttt	| d d S )Nr7   r   r   )
r)   r   r   r   r  r  r	   r  r   r  r  r   r   r   test_close_raisesL  s
    r  c                  C   s"   t t d} tt| jd d S )Nr7   rA   )r)   r   r   r	   r   r  r  r   r   r   test_close_parametersS  s    r  c               	   C   sp   t jddd} |   }t F}|t t j|g ddggdt dgd}~t	|j
dksbtW 5 Q R X d S )	Nr   r   r&   r    r!   r   r#   rA   )r)   r   r   r*   r   recordRuntimeWarningr   r'   rD   logr   )r/   r   rU  r1   r   r   r   test_warn_nocloseW  s    
 
r  r  win32z!Errors with Python 3.9 on Windowsr  	buf_dtype)r   r   )r   r   )i,OzO,O)zO,ir  stepsc                 C   s   d}t tt jd || }t j|t |gdddgdd}t|D ]}t| qH~t j|t |gdddgdd}t|D ]}|	  q~dS )	a  
    Checks for reference counting leaks during cleanup.  Using explicit
    reference counts lead to occasional false positives (at least in parallel
    test setups).  This test now should still test leaks correctly when
    run e.g. with pytest-valgrind or pytest-leaks
    i  @r   r   r   r   r"   r%   r\   r$   N)
r)   r  intr  r  r   r'   rC   r  r   )r  r  r  r   r  r1   stepr   r   r   test_partial_iteration_cleanupc  s      
 
r  c              	   C   s   d}t tt jd || }| dkr<d |tt jd < nd |tt jd  d< t|}t j|t |gdddgd	d
}t	
t t| t| W 5 Q R X |  t	
t |  |  W 5 Q R X |t|kstd S )Nr  r   r   r   Zf0r   r   r   r"   r  )r)   r  r  r  r  r+   r,   r   r'   rg  rh  r   r  r  r   r   )r  r  r   r  ry  r1   r   r   r   test_partial_iteration_error  s$    
 r  c                 C   s   d   }tjdtjddddddddf }td}tj||fdd	gd
ddgdgdggd}|  |  j	}|   }t
|t
|kstt||D ]\}}||  stqdS )a  
    Matches the expected output of a debug print with the actual output.
    Note that the iterator dump should not be considered stable API,
    this test is mainly to ensure the print does not crash.

    Currently uses a subprocess to avoid dealing with the C level `printf`s.
    a  
    ------ BEGIN ITERATOR DUMP ------
    | Iterator Address:
    | ItFlags: BUFFER REDUCE REUSE_REDUCE_LOOPS
    | NDim: 2
    | NOp: 2
    | IterSize: 50
    | IterStart: 0
    | IterEnd: 50
    | IterIndex: 0
    | Iterator SizeOf:
    | BufferData SizeOf:
    | AxisData SizeOf:
    |
    | Perm: 0 1
    | DTypes:
    | DTypes: dtype('float64') dtype('int32')
    | InitDataPtrs:
    | BaseOffsets: 0 0
    | Operands:
    | Operand DTypes: dtype('int64') dtype('float64')
    | OpItFlags:
    |   Flags[0]: READ CAST ALIGNED
    |   Flags[1]: READ WRITE CAST ALIGNED REDUCE
    |
    | BufferData:
    |   BufferSize: 50
    |   Size: 5
    |   BufIterEnd: 5
    |   REDUCE Pos: 0
    |   REDUCE OuterSize: 10
    |   REDUCE OuterDim: 1
    |   Strides: 8 4
    |   Ptrs:
    |   REDUCE Outer Strides: 40 0
    |   REDUCE Outer Ptrs:
    |   ReadTransferFn:
    |   ReadTransferData:
    |   WriteTransferFn:
    |   WriteTransferData:
    |   Buffers:
    |
    | AxisData[0]:
    |   Shape: 5
    |   Index: 0
    |   Strides: 16 8
    |   Ptrs:
    | AxisData[1]:
    |   Shape: 10
    |   Index: 0
    |   Strides: 80 0
    |   Ptrs:
    ------- END ITERATOR DUMP -------
    r   r&   ry   Nr:   g      @r   r   r"   r2  r   r<   r    )r%   r$   r\   rj  )strip
splitlinesr)   r   r4  rG   r   debug_printZ
readouterrr  rD   r   rN  
startswith)Zcapfdr  Zarr1Zarr2r1   r  Zres_lineZexpected_liner   r   r   test_debug_print  s    
7*


r  )r+   rg  ro  rq  Znumpyr)   Znumpy.core._multiarray_testscorer  r   r   r   r   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   markZskipifr3   rP   rV   rX   rZ   r^   ra   rg   rn   rp   rs   ru   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	  ZparametrizeZ	typecodesfilterwarningsr  r  r  r!  r"  r$  r%  r'  r)  r1  r3  r5  r6  r;  r?  rE  rJ  rK  rO  rS  rV  rW  rf  ri  rl  rv  rz  r{  r}  r  Zslowr  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  r  r  r  r  r  version_infoplatformr  r  r  r   r   r   r   <module>   s8  (
*

,%%$FKM>>,&'-@Z&-
! 
+	")2J ("	
3 6;@C, .	
<




&$&*
"A
"