o
    1ήc                    @   s  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 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 Z/d8d9 Z0d:d; Z1d<d= Z2d>d? Z3d@dA Z4dBdC Z5dDdE Z6dFdG Z7dHdI Z8dJdK Z9dLdM Z:dNdO Z;dPdQ Z<dRdS Z=dTdU Z>ej?dVej@dW ej?dXej@dW ejAdYdZd[ ZBd\d] ZCd^d_ ZDd`da ZEdbdc ZFddde ZGdfdg ZHdhdi ZIdjdk ZJdldm ZKdndo ZLdpdq ZMdrds ZNdtdu ZOdvdw ZPdxdy ZQdzd{ ZRd|d} ZSd~d ZTdd ZUdd ZVdd ZWdd ZXdd ZYejje dddd ZZdd Z[dd Z\dd Z]dd Z^ejj_dd Z`dd ZaG dd dZbdd Zcdd Zddd Zedd Zfdd Zgdd Zhej?dejidddejiddddddddf ejidddddddddddddf ejidddddd ejidddddddddf ejiddddddddddddddf gdd Zjdd Zkdd Zldd Zmdd Zndd Zodd Zpdd ZqddĄ Zrej?dejsdetddddddddf ejsdetddȍdddddddf ejsdetddddddddf udǡgddʄ Zvdd̄ Zwdd΄ ZxddЄ Zydd҄ ZzddԄ Z{ddք Z|ejje d
ddd؄ Z}ejje j~dd dkoe jdkddej?ddgg dޢej?dg d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HAS_REFCOUNTsuppress_warningsbreak_cyclesc                 C   (   g }| j s|| j |   | j r|S N)finishedappendmulti_indexiternextiret r   C/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_nditer.pyiter_multi_index      r   c                 C   r   r   )r   r   indexr   r   r   r   r   iter_indices   r   r   c                 C   r   r   )r   r   	iterindexr   r   r   r   r   iter_iterindices   r   r   zPython lacks refcounts)reasonc                  C   s  t d} td }t| }t|}t| g ddggd|gd }t|j  tt| |k tt||k W d    n1 sEw   Y  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dtrc_arc_dtitrc2_arc2_dtit2r   r   r   test_iter_refcount%   sJ   






r8   c                  C   s
  dD ]} t t| }tdt|  D ]n}td gt|  }tt| D ]}d| |@ r4td d d||< q$t|}|| | }t|g dgg}t	dd |D | t|j
g dgg}t	dd |D | t| dkrt|dd	g dgg}t	d
d |D | qqd S )N)   )         r;   r<   )r>   r;   r<   r;   )r>   r;   r>   r>   r;   r>   readonlyc                 S      g | ]}|qS r   r   .0xr   r   r   
<listcomp>b       z(test_iter_best_order.<locals>.<listcomp>c                 S   rA   r   r   rB   r   r   r   rE   e   rF   r      c                 S   rA   r   r   rB   r   r   r   rE   i   rF   )r   r*   prodrangelenslicetuplereshaper   r   Tswapaxesshaper0   dirs
dirs_indexbitaviewr   r   r   r   test_iter_best_orderP   s(   rV   c                  C      dD ]} t t| }tdt|  D ]y}td gt|  }tt| D ]}d| |@ r4td d d||< q$t|}|| | }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rt|d	d
dd}t	dd |D |d	d
j
dd qqd S )Nr9   r>   r?   Corderc                 S   rA   r   r   rB   r   r   r   rE   |   rF   z%test_iter_c_order.<locals>.<listcomp>c                 S   rA   r   r   rB   r   r   r   rE      rF   r   rG   c                 S   rA   r   r   rB   r   r   r   rE      rF   r   r*   rH   rI   rJ   rK   rL   rM   r   r   ravelrN   rO   rP   r   r   r   test_iter_c_orderk   ,   r]   c                  C   rW   )Nr9   r>   r?   FrY   c                 S   rA   r   r   rB   r   r   r   rE      rF   z%test_iter_f_order.<locals>.<listcomp>c                 S   rA   r   r   rB   r   r   r   rE      rF   r   rG   c                 S   rA   r   r   rB   r   r   r   rE      rF   r[   rP   r   r   r   test_iter_f_order   r^   r`   c                  C   rW   )Nr9   r>   r?   ArY   c                 S   rA   r   r   rB   r   r   r   rE      rF   z*test_iter_c_or_f_order.<locals>.<listcomp>c                 S   rA   r   r   rB   r   r   r   rE      rF   r   rG   c                 S   rA   r   r   rB   r   r   r   rE      rF   r[   rP   r   r   r   test_iter_c_or_f_order   r^   rb   c                  C   sD   t ddd} t j| dgd}d|_tdd |D g d	 d S )
Nr   r>   r;   r   flagsr   r>   c                 S   rA   r   r   )rC   r   r   r   r   rE      rF   z/test_nditer_multi_index_set.<locals>.<listcomp>)r>   r;   r<   r:   )r*   r   rM   r   r   r   )r0   r4   r   r   r   test_nditer_multi_index_set   s   rf   c                  C   sH   d} t jt g ddgd}t| }| f|_t| }t|| d S )Nr   )o      iM  i  r   rc   )r*   r   r   r,   r-   r   r   )r   r   start_count	end_countr   r   r   $test_nditer_multi_index_set_refcount   s   

rk   c                  C   ^   t d} t| dgdgg}tt|g d t| d d d dgdgg}tt|g d d S )Nr<   r   r@   )r   rG   r>   r;   r?   )rp   ro   rn   rm   )r   r   r   r   r0   r   r   r   r   #test_iter_best_order_multi_index_1d   
   rr   c                  C     t d} t| dddgdgg}tt|g d t| ddjdddgdgg}tt|g d	 t| ddd d d
 dgdgg}tt|g d t| ddd d d d d
f dgdgg}tt|g d t| ddd d d
d d d
f dgdgg}tt|g d t| ddjddd d d
 dgdgg}tt|g d t| ddjddd d d d d
f dgdgg}tt|g d t| ddjddd d d
d d d
f dgdgg}tt|g d d S )Nr   r>   r;   r   r@   )r   r   r   rG   re   rG   r   rG   rG   rG   r>   r_   rY   )ru   rw   rv   rx   re   ry   r?   )rw   rx   ry   ru   rv   re   )re   rv   ru   ry   rx   rw   )ry   rx   rw   re   rv   ru   )rw   ru   rx   rv   ry   re   )re   ry   rv   rx   ru   rw   )ry   re   rx   rv   rw   ru   r   r   rM   r   r   r/   rq   r   r   r   #test_iter_best_order_multi_index_2d   s*   "$,.,&
(
r{   c                  C     t d} t| ddddgdgg}tt|g d t| dddjdddgdgg}tt|g d	 t| dddd d d
 dgdgg}tt|g d t| dddd d d d d
f dgdgg}tt|g d t| dddd d d d d d d
f dgdgg}tt|g d t| dddjddd d d
 dgdgg}tt|g d t| dddjddd d d d d
f dgdgg}tt|g d t| dddjddd d d d d d d
f dgdgg}tt|g d d S )N   r>   r;   r   r@   )r   r   r   r   r   rG   r   rG   r   r   rG   rG   r   r>   r   r   r>   rG   rG   r   r   rG   r   rG   rG   rG   r   rG   rG   rG   rG   r>   r   rG   r>   rG   r_   rY   )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~   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   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   rz   rq   r   r   r   #test_iter_best_order_multi_index_3d   sN   $&.4 
(
.
r   c                  C   rl   )Nr<   c_indexr@   r   rG   r>   r;   r?   r;   r>   rG   r   r   r   r   r   rq   r   r   r   test_iter_best_order_c_index_1d%  rs   r   c                  C   rt   )Nr   r>   r;   r   r@   r   rG   r>   r;   r<   r:   r_   rY   )r   r;   rG   r<   r>   r:   r?   )r;   r<   r:   r   rG   r>   )r>   rG   r   r:   r<   r;   r:   r<   r;   r>   rG   r   )r;   r   r<   rG   r:   r>   )r>   r:   rG   r<   r   r;   )r:   r>   r<   rG   r;   r   r   r   rM   r   r   r/   rq   r   r   r   test_iter_best_order_c_index_2d0  2   
$,.
&
(
r   c                  C   r|   )Nr}   r>   r;   r   r@   r   rG   r>   r;   r<   r:   r         	   
      r_   rY   r   r   r>   r   r<   r   rG   r   r;   r   r:   r   r?   r   r   r   r   r   r   r   rG   r>   r;   r<   r:   r<   r:   r>   r;   r   rG   r   r   r   r   r   r   rG   r   r;   r>   r:   r<   r   r   r   r   r   r   r   r   r   r>   r   r<   r   rG   r   r;   r   r:   r<   r   r>   r   r   r   r:   r   r;   r   rG   r   rG   r   r;   r   r:   r   r   r   r>   r   r<   r   r   rq   r   r   r   test_iter_best_order_c_index_3dM  R   
&.4 
(
.
r   c                  C   rl   )Nr<   f_indexr@   r   r?   r   r   rq   r   r   r   test_iter_best_order_f_index_1dr  rs   r   c                  C   rt   )Nr   r>   r;   r   r@   r   r>   r<   rG   r;   r:   r_   rY   r   r?   )rG   r;   r:   r   r>   r<   )r<   r>   r   r:   r;   rG   )r:   r;   rG   r<   r>   r   )rG   r   r;   r>   r:   r<   )r<   r:   r>   r;   r   rG   r   r   rq   r   r   r   test_iter_best_order_f_index_2d}  r   r   c                  C   r|   )Nr}   r>   r;   r   r@   r   r_   rY   r   r?   r   r   r   r   r   r   r   rq   r   r   r   test_iter_best_order_f_index_3d  r   r   c                  C   s2  dD ]} t | }t|}tdt|  D ]}td gt|  }tt| D ]}d| |@ r6td d d||< q&t|}|| | }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rt|dddgdgg}t	|j
d t	|d j|f qqd S )Nr9   r>   r?   external_loopr@   rG   r   )r*   rH   r   rI   rJ   rK   rL   rM   r   r   ndimrQ   rN   rO   )rQ   sizer0   rR   rS   rT   rU   r   r   r   r    test_iter_no_inner_full_coalesce  s4   

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>   r;   r<   r?   r   r@   r   rp   r   rG   )r}   r   )r   rM   r   r   r   rQ   rq   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>   r;   r<   r   r@   r   rG   r   r   rX   rY   r_   ra   )r   rM   r   r   r   rO   rN   )r0   r   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   r;   r>   r;   rG   r   r<   r<   r>   r;   r   r}   )r   r   r*   int32r   itersizerQ   rM   r   r   r   r   test_iter_broadcasting  s   $ """"$$r   c               	   C   sJ  t jddddd} t| d gg dgddggg d	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g d	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g d	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g d	d gdd t jt dd d gdd}d S )Nr   i2r'   r>   r;   r@   	writeonlyallocate)r   rG   N)r?   r?   r<   op_axes	itershaperG   r=   )r   r   r>   )r;   r>   r<   )r   r   r>   r_   )rZ   r   r   )r>   r   r}   )r?   rG   r<   ro   r   )r*   r   rM   r   r   operandsrQ   stridesrN   r	   
ValueErroronesrq   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  z't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 ty }  z"t| }t|ddkd|  t|ddkd|  W Y d } ~ nd } ~ ww z"t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 tyG }  z.t| }t|ddkd|  t|ddkd|  t|ddkd|  W Y d } ~ nd } ~ ww ztt	dt	dgg ddgdgg td ty }  z#t| }t|ddkd|  t|ddkd |  W Y d } ~ d S d } ~ ww )!Nr>   r;   r@   r   r   r<   $   r   r   rG   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))r<   r;   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>   rG   rG   ro   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   rM   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 g d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GrY   noonr%   r;   r>   r   r   r   r   r   r!   r@   r   r!         ?rG   FTc                 S      | j S r   r   r   r   r   r   <lambda>      z(test_iter_flags_errors.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r     r   c                 S   
   d| _ d S )Nrm   r   r   r   r   r   assign_multi_index     
z2test_iter_flags_errors.<locals>.assign_multi_indexc                 S   r   Nr   r   r   r   r   r   assign_index  r   z,test_iter_flags_errors.<locals>.assign_indexc                 S   r   r   )r   r   r   r   r   assign_iterindex  r   z0test_iter_flags_errors.<locals>.assign_iterindexc                 S   r   )Nrv   )	iterranger   r   r   r   assign_iterrange  r   z0test_iter_flags_errors.<locals>.assign_iterrangebuffered)
r   r	   r   r   	TypeErrorr*   r   rd   	writeabler   )r0   r   r   r   r   r   r   r   r   test_iter_flags_errors  sh   
r   c                  C   s   t dt dt d} }}t| ||gg dg}|3 d|dd< t| g d t|g d t|g d d	|d
< t|dd dd	g W d    d S 1 sSw   Y  d S )Nr;         @r!   )r;   r;   r   r>   )r;   rG   r>   r   rG   r>   r}   rG   )r*   r   r   r   )r0   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 d    n1 s9w   Y  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 d    n1 suw   Y  t| d d }d }d S )Nr   f8r'   r>   r;   r<   r!   r"   	same_kindr    r$   r   .   r?   rG   i.)r*   r   rM   rN   r   r(   r   r   )r0   r4   rD   r   r   r   test_iter_assign_mapping!  s(   

r   c                  C   s0  t jddd} |   }t| jj|jjk t|g ddggdt dgd}|0 t|j	d j| jj t|j
d jj| jj t|j
d |  d	|j
d d d < W d    n1 s\w   Y  t|d	gd  ~t jddd} |   }t| jj|jjk t|g g d
gdd9}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 d    n1 sw   Y  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 g dg"}t|j
d jj t|j
d |  d|j
d d d < W d    n	1 s>w   Y  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>   )r!   r"   nbor   i90  )   i1rG   r@   )r!   r"   alignedr;   r}   r   r   contigr   
buffersize)r*   r   byteswapr+   r   r(   	byteorderr   r   dtypesr   r   rd   r   
contiguous)r0   aur   r   r   r   test_iter_nbo_align_contig4  sh   
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 d    n1 s:w   Y  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 d    n1 syw   Y  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4}t|jd |  t|jd jt d t|jd jd d|jd d< t
| d dk W d    n	1 sLw   Y  t| d d t jdddd d d } t| g dd
ggdt dgd(}t|jd jt d t|jd jd g d |jd d d < W d    n	1 sw   Y  t| g d  d S )!Nr   r    r'   r>   r;   r!   r)   r   <f4r"   r   >f4r$   r   r<   rG   r@   r/   safer   )`   r       r?   r   )r<      0   g      )r   i4r   r#   )r<   rG   r>   r;   )r*   r   rM   r   r(   r   r   rO   r   rN   r   rq   r   r   r   test_iter_array_castr  sr   
 




	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  sZ   












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  r;   )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g dd | d gdd}trt| }ttt| tr)tt| | t|dgdg}d	d
 |D }tt j|dd| d gd \}}}trTt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rtt| | t|	ddj
ddgdgdd}| |D ]}d |d< qd gd \}}}W d    n1 sw   Y  trtt| |d k t|t jd gd dd d S )Nr;   dr0   r   r  Or'   refs_okr@   c                 S      g | ]}|d  qS r   r   rC   x_r   r   r   rE   #      z1test_iter_object_arrays_basic.<locals>.<listcomp>r>   r   rX   rY   c                 S   r  r  r   r  r   r   r   rE   ,  r  r_   r!   .rG   r<   )r*   r   r
   r,   r-   r	   r   r   r   rM   rN   r   r.   r\   )objr0   rcr   valsrD   r   r   r   test_iter_object_arrays_basic  sB   


$
r  c                  C   s\  t jddd} t| ddgdgddd	}| |D ]
}|d
  d7  < qW d    n1 s-w   Y  t| t dd  t jddd} t| ddgdgddd	}| |D ]
}|d
  d7  < qTW d    n1 siw   Y  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  < qW d    n1 sw   Y  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 d    n	1 sw   Y  tr"tt||d k t| t dd  d S )Nr   r  r'   r  r   r!   r#   r  r$   .rG   r   )pr   r0   r  r0   )r0   r  iHr   r   iI)	r*   r   r   r   r   r
   r,   r-   r   )r0   r   rD   obr  r   r   r   #test_iter_object_arrays_conversions<  sb   
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 )Nr;   r    r'   r   r   common_dtyper@   r/   r>   r  r   rG   r  r   u4i8               @c8r   r<   c16)r;   r%  r'  r   r   r   )r   r   r   r   r*   r(   r  r   r   r   r   test_iter_common_dtypei  s    r*  c            	   	   C   sr  dD ]+} t d}t|gdg| gg}| t|jd |u  W d    n1 s(w   Y  qt d}|dd  }|d d }t||gdgdgdgg}ttj|j   W d    n1 s_w   Y  t d}|}|}t||gdgdd	gdd	gg}| t|jd |u o|jd |u  W d    n1 sw   Y  t||gdgdgdgg}t|jd |u ot|jd |  W d    n1 sw   Y  t d}|d d d
 }|dd d
 }t||gdgdgdgg}t|jd |u o|jd |u  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 d    n	1 s5w   Y  dD ]J} t	ddg}|}|j
}|}t|||gdgdgdg| gg }|j\}}}tt||  tt||  W d    n	1 sw   Y  q<t	ddg}|}|j
}|}t|||gdgdgdgdgg}|j\}}}t||u  t||u  t||u  t	ddg}|}t	ddg}|j
}t|||gdgdgdgdgg}|j\}}}t||u  t||u  t||u  t d}|d d }|dd }|dd }t|||gdgdgdgdgg}|j\}}}t||u  t||u  t||u  d S )Nr   r   copy_if_overlapr   rG   r?   r@   r!   overlap_assume_elementwiser>   r   r<   r'   r;   )r   r!   r   r   )r   r   r   r   r*   shares_memoryint8viewr   r   rN   )	flagr0   r   rD   r   r   a2b2c2r   r   r   test_iter_copy_if_overlap  s   "( 
r4  c                  C   sh  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 g d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 g dgd}tdd	 |D | |ddd   t dd}t| |gg dggd d g d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 g dg d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>   r;   r@   r   rG   r   c                 S      g | ]\}}||kqS r   r   rC   rD   yr   r   r   rE   	      z%test_iter_op_axes.<locals>.<listcomp>r   r<   )r>   rG   r   c                 S   r6  r   r   r7  r   r   r   rE     r9     r:   r   r?   r?   c                 S      g | ]\}}|| qS r   r   r7  r   r   r   rE     r9  )r?   r   r?   c                 S   r<  r   r   r7  r   r   r   rE     r9  c                 S   r<  r   r   r7  r   r   r   rE     r9  (   r   )r   rG   r?   r?   )r?   r?   r   rG   )r>   r;   r:   r>   r}      r?   )r;   r:   )r   rM   r   rN   r   r   r   r\   r*   r   rQ   )r0   r   r   r   r   r   test_iter_op_axes  s<   *&
$&
$&
&r?  c               	   C   sH  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g d	gd ttt| | gg dggd ddgddggd d S )
Nr   r>   r;   r@   r   rG   r5  r?   r   )r   rM   r	   r   r   r0   r   r   r   test_iter_op_axes_errors)  s,   
rA  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 d    n1 sw   Y  tdd |D | jd
d t dddddd} t| dgd
dddd}| }W d    n1 sw   Y  tdd |D | jd
d d S )Nr   r>   r;   r<   c                 S   r  r  r   rB   r   r   r   rE   J  r  z"test_iter_copy.<locals>.<listcomp>c                 S   r  r  r   rB   r   r   r   rE   N  r  r   rangedr_   rZ   r   c                 S   r  r  r   rB   r   r   r   rE   S  r  c                 S   r  r  r   rB   r   r   r   rE   W  r  r;   r   c                 S   r  r  r   rB   r   r   r   rE   [  r  )r>      c                 S   r  r  r   rB   r   r   r   rE   a  r  r#   r   r:   )rZ   r%   r&   r   c                 S   r  r  r   rB   r   r   r   rE   g  r  rY   z<i4r'   z>f8c                 S   r  r  r   rB   r   r   r   rE   m  r  )	r   rM   r   r/   r   r   r   nextr\   )r0   r   jr   r   r   test_iter_copyC  sH   

 rH  r(   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y4   Y d S w tj|fg d|gdd	}t	t|tj
rVt|tjd|d | }t|}~t|}~t|| t|| d S )
Nmz[ms]r   50  r'   r   r   r  r#   r&   r%   )lowerr*   r(   itemsizer   r+   astype	Exceptionr   
issubdtypenumberr   r/   rF  )r(   rJ  arrexpectedr4   it_copyres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g d	|gd
d}| }t|}~t|}~|d |d }t|d | t|d | | d jD ]"}|d | |d | j	}t|d | | t|d | | q`d S )Nr0   zi,r   z>i,<i,>d,S17,>d,(3)f,O,i1r  z>i,>i,S17,>d,>U3,(3)d,i1,OrM  r'   rN  r#   rO  )
r*   r(   r   r   r/   rF  rR  r   namesbase)	in_dtype	out_dtyperV  r4   rX  res1res2rW  fieldr   r   r   test_iter_copy_casts_structured  s.   rc  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)   rG   )r   r   r*   r(   r   r   rQ   rq   r   r   r    test_iter_allocate_output_simple  s   rd  c                  C   s   t d} t| d gddgdgddgg}|3 d|jd d d < |  |D ]}|d d  |d	 d 7  < q%t|jd | d  W d    d S 1 sKw   Y  d S )
Nr   r   delay_bufallocr@   r   r!   rG   .r   )r   r   r   resetr   r0   r   rD   r   r   r   ,test_iter_allocate_output_buffered_readwrite  s   "rh  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>   r;   r@   r   r   r    r)   rG   r   r<   r   rX   )rZ   r&   )r  r  r<   )r   rM   r   r*   r(   r   r   rQ   r   rN   rO   rq   r   r   r   !test_iter_allocate_output_itorder  s.   
ri  c                  C   s   t dddddd} td | gg ddgd	ggtd
d gg d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>   r;   r<   r   r   r@   r$  r   r&   r   r   r   )r<   r  r  )	r   rM   r   r*   r(   r   r   rQ   r   rq   r   r   r    test_iter_allocate_output_opaxes  s   
rk  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 )Nr;   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(     rl  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 )Nr;   r$  r'   r@   r   r   r   rG   r>   =)r   r+   r   r   r   r   rq   r   r   r   *test_iter_allocate_output_types_byte_order  s   
 rn  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 )NrG   gffffff@r}   r;   r   r   r@   r<   r   
complex128)r   r*   r  ro  r   r   r(   r   r   r   r   r   &test_iter_allocate_output_types_scalar  s
   rp  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 u t|j
d jd
 t||d gg dgdgg dg}tt	|t	|j
d  tt	|t	|j
d u 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____array_priority__r   r   r   r   	MyNDArray  s    rv  rG   r>   r;   r<   r@   r   r   r>   r>   )r   r   
no_subtype)r*   ndarrayr   r/  r   rM   rN   r   r   typer   r   rQ   )rv  r0   r   r   r   r   r   !test_iter_allocate_output_subtype  s"   r{  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t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 g dgd ttt| d gg dgddggd tdgd g d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>   r;   r<   r   rG   rj  )r   r;   rG   )r   r>   rG   r   	reduce_ok)	r   r	   r   r   r   r*   r(   rM   r   r@  r   r   r    test_iter_allocate_output_errors0  sL   


r}  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>   r;   r<   r   rG   c                 S   rA   r   r   rB   r   r   r   rE   _  rF   z)test_iter_remove_axis.<locals>.<listcomp>r   r?   c                 S   rA   r   r   rB   r   r   r   rE   d  rF   )r   rM   r   remove_axisr   r\   rq   r   r   r   test_iter_remove_axisZ  s   
*
.r  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>   r;   r<   r   r=   r   c                 S   rA   r   r   rB   r   r   r   rE   q  rF   z;test_iter_remove_multi_index_inner_loop.<locals>.<listcomp>c                 S   rA   r   r   rB   r   r   r   rE   s  rF   rG   c                 S   r   r   rQ   r   r   r   r   r   w  r   z9test_iter_remove_multi_index_inner_loop.<locals>.<lambda>r   )r   rM   r   r   r   rQ   itviewsremove_multi_indexr	   r   rf  r   rL   enable_external_loopr  )r0   r   beforeafterr   r   r   'test_iter_remove_multi_index_inner_loopf  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 )Nr:   r   r<   r;   r>   r   r   r_   rC  r?   r   rX      rG      )	r   rM   r   r   r   listrI   r   rf  )r   r0   rd   r   r   r   r   test_iter_iterindex  s6   $"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   q0t|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   qmdd }t|g ddgdd| d}t|jd t||| dD ]}||_t|j| t||||d |d   qd S )Nr:   r   r  r'   r<   r;   r>   r_   rY   rB  r@   rC  r   r   c                 S   r  r  r   rB   r   r   r   rE     r  z'test_iter_iterrange.<locals>.<listcomp>)r  ry   )r;   r   )r:   r:   )r   r>  )r  r   c                 S   r  r  r   rB   r   r   r   rE     r  r   rG   r   r   )rZ   r&   r   c                 S   r  r  r   rB   r   r   r   rE     r  c                 S   r  r  r   rB   r   r   r   rE     r  c                 S   s*   t jg dd}| D ]	}t ||f}q	|S )Nr   r'   )r*   r   concatenate)r   valrD   r   r   r   	get_array  s   z&test_iter_iterrange.<locals>.get_array)rB  r   r   )r   rM   r\   r   r   r   )r   r0   a_fortr   rr  r   r   r   test_iter_iterrange  sB   &&
 r  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 ];}g }t	|ddgg dgdd|d}|j
st|d j|k | |d   |  |j
rktt||jdd qUqQd S )Nr   r)  r'   r>   r;   r<   r   r    )A   r   rG   r  r  x   r:   )rG   r>   r;   r:   r   r   r     r   r   )r@   r   r   rX   r   )rZ   r%   r   r   rY   )r   r*   r   rM   rN   r+   r   r   r(   r   r   r   r   r/   r   r   r  r\   )arraysr0   r   r  r   r   r   r   test_iter_buffering  s:   

"
r  c                  C   s   t ddddj  } t| dgg dgddd	d
}d}| |js4||d< |d7 }|  |jr%W d    n1 s>w   Y  t	| j
ddt d d S )Nr   r>   r;   r<   r   r!   r   r   r   rX   r  )r%   rZ   r   r   rG   rY   )r*   r   rM   rN   r+   r   r   r   r   r   r\   rg  r   r   r   test_iter_write_buffering  s"   r  c                  C   s   t d} t jddd}t| |gg d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 |3 t|d d d|d< t|dd ddg tdd |D t
ttddgd  W d    d S 1 sw   Y  d S )Nr   rG   r    r'   )r   re  r   r|  r!   r#   r$   c                 S   r   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     s    c                 S   s   | dd S )Nr   r>   r   r   r   r   r   r   	  s    c                 S   s   d| d< d S r   r   r   r   r   r   assign_iter  s   z6test_iter_buffering_delayed_alloc.<locals>.assign_iterrm   r   r>   c                 S   s$   g | ]}|d  d |d d gqS )r   r   rG   r   rB   r   r   r   rE     s   $ z5test_iter_buffering_delayed_alloc.<locals>.<listcomp>)r*   r   r   r   has_delayed_bufallocr	   r   rf  r   r   r  ziprI   )r0   r   r   r  r   r   r   !test_iter_buffering_delayed_alloc  s,   

*"r  c                  C   s   t jddd} t| ddgg dgdt dgd	d
}| |D ]
}|d  d9  < qW d    n1 s4w   Y  t| dt jddd  d S )Nr   r    r'   r   r   r  r   r   r;   r%   r&   r   .r>   )r*   r   r   r(   r   r0   r   vr   r   r   test_iter_buffered_cast_simple  s   

r  c               	   C   sd  t jddd  } t| ddgg dgdt d gd	d
}| |D ]
}|d  d9  < q%W d    n1 s:w   Y  t| dt jddd  t Z}|t j	 t jddd  } t| ddgg dgdt d gd	d
}| |D ]
}|d  d9  < qzW d    n1 sw   Y  t| dt jddd  W d    d S 1 sw   Y  d S )Nr   r    r'   r   r   r  r   r   r;   r  .r>   r#   r(  )
r*   r   r+   r   r   r(   r   r   filterComplexWarning)r0   r   r  supr   r   r   #test_iter_buffered_cast_byteswapped'  s:   

"r  c                  C   sx  t jddd  } | d7 } t| ddgg dgdt d	gd
d}| |D ]
}|d  d9  < q'W d    n1 s<w   Y  t| dt jddd d  t jddd} | d7 } t| ddgg dgdt d	 gd
d}| |D ]
}|d  d9  < qtW d    n1 sw   Y  t| dt jddd d  t jdt jd  } | d7 } t| ddgg dgdt d	gd
d}| |D ]
}|d  d9  < qW d    n1 sw   Y  t| dt jdt jd d  t jdt jd  } t| ddgg dgdt dgdd}| |D ]}|d  d9  < qW d    n	1 s(w   Y  t| dt jdt jd  d S )Nr   r(  r'   r'  r   r   r  r   r)  r;   r  .r>   y              @r    r   )	r*   r   r+   r   r   r(   r   clongdouble
longdoubler  r   r   r   +test_iter_buffered_cast_byteswapped_complexE  sn   






r  c                     s|  g d} 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 |  g d} t jddd ddg dg dgdf d< ddg dg dgdf d< ddg dg d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rDt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 g d#} t j	d$d%g| d t
t fd&d' g d#}g d(}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r0   r    r   r&  )r   r(  r   r  r  r;   r    r'         ?r   r  r@   r#   r$   c                 S      g | ]}t |qS r   r*   r   rB   r   r   r   rE         z;test_iter_buffered_cast_structured_type.<locals>.<listcomp>r   r0   r   r   r>   r  rG   r   rp   r  )r  r  r  )r   r   r   r  r  r  r  c                 S   s   g | ]}|  qS r   )r/   rB   r   r   r   rE     r  r  )      @r   r  c                 S   r  r  r   r  r   r   r   rE     r  r:   r   r  r  r  )r  r   test)r   r   r   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   r  r<   r:   r   c                 S   r  r   r  r  r   r   r   rE     r  )r*   r   r   r   r(   r   r
   r,   r-   r   r	   r   )sdtr   r  r  rD   sdt1sdt2r   r@  r   'test_iter_buffered_cast_structured_typew  s~   r  c               	   C   s   g d} ddg}t jddg| d}dD ]1}t jdd	gd
d}tt t||fddg||gdd|gd W d    n1 s?w   Y  qd S )Nr  )r   r  )r0   r   r  r  r'   )r!   r@   r   rG   r>   zi,ir   r  r#   zf,fr$   )r*   r   pytestraisesr   r   )r  r  r0   intent
simple_arrr   r   r   <test_iter_buffered_cast_structured_type_failure_with_cleanup  s   r  c               	   C   s   t t tjtjdddfdgddgd W d    n1 s!w   Y  tjtjdddfdgd	gddgd
} t t+ |  t| }d|d< W d    n1 sTw   Y  W d    d S W d    d S 1 slw   Y  d S )Nr0   S1r'   r   r#   r   )r&   r%   rd   rG   r   )r&   op_flagsr%   rd   .)r  r  r   r*   r   r   rF  )r4   bufr   r   r   test_buffered_cast_error_paths  s    

"r  zPyPy seems to not hit this.c                  C   s4   t d} tjtjd| gtjdd}d|v sJ 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STDOUT)coderY  r   r   r   )test_buffered_cast_error_paths_unraisable  s
   
	r  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 q4dg} dg}t jd| d}t d|d d d ddf< t|ddgdgd
|d}|3 t|d jt | d}|D ]}t	t 
|d |k |d d  d7  < |d7 }q}W d    n1 sw   Y  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}|- t|d jt | d}|D ]}t|d | |d  d7  < |d7 }qW d    n	1 sw   Y  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 }qgd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< 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 }q7d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  t|d dd  g 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  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 ]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"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 ]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 }qd S )#Nr  )r0   r   r;   r>   r>   r   r'   r   r0   r   r  r@   r#   r$   r   )r0   r  rx   )r0   r  r  r!   r>   rG   )r0   r  rn   )rG   r;   r>   r>   )r0   r    rn   )r0   r    r  H   r;   )r0   r   r   )r0   r    ro   r   )r0   r   ro   )r0   r    r   r}   )r   r   r   r   )r0   r    rw  )r0   r   )r>   rG   )r0   r    )r;   r>   )r0   r   r   )r*   r   r   r   r   r(   r  r  rI   r   r   rM   r   )r  r  r0   r   rD   countr   r   r    test_iter_buffered_cast_subarray  s<  
"
.....r  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g d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>   r;   rG   r}   r   r   r!   r   rX   rY   r@   r   r   r|  r<   )r*   r   rM   r	   r   r   r  r   r   r    test_iter_buffering_badwriteback  s8   





r  c                  C   s   t jg d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g d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)abcr0   abcdr'   S4r   r@   S2r)   S6r   s   abcU4U2U6r  )	r*   r   bytes_r   r(   r	   r   r   unicode_rq   r   r   r   test_iter_buffering_string  s    r  c                  C   s2   t d} t| g ddd}t|d j| j d S )N   )r   	growinnerr   r:   r   r   )r*   r   r   r   r   rq   r   r   r   test_iter_buffering_growinner  s
   

r  c               
      s  t ddd  g d} ddg}ddgdd	ggt jg} fd
d}| D ]\}}}t j| d g|| ||d}|* d|jd d< |  ||_|D ]\}}	|	|	t j
7 }	qN|jd }
W d    n1 sjw   Y  tddD ]H}t j|d g|| |||d}|* d|jd d< |  ||_|D ]\}}||	t j
7 }q|jd }W d    n1 sw   Y  t||
 qtq(d S )Ni        )r   re  r   r|  r  )r@   )r!   r   r   )r   rG   r?   r;  c                  3   sp    t ddD ]/} t | dD ]'}D ]"}|  j | j  jf}tjj d|}dD ]}|||fV  q*qqqd S )Nir   )r;   r;   r;   rv   )rI   rQ  r*   libstride_tricks
as_strided)xsysr   r   rV  skipr0   op_axes_listr   r   
get_params  s   z3test_iter_buffered_reduce_reuse.<locals>.get_params)r   rd   r  r&   r   r?   .   )r   rd   r  r   r&   )r*   r   floatr(   r   r/   r   rf  r   rR  int_rI   r   )rd   r  r&   r  rV  r   r  nditer2a2_inb2_incomp_resbufsizenditer1a1_inb1_inrY  r   r  r   test_iter_buffered_reduce_reuse  sF   


	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>   r;   r<   r   rG   r}   r@   r   )r*   r   rM   r   r	   r   )r0   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|g dg d	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|g dg dg dg dg d S )Nr}   r>   r;   r   rG   c                       g | ]}t  qS r   r  rC   _rG  r   r   rE   $	  r  z-TestIterNested.test_basic.<locals>.<listcomp>r   r   r   r   r   r   r   c                    r  r   r  r  r  r   r   rE   (	  r  r<   r:   r   r   r   r   r   r   c                    r  r   r  r  r  r   r   rE   ,	  r  r   r>   r<   rG   r;   r:   r   r   r   r   r   r   r   rM   r*   nested_itersr   selfr0   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|g dg d	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|g dg dg dg dg tj|dgddggdd\}  fdd|D }t|g dg d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|g dg dg dg dg d S )Nr}   r>   r;   r   rG   c                    r  r   r  r  r  r   r   rE   5	  r  z/TestIterNested.test_reorder.<locals>.<listcomp>r   r  c                    r  r   r  r  r  r   r   rE   9	  r  r<   r:   r   r   r   r   r   r   c                    r  r   r  r  r  r   r   rE   =	  r  r   r  r  r  rX   rY   c                    r  r   r  r  r  r   r   rE   B	  r  r   )r   r   r   r   r   r   c                    r  r   r  r  r  r   r   rE   F	  r  c                    r  r   r  r  r  r   r   rE   J	  r  r  r  r   r  r   test_reorder/	  s&   .".&zTestIterNested.test_reorderc              	      s  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|g d	g d
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|g dg dg dg dg tj|dgddggdd\}  fdd|D }t|g dg d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|g d g d!g d"g d#g d S )$Nr}   r>   r;   r?   r   rG   c                    r  r   r  r  r  r   r   rE   S	  r  z1TestIterNested.test_flip_axes.<locals>.<listcomp>r   r  c                    r  r   r  r  r  r   r   rE   W	  r  r<   r:   r   r   r   r   r   r   c                    r  r   r  r  r  r   r   rE   [	  r  r   r  r  r  rX   rY   c                    r  r   r  r  r  r   r   rE   `	  r  )r   r   r   r   r   r   r   c                    r  r   r  r  r  r   r   rE   d	  r  c                    r  r   r  r  r  r   r   rE   h	  r  )r   r   r   )r   r   r   )r:   r;   rG   )r<   r>   r   r  r  r   r  r   test_flip_axesM	  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>   rG   r;   r   c                    r  r   r  r  r  r   r   rE   q	  r  z1TestIterNested.test_broadcast.<locals>.<listcomp>c                    r  r   r  r  r  r   r   rE   u	  r  r  )r  r0   r   r   r  r   r  r   test_broadcastk	  s   28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|g dg dg d }t ddddd}tj|dgdggddgdd
d\} |B  0 t d jtd
 |D ]} D ]
}|d  d7  < qoqkt|g dg dg W d    n1 sw   Y  W d    n1 sw   Y  t|g dg d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  < qqt|g dg dg |     t|g dg dg d S )Nr   r  r'   r>   r;   r   rG   r@   r/   r   )r  r&   c                    r  r   r  r  r  r   r   rE   	  r  z2TestIterNested.test_dtype_copy.<locals>.<listcomp>r   )r;   r<   r:   r    r!   r"   r   )r  r%   r&   .r  r  )r   rM   r*   r  r   r(   close)r  r0   r   r  rD   r8  r   r  r   test_dtype_copyx	  sR   

 
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.q*t|g dg dg d S Nr   r    r'   r>   r;   r   rG   r   r!   r   r   )rd   r  r%   r&   .r  r  r   rM   r*   r  r   r(   r  r0   r   rG  rD   r8  r   r   r   test_dtype_buffered	  s   
z"TestIterNested.test_dtype_bufferedc                    s"  t dddd}t |g g dg\}  fdd|D }t|g dg t |g d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  qpqlt|g dg dg dg dg d S )Nr}   r>   r;   )rG   r   r>   c                    r  r   r  r  r  r   r   rE   	  r  z*TestIterNested.test_0d.<locals>.<listcomp>r   c                    r  r   r  r  r  r   r   rE   	  r  r   rG   r<   r:   r   r   r   r   r   r   c                 S   rA   r   r   )rC   zr   r   r   rE   	  rF   r   r  r  r  )r*   r   rM   r  r   r   )r  r0   r   r  krD   r8  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\}}|7 |% t|d jtd |D ]}|D ]
}|d  d7  < q4q0W d    n1 sJw   Y  W d    n1 sYw   Y  t|g dg dg d S r  r  r  r   r   r   %test_iter_nested_iters_dtype_buffered	  s$   
 z4TestIterNested.test_iter_nested_iters_dtype_bufferedN)rr  rs  rt  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?   r5  r>   r;   r   rG   )r*   r   r	   r   r   rM   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}|2 d|jd	 d
< |D ]\}}|d
  |7  < q%t|jd	 jd t|jd	 t |  W d    n1 sPw   Y  t ddd} t| d gddgdgddggdd	gddggd}|M d|jd	 d
< t|d	 jd t|d	 j	d |D ]\}}t
t|D ]}||  || 7  < qqt|jd	 jd t|jd	 t |  W d    n1 sw   Y  t d} t| d gddgdgddggd g dgd}t| d gg ddgddggd g dgdd}|r |V |jd	 d |jd	 d |  |D ]}|d	 d
  |d 7  < q|D ]}|d	 d
  |d 7  < q*t|jd	 |jd	  t|jd	  | j W d    n1 s[w   Y  W d    d S W d    d S 1 stw   Y  d S )Nr   r|  r@   r!   r   r   r?   r5  rG   .r>   r;   r   r   rm   )r>   r;   r:   )r   r?   rG   )r|  r   r   re  r   )r   r   )r*   r   r   r   r   r   sumrM   rQ   r   rI   rJ   r   fillrf  r   )r0   r   rD   r8  rG  it1r7   r   r   r   test_iter_reduction	  s`   

	

Tr  c            
      C   sP  t d} t jddd  }t| |gddgdgdd	ggd
gdggd}|, t|d jt d t|d j|jk |D ]\}}|d  |7  < q?W d    n1 sVw   Y  t|t 	|  t d
dd} t jd
d
gdd  }t| |gg ddgdd	ggd
dgd
dggd}|2 t|d jd t|d jd |D ]\}}tt|D ]}||  || 7  < qqW d    n1 sw   Y  t|t j	| dd t dd }t j|d gg ddgddggdd
gddggdd}| |jd d
 |  t|d
 g d W d    n	1 sw   Y  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g ddgdgg}| |D ]
\} }| d qrW d    n	1 sw   Y  t|dd d |	dd d  t|d d d d d S ) Nr   g        r   r'   r|  r   r@   r!   r   r   r?   r5  rG   .r>   r;   r|  r   r   rp   rm   )axis)re  r|  r   r   r   rw  r   )rG   r>   rG   r>   )r   r  r   r<   r   r:   r  r  )r*   r   r   r   r+   r   r   r(   r   r  rM   rQ   r   rI   rJ   r   r  rf  r   r.  	transposer   r/   )
r0   r   r   rD   r8  rG  r  r4   y_basey_base_copyr   r   r   test_iter_buffering_reduction
  st   



0

r   c                  C   s   t d} t d}t j| |gg ddgdggdd}| dd	 |D }W d    n1 s/w   Y  t|g d
 tt|| j d S )N)r>   r   )rG   r   r  r@   r!   r:   )rd   r  r   c                 S   s   g | ]	\}}|j d  qS rm   r  r7  r   r   r   rE   e
  s    zDtest_iter_buffering_reduction_reuse_reduce_loops.<locals>.<listcomp>)r:   r>   r:   r>   )r*   r   r   r   r  r   )r0   r   r4   bufsizesr   r   r   0test_iter_buffering_reduction_reuse_reduce_loopsY
  s   


r"  c               	   C   s  t d} t d}t g dg dg}t g d}t jg ddd}t jg ddd}t jg d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g d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   rp   TTF)FTFr   u1r'   r   r    r!   writemaskedr@   	arraymask)r!   r&  r%  r|  r   r   rO  )r*   r   r   r	   r   r   r   )r0   r   rK  m2m3mbad1mbad2r   r   r   test_iter_writemasked_badinputi
  s   


r+  c                 C   s"   z| j  W dS  ty   Y dS w )NTF)r  r   )iteratorr   r   r   _is_buffered
  s   r-  r0   rp   r   r'   )&  rq  r>   )r<   i8  |   r;   )r   r;   )r.  r  r:   r?   c                 C   s  | j }|d d }tj|td}g d| |d< t| |gg ddgdd	gg}| |D ]\}}d
|d< q,W d    n1 s?w   Y  t| tg d| | t| |gdgddgdd	gg}d}| |D ]\}}d|d< t|| rxd}qhW d    n1 sw   Y  |st| tg d| | nt| tg d| | d| d< tj| |gdgddgdd	ggdd gdd}| |D ]\}}d|d< qW d    n1 sw   Y  t| tg d| | d S )Nr?   r;   r'   r#  .r!   r%  r@   r&  rG   r   r   Tr  Fr  )r  r  rG   r&  r#   rO  )r;   r;   r  )rQ   r*   emptyboolr   r   broadcast_tomay_share_memory)r0   rQ   repsmskr4   rD   rK  is_bufferedr   r   r   test_iter_writemasked
  s\   

r7  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	r7t
|}|D ]
\}}d|f|d< q9~~~t	rWt
|| t |ksWJ t| |  ||   | | t d|f| jk ssJ ~ t	rt
||ksJ d S d S )Ni'  z>i,Or   r>   )r   r   r  r!   r%  r@   r&  z<i,O?r)   r;   .)r*   r   rR  r/   randomrandintr1  r   objectr
   r,   r-   count_nonzeror   r   r(   r   )rV  originalmaskr4   	singletonr  r  mask_bufr   r   r   test_iter_writemasked_decref
  s0   
"rA  c                  C   4   t t d} g d}|D ]	}ttt| | qd S )Nr>   )r  rQ   r   r  r  r.   has_multi_index	has_indexr   r   nopr   r   r*   r   r   r	   AttributeErrordelattrr4   attrsr   r   r   )test_iter_non_writable_attribute_deletion  s
   rL  c                  C   rB  )Nr>   )r   r   r   r   rF  rI  r   r   r   %test_iter_writable_attribute_deletion  s
   rM  c                  C   sL   t t d} z| d= | dd= W d S  ty   Y d S  ty%   tw )Nr;   rG   r>   )r*   r   r   r   rS  r   r4   r   r   r   test_iter_element_deletion&  s   rO  c                  C   sB  t jg d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g dgd fd dgd
gd dgd} | D ]\}}|d |d< |d |d< qFt| jd ddgddgdd	gg t jdg dd} | D ]\}}}|| |d< || |d< || |d< || |d< qst| jd ddgddgg d S )N)rG   r;   r>  )r  ro   r)   rG   r   r>   r<         r|  )r?   r   )r&   rd   r   )r   r>   N)NN)r  rw  ru   rv   rw   rx   r   r}   r>  r:   )r*   r   r   r   )r4   r0   r   r   r   r   r    test_iter_allocated_array_dtypes0  s&   "
" rR  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 d    n1 sw   Y  g d}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>   r;   r   r@   r   r   r   r:   r5  rG   r   r   r  r  r    r'   r   r  r#   r$   r0   r   r   r  )r   r   r   rF  r   r   r	   StopIterationrf  r*   r   rJ   r   r   )r   r  r0   r  r   r   r   test_0d_iterK  s<   
rT  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   w  s    z*test_object_iter_cleanup.<locals>.<lambda>r   r?   c                      s0   t d d d d df  d d d d df S )Nr?   )r*   addr   rV  oarrr   r   r   }  s   0 c                   @   s   e Zd Zdd ZdS )z#test_object_iter_cleanup.<locals>.Tc                 S   s   t d)N	Ambiguous)r   )r  r   r   r   __bool__  s   z,test_object_iter_cleanup.<locals>.T.__bool__N)rr  rs  rt  rY  r   r   r   r   rN     s    rN   r  r'   )r	   r   r*   r   BUFSIZErM   rR  r   r;  
logical_orreducer   )rN   r   rV  r   test_object_iter_cleanupq  s   

r]  c                  C   sf   t d dgddgd dgddggd d d } tt t |  W d    d S 1 s,w   Y  d S )NrG   r?   r>   )r*   r   r  r  r   r  )rV  r   r   r   test_object_iter_cleanup_reduce  s   ,"r^  rV  )@  r<   r>   r_   )r(   rZ   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'   ry   )r  r(   outr<   )r*   r   intpr  r;  r   full)rV  r`  rY  r   r   r   %test_object_iter_cleanup_large_reduce  s   rc  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 )Nr  rG   rm   r   rc   )r*   iinfora  maxr  r  r  r   r	   r   r   )r   rV  r   r   r   test_iter_too_large  s   
rf  c               
   C   sL  d} d}| | t t jjk r|d7 }| | t t jjk sddg| }g }t|D ]}|d d  }d||d < |t | q*t|}tdD ]}tt	 t
|d| W d    n1 saw   Y  qIt
|dd t|D ]1}tdD ]*}t
||d | tt	 t
||d d | W d    n1 sw   Y  qxqrd S )Nr  rG   r>   r   r?   r   )r*   rd  ra  re  rI   r   r0  rL   r	   r   _multiarray_teststest_nditer_too_large)	base_sizenumshape_templater  r   rQ   moder   r   r   #test_iter_too_large_with_multiindex  s6   

rm  c               	   C   s0  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 d    n1 s=w   Y  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1 srw   Y  W n   Y 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 d    n1 sw   Y  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 d    n	1 sw   Y  W d    n	1 sw   Y  t|g ddggdt dgd}|, | |D ]}d|d< q1W d    n	1 sDw   Y  ttt|d W d    n	1 s[w   Y  t|g ddggdt dgd}~| |D ]}d|d< qvW d    n	1 sw   Y  |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   rd   r   r   r	   getattrwritebackifcopy	__enter__RuntimeError)r0   r   r4   rD   enterr   r   r   test_writebacks  s   





rt  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*   rU  r   r   r  )	rD   r8  r`  addopr4   r0   r   r   r   r   r   r   	add_close  s   
z(test_close_equivalent.<locals>.add_closec                 S   sx   t j}t | ||gg dgdgddgg}| |D ]\}}}||||d q|jd W  d    S 1 s5w   Y  d S ru  )r*   rU  r   r   )rD   r8  r`  rv  r4   r0   r   r   r   r   r   add_context  s   $z*test_close_equivalent.<locals>.add_contextr:   r   r   r>   r   )rI   r   )rw  rx  r  r   r   r   test_close_equivalent
  s   


ry  c                  C   sD   t t d} tt| d |   ttt|  ttt	| d d S )Nr;   r   r   )
r*   r   r   r   rF  r  r	   rS  r   ro  rN  r   r   r   test_close_raises$  s
   rz  c                  C   s"   t t d} tt| jd d S )Nr;   rG   )r*   r   r   r	   r   r  rN  r   r   r   test_close_parameters+  s   r{  c               	   C   s   t jddd} |   }t )}|t t j|g ddggdt dgd}~t	|j
dks1J W d    d S 1 s<w   Y  d S )	Nr   r    r'   r!   r"   r   r$   rG   )r*   r   r   r+   r   recordRuntimeWarningr   r(   rJ   log)r0   r   r  r4   r   r   r   test_warn_noclose/  s   
"r  rD  win32z!Errors with Python 3.9 on Windowsr^  	buf_dtype))r   r  r  r   )i,OzO,OzO,ir  stepsr  c                 C   s   d}t tt jd || }t j|t |gg ddd}t|D ]}t| q#~t j|t |gg d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  rN  r#   r&   rd   r%   N)
r*   rb  intrZ  rR  r   r(   rI   rF  r   )r^  r  r  r  rV  r4   stepr   r   r   test_partial_iteration_cleanup;  s   

r  r  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g ddd}t	
t t| t| W d    n1 sUw   Y  |  t	
t |  |  W d    n1 svw   Y  |t|ksJ d S )	Nrn  r  r  r   f0rN  r#   r  )r*   rb  r  rZ  rR  r,   r-   r   r(   r  r  r   rF  rf  r   )r^  r  r  rV  r  r4   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sMJ t||D ]\}}||  s_J qRd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'   r   Nr>   g      @r  r  r#   r|  r   r@   r!   )r&   r%   rd   r  )strip
splitlinesr*   r   int64rM   r   debug_print
readouterrr`  rJ   r  
startswith)capfdrW  arr1arr2r4   rY  res_lineexpected_liner   r   r   test_debug_print~  s    
5*7


r  )r,   r  r  r  numpyr*   numpy.core._multiarray_testscorerg  r   r   r   r   numpy.testingr   r   r   r	   r
   r   r   r   r   r   markskipifr8   rV   r]   r`   rb   rf   rk   rr   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*  r4  r?  rA  rH  parametrize	typecodesfilterwarningsr[  rc  rd  rh  ri  rk  rl  rn  rp  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  slowr  r  r  r  r  r   r"  r+  r-  r   r7  rA  rL  rM  rO  rR  rT  r]  r^  r   r;  r/   rc  rf  rm  rt  ry  rz  r{  r  version_infoplatformr  r  r  r   r   r   r   <module>   s   $
*

,%%$FKM>>,&'-@Z&-
! 
*")2J
 ("	
3 6;@B, .
	;

&$&*
"A
"