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Zd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlmZ d dlmZ d dlZd dlZd dlmZ d dlZd dlZd dlm  mZ d dlmZ d dlmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4 d d	l5m6Z6 d d
l7m8Z8m7Z7 e9ddfddZ:G dd dZ;G dd dZ<G dd dZ=G dd dZ>G dd dZ?G dd dZ@G dd dZAG dd dZBG dd dZCG d d! d!ZDG d"d# d#ZEG d$d% d%ZFG d&d' d'ZGG d(d) d)ZHG d*d+ d+ZIG d,d- d-ZJG d.d/ d/ZKG d0d1 d1ZLG d2d3 d3ZMG d4d5 d5ZNG d6d7 d7ZOG d8d9 d9ZPG d:d; d;ZQG d<d= d=ZRG d>d? d?ZSG d@dA dAZTG dBdC dCZUG dDdE dEZVG dFdG dGZWG dHdI dIZXG dJdK dKZYG dLdM dMZZG dNdO dOZ[G dPdQ dQZ\G dRdS dSZ]G dTdU dUZ^G dVdW dWZ_dXdY Z`dZd[ Zad\d] ZbG d^d_ d_ZcG d`da daZdG dbdc dcZeG ddde deZfG dfdg dgefZgG dhdi diefZhdjdk Zidldm ZjG dndo doZkG dpdq dqZlG drds dsZmd dtdudvdwdxZnejojpdye9egdzd{gd|G d}d~ d~ZqG dd dZrG dd dZsG dd dZtd dlumvZv G dd dZwG dd dZxG dd deyZzG dd dZ{G dd dZ|dd Z}dd Z~dd Zdd Zdd Zdd Zdd ZG dd dZG dd dZG dd dZG dd dZe(sG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZd dlm(Z( G dd dZG dd dZG dd dZG dd dZdd Zdd Zejopddgejejfejejfgejopddtejej ejgejopddtejej ejgejopdej ddǄ ZddɄ Zdd˄ ZG dd̈́ d̓Zddτ ZG ddф dуZejopdg dӢddՄ Zddׄ Zddل ZdS )    N)contextmanager)pickle)Decimal)rational)assert_assert_raisesassert_warnsassert_equalassert_almost_equalassert_array_equalassert_raises_regexassert_array_almost_equalassert_allcloseIS_PYPY	IS_PYSTONHAS_REFCOUNTassert_array_less	runstringtemppathsuppress_warningsbreak_cycles)requires_memory_no_tracing)CommaDecimalPointLocale)repack_fields)	timedeltadatetimeCc           	      C   s   t |}|t tkr|durtdt j| ||dS |du r#|j}t| ds+| f} tt	j
| |j }t |d|  d t j}|jd d }|| }|dkrU|| }|d|  dkra||7 }|||| d  dd	 }t j| |||d
}|d |S )z
    Allocate a new ndarray with aligned memory.

    The ndarray is guaranteed *not* aligned to twice the requested alignment.
    Eg, if align=4, guarantees it is not aligned to 8. If align=None uses
    dtype.alignment.Nz$object array alignment not supporteddtypeorder__len__      datar   r    )npr   object
ValueErrorzeros	alignmenthasattr	functoolsreduceoperatormulitemsizeemptyuint8__array_interface__ndarrayfill)	shaper   r    alignsizebufptroffsetr$    r=   G/tmp/pip-target-vg8gfxp4/lib/python/numpy/core/tests/test_multiarray.py_aligned_zeros(   s*   


r?   c                   @   s   e Z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ej	g dg ddd Zdd Zdd Zdd ZdS )	TestFlagsc                 C   s   t d| _d S N
   )r'   arangeaselfr=   r=   r>   setup_methodM      zTestFlags.setup_methodc                 C   sN   t  }d| jj_tttd| tttd| d| jj_d| jd< d| jd< d S )NFzself.a[0] = 3zself.a[0:1].itemset(3)T   r   )localsrD   flags	writeabler   r)   r   )rF   mydictr=   r=   r>   test_writeableP   s   


zTestFlags.test_writeablec                 C   s   t d}G dd dt j}||}|d }d|j_d|j_d|j_t d}G dd d}t |}|d }d|j_d|j_d|j_d|j_tt d|j_W d    d S 1 s\w   Y  d S )	NrB   c                   @      e Zd ZdS )z3TestFlags.test_writeable_any_base.<locals>.subclassN__name__
__module____qualname__r=   r=   r=   r>   subclass^       rT   .FTc                   @      e Zd Zdd ZdS )z8TestFlags.test_writeable_any_base.<locals>.frominterfacec                 S   s   || _ |j| _d S N)arrr4   rF   rX   r=   r=   r>   __init__k   s   zATestFlags.test_writeable_any_base.<locals>.frominterface.__init__N)rQ   rR   rS   rZ   r=   r=   r=   r>   frominterfacej       r[   )	r'   rC   r5   viewrK   rL   asarrayr   r)   )rF   rX   rT   view1view2r[   r=   r=   r>   test_writeable_any_baseY   s$   





"z!TestFlags.test_writeable_any_basec                 C   sZ   d}t |d}tt|jdd t ddg}t jj||}|d }tt|jdd d S )Nd                                                                                                       BTwritevalsu1res3S4rg   )	r'   
frombufferr   r)   setflagsr   corerecords
fromstringrF   r$   rg   typesvaluesr=   r=   r>   test_writeable_from_readonlyz   s   z&TestFlags.test_writeable_from_readonlyc                 C   s   t d}t|d}t|jj |jdd t|jjdu  |jdd t|jj tddg}tjj	
||}|d }t|jj |jdd t|jjdu  |jdd t|jj d S )	Nrb   rc   Frd   Trf   ri   rg   )	bytearrayr'   rl   r   rK   rL   rm   r   rn   ro   rp   rq   r=   r=   r>   test_writeable_from_buffer   s   z$TestFlags.test_writeable_from_bufferzPyPy always copiesreasonc                 C   sT   dd l }td}t|jD ]}||||}t|jj	 tt
|jt qd S )Nr     )r   r'   rC   rangeHIGHEST_PROTOCOLloadsdumpsr   rK   rL   
isinstancebasebytes)rF   r   rD   vrg   r=   r=   r>   test_writeable_pickle   s   
zTestFlags.test_writeable_picklec              
   C   s~  ddl m} |d}|jjrJ |jjsJ |d }d|j_|jjr$J d|j_|jjs.J d|j_|d}|jjr<J |jjrBJ ||fD ]v}|d }d|j_d|j_|jjrZJ tt d|j_W d    n1 smw   Y  t & t	dt
 tt
 d|j_W d    n1 sw   Y  W d    n1 sw   Y  tt
 d|j_W d    n1 sw   Y  qFd S )Nr   )get_c_wrapping_arrayT.Ferror)numpy.core._multiarray_testsr   rK   owndatarL   r   r)   warningscatch_warningssimplefilterDeprecationWarningr   )rF   r   arr_writeabler]   arr_readonlyrX   r=   r=   r>   test_writeable_from_c_data   sB   






z$TestFlags.test_writeable_from_c_datac                 C   sn   t d}d|j_tjdd}td d|d< d|d< tt|dk W d    d S 1 s0w   Y  d S )NrB   Trecordalwaysr#   r"   )	r'   rC   rK   _warn_on_writer   r   filterwarningsr   len)rF   rD   wr=   r=   r>   test_warnonwrite   s   

"zTestFlags.test_warnonwrite)flag
flag_valuerL   ))rL   TT)r   TF)rL   FFc                    sn   t d t j|| G  fddd}t j|usJ  jd d |us)J t | jj|u s5J d S )NrB   c                          e Zd Z jZdS )z5TestFlags.test_readonly_flag_protocols.<locals>.MyArrN)rQ   rR   rS   __array_struct__r=   rD   r=   r>   MyArr       
r   r$   r#   )	r'   rC   setattrrK   
memoryviewreadonlyr4   r^   rL   )rF   r   r   rL   r   r=   r   r>   test_readonly_flag_protocols   s   
z&TestFlags.test_readonly_flag_protocolsc                 C   s   t | jjjd t | jjd d t | jjjd t | jjjd t | jjjd t | jjjd t | jjjd t | jjj	d t | jjj
d t | jjjd t | jjd d t | jjd d d S )NTr   FXWRITEBACKIFCOPY)r	   rD   rK   carrayfarraybehavedfncforcr   rL   alignedwritebackifcopyrE   r=   r=   r>   test_otherflags   s   zTestFlags.test_otherflagsc                 C   sD   t jdt dd}t|jj t jdt dd}t|jj d S )N   z|S4r   rI   r'   r*   r   r   rK   r   rF   rD   r=   r=   r>   test_string_align   s   zTestFlags.test_string_alignc                 C   s(   t jdt ddgd}t|jj d S )Nr   rD   i4br   r   r   r   r=   r=   r>   test_void_align   s   zTestFlags.test_void_alignN)rQ   rR   rS   rG   rN   ra   rt   rv   pytestmarkskipifr   r   r   r   parametrizer   r   r   r   r=   r=   r=   r>   r@   L   s"    	!
(

r@   c                   @   rV   )TestHashc              	   C   s`  t jt jdft jt jdft jt jdft jt jdffD ]\}}}t	d|D ]}t
t|d|  td|  d||f d t
t|d|d  td|d  d	||d f d t
t|d| d td| d d
||f d t|d d}t
t|d|d  td|d  d	||d f d t
t|d| d td| d d
||f d q$qd S )N          @   r#   r"   z
%r: -2**%derr_msgz	%r: 2**%dz%r: 2**%d - 1)r'   int8r3   int16uint16int32uint32int64uint64rz   r	   hashmax)rF   stutsir=   r=   r>   test_int  s0   
""
""
zTestHash.test_intN)rQ   rR   rS   r   r=   r=   r=   r>   r          r   c                   @   T   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestAttributesc                 C   s@   t d| _t ddd| _t jdt jdddd| _d S )	NrB      r   rI   <   r   r"      )r'   rC   onereshapetwofloat64threerE   r=   r=   r>   rG     s    zTestAttributes.setup_methodc                 C   s  t | jjd t | jjd t | jjd d| j_t | jjd d| j_t | jj| jjf | jj}t | jjd| |f | jj}t | jjd| d| |f t | jjd t | jjd	 t | jjd
 | jj}t | jjd t | jj	d|  t | jj| jj
j t | jjtd d S )NrB   r   rI   )r"   rI   r   )rB      r"   rI      r   r#   r"   r   r   )r	   r   r7   r   r   stridesr1   ndimr9   nbytesr   r   r'   rC   rF   numr=   r=   r>   test_attributes  s&   zTestAttributes.test_attributesc                 C   s   t | jjttj t | jjttj t | jjjd t | jjjd t| jjj	d dv  t | jjj	d d t | jjj	d d d S )Nldr   <>r#   r   f)
r	   r   r   r'   int_r   float_charr   strrE   r=   r=   r>   test_dtypeattr0  s   zTestAttributes.test_dtypeattrc                 C   s   t d}tt|t  d S Nr   )r'   r   r   r~   int)rF   	numpy_intr=   r=   r>   test_int_subclassing9  s   
z#TestAttributes.test_int_subclassingc              	      s   | j   fdd}t|dddtg d tt|ddd tt|ddd tt|dd	d
 t|dd	dtd	gd  tt|ddtddg |ddd d S )Nc                    s    t j|  t| j | j dS )N)bufferr   r<   r   )r'   r5   r   r1   )r9   r<   r   xr=   r>   
make_arrayD  s   
z3TestAttributes.test_stridesattr.<locals>.make_arrayr   r%   r   r   r"   r#   r"   r   r   r#   r   r"   r   rI   rB   )r   r	   r'   arrayr   r)   )rF   r   r=   r   r>   test_stridesattrA  s   zTestAttributes.test_stridesattrc                    s6  | j   fdd}t|dddtg d t|dddtg d	 tt|ddd
 tt|ddd tt|ddd tjj	t
ddd dd }tt| d j  jf tjjj	tj
dtjdd ddd tt| d d d d  d d d }d|_d|d d d _td}d|_tt||d  d S )Nc              
      sT   zt j| gt | j d}W n ty } zt|d }~ww | j  |_}|S )N)r   r   r<   )r'   r5   r   r1   	ExceptionRuntimeErrorr   )r9   r<   r   rer   r=   r>   r   U  s   
z7TestAttributes.test_set_stridesattr.<locals>.make_arrayr   r%   r      r   r#   )r   r   rI   r   r   r   	   r   r"   r   rB   rB   r   r   c                 S   
   || _ d S rW   r   )rX   r   r=   r=   r>   set_stridesg     
z8TestAttributes.test_set_stridesattr.<locals>.set_stridesrB   r   r   r%   )r7   r   r   r=   )r   r	   r'   r   r   r)   r   libstride_tricks
as_stridedrC   r1   r   r   	TypeError)rF   r   r  rD   arr_0dr=   r   r>   test_set_stridesattrR  s(   	
z#TestAttributes.test_set_stridesattrc                 C   sB   dD ]}t d|}t d|}|d d|d< t|| qd S )Nz?bhilqpBHILQPfdgFDGOr   r"   r#   r#   .)r'   r2   r6   r	   )rF   tr   yr=   r=   r>   	test_filly  s   
zTestAttributes.test_fillc                 C   sD   t jdt jd}t jdt jd}d}||d< || t|| d S )Nr  r   l    .)r'   r2   r   r6   r   )rF   r   r  valuer=   r=   r>   test_fill_max_uint64  s   
z#TestAttributes.test_fill_max_uint64c                 C   s~   t jddgdd}||d  t|d d |d d  t jdd	d
gd}|d t|d ddg t|d ddg d S )N)r           )r#         ?i4,f8r   r   f1r#   r"   rD   f8r   )      @r   rD   r  r   r   )r'   r   r6   r	   r*   r   rF   r   r=   r=   r>   test_fill_struct_array  s   
z%TestAttributes.test_fill_struct_arrayN)rQ   rR   rS   rG   r   r   r   r   r  r  r  r  r=   r=   r=   r>   r     s    	'r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dejejejejejgdd Ze	j
dejejejejejgdd ZdS )TestArrayConstructionc                 C   s  t d}t ||g}t|t d t d}t d}t ||g}t|| d|d< t ||d g}t|| t d}t ||gg}t|t d t d}t ||g||gg}t|t d t d}t ||g}t|t d t d	}t j||d g|d gtd
}tt|d t|d ||d g t|d |d  t jdtd
}d|d< d|dddf< t g dg dg}t|| t ddgddgddgg}t||j d S )Nr   )r"   r   r"   r#   )r#   r"   r   )r"   r"   r   )r   r   )r"   r   r   )r   r   r   r   Fr   r"   TTFFFTT)r'   onesr   r	   r(   r   boolT)rF   r   r   tgtr=   r=   r>   
test_array  s>   









z TestArrayConstruction.test_arrayc                 C   s   t ttj d S rW   )r   r
  r'   r   rE   r=   r=   r>   test_array_empty  rH   z&TestArrayConstruction.test_array_emptyc                 C   s   t t djdksJ d S )Nr   r   )r'   r   r   r7   rE   r=   r=   r>   test_0d_array_shape  s   z)TestArrayConstruction.test_0d_array_shapec                 C   sr   t g d}t j|dd}d|d< t|g d t j|ddd}d	|d< t|g d
 d|d< t|g d d S )Nr#   r"   r   Fcopyr   r#   r#   r   r   Fr*  r    r   )r#   r   r   r   r"   )r#   r   r   r'   r   r   rF   r   r   r=   r=   r>   test_array_copy_false  s   z+TestArrayConstruction.test_array_copy_falsec                 C   s   t g dg dg}t j|dd}d|d< d|d< t|g dg dg t|g d	g dg t j|dd
d}d|d< d|d< t|g dg dg t|g dg dg d S )Nr(  Tr)  r   r   r#   r  )r#   r"   r2  r+  r,  r-  rI   r   )r#   r   r   )r#   rI   r   r.  r/  r=   r=   r>   test_array_copy_true  s   z*TestArrayConstruction.test_array_copy_truec                 C   s   t dd d d }tt |jj tt |jj tt |jj tt |jj t dd d dd d df }tt |jj tt |jj d S )NrB   r"   r   )r'   r   r   ascontiguousarrayrK   c_contiguousf_contiguousasfortranarrayrF   r   r=   r=   r>   test_array_cont  s   z%TestArrayConstruction.test_array_contfuncc              
   C   s   t t |ddd W d    n1 sw   Y  t t |  W d    n1 s.w   Y  t t |ddddddd	d
 W d    d S 1 sOw   Y  d S )Nr   z	bad dtyper   r#   r"   r   rI   r   r   r   )r   raisesr
  rF   r:  r=   r=   r>   test_bad_arguments_error  s   "z.TestArrayConstruction.test_bad_arguments_errorc                 C   s&   |t ju r|dd d S |dd d S )Nr   )r(   r   r'   r   r<  r=   r=   r>   test_array_as_keyword  s   
	z+TestArrayConstruction.test_array_as_keywordN)rQ   rR   rS   r$  r%  r'  r0  r3  r9  r   r   r   r'   r   r^   
asanyarrayr4  r7  r=  r?  r=   r=   r=   r>   r    s2    '

r  c                   @   <   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestAssignmentc              	   C   s   t ddd}t d|d< t|g dg dg t ddd|d< t|g dg dg t dd d d	 ddd|d< t|g d
g dg dd }tt||t dddd d S )Nr   r"   r   .r   r#   r"   r#   r   r   r   r#   r#   r#   r%   rI   r   r   r"   r#   r   c                 S   s   || d< d S )N.r=   rD   r   r=   r=   r>   assign     z;TestAssignment.test_assignment_broadcasting.<locals>.assign   )r'   rC   r   r	   r   r)   rF   rD   rI  r=   r=   r>   test_assignment_broadcasting  s   "
"z+TestAssignment.test_assignment_broadcastingc                    sH   G dd d}t d  fdd}tttf||  tt|dg d S )Nc                   @   rO   )z0TestAssignment.test_assignment_errors.<locals>.CNrP   r=   r=   r=   r>   r      rU   r   r#   c                    s   |  d< d S r   r=   r   r   r=   r>   rI  $  rJ  z5TestAssignment.test_assignment_errors.<locals>.assign)r'   r*   r   AttributeErrorr
  r)   )rF   r   rI  r=   r   r>   test_assignment_errors  s
   
z%TestAssignment.test_assignment_errorsc                    s   ddl m  t fdd}tdg}td}|d ||d< W d    n1 s,w   Y  t|d d ttdg d S )	Nr   set_string_functionc              
   3   s>     fdddd zdV  W ddd dS ddd w )z% replace ndarray.__str__ temporarily c                        S rW   r=   r   r   r=   r>   <lambda>1      zLTestAssignment.test_unicode_assignment.<locals>.inject_str.<locals>.<lambda>F)reprNr=   rT  rQ  rT  r>   
inject_str.  s
   z:TestAssignment.test_unicode_assignment.<locals>.inject_strtestdonebadu   åäö)numpy.core.numericrR  r   r'   r   r	   )rF   rX  a1da0dr=   rQ  r>   test_unicode_assignment*  s   


z&TestAssignment.test_unicode_assignmentc                 C   sv   t dg}t dg}G dd d}tttj|dg  tttj|dg  tttj|d|  tttj|d|  d S )NrZ  s   donec                   @      e Zd Zdd Zdd ZdS )z?TestAssignment.test_stringlike_empty_list.<locals>.bad_sequencec                 S      d S rW   r=   rE   r=   r=   r>   __getitem__F  rV  zKTestAssignment.test_stringlike_empty_list.<locals>.bad_sequence.__getitem__c                 S      t rW   r   rE   r=   r=   r>   r!   G  rV  zGTestAssignment.test_stringlike_empty_list.<locals>.bad_sequence.__len__NrQ   rR   rS   rb  r!   r=   r=   r=   r>   bad_sequenceE  s    rf  r   )r'   r   r   r)   r/   setitem)rF   ur   rf  r=   r=   r>   test_stringlike_empty_list@  s   z)TestAssignment.test_stringlike_empty_listc                 C   s   t jt jfD ]g}t t dd|}t t dd|}t |g}t|d | ||d< t|d | ||d< t|d | |d |d< t|d | |d |d< t|d | t t |g}t|d | qd S )Nr   r#   r%   r   ..)r'   
longdoublelongcomplex	nextafterastyper   r	   )rF   r   tinybtinyatiny1drX   r=   r=   r>   test_longdouble_assignmentO  s    z)TestAssignment.test_longdouble_assignmentc                 C   s8   t jddd}t jdgdd|d d < t|d d d S )Nr#   S20r   z1.12345678901234567890r  r   s   1.1234567890123457)r'   r*   r   r	   r   r=   r=   r>   test_cast_to_stringo  s   z"TestAssignment.test_cast_to_stringN)	rQ   rR   rS   rM  rP  r_  ri  rr  rt  r=   r=   r=   r>   rB    s     rB  c                   @   $   e Zd Zdd Zdd Zdd ZdS )TestDtypedescrc                 C   s<   t d}t|t t j t d}t|t t j d S )Nr   r  )r'   r   r	   r   r   )rF   d1d2r=   r=   r>   test_constructiony  s   

z TestDtypedescr.test_constructionc                 C   s8   t tdtdk t tdgtdgk d S )N<i4>i4rD   rz  rD   r{  )r   r'   r   rE   r=   r=   r>   test_byteorders  s    zTestDtypedescr.test_byteordersc                 C   sB   ddg}t d|f}tt|d t d|}tt|d d S )N)rD   <i2r   r  r   z+(numpy.int32, [('a', '<i2'), ('b', '<i2')])r   zFarray([0, 0, 0, 0], dtype=(numpy.int32, [('a', '<i2'), ('b', '<i2')])))r'   r   r	   r   r*   rW  )rF   fieldsdt_intarr_intr=   r=   r>   test_structured_non_void  s   z'TestDtypedescr.test_structured_non_voidN)rQ   rR   rS   ry  r~  r  r=   r=   r=   r>   rv  x  s    rv  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d Zdd Zdd Zdd ZdS )TestZeroRankc                 C   s   t dt dtf| _d S )Nr   r   )r'   r   r(   r   rE   r=   r=   r>   rG        zTestZeroRank.setup_methodc                 C   sN   | j \}}t|d d t|d d t|d j|u  t|d j|u  d S )N.r   r   )r   r	   r   r   rF   rD   r   r=   r=   r>   test_ellipsis_subscript  s
   
z$TestZeroRank.test_ellipsis_subscriptc                 C   sV   | j \}}t|d d t|d d tt|d |jju  tt|d tu  d S )Nr=   r   r   )r   r	   r   typer   r   r  r=   r=   r>   test_empty_subscript  s
   
z!TestZeroRank.test_empty_subscriptc                 C   sN   | j \}}ttdd | ttdd | ttdd | ttdd | d S )Nc                 S      | d S r   r=   r   r=   r=   r>   rU        z5TestZeroRank.test_invalid_subscript.<locals>.<lambda>c                 S   r  r   r=   r   r=   r=   r>   rU    r  c                 S      | t g t S rW   r'   r   r   r   r=   r=   r>   rU        c                 S   r  rW   r  r   r=   r=   r>   rU    r  r   r   
IndexErrorr  r=   r=   r>   test_invalid_subscript  s
   
z#TestZeroRank.test_invalid_subscriptc                 C   6   | j \}}d|d< t|d d|d< t| d d S )N*   . r   r	   itemr  r=   r=   r>   "test_ellipsis_subscript_assignment  
   

z/TestZeroRank.test_ellipsis_subscript_assignmentc                 C   r  )Nr  r=   r  r  r  r=   r=   r>   test_empty_subscript_assignment  r  z,TestZeroRank.test_empty_subscript_assignmentc                 C   sF   | j \}}dd }tt||dd tt||dd tt||dd d S )Nc                 S      || |< d S rW   r=   r   r   r   r=   r=   r>   rI    rJ  z>TestZeroRank.test_invalid_subscript_assignment.<locals>.assignr   r  r  r=   )r   r   r  r)   )rF   rD   r   rI  r=   r=   r>   !test_invalid_subscript_assignment  s
   
z.TestZeroRank.test_invalid_subscript_assignmentc                 C   s   | j \}}t|tj jd t|dtjf jd t|tjdf jd t|dtjf jd t|tjdtjf jd t|dtjtjf jd t|tjtjdf jd t|tjfd  jd d S Nr#   .r#   r#   rB   )
r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r   r	   r'   newaxisr7   r  r=   r=   r>   test_newaxis  s   
zTestZeroRank.test_newaxisc                 C   s@   | j \}}dd }tt||tjdf tt||tjfd  d S )Nc                 S      | |  d S rW   r=   r   r   r=   r=   r>   	subscript  rJ  z4TestZeroRank.test_invalid_newaxis.<locals>.subscriptr   2   r   r   r  r'   r  )rF   rD   r   r  r=   r=   r>   test_invalid_newaxis  s   
z!TestZeroRank.test_invalid_newaxisc                 C   s   t d}d|d< t|d d t jd|d}d|d< t|d d tt t jddd W d    n1 s9w   Y  tt t jddd W d    d S 1 sVw   Y  d S )Nr=   rI   )r   r   r"   r  )r'   r5   r	   r   r;  r)   rF   r   r  r=   r=   r>   test_constructor  s   
"zTestZeroRank.test_constructorc                 C   s"   t d}ttt j|dg| d S )Nr"   r#   )r'   r   r   r)   addr  r=   r=   r>   test_output     
zTestZeroRank.test_outputc                 C   s   t d}|j}|j}t|t d tt|t ju  t|jj	d t|jj
d t|t d tt|t ju  t|jj	d t|jj
d d S )N              ?r   Tr#   )r'   r   realimagr	   r   r  r5   rK   
contiguousr6  )rF   r   xrxir=   r=   r>   test_real_imag  s   
zTestZeroRank.test_real_imagN)rQ   rR   rS   rG   r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    
	r  c                   @   L   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 )TestScalarIndexingc                 C   s   t ddgd | _d S Nr   r#   )r'   r   r   rE   r=   r=   r>   rG        zTestScalarIndexing.setup_methodc                 C   s(   | j }t|d d t|d jd d S )N.r   r=   r   r	   r7   r   r=   r=   r>   r       z*TestScalarIndexing.test_ellipsis_subscriptc                 C   s(   | j }t|d d t|d jd d S )Nr=   r   r  r   r=   r=   r>   r    r  z'TestScalarIndexing.test_empty_subscriptc                 C   s*   | j }ttdd | ttdd | d S )Nc                 S   r  r   r=   r   r=   r=   r>   rU    r  z;TestScalarIndexing.test_invalid_subscript.<locals>.<lambda>c                 S   r  rW   r  r   r=   r=   r>   rU    r  r  r   r=   r=   r>   r    s   z)TestScalarIndexing.test_invalid_subscriptc                 C   s"   | j }dd }tt||dd d S )Nc                 S   r  rW   r=   r  r=   r=   r>   rI    rJ  zDTestScalarIndexing.test_invalid_subscript_assignment.<locals>.assignr   r  )r   r   r
  rL  r=   r=   r>   r  	  s   z4TestScalarIndexing.test_invalid_subscript_assignmentc                 C   s   | j }t|tj jd t|dtjf jd t|tjdf jd t|dtjf jd t|tjdtjf jd t|dtjtjf jd t|tjtjdf jd t|tjfd  jd d S r  r  r   r=   r=   r>   r    s   zTestScalarIndexing.test_newaxisc                 C   s<   | j }dd }tt||tjdf tt||tjfd  d S )Nc                 S   r  rW   r=   r  r=   r=   r>   r    rJ  z:TestScalarIndexing.test_invalid_newaxis.<locals>.subscriptr   r  r  )rF   rD   r  r=   r=   r>   r    s   z'TestScalarIndexing.test_invalid_newaxisc                 C   s@  t d}|dd  |d d< t|g d t d}|d d |dd < t|g d t d}|d d d |d d < t|g d t ddd	}|d d d d df |d d dd d f< t|g d
g dg t ddd	}|d d d d df |d d dd d df< t|g dg dg t d}|dd  |d d	< t|g d t d}|d d	 |dd < t|g d t d}|dd  |dd d< t|g d t d}|dd d |dd < t|g d t d}|d dd |dd d< t|g d t d}|dd d |d dd< t|g d d S )Nr   r#   r%   r#   r"   r   r   )r   r   r#   r"   r   r"   r#   r   r   r"   r   rF  rG  r   r   rI   rC  rI   )r"   r   r   r   r   )r   r#   r   r#   r"   )r   r   r"   r   r   )r   r#   r"   r#   r   )r'   rC   r	   r   r   r=   r=   r>   test_overlapping_assignment%  sB   


(*





z.TestScalarIndexing.test_overlapping_assignmentN)rQ   rR   rS   rG   r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    	r  c                   @   s  e Zd ZdZdd Zdd Zdd Zej	dej
ed	d
ej
ddd
gdd Zdd Zejjeejjdkdddd Zdd Zejj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 Z&d:S );TestCreationz'
    Test the np.array constructor
    c                 C   s"   G dd d}t ttj|  d S )Nc                   @   s   e Zd ZdddZdS )z+TestCreation.test_from_attribute.<locals>.xNc                 S   ra  rW   r=   )rF   r   r=   r=   r>   	__array__\     z5TestCreation.test_from_attribute.<locals>.x.__array__rW   rQ   rR   rS   r  r=   r=   r=   r>   r   [  s    r   )r   r)   r'   r   r  r=   r=   r>   test_from_attributeZ  s   z TestCreation.test_from_attributec                 C   s\   t jd t jd  }ddg}t jddgtd}|D ]}d| }tt j||d||d qd S )N
AllIntegerFloat123{   r   zString conversion for %sr   )r'   	typecodesr   r   r	   )rF   rr   nstrresultr  msgr=   r=   r>   test_from_stringa  s   zTestCreation.test_from_stringc                 C   s"  t jg dd}|jdksJ t jddgdd}|jdksJ tt t jddgdd W d    n1 s7w   Y  tt t jddgdd W d    n1 sUw   Y  t jddgddd}|jdksmJ tt t jddgddd W d    d S 1 sw   Y  d S )NVr   V8s   1234V4s   12345O)r'   r   r   r   r;  r
  rn  rY   r=   r=   r>   	test_voidi  s   "zTestCreation.test_voididxrX   idr=   scalarc                 C   s   t jt jddd| t jddd| gdd}t|t jddgdd tt  t jt jddd| t jddd| gdd W d    d S 1 sKw   Y  d S )	Nr#   i,ir   r"   r  r  r"   r"   zi,i,i)r'   r   r   r   r;  r
  )rF   r  rX   r=   r=   r>   test_structured_void_promotion}  s   """z+TestCreation.test_structured_void_promotionc                 C   sp   t djdkrd}nt djdkrd}nd S ttt j|t jd ttt j|t jd ttt j|t jd d S )Nintp)  r      )   4s	j r  r   )	r'   iinfor   r   r)   r2   r   r*   r   )rF   r7   r=   r=   r>   test_too_big_error  s   zTestCreation.test_too_big_errorr   z%malloc may not fail on 32 bit systemsrw   c                 C   sN   t tjjj tjttjjtj	d W d    d S 1 s w   Y  d S Nr   )
r   r'   rn   _exceptions_ArrayMemoryErrorr2   r  r  r   r3   rE   r=   r=   r>   test_malloc_fails  s   "zTestCreation.test_malloc_failsc                 C   s   t jd t jd  }|D ]h}t jd|d}tt |d t| d t|   t jddd}tt |d t| d t|   t jddd}tt |d t| d t|   t jdd	d}tt |d qd S )
Nr  AllFloat   r   r   r"   z(2,4)i44i4z(2,4)i4, (2,4)i4)r'   r  r*   r	   count_nonzerosumr   anyrF   rr   dtr   r=   r=   r>   
test_zeros  s"   zTestCreation.test_zerosc                 C   s@   t jd t jd  }|D ]}t jd|d}t|   ~qd S )Nr  r  )i  r   )r'   r  r*   r   r  r  r=   r=   r>   test_zeros_big  s   zTestCreation.test_zeros_bigc                 C   s2   t jdtd}t|dgd  tt |d d S )Nr  r   r   r  )r'   r*   r(   r   r	   r  r8  r=   r=   r>   test_zeros_obj  s   zTestCreation.test_zeros_objc                 C   s(   t jddtdfgd}t|d d d S )NrB   kr"   r   r   )r'   r*   r(   r   r8  r=   r=   r>   test_zeros_obj_obj     zTestCreation.test_zeros_obj_objc                 C   s  t jd D ] }|dkrqt jd|d}tt || tt |j|j qt jddd}tt || tt |j|j t jddd}tt || tt |j|j t jddd}tt || tt |j|j t jddd}tt || tt |j|j t jdd	d}tt || tt |j|j t jdd
d}tt || tt |j|j t jddd}tt || tt |j|j d S )NAllr  r   r   r   S5U5rz  r{  z<M8[s]z>M8[s]zf4,f4)r'   r  r*   r   
zeros_liker	   r   )rF   cr   r=   r=   r>   test_zeros_like_like_zeros  s6   z'TestCreation.test_zeros_like_like_zerosc                 C   s,   t dddD ]}tj|dd}t| qd S )NrI   d   Ur   )rz   r'   r2   r   )rF   r   r   r=   r=   r>   test_empty_unicode  s   
zTestCreation.test_empty_unicodec                 C   s   t tddd gjt t tddd dgjt t tdd dgjt t tdd gd jt t tddgddggjt t tddgddggjt t tg dg dg dgjt d S )	Nr   r"   P   r   r#   r  rE  )r#   r  r  )r	   r'   r   r   r(   complexrE   r=   r=   r>   test_sequence_non_homogeneous  s   (z*TestCreation.test_sequence_non_homogeneousc                 C   sb   G dd d}G dd d}t | g}t|jdk t|jt tk ttt j| g dS )a)  Should not segfault.

        Class Fail breaks the sequence protocol for new style classes, i.e.,
        those derived from object. Class Map is a mapping type indicated by
        raising a ValueError. At some point we may raise a warning instead
        of an error in the Fail case.

        c                   @   r`  )z5TestCreation.test_non_sequence_sequence.<locals>.Failc                 S      dS Nr#   r=   rE   r=   r=   r>   r!     r  z=TestCreation.test_non_sequence_sequence.<locals>.Fail.__len__c                 S      t  rW   r)   rF   indexr=   r=   r>   rb       zATestCreation.test_non_sequence_sequence.<locals>.Fail.__getitem__NrQ   rR   rS   r!   rb  r=   r=   r=   r>   Fail      r
  c                   @   r`  )z4TestCreation.test_non_sequence_sequence.<locals>.Mapc                 S   r  r  r=   rE   r=   r=   r>   r!     r  z<TestCreation.test_non_sequence_sequence.<locals>.Map.__len__c                 S   r  rW   )KeyErrorr  r=   r=   r>   rb    r  z@TestCreation.test_non_sequence_sequence.<locals>.Map.__getitem__Nr	  r=   r=   r=   r>   Map  r  r  r  N)r'   r   r   r7   r   r(   r   r)   )rF   r
  r  rD   r=   r=   r>   test_non_sequence_sequence  s   	z'TestCreation.test_non_sequence_sequencec                 C   s:   G dd d}t | | | g}t|jt t d S )Nc                   @   r`  )z4TestCreation.test_no_len_object_type.<locals>.Point2c                 S   ra  rW   r=   rE   r=   r=   r>   rZ     r  z=TestCreation.test_no_len_object_type.<locals>.Point2.__init__c                 S   s   |dv r|S t  )Nr1  r  rF   indr=   r=   r>   rb     s   z@TestCreation.test_no_len_object_type.<locals>.Point2.__getitem__N)rQ   rR   rS   rZ   rb  r=   r=   r=   r>   Point2  r  r  )r'   r   r	   r   r(   )rF   r  r   r=   r=   r>   test_no_len_object_type  s   	z$TestCreation.test_no_len_object_typec                 C   s,   G dd d}t | }tt|d d S )Nc                   @   r`  )z/TestCreation.test_false_len_sequence.<locals>.Cc                 S   rc  rW   r  )rF   r   r=   r=   r>   rb  +  r  z;TestCreation.test_false_len_sequence.<locals>.C.__getitem__c                 S   r  )Nr  r=   rE   r=   r=   r>   r!   -  r  z7TestCreation.test_false_len_sequence.<locals>.C.__len__Nre  r=   r=   r=   r>   r   *  s    r   r   )r'   r   r	   r   rF   r   rD   r=   r=   r>   test_false_len_sequence(  s   z$TestCreation.test_false_len_sequencec                 C   sh   G dd d}t d}tt | |d d < W d    n1 s"w   Y  t | t| k d S )Nc                   @   ru  )z/TestCreation.test_false_len_iterable.<locals>.Cc                 S   rc  rW   r   r  r=   r=   r>   rb  6  r  z;TestCreation.test_false_len_iterable.<locals>.C.__getitem__c                 S   s   t dS Nr=   )iterrE   r=   r=   r>   __iter__8     z8TestCreation.test_false_len_iterable.<locals>.C.__iter__c                 S   r  )Nr"   r=   rE   r=   r=   r>   r!   :  r  z7TestCreation.test_false_len_iterable.<locals>.C.__len__N)rQ   rR   rS   rb  r  r!   r=   r=   r=   r>   r   5      r   r"   )r'   r2   r   r)   r   listr  r=   r=   r>   test_false_len_iterable3  s   

z$TestCreation.test_false_len_iterablec                 C   s2   G dd d}|g d}t tt|d d S )Nc                   @   ru  )z0TestCreation.test_failed_len_sequence.<locals>.Ac                 S   r  rW   )_data)rF   r$   r=   r=   r>   rZ   F  r  z9TestCreation.test_failed_len_sequence.<locals>.A.__init__c                 S   s   t | | j| S rW   )r  r  )rF   r  r=   r=   r>   rb  H     z<TestCreation.test_failed_len_sequence.<locals>.A.__getitem__c                 S   
   t | jS rW   )r   r  rE   r=   r=   r>   r!   J  r  z8TestCreation.test_failed_len_sequence.<locals>.A.__len__N)rQ   rR   rS   rZ   rb  r!   r=   r=   r=   r>   AE  r  r!  r(  r   )r	   r   r'   r   )rF   r!  r   r=   r=   r>   test_failed_len_sequenceC  s   	z%TestCreation.test_failed_len_sequencec              	   C   sn   t d}t t jj}dD ]&}t |}|j}t j|d|| f|d tt	t j|d|| d f|d qd S )Nr  )r  rs  r   r   )r   r   r7   r   r#   )
r'   r*   r  r  r   r   r1   r5   r   r)   )rF   r:   	max_bytesr   r1   r=   r=   r>   test_array_too_bigQ  s   


zTestCreation.test_array_too_bigc                 C   sP   t tj t|}W d    n1 sw   Y  tj|td}t|| |S r  )r   r'   VisibleDeprecationWarningr   r(   r	   )rF   seqrD   r   r=   r=   r>   _ragged_creation`  s   
zTestCreation._ragged_creationc                 C   s   |  dgddg}t|jd t|jt |  ddgdg}t|jd t|jt |  dddgg}t|jd t|jt d S Nr#   r"   r   r&  r(  r	   r7   r   r(   r   r=   r=   r>   test_ragged_ndim_objecth  s   z$TestCreation.test_ragged_ndim_objectc                 C   s   |  ddgdgdgg}t|jd t|jt |  dgddgdgg}t|jd t|jt |  dgdgddgg}|jdksCJ |jtksJJ d S r)  r*  r   r=   r=   r>   test_ragged_shape_objectv  s   z%TestCreation.test_ragged_shape_objectc                 C   s   t d d g}t g d |d< |d< t |jdksJ t |gjdks)J t d d g}t g d|d< t g d|d< t |jdksLJ t |gjdksWJ d S )Nr(  r   r#   r  r#   r"   r#   r"   r   r   )r'   r   r7   )rF   outerouter_raggedr=   r=   r>   test_array_of_ragged_array  s   z'TestCreation.test_array_of_ragged_arrayc                 C   s@   t tdggg}t dtdg}t dgtdgg}d S r  )r'   r   r   r   r=   r=   r>   test_deep_nonragged_object  s   z'TestCreation.test_deep_nonragged_objectN)'rQ   rR   rS   __doc__r  r  r  r   r   r   paramEllipsisr  r  r   r'   r   r  r1   r  r  slowr  r  r  r  r  r  r  r  r  r  r"  r%  r(  r+  r,  r1  r2  r=   r=   r=   r>   r  V  sB    


"	r  c                	   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zejded d!gd"d#gd$d%ed d!gd"d#gd&d'gd(gejd)d*d+gd,d- Zd.d/ Zd0S )1TestStructuredc                 C   s   t jddgd}t ddddd|d< t|jd |d d	d
dd |jdd}t|d j	|d j	 t|jd j	|j d j	 d S )N)r   rI   )rD   r   r  r   r   r   rI   r"   rD   r#   r   r,  r&   )
r'   r*   rC   r   r   r"  	transposer*  r	   r7   r  r=   r=   r>   test_subarray_field_access  s    "z)TestStructured.test_subarray_field_accessc                 C   s  t jjg ddddgddggfg ddd	d	gd	d	ggfgd
dtfdgd}| }t||kddg t||kddg d|d _t||kddg t||kddg tdD ]#}|d	 j|d	 _d|d	 j|< t||kddg t||kddg qVtdD ](}tdD ]!}| }d|d	 j	||f< t||kddg t||kddg qq~t j
dgdggdgd}t j
g ddgd}t||kg dg dg t||kg dg dg t j
dgdggdgd}t j
g ddgd}t||kg dg dg t||kg dg dg t j
d	d	gfgddgfggdgd}t j
d	d	gfd	dgfddgfgdgd}t||kg dg dg t||kg dg dg t j
d	d	gfgddgfggdgdd}t j
d	d	gfd	dgfddgfgdgd}t||kg dg dg t||kg dg dg t jdddgd}t jdddgd}tt ||k W d    n	1 sw   Y  t jdd dgd}t jdddgd}tt ||k W d    d S 1 sw   Y  d S )!Nr(  rD   r#   r"   r   r   r   r   r   r   r   )rD   )f4r   )r  r8  r   TFr  rI   rB   r#  r  r  )r#  r#  r  r  r  )rD   r  r  )rD   r  r  )TFFr,  r   )rD   )r<  r-  r   i1)rD   )r<  r  )rD   )r<  r"   r#   )r'   recfromrecordsr(   r*  r	   r   rz   rD   r  r   r*   r   r;  r
  )rF   rD   r   r   jr   r  r=   r=   r>   test_subarray_comparison  s`   2
$(&(

$z'TestStructured.test_subarray_comparisonc                 C   s   t jddgddgd}t jddgddgd}t||kd	d
g t||kd
d	g t jddgddgd}t jddgddgd}t||kd	d
g t||kd
d	g t jddgddgd}t jddgddgd}t||kd	d
g t||kd
d	g d S )NrI   r  rB   r#   rD   >i8r   <f8r   )rI   +   rD   z<i8r   >f8FT)rD   rM  r   rG  )rD   z10>f8)r   z5<f8)rD   z10<i8)r   z5>i8r'   r   r	   r  r=   r=   r>   *test_structured_comparisons_with_promotion  s   z9TestStructured.test_structured_comparisons_with_promotionc                 C   s   t jddgd}t d}tt ||k W d    n1 s!w   Y  t jddgd}t |j|js8J tt ||k W d    n1 sLw   Y  t jddd}t jddd}tt ||k W d    d S 1 stw   Y  d S )Nr   )rD   r>  r   ))titlerD   r>  V7r  )r'   r*   r   r;  r
  can_castr   r  r=   r=   r>   test_void_comparison_failures  s   



"z,TestStructured.test_void_comparison_failuresc                 C   s  t jdgdgd}tt j|jdgdd |dg}t||   t|d d |d d  t jd	d
gddgd}t jd	d
gddgd}tt j|j|jdd t||kddg tt j|j|jdd |j|jdd}t||kddg ddg}tt j|j|dd |j|dd}t|t jd	d
g|dkddg ddg}tt j|j|dd |j|dd}t|t jd	d
g|dkddg ddg}tt j|j|dd  t	t
|j|dd ddg}tt j|j|dd  t	t
|j|dd ddg}tt j|j|dd  t	t
|j|dd tt j|j|jdd  t	t
|j|jdd dD ]"}dg}tt j|j||d  g d}tt j|j||d  q)d S )Nr  r|  r   r}  unsafecastingrD   r   rD  rE  rH  rL  equivTrK  safe)r   z>f4	same_kindrF  )r   <f4)rD   >i2r  no)r]  rY  rX  rZ  )r}  rH  )r  r   )r'   r   r   rS  r   rn  r	   byteswapnewbyteorderr   r
  )rF   rD   r   r  r  rW  r=   r=   r>   test_casting	  sR   zTestStructured.test_castingc                 C   s>   t jg g dd}|ddg  t dddg}|dd	g  d S )
N)rD   r   r   r   )r  r  r   rD   r   r   )r!  r   )rc   z|Orc   r!  )r'   r   r*   )rF   rD   dat2r=   r=   r>   test_objviewC  s   zTestStructured.test_objviewc                 C   sv   t dg}t dd|fg}t d|}t jddd|d d	< t jd|d|d d< t|d d	 t jddd d S )
N)elemr   rI   )fieldr   rB   structr#   rB   r   r   r   rf  )r'   r   r*   r   r	   )rF   	struct_dtr  r   r=   r=   r>   test_setfieldL  s    zTestStructured.test_setfieldc                    sd   t jddgd}t d|d d< t|d d t d t jddgd  fdd	}tt| d S )
Nr#   )r   r  r   r   r   r   )r   r  rI   c                      s   t d d d< d S )Nr   r   r   r'   rC   r=   r  r=   r>   
testassign`     z7TestStructured.test_setfield_object.<locals>.testassign)r'   r*   rC   r	   r   r)   )rF   r   rl  r=   rk  r>   test_setfield_objectU  s   z#TestStructured.test_setfield_objectc                 C   sP  t dtfdg}t jd|d}t|d g d t|d jd g d|d< t|d g d t|d g d	 d
|d |d dk< t|d g d t|d g d	 d|d< t|d g d t|d g d	 t jd|d jd}t|jd t|d | tt jdddgdd jd tt jdddjd tt jdddd jd |d d}t|jd t|ddgddgg t|d d  j|j t	t
t|tt jd| t }t || |d t |}t|jd t|| tdd}t || t |}t|jd t|| W d    d S 1 s!w   Y  d S )NI)SS0r   r   rp  )    rr  rr  rr  r   )rD   r   r  r   r   r   r   r   hellor!  )rD   S0,S0)r   rh   rD   r   ru  zS0,u1f0r  rr  r   z.npy)suffix)r'   r   r   r*   r	   r1   r5   r2   r   r   evalrW  dictr   ioBytesIOsaveseekloadr   )rF   r  r   r  xxr   yytmpr=   r=   r>   test_zero_width_stringe  sT   




$z%TestStructured.test_zero_width_stringc                 C   s(   t jddd}|d }t|j|u  d S )Nr   zi4,f4r   r   )r'   r*   r   r   r  r=   r=   r>   test_base_attr  s   zTestStructured.test_base_attrc           	         s  dd t ddg}t d| t jdgddgd}t jdgddgd}t jdgddgd}t jd	gdgdt jdgd
dgd} dgdgdgd}t jddg|d}t || t || t || tt fdd t || d|d d < t t jddg|d t jdgg dd}|ddg |ddg< t|d  d t jdgddgd}|ddg |ddg< t|d  d d S )Nc                 S   s    |   }||d< ||dd < |S r  r)  )rX   r   r  r=   r=   r>   rl    s   z2TestStructured.test_assignment.<locals>.testassignfooi8barr  r"   r   r   )bazr  r  )r  r  )r  r  r  r  r   namesformatsoffsetsc                      s
    S rW   r=   r=   rX   rl  v4r=   r>   rU       
 z0TestStructured.test_assignment.<locals>.<lambda>r   )r#   r   r(  )r  r  )r  r<  r  r   r"   r#   r   r-  r   r   r   rD   r?  )	r'   r   r   r   r]   r	   r   r
  r  )	rF   r  v1v2v3v5r   ansrD   r=   r  r>   test_assignment  s2   zTestStructured.test_assignmentc                 C   sJ   t t tddd}|d W d    d S 1 sw   Y  d S )N   rI   r   )r   r)   r'   rC   r   itemsetrY   r=   r=   r>   test_scalar_assignment  s   
"z%TestStructured.test_scalar_assignmentc                 C   sJ   t jddd}t|ddg d |d ddg  t|d |d d  d S )Nr#   z(2)3S,(2)3Ur7   r   rv  r  r   r=   )r'   r2   r	   r  r=   r=   r>   test_structuredscalar_indexing  s   "z-TestStructured.test_structuredscalar_indexingc                    sX   t jdg dd tt fdd tt fdd tt fdd  dd	g  d S )
Nr   ))rH  r   r  r   r   r   r   c                      s    ddg S )NrD   r  r=   r=   r   r=   r>   rU        z7TestStructured.test_multiindex_titles.<locals>.<lambda>c                          ddg S )NrD   r=   r=   r   r=   r>   rU    r  c                      r  )Nr   r=   r=   r   r=   r>   rU    r  r   r  )r'   r*   r   r  r)   rE   r=   r   r>   test_multiindex_titles  s
   z%TestStructured.test_multiindex_titlesc                 C   s4  d}d}t jdg||gd}t jdg||gd}ttt j|| ttt j|j|j ttt j|j|j tt |j|ddg jt	|j
d tt |j|jd t||jj|j tt d	d
dgd tt d	ddgd tt d	dd
gd tt jd	dd
gddd ||d d < t dg}t dg}tt ||t dg tt ||t dg ttt j|t dg tt ddt ddg t d|fg}t d|fg}tt ||t dt dgfg t dgdgdgd}	t jd|	d}
tt |
|
gjt dg d S )NrK  rN  r-  r   rD   r   NTzf8,i8)rv  r  )r  r  )r  r  )rv  r  FrU  rV  )r  r   )r  r  )r  V3r  zi8,f4r  rv  r   r   r   r  r   )r   r   )r'   r   r   r
  concatenateresult_typer   promote_typesr	   r   r_  rS  rn  r   )rF   r!  rc   abbadt1dt2dt1nestdt2nestr  rD   r=   r=   r>   )test_structured_cast_promotion_fieldorder  sJ   "z8TestStructured.test_structured_cast_promotion_fieldorder
dtype_dictrD   r   r   r   r  )r  r  r1   r   rK  r  r8   TFc                 C   s|   t j||d}|dd  |dd  t j||d}t ||}|j|jks(J |j|jks0J t ||}||u s<J d S )Nr8   r1   r  )r'   r   popr  r1   r  )rF   r  r8   r   expectedresr=   r=   r>   test_structured_promotion_packs  s   z.TestStructured.test_structured_promotion_packsc                 C   s   t jdgdd}|d }|jjrJ t |j|u sJ t j||jdjd u s)J tt	|}|jjs7J t |jd u sAJ d S )Nr#   r  r   r   )
r'   r   rK   r   r^   r   r   r   r|   r}   )rF   rX   r  r=   r=   r>   test_structured_asarray_is_view  s   z.TestStructured.test_structured_asarray_is_viewN)rQ   rR   rS   r:  rC  rP  rT  r`  rd  ri  rn  r  r  r  r  r  r  r  r   r   r   rz  r  r  r=   r=   r=   r>   r7    s2    ::		8%/r7  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zejj	d	d
 Z
dd Zdd Zdd Zejjdddd Zejjdddd ZdS )TestBoolc                 C   sr   t d}t d}t||u  t d}t d}t||u  tt dgd |u  tt dd |u  d S )Nr   Fr#   Tr=   )r'   bool_r   r   )rF   a0b0a1b1r=   r=   r>   test_test_interning/  s   



zTestBool.test_test_interningc                 C   s   t jdtd}t| |j t|d d d  |d d d j t|d d d  |d d d j t jdtd}t| |j t|d d d  |d d d j t|d d d  |d d d j d S )Ne   r   r"   r   s   )r'   r   r!  r	   r  r9   rl   r8  r=   r=   r>   test_sum9  s   $$$(zTestBool.test_sumc                    s   dd t |D }t d| D ]K  fdd|D }tj|td}t|}tt|| |tj	}|d9 }tt|| |d9 }tt|| d||d	k< tt|| qd S )
Nc                 S   s   g | ]}d | qS r  r=   .0r   r=   r=   r>   
<listcomp>E      z0TestBool.check_count_nonzero.<locals>.<listcomp>r"   c                    s   g | ]} |@ d kqS r#  r=   r  r   r   r=   r>   r  G      r   r   r      r   )
rz   r'   r   r!  builtinsr  r	   r  r]   r3   )rF   powerlengthpowersr   rD   r  avr=   r  r>   check_count_nonzeroD  s   
zTestBool.check_count_nonzeroc                 C   s   |  dd d S )NrK     r  rE   r=   r=   r>   test_count_nonzeroS  s   zTestBool.test_count_nonzeroc                 C   s   |  dd d S )Nr  r  rE   r=   r=   r>   test_count_nonzero_allX  s   zTestBool.test_count_nonzero_allc                 C   s   t dD ]B}tjdtd|d d  }d|d |< tt|t|  tj	dtd|d d  }d|d |< tt|t|  qd S )Nr   )   r   r#   TF)
rz   r'   r*   r!  r	   r  r  r  tolistr   )rF   orD   r=   r=   r>   test_count_nonzero_unaligned^  s   z%TestBool.test_count_nonzero_unalignedc                 C   s  t dD ]9}td||f}tt|d tt|d d t|td tt|ttj t|d ttj	u  qt ddD ]>}dD ]9}t|||f}tt|d tt|d d t|td tt|ttj t|d ttj
u  qGqCd S )	Nr   rr  Fr=   r#   r   )   a   0    T)rz   r'   r   r	   r!  rn  r   r~   r5   False_True_)rF   r   nr   valr=   r=   r>   _test_cast_from_flexibleh  s"   z!TestBool._test_cast_from_flexiblec                 C      |  tj d S rW   )r  r'   voidrE   r=   r=   r>   test_cast_from_void|  rH   zTestBool.test_cast_from_voidzSee gh-9847rw   c                 C   r  rW   )r  r'   unicode_rE   r=   r=   r>   test_cast_from_unicode     zTestBool.test_cast_from_unicodec                 C   r  rW   )r  r'   bytes_rE   r=   r=   r>   test_cast_from_bytes  r  zTestBool.test_cast_from_bytesN)rQ   rR   rS   r  r  r  r  r   r   r6  r  r  r  r  xfailr  r  r=   r=   r=   r>   r  .  s    



r  c                   @   s   e Zd Zeef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ejjejdk dddd ZdS )TestZeroSizeFlexiblec                 C   sJ   t |}|t jkrt j| |dfdS t d|dfg}t j| |dd S )Nr   r   r   )r'   r   r  r*   r  r=   r=   r>   _zeros  s
   

zTestZeroSizeFlexible._zerosc                 C   sN   |  dt}t|jd |  dtj}t|jd |  dt}t|jd d S )NrB   r   )r  r   r	   r1   r'   r  r   rF   zsr=   r=   r>   test_create  s   z TestZeroSizeFlexible.test_createc           	      K   sf   t tjtfD ]*}| d|}t||}tt|}|D ]}|dd|i| ||fd|i| qqd S )NrB   kindr=   )r   r'   r  r   r  getattr)	rF   namekindskwargsr  r  sort_method	sort_funcr  r=   r=   r>   _test_sort_partition  s   

z)TestZeroSizeFlexible._test_sort_partitionc                 C      | j ddd d S )Nsortqhsr  r  rE   r=   r=   r>   	test_sort  r  zTestZeroSizeFlexible.test_sortc                 C   r  )Nargsortr  r  r  rE   r=   r=   r>   test_argsort  r  z!TestZeroSizeFlexible.test_argsortc                 C      | j ddgdd d S )N	partitionintroselectr"   r  kthr  rE   r=   r=   r>   test_partition  rm  z#TestZeroSizeFlexible.test_partitionc                 C   r  )Nargpartitionr  r"   r  r  rE   r=   r=   r>   test_argpartition  rm  z&TestZeroSizeFlexible.test_argpartitionc                 C   s6   t tjtfD ]}| d|}|d |d qd S )NrB   r  r   )r   r'   r  r   r  resizerF   r  r  r=   r=   r>   test_resize  s
   
z TestZeroSizeFlexible.test_resizec                 C   sP   t tjtfD ]}| d|}t||jt| t||dfjd qd S )NrB   r#   r#  )	r   r'   r  r   r  r	   r]   r   r7   r  r=   r=   r>   	test_view  s
   zTestZeroSizeFlexible.test_viewc                 C   s$   |  dt}t|t|  d S rA   )r  r   r	   r   r|   r}   r  r=   r=   r>   
test_dumps  s   zTestZeroSizeFlexible.test_dumpsc                 C   s^   t dtjd D ]$}ttjtfD ]}| d|}tj||d}t	|}t
|j|j qqd S )Nr"   r#   rB   protocol)rz   r   r{   r   r'   r  r   r  r}   r|   r	   r   )rF   protor  r  pzs2r=   r=   r>   test_pickle  s   
z TestZeroSizeFlexible.test_picklec                 C   s8   t g dd}t|}t|}|jdksJ dS )z]Checking if an empty array pickled and un-pickled will not cause a
        segmentation faulti?B r   N)r'   r   r   r   r}   r|   r9   )rF   rX   pk_dmppk_loadr=   r=   r>   test_pickle_empty  s   

z&TestZeroSizeFlexible.test_pickle_emptyrI   requires pickle protocol 5rw   c                 C   sR   t d}g }tj||jdd}tj||d}d|d< |d dks'J |d d S )NrB   rI   )buffer_callbackr	  buffersr%   r   )r'   rC   r   r}   appendr|   )rF   r   r  bytes_stringarray_from_bufferr=   r=   r>   test_pickle_with_buffercallback  s   

z4TestZeroSizeFlexible.test_pickle_with_buffercallbackN)rQ   rR   rS   staticmethodr   r  r  r  r  r  r   r  r  r  r  r  r  r   r   r   r   r{   r  r=   r=   r=   r>   r    s$    	

		r  c                   @   s*  e Zd Zg 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ejdejejejejejejejejgdd Zejdejejejejejejejejgdd Z ejdejejejgejdddgd d! Z!d"d# Z"ejdej#ej$gd$d% Z%d&d' Z&d(d) Z'ejdd*d+gd,d- Z(d.d/ Z)d0d1 Z*d2d3 Z+d4d5 Z,d6d7 Z-d8d9 Z.d:d; Z/ejdd<ejd=gd>d? Z0d@dA Z1dBdC Z2dDdE Z3dFdG Z4ejdHej5dIdJej6gejdKej5dIdJej6gejdKe5dIdJej6ggdLdM Z7dNdO Z8dPdQ Z9dRdS Z:dTdU Z;dVdW Z<dXdY Z=dZd[ Z>d\d] Z?d^d_ Z@ejdejAd` dadb ZBejdejAd` dcdd ZCdedf ZDdgdh ZEejdiejAdj dkdl ZFejdiejAdj dmdn ZGdodp ZHdqdr ZIdsdt ZJdudv ZKdwdx ZLdydz ZMejdiejAdj d{d| ZNd}d~ ZOejdejPejQfdd ZRejdejPejQfejdddd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd ZgdS )TestMethods)	quicksortheapsortstablec                 C   s  t g dg dg dg}t g dg dg dg}t dgdgdgg}dD ]8}t|j||dt j||d d df d d f |d	 tt j|||d||d d df d d f j|d	 q)t|j|d
d tt j||d
d t|jdd
d tt j|dd
d d S )NTFTFFFTTTFTr   Naxiswherer   r#  r$  )r'   r   r	   all)rF   rD   wh_fullwh_lower_axr=   r=   r>   test_all_where  s.   

$"zTestMethods.test_all_wherec                 C   s  t g dg dg dg}t g dg dg dg}t dgdgdgg}dD ]8}t|j||dt j||d d d	f d d f |d
 tt j|||d||d d d	f d d f j|d
 q)t|j|dd tt j||dd t|jddd tt j|ddd d S )Nr  r  r   )FTFFTr!  r"  r   r%  r&  )r'   r   r	   r  )rF   rD   r(  	wh_middler*  r=   r=   r>   test_any_where  s.   

$"zTestMethods.test_any_wherec                 C   s   g dg}t ddd}|jddgdd}t|| ddgd	d
gg}|jg ddd}t|| dgd	gg}t ddd}|jddgdd}t|| t ddd}|ddg}t|d d S N)rI   r   r   r   r   rB   r"   rI   r   r#   r%  r   r   r   )r   r#   r   r#   r   r'   rC   r   compressr	   rF   r#  rX   outr=   r=   r>   test_compress  s   



zTestMethods.test_compressc           
      C   sx  dt jdtd }dt jdtd }dt jdtd }dt jdtd }t g d}|||f}t|g d |||f}t|g dg dg |||f}t|g dg dg t d}tt|jt d	|g t d	}t jt dg d
|d}	||	u sJ t|d d t 	d}t jg d|d d |d d |d d g|dd dd}t|t g d d S )Nr"   r&  r   r   r   r   r   r#   r"   r"   r   r#   r   )rB   r   r   r2  r=   r   rI   rD  r   wrapr2  moderC  )
r'   r   r   r   chooser	   r   r
  r  rC   )
rF   r   r  x2y2r  r!  onedr2  retr=   r=   r>   test_choose(  s(   


<zTestMethods.test_choosec                 C   s   g d}g dg dg dg}t jt jt jt jt jt jt jt jfD ]H}t 	||}t 	||}|dv rBt
t|j t
t|jdd q!t|jddd	 t|jddt 	g d
| t|jddt 	g d| q!d S )N)r#   r"   rB      r   rI   r   r.  )rI   r   r   r   )rB   r   r   rI   )1r   r#   r%  r   i g  )r  $   T      r%   )   ib  iX  )r'   r   r   r   r   float32r   	complex64
complex128r   r   ArithmeticErrorprodr	   r   )rF   r  ba2ctyperD   a2r=   r=   r>   	test_prodF  s$   zTestMethods.test_prodc                 C   s   t g d}|d}|g d}t|g d |d}t|g d |jddgdd	}t|g d
g d
g dg |jg ddd	}t|g dg dg |jddd	}t|g d
g d
g dg dg |jddd	}t|g dg dg d S )Nr#   r"   r   r   rI   r   r   r#   r   r"   r#   r#   r"   
r#   r"   r"   r"   r   r   r   rI   r   r   r"   r#   r#   r"   r"   r   r   r   r   rI   rI   r   r   r#   r   r%  r(  r   rI   r   r#   r   r"   r#   r"   r"   r"   r   r   r   rI   rI   rI   r   r   r#   r#   r"   r"   r   r   r   r   rI   rI   r   r   )r'   r   r   repeatr	   )rF   mm_rectr!  r=   r=   r>   test_repeatX  s2   






zTestMethods.test_repeatc                 C   s   t g dg dg dg dg}g dg dg}t|dd| g d	g d
g dg}t|dd| g dg dg dg}t|jddd| g dg dg dg}t|jjddd| d S )Nr(  rS  )r   r   r   )rB   r@  rK  rO  )r   r   r   rB   r@  rK  r"   r   r.  rI   r   r   r   )r   rB   r@  rK  r   r   )r#   rB   r   r   )r   r"   r@  r   )r   rI   r   rK  r   r   r,  r&   )r#   r   r   rB   )r"   rI   r   r@  )r   r   r   rK  r   )r'   r   r	   r   r"  )rF   rX   r#  r=   r=   r>   test_reshapew  s   "zTestMethods.test_reshapec                 C   s   dd }|t ddgddg |t dd |t ddgd	d
gd |t ddgddgd |t dgdg |t dgdgd d S )Nc                 W   sD   t | j| | t| }| j|d|i}t || ||u s J d S Nr2  )r	   roundr'   r  )rX   r  
round_argsr2  r  r=   r=   r>   check_round  s
   

z+TestMethods.test_round.<locals>.check_roundg333333?      ?r#   r"   gffffff(@g      /@rB   r   r%   gL(@gQ/@y      @      ?y      @       @y      )@      /@y      $@      4@r>  )rF   rc  r=   r=   r>   
test_round  s   zTestMethods.test_roundc                 C   st   t dgdgdggg}t| g d t|jdddgdgdgg tt|jdd t|jddg dg d S )	Nr#   r"   r   r(  r#  r%  r  r  )r'   r   r	   squeezer   r)   r   r=   r=   r>   test_squeeze  s
   zTestMethods.test_squeezec                    sj   t ddgddgg t  ddgddgg tt fdd tt fdd tt fdd d S )	Nr#   r"   r   r   c                      s
     dS r   r9  r=   r   r=   r>   rU    r  z,TestMethods.test_transpose.<locals>.<lambda>c                      s     ddS r   rh  r=   r   r=   r>   rU    r  c                      s     dddS )Nr   r#   r"   rh  r=   r   r=   r>   rU        )r'   r   r	   r9  r   r)   rE   r=   r   r>   test_transpose  s
   zTestMethods.test_transposec                 C   s   d}t t jddg}t |}t||d d d | d}t jdt jd}| jt jt jt jddddddg	7  _| jt jddt jt jddddg	7  _t |}t||d d d | d S )NzTest real sort order with nansr#   r   r%   z!Test complex sort order with nansr   r   )	r'   r   nanr  r	   r*   rH  r  r  )rF   r  rD   r   r=   r=   r>   r    s   
&&
zTestMethods.test_sortr   c                 C   sx   t jd|d}|d d d  }| jD ]&}d| }| }|j|d t||| | }|j|d t||| qd S )Nr  r   r%   scalar sort, kind=%sr  r'   rC   r*  
sort_kindsr  r	   rF   r   rD   r   r  r  r  r=   r=   r>   test_sort_unsigned  s   
zTestMethods.test_sort_unsignedc                 C   sz   t jdd|d}|d d d  }| jD ]&}d| }| }|j|d t||| | }|j|d t||| qd S )N3   r   r%   rl  rm  rn  rp  r=   r=   r>   test_sort_signed  s   
zTestMethods.test_sort_signedpartr  r  c                 C   s   t jt jt jt jt jt ji| }t jdd|d}|d d d  }|d 	|}|d 	|}t
||d t
||d | jD ](}d||f }	| }
|
j|d t|
||	 | }
|
j|d t|
||	 q>d S )	Nrr  rs  r   r%         ?      ?r#   z#complex sort, %s part == 1, kind=%srm  )r'   singlecsingledoublecdoublerk  clongdoublerC   r*  rn  r   ro  r  r	   )rF   ru  r   cdtyperD   r   aibir  r  r  r=   r=   r>   test_sort_complex  s*   
zTestMethods.test_sort_complexc                 C   sZ   dD ](}t jd D ] }t jg d|| d}| }|  d|}t||| q	qd S )Nr   Complexy      ?      @y       @       @y      @      ?r   z$byte-swapped complex sort, dtype={0})r'   r  r   r*  r  formatr	   )rF   
endiannessr  rX   r  r  r=   r=   r>   test_sort_complex_byte_swapping  s   
z+TestMethods.test_sort_complex_byte_swappingc                 C   s   t jdd tdD |d}|d d d  }| jD ]&}d| }| }|j|d t||| | }|j|d t||| qd S )Nc                 S   s   g | ]}d t | qS )aaaaaaaachrr  r=   r=   r>   r    r  z0TestMethods.test_sort_string.<locals>.<listcomp>r  r   r%   kind=%srm  )r'   r   rz   r*  ro  r  r	   rp  r=   r=   r>   test_sort_string  s   
zTestMethods.test_sort_stringc                 C   s   t jdtd}ttd|d d < |d d d }dD ]&}d| }| }|j|d t||| | }|j|d t||| qd S )Nr  r   r  r%   qhrZ  r  rm  )r'   r2   r(   r  rz   r*  r  r	   )rF   rD   r   r  r  r  r=   r=   r>   test_sort_object  s   zTestMethods.test_sort_objectc                 C   s   t dtfdtfg}t jdd tdD |d}|d d d }dD ]&}d	| }| }|j|d
 t||| | }|j|d
 t||| q"d S )Nr   r   c                 S      g | ]}||fqS r=   r=   r  r=   r=   r>   r    r  z4TestMethods.test_sort_structured.<locals>.<listcomp>r  r   r%   r  r  rm  )	r'   r   floatr   r   rz   r*  r  r	   )rF   r  rD   r   r  r  r  r=   r=   r>   test_sort_structured  s   z TestMethods.test_sort_structureddatetime64[D]timedelta64[D]c                 C   st   t jdd|d}|d d d }dD ]&}d| }| }|j|d t||| | }|j|d t||| qd S )Nr   r  r   r%   r  r  rm  )r'   rC   r*  r  r	   rp  r=   r=   r>   test_sort_time)  s   zTestMethods.test_sort_timec                 C   s   t ddgddgg}t ddgddgg}t ddgddgg}| }|jdd t||d | }|jdd t||d | }|  t||d d S )	Nr   r"   r#   r   r%  ztest sort with axis=0ztest sort with axis=1ztest sort with default axis)r'   r   r*  r  r	   )rF   rD   r   r  r   r=   r=   r>   test_sort_axis7  s   zTestMethods.test_sort_axisc                 C   sh   t g }d|_t|j |jD ]}d|}tt j||d|| qd}tt j|d d| | d S )Nr  z#test empty array sort with axis={0}r%  z$test empty array sort with axis=None)	r'   r   r7   rz   r   r  r	   r  ravel)rF   rD   r#  r  r=   r=   r>   test_sort_size_0G  s   

zTestMethods.test_sort_size_0c                 C   s\   G dd d}t j| gd td}| jD ]}d| }| }|j|d t||| qd S )Nc                   @   rV   )z0TestMethods.test_sort_bad_ordering.<locals>.Boomc                 S   r  )NTr=   rF   otherr=   r=   r>   __lt__U  r  z7TestMethods.test_sort_bad_ordering.<locals>.Boom.__lt__N)rQ   rR   rS   r  r=   r=   r=   r>   BoomT  r\   r  r  r   r  rm  )r'   r   r(   ro  r*  r  r	   )rF   r  rD   r  r  r  r=   r=   r>   test_sort_bad_orderingQ  s   
z"TestMethods.test_sort_bad_orderingc                 C   s   t dD ]}tjjddtjd}|d}|d d d   qtdg}t dD ]}tjjddtjd}||}|d d d   q)d S )Nr      i  r9   r   r  r%   )r  r   r  )rz   r'   randomrandintr3   r]   r  r   )rF   r   randrX   r  r=   r=   r>   test_void_sort_  s   

zTestMethods.test_void_sortc                    s   t jdt dgtd}| jD ]
}tt|j|d qG dd d t  fddt	d	D 
d
}t j| | jD ]
}tt|j|d q;d S )Nr   r#   r   rm  c                   @   s,   e Zd Zdd Ze Z Z Z Z ZZ	dS )z,TestMethods.test_sort_raises.<locals>.Raiserc                  _      t d)NzSOMETHING ERRORED)r
  argsr  r=   r=   r>   raises_anythings  r  z<TestMethods.test_sort_raises.<locals>.Raiser.raises_anythingN)
rQ   rR   rS   r  __eq____ne__r  __gt____ge____le__r=   r=   r=   r>   Raiserr  s    r  c                    s   g | ]}  |gqS r=   r=   )r  r  r  r=   r>   r  v      z0TestMethods.test_sort_raises.<locals>.<listcomp>rB   r%   )r'   r   r   nowr(   ro  r   r
  r  rz   r   r  shuffle)rF   rX   r  r=   r  r>   test_sort_raisesl  s   
"
zTestMethods.test_sort_raisesc                 C   s   t d}| }|}|jdkr-|jd }|d || ||< |d< |d d }|jdkstt || t|t | | d S )N@B r   r"   r   )r'   rC   r*  r9   r	   r  r  )rF   r   dor   midr=   r=   r>   test_sort_degraded{  s   



zTestMethods.test_sort_degradedc                 C   s   dd }dd }t jddd}||  ||d ||d ||d	 t jddd}||  ||d ||d ||d	 d S )
Nc                 S   s*   t | jj t | jj t | jj  d S rW   r   rK   fortranr6  r5  rX   r=   r=   r>   assert_fortran  s   z-TestMethods.test_copy.<locals>.assert_fortranc                 S   s,   t | jj  t | jj  t | jj d S rW   r  r  r=   r=   r>   assert_c  s   z'TestMethods.test_copy.<locals>.assert_cr  r,  r&   r   r!  )r'   r2   r*  )rF   r  r  rD   r=   r=   r>   	test_copy  s   zTestMethods.test_copyr  zi,Oc                 C   sn   t jd|d}t|jjd|j |i }d|d< tt	 t
|| W d    d S 1 s0w   Y  d S )Nr   r   r   r  )r'   r2   ctypesmemsetr$   r   __deepcopy__r   r;  AssertionErrorr   )rF   r   rD   r   r=   r=   r>   test__deepcopy__  s   
"zTestMethods.test__deepcopy__c                 C   s^   G dd d}t jd| dgdd}tt |i  W d    d S 1 s(w   Y  d S )Nc                   @   rV   )z:TestMethods.test__deepcopy__catches_failure.<locals>.MyObjc                 _   rc  rW   rd  rF   r  r  r=   r=   r>   r    r  zGTestMethods.test__deepcopy__catches_failure.<locals>.MyObj.__deepcopy__N)rQ   rR   rS   r  r=   r=   r=   r>   MyObj  r\   r  r#   r   r  r   )r'   r   r   r;  r   r  )rF   r  rX   r=   r=   r>   test__deepcopy__catches_failure  s
   "z+TestMethods.test__deepcopy__catches_failurec                    s  t g d}t g d}t g d}t jj|||gdd  jdgd t jt g d t jt g d	 t jt g d
  jdgd t jt g d t jt g d t jt g d  jdgd t jt g d t jt g d t jt g d t	t
d fdd tjdkrd}nd}dd|fg}t jg d|d  jdd t d g d t t jg d|d d S )N)   r      )myfirstr  )@      @@zid,word,number)r  r  r&   )r  r  r   )r  r  r  )r  r  r  word)r   r  r  )r  r  r  )r  r  r  number	duplicatec                      s    j ddgdS )Nr  r&   )r  r=   r   r=   r>   rU    r  z-TestMethods.test_sort_order.<locals>.<lambda>littler\  r  )r  r  col2)rD   r#   r   r  r  r   r     r   )r#   r   r  r  )r  r  r  r  )r'   r   r@  
fromarraysr  r	   r  r  r  r   r)   sys	byteorder)rF   x1r;  x3strtypemydtyper=   r  r>   test_sort_order  s>   


zTestMethods.test_sort_orderc                    sj  t jt jt jfD ]6}t jd|d}|d d d  }| jD ] }d||f }t| j|d|| t| j|d|| qq|d d }|d d }| jD ]}d| }t| j|d|| t| j|d|| qN|d }|d }| jD ]}d| }t| j|d|| t| j|d|| qxd	D ]*}t j	d
 D ]"}	t j
g d||	 d}
d|	}t|
 t jt|
t jd| qqd t 
 fddtdD }|d d d  }t d}|d d d }| jD ]}d| }t| j|d|| t| j|d|| qd t j
 fddtdD t jd}|d d d }t d}|d d d }| jD ]}d| }t| j|d|| t| j|d|| q4t jdtd}ttd|d d < |d d d }t d}|d d d }| jD ]}d| }t| j|d|| t| j|d|| q{t dtfdtfg}	t j
dd tdD |	d}|d d d }t d}|d d d }| jD ]}d| }t| j|d|| t| j|d|| qt jdddd}|d d d }t d}|d d d }dD ]}d| }t| j|d|| t| j|d|| qt jdddd}|d d d }t d}|d d d }dD ]}d| }t| j|d|| t| j|d|| qDt 
dd gddgg}t 
ddgddgg}t 
ddgddgg}t| jdd!| t| jdd!| t|  | t 
g }d"|_t|j |jD ]}d#|}tt j||d!t j|t jd| qd$}tt j|d d!t j| t jd| t d%}t d%}t|jd&d| t jd%td}t|jd&d| t 
d'd td%D }t|jd&d| t j
d(d td%D t jd}t|jd&d| d S ))Nr  r   r%   z!scalar argsort, kind=%s, dtype=%srm  r  r#   zcomplex argsort, kind=%sr   r  r  z'byte-swapped complex argsort, dtype={0}r  c                       g | ]} t | qS r=   r  r  rT  r=   r>   r  	  r  z,TestMethods.test_argsort.<locals>.<listcomp>zstring argsort, kind=%sc                    r  r=   r  r  rT  r=   r>   r  	  r  zunicode argsort, kind=%sr  zobject argsort, kind=%sr   r   c                 S   r  r=   r=   r  r=   r=   r>   r  '	  r  z!structured array argsort, kind=%sr   r  r  zdatetime64 argsort, kind=%sr  ztimedelta64 argsort, kind=%sr   r"   r%  r  z&test empty array argsort with axis={0}z'test empty array argsort with axis=Noner  rZ  c                 S      g | ]}d qS 	aaaaaaaaar=   r  r=   r=   r>   r  a	  r  c                 S   r  r  r=   r  r=   r=   r>   r  d	  r  )r'   r   r   rF  rC   r*  ro  r	   r  r  r   r  r   r  rz   r  r2   r(   r  r   r  r   r7   r   r  r  r*   r   )rF   r   rD   r   r  r  r}  r~  r  r  rX   r   rrr  r#  r=   rT  r>   r    s   





"











zTestMethods.test_argsortc                 C   s8   t d}dd}tt|j|d tt|j|d d S )NrB      äUTF8rm  )r'   rC   decoder   r)   r  r  rF   r   r  r=   r=   r>   test_sort_unicode_kindg	  s   

z"TestMethods.test_sort_unicode_kindrD   r   r#   r   c                 C   s   d|j  }|j|dd}t|td| d|j  }|j|dd}t|tdd| |jdd	 tjd
dtjgdd}t||d }t|d d S )Nz/Test real (%s) searchsorted with nans, side='l'leftsider   z/Test real (%s) searchsorted with nans, side='r'rightr#   r   rN  r   rF  r   r%   r"   )r   searchsortedr	   r'   rC   r   rk  )rF   rD   r  r   r   r  r=   r=   r>   test_searchsorted_floatsm	  s   
	
z$TestMethods.test_searchsorted_floatsc                 C   s  t jdt jd}| jddddddt jt jt jg	7  _| jddddt jt jddt jg	7  _d}|j|dd}t|t d| d}|j|d	d}t|t dd
| d}t j	ddgdd}|t j	ddd}t|d| d}t j	ddgdd}|t j	ddd}t|d| d S )Nr   r   r   r#   z-Test complex searchsorted with nans, side='l'r  r  z-Test complex searchsorted with nans, side='r'r  rB   z.Test searchsorted with little endian, side='l'   rz  z+Test searchsorted with big endian, side='l'r{  )
r'   r*   rH  r  rk  r  r  r	   rC   r   )rF   rD   r  r   r=   r=   r>   test_searchsorted_complex	  s"   &&z%TestMethods.test_searchsorted_complexc                 C   s   t d}|g dd}t|g d |g dd}t|g d t d}|g dd}t|g d |g dd}t|g d t d	}|g dd}t|g d
 |g dd}t|g d d S )Nr   rC  r  rD  r  r#   r4  r   r#   r#   r"   )r   r   r"   )r   r"   r"   )r'   r   r  r	   r  r=   r=   r>   test_searchsorted_n_elements	  s   


z(TestMethods.test_searchsorted_n_elementsc                 C   s   t d}t |j|j d d}|dd  |j}||d d < ||d}t|| ||d}t||d  ||d}t|| ||d}t||d  d S )NrB   r#   r3   r  r  )	r'   rC   r2   r1   r9   r]   r   r  r	   )rF   rD   r   	unalignedr   r=   r=   r>   !test_searchsorted_unaligned_array	  s   


z-TestMethods.test_searchsorted_unaligned_arrayc                 C   sJ   t d}|g dd}t|g d |g dd}t|g d d S )NrI   )r   rI   r   r  )rI   rI   r   r  )rI   rI   rI   )r'   rC   r  r	   r  r=   r=   r>   test_searchsorted_resetting	  s
   
z'TestMethods.test_searchsorted_resettingc                 C   s  d tjd tjd tjd df}|D ]j}|dkrd}|dkr-tjd	|d
}td	}ntjdd|d
}td}||d}t|| ||d}t||d  tjdd|d}||d}t|tjt	|tj
d
 ||d}t|tjdtj
d
 qd S )Nr  r  r  Datetime?OMM8[D]?r"   r   r   rI   r  r  r#   rr  r7   r   r   )joinr'   r  rC   r  r	   r5   r   r*   r   r  )rF   rr   r  rD   r2  r   r   r=   r=   r>   test_searchsorted_type_specific	  s*   


z+TestMethods.test_searchsorted_type_specificc                    s   t jg dt jd t t }t fdd D | t fdd D |d  t fdd|D | t fdd|D |d  d S )	N)z'P:\20x_dapi_cy3\20x_dapi_cy3_20100185_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100186_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100187_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100189_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100190_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100191_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100192_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100193_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100194_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100195_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100196_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100197_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100198_1z'P:\20x_dapi_cy3\20x_dapi_cy3_20100199_1r   c                       g | ]}  |d qS r  r  r  r   r   r=   r>   r  	  r  z9TestMethods.test_searchsorted_unicode.<locals>.<listcomp>c                    r  r  r  r   r   r=   r>   r  	  r  r#   c                       g | ]
}   | d qS r  r  r  r   r=   r>   r  	      c                    r  r  r  r  r   r=   r>   r  	  r  )r'   r   r  rC   r   r	   r  r=   r   r>   test_searchsorted_unicode	  s   
 z%TestMethods.test_searchsorted_unicodec              	   C   s   t g d}t |}ttt j|dt jdtdd ttt j|ddgd ttt j|dg dd ttt j|dg dd ttt j|d	g d
d ttt j|dg dd ttt j|dg dd d S )N)rI   r"   r#   r   r   r   )r#   r   r   sorterg?r.  rO  r   r   r#   r"   r   rI   )r%   r   r#   r"   r   )r   r   r%   r"   r   )r'   r   r  r   r
  r  r(   r)   )rF   rD   r   r=   r=   r>   %test_searchsorted_with_invalid_sorter	  s   
z1TestMethods.test_searchsorted_with_invalid_sorterc                 C   sX  t jd}| }t |}t ddd}t|||j||d t g dd }| }g d}g d}t|j|d|d	| g d
}t|j|d|d	| t 	d}|
 }t j| | }t |j|j d d}|dd  |j}||d d < ||d|}t|| ||d|}t||d  ||d d < ||d|}t|| ||d|}t||d  dt jd t jd t jd df}	|	D ]}
|
dkrd}
|
dkrt jddg|
d}t jddgt jd}t ddg}nt jg d|
d}t jg dt jd}t jg dt jd}||d|}t|| ||d|}t||d  t jdd|
d}||d|d d }t|t jt|t jd ||d|}t|t jdt jd qt g d}t jdt jd}d|dd d< g d|d d d< |d d d }t jg dt jd}||d|}t|| ||d|}t||d  d S )Ni,  r   r#   r   r  r  )r   r   (   r   r  r  )r  r  )r   r	  r   r  r  r  rB   r3   r  r  r  r  r  r  r  r  r   )r   r   r#   r"   r   )r   r"   r   r   r#   rr  r  r   r%   r"   )r'   r  r  r  r  linspacer	   r  r   rC   r*  r  r2   r1   r9   r]   r   r  r  r   r  r5   r   r*   r   )rF   rD   r   r   r  r  keysr   r  rr   r  r2  r   srtr=   r=   r>   test_searchsorted_with_sorter	
  sx   






z)TestMethods.test_searchsorted_with_sorterc                 C   s   G dd dt j}t d|}t dd|}t d|}tt||d|  tt||d|  tt||d||  tt||d||  d S )Nc                   @   rO   )z4TestMethods.test_searchsorted_return_type.<locals>.ANrP   r=   r=   r=   r>   r!  X
  rU   r!  rI   r#   r   r  r  )r'   r5   rC   r]   r   r~   r  )rF   r!  rD   r   r   r=   r=   r>   test_searchsorted_return_typeV
  s   z)TestMethods.test_searchsorted_return_typer  c                 C   2   t dj|d}tt|jd tt|jd d S NrB   r   i)r'   rC   rn  r   r)   r  rF   r   r   r=   r=   r>   test_argpartition_out_of_rangeb
     z*TestMethods.test_argpartition_out_of_rangec                 C   r  r  )r'   rC   rn  r   r)   r  r  r=   r=   r>   test_partition_out_of_rangei
  r  z'TestMethods.test_partition_out_of_rangec                 C   8   t d}tt|jd t jdtd}tt|jd d S NrB         "@r   )r'   rC   r   r
  r  r(   rF   r   d_objr=   r=   r>   test_argpartition_integerp
     
z%TestMethods.test_argpartition_integerc                 C   r  r  )r'   rC   r   r
  r  r(   r  r=   r=   r>   test_partition_integery
  r  z"TestMethods.test_partition_integer	kth_dtyper  c                 C   s~   t jd|dd }t g }d|_t|j |jD ]}d|}tt j|||d|| qd}tt j||d d| | d S )Nr   r   r=   r  z(test empty array partition with axis={0}r%  z)test empty array partition with axis=None)	r'   r   r7   rz   r   r  r	   r  r  rF   r  r  rD   r#  r  r=   r=   r>   test_partition_empty_array
  s   

 z&TestMethods.test_partition_empty_arrayc                 C   s   t jd|dd }t g }d|_t|j |jD ]}d|}tt j|||dt j|t j	d| qd}tt j||d dt j|
 t j	d| d S )Nr   r   r=   r  z+test empty array argpartition with axis={0}r%  z,test empty array argpartition with axis=None)r'   r   r7   rz   r   r  r	   r  r  r  r  r  r=   r=   r>   test_argpartition_empty_array
  s   

z)TestMethods.test_argpartition_empty_arrayc                 C   s  t d}ttt j|ddd ttt j|ddd ttt j|ddd tt|jdddd tt|jdddd dD ]}t g }tt j|d|d| tt j|d|d| t 	d}tt j|d|dd | t|t j|d|d t j|d|d t g d	}|
 }t t d
| t|| ddgddgddgfD ]h}t |}t |}tt j|d|dd |d  tt j|d|dd |d  t|t j|d|d t j|d|d t|t j|d|d t j|d|d t|jD ]}||d  jd|d qt|| qg dg dg dg dg dg dg dg dfD ]}t |}t |}tt j|d|dd |d  tt j|d|dd |d  tt j|d|dd |d  t|t j|d|d t j|d|d t|t j|d|d t j|d|d t|t j|d|d t j|d|d t|jD ]}||d  jd|d qt|| q#t 	d}tt j|d|d| t|t j|d|d t j|d|d t d}tt j|d|dd d tt j|d|dd d t|t j|d|d t j|d|d t|t j|d|d t j|d|d t dd d d }tt j|d|dd d tt j|d|dd d t|t j|d|d t j|d|d t|t j|d|d t j|d|d tt j|d|dt j|d|d tt j|d|dt j|d|d t|t j|d|d t j|d|d t d}t ||jd }|jd d }	tt ||	|	 |	 t d }t ||jd d }|jd d }	tt ||	|	 |	 t 	d}d!|d< tt |d"d d! tt |d"d d t|t |d" d d! t|t |d" d d t j|d< tt |t |d" d  tt t |d"d  t dd# }t t dd# }t j| t|jD ]}tt j|||d| ||  qOt|t j|d|d t j|d|d t|t j|d|d t j|d|d t|jD ]}||d  jd|d qt|| t g d$}g d%}tt j|||d| d& t|t j|||d | d& t ddg}|jd|d tt|jd tt j|jd'dd( ttt j|d tt jt j|ddd( tt|jd tt j|jd'dd( ttt j|d tt jt j|ddd( t dd)}|jdd|d |jd!d|d t j|dd|d t j|d!d|d t j|dd |d t j|d*d |d |jdd|d |jd!d|d t j|dd|d t j|d!d|d t j|dd |d t j|d*d |d tt|jddd( tt|jd+dd( tt|jdd d( ttt j|d*dd( ttt j|d+d d( tt|jddd( tt|jd+dd( ttt j|d*dd( ttt j|d+d d( d,d- t jt jt jfD }
|
D ]\}}t}t}t j||d.}t j| t t j||d.d/}tt jj| t |}t|jD ]}t j|||d}t|| | t|d | ||  t|| ||d d   |||t j|||d  t j||d|d}||d d |f t j|g|jd  |d. ||d d d |f j|d d |f k  d0||d d |f |d d d |f jf d1 ||d d |d d f j|d d |f k  d2||d d |f |d d |d d f jf d1 |||t |jd d d d f t j||d|df  t j||d|d}|||d d f t j|g|jd  |d. ||d |d d f ||d d f k  d0|||d d f |d |d d f f d1 |||d d d d f ||d d f k  d2|||d d f |d d |d d f f d1 |||t j||d|dt |jd d d d f f  |
 }|j||d t|t j|||d |
 }|j|d|d t|t j||d|d |
 }|j|d|d t|t j||d|d q$qq9d S )3NrB   r"   r#   rm  nonsenser   )r#  r  )r  )r      rI   r	  r  r(  r  r"   r   r#   rE  )r#   r"   r"   r"   r"   r#   )r#   r"   r#   r  1   rI   r"  /   r%   r   r   i)   i   r  iAB r   )r"   r%   r   )r   r#   r"   r   r   rI   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"   rI   r   r@  c                 S   s   g | ]}d D ]}||fqqS ))r   r   r=   )r  r  r   r=   r=   r>   r  9  s
    z.TestMethods.test_partition.<locals>.<listcomp>r   r   r#   z%d: %r <= %rr  z%d: %r < %r)!r'   rC   r   r
  r  r)   r  r   r   r   r*  r  rz   r9   r	   rollrk  r   isnanr  r  	AxisErrorr   r   rF  rG  tilemapr9  r   r7   r"  r'  )rF   r   r  r  okthr   r#  r   r   r  tdr  r   aaeatrw  d0r  dcr=   r=   r>   r   
  s  














"

,**.. ,((,, zTestMethods.test_partitionc                 C   st   d}t |D ]0}t||| || d| d t||d  || k d|||d  || f d |d }qd S )Nr   zkth %dr   zkth %d, %r not greater equal %dr,  r#   )r'   r  r   r   r'  )rF   r   r  prevr  r=   r=   r>   assert_partitionedl  s   
zTestMethods.assert_partitionedc           	   	   C   s  t d}d}tt|j| tt|j| t dd}tt|j|dd tt|j|dd ttt j||dd ttt j||d d t g d}t |d	}| |d	 | |t |d	 d	 t	|t |d
 t	||t |d
  t d}t j
| |t|j t	t d| t j
| t	t d||t|j  t d}t j
| t g d}t j
| t ||}| || |t || }| || t j
| t	t ||| t	|t || | t dd d d }| t |dgd dg | t |dgd ddg dgd ddg  | |t |dgd  dg | |t |dgd ddg  dgd ddg  t d}t j
| t t dd}tt j
j| t |}d}t j||dd}|t |jd d d d f |j|ddf }t	|| t|jd D ]}| ||d d f | qt j||dd}|t j||ddt |jd d d d f f }t	|| t|jd D ]}| |d d |f | qd S )Nr  )r   r#   r"   i     rB   r*  r   r%  r#   )r   r   r"   r#   r   r   )r   r%   )r#   r   r   r   r   r%   rI   r   r   r  rK  r+  )r#   r   r   r%   )r'   rC   r   r)   r  r  r   r   r9  r   r  r  rz   r9   r0  r1  r9  r7   )	rF   r   r  r  r  rw  r6  par   r=   r=   r>   test_partition_iterativet  s|   

 
  



z$TestMethods.test_partition_iterativec                 C   s@  t jg dg dd}t j|ddgd}tt j|t|jddgd| t|t j|t|jddgd | t|jD ]&}tt j||ddgd| ||  t|t j||ddgd | ||  q;t g d}t |}tt |t|j| t|jD ]}tt ||| ||  t|t || | ||  qd S )N))Galahadg333333?&   )Arthurg?r'  )Lancelotgffffff?r?  ))r  z|S10)heightrI  )agerz  r   rC  rB  r&   )r>  r@  zebrarA  )	r'   r   r  r   r  rz   r9   r  r	   )rF   r   r#  r  r=   r=   r>   test_partition_cdtype  s8   

 z!TestMethods.test_partition_cdtypec                 C   s<   t d}dd}tt|jd|d tt|jd|d d S )NrB   r  r  r"   rm  )r'   rC   r  r   r)   r  r  r  r=   r=   r>   test_partition_unicode_kind  s   

z'TestMethods.test_partition_unicode_kindc                 C   s   t ddD ]G}t d|d D ]=}t|}tj| |tjdd }tj|j}d|||d g}t|| }tt	||| |d||f d qqd S )NrB   r   r#   r"   r   zdata: %r
 kth: %rr   )
rz   r'   rC   r  r  r  r9   r  r   r  )rF   rB  r   r   r  r  r#  r=   r=   r>   test_partition_fuzz  s   

zTestMethods.test_partition_fuzzc                 C   sB   t jd|dd }g d}t ||}| t || dg d S )Nr#   r   r=   )r   r   r   r"   r   r   )r'   r   r  r9  )rF   r  r  r   r  r=   r=   r>   test_argpartition_gh5524  s   z$TestMethods.test_argpartition_gh5524c                 C   s   t g dg dgt j}t ddgddggddgd	d
gggt j}t g dt j}t g dt j}t g dt j}t g dt j}t| | t|d| t|d|j  t| | t|d| t|d|j  d S )Nr(  rS  r#   r"   r   r   rI   r   r   r   rO  )r#   r   r"   rI   r   r   )r#   r"   r   r   rI   r   r   r   )r#   rI   r   r   r"   r   r   r   r,  )r'   r   r   r	   flattenr"  )rF   x0r  y0y0fy1y1fr=   r=   r>   test_flatten  s   *zTestMethods.test_flattenr:  c              
   C   sZ  t ddgddgg}t ddgddgg}t ddgddgg}t ddd}t g dg d	g d
g dg}t g dg dg dg dg dg dg}t jt jt jt jfD ]O}||}	t	||	|	|	 t	||	j
|	|	 t	||	|	j
|	 t	||	j
|	j
|	 t	||	j
 |	|	 t	||	|	j
 |	 t	||	j
 |	j
 |	 q\t jt jt jt jfD ]0}||}	||}
t	||
|
|	 t	||
j
|
|	 t	||
|
j
|	 t	||
j
|
j
|	 qt jt jt jt jfD ]	}||}t	||d d dd d f |j
||d d dd d f  |j
  t	||d d d d df |j
||d d d d df  |j
  t	|||d d dd d f j
|||d d dd d f j
  t	|||d d d d df j
|||d d d d df j
  t	||d |jd d d d f |d d dd d f j
||d |jd d d d f  |d d dd d f j
  t	||d d dd d f |d |jd d d d f j
||d d dd d f  |d |jd d d d f j
  qt jt jt jt jfD ]$}||}||}||}t	|||j
| t	||j
|| qd S )Nr#   r   r   rE  r   r   )7         E  )rR  i    '  )rS  rU  i  	  )rT  rV  rW  i	  )i    @  d      )rX  iD  l        )rY  r]  i        )rZ  r^  ra  i  $  T  )r[  r_  rb  rd  iX    )r\  r`  rc  re  rf  i  r%   r"   )r'   r   rC   r   rF  r   rG  rH  rn  r	   r"  r*  r7   )rF   r:  rD   r   r  r   ddtdtdeteafebfedfeddtfedtdfr=   r=   r>   test_arr_mult  s   



$$  6>6>


zTestMethods.test_arr_multifdFDc                 C   s*  t jd|ddd}t dd}|||}||| }t|| ||j|j}||j |j}t|| t |}t jd|j	 d d d	ddd  
|}|dd}|d
 }t|jd d
 |j	 d
k |||}|| | }t|| ||j|j}||j |j }t|| d S )N       @r   r"   r   r  r+  r   r#   r   r   r$   )r'   rC   r   broadcast_tor*  r	   r"  r   r*   r1   r]   r   r4   )rF   r:  r   rD   r   ret1ret2r  r=   r=   r>   test_no_dgemvI  s&   



*

zTestMethods.test_no_dgemvc                 C   s   t ddgddgg}t ddgddgg}t ddgddgg}tt |||| tt t |||||| t |}||| t|t || t |}|j||d t|t || d S )Nr#   r   r   rP  )r   r2  )r'   r   r	   dotr  rF   rD   r   r  r=   r=   r>   test_dotg  s   &

zTestMethods.test_dotc                 C   6   d}t jddd}ttt j|| ttt j|| d S Nr  r  r  r   )r'   r   r   r
  rv  rF   r  r!  r=   r=   r>   test_dot_type_mismatchy     z"TestMethods.test_dot_type_mismatchc              
   C   s   t jd dd t jd D }|D ]L}t jdd|}td|d}t jdd|d< t ||}t j|||d	}t||t	|d
 t
tt j|||d d d d	 t
tt j|||jd	 qd S )Nr#   c                 S   s   g | ]}|d vrt |qS )USVMr'   r   )r  coder=   r=   r>   r    s    z8TestMethods.test_dot_out_mem_overlap.<locals>.<listcomp>r  r   r  r   .r6  r   r"   )r'   r  seedr  r  rn  r?   rv  r	   rW  r   r)   r"  )rF   dtypesr   rD   r   r  r   r=   r=   r>   test_dot_out_mem_overlap  s   z$TestMethods.test_dot_out_mem_overlapc                 C   s`   G dd dt j}t d|}t d|}t d}t j|||d t j|||d d S )Nc                   @   rO   )z,TestMethods.test_dot_matmul_out.<locals>.SubNrP   r=   r=   r=   r>   Sub  rU   r  r  r6  )r'   r5   r   r]   rv  matmul)rF   r  rD   r   r2  r=   r=   r>   test_dot_matmul_out  s   
zTestMethods.test_dot_matmul_outc                 C   sN   G dd d}t ttj| |  t ttj| |  t ttj| |  d S )Nc                   @   rV   )z@TestMethods.test_dot_matmul_inner_array_casting_fails.<locals>.Ac                 _   rc  rW   NotImplementedErrorr  r=   r=   r>   r    r  zJTestMethods.test_dot_matmul_inner_array_casting_fails.<locals>.A.__array__Nr  r=   r=   r=   r>   r!    r\   r!  )r   r  r'   rv  r  innerrF   r!  r=   r=   r>   )test_dot_matmul_inner_array_casting_fails  s   z5TestMethods.test_dot_matmul_inner_array_casting_failsc                 C   s   t dddd}t ||}t j|||d}t||u  t|| t dddd}t j|||d d ddf d}t|j|ju  t|| d S )Nr  r"   r   r6  r%   .)r'   rC   r   r  r   r	   r   rw  r=   r=   r>   test_matmul_out  s   
zTestMethods.test_matmul_outc                 C   s  t dd}t| g d t|dg d t|dg d t|ddd	g tt j|jdd
d tt j|jd
dd tt j|jd
d
d tt|jddd t dd}t| ddgddgg t|dddgddgg t|ddgdgg t|ddgd
gg tt|jddd t|dddddgddgg t|dddddgddgg t|jdddddgdgg t|dddddgddgg d S )NrK  r^  )r   rI   rB   r   r#   )r#   r   r@  r%   r   r   rI   )axis1axis2r   r"   r"   r"   r   r   r"   r   r<   r  r  )r'   rC   r   r	   diagonalr   r/  r)   r  r=   r=   r>   test_diagonal  s&     $zTestMethods.test_diagonalc                 C   s   t d }t|jj  t|jj  t t d}t|jj  t|jj  t t d}t|jj  t|jj  d S Nr   )r'   eyer  r   rK   rL   r   diagr   r=   r=   r>   test_diagonal_view_notwriteable  s   z+TestMethods.test_diagonal_view_notwriteablec                 C   sT   t d}trtt|dk  tdD ]}|  qtr(tt|dk  d S d S )Nr  r  r  r  )r'   r*   r   r   r  getrefcountrz   r  )rF   rD   r   r=   r=   r>   test_diagonal_memleak  s   

z!TestMethods.test_diagonal_memleakc                 C   sV   t jg t jd}t d}tdD ]
}t j|||d qtr)tt|dk  d S d S )Nr          @r  r6  r  )	r'   r   r   rz   rv  r   r   r  r  )rF   rD   r   _r=   r=   r>   test_size_zero_memleak  s   
z"TestMethods.test_size_zero_memleakc                 C   s4  t dd}t| d t|dd t|dd t|dd t d	d
}t| dd	g t|ddd	g t|dddg t|dddg t|ddddd	g t|dddddg t|dddddg t|jddddddg t d}|j|d}||u sJ d S )NrK  r^  r"  r   r#   r  r%   r  r   r  r   r"   r   r   rI   r   r@  r  r6  )r'   rC   r   r	   tracer   )rF   rD   r   r2  r>  r=   r=   r>   
test_trace  s"   
zTestMethods.test_tracec                 C   sB   G dd dt j}t dd|}| }tt|| d S )Nc                   @   rO   )z0TestMethods.test_trace_subclass.<locals>.MyArrayNrP   r=   r=   r=   r>   MyArray
  rU   r  r   r  )r'   r5   rC   r   r]   r  r   r~   )rF   r  r   r  r=   r=   r>   test_trace_subclass  s   zTestMethods.test_trace_subclassc                 C   sd  t jd }t jd }|| d D ];}t jg d|d}t jd|d}|g dg d t|| t jd|d}|g dg d t||d	d
 qdD ]=}t jg d|d}t jd|d}|g ddgd
  t|| t jd|d}|g ddgd
  t||d	d
 qNt d}d|j_t	t
|jg dg d g d}t	tt j|dd	gd d S )Nr  r  r  )r   r#   r   r   r   rI   r   r   )r#   r   rI   r   r"   r   r  )FTFTFTTFr(  r   rI   )r'   r  r   r*   putr	   r   rK   rL   r   r)   r
  )rF   icodesfcodesr  r#  rD   	bad_arrayr=   r=   r>   test_put  s.   




zTestMethods.test_putc                 C   sL  t ddgddgg}t| g d t| jj  t|dg d t|jdd	g d t|jdd	g d t|jd
d	g d t|jd
d	jj  t|jdd	g d t|jdd	jj  t| |d t jddgddggdd	}t| g d t|jd
d	g d t|jdd	g d t|jd
d	jj  t|jdd	jj  t| |d t|jd
d	|jdd
d	 t ddgddggd d dd d f }t| g d t|jdd	g d t|jdd	g d t|jd
d	g d t|jdd	g d t|jdd	jj t dd d d }t|djj t|djj t|djj t dd d d }|dddd	dd}t
|j}d|d< ||_t|jdd	jj t|dt ddd t d}|dddd	dd}t
|j}d|d< ||_tt |jdd	| t|jdd	t d t dd d d dd}t|jdd	jj t|jdd	jj t|dg d t|dg d t dgg}d|_t djdkrtt |d| t|dj|jjf dD ]}t d}t||dg tt ||| qt dd d d dddd}|dd d df }t|dg d t|dg d t|d
g d t|dg d |d d ddf }t|dg d t|dg d t|d
g d t|dg d d S ) Nr   r#   r"   r   )r   r#   r"   r   r,  )r   r"   r#   r   r   r&   r!  Kr%   )r"   r   r   r#   )r"   r   r   r#   rB   r   r   r  r"  r   r   r  )r  i  r   r   r,  r!  r  r   .)r   r   r   rK  r   r   rE     )r   r   r   rE  r   r   rK  r  )r   r"   r   r   r   rB   rK  r  )r   r   r   rK  r"   rB   r   r  )r'   r   r	   r  r   rK   r   r   rC   swapaxesr  r   may_share_memoryr   r   r1   )rF   rD   r   r    r   r=   r=   r>   
test_ravel9  s   (



 zTestMethods.test_ravelc                 C   s   G dd dt j}t d|}tt|d| tt|d| tt|d| tt|d| t dd d d |}tt|d| tt|d| tt|d| tt|d| d S )	Nc                   @   rO   )z6TestMethods.test_ravel_subclass.<locals>.ArraySubclassNrP   r=   r=   r=   r>   ArraySubclass  rU   r  rB   r   r,  r!  r  r"   )r'   r5   rC   r]   r   r~   r  )rF   r  rD   r=   r=   r>   test_ravel_subclass  s   zTestMethods.test_ravel_subclassc                 C   s  t ddddd }t |j}t|jd  | }tt j	|j
dd tt j	|j
dd tt j	|j
dd tt j	|j
dd td	dD ]}td	dD ]}t||fD ]|\}}|
||}t|j}	|j| |	|< |j| |	|< t|j|	t|||f d
d |jD \}
}}}dd |jD \}}}}t||| || || || f |||
 || || || f t|||f t|jd  t|||f |dkr|}qVqNqGd S )NrE  r#   r"   r   r   OWNDATAr   c                 S      g | ]}|d  qS r  r=   r  dimr=   r=   r>   r    r  z-TestMethods.test_swapaxes.<locals>.<listcomp>c                 S   r  r  r=   r  r=   r=   r>   r    r  )r'   rC   r   r*  indicesr7   r   rK   r   r/  r  rz   	enumerater  r	   r   )rF   rD   r  r   r   rB  r  srcr  r7   i0r>  i2i3j0j1j2j3r=   r=   r>   test_swapaxes  s:   
 zTestMethods.test_swapaxesc                    s  t g d   }t j|j t j|j  t|   t|t   t g dd   }t j|j t j|j  t|   t|t   t g d   }t | t|   t|t   t g d   }t | t|   t|t   t g dt   }t|dd  D  t|   t|t   t g dt tt	 fd	d
 tt	 fdd
 d S )N      ?      rv  y      7@      7@r,  r(  r  r        @)r  rv  r#   r  c                 S   s   g | ]}|  qS r=   	conjugate)r  r  r=   r=   r>   r    r  z.TestMethods.test_conjugate.<locals>.<listcomp>)r  r#   r  r   c                            S rW   )conjr=   r   r=   r>   rU    r  z,TestMethods.test_conjugate.<locals>.<lambda>c                      r  rW   r  r=   r   r=   r>   rU    r  )
r'   r   r  r	   r  r  r  r(   r   r
  )rF   acr=   r   r>   test_conjugate  s<   

zTestMethods.test_conjugatec                 C   s@   t g d}t |}||}||u sJ t||  d S )Nr  )r'   r   
empty_liker  r   )rF   rD   r2  r  r=   r=   r>   test_conjugate_out  s
   

zTestMethods.test_conjugate_outc           
      C   s   g d}|D ]@}t jd|d}t jdg|d}t jdggggg|d}d|}t|}t||| t|}t||| t|}	t|	|| qd S )Nr>  r  r   r  rh   u2u4u8r   r   gr,  DGr  r  r   r   z
dtype: {0})r'   r   r  r   r	   )
rF   r  r  rD   r   r  r  apbpcpr=   r=   r>   test__complex__  s   
zTestMethods.test__complex__c                 C   s   g d}|D ]}t jg d|d}ttt| qt ddg}t jd|d}ttt| t jddg|d}ttt| t d}ttt| t dgd	}ttt| d S )
Nr  r(  r   r  r=  )r  r   )gMb`?r   z1+1jr  )r'   r   r   r
  r   r   )rF   r  r  rD   r   r  r   r   r=   r=   r>   test__complex__should_not_work  s   
z*TestMethods.test__complex__should_not_workN)hrQ   rR   rS   ro  r+  r-  r3  r?  rN  r\  r_  re  rg  rj  r  r   r   r   r'   r3   r   r   r   float16rF  r   rk  rq  r   r   r   r   rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rk  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r9  r=  rE  rF  rG  rH  rO  rv  r  ro  ru  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    






	% 

M

		

 QD

M

([ %	r  c                   @   rV   )TestCequenceMethodsc                 C   s8   t dtdddv  t dtdddv d S )N      @g      0@r         4@)r   r'   rC   r   rE   r=   r=   r>   test_array_contains  s   z'TestCequenceMethods.test_array_containsN)rQ   rR   rS   r  r=   r=   r=   r>   r    r\   r  c                   @   sf   e Zd Zdd Zdd Zejdddgdd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd ZdS )	TestBinopc                 C   s  t tdgtddg ddg tddgd d d }t ||tddg  ddg tdg}tdg}|| }|| }|| }|| }t|| t|d ||d | |  ||  }t|| t|d tdg}tdg}|| | }t|d t|d t|d d S )	N      ?r  r  r"         ?rI   r   g @)r   r'   r   r	   r
   )rF   r   rD   r   r  r=   r=   r>   test_inplace   s0   





zTestBinop.test_inplacec                    s  t jdtft jdtft jdtft jdtft jdtft jdtft jdtft j	dt
ft jdt
ft jdt
ft jdt
ft jdt
ft jdt
ft jdtfdG dd dt  fdddd	 d
d dd dd }		dfdd	}	d fdd	}||tddd ||tddddd ||tddddd ||t jddddddd ||td|dddd ||t jd|dddd ||td dddd ||t jd dddddd d S )NTF)r  subr0   truedivfloordivmoddivmodpowlshiftrshiftandxororr  c                   @   rO   )z7TestBinop.test_ufunc_binop_interaction.<locals>.CoercedNrP   r=   r=   r=   r>   Coerced_  rU   r  c                    s    rW   r=   rE   )r  r=   r>   
array_implb  r  z:TestBinop.test_ufunc_binop_interaction.<locals>.array_implc                 S   r  )Nforwardr=   r  r=   r=   r>   op_imple  r  z7TestBinop.test_ufunc_binop_interaction.<locals>.op_implc                 S   r  )Nreverser=   r  r=   r=   r>   rop_implh  r  z8TestBinop.test_ufunc_binop_interaction.<locals>.rop_implc                 S   r  )Nzin-placer=   r  r=   r=   r>   iop_implk  r  z8TestBinop.test_ufunc_binop_interaction.<locals>.iop_implc                 _   s   d||||fS )N__array_ufunc__r=   )rF   ufuncmethodr  r  r=   r=   r>   array_ufunc_impln     z@TestBinop.test_ufunc_binop_interaction.<locals>.array_ufunc_impl__main__c                    s   d i}|dur||d< D ]}|d |< |d |< |d |< q|dur.||d< | ||d}td	|}t|tjrLtd
ddd|S | S )Nr  F__array_priority____{0}____r{0}____i{0}__r  )r   class_namespacerQ   z(type('MyType', (base,), class_namespace)r   r   r"   )r  ry  
issubclassr'   r5   rC   r   r]   )r   array_priorityarray_ufuncalleged_moduler  opeval_namespaceMyType)r  r  r  opsr  r=   r>   make_objt  s&   z8TestBinop.test_ufunc_binop_interaction.<locals>.make_objc                    s2    D ]\ \}}}d |||f }tjdd|dddg}	|r,|	|	d d  |	D ]f}
t|
d } fdd	}|rJt|| t| n6|rWt|| d d
| n)t	| tj
rvt| jtj
ju rv||| }t|j| ju | n
ttf|| |d t|
d }|r|| }t|d d
|d t|d ||d n)t	| tj
rt| jtj
ju r||| }t|j| ju | n
ttf|| |d |r?t	|
tj
r?t|
d }|rt|| t|d nW|r|| }t|d d
| t|d || tt|d d tu | t|d d d |
u | n%t	| tj
r5t| jtj
ju r5t|| |
u | n
ttf|| |d tt d }|d u rRtt d d }|d u r\tt }t|| |
d| t	| tj
s|ryt||
| d| n|rt||
| d d
| |rt|| |
d d
| q.qd S )Nz-op: %s, ufunc: %s, has_inplace: %s, dtype: %sr   r   r   r"   r   r  c                    s"    dkrt t| t | d S | S )Nr  r   )r   r~   tuple)r  r  r=   r>   first_out_arg  s   zLTestBinop.test_ufunc_binop_interaction.<locals>.check.<locals>.first_out_argr  r   r  r#   r  r%   r2  r  r  r  )itemsr'   rC   r   r  r  r  r	   NotImplementedr~   r5   r  r  r   	__class__r   r
  r  r/   r  )objbinop_override_expectedufunc_override_expectedinplace_override_expectedcheck_scalarr  has_inplacer   r   
check_objsrX   
arr_methodr	  r  arr_rmethodarr_imethodop_fn)r  r  r  r>   check  s   






z5TestBinop.test_ufunc_binop_interaction.<locals>.checki   )r  r#   )r  )r  r   )r   )FFr  )T)r'   r  r  subtractmultiplytrue_dividefloor_divide	remainderr  r  r   
left_shiftright_shiftbitwise_andbitwise_xor
bitwise_orr  r   r(   r5   )rF   r  r  r  r=   )r  r  r  r  r  r  r>   test_ufunc_binop_interactionE  s\   













^

z&TestBinop.test_ufunc_binop_interactionpriorityNruntime errorc                    s\   G  fddd}G dd dt j}t d||  }|jdks$J |d dks,J d S )	Nc                       s$   e Zd Ze fddZdd ZdS )zBTestBinop.test_ufunc_binop_bad_array_priority.<locals>.BadPriorityc                    s    dkrt d S )Nr%  z#RuntimeError in __array_priority__!rd  rE   r$  r=   r>   r    s   zUTestBinop.test_ufunc_binop_bad_array_priority.<locals>.BadPriority.__array_priority__c                 S   r  )Nr  r=   r  r=   r=   r>   __radd__
  r  zKTestBinop.test_ufunc_binop_bad_array_priority.<locals>.BadPriority.__radd__N)rQ   rR   rS   propertyr  r'  r=   r&  r=   r>   BadPriority  s    r)  c                   @      e Zd ZdZdS )zBTestBinop.test_ufunc_binop_bad_array_priority.<locals>.LowPriorityiNrQ   rR   rS   r  r=   r=   r=   r>   LowPriority      r,  r   r&  r   r  )r'   r5   rC   r]   r7   )rF   r$  r)  r,  r  r=   r&  r>   #test_ufunc_binop_bad_array_priority  s
   
z-TestBinop.test_ufunc_binop_bad_array_priorityc                 C   s   G dd d}| }t |dg}td|vod|v t j|dgdd}td|vo,d|v  t|d d t j|dgdd}td|voFd|v  t|d d d S )	Nc                   @   rV   )zDTestBinop.test_ufunc_override_normalize_signature.<locals>.SomeClassc                 _   s   |S rW   r=   rF   r  r  inputskwr=   r=   r>   r    r  zTTestBinop.test_ufunc_override_normalize_signature.<locals>.SomeClass.__array_ufunc__NrQ   rR   rS   r  r=   r=   r=   r>   	SomeClass  r\   r3  r#   sig	signaturezii->i)r4  )r5  )r'   r  r   r	   )rF   r3  rD   r1  r=   r=   r>   'test_ufunc_override_normalize_signature  s   z1TestBinop.test_ufunc_override_normalize_signaturec                 C   s6  G dd d}| }t d}tt |d tt ||d tt j||dd tt j||fdd tt ||d tt j||dd tt j||fdd tt ||d tt |d |d tt |||d tt j||d fdd tt j|||fdd tt j|d |fdd tt j|||fdd tt j|||fdd tt t j||d W d    n1 sw   Y  ttt j||fd tt ||d tt ||d tt |||d tt |||d tt j|||dd tt j|||fdd tt j|||dd d S )	Nc                   @   rV   )z4TestBinop.test_array_ufunc_index.<locals>.CheckIndexc                 _   sN   t |D ]\}}|| u r|  S qt |d D ]\}}|| u r$|f  S qd S r`  )r  )rF   r  r  r0  r1  r   rD   rB  r=   r=   r>   r  ,  s   
zDTestBinop.test_array_ufunc_index.<locals>.CheckIndex.__array_ufunc__Nr2  r=   r=   r=   r>   
CheckIndex+  r\   r7  r  r   r#  r6  r  r#   )	r'   rC   r	   sinmodfr   r
  r)   r  )rF   r7  rD   dummyr=   r=   r>   test_array_ufunc_index'  s:   


z TestBinop.test_array_ufunc_indexc                 C   s   G dd dt j}t dg|}t dg}t dg}t ||| t|d d tt|| d|d< t j|||d t|d d tt|| d S )Nc                   @   rV   )z-TestBinop.test_out_override.<locals>.OutClassc                 _   sF   d|v r!|  }|d t||}||i ||d d d< d S d S )Nr2  r   .)r*  r  r  )rF   r  r  r0  r1  tmp_kwr:  r=   r=   r>   r  Z  s   

z=TestBinop.test_out_override.<locals>.OutClass.__array_ufunc__Nr2  r=   r=   r=   r>   OutClassY  r\   r=  r   rI   r   r   r6  )r'   r5   r   r]   r  r	   r   r~   )rF   r=  r!  rc   r   r=   r=   r>   test_out_overrideW  s   zTestBinop.test_out_overridec                 C   s,  G dd dt j}t jdt jd|}t|d d tt |d  W d    n1 s.w   Y  tt |d  W d    n1 sFw   Y  tt |d	  W d    n1 s^w   Y  tt |d
  W d    n1 svw   Y  tt |d  W d    d S 1 sw   Y  d S )Nc                   @   rV   )z:TestBinop.test_pow_override_with_errors.<locals>.PowerOnlyc                 _   s   |t jurtdS )NPOWER!)r'   r  r  r/  r=   r=   r>   r  o  s   
zJTestBinop.test_pow_override_with_errors.<locals>.PowerOnly.__array_ufunc__Nr2  r=   r=   r=   r>   	PowerOnlyn  r\   r@        @r         @r?  r  r   r#   r%   r"   )r'   r5   r   r   r]   r	   r   r  )rF   r@  rD   r=   r=   r>   test_pow_override_with_errorsl  s$   









"z'TestBinop.test_pow_override_with_errorsc                    s   G  fddd dd }t  d d dg}t|d |d| t|d	 |d	| t|d |d| t|d
 |d
| t|d |d| d S )Nc                       sB   e Zd ZdddZdd Zdd Z fdd	Z fd
dZeZdS )z8TestBinop.test_pow_array_object_dtype.<locals>.SomeClassNc                 S   r  rW   r   r   r=   r=   r>   rZ     r  zATestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__init__c                 S   r  )Nz__mul__ should not be calledr  r  r=   r=   r>   __mul__  r  z@TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__mul__c                 S   r  )Nz__div__ should not be calledrE  r  r=   r=   r>   __div__  r  z@TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__div__c                    s    | j | dS )NrD  rD  )rF   expr3  r=   r>   __pow__  rH   z@TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__pow__c                    s   t | r| j|jkS d S rW   )r~   r   r  rI  r=   r>   r    s   
z?TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__eq__rW   )	rQ   rR   rS   rZ   rF  rG  rJ  r  __rpow__r=   rI  r=   r>   r3    s    
r3  c                    s   t  fdd|D S )Nc                    s   g | ]}|  qS r=   r=   r  rH  r=   r>   r    r  zJTestBinop.test_pow_array_object_dtype.<locals>.pow_for.<locals>.<listcomp>r>  )rH  rX   r=   rL  r>   pow_for  r  z6TestBinop.test_pow_array_object_dtype.<locals>.pow_forr#   r"   r   r  r   r%   rO  )rF   rM  obj_arrr=   rI  r>   test_pow_array_object_dtype  s   z%TestBinop.test_pow_array_object_dtypec                 C   sV   G dd dt j}t d|}tt |
  W d    d S 1 s$w   Y  d S )Nc                   @   rV   )z2TestBinop.test_pos_array_ufunc_override.<locals>.Ac                 _   s   t ||dd |D i |S )Nc                 S   s   g | ]}| tjqS r=   )r]   r'   r5   r  r=   r=   r>   r    s    zVTestBinop.test_pos_array_ufunc_override.<locals>.A.__array_ufunc__.<locals>.<listcomp>)r  )rF   r  r  r0  r  r=   r=   r>   r    s
   zBTestBinop.test_pos_array_ufunc_override.<locals>.A.__array_ufunc__Nr2  r=   r=   r=   r>   r!    r\   r!  r  )r'   r5   r   r]   r   r
  )rF   r!  tstr=   r=   r>   test_pos_array_ufunc_override  s
   
"z'TestBinop.test_pos_array_ufunc_override)rQ   rR   rS   r  r#  r   r   r   r.  r6  r;  r>  rC  rO  rQ  r=   r=   r=   r>   r    s    % 9
0!r  c                   @   r  )TestTemporaryElidec                 C   sF   ddl m} td}||\}}||  t|| t|||  d S )Nr   )incref_elide順 )r   rS  r'   r   r   )rF   rS  r   origr  r=   r=   r>   test_extension_incref_elide  s   

z.TestTemporaryElide.test_extension_incref_elidec                 C   sV   ddl m} ddddtdg}||}t|d td t||d |d   d S )Nr   )incref_elide_lr#   rT  r   )r   rW  r'   r   r   )rF   rW  r   r  r=   r=   r>   !test_extension_incref_elide_stack  s
   z4TestTemporaryElide.test_extension_incref_elide_stackc                 C   sv  t jdt jd}t|| dd  jt d || d }t|jt d t || d}t|jt d || d }t|jt d || d }t|jt t j t jdt jd}t|| |t j jt d |t j}t|| | j|j t jdt j	d}t|| | j|j t j
t jt jfD ]}t jd|d}t|d }t|jt d	|jd   qd S )
Ni@ r   r"      r  r  r  rT  zf%d)r'   r   r   r	   r   r  rF  rn  r   rk  rG  rH  r{  absr1   )rF   r   r   r   r   r  r  r=   r=   r>   test_temporary_with_cast  s*   "z+TestTemporaryElide.test_temporary_with_castc                 C   sB   t jdtd}t jdtd}d| | }t|d t|jd d S )N)  r#   r   r\  r#   )r\  r\  )r'   r   r   r!  r	   r7   )rF   r   r   r   r=   r=   r>   test_elide_broadcast  s
   
z'TestTemporaryElide.test_elide_broadcastc                 C   s$   t  }tt||@  t ju  d S rW   )r'   r  r   r  r   r=   r=   r>   test_elide_scalar  s   z$TestTemporaryElide.test_elide_scalarc                 C   s   t jdt jd}|jd  d S )NrT  r   r"   )r'   r2   r   r  r   r=   r=   r>   test_elide_scalar_readonly  s   z-TestTemporaryElide.test_elide_scalar_readonlyc                 C   s,   t t t ddjd }t|d d S )Nr#   rT  r  r   )r'   r^   rr  r*   flatr	   )rF   r   r=   r=   r>   test_elide_readonly  s   z&TestTemporaryElide.test_elide_readonlyc                 C   s2   t dd d d }|j d }~t|d d S )Ni   r"   r#   )r'   r   r`  r  r	   r  r=   r=   r>   test_elide_updateifcopy  s   z*TestTemporaryElide.test_elide_updateifcopyN)rQ   rR   rS   rV  rX  r[  r]  r^  r_  ra  rb  r=   r=   r=   r>   rR    s    !
	rR  c                   @   sl   e Zd Zdd Zejdejej	gdd Z
ejdejej	gejjeo+ejjdkddd	d
 ZdS )TestCAPIc                 C   sP   ddl m} t|d t|d t|dd  t|d t|d d S )	Nr   )IsPythonScalars   foobarr#   r"   r  r  rD   )r   rd  r   )rF   rd  r=   r=   r>   test_IsPythonScalar  s   zTestCAPI.test_IsPythonScalar	converterc                 C   sb   |ddksJ |ddksJ |t ddksJ |ddks#J |t dgdks/J d S )	NrB   r   r%   r  r  )r  r@  )r@  r>  rF   rf  r=   r=   r>   test_intp_sequence_converters  s
   z&TestCAPI.test_intp_sequence_converters)r   r   r   zPyPy bug in error formattingrw   c                 C   s   t jtdd |t  W d    n1 sw   Y  t jtdd |d W d    n1 s2w   Y  t jtdd |dg W d    n1 sNw   Y  t jtdd |d W d    d S 1 sjw   Y  d S )Nz5expected a sequence of integers or a single integer, matchz?expected a sequence of integers or a single integer, got '32.0'g      @@z2'float' object cannot be interpreted as an integerzMaximum allowed dimension            )r   r;  r
  r(   r)   rg  r=   r=   r>   $test_intp_sequence_converters_errors)  s(   

"z-TestCAPI.test_intp_sequence_converters_errorsN)rQ   rR   rS   re  r   r   r   _multiarray_testsrun_scalar_intp_converterrun_scalar_intp_from_sequencerh  r   r   r  implementationversionrl  r=   r=   r=   r>   rc    s"    
rc  c                   @   rV   )TestSubscriptingc                 C   s<   t g d}tt|d t j tt|d t ju  d S )Nr(  r   rj  )r'   r   r   r~   r   r  r5   r  r=   r=   r>   test_test_zero_rank@  s   z$TestSubscripting.test_test_zero_rankN)rQ   rR   rS   rs  r=   r=   r=   r>   rr  ?  r\   rr  c                   @   s   e Zd Zejjejdkdddd Zdd Z	ejjejdk 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d!S )"TestPicklingrI   zSthis tests the error messages when trying toprotocol 5 although it is not availablerw   c                 C   s   t d}d S rA   rj  )rF   r   r=   r=   r>   $test_correct_protocol5_error_messageG  s   z1TestPickling.test_correct_protocol5_error_messagec                 C   s   t  }tj|ddfgdt fdtfdtfgd}tjdgdtfdtfdtfgd}tdtjd D ]$}t	tj
||d	}t	tj
||d	}t|j|j t|j|j q0d S )
Nr#   r  rD   r   r  r   xxxr#   r  r"   r  )r(   r'   r   r   r  r   rz   r   r{   r|   r}   r	   r   )rF   	my_objectarr_with_objectarr_without_objectr
  depickled_arr_with_objectdepickled_arr_without_objectr=   r=   r>   #test_record_array_with_object_dtypeM  s.   
z0TestPickling.test_record_array_with_object_dtyper  c                 C   s\   t jg dg dgdd}g }tj|d|jd}t|dks J tj||d}t|| d S )	Nr(  rS  r,  r&   rI   )r	  r  r   r  )r'   r   r   r}   r  r   r|   r	   )rF   f_contiguous_arrayr  r  depickled_f_contiguous_arrayr=   r=   r>   test_f_contiguous_arrayb  s   z$TestPickling.test_f_contiguous_arrayc                 C   sr   t dddd d d df }|jjrJ |jjrJ tdtjd D ]}t	tj
||d}t|| q%d S )NrK  r   r   r"   r#   r  )r'   rC   r   rK   r5  r6  rz   r   r{   r|   r}   r	   )rF   non_contiguous_arrayr
  depickled_non_contiguous_arrayr=   r=   r>   test_non_contiguous_arrayt  s   "z&TestPickling.test_non_contiguous_arrayc              
   C   s   t dtjd D ]X}tddgddgddgg}|t|tjdgd	tdffd
tfdtfgdg}dd |D }|D ]}t	|t
tj||dd| d q:~~~t  |D ]	}| d u s_J qVqd S )Nr"   r#   r   r   r   r   r   rv  rD   r   r  r   c                 S   s   g | ]}t |qS r=   )weakrefrefr  rD   r=   r=   r>   r    r  z/TestPickling.test_roundtrip.<locals>.<listcomp>r  %rr   )rz   r   r{   r'   r   r9  r   r   r  r	   r|   r}   r   )rF   r
  r   DATArefsrD   r  r=   r=   r>   test_roundtrip  s(   zTestPickling.test_roundtripc                 C   s   t j|ddS )Nlatin1)encoding)r   r|   rF   r  r=   r=   r>   _loads  r  zTestPickling._loadsc                 C   0   d}t jg dt jd}| |}t|| d S )Ns}   cnumpy.core._internal
_reconstruct
qcnumpy
ndarray
qK UbRq(Kcnumpy
dtype
qUi1K KRq(U|NNJJtbUtb.r.  r   r'   r   r   r  r	   rF   r   rD   r  r=   r=   r>   test_version0_int8     
zTestPickling.test_version0_int8c                 C   r  )Ns   cnumpy.core._internal
_reconstruct
qcnumpy
ndarray
qK UbRq(Kcnumpy
dtype
qUf4K KRq(U<NNJJtbU  ?   @  @@  @tb.r  r  r  r  r   r'   r   rF  r  r	   r  r=   r=   r>   test_version0_float32  r  z"TestPickling.test_version0_float32c                 C   2   d}t ddiddig}| |}t|| d S )Ns   cnumpy.core._internal
_reconstruct
qcnumpy
ndarray
qK UbRq(Kcnumpy
dtype
qUO8K KRq(U|NNJJtb]q(}qUaKs}qUbKsetb.rD   r#   r   r"   r'   r   r  r	   r  r=   r=   r>   test_version0_object     
z!TestPickling.test_version0_objectc                 C   r  )Ns   cnumpy.core._internal
_reconstruct
qcnumpy
ndarray
qK UbRq(KKcnumpy
dtype
qUi1K KRq(KU|NNJJtbUtb.r.  r   r  r  r=   r=   r>   test_version1_int8  r  zTestPickling.test_version1_int8c                 C   r  )Ns   cnumpy.core._internal
_reconstruct
qcnumpy
ndarray
qK UbRq(KKcnumpy
dtype
qUf4K KRq(KU<NNJJtbU  ?   @  @@  @tb.r  r   r  r  r=   r=   r>   test_version1_float32  r  z"TestPickling.test_version1_float32c                 C   r  )Ns   cnumpy.core._internal
_reconstruct
qcnumpy
ndarray
qK UbRq(KKcnumpy
dtype
qUO8K KRq(KU|NNJJtb]q(}qUaKs}qUbKsetb.rD   r#   r   r"   r  r  r=   r=   r>   test_version1_object  r  z!TestPickling.test_version1_objectc                 C   s0   d}t jdgddgd}| |}t|| d S )Ns  cnumpy.core.multiarray
_reconstruct
p0
(cnumpy
ndarray
p1
(I0
tp2
S'b'
p3
tp4
Rp5
(I1
(I1
tp6
cnumpy
dtype
p7
(S'V6'
p8
I0
I1
tp9
Rp10
(I3
S'|'
p11
N(S'a'
p12
g3
tp13
(dp14
g12
(g7
(S'V4'
p15
I0
I1
tp16
Rp17
(I3
S'|'
p18
(g7
(S'i1'
p19
I0
I1
tp20
Rp21
(I3
S'|'
p22
NNNI-1
I-1
I0
tp23
b(I2
I2
tp24
tp25
NNI4
I1
I0
tp26
bI0
tp27
sg3
(g7
(S'V2'
p28
I0
I1
tp29
Rp30
(I3
S'|'
p31
(g21
I2
tp32
NNI2
I1
I0
tp33
bI4
tp34
sI6
I1
I0
tp35
bI00
S'\x01\x01\x01\x01\x01\x02'
p36
tp37
b.)r#   r-  )rD   r>  r  )r   r>  r"   r   r  r  r=   r=   r>   test_subarray_int_shape  r  z$TestPickling.test_subarray_int_shapec                 C   sZ   t jdggdd}|jdd}|jd|_|jdd tt|}t	|j|j d S )	Nz2015-02-24T00:00:00.000000000zdatetime64[ns]r   r  r&   rp  Tinplace)
r'   r   r*  r   r_  r^  r   r|   r}   r	   )rF   originaloriginal_byte_reversednewr=   r=   r>   test_datetime64_byteorder  s   z&TestPickling.test_datetime64_byteorderN)rQ   rR   rS   r   r   r   r   r{   ru  r}  r  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   rt  F  s*    

rt  c                   @   rA  )TestFancyIndexingc                 C   sl   t d}d|d d dgf< t|t dgg t d}d|d d d d dgf< t|t dggg d S )Nr  r  r   rE  r'   r   r   r   r  r=   r=   r>   	test_list  s   

zTestFancyIndexing.test_listc                 C   sh   t d}d|d d df< t|t dgg t d}d|d d d d df< t|t dggg d S )Nr  r  r#  rE  r  r  r=   r=   r>   
test_tuple  s   

zTestFancyIndexing.test_tuplec                 C   s8   t g d}t g dt}t|| t dg d S )Nr.  r   r#   r   r   r"   r'   r   r!  r   rF   r   rZ  r=   r=   r>   	test_mask  s   zTestFancyIndexing.test_maskc                 C   s   t g dg dg}t ddgt}t g dg dgt}t g dg dgt}t|| t g dg t|| t dd	g t|| t dg d S )
Nr.  r]  r   r#   r  r#   r   r   r   rs  r"   rI   r  )rF   r   rZ  m2m3r=   r=   r>   
test_mask2  s   zTestFancyIndexing.test_mask2c                 C   s>   t g d}t g dt}d||< t|t g d d S )Nr.  r  rI   )r#   rI   r   r   r  r  r=   r=   r>   test_assign_mask  s   z"TestFancyIndexing.test_assign_maskc                 C   s   t g dg dg}t ddgt}t g dg dgt}t g dg dgt}| }d||< t|t g dg d	g | }d||< t|t g d
g dg | }d||< t|t g d
g dg d S )Nr.  r]  r   r#   r  r  rs  rB   )rB   rB   rB   rB   )r#   rB   r   r   )rB   r   r   r   )r'   r   r!  r*  r   )rF   xorigrZ  r  r  r   r=   r=   r>   test_assign_mask2  s    z#TestFancyIndexing.test_assign_mask2N)	rQ   rR   rS   r  r  r  r  r  r  r=   r=   r=   r>   r    s    		r  c                   @   ru  )TestStringComparec                       t g d t g dt k fdddD  t k fdddD  t k fdddD  t k fdddD  t k  fd	ddD  t k fd
ddD  d S )NThisisexampler  wasr  c                       g | ]
} | | kqS r=   r=   r  g1g2r=   r>   r    r  z1TestStringCompare.test_string.<locals>.<listcomp>rC  c                       g | ]
} | | kqS r=   r=   r  r  r=   r>   r    r  c                       g | ]
} | | kqS r=   r=   r  r  r=   r>   r    r  c                       g | ]
} | | kqS r=   r=   r  r  r=   r>   r    r  c                       g | ]
} | | k qS r=   r=   r  r  r=   r>   r    r  c                       g | ]
} | | kqS r=   r=   r  r  r=   r>   r    r  r.  rE   r=   r  r>   test_string	     "zTestStringCompare.test_stringc                    s   t g d}d t| k fdd|D  t| k fdd|D  t| k  fdd|D  t| k fdd|D  t| k fdd|D  t| k fd	d|D  d S )
N)spamspaspammerzand eggsr  c                    s   g | ]}| kqS r=   r=   r  r  r=   r>   r    r  z0TestStringCompare.test_mixed.<locals>.<listcomp>c                    s   g | ]}| kqS r=   r=   r  r  r=   r>   r    r  c                    s   g | ]}| k qS r=   r=   r  r  r=   r>   r    r  c                    s   g | ]}| kqS r=   r=   r  r  r=   r>   r    r  c                    s   g | ]}| kqS r=   r=   r  r  r=   r>   r    r  c                    s   g | ]}| kqS r=   r=   r  r  r=   r>   r    r  r.  )rF   r  r=   r  r>   
test_mixed  s    zTestStringCompare.test_mixedc                    r  )Nr  r  c                    r  r=   r=   r  r  r=   r>   r     r  z2TestStringCompare.test_unicode.<locals>.<listcomp>rC  c                    r  r=   r=   r  r  r=   r>   r  !  r  c                    r  r=   r=   r  r  r=   r>   r  "  r  c                    r  r=   r=   r  r  r=   r>   r  #  r  c                    r  r=   r=   r  r  r=   r>   r  $  r  c                    r  r=   r=   r  r  r=   r>   r  %  r  r.  rE   r=   r  r>   test_unicode  r  zTestStringCompare.test_unicodeN)rQ   rR   rS   r  r  r  r=   r=   r=   r>   r    s    

r  c                   @   s,  e Zd Zg dZejdejdd eD  ejde	j
e	jgdd Zejddd	gd
d Zejdddgdd Zejdddgejdddgdd Zejde	jdddfe	jdddfgdd Zejdde	j
fde	jfgdd Zejjdd ejd!d"d#gd$d% Zd&S )'TestArgmaxArgminCommon)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  z
size, axisc                    s8   g | ]  fd dt tt  t dg D qS )c                    s   g | ]} |fqS r=   r=   )r  r#  r9   r=   r>   r  /  s    z,TestArgmaxArgminCommon.<listcomp>.<listcomp>N)r  rz   r   )r  r=   r  r>   r  /  s
    

z!TestArgmaxArgminCommon.<listcomp>r  c                 C   s  t jj|d}|d u rdd tt|D }nt|}d||< t|}|||d}||}|||dd}t|| t	|j
|k t j|j
|jd}	||||	dd	}
t	|
|	u  t||	 t|d
krt|}|d urpd||< nd|d
< t j||jd}tt ||j||dd	 W d    n1 sw   Y  |d u rdd tt|D }nt|d d d }d||< t|}||j|d}||}||j|dd}t|| t	|j
|k t j|d d d |jd}	|	j}	||j||	dd	}
t	|
|	u  t||	 t|d
kr&tt ||d
 ||	dd	 W d    n	1 s!w   Y  t|d
krit|}|d ur;d||< nd|d
< t j||jd}tt ||j||dd	 W d    d S 1 sbw   Y  d S d S )Nr  c                 S   r  r  r=   r  r  r=   r=   r>   r  9  r  zITestArgmaxArgminCommon.test_np_argmin_argmax_keepdims.<locals>.<listcomp>r#   r%  Tr#  keepdimsr   )r#  r2  r  r   r"   c                 S   r  r  r=   r  r=   r=   r>   r  W  r  r%   )r'   r  normalrz   r   r  r  r   r	   r   r7   r2   r   r   r;  r)   r"  )rF   r9   r#  r  rX   	new_shape	_res_origres_origr  outarrayres1wrong_shapewrong_outarrayr=   r=   r>   test_np_argmin_argmax_keepdims/  s~   










$z5TestArgmaxArgminCommon.test_np_argmin_argmax_keepdimsr   minc           	   	   C   s   t jddd}t|d| }t||}t|jD ])}||}||}tt|j}|| tt 	||j
|j|g|R   k qd S )Nr   r#   )r   rI   r   r   r   arg)r'   r  r  r  rz   r   r  remover   r'  r:  r9  )	rF   r  rD   
arg_method
val_methodr   a_maxminaarg_maxminaxesr=   r=   r>   test_all{  s   

zTestArgmaxArgminCommon.test_allargmaxargminc                 C   s   t d}t||}t jdt jd}tt|d| t jdt jd}tt|d| t jdt jd}tt|d| t jdt jd}|d|d t||d d S )	N)rB   rI   r@  r   r%   r*  r#   rB   rB   r6  )r'   r   r  r   r   r)   r	   )rF   r  rD   r  r2  r=   r=   r>   test_output_shape  s   

z(TestArgmaxArgminCommon.test_output_shaper   r   r#   c                 C   sL   t dd|  }t||}t jd| t jd}|d|d}||u s$J d S )Nr   r  r   r   r#  r2  )r'   r   r  r2   r  )rF   r   r  rD   r  r2  r>  r=   r=   r>   test_ret_is_out  s
   
z&TestArgmaxArgminCommon.test_ret_is_outznp_array, method, idx, vali6  asiq  0c                 C   s.   |ddd}t ||}|||< t| | d S )Ni  z<U9r   )r  r	   )rF   np_arrayr  r  r  r   r  r=   r=   r>   r    s   
z#TestArgmaxArgminCommon.test_unicodezarr_method, np_methodc                 C   s   t jjdd}t||}t jdtd}t jdtd}t|d|||d| t|| t jdtd}t jdtd}t||dd|||dd t|| d S )	Nr   r  r"   r   r#   r   r   )r2  r#  )r'   r  r  r  r*   r   r	   )rF   r  	np_methodrD   r  out1out2r=   r=   r>   test_np_vs_ndarray  s   

z)TestArgmaxArgminCommon.test_np_vs_ndarrayzreplaces None with NULL.rw   zmethod, vals)r  )rB   r   )r  )r   rB   c                 C   sl   t jddd}t||}t|jjd|j t| d |d |d< t| d |d |d< t| d d S )Nr   r  r   r   r   r#   )r'   r2   r  r  r  r$   r   r	   )rF   r  rg   rD   r  r=   r=   r>   test_object_with_NULLs  s   
z-TestArgmaxArgminCommon.test_object_with_NULLsN)rQ   rR   rS   sizesr   r   r   	itertoolschainr'   r  r  r  r  r  r  r*   r   r  r  leaks_referencesr  r=   r=   r=   r>   r  '  sB    H



r  c                   @   s  e Zd Zg ddfg ddfg ddfg ddfgZeg ddfg d	dfg Zd
d eeejej	ej
ejfD Zedd eeejejejejejejfD  Zedd eddddejgdfdddejdgdfejddddgdfejdejddgdfdgd ejg dfdgd ejg dfdgd ejg dfdgd ejg dfdgd ejg dff	ejejfD  Zeddddedejgdfddddeejdgdfdddeejddgdfdddedejdgdfedejddddgdfeejejddddgdfeejdeejdeejdgdfeejejeejdeejdgdfeejdeejdeejejgdfeddeddeddgdfeddeddeddgdfeddeddeddgdfededededededgdfedededed ed!ed"gdfed#ed#eded#ed$ed%gdfed&ed'ed#ed(ed)ed*gdfedd+edd+ed#d+edd+gdfed#d+gd dfedd,d-edd.d-ed/d0d-gdfedd1d-ed2dd-edd,d-gdfed2d3d-ed2dd-ed2d1d-gdfg d4dfg d5dfg d6dfg d7dfg Zejd8ed9d: Zd;d< Zd=S )>
TestArgmax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   rI   r   r   r   r   r   rI   r   r   r"   r#   r   r#   r"   r   r   r  r   r   r%   r   r#   r"   r   r   r%   r   r   r  c                 C   *   g | ]\}}t j|d  |d|d fqS r   r   r#   r>  r  r   r  r=   r=   r>   r       * zTestArgmax.<listcomp>c                 C   r  r  r>  r  r=   r=   r>   r    r  c                 C   r  r  r>  r  r=   r=   r>   r    r  r#   r"   r   r   r)  '   O      1923-04-14T12:43:121994-06-21T14:43:152001-10-15T04:10:321995-11-25T16:02:162005-01-04T03:14:122041-12-03T14:05:03rI   1935-09-14T04:40:111949-10-12T12:32:112010-01-03T05:14:12z2015-11-20T12:20:59z1932-09-23T10:10:13z2014-10-10T03:50:30NaT2015-09-23T10:10:131932-10-10T03:50:302059-03-14T12:43:121996-09-21T14:43:152022-12-25T16:02:161963-10-04T03:14:122013-05-08T18:15:23r   r  daysseconds#   r%      rJ  rB   rE  )FFFFT)FFFTF)TFFFF)TFTFFr$   c           	      C     |\}}t  }|td t|}W d    n1 sw   Y  tt||d| d t|t| |d| d t|d}|d }tt||d| d t|t| |d| d tt|d}t	||f}|}tt||d| d t|t| |d| d d S Nz#invalid value encountered in reducer  r      i  )
r   filterRuntimeWarningr'   r   r	   r  rY  r  r  )	rF   r$   rX   possupr  rarrrpospaddr=   r=   r>   test_combinations4  $    zTestArgmax.test_combinationsc                 C      t jg dt jd}tt |d |d tt |d t jg dt jd}tt |d |d tt |d t jg dt jd}tt |d |d tt |d t jg dt jd}tt |d |d tt |d d S )N)r#      r   r#   r   )r#      )r#   r     )r#   r           )	r'   r   r   r	   r  rY  r   r   r   r   r=   r=   r>   test_maximum_signed_integersL      



z'TestArgmax.test_maximum_signed_integersN)rQ   rR   rS   usg_datasg_datar  productr'   r3   r   r   r   darrr   r   r   r   rF  r   rk  r   
datetime64timedelta64r   nan_arrr   r   r   r(  r1  r=   r=   r=   r>   r    s    





$&&










;
r  c                   @   s  e Zd Zg ddfg ddfg ddfg ddfgZeg d	dfg d
dfg Zdd eeejej	ej
ejfD Zedd eeejejejejejejfD  Zedd eddddejgdfdddejdgdfejddddgdfejdejddgdfdgd ejg dfdgd ejg dfdgd ejg dfdgd ejg dfdgd ejg dff	ejejfD  Zeddddedejgdfddddeejdgdfdddeejddgdfdddedejdgdfedejddddgdfeejejddddgdfeejdeejdeejdgdfeejejeejdeejdgdfeejdeejdeejejgdfeddeddeddgdfeddeddeddgdfeddeddeddgdfededededededgdfedededed ed!ed"gd#fed$ed$eded$ed!ed"gdfed%ed&ed$ed'ed(ed)gdfedd*edd*ed$d*edd*gdfed$d*gd dfed#d+d,edd-d,ed.d/d,gdfedd0d,ed1d#d,ed#d+d,gdfed1d2d,ed1d#d,ed1d0d,gdfg d3dfg d4dfg d5dfg d6dfg Zejd7ed8d9 Zd:d; Zd<S )=
TestArgminr  r   r  r   r  r   r  r   r  r   c                 C   r  r  r>  r  r=   r=   r>   r  m  r  zTestArgmin.<listcomp>c                 C   r  r  r>  r  r=   r=   r>   r  r  r  c                 C   r  r  r>  r  r=   r=   r>   r  w  r  r#   r"   r   r   r)  r  r  r  r  r	  r
  r  r  r  r  r  r  z2014-11-20T12:20:59r  r  rI   r  r  r  r  r  r  r   r  r  r  r%   r  rJ  rB   rE  )TTTTF)TTTFT)FTTTTFTFTTr$   c           	      C   r  r  )
r   r!  r"  r'   r  r	   r  rY  r   r  )	rF   r$   rX   r#  r$  min_valr%  r&  r'  r=   r=   r>   r(    r)  zTestArgmin.test_combinationsc                 C   r*  )N)r#   r,  ir+  r   r#   r   )r#   r.  ir-  )r#   r/  i  r  )r#   r0  l r  )	r'   r   r   r	   r  rY  r   r   r   r   r=   r=   r>   test_minimum_signed_integers  r2  z'TestArgmin.test_minimum_signed_integersN)rQ   rR   rS   r3  r4  r  r5  r'   r3   r   r   r   r6  r   r   r   r   rF  r   rk  r   r7  r8  r   r9  r   r   r   r(  r=  r=   r=   r=   r>   r:  b  s    





$&&










;
r:  c                   @   ru  )
TestMinMaxc                 C   sx   t tjtjdd t tjtjdd ttjdddd ttjdddd ttjdd dd ttjdd dd d S )Nr#   r   r%  )r   r'   r/  amaxaminr	   rE   r=   r=   r>   test_scalar  s   zTestMinMax.test_scalarc                 C   s4   t tjtjg dd ttjg dgddd d S )Nr(  ry   r#   r%  r   )r   r'   r/  r?  r	   rE   r=   r=   r>   	test_axis  s   zTestMinMax.test_axisc                 C   sv   dD ]6}t d|}tt ||d  tt ||d  d|d< tt ||d  tt ||d  qd S )N)zm8[s]zm8[Y]rB   r   r   r  r   )r'   rC   rn  r	   r@  r?  )rF   r   rD   r=   r=   r>   test_datetime  s   zTestMinMax.test_datetimeN)rQ   rR   rS   rA  rB  rC  r=   r=   r=   r>   r>    s    	r>  c                   @   rV   )TestNewaxisc                 C   s:   t g d}d|d d t jf  }t| d|  d S )N)r   gg?   )r'   r   r  r
   r  )rF   skr  r=   r=   r>   
test_basic  s   zTestNewaxis.test_basicNrQ   rR   rS   rG  r=   r=   r=   r>   rD  
  r\   rD  c                   @   sB   e Zd Zdd Z		dddZdd Zd	d
 Zdd Zdd ZdS )TestClipc                 C   s(   t t||k t t||k d S rW   )r   r'   r'  )rF   r   cmincmaxr=   r=   r>   _check_range     zTestClip._check_rangeFNc                 C   s   |d u r|}|d u r|}t j| D ]R}tjdkrddg}	nddg}	|	D ]?}
t ||
}t jd| |}|rD|j|||dd n|||}d}
|jjdkrTd}
t	|jj|
 | 
||| q#q|S )	Nr  =><ry   rU  rV  |)r'   sctypesr  r  r   r_  r  rn  clipr	   rL  )rF   
type_group	array_maxclip_minclip_maxr  expected_minexpected_maxr"  byte_ordersr  r   r   r=   r=   r>   
_clip_type  s*   

zTestClip._clip_typec              	   C   s   dD ]?}| j dddd|d | j dddd|d | j ddd	d
|d | j dddd|d | j dddd|d | j ddd	d
|dd qd S )N)FTr     g)gY@r  r   r   ir  uint)r  rX  )r[  )rF   r  r=   r=   r>   rG  8  s(   




zTestClip.test_basicc                 C   s8   t jddgg dd}|d dd}| |dd d S )Nr  r  r  rA  r  r  )r   rI  )r  rI  zrI  r   r   g333333ӿr  )r'   r   rS  rL  )rF   r@  r  r=   r=   r>   test_record_arrayI  s
   
zTestClip.test_record_arrayc                 C   sj   t g d}|d}tt |dk |jdd}tt |dk |jdd}tt |dk d S )Nr  r   )r  r   )r   )r'   r   rS  r   r'  )rF   r  r   r=   r=   r>   test_max_or_minO  s   
zTestClip.test_max_or_minc                 C   sN   t dt jdddt jg}|dd}t dt jdddt jg}t|| d S )	N       r  r  r  r%   r#         r  )r'   r   rk  rS  r   )rF   	input_arrr  r  r=   r=   r>   test_nanX  s   zTestClip.test_nan)FNN)	rQ   rR   rS   rL  r[  rG  rc  rd  rh  r=   r=   r=   r>   rI    s    
"	rI  c                   @   ru  )TestCompressc                 C   sl   g dg}t ddd}t jddg|dd}t|| ddgd	d
gg}t jg d|dd}t|| d S r.  r/  r1  r=   r=   r>   rB  `  s   

zTestCompress.test_axisc                 C   s@   dgdgg}t ddd}t jddg|dd}t|| d S )Nr#   r   rB   r"   rI   r   r%  r/  r1  r=   r=   r>   test_truncatej  s   zTestCompress.test_truncatec                 C   s0   t ddd}t ddg|}t|d d S )NrB   r"   rI   r   r#   r/  rF   rX   r2  r=   r=   r>   rO  p  s   zTestCompress.test_flattenN)rQ   rR   rS   rB  rj  rO  r=   r=   r=   r>   ri  _  s    
ri  c                   @   sR   e Zd Zdd Zdd Zdd Zejddd	d
 Z	dd Z
dd Zdd ZdS )TestPutmaskc                 C   s(   t ||| t|| t || d S rW   )r'   putmaskr	   r   )rF   r   r"  maskr  r=   r=   r>   	tst_basicw  s   zTestPutmask.tst_basicc              	   C   s   t ttjg}tjdd }|dk }dD ]8}tj D ]}|D ]}||vr2| | 	|||| qqt
d}| |	||j|||d d  qd S )Nry   r  r	  )r   r"  S3r   )r   r   r'   r  r  rR  rs   ro  r*  rn  r   r  )rF   unchecked_typesr   rn  r  rr   r"  r  r=   r=   r>   test_ip_types{  s   
(zTestPutmask.test_ip_typesc                 C   s"   t ttjtg ddgd d S )Nr(  TrI   )r   r)   r'   rm  r   rE   r=   r=   r>   test_mask_size  s   "zTestPutmask.test_mask_sizer   r{  rz  c                 C   s4   t g d|}t |g dd t|g d d S )Nr(  r  r%   )r%   r"   r%   r'   r   rm  r   rF   r   r   r=   r=   r>   test_byteorder  s   zTestPutmask.test_byteorderc                 C   s   t jddgg dd}t |d ddgd t|d dd	g t|d
 ddg t|d ddg t |d
 ddgd t|d dd	g t|d
 ddg t|d ddg d S )Nr^  r_  r`  )r  rM  ra  r   r   TFrB   rI   r  r"   r   rb  r   r@  rv  )rF   r@  r=   r=   r>   rc    s   
zTestPutmask.test_record_arrayc                 C   s   t g d}t |dd g d|d d  t|t g d t g d}t |dd |d d g d t|t g d d S )	NTFTFr#   r   r   r   )TTFTr  )TTTT)r'   r   rm  r	   r  r=   r=   r>   test_overlaps  s   ""zTestPutmask.test_overlapsc                 C   sT   t d}d|j_tt t ||dkd W d    d S 1 s#w   Y  d S )NrI   Fr"   r   )r'   rC   rK   rL   r   r;  r)   rm  r   r=   r=   r>   rN     s
   
"zTestPutmask.test_writeableN)rQ   rR   rS   ro  rs  rt  r   r   r   rx  rc  r{  rN   r=   r=   r=   r>   rl  v  s    

rl  c                   @   st   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dddd Zdd Zdd Zej	
dg ddd ZdS )TestTakec                 C   s*   t t|jd }t|j|dd| d S )Nr   r%  )r  rz   r7   r   take)rF   r   r  r=   r=   r>   ro    s   zTestTake.tst_basicc                 C   sl   t ttjg}tjdd }d|_tj D ]}|D ]}||vr*| |	 
| q| |
d qd S )NrE  r  r  rq  )r   r   r'   r  r  r7   rR  rs   ro  r*  rn  )rF   rr  r   rr   r"  r=   r=   r>   rs    s   zTestTake.test_ip_typesc                 C   sb   t jdd }d|_tt|jg ddd tt|jdgdd t|jdgddd |d	  d S )
NrE  r  r  rC  r   r%  r   r%   r#   )r'   r  r7   r   r  r}  r   r  r=   r=   r>   
test_raise  s
   "zTestTake.test_raisec                 C   sZ   t jdd }d|_t|jdgdddd |d  t|jdgdddd |d	  d S )
NrE  r  r  r%   r   rS  r#  r9  r"   r#   r'   r  r7   r   r}  r  r=   r=   r>   	test_clip  s    $zTestTake.test_clipc                 C   sz   t jdd }d|_t|jdgdddd |d  t|jd	gdddd |d  t|jd
gdddd |d  d S )NrE  r  r  r%   r   r7  r  r#   r"   r   r  r  r=   r=   r>   	test_wrap  s
     $zTestTake.test_wrapr   ru  c                 C   s,   t g d|}t|g dg d d S )Nr(  )r   r"   r#   rT  )r'   r   r   r}  rw  r=   r=   r>   rx    s   zTestTake.test_byteorderc                 C   sB   t jddgg dd}|dg}t|d dko|d d	k d S )
Nr^  r_  ry  r   r#   r   rA  r  r  )r'   r   r}  r   )rF   r@  rec1r=   r=   r>   rc    s
   
 zTestTake.test_record_arrayc                 C   s@   t d}t j|g d|dd dd}t|t g d d S )NrI   r(  r"   r7  r8  )r'   rC   r}  r	   r   r  r=   r=   r>   test_out_overlap  s   
zTestTake.test_out_overlapr7   )r-  r  r=   c                 C   sJ   t d}t j|t jd}t j||jd}t j|||d}||u s#J d S )NrI   r   r6  )r'   rC   r*   r  r   r}  )rF   r7   r   indsr2  r>  r=   r=   r>   r    s
   
zTestTake.test_ret_is_outN)rQ   rR   rS   ro  rs  r~  r  r  r   r   r   rx  rc  r  r  r=   r=   r=   r>   r|    s    
r|  c                   @   sn   e Zd Zejdejejej	ej
ejejejejejejejgdd Zdd Zdd Zdd	 Zd
d ZdS )TestLexsortr   c                 C   sb   t jg d|d}t jg d|d}t ||f}t g d}t|| t|| t | d S )Nr#   r"   r#   r   r#   rI   r   r   r   rI   r   r"   r   r   r   r"   r#   r   rI   )r'   r   lexsortr   r  )rF   r   rD   r   r  expected_idxr=   r=   r>   rG    s   
zTestLexsort.test_basicc                 C   sJ   t g d}t jg ddd}t ||f}t g d}t|| d S )Nr  r  r  r   r  r'   r   r  r   rF   rD   r   r  r  r=   r=   r>   r    s
   zTestLexsort.test_mixedc                 C   s   t jg ddd}t jg ddd}t ||f}t g d}t|| t jg ddd}t jg ddd}t ||f}t g d}t|| d S )NrD  r  r   rG  r  r  r  r=   r=   r>   rC    s   
zTestLexsort.test_datetimec              	   C   s   t jdd}t jg dd}||fD ]}t |df}t j|dd}t|| q||f||ffD ]>\}}t ||f}t|t |d|f t|t ||df t j|ddt j|dd}}t|t ||f q4d S )	NrB   ry   )abcxywzefghiqwstr   r  	mergesortrm  r(   r   )r'   r  choicer  rn  r  r   r   )rF   rD   r   rh  r  r  r   r  r=   r=   r>   test_object  s   zTestLexsort.test_objectc                 C   s.   t ddddd}tt jt j|dd d S )Nr  r  ~   r  r   r"   r%  )r'   r
  r   r   r/  r  r  r=   r=   r>   test_invalid_axis(  s   zTestLexsort.test_invalid_axisN)rQ   rR   rS   r   r   r   r'   r3   r   r   r   r   r   r   r   r  rF  r   rG  r  rC  r  r  r=   r=   r=   r>   r    s    
r  c                   @   s  e Zd ZdZe dd Zejddg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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/d0 Zd1d2 Zejjed3d4d5d6 Z d7d8 Z!ejd9d:gdd;d< Z"d=d> Z#d?d@ Z$dAdB Z%dCdD Z&ejj'dEdF Z(dGdH Z)dIdJ Z*dKdL Z+dMdN Z,dOdP Z-dQdR Z.dSdT Z/dUdV Z0dWdX Z1dYdZ Z2d[d\ Z3d]d^ Z4d_d` Z5dadb Z6dcdd Z7deS )fTestIOz.Test tofile, fromfile, tobytes, and fromstringc                 C   sN   d}t jj}||||td  }t jt jt j t jg|dd d df< |S )N)r"   r   r   r  r   r#   )r'   r  rn  r   rk  inf)rF   r7   r  r   r=   r=   r>   r   /  s
   $zTestIO.xstringpath_obj)paramsc                 c   s&    |d }|j dkrt|}|V  d S )Nfiler  )r4  r   )rF   tmp_pathrequestfilenamer=   r=   r>   tmp_filename7  s
   

zTestIO.tmp_filenamec                    s>   t   tttj tjd td}tt fdd| d S )Nr  r   c                    s
   |   S rW   tofiler   r   r=   r>   rU  G  r  z$TestIO.test_nofile.<locals>.<lambda>)r{  r|  r   OSErrorr'   fromfiler3   r   r8  r=   r  r>   test_nofileA  s   
zTestIO.test_nofilec                 C   s4   t jg dt jd}t jddt jd}t|| d S )Nrz  r   z1 0 -2.3 0.0 sepr   )r'   r   r  rp   r   )rF   r   r  r=   r=   r>   test_bool_fromstringI  s   zTestIO.test_bool_fromstringc                 C   4   t jdt jdd}t jddgt jd}t|| d S )Nz#9923372036854775807 104783749223640r  r   r  l   *M    M<3} r   )r'   rp   r   r   r   r/  r=   r=   r>   test_uint64_fromstringN  
   zTestIO.test_uint64_fromstringc                 C   r  )Nz-25041670086757 104783749223640r  r  le o[r  r   )r'   rp   r   r   r   r/  r=   r=   r>   test_int64_fromstringT  r  zTestIO.test_int64_fromstringc                 C   s&   t jddt jdd}|jdksJ d S )Nz1,2,r   )r  r   countr#  )r'   rp   r   r7   r8  r=   r=   r>   test_fromstring_count0Z  s   zTestIO.test_fromstring_count0c                 C   sH   t |d}W d    n1 sw   Y  t|}t|jdkd d S )Nr   r   Array not emptyopenr'   r  r   r9   rF   r  r   r  r=   r=   r>   test_empty_files_text^  s
   
zTestIO.test_empty_files_textc                 C   sL   t |d}W d    n1 sw   Y  tj|dd}t|jdkd d S )Nwbr  r  r   r  r  r  r=   r=   r>   test_empty_files_binaryd  s
   zTestIO.test_empty_files_binaryc                 C   s~   t |d}|| W d    n1 sw   Y  t |d}tj||jd}W d    n1 s2w   Y  t||j d S )Nr  rbr   )r  r  r'   r  r   r   r`  rF   r   r  r   r  r=   r=   r>   test_roundtrip_filej  s   zTestIO.test_roundtrip_filec                 C   s*   | | tj||jd}t||j d S r  )r  r'   r  r   r   r`  )rF   r   r  r  r=   r=   r>   r  r  s   
zTestIO.test_roundtripc                 C   s0   t |}|| tj|dd}t|| d S )NT)allow_pickle)pathlibPathdumpr'   r  r   )rF   r   r  r  r  r=   r=   r>   test_roundtrip_dump_pathlibw  s   

z"TestIO.test_roundtrip_dump_pathlibc                 C   sR   |  }tj||jd}t||j | d}tj||jd}t||d d S )Nr   r,  )tobytesr'   rl   r   r   r`  rI  rF   r   r   r  r=   r=   r>   test_roundtrip_binary_str}  s   
z TestIO.test_roundtrip_binary_strc                 C   sd   |j  }dtt|}tj|dd}t| }t|| ||  t	||  ||  dd d S )N@r  rI   decimal)
r  r  r  r1  r   r'   rp   isfiniter   r   )rF   r   r   r  nan_maskr=   r=   r>   test_roundtrip_str  s   
zTestIO.test_roundtrip_strc                 C   s6   |j  }dtt|}tj|dd}t|| d S )Nr  r  )r  r  r  r1  rW  r'   rp   r   r  r=   r=   r>   test_roundtrip_repr  s   
zTestIO.test_roundtrip_reprc                 C   sh   | | dd }tj|ddd}||_||_tttj||j	d W d    d S 1 s-w   Y  d S )Nc                  _   r  )NzCan not tell or seek)r  r  r=   r=   r>   fail  r  z-TestIO.test_unseekable_fromfile.<locals>.failr  r   	bufferingr   )
r  r{  r  r~  tellr   r  r'   r  r   )rF   r   r  r  r   r=   r=   r>   test_unseekable_fromfile  s   
"zTestIO.test_unseekable_fromfilec                 C   s\   | | tj|ddd}tj||jd}t||j W d    d S 1 s'w   Y  d S )Nr  r   r  r   r  r{  r  r'   r  r   r   r`  r  r=   r=   r>    test_io_open_unbuffered_fromfile  s
   
"z'TestIO.test_io_open_unbuffered_fromfilec                 C   s2  t d}|| ttj||j t|t 	| t
|d}||j || ttj||jd  W d    n1 sCw   Y  t
|d  t
|d}|| W d    n1 sdw   Y  t|t 	| t
|d}|| W d    n1 sw   Y  ttj||jd  d S )Ni  @ r+br"   r   r  )r'   r*   r  r	   ospathgetsizer   r   r  r  r~  close)rF   r  r   r   r=   r=   r>   test_largish_file  s$   


zTestIO.test_largish_filec                 C   sZ   | | tj|ddd}tj||jd}W d    n1 s w   Y  t||j d S )Nr  r%   r  r   r  r  r=   r=   r>   test_io_open_buffered_fromfile  s
   
z%TestIO.test_io_open_buffered_fromfilec              
   C   s   t jd t jt jd g}|D ]\}t|d}||d  |d W d    n1 s,w   Y  dD ]6}d||f }t||}|d tj|tjdd |	 }W d    n1 s]w   Y  t
|d	|d
 q3qd S )Nr   r  r#       )r  r  z%d %sr"   r   r  rB   r   )r{  DEFAULT_BUFFER_SIZEr  r~  re   readr'   r  r   r  r	   )rF   r  r  r9   r   r9  r   r#  r=   r=   r>   !test_file_position_after_fromfile  s&   

z(TestIO.test_file_position_after_fromfilec              	   C   s"  t jd t jt jd g}|D ]}d|f }t|d.}||d  |d |d |d tjdgtjd	| |	 }W d    n1 sKw   Y  t
|d
|d t|d#}|d |dd tjdgtjd	| |	 }W d    n1 sw   Y  t
|d|d qd S )Nr   z%dr  r#   r  rB   s   12r   r   r   r   r  r"   )r{  r  r  r~  re   r'   r   r   r  r  r	   r  )rF   r  r  r9   r   r   r#  r=   r=   r>   test_file_position_after_tofile  s.   






z&TestIO.test_file_position_after_tofilec                 C   s   t |d}W d    n1 sw   Y  t |d}ttdtj|td W d    n1 s/w   Y  ttdtj|td d S )Nr   r  zCannot read into object arrayr   )r  r   r)   r'   r  r(   )rF   r  r   r=   r=   r>   test_load_object_array_fromfile  s   
z&TestIO.test_load_object_array_fromfilec           	   
   C   s  t |d}|| W d    n1 sw   Y  t |d}tj||jdd}t||j W d    n1 s9w   Y  t |dM}t|jd }t|jd }|jj| }tj||j||d}t||j|||   |jj}tj||j|d}t||j|| d d   W d    n1 sw   Y  t |d}|j|d	d
 W d    n1 sw   Y  t |d}t	t
dtj||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  z1'offset' argument only permitted for binary files)r   r  r<   )r  r  r'   r  r   r   r`  r   r1   r   r
  )	rF   r   r  r   r  count_itemsoffset_itemsoffset_bytesrb  r=   r=   r>   test_fromfile_offset  s@   

"zTestIO.test_fromfile_offsetz bug in PyPy's PyNumber_AsSsize_trw   c           	      C   s   dd }dd }t j}z=t|d$}|| |tf|tffD ]\}}|t _t|tj| qW d    n1 s8w   Y  W |t _d S W |t _d S |t _w )Nc                 S   r  )Nr  r=   fdr=   r=   r>   dup_str!  r  z-TestIO.test_fromfile_bad_dup.<locals>.dup_strc                 S   s   dd S )Nr"   D   r=   r  r=   r=   r>   
dup_bigint$  r  z0TestIO.test_fromfile_bad_dup.<locals>.dup_bigintr  )	r  dupr  r  r
  r  r   r'   r  )	rF   r   r  r  r  old_dupr   r  excr=   r=   r>   test_fromfile_bad_dup  s   

zTestIO.test_fromfile_bad_dupc                 K   s   d|vrt j|fi |}n	t j|fi |}t|| t|d}|| W d    n1 s1w   Y  t j|fi |}t|| d S )Nr  r  )r'   rl   rp   r   r  re   r  )rF   r   r  r  r1  r  r   r=   r=   r>   _check_from1  s   
zTestIO._check_fromperiodcommac                 c   s\    |j dkrdV  dS |j dkr)t  dV  W d   dS 1 s"w   Y  dS J |j )a  
        Including this fixture in a test will automatically
        execute it with both types of decimal separator.

        So::

            def test_decimal(decimal_sep_localization):
                pass

        is equivalent to the following two tests::

            def test_decimal_period_separator():
                pass

            def test_decimal_comma_separator():
                with CommaDecimalPointLocale():
                    pass
        r  Nr  )r4  r   )rF   r  r=   r=   r>   decimal_sep_localization=  s   


"
zTestIO.decimal_sep_localizationc              	   C   s2   | j dtjtjtjtjtjtjtjg|dd d S )Ns3   nan +nan -nan NaN nan(foo) +NaN(BAR) -NAN(q_u_u_x_)r  r  )r  r'   rk  rF   r  r  r=   r=   r>   rh  Y  s   
zTestIO.test_nanc              	   C   s8   | j dtjtjtj tjtj tjtj g|dd d S )Ns.   inf +inf -inf infinity -Infinity iNfInItY -inFr  r  )r  r'   r  r  r=   r=   r>   test_inf`  s   $
zTestIO.test_infc                 C      | j dg d|dd d S )Ns'   1.234 -1.234 .3 .3e55 -123133.1231e+133)X9v?gX9vg333333?g.LKR?KgY]xr  r  r  r  r=   r=   r>   test_numbersg  s   
zTestIO.test_numbersc                 C   s    | j dtg d|dd d S )Ns     ?   @  @@  @r.  r[  r   )r  r'   r   rF   r  r=   r=   r>   test_binaryn  s   
zTestIO.test_binaryc              	   C   s   t jdkrdS zVd}tjdtjd}t|}t }|j}t	|||j
 | |d tj|tjd}|  tt||k t|d| |k  t|| d |k  W dS  ttfyi   Y dS w )zTest workarounds for 32-bit limited fwrite, fseek, and ftell
        calls in windows. These normally would hang doing something like this.
        See http://projects.scipy.org/numpy/ticket/1660win32Nl       r   r   r   )r  platformr'   rC   r   r   tempfileNamedTemporaryFiler  r0  r   r  r~  r  r  r   r'  MemoryErrorr)   )rF   
fourgbplus	testbytesr  fliker   rD   r=   r=   r>   test_big_binaryu  s$   

 zTestIO.test_big_binaryc                 C   r  )N   1,2,3,4r  r  r  r  r  r=   r=   r>   r       zTestIO.test_stringc                 C   sL   | j dg d|ddd | j dg d|ddd | j dg d|ddd d S )	Nr  r  r   r  )r  r  r  r   r%   r  r  r=   r=   r>   test_counted_string  s   
zTestIO.test_counted_stringc                 C   s   | j dg d|tdd d S )N   1 2  3     4   r.  r  r  r  r   r  r=   r=   r>   test_string_with_ws  s   
zTestIO.test_string_with_wsc                 C   s   | j dg d|dtdd d S )Nr	  r(  r   r  )r  r   r  r
  r  r=   r=   r>   test_counted_string_with_ws  s   
z"TestIO.test_counted_string_with_wsc                 C   s2   | j dg d|dd | j dg d|tdd d S )Ns   1 , 2 , 3 , 4r  r  r  r  r  )r  r  r  r=   r=   r>   
test_ascii  s   
zTestIO.test_asciic                 C   sD   t t | jdddg|dd W d    d S 1 sw   Y  d S )Ns   1.234 1,234r  r  r  r  )r   r   r  r  r=   r=   r>   test_malformed  s
   
"zTestIO.test_malformedc                 C   r  )Ns   1_x_3_x_4_x_5)r#   r   r   rI   _x_r  r  r  r=   r=   r>   test_long_sep  s   
zTestIO.test_long_sepc                 C   s.   t jg dt jd}| jd||dt jd d S )Nr.  r   r  r  r  )r'   r   r   r  )rF   r  r   r=   r=   r>   
test_dtype  s   zTestIO.test_dtypec                 C   sz   t jg dt jd}d}t|d}|| W d    n1 s!w   Y  t j|dt jd}t|jdk t|| d S )Nrz  r   s
   1,0,-2.3,0r  r  r  r  )	r'   r   r  r  re   r  r   r   r   )rF   r  r   r   r   r  r=   r=   r>   test_dtype_bool  s   zTestIO.test_dtype_boolc                 C   s   t jg dtd}t|d}|j|dd W d    n1 s w   Y  t|d}| }W d    n1 s9w   Y  t dd |dD }t|| d S )	Ng)\(?r"   gGz@r   r   r   r  r  r   c                 S   s   g | ]}t |qS r=   )r  )r  r  r=   r=   r>   r    r  z*TestIO.test_tofile_sep.<locals>.<listcomp>)r'   r   r  r  r  r  splitr   )rF   r  r  r   r   r   r  r=   r=   r>   test_tofile_sep  s   
zTestIO.test_tofile_sepc                 C   s   t jg dtd}t|d}|j|ddd W d    n1 s!w   Y  t|d}| }W d    n1 s:w   Y  t|d d S )	Nr  r   r   r  z%.2f)r  r  r   z1.51,2.00,3.51,4.00)r'   r   r  r  r  r  r	   )rF   r  r  r   r   r   r=   r=   r>   test_tofile_format  s   
zTestIO.test_tofile_formatc                    sx   t jdtdtd tt fdd W d    n1 s!w   Y  t ttfdd t d S )NrB   r   r  c                      s   j  ddS )Nr  r  r  r=   )r   r   r=   r>   rU    ri  z,TestIO.test_tofile_cleanup.<locals>.<lambda>c                      s
     S rW   r  r=   )r  r   r=   r>   rU    r  )r'   r*   r(   r  r   r  r  r  r  r=   )r   r  r   r>   test_tofile_cleanup  s   
zTestIO.test_tofile_cleanupc                 C   s   t jdddddd}|| t j|dd}t|| | }tt t j	|dd}t|| W d    d S 1 s=w   Y  d S )NrE  r   r   r"   r   r   z(3,4)i4)
r'   rC   r   r  r  r   r  r   r   rp   )rF   r  r   r  x_strr=   r=   r>   test_fromfile_subarray_binary  s   


"z$TestIO.test_fromfile_subarray_binaryc                 C   s   d}t t tj|ddd}W d    n1 sw   Y  t|d}|| W d    n1 s4w   Y  t t tj|ddd W d    d S 1 sRw   Y  d S )Na  12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,12,42,13,z(3,)ir  r  r   )r   r;  r)   r'   rp   r  re   r  )rF   r  r$   r  r   r=   r=   r>   !test_parsing_subarray_unsupported  s   "z(TestIO.test_parsing_subarray_unsupportedc              	   C   s   t jddddd}| }tt% tt t j	|ddd W d    n1 s-w   Y  W d    n1 s<w   Y  |
| t j|ddd}t|| d S )	Ni  r   r   r%   rB   z(10,)i'  r  )r'   rC   r   r  r   r;  r)   warnsr   rp   r  r  r   )rF   r  r  binaryr  r=   r=   r>   %test_read_shorter_than_count_subarray  s   
z,TestIO.test_read_shorter_than_count_subarrayN)8rQ   rR   rS   r3  r   fixturer   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  rh  r  r  r  r6  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r  ,  sj    

			"




r  c                   @   sz   e Zd Zejdddgejdeeegdd Z	ejde
dd	gd
d Zdd Zejjedddd ZdS )TestFromBufferr  rP  rO  r   c                 C   sH   t ||}t jdd |}| }tt j||d|j d S )N)r   r   rI   r   )	r'   r   r_  r  rn  r  r   rl   r`  )rF   r  r   r  r   r:   r=   r=   r>   rG    s   zTestFromBuffer.test_basicr  rB   s   12345678c                 C   s   t |}|j|u sJ d S rW   )r'   rl   r   )rF   r  r  r=   r=   r>   test_array_base  s   
zTestFromBuffer.test_array_basec                 C   s   t tdtg  d S )Nrr  )r   r'   rl   r   rE   r=   r=   r>   
test_empty  r  zTestFromBuffer.test_emptyzjPyPy's memoryview currently does not track exports. See: https://foss.heptapod.net/pypy/pypy/-/issues/3724rw   c              	   C   s   t jdd@}|d |  t| d}tj|tjd}t	
t |  W d    n1 s4w   Y  ~|  W d    d S 1 sIw   Y  d S )Nr  )r9  s   asdfr   r   )r  TemporaryFilere   flushmmapfilenor'   rl   r3   r   r;  BufferErrorr  )rF   r  mmrX   r=   r=   r>   test_mmap_close  s   


"zTestFromBuffer.test_mmap_closeN)rQ   rR   rS   r   r   r   r  r   r   rG  r'   rC   r!  r"  r   r   r)  r=   r=   r=   r>   r     s    
r   c                   @   sN   e Z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S )TestFlatc                 C   sh   t d}|dd}d|_d|j_|| _|d d dd d df | _|| _|d d dd d df | _	d S )Nr  r   rI   r   Fr"   )
r'   rC   r   r7   rK   rL   rD   r   r  r  )rF   r  rD   r=   r=   r>   rG   +  s   
zTestFlat.setup_methodc                 C   L   d}zd| j jd< W n ty   d}Y nw t| t| j jd dk d S )NF      Y@rK  T      (@)rD   r`  r)   r   rF   
testpassedr=   r=   r>   test_contiguous5     zTestFlat.test_contiguousc                 C   r+  )NFr,  r   Tr-  )r   r`  r)   r   r.  r=   r=   r>   test_discontiguous>  r1  zTestFlat.test_discontiguousc                 C   s   | j j }| jj }| jj }| jj }t|jjdu  t|jjdu  t|jjdu  t|jjdu  t|jj	du  t|jj	du  t|jj	du  t|jj	du  d S )NFT)
rD   r`  r  r   r  r  r   rK   rL   r   )rF   r  r   r   r   r=   r=   r>   test___array__G  s   zTestFlat.test___array__zPython lacks refcountsrw   c              
   C   s   t dt dg| jj t dgd g}t t j}t|}|D ]9}t|}tdD ]}z| jj	|  W q- t
y@   Y q-w ttt|| dk  ttt|| dk  q"d S )Nr   Tr  r  )r'   r  r   rD   r9   r   r  r  rz   r`  r  r   rZ  )rF   r  indtype
rc_indtyper  rc_indr  r=   r=   r>   test_refcountV  s   *

zTestFlat.test_refcountc                 C   sf   t ddddj}tt d|_W d    n1 sw   Y  |D ]}q%|j|jj	ks1J d S )NrB   r"   r#   rI   )
r'   rC   r   r`  r   r;  rO  r  r   r9   )rF   itr  r=   r=   r>   test_index_getsetf  s   zTestFlat.test_index_getsetN)rQ   rR   rS   rG   r0  r2  r3  r   r   r   r   r7  r9  r=   r=   r=   r>   r*  *  s    
		
r*  c                   @   sx   e Zd Zedd Zdd Zedd Zdd Zd	d
 Zdd Z	edd Z
edd Zedd Zdd Zdd ZdS )
TestResizec                 C   s   t g dg dg dg}tr|jddd n|d t|jd d t g dg dg dgj t|dd  jd d S )	Nr#   r   r   r   r#   r   r4  rI   rI   Frefcheckr   r   )r'   r   r   r  r   r`  r  r=   r=   r>   rG  t  s   
zTestResize.test_basicc                 C   s4   t g dg dg dg}|}tt|jd ~d S Nr;  r<  r4  )rI   r#   )r'   r   r   r)   r  r  r=   r=   r>   test_check_reference  s   zTestResize.test_check_referencec                 C   sH   t d}tr|jddd n|d t|t ddd d f  d S )Nr   Fr>  r   )r'   r  r   r  r   r  r=   r=   r>   test_int_shape  s
   

 zTestResize.test_int_shapec                 C   s@   t d}|d  t|t d |  t|t d d S r  )r'   r  r  r   r  r=   r=   r>   test_none_shape  s
   

zTestResize.test_none_shapec                 C   sj   t dD ].}td}|d t|jd t|jd td}|d t|jd t|jd qd S )NrB   r  r=   r#   )rz   r'   r2   r  r	   r7   r9   )rF   r   r   r=   r=   r>   test_0d_shape  s   



zTestResize.test_0d_shapec                 C   sX   t ttdjd t ttdjd t ttdjdd t ttdjdd d S )Nr   hir%   r#   r&   r>  )r   r
  r'   r  r  r)   rE   r=   r=   r>   test_invalid_arguments  s   z!TestResize.test_invalid_argumentsc                 C   sB   t d}tr|jddddd n|ddd t|jdk d S )Nr   r"   r#   Fr>  r  )r'   r  r   r  r   r7   r  r=   r=   r>   test_freeform_shape  s
   
zTestResize.test_freeform_shapec                 C   s\   t d}tr|jddddd n|ddd t|d t d t|d t d d S )Nr   r"   Fr>  r   r#   r  )r'   r  r   r  r   r*   r  r=   r=   r>   test_zeros_appended  s   
zTestResize.test_zeros_appendedc                 C   sp   t jddtdfgd}tr|jddd n|d t|jd t|d d	d  d
 t|d d d	 d d S )NrB   r  r"   r   r"  Fr>  )r"  r  r   r#   )r'   r   r(   r   r  r	   r7   r   r   r=   r=   r>   test_obj_obj  s   
zTestResize.test_obj_objc                 C   s,   t dt}|d }|d |d d S )N)rB   r   .)r   rB   )r   r  )r'   r*   r   r  )rF   r   x_viewr=   r=   r>   test_empty_view  s   
zTestResize.test_empty_viewc                 C   s:   t g dg dg dg}t|}tt|jd ~d S r@  )r'   r   r  r  r   r)   r  )rF   r   xrefr=   r=   r>   test_check_weakref  s   
zTestResize.test_check_weakrefN)rQ   rR   rS   r   rG  rA  rB  rC  rD  rF  rG  rH  rI  rK  rM  r=   r=   r=   r>   r:  r  s"    




	
r:  c                   @   d   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )
TestRecordc                 C   s4   t dtfdtfg}ddg|_t|jddg d S )Nr   r   r  r  )r'   r   r  r   r  r	   rF   r  r=   r=   r>   test_field_rename  s   
zTestRecord.test_field_renamec                 C      dd }t t| d S )Nc                   S      t g d d S )N)r!  r  rc   r  rT  r  r=   r=   r=   r>   test_dtype_init  r  zGTestRecord.test_multiple_field_name_occurrence.<locals>.test_dtype_initr   r)   )rF   rV  r=   r=   r>   #test_multiple_field_name_occurrence     z.TestRecord.test_multiple_field_name_occurrencec                 C   s   t ttjdtfg t ttjdtfg tdtfg}t t|jd tjg d|d}t t|jd |d }t t|jd d S )Nr  )r   r  )r  r   )r  r  r&  r   r   )r   r
  r'   r   r   rb  r   r  )rF   r  r   r  r=   r=   r>   test_bytes_fields  s   zTestRecord.test_bytes_fieldsc                 C   rR  )Nc                   S   rS  )N)u   ₹r  rU  r[  r  r=   r=   r=   r>   test_dtype_unicode  r  zGTestRecord.test_multiple_field_name_unicode.<locals>.test_dtype_unicoderW  )rF   r\  r=   r=   r>    test_multiple_field_name_unicode  rY  z+TestRecord.test_multiple_field_name_unicodec                 C   sD   t jjjdgdggddd}t|d d d t|d d d d S )Nr   r#   za,bi4,i4r  r  rD   r   )r'   rn   ro   r  r	   r  r=   r=   r>   test_fromarrays_unicode  s   z"TestRecord.test_fromarrays_unicodec                 C   sD   d}t jg d|tfgd}|j|d t|d t g d d S )Nr   rT  r   r&   r(  )r'   r   r   r  r	   )rF   r  r   r=   r=   r>   test_unicode_order  s   zTestRecord.test_unicode_orderc                 C   s  t jdddddgfgd}tt|jdd tt|jd tt|d	 jd
d tt|d	 jd
 | }td	}d||< t|| d td}tt	|j|d tt	|j| d|d |< t|| d tt	|d j|d tt	|d j| td}td}d|| |< t|| | d tt	|| j|d tt	|| j| td}d||< t|d	dg d 
 d t|dd	g d 
 d t|d	dg d 
 d tt	|jdd tt	|jd d S )Nr  )r  r   )f2r   f3)sf1r   r   s   f1r#   r  s   sf1z
not at allr"   r   rd  rb  r   r   r  )r"   r  u   Ϡ)r'   r*   r   r  __setitem__rb  r*  r   r	   r)   r  )rF   rD   r   fn1fnnfn3sfn1fn2r=   r=   r>   test_field_names  s@   zTestRecord.test_field_namesc                 C   s   t jddgdd}d|j_t jddgddgd}d|j_t jddgdd}d|j_tt|d t|d	 k tt|d t|d k tt|d t|d	 k tt|d t|d kog|d |d k d S )
Nr-  i1,i2r   Fr^  )num1r>  )num2r  r   r#   )r'   r   rK   rL   r   r   rw  r=   r=   r>   test_record_hash0  s   0zTestRecord.test_record_hashc                 C   s&   t jddgdd}ttt|d  d S )Nr-  rl  r   r   )r'   r   r   r
  r   r   r=   r=   r>   test_record_no_hash<  s   zTestRecord.test_record_no_hashc                 C   s:   t jdgg g g ddd t jg dg g g ddd d S )Nr=   rK  r  r  r  r1   r   )r=   r=   r=   r=   r=   r>  rE   r=   r=   r>   test_empty_structure_creation@  s   
z(TestRecord.test_empty_structure_creationc                 C   sv   t jdg dd}|ddg }t|j|u  t|jt ddgddgdd	gd
k d|d d < t|d  d d S )Nr   )r   )r   r<  )r  r  r   rD   r  r   r  r   r   r  r   )r   r#   rI   )r'   r   r   r   r   r	   r  )rF   rD   r   r=   r=   r>   test_multifield_indexing_viewG  s   z(TestRecord.test_multifield_indexing_viewN)rQ   rR   rS   rQ  rX  rZ  r]  r`  ra  rk  ro  rp  rr  rs  r=   r=   r=   r>   rO    s    )rO  c                   @   rV   )TestViewc                 C   sd   t jddgdt jfdt jfdt jfdt jfgd}|jdd}|d}t|| t|d	d
g d S )Nr.  r]  r   r  r   rD   r   rz  ii)r'   r   r   r]   r   )rF   r   r  rb  r=   r=   r>   rG  R  s   


zTestView.test_basicNrH  r=   r=   r=   r>   rt  Q  r\   rt  c                 K      | j di |S r  )meanrD   r  r=   r=   r>   _mean^  rH   rx  c                 K   ru  r  )varrw  r=   r=   r>   _varb  rH   rz  c                 K   ru  r  )stdrw  r=   r=   r>   _stdf  rH   r|  c                   @   s   e Zd Zeeeg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dd Zdd Zdd Zej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/S )0	TestStatsc                 C   s^   t jtd t jd| _| jd| j  | _t dd | jjD | _| j	dd| _d S )Nr   r   r  c                 S   s   g | ]}t t|qS r=   )r   rW  )r  r   r=   r=   r>   r  r  r  z*TestStats.setup_method.<locals>.<listcomp>r   rI   )
r'   r  r  rz   rmatcmatr   r`  omatr   rE   r=   r=   r>   rG   n  s
   zTestStats.setup_methodc                 C   sR   t ddddfD ]}tt |gd tt |gd tt |gd q	d S )Nr  r#   y      ?        r  )r'   r  r	   rv  r{  ry  r  r=   r=   r>   test_python_typeu  s
   zTestStats.test_python_typec                 C   sz   t d}| jD ]2}dD ]}|||dd}t|j|jk t|j| dk qdD ]}|||dd}t|jdk q)qd S )Nr   r1  Tr  r#   rW   r  )r'   r  funcsr   r   r7   )rF   matr   r#  r  r=   r=   r>   test_keepdims{  s   

zTestStats.test_keepdimsc                 C   s   t d}| jD ]}t d}||dd}||d|d}t|| t|| qt d}tt||d|d t d}tt||d|d d S )Nr   r#   r%  r  r"   r  )r'   r  r  r*   r
   r2   r   r)   )rF   r  r   r2  r#  r  r=   r=   r>   test_out  s   





zTestStats.test_outc                 C   s  t jd }t jd }| jD ]/}t tdgd gd }|jj}||ddjj}t||u  t||d d}t|tu  q| jD ]-}|D ](}t jd|d}t j	}||ddjj}t||u  ||d djj}t||u  qDq@t
fD ].}|D ])}t jd|d}|jj}||ddjj}t||u  ||d djj}t||u  quqqttfD ]/}|D ]*}t jd|d}|jjj}||ddjj}t||u  ||d djj}t||u  qqd S )Nr  r  r#   r   r%  r   )r'   r  r  r   r   r   r  r   r  r   rx  rz  r|  r  )rF   r  r  r   r  r#  r  r  r=   r=   r>   test_dtype_from_input  sJ   







zTestStats.test_dtype_from_inputc                 C   sr   t d}| jD ].}t jd D ]&}t |j}||d|djj}t||u  ||d |djj}t||u  qqd S )Nr   r  r#   )r#  r   )r'   r  r  r  r   r  r   )rF   r  r   r  r#  r  r=   r=   r>   test_dtype_from_dtype  s   

zTestStats.test_dtype_from_dtypec                 C   s   t fD ]$}tdD ]}| jjd }|| jdd| }|| jd|d||  }q	qtfD ]4}tdD ]-}| jjd }|| jddt| }|| jd|dt||  }t|| t|| q1q+d S )Nr   r#   r%  r#  ddof)rz  rz   r~  r7   r|  r'   sqrtr
   )rF   r   r  r  r#  r  r=   r=   r>   	test_ddof  s   


zTestStats.test_ddofc              
   C   s   | j jd }ttfD ]J}t||d D ]@}tjdd0}td || j d|d}t|dk 	   tt
|dk tt|d jt W d    n1 sNw   Y  qq
d S )Nr#   r"   Tr   r   r  r   )r~  r7   rz  r|  rz   r   r   r   r   r  r   r  categoryr"  )rF   r  r   r  r   r  r=   r=   r>   test_ddof_too_big  s   
zTestStats.test_ddof_too_bigc              
   C   s   t d}| jD ]m}dD ]<}tjdd,}td tt |||d  tt	|dk tt
|d jt W d    n1 sCw   Y  qdD ])}tjdd}td t|||dt g  W d    n1 sow   Y  qKqd S )	Nr;  r!  Tr   r   r%  r   r  )r'   r*   r  r   r   r   r   r.  r'  r   r  r  r"  r	   )rF   r!  r   r#  r   r=   r=   r>   r"    s$   



zTestStats.test_emptyc                 C   s   | j | j| jfD ]9}dD ]}|j|d}t||d|j|  }t|| qdD ]}|j|d}t||dt|j }t|| q'qd S )Nr1  r%  rW   )	r~  r  r  r  rx  r7   r
   r'   rJ  rF   r  r#  r#  r  r=   r=   r>   test_mean_values  s   zTestStats.test_mean_valuesc                 C   s   t ttjddddk d S )NrT  r  r   r#   )r   rx  r'   r   rE   r=   r=   r>   test_mean_float16  s   zTestStats.test_mean_float16c                 C   F   t tjjj tdjdd W d    d S 1 sw   Y  d S NrB   r"   r%  )r   r'   rn   r  r/  rC   rv  rE   r=   r=   r>   test_mean_axis_error     "zTestStats.test_mean_axis_errorc              	   C   s  t dd}t g dg dg dg dg}t dgdgdgdgg}d	dg d
fd|g dfd	|g dfd|g dfg}|D ] \}}}t|j||dt | tt j|||dt | qBt dd}t g d}	ddgddgg}t|jd|	dt | tt j|d|	dt | tt}
t|jd	|dt t j	ddt j	g W d    n1 sw   Y  tt}
t
|jddt j	 W d    n1 sw   Y  tt}
t
t j|ddt j	 W d    d S 1 sw   Y  d S )Nr   )r   r   )FTFTrz  )TTFF)FFTTFTr#   )rd        @      #@      +@r   )      @rA        $@r  )r  rA  g      !@g      -@)r        @rq  r  r"  r"   r"   r   FTTFrd  r  r  r  r"   r&  )r'   rC   r   r   r   rv  r   r  r"  rk  r	   rF   rD   r(  
wh_partial_casesr*  _wh_resa3d_wh_partialr   r=   r=   r>   test_mean_where  sV   
"zTestStats.test_mean_wherec                 C   sj   | j | j| jfD ]*}dD ]%}t||  |d}t||d}|||   }t||d}t|| qqd S Nr   r#   Nr%  )r~  r  r  rx  r  r  rz  r
   rF   r  r#  msqrrv  r#  r  r=   r=   r>   test_var_values@  s   zTestStats.test_var_values)complex_dtypendec))rG  r   )rH  r   )r{  r   c           	      C   sh   dD ]/}| j  |}t||  |d}t||d}|||   }t||d}t|||d qd S )Nr  r%  r  )r  r*  rn  rx  r  r  rz  r
   )	rF   r  r  r#  r  r  rv  r#  r  r=   r=   r>   test_var_complex_valuesI  s   z!TestStats.test_var_complex_valuesc                 C   sf   t | jgd }dD ]%}t||  |d}t||d}|||   }t||d}t|| qd S )Nr   )r   r#   r"   r%   Nr%  )r'   stackr  rx  r  r  rz  r
   r  r=   r=   r>   test_var_dimensionsX  s   zTestStats.test_var_dimensionsc                 C   s6   | j  d}||j }t| |  d S )NrH  )r  r*  rn  r   r_  r
   ry  )rF   r  cmat_swappedr=   r=   r>   test_var_complex_byteorderc  s   z$TestStats.test_var_complex_byteorderc                 C   r  r  )r   r'   rn   r  r/  rC   ry  rE   r=   r=   r>   test_var_axis_errorj  r  zTestStats.test_var_axis_errorc                 C   s  t dd}t g dg dg dg dg dg}t dgdgdgdgdgg}d	dg d
fddg dfg}|D ] \}}}t|j||dt | tt j|||dt | q;t dd}t g d}	ddgddgg}t|jd|	dt | tt j|d|	dt | tt j|d|dt j|| ddd tt j|d	|dt j||d d d	f  d	d tt}
t	|jddt j
 W d    n1 sw   Y  tt}
t	t j|ddt j
 W d    d S 1 sw   Y  d S )Nr  r=  r;  TFTTF)TTFFT)FTTFTFTr   )      I@r  r  r  r  r#   )r  r  r  r  r  r"  r   r  r  r  r"   rI   r   r%  r&  )r'   rC   r   r   r   ry  r   r  r"  r	   rk  r  r=   r=   r>   test_var_wherep  sX   
"zTestStats.test_var_wherec                 C   sL   | j | j| jfD ]}dD ]}tt||d}t||d}t|| qqd S r  )r~  r  r  r'   r  rz  r|  r
   r  r=   r=   r>   test_std_values  s   zTestStats.test_std_valuesc              	   C   s~  t ddd d d }t g dg dg dg dg dg}t dgdgd	gd	gdgg}d
d	dt d fdd	dt d fd
|t g dfd
|dt d fg}|D ]\}}}t|j||d| tt j|||d| qXt dd}t g d}	ddgddgg}t|jd|	dt | tt j|d|	dt | t|jd|dt j|| ddd tt j|d|d|| djdd t|jd
|dt j||d d d
f  d
d tt j|d
|d||d d d
f  jd
d tt	}
t
|jddt j W d    n	1 sw   Y  tt	}
t
t j|ddt j W d    d S 1 s8w   Y  d S )Nr  r=  r%   r;  )TFTFT)TTFTFr  FTr   gMH@rI   r#   g'e?)gevT@gfvT @rA  g@g,I\) @rB  r"  r   r  r  r  r"   r  r%  r&  )r'   rC   r   r   r   r   r{  r   r  r"  r	   rk  )rF   rD   whfwhpr  r*  r  r  r  r  r   r=   r=   r>   test_std_where  sd   
$zTestStats.test_std_wherec                 C   sz   G dd dt j}|g dg dgd}|d}t|j|jk |d}t|j|jk |d}t|j|jk d S )Nc                   @   r`  )z*TestStats.test_subclass.<locals>.TestArrayc                 S   s   t |}|| }||_|S rW   )r'   r   r]   info)clsr$   r  r  r=   r=   r>   __new__  s   

z2TestStats.test_subclass.<locals>.TestArray.__new__c                 S   s   t |dd| _d S )Nr  r  )r  r  r  r=   r=   r>   __array_finalize__  r  z=TestStats.test_subclass.<locals>.TestArray.__array_finalize__N)rQ   rR   rS   r  r  r=   r=   r=   r>   	TestArray  s    r  r.  r]  jubbar#   )r'   r5   rv  r   r  r{  ry  )rF   r  datr  r=   r=   r>   test_subclass  s   



zTestStats.test_subclassN) rQ   rR   rS   rx  rz  r|  r  rG   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}  j  s2    
1$	

%,r}  c                   @   ru  )TestVdotc                 C   s   t jd t jd  }t jd }t d}|d D ]}||}t ||}tt | tt ||d qt dd }|d D ]}||}t ||}tt | tt ||d qAt jdtd}t ||}tt | tt ||d d S )	Nr  r  r  r   r  r  r   T)	r'   r  r  rn  vdotr   isscalarr	   r!  )rF   
dt_numeric
dt_complexrD   r  r   r  r=   r=   r>   rG    s$   



zTestVdot.test_basicc                 C   z   t jddgddggdd}t jddgddggdd}t ||}tt ||| tt ||| tt ||| d S Nr#   r"   r   r   r   r&   r,  )r'   r   r  r	   rF   rD   r   r  r=   r=   r>   test_vdot_array_order     zTestVdot.test_vdot_array_orderc                 C   s0  dD ]}t |ddf}t |ddf}t ||d d ddf< t |d |d d ddf< |d }|d }tt ||t | |  tt || t | |  tt | |t | |  tt |d|t | |  tt ||dt | |  qd S )N)r"   ry   r"   r   r#   .r   r,  )r'   r*   rC   r	   r  rI  r*  )rF   r9   rD   r   r=   r=   r>   test_vdot_uncontiguous  s.   zTestVdot.test_vdot_uncontiguousN)rQ   rR   rS   rG  r  r  r=   r=   r=   r>   r    s    
r  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zd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ejjejd)ejejged*d+d,d- Zd.S )/TestDotc                 C   sb   t jd t jdd| _t jdd| _t jd| _t jdd| _t jd| _d| _	d S )Nr  r   r"   r#   r   )
r'   r  r  r  r!  r  b2b3b4r  rE   r=   r=   r>   rG     s   
zTestDot.setup_methodc                 C   s@   | j }t| |}tddgddgg}t||| jd d S )Ngh5?gV?g1-?r  )r!  r'   rv  r9  r   r
   r  )rF   r!  r  r#  r=   r=   r>   test_dotmatmat"  s   
zTestDot.test_dotmatmatc                 C   sH   | j | j}}t||}tdgdgdgdgg}t||| jd d S )NgcLU5?g	?g)XF?gс?r  )r!  r  r'   rv  r   r
   r  )rF   r!  r  r  r#  r=   r=   r>   test_dotmatvec)  s   zTestDot.test_dotmatvecc                 C   s<   | j | j}}t||}tg d}t||| jd d S )N)gHo?gĊ"?g-P?gNz?r  )r!  r  r'   rv  r   r
   r  )rF   r!  r  r  r#  r=   r=   r>   test_dotmatvec20     zTestDot.test_dotmatvec2c                 C   s<   | j | j}}t||}tddg}t||| jd d S Ngة[?g?r  )r!  r  r'   rv  r   r
   r  rF   r!  r  r  r#  r=   r=   r>   test_dotvecmat6  r  zTestDot.test_dotvecmatc                 C   sB   | j | j}}t|| }tg dg}t||| jd d S )N)goc?gTbi\?g2r?gb?r  )r  r!  r'   rv  r9  r   r
   r  )rF   r  r!  r  r#  r=   r=   r>   test_dotvecmat2<  s   zTestDot.test_dotvecmat2c                 C   s@   | j | j}}t| |}tddg}t||| jd d S r  )r!  r  r'   rv  r9  r   r
   r  r  r=   r=   r>   test_dotvecmat3B  s   zTestDot.test_dotvecmat3c                 C   sD   | j | j}}t||}tddgddgg}t||| jd d S )NgcQ0?gXO?g5쵨h?g5?r  r  r  r'   rv  r   r
   r  rF   r  r  r  r#  r=   r=   r>   test_dotvecvecouterH  s   zTestDot.test_dotvecvecouterc                 C   s<   | j | j}}t||}tdgg}t||| jd d S )Ng".!?r  r  r  r=   r=   r>   test_dotvecvecinnerN  r  zTestDot.test_dotvecvecinnerc                 C   s>   t d}dg}t ||}t g d}t||| jd d S )Nr   r#   333333@)r  r  r  r  )r'   r   rv  r   r
   r  rF   r  r  r  r#  r=   r=   r>   test_dotcolumnvect1T  s
   
zTestDot.test_dotcolumnvect1c                 C   sB   t d }dg}t ||}t g d}t||| jd d S )Nr  r  )r  r  r  r  )r'   r   r9  rv  r   r
   r  r  r=   r=   r>   test_dotcolumnvect2[  s
   zTestDot.test_dotcolumnvect2c                 C   sX   t jd t jdd}t jdd}t ||}t g dg}t||| jd d S )Nr  r#   r   )g#:\?gNp?gwr*a?p<e?r  r'   r  r  r  rv  r   r
   r  r  r=   r=   r>   test_dotvecscalarb  s   zTestDot.test_dotvecscalarc                 C   sb   t jd t jdd}t jdd}t ||}t dgdgdgdgg}t||| jd d S )	Nr  r   r#   r  gpVȅU?gX;'Ii`?g3Tp?r  r  r  r=   r=   r>   test_dotvecscalar2j  s   zTestDot.test_dotvecscalar2c           
      C   s~   g d}g d}t |t||D ]+\}\}}t|}t|}t||}t|}	t|j|	jk t||	| j	d qd S )N)r=   r  r  )	r=   r  r  r  r=   r  r  r  r  r  )
zipr  r5  r'   r*   rv  r   r7   r
   r  )
rF   dimsdoutr  dim1dim2r  r  r  r#  r=   r=   r>   r  r  s   


zTestDot.test_allc                    s   G  fddd t ddgddgg}t |}t  ddg ddgg}t  ddg ddgg}t ||t || }t|d j|d j t|d j|d j d S )Nc                       sB   e Zd ZdddZ fddZ fddZ fdd	Zd
d ZdS )z#TestDot.test_vecobject.<locals>.VecNc                 S   s   |d u rg }t || _d S rW   r>  )rF   sequencer=   r=   r>   rZ     s   z,TestDot.test_vecobject.<locals>.Vec.__init__c                    s     }| j |j  |_ |S rW   rw  rF   r  r2  Vecr=   r>   __add__     z+TestDot.test_vecobject.<locals>.Vec.__add__c                    s     }| j |j  |_ |S rW   rw  r  r  r=   r>   __sub__  r  z+TestDot.test_vecobject.<locals>.Vec.__sub__c                    s     | j  }| j |9  _ |S rW   )r   r*  r  r  r=   r>   rF    s   z+TestDot.test_vecobject.<locals>.Vec.__mul__c                 S   s   | | S rW   r=   r  r=   r=   r>   __rmul__  r  z,TestDot.test_vecobject.<locals>.Vec.__rmul__rW   )rQ   rR   rS   rZ   r  r  rF  r  r=   r  r=   r>   r  ~  s    
r  r  r  r  r   r#   )r'   r9  r4  r   rv  r	   )rF   
U_non_contU_contr   r*   
zeros_testr=   r  r>   test_vecobject}  s   
zTestDot.test_vecobjectc                 C   sr   ddl m} tjddgddggtd}tjddgddggtd}tjddgddggtd}|||}t|| d S )	Nr   rv  r#   r"   r   r   r   r   )numpy.core.multiarrayrv  r'   r   r  r   )rF   rv  rD   r   r  r   r=   r=   r>   test_dot_2args  s   
zTestDot.test_dot_2argsc                 C   s   ddl m} tjd tjd}tjd}td}tdD ]}|||| q!tr4t	t
|d |||d d	}t|| t|||||d	u  |d d df  }|d d df  }|||}t|||||u  t|| d S )
Nr   r     r\  r   r   r   r\  r   rK  r"   r6  )r  rv  r'   r  r  random_sampler2   rz   r   r	   r  r  r   r   r*  )rF   rv  r   r   r   r   r2r=   r=   r>   test_dot_3args  s"   


zTestDot.test_dot_3argsc              
   C   s8  ddl m} tjd tjd}tjd}td}tt|||| td}tt|||| td}tt|||| td	}tt|||| tt||||j	 td
}tt||||d d d d df  tt||||d d d df  tjdtj
d}tt|||| tjdtd}tt|||| d S )Nr   r  r  r  r  )r\  r(  )r\  )r   )r   r\  )r\  r   r"   r   r  r   )r  rv  r'   r  r  r   r2   r   r)   r"  rF  r   )rF   rv  r   r   r   r=   r=   r>   test_dot_3args_errors  s(   




" zTestDot.test_dot_3args_errorsc                 C   r  r  )r'   r   rv  r	   r  r=   r=   r>   test_dot_array_order  r  zTestDot.test_dot_array_orderc                    s  ddd d fdd	}dd } dd	t j} d
d	t j}t || tdddd}|D ]\}}}}t j||}	t j|}
t |	|
}||	|t j|d}||
|t j}|||| |	d d d }t ||
}|d d d }|||| |d d d d df }|
d d d }t ||}|d d d d df }|d d d }|||| |dkrt|jdd| f n
t|jd| df t|jd |||t j}|||| |	d d d d df }t ||}|d d d d df }|||| |||| q.d S )Nr   c           	      S   s   |d}t | }t j||j | t jd}|jd d }t|D ]}|| | dkr- nq!|||||j   j|d}|j| |dS )Nr   r   r$   r&   )	r'   rJ  r*   r   r3   r4   rz   r]   r   )	r7   r8   r   r    r   r  r  addressr<   r=   r=   r>   aligned_array  s   
zBTestDot.test_accelerate_framework_sgemv_fix.<locals>.aligned_arrayc                    s(    | j |||}| d d  |d d < |S rW   )r7   )rX   r8   r   r    r   r  r=   r>   
as_aligned  s   z?TestDot.test_accelerate_framework_sgemv_fix.<locals>.as_alignedc                 S   s   t t| ||ddd d S )Ngh㈵>gHz>)rtolatol)r   r'   rv  )r!  r   desiredr=   r=   r>   assert_dot_close  r  zETestDot.test_accelerate_framework_sgemv_fix.<locals>.assert_dot_closer  r"  r  )r"  r   )r  )   Y   )r   r,  r&   r"   r,  r   r  )r   )	r'   rF  rv  r  r5  r  r  r	   r   )rF   r  r  rZ  r   testdatar8   r  a_orderA_dX_dr  A_fX_fA_d_2A_f_2A_d_22X_d_2A_f_22X_f_2X_f_2cA_d_12A_f_12r=   r  r>   #test_accelerate_framework_sgemv_fix  sH   
z+TestDot.test_accelerate_framework_sgemv_fixr   g   ЈB)
free_bytesc                 C   s*   t jd|d}t ||}|dksJ d S )Nid  @r   )r'   r   rv  )rF   r   r$   r  r=   r=   r>   test_huge_vectordot&  s   zTestDot.test_huge_vectordotN) rQ   rR   rS   rG   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r6  r   r'   r   rH  r   r   r=   r=   r=   r>   r    s2    	!

@r  c                   @   sT   e Zd Zd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 )MatmulCommonz5Common tests for '@' operator and numpy.matmul.

    z?bhilqBHILQefdgFDGOc                 C   sT   g d}t | j|D ]\}\}}tj||d}tj||d}tt| j|| qd S )N)	)r  r  )r?  r  )r  r-  )r-  r  )r  r=   )r=   r#   )r  r=   )r=   r  )r$  r   r#   r"   r   )r  r5  rr   r'   r   r   r)   r  )rF   r  r  dm1dm2rD   r   r=   r=   r>   test_exceptions9  s   zMatmulCommon.test_exceptionsc           	      C   s   g d}t | j|D ]!\}\}}tj||d}tj||d}| ||}t|jdk q| jD ] }tjd|d}tjd|d}| ||}tt|jdk q0d S )N))r  r"   r#   r#   )r&  r  )r&  r&  r   r&  r  r=   )	r  r5  rr   r'   r   r  r   r7   r   )	rF   r  r  r#  r$  rD   r   r  r  r=   r=   r>   test_shapesK  s   
zMatmulCommon.test_shapesc                 C   s   t d}t d}| jD ]<}||}||}||f||f||ffD ]}| j| }t|j|k q$|dkrI| ||}tt|t |ju  qd S )Nr  r  r  )r'   r   rr   rn  r  r   r   r  )rF   r  vecr  rZ  r   r  r  r=   r=   r>   test_result_types_  s   





zMatmulCommon.test_result_typesc           	      C   s   t dg}t ddgdd}t ddg}| jdd  D ]#}||}||}| ||}t|| | |j|}t|| qt jddgd	d
dd}| |d d df |}t|d d S )Nr"   r   r   r#   r%   r   r   Tr  r   r   )r'   r   r   rr   rn  r  r	   r"  )	rF   vec1vec2r#  r  r  r  r  r(  r=   r=   r>   test_scalar_outputn  s   


zMatmulCommon.test_scalar_outputc           
      C   s   t ddg}t ddgdd}t dg}t ddgddgg}| jdd  D ]&}||}||}| ||}t|| | ||dd}t|| q*t jd	d	gd
d}	| |	|	}t|d	 d S )Nr#   r"   r   r   r%   r@  r   r   Tr  r   )r'   r   r   rr   rn  r  r	   )
rF   r*  r+  tgt1tgt2r  r  r  r  r(  r=   r=   r>   test_vector_vector_values  s   


z&MatmulCommon.test_vector_vector_valuesc                 C   sB  t ddg}t ddgddgg}t j|gd dd}t ddg}t j|gd dd}| jdd  D ]'}||}||}||}	| ||}
t|
| | ||	}
t|
| q4t d	d
g}t d	d
gd
d	gg}t j|gd dd}t d	d
g}t j|gd dd}| ||}
t|
| | ||}
t|
| d S )Nr#   r"   r   r   r   r%  r   rB   TFr'   r   r  rr   rn  r  r	   rF   r(  mat1mat2r-  r.  r  r   m1r  r  r=   r=   r>   test_vector_matrix_values  ,   




z&MatmulCommon.test_vector_matrix_valuesc                 C   sB  t ddg}t ddgddgg}t j|gd dd}t ddg}t j|gd dd}| jdd  D ]'}||}||}||}	| ||}
t|
| | |	|}
t|
| q4t d	d
g}t d	d
gd
d	gg}t j|gd dd}t d	d
g}t j|gd dd}| ||}
t|
| | ||}
t|
| d S )Nr#   r"   r   r   r   r%  rI   r@  TFr0  r1  r=   r=   r>   test_matrix_vector_values  r6  z&MatmulCommon.test_matrix_vector_valuesc                 C   s  t ddgddgg}t ddgddgg}t j||gdd}t j||gdd}t ddgd	d
gg}t ddgddgg}t ddgddgg}t j||gdd}t j||fdd}	t j||fdd}
| jdd  D ]M}||}||}||}||}| ||}t|| | ||}t|| | ||}t||
 | ||}t||	 | ||}t|| qkt jddgddggt jd}t jddgddggt jd}t j||gdd}t j||gdd}|}|}t jddgddggt jd}t j||gdd}t j||fdd}	t j||fdd}
| ||}t|| | ||}t|| | ||}t||
 | ||}t||	 | ||}t|| d S )Nr#   r"   r   r   r   r%  r   rB   r"  r  r   r   )r'   r   r  rr   rn  r  r	   r  )rF   r2  r3  mat12mat21tgt11tgt12tgt21tgt12_21tgt11_12tgt11_21r  r4  r  m12m21r  r=   r=   r>   test_matrix_matrix_values  sZ   











z&MatmulCommon.test_matrix_matrix_valuesN)rQ   rR   rS   r3  rr   r%  r'  r)  r,  r/  r5  r7  rB  r=   r=   r=   r>   r!  1  s    r!  c                	   @   s  e Zd ZejZdd Zdd Zdd Zed	dd	Z
ed
	d	dZed	dddddddf ZedZedZedZejdg e
efeje
jfej e
jfeje
j fe
e
jfe
je
fe
ejfee
jfeejfejefeefejejfej ejfe
edd	 fedd e
fe
jedd fedd	 e
jfe
eddd feddd e
fe
jeddd feddd e
jfeedd	 fedd efejedd fedd	 ejfeeddd feddd efejeddd feddd ejfeejfejefe
efeje
jfR dd Zdd Zdd Zdd Zdd Zdd Zd d! ZdS )"
TestMatmulc                 C   s6  t jdtd}t jddgddggtd}t ||}d}t jdtd}| ||| t|||d d	}t jdtd}| j|||d
 t|||d d}t jdt jd}t	t
|| j|||d
 t jdt jd}| j|||d
}t||u  t }|t jd ||j}W d    n1 sw   Y  t|| d S )NrI   r"   r   r#   r   rI   r   zout positional argumentr   zout keyword argumentr6  zCannot cast ufunc .* outputr  )r'   r   r  r   rv  r*   r  r   r   r   r
  rH  r   r   r!  ComplexWarningrn  r   )rF   rD   r   r#  r  r2  r  r$  r=   r=   r>   test_out_arg  s,   zTestMatmul.test_out_argc                 C   sn   t d}t d}| ||jdksJ tjtdd | j|||d W d    d S 1 s0w   Y  d S )Nr  rE  znon-broadcastableri  r6  )r'   r   r  r7   r   r;  r)   rk  r=   r=   r>   test_empty_out,  s   

"zTestMatmul.test_empty_outc                 C   sJ  t jdtd}t jddgddggtd}t jddgtd}t ||}t ||}t jdtd}| j|||d d	}|j|u sAJ t|| | j|||d d d
d
f d	}t|| | j||j|d d d
d
f d	}t|| t jdtd}| j|||d d dd d f d	}t|| t jdtd}| j|j|j|jd	}t|| d S )NrD  r   r#   r   rI   r   )rI   r"   r"   r  r6  r   )rB   r"   r"   )	r'   r   r  r   rv  r  r   r   r"  )rF   rD   r   r   r#  tgt_mvr2  r  r=   r=   r>   test_out_contiguous6  s&   

 
"
zTestMatmul.test_out_contiguousg      .@rI   r   g      5@r   g      >@r   Nr"   r  r  r   r   r  c                 C   sH   t j| }t j| }t|| t |d  |d  }t|| d S r  )r'   r  rv  r	   r*  )rF   r  r1r  r3r=   r=   r>   test_dot_equivalentW  s
   


zTestMatmul.test_dot_equivalentc           
      C   st   dd l }t|j}dd }|| | }|| | }| ||}dd |||fD \}}}	t|	| || d S )Nr   c                   S   s   t jjddddS )Nr#   ry   )rB   r   r   r  )r'   r  r  r=   r=   r=   r>   random_intsv  r  z2TestMatmul.test_matmul_object.<locals>.random_intsc                 S   s   g | ]}| tqS r=   )rn  r  r  r=   r=   r>   r  }  r  z1TestMatmul.test_matmul_object.<locals>.<listcomp>)	fractionsr'   	vectorizeFractionr  r   )
rF   rO  r   rN  M1M2M3N1N2N3r=   r=   r>   test_matmul_objectr  s   zTestMatmul.test_matmul_objectc                 C   sF   ddl m} t|dd|ddg}| ||}tt||u  d S )Nr   )rQ  r"   r   rI   r   )rO  rQ  r'   r   r  r   r  )rF   r,  r   r  r=   r=   r>   test_matmul_object_type_scalar  s   z)TestMatmul.test_matmul_object_type_scalarc                 C   s<   t jdtd}t jdtd}t d}tt ||| d S )NrJ  r   r;  r  )r'   r2   r(   r*   r   r  rw  r=   r=   r>   test_matmul_empty  s   
zTestMatmul.test_matmul_emptyc                 C   V   G dd d}t d| }tt t ||}W d    d S 1 s$w   Y  d S )Nc                   @   rV   )zCTestMatmul.test_matmul_exception_multiply.<locals>.add_not_multiplyc                 S      | S rW   r=   r  r=   r=   r>   r    r  zKTestMatmul.test_matmul_exception_multiply.<locals>.add_not_multiply.__add__N)rQ   rR   rS   r  r=   r=   r=   r>   add_not_multiply  r\   r]  r  r'   fullr   r
  r  )rF   r]  rD   r   r=   r=   r>   test_matmul_exception_multiply  
   
"z)TestMatmul.test_matmul_exception_multiplyc                 C   r[  )Nc                   @   rV   )z>TestMatmul.test_matmul_exception_add.<locals>.multiply_not_addc                 S   r\  rW   r=   r  r=   r=   r>   rF    r  zFTestMatmul.test_matmul_exception_add.<locals>.multiply_not_add.__mul__N)rQ   rR   rS   rF  r=   r=   r=   r>   multiply_not_add  r\   rb  r  r^  )rF   rb  rD   r   r=   r=   r>   test_matmul_exception_add  ra  z$TestMatmul.test_matmul_exception_addc                 C   s   t jddgddggtd}t |t jdksJ t ||}t |t jdks-J t jt j	d}|j
ddt jd}|dd	dk}t ||d	d}t ||d	d}t|| t t jd
tdt jdtd}t |rxJ d S )Nr#   r   r   rJ  r"   r   r  r   rI   )r"   r   )r'   r   r!  r   r]   r3   r  r  default_rngPCG64integersr   r   rv  r	   r*   r  )rF   rD   r   rgr   r  r  r  r=   r=   r>   test_matmul_bool  s   
 zTestMatmul.test_matmul_bool)rQ   rR   rS   r'   r  rF  rG  rI  rC   r   r4  r  r  vcvrr*   m0r   r   r   r"  r*  rM  rX  rY  rZ  r`  rc  rh  r=   r=   r=   r>   rC  
  s    
$





				

		rC  c                   @   s*   e Zd ZddlZejZdd Zdd ZdS )TestMatmulOperatorr   Nc                 C   sF   G dd d}| }t d}t| ||d t| ||d d S )Nc                   @   s    e Zd ZdZdd Zdd ZdS )z:TestMatmulOperator.test_array_priority_override.<locals>.Ary   c                 S   r  Nr!  r=   r  r=   r=   r>   
__matmul__  r  zETestMatmulOperator.test_array_priority_override.<locals>.A.__matmul__c                 S   r  rm  r=   r  r=   r=   r>   __rmatmul__  r  zFTestMatmulOperator.test_array_priority_override.<locals>.A.__rmatmul__N)rQ   rR   rS   r  rn  ro  r=   r=   r=   r>   r!    s    r!  r"   )r'   r   r	   r  )rF   r!  rD   r   r=   r=   r>   test_array_priority_override  s
   	
z/TestMatmulOperator.test_array_priority_overridec                 C   sX   t t| jtdtd t t| jtdtd t t| jtdtd d S )NrI   s   abcrB   )r   r
  r  r'   r   r  rC   rE   r=   r=   r>   test_matmul_raises  s    z%TestMatmulOperator.test_matmul_raises)rQ   rR   rS   r/   r  rp  rq  r=   r=   r=   r>   rl    s
    rl  c                  C   sR   t d} t d}tt| j| dd l}tt|j| | tttdt t	  d S )Nr   r   za @= b)
r'   r  r   r
  __imatmul__r/   imatmulexecglobalsrJ   )rD   r   r/   r=   r=   r>   test_matmul_inplace  s   

rv  c                  C   s   t dddd} t j| | g dd}|jdksJ t j| | g dd}|jd	ks,J t |d
d}t|| t j| t dg dd}|jdksLJ d S )Nr   r   r   rI   )r   r%   r%   r   r-  )r  )r   r   r   )rw  rx  r1  )r   r   r   r   r"   ))r#   r   r   r   r   )r'   rC   r   r  r7   r  r   )rD   r  r   r   r   r=   r=   r>   test_matmul_axes  s   
ry  c                   @   4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	TestInnerc                 C   ry  rz  )r'   r   r   r
  r  r{  r=   r=   r>   test_inner_type_mismatch  r}  z"TestInner.test_inner_type_mismatchc                 C   s|   t jd t jd  d D ]/}t jd|dd }t jddg|d}t jdd	g|d}tt ||| tt ||| qd S )
Nr  r  r  r   r   r=   r#   r"   r   )r'   r  r   r	   r  )rF   r  scar(  r  r=   r=   r>   test_inner_scalar_and_vector  s   z&TestInner.test_inner_scalar_and_vectorc                 C   s.   t jdt jd}t ||}t|ddd d S )N)r#   r  r  r   r  r  )r'   r*   r   r  r
   )rF   rD   r  r=   r=   r>   test_vecself  s   zTestInner.test_vecselfc                 C   sv  t jd t jd  d D ]}t jddgddgg|d}t jddgddgg|d}t jddg|d}t jdd	g|d}tt |j|| tt ||j| tt ||| tt ||| t jd
dgddgg|d}tt ||| t jddgddgg|d}tt ||| tt || | t d|}|d d d }t jd|d	 }tt ||| qd S )Nr  r  r  r#   r"   r   r   r   r   r   rB   r"  r  rI   r@  r  r%   )
r'   r  r   r	   r  r"  r*  rC   rn  r  )rF   r  r!  rc   r   r  rD   r   r=   r=   r>   ,test_inner_product_with_various_contiguities  s&   z6TestInner.test_inner_product_with_various_contiguitiesc                 C   s   t jd t jd  d D ]h}t dddd|}t ddddd|}t jg d	g d
gg dg dgg dg dggg dg dgg dg dgg dg dggg|d}tt ||| tt ||dddd| qd S )Nr  r  r  rE  r"   r   r   0   )         )      i  )i6  i  i  )i>  i  i  )i  if  i  )i  i.  i  )if  i>  i  )i  i  i	  )i  i  i.	  )iF
  i^  iv  )i  i	  iF  )i  i  iN  r   r   r#   )	r'   r  rC   r   rn  r   r	   r  r9  )rF   r  rD   r   r  r=   r=   r>   test_3d_tensor  s<   	 zTestInner.test_3d_tensorN)rQ   rR   rS   r|  r~  r  r  r  r=   r=   r=   r>   r{    s    r{  c                   @   s   e Zd Zdd Zdd Zdd Zdd Zej	d	d
e
jdge
jdfde
jdge
jdfde
dfde
jdge
jdfgdd ZdS )
TestChoosec                 C   s^   dt jdtd | _dt jdtd | _dt jdtd | _dt jdtd | _g d| _d S )Nr"   r&  r   r   r   r4  )r'   r   r   r   r  r;  r<  r  rE   r=   r=   r>   rG   1  s
   zTestChoose.setup_methodc                 C   s(   t | j| j| jf}t|g d d S Nr5  )r'   r:  r  r   r  r	   r  r=   r=   r>   rG  8  r  zTestChoose.test_basicc                 C   0   t | j| j| jf}t|g dg dg d S r  )r'   r:  r  r;  r<  r	   r  r=   r=   r>   test_broadcast1<     zTestChoose.test_broadcast1c                 C   r  r  )r'   r:  r  r   r<  r	   r  r=   r=   r>   test_broadcast2@  r  zTestChoose.test_broadcast2r  ry   r#   r   r%   r  r   c                 C   s&   t j| }t dg|j|ksJ d S r   )r'   r  r:  r   )rF   r  expected_dtr=   r=   r>   test_output_dtypeD  s   
zTestChoose.test_output_dtypeN)rQ   rR   rS   rG   rG  r  r  r   r   r   r'   r   r3   rF  r  r=   r=   r=   r>   r  0  s    r  c                   @   rz  )
TestRepeatc                 C   s"   t g d| _| jd| _d S )NrO  r   )r'   r   rZ  r   r[  rE   r=   r=   r>   rG   O  s   zTestRepeat.setup_methodc                 C   s$   t | jg d}t|g d d S )NrP  rQ  r'   rY  rZ  r	   r  r=   r=   r>   rG  S  s   zTestRepeat.test_basicc                 C   s    t | jd}t|g d d S )Nr"   rR  r  r  r=   r=   r>   r  X  s   zTestRepeat.test_broadcast1c                 C   sb   t j| jddgdd}t|g dg dg dg t j| jg ddd}t|g dg d	g d S )
Nr"   r#   r   r%  r(  rS  rT  rU  rV  r'   rY  r[  r	   r  r=   r=   r>   test_axis_spec]  s   


zTestRepeat.test_axis_specc                 C   s`   t j| jddd}t|g dg dg dg dg t j| jddd}t|g dg dg d S )	Nr"   r   r%  r(  rS  r#   rW  rX  r  r  r=   r=   r>   r  g  s   


zTestRepeat.test_broadcast2N)rQ   rR   rS   rG   rG  r  r  r  r=   r=   r=   r>   r  N  s    
r  r#   r"   r   r   )zeror   constantcircularmirrorr  r  r(   idsc                   @   rz  )TestNeighborhoodIterc                 C   s  t jddgddgg|d}t jg dg dg|dt jg dg dg|dt jg dg d	g|dt jg dg d
g|dg}t|g d|d td }t|| t jg dg dg|dt jg dg dg|dt jg dg dg|dt jg dg dg|dg}t|g d|d td }t|| t jg dg dg|dt jg dg dg|dt jg dg dg|dt jg dg dg|dg}t|g ddtd }t|| t jg dg dg|dt jg dg dg|dg}t|g ddtd d}t|| d S )Nr   r#   r"   r   r   rD  r4  r<  )r   r"   r   r"   r   r   r%   r   r%   r#   r  rE  r#   r   r#   r  r(  r#  r   )r   r   r   )r   r   r#   )r   r#   r   )r   r"   r   r  r   r  r'   r   rm  test_neighborhood_iterator
NEIGH_MODEr   rF   r  r   r   r   r=   r=   r>   test_simple2dz  sF   


z"TestNeighborhoodIter.test_simple2dc                 C   s   t jddgddgg|d}t jg dg dg|dt jg dg dg|dt jg dg dg|dt jg dg d	g|dg}t|g d
|d td }t|| d S )Nr   r#   r"   r   r   r4  r  r5  r"   r   r   r  r  r  r  r=   r=   r>   test_mirror2d  s   z"TestNeighborhoodIter.test_mirror2dc                 C   s   t ddd|}g dg dg dg dg dg}t|ddg|d	 td
 }t|| g dg dg dg dg dg}t|ddg|d	 td }t|| |d ddgg dg dg ddd|d gg}t|ddg|d td }t|| d S )Nr#   rI   rC  r(  r  r  )r   rI   r   r%   r   r  r#   r#   r"   )r   rI   r#   r   r   r"   r  )r'   r
  rn  rm  r  r  r   r  r=   r=   r>   test_simple  s    "
"
.z TestNeighborhoodIter.test_simplec                    s   t ddd }t jg dg dg dg dg dg d}t|d	d
g|d td }t fdd|D  t|| d S )Nr#   rI   )r"   r#   r#   r"   r   )r#   r#   r"   r   r   r#   r"   r   r   rI   )r"   r   r   rI   rI   )r   r   rI   rI   r   r   r   r"   r  c                    s   g | ]}|j  kqS r=   r   r  r  r=   r>   r    r  z4TestNeighborhoodIter.test_mirror.<locals>.<listcomp>)	r'   r
  rn  r   rm  r  r  r   r   r  r=   r  r>   test_mirror  s   z TestNeighborhoodIter.test_mirrorc                 C   sj   t ddd|}t jg dg dg dg dg dg|d}t|d	d
g|d td }t|| d S )Nr#   rI   )r   rI   r#   r"   r   )rI   r#   r"   r   r   r  )r"   r   r   rI   r#   )r   r   rI   r#   r"   r   r   r"   r   r  )r'   r
  rn  r   rm  r  r  r   r  r=   r=   r>   test_circular  s   z"TestNeighborhoodIter.test_circularN)rQ   rR   rS   r  r  r  r  r  r=   r=   r=   r>   r  w  s    "
r  c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestStackedNeighborhoodIterc              
   C   s.  t j}t jg d|d}t jdg|dt jdg|dt jdg|dt jdg|dt jdg|dt jdg|dt jdg|dg}t|ddgtd	 ddgtd	 }t|| t jg d
|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd	 ddgtd }t|| d S )Nr(  r   r   r#   r"   r   r   r   r  r  rC  r  )r   r   r#   r%   r   r'   r   r   rm  test_neighborhood_iterator_oobr  r   r  r=   r=   r>   test_simple_const  s0   
z-TestStackedNeighborhoodIter.test_simple_constc                 C   sR  t j}t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd	 dd
gtd }t|| t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd ddgtd	 }t|| t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd ddgtd	 }t|| t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd ddgtd	 }t|| d S )Nr(  r   r  r  r  )r   r   r   r%   r   r  r#   r  r;  r4  rC  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>   test_simple_mirror  Z   


z.TestStackedNeighborhoodIter.test_simple_mirrorc                 C   sR  t j}t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd	 dd
gtd }t|| t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd ddgtd	 }t|| t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd ddgtd	 }t|| t jg d|d}t jg d|dt jg d|dt jg d|dt jg d|dt jg d|dg}t|ddgtd ddgtd	 }t|| d S )Nr(  r   )r   r   r#   r"  r#  )r   r#   r   r%   r   r  r#   r  r  r4  rC  r  r   r   r"   )r   r   r   r#   r"   r  r  r  )r"   r   r   r   r#   r  r  r=   r=   r>   test_simple_circular  r  z0TestStackedNeighborhoodIter.test_simple_circularc                 C   s   t j}t jg d|d}t jg d|dg}t|ddgtd ddgtd }t|| t jg d|d}t jg d|dg}t|ddgtd ddgtd	 }t|| t jg d|d}t jg d
|dg}t|ddgtd ddgtd }t|| d S )Nr(  r   )r#   r"   r   r   r#   r  r%   r"   r  r  )r#   r"   r   r#   r  r  r  r=   r=   r>   test_simple_strict_withinJ  s&   

z5TestStackedNeighborhoodIter.test_simple_strict_withinN)rQ   rR   rS   r  r  r  r  r=   r=   r=   r>   r    s
    00r  c                   @   rV   )TestWarningsc                 C   s|   t ddg}t ddg}t " tdt j tt j|jtd | t	|ddg W d    d S 1 s7w   Y  d S )Nr#   r"   y      ?       y      ?       @r   )
r'   r   r   r   r   rE  r   re  slicer	   r  r=   r=   r>   test_complex_warningf  s   
"z!TestWarnings.test_complex_warningN)rQ   rR   rS   r  r=   r=   r=   r>   r  d  r   r  c                   @   rz  )TestMinScalarTypec                 C   "   t d}t d}t|| d S )Nr  r3   r'   min_scalar_typer   r	   rF   r  wantedr=   r=   r>   test_usigned_shortshortr     

z)TestMinScalarType.test_usigned_shortshortc                 C   r  )Ni  r   r  r  r=   r=   r>   test_usigned_shortw  r  z$TestMinScalarType.test_usigned_shortc                 C   r  )Nl    r   r  r  r=   r=   r>   test_usigned_int|  r  z"TestMinScalarType.test_usigned_intc                 C   r  )Nr  r   r  r  r=   r=   r>   test_usigned_longlong  r  z'TestMinScalarType.test_usigned_longlongc                 C   r  )Nrk  r  r  r  r=   r=   r>   r    r  zTestMinScalarType.test_objectN)rQ   rR   rS   r  r  r  r  r  r=   r=   r=   r>   r  p  s    r  )_dtype_from_pep3118c                   @   rN  )TestPEP3118Dtypec                 C   s,   t |}t|}t||d||f d d S )Nzspec %r != dtype %rr   )r'   r   r  r	   )rF   specr  r  actualr=   r=   r>   _check  s
   


zTestPEP3118Dtype._checkc              
   C   sx   t dj}tdD ]/}|dkrd}nd| }| d| dd|d||   fd	 | d
| ddd| fd	 q
d S )Nr   r   r   r~  zb%dxir  )r>  r   r#   rv  r  rN  )r'   r   r+   rz   r  )rF   r8   rB  r   r=   r=   r>   test_native_padding  s   

z$TestPEP3118Dtype.test_native_paddingc                 C   s<   |  ddddidfdfi |  ddddidfdfi d S )	Nzx3T{xi}rv  )r   r   r&  r   z^x3T{xi})r   r#   r#   r  rE   r=   r=   r>   test_native_padding_2  s    z&TestPEP3118Dtype.test_native_padding_2c              	      sx  t dj t dj} fdd}tdgdgd}| dtdd||d i| | d	tdd||d
 i| | dtdd||d i| | dtdd||d i| | dtdd||d i| | dtdd|d i| | dtdd|d
 i| | dtdd|d i| | dtdd|d i| | dtdd|d i| d S )Nr   c                        d| d     S r  r=   r  r  r=   r>   r        z7TestPEP3118Dtype.test_trailing_padding.<locals>.alignedrv  )r  r  ixr1   r#   ixxr"   ixxxr   ixxxxr   i7xr   z^ixz^ixxz^ixxxz^ixxxxz^i7xr=   )r'   r   r+   r1   rz  r  )rF   r9   r   r   r=   r  r>   test_trailing_padding  s   """"""z&TestPEP3118Dtype.test_trailing_paddingc                 C   s`   t jdddt dfdgdd}| d| t ddd	d
ddt jdddfg}| d| d S )NrH  r   r   r  b,ir  Tr  z(T{b:a:xxxi:b:T{b:f0:=i:f1:}:sub:xxxi:c:}r  r   r   r   r   r   z-T{b:a:=i:b:b:c:b:d:b:e:T{b:f0:xxxi:f1:}:sub:}r'   r   r  rP  r=   r=   r>   test_native_padding_3  s   z&TestPEP3118Dtype.test_native_padding_3c                 C   s"   t jg ddd}| d| d S )NrH  r  )r  r   r&  r  Tr  zT{b:a:xxxi:b:3b:c:xi:d:}r  rP  r=   r=   r>   %test_padding_with_array_inside_struct  s
   z6TestPEP3118Dtype.test_padding_with_array_inside_structc                 C   s   |  dddidfdd d S )Nz@T{^i}xirv  )r   r   r   )r   rI   r  r  rE   r=   r=   r>   test_byteorder_inside_struct  s   z-TestPEP3118Dtype.test_byteorder_inside_structc              
      sR   t dj t dj} fdd}| dtdgdgdg||d dd	f d S )
Nr   c                    r  r  r=   r  r  r=   r>   r     r  z4TestPEP3118Dtype.test_intra_padding.<locals>.alignedz(3)T{ix}rv  r   r#   rq  r&  )r'   r   r+   r1   r  rz  )rF   r9   r   r=   r  r>   test_intra_padding  s   

z#TestPEP3118Dtype.test_intra_paddingc                 C   s4   t d}| d| t ddg}| d| d S )Nr  )rv  S1r  )r  rk   4c4sr  rP  r=   r=   r>   test_char_vs_string  s   
z$TestPEP3118Dtype.test_char_vs_stringc                 C   s$   |  dddg |  dddg d S )Nz(0)I:a:f:b:)rD   ro  r#  rb  z(0)I:b:f:a:)r   ro  r#  ra  r  rE   r=   r=   r>   test_field_order  s   z!TestPEP3118Dtype.test_field_orderc                 C   s>   |  dddg |  dddg |  dd |  ddg d S )Nii)rv  r   )r  r   zii:f0:r   zi:f0:r  rE   r=   r=   r>   test_unnamed_fields  s   z$TestPEP3118Dtype.test_unnamed_fieldsN)rQ   rR   rS   r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    r  c                	   @   s  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zejddgejejddged ed!d"ejedded#d"gd$d% Zd&d' Zd(d) Zd*d+ Zejjd,d-ejd.d/d fd0d1Z ejjd,d-ejj!ejd2d3d4j"j# d5d-ed6fd7d8Z$d9d: Z%d;d< Z&ejj'd=d> Z(d?d@ Z)dAdB Z*dCdD Z+dEdF Z,ejdedGejddHd dI gdJdK Z-dLdM Z.dNS )OTestNewBufferProtocolz Test PEP3118 buffers c                 C   s   t |}t|}t |}t |}t|jj  t|jj t|j|j t|j	|j	 t
|| t|j|j t|j	|j	 t
|| d S rW   )r'   r^   r   r   r   rK   r   r	   r   r7   r   )rF   r  r   r  r<  r=   r=   r>   _check_roundtrip  s   



z&TestNewBufferProtocol._check_roundtripc                 C   s&  t jg ddd}| | t jddgddggt jd}| | t jdt jdd d d	d d f }| | d
ddddddddddt jfdt jfdt jfdt j	fdt j
fdt jfdddddt jfg}t jdg|d}| | t jddgddggfd td!ffgd}| | t jg d"d#d}| | t jg d"d$d}| | t jg d"d%d}| | t jg d"d&d}| | t jg d"d'd}| | tjd(krt jg d"d)d}tt| j| t jg d"d*d}| | d S t jg d"d)d}| | t jg d"d*d}tt| j| d S )+Nr  r   r   r#   r"   r   r   r;  r   rH  r   r  r  r   r   dxr  r   rc   r   Hr  ro  r  LhxQr   rB  r  r  jxkxr   rk   rZ  U4r  r  r  r  r  )r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#      aaaabbbbs   xxxTr  rD   r  r(  r\  r  r{  rz  z>qr  z>gz<g)r'   r   r  r   r*   rF  rw  ry  rk  rx  rz  r{  halfr   r  r  r   r)   )rF   r   r  r=   r=   r>   r    sl   

"

&







z$TestNewBufferProtocol.test_roundtripc              
   C   sT   dddddddt dt d	d
g
}tj|dd}| | tj|dd}| | d S )Nr  re  g     @g      ?g      p>r  g       z+infz-infg     T?z>er   z<e)r  r'   r   r  )rF   	half_listr   r=   r=   r>   test_roundtrip_halfS  s   
z)TestNewBufferProtocol.test_roundtrip_halfc                 C   s   t j D ]F}t |}|jdv rq|jdkrqt jd|d}| | |jdvrK|d}t jd|d}| | |d}t jd|d}| | qd S )NMmr  r   r   qQgGrP  rO  )r'   
sctypeDictrs   r   r   r*   r  r_  )rF   typr   r   r  r=   r=   r>   test_roundtrip_single_typesf  s"   








z1TestNewBufferProtocol.test_roundtrip_single_typesc                 C   s   |  d d S r   )r  rE   r=   r=   r>   test_roundtrip_scalar}  s   z+TestNewBufferProtocol.test_roundtrip_scalarc                 C   sF   t ddg}t d|}tttft| tttftt dd d S )N)rD   r   )r   zM8[s]r   r  )r'   r   r2   r   r)   r'  r   r   )rF   r  rD   r=   r=   r>   test_invalid_buffer_format  s   z0TestNewBufferProtocol.test_invalid_buffer_formatc                 C   sf   t jg ddd}t|}t|jd t|jd t|jd t|jd t|jd t|j	d d S )	Nr  r   r   )rI   r#   r  r=   r   
r'   r   r   r	   r  r7   r   r   
suboffsetsr1   r  r=   r=   r>   test_export_simple_1d  s   z+TestNewBufferProtocol.test_export_simple_1dc                 C   sp   t jddgddggt jd}t|}t|jd t|jd t|jd t|jd t|j	d	 t|j
d
 d S )Nr#   r"   r   r   r   r   r  )r   r   r=   r   )r'   r   r   r   r	   r  r7   r   r   r	  r1   r  r=   r=   r>   test_export_simple_nd  s   z+TestNewBufferProtocol.test_export_simple_ndc                 C   sv   t jdt jdd d dd d f }t|}t|jd t|jd t|jd t|jd t|j	d t|j
d	 d S )
Nr;  r   r   r   r  r"   )rB  r   r=   r   )r'   r*   rF  r   r	   r  r7   r   r   r	  r1   r  r=   r=   r>   test_export_discontiguous  s   "z/TestNewBufferProtocol.test_export_discontiguousc                 C   s  ddddddddd	d
dt jfdt jfdt jfdt jfdt jfdt jfdddddt jfg}t jdg|d}t	|}t
|jd t
|jd t
|jd tdd |D }t djdkrbt
|jd nt
|jd  t djd! t t jjks~t
|j|f t
|j| d S )"NrH  r  r  r  r  r  r  r  r  r  r   rB  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 	  s      Tr  r   r  r#   r=   c                 S   s   g | ]
\}}t |jqS r=   )r'   r   r1   )r  rD   r   r=   r=   r>   r    r  z<TestNewBufferProtocol.test_export_record.<locals>.<listcomp>r   r   zjT{b:a:=h:b:i:c:l:d:q:dx:B:e:@H:f:=I:g:L:h:Q:hx:f:i:d:j:^g:k:=Zf:ix:Zd:jx:^Zg:kx:4s:l:=4w:m:3x:n:?:o:@e:p:}zjT{b:a:=h:b:i:c:q:d:q:dx:B:e:@H:f:=I:g:Q:h:Q:hx:f:i:d:j:^g:k:=Zf:ix:Zd:jx:^Zg:kx:4s:l:=4w:m:3x:n:?:o:@e:p:}r   )r'   rw  ry  rk  rx  rz  r{  r	  r   r   r	   r7   r   r	  r  r   r1   r  r   r   r  r  r   )rF   r  r   r  szr=   r=   r>   test_export_record  sJ   z(TestNewBufferProtocol.test_export_recordc                 C   sr   t jddgddggfdgd}t|}t|jd t|jd t|jd	 t|jd t|jd t|j	d
 d S )Nr#   r"   r   r   )rD   )r   r  r   zT{(2,2)i:a:}r=   r   r   r	  r  r=   r=   r>   test_export_subarray  s   z*TestNewBufferProtocol.test_export_subarrayc                 C   s   t jg ddd}t|}tjdkrt|jd nt|jd t jg ddd}t|}tjdkr9t|jd d S t|jd d S )Nr(  z>ir   r  r   z<i)r'   r   r   r  r  r	   r  r  r=   r=   r>   test_export_endian  s   

z(TestNewBufferProtocol.test_export_endianc                 C   s$   t ttjtdd d d d d S )NrI   r"   )SIMPLE)r   r)   rm  get_buffer_infor'   rC   rE   r=   r=   r>   test_export_flags  s   z'TestNewBufferProtocol.test_export_flagsr  r   r#   r"   r   r   r  r  c                 C   sd   t | t|d W d    n1 sw   Y  t|d t|}t|}t|| d S )N)
STRIDED_ROFORMAT)r	  )r   r;  rm  r	  r   r}   r|   r   )rF   r  r   
pickle_objr  r=   r=   r>   !test_export_and_pickle_user_dtype  s   

z7TestNewBufferProtocol.test_export_and_pickle_user_dtypec                 C   s6   t dD ]}tjddgdt|fid}| | qd S )Nr   r  r  rv  r   )rz   r'   r   r   r  )rF   rB  r   r=   r=   r>   test_padding  s   z"TestNewBufferProtocol.test_paddingc                 C   sP   t r	ttjj}td}t|}t|}t r%ttjj}t	|| ~d S )Nr   )
r   r  r  r'   rn   	_internalr*   r   r^   r	   )rF   count_1rD   r   r  count_2r=   r=   r>   test_reference_leak  s   


z)TestNewBufferProtocol.test_reference_leakc                 C   s   t jdddt dfdgdd}t j|jt jd|}| | t jg d	dd}t j|jt jd|}| | t ddd
dddt jdddfg}t j|jt jd|}| | d S )NrH  r  r  r  r  Tr  r   r  r  r  r  )r'   r   rC   r1   r   r]   r  )rF   r  r  r  r;  dt3r  r=   r=   r>   test_padded_struct_array  s&   

z.TestNewBufferProtocol.test_padded_struct_arrayz$leaks buffer info cache temporarily.rw   )r#   rB   rB   r  c                 C   s   d|_ tt|j dk t }||j |j}tt|j dk t	d}|j
jrVt|dg\}}t|d dk tj	dd	d
}t|dg\}}t|d dk d S d S )N)r%   r  r   )   r  r   )r   r  r"	  r  F_CONTIGUOUSr   r   rE  r,  r&   C_CONTIGUOUSr%   )r   r   r   r{  r|  re   r$   r"  r'   r   rK   r6  rm  r	  )rF   r  r  r  rX   r7   r   r=   r=   r>   test_relaxed_strides"  s$   
z*TestNewBufferProtocol.test_relaxed_stridesrE  r   r&   z8Test is unnecessary (but fails) without relaxed strides.r  c                 C   sN   t dD ] }t|dg\}}|dksJ t|dg\}}|dks$J qdS )aE  Test that alternating export of C- and F-order buffers from
        an array which is both C- and F-order when relaxed strides is
        active works.
        This test defines array in the signature to ensure leaking more
        references every time the test is run (catching the leak with
        pytest-leaks).
        rB   r#	  )r   r   r$	  )r  r   N)rz   rm  r	  )rF   rX   r   r  r   r=   r=   r>   %test_relaxed_strides_buffer_info_leak;  s   z;TestNewBufferProtocol.test_relaxed_strides_buffer_info_leakc                 C   sd   t tddgddgddgdd}t d|}tt t| W d    d S 1 s+w   Y  d S )	Nrz  r   r   r   r   r   r  r  r  r1   r#   )r'   r   rz  r2   r   r)   r   )rF   r  rX   r=   r=   r>   test_out_of_order_fieldsL  s   

"z.TestNewBufferProtocol.test_out_of_order_fieldsc                 C   s   t d}| | d S )N) r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   )r'   r   r  r   r=   r=   r>   test_max_dimsY  s   
z#TestNewBufferProtocol.test_max_dimsc                 C   sb   dd }|dt j}t| }t|jd ttdtj| ~~t	dD ]}t
 dkr. d S q#d S )Nc                 S   s$   |}| d d d D ]}|| }q	|S )Nr%   r=   )r7   scalar_typer  r  r=   r=   r>   
make_ctype_  s   
zBTestNewBufferProtocol.test_error_too_many_dims.<locals>.make_ctype)!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  c_uint8r   r	   r   r   r   r'   r   rz   gccollect)rF   r+	  c_u8_33drZ  r   r=   r=   r>   test_error_too_many_dims]  s   
z.TestNewBufferProtocol.test_error_too_many_dimsc                 C   s4   t tt }td|jv  ttdtj	| d S )N&zformat string)
r   r  pointerr-	  r   r  r   r)   r'   r   )rF   rZ  r=   r=   r>   test_error_pointer_typeu  s   z-TestNewBufferProtocol.test_error_pointer_typec                 C   sj   t jd }tt}t|  W d    n1 sw   Y  |j}ttd |j	1 s.w   Y  d S )Nr   z(Unrepresentable .* 'u' \(UCS-2 strings\))
r  c_wcharr   r)   r'   r   	exceptionr   r  	__cause__)rF   r  cmr  r=   r=   r>   test_error_message_unsupported~  s   

z4TestNewBufferProtocol.test_error_message_unsupportedc              	   C   sf   t jt jt jhD ](}|d}tjdd tddt t	| W d    n1 s+w   Y  qd S )Nr  Tr   r   .*\bctypes\b)
r  c_intc_long
c_longlongr   r   r   r"  r'   r^   )rF   	c_integerr  r=   r=   r>   "test_ctypes_integer_via_memoryview  s   z8TestNewBufferProtocol.test_ctypes_integer_via_memoryviewc                 C   s   G dd dt j}|ddd}tjdd tdd	t t|}W d    n1 s,w   Y  t|d
 d t|d d d|_	t|d
 d d S )Nc                   @   s    e Zd ZdejfdejfgZdS )zDTestNewBufferProtocol.test_ctypes_struct_via_memoryview.<locals>.foorD   r   N)rQ   rR   rS   r  r-	  c_uint32_fields_r=   r=   r=   r>   r    s    r  r#   r"   rH  Tr   r   r:	  rD   r   r   )
r  	Structurer   r   r   r"  r'   r^   r	   rD   )rF   r  r   rX   r=   r=   r>   !test_ctypes_struct_via_memoryview  s   z7TestNewBufferProtocol.test_ctypes_struct_via_memoryviewr   r  r=   c                 C   s^   t | t|}tjtd| dd t| W d   n1 s#w   Y  t | dS )a  
        If a user extends a NumPy array before 1.20 and then runs it
        on NumPy 1.20+. A C-subclassed array might in theory modify
        the new buffer-info field. This checks that an error is raised
        if this happens (for buffer export), an error is written on delete.
        This is a sanity check to help users transition to safe code, it
        may be deleted at any point.
        z.*z appears to be C subclassedri  N)rm  corrupt_or_fix_bufferinfor  r   r;  r   r   )rF   r  r  r=   r=   r>   -test_error_if_stored_buffer_info_is_corrupted  s   


zCTestNewBufferProtocol.test_error_if_stored_buffer_info_is_corruptedc              	   C   s  zdd l }W n ty   tdw dD ]j}ttt|}|j||d|j	d}d}tj
t|d t| W d    n1 sCw   Y  tj
t|d t|g W d    n1 s`w   Y  t
t t| W d    n1 szw   Y  qd S )Nr   z_testbuffer is not available)r   r  r   )r  rK   z,NumPy currently does not support.*suboffsetsri  )_testbufferImportErrorr   skipr  rz   r'   rJ  r5   ND_PILr;  r'  r^   rl   )rF   rF	  r7   r$   r   r  r=   r=   r>   test_no_suboffsets  s,   

z(TestNewBufferProtocol.test_no_suboffsetsN)/rQ   rR   rS   r3  r  r  r	  r	  r		  r
	  r	  r	  r	  r	  r	  r	  r	  r   r   r   r4  r'   r   r   r)   r
  r	  r	  r	  r!	  valgrind_errorr   r%	  r   rK   r6  r&	  r(	  r)	  r6  r1	  r4	  r9	  r?	  rC	  rE	  rJ	  r=   r=   r=   r>   r    sR    F


*


	$
r  c                   @   s   e Zd ZG dd dZdejjejgZdejj	ej
gZdd Zdd Zd	d
 Zdd Zdd Zejdededdgejdg dejdg ddd Zdd ZdS )TestArrayCreationCopyArgumentc                   @   rV   )z)TestArrayCreationCopyArgument.RaiseOnBoolc                 C   rc  rW   r  rE   r=   r=   r>   __bool__  r  z2TestArrayCreationCopyArgument.RaiseOnBool.__bool__NrQ   rR   rS   rM	  r=   r=   r=   r>   RaiseOnBool  r   rO	  TFc              	   C   s   t jd D ][}t jd|d}|d }|d}ttt j|t jjd ttt j|t jjd ttt j|| 	 d ttt
jdg tt t j|t jt jjd W d    n1 s[w   Y  qd S )Nr  r=   r   r   r)  r#   )r   r*  )r'   r  r*   r  r   r)   r   	_CopyModeNEVERrO	  rm  npy_ensurenocopyr   r;  r   )rF   r   rX   r  pyscalarr=   r=   r>   test_scalars  s*   



z*TestArrayCreationCopyArgument.test_scalarsc              	   C   s<  ddd}| D ]}|dD ]}t jd|d}| jD ]}t j|||d}||ur,|jjs.J t|| q||krg| jD ]}t j|||d}||u sP|j|u sPJ q;t j|t j	j
|d}||u sf|j|u sfJ q| jD ]}t j|||d}||ur||jjs~J t|| qjttt j|t j	j
|d ttt j|d |d qqd S )	NFc                 s   sD    t jd t jd  }|D ]}t |V  | rt | V  qd S )NIntegerUnsignedInteger)r'   r  r   r_  )r^  	int_typesint_typer=   r=   r>   rW	    s   zETestArrayCreationCopyArgument.test_compatible_cast.<locals>.int_typesTrB   r   )r*  r   )F)r'   rC   	true_valsr   rK   r   r   
false_valsr   rP	  rQ	  r   r)   )rF   rW	  int1int2rX   r*  r  r=   r=   r>   test_compatible_cast  sB   




z2TestArrayCreationCopyArgument.test_compatible_castc                 C   s   t d}t|}| jD ]}t j||d}t ||rJ q| jD ]}t j||d}t ||s2J q!t j|t jjd}t ||sDJ d S )NrB   r)  )	r'   rC   r   rY	  r   r  rZ	  rP	  rQ	  )rF   rX   r]   r*  r  r=   r=   r>   test_buffer_interface   s   


z3TestArrayCreationCopyArgument.test_buffer_interfacec                    sv   t d G  fddd}| }dt jjd fd|ft jj|ft jj|ffD ]\}}t j||d}|j|u s8J q&d S )NrB   c                       r   )zFTestArrayCreationCopyArgument.test_array_interfaces.<locals>.ArrayLikeNrQ   rR   rS   r4   r=   base_arrr=   r>   	ArrayLike,   r   rb	  )TNFr)  )r'   rC   rP	  ALWAYS	IF_NEEDEDrQ	  r   r   )rF   rb	  rX   r*  r  r  r=   r`	  r>   test_array_interfaces(   s   

z3TestArrayCreationCopyArgument.test_array_interfacesc                    s   t d G  fddd}| }| jD ]}t j||d}t|  | us(J q| jD ]}t j|dd}t|  | u s@J q,tt t j|t j	j
d W d    d S 1 s[w   Y  d S )NrB   c                       s   e Zd Z fddZdS )z?TestArrayCreationCopyArgument.test___array__.<locals>.ArrayLikec                    rS  rW   r=   rE   r`	  r=   r>   r  ;   s   zITestArrayCreationCopyArgument.test___array__.<locals>.ArrayLike.__array__Nr  r=   r`	  r=   r>   rb	  :   s    rb	  r)  F)r'   rC   rY	  r   r   rZ	  r   r;  r)   rP	  rQ	  )rF   rb	  rX   r*  r  r=   r`	  r>   r3  7   s   




"z,TestArrayCreationCopyArgument.test___array__rX   r=   Q   )r   r   order1r   r,  Norder2r  c                 C   s  | |}|dkr|jjsJ n"|dkr|jjsJ n|jdkr2|d d dd d df }|jjr2J |dkr;|jj}n|dkrD|jj}nd}|t|fD ]}| jD ]}tj	|||d}||urc|jj
seJ t|| qQ|r| jD ]}tj	|||d}ts||u s|jj|u sJ qptj	|tjj|d}ts||u s|jj|u sJ qL| jD ]}tj	|||d}t|| qtttj	|tjj|d tttj	|d |d qLd S )Nr   r,  r   r"   Tr-  )r*  rK   r5  r6  r   r   r   rY	  r'   r   r   r   rZ	  r   r   r  rP	  rQ	  r   r)   )rF   rX   rg	  ri	  no_copy_necessaryr]   r*  r  r=   r=   r>   test_order_mismatchR   sT   






z1TestArrayCreationCopyArgument.test_order_mismatchc                 C   s   t g dg dg}ttt j|jt jjdd ttt j|jt jjdt jd ttt j|t jjdd ttt j|t jjdt jd d S )N)r#   r"   r   r  r   r-  )r*  r    r   r,  )r'   r   r   r)   r"  rP	  rQ	  r   rY   r=   r=   r>   test_striding_not_ok   s"   


z2TestArrayCreationCopyArgument.test_striding_not_okN)rQ   rR   rS   rO	  r'   rP	  rc	  r  rY	  rd	  r  rZ	  rT	  r]	  r^	  re	  r3  r   r   r   r   rC   r   rk	  rl	  r=   r=   r=   r>   rL	    s     .7rL	  c                   @   r  )
TestArrayAttributeDeletionc                 C   sb   t d}g d}t }|td |D ]	}ttt|| qW d    d S 1 s*w   Y  d S )Nr"   )r7   r   r$   r   r  r  r`  zAssigning the 'data' attribute)r'   r   r   r!  r   r   rO  delattr)rF   rD   attrr$  r   r=   r=   r>   ,test_multiarray_writable_attributes_deletion   s   
"zGTestArrayAttributeDeletion.test_multiarray_writable_attributes_deletionc                 C   s.   t d}g d}|D ]	}ttt|| qd S )Nr"   )r   rK   r1   r9   r   r   r  r"  r4   r   r  r  )r'   r   r   rO  rn	  rF   rD   ro	  r   r=   r=   r>   0test_multiarray_not_writable_attributes_deletion   s
   
zKTestArrayAttributeDeletion.test_multiarray_not_writable_attributes_deletionc                 C   0   t dj}g d}|D ]	}ttt|| qd S )Nr"   )r   updateifcopyr   rL   r'   r   rK   r   rO  rn	  rq	  r=   r=   r>   1test_multiarray_flags_writable_attribute_deletion   s
   zLTestArrayAttributeDeletion.test_multiarray_flags_writable_attribute_deletionc                 C   rs	  )Nr"   )r  r5  r6  r  r   r   r   r   r   r   r   ru	  rq	  r=   r=   r>   5test_multiarray_flags_not_writable_attribute_deletion   s
   zPTestArrayAttributeDeletion.test_multiarray_flags_not_writable_attribute_deletionN)rQ   rR   rS   rp	  rr	  rv	  rw	  r=   r=   r=   r>   rm	     s
    	rm	  c                   @   s   e Zd ZG dd dZedZejdei dfegi dgfeegi ddgfeddidfeddiefeddidggfedd	ie	fed
didfed
d	ie	fed
diefg
dd Z
dS )TestArrayInterfacec                   @   s(   e Zd Zdd Zdd Zedd ZdS )zTestArrayInterface.Fooc                 C   s   || _ ddi| _d S Ntypestrr  )r  iface)rF   r  r=   r=   r>   rZ      s   zTestArrayInterface.Foo.__init__c                 C   r   rW   )r  r  rE   r=   r=   r>   	__float__   r  z TestArrayInterface.Foo.__float__c                 C   s   | j S rW   )r{	  rE   r=   r=   r>   r4      s   z*TestArrayInterface.Foo.__array_interface__N)rQ   rR   rS   rZ   r|	  r(  r4   r=   r=   r=   r>   Foo   s
    r}	  r  zval, iface, expectedr7   r=   Nr  r  r   r   c                 C   s   ddi| j _| j j| trttd}t|t	r$t
|tj| nt|}tt|| |jdks8J ~trJttd}t|| d S d S ry	  )r   r{	  updater   r  r  r'   r   r~   r  r   r   r	   )rF   r  r{	  r  pre_cntr  post_cntr=   r=   r>   test_scalar_interface   s   

z(TestArrayInterface.test_scalar_interface)rQ   rR   rS   r}	  r   r   r   r   r
  r)   r	  r=   r=   r=   r>   rx	     s     rx	  c                  C   s$   G dd d} t t|  d d S )Nc                   @   s   e Zd ZedZejZdS )z*test_interface_no_shape.<locals>.ArrayLiker#   N)rQ   rR   rS   r'   r   r4   r=   r=   r=   r>   rb	     s    

rb	  r#   )r	   r'   r   )rb	  r=   r=   r>   test_interface_no_shape   s   r	  c                  C   s`   t ddgddgddgdd} t jd| d	}t |jd
 }t |jd }t|j|j d S )Nr!  rc   r<  r   r   r   rq  rB   r   descrrz	  )r'   r   r   r4   r	   r1   )my_dtyperD   descr_t	typestr_tr=   r=   r>   test_array_interface_itemsize   s   r	  c                     s   t g d} t| j d d< G  fddd}t | d  d< G fdd	d	}t | }t | }| d d
 d}t|| t|| d S )Nr(  r=   r7   c                          e Zd Z ZdS )z5test_array_interface_empty_shape.<locals>.DummyArray1Nr_	  r=   )
interface1r=   r>   DummyArray1!  r-  r	  r   r$   c                       r	  )z5test_array_interface_empty_shape.<locals>.DummyArray2Nr_	  r=   )
interface2r=   r>   DummyArray2!  r-  r	  r#   )r'   r   rz  r4   r  r^   r   r	   )rX   r	  r	  arr1arr2arr3r=   )r	  r	  r>    test_array_interface_empty_shape   s   

r	  c                     sl   t jg ddd} t| j t|  d< d d< d d< G  fd	d
d
}t | }t|| dd   d S )Nr(  r   r   r$   r  r7   r   r<   c                       r	  )z/test_array_interface_offset.<locals>.DummyArrayNr_	  r=   	interfacer=   r>   
DummyArray!  r-  r	  r#   )r'   r   rz  r4   r   r^   r	   )rX   r	  r	  r=   r	  r>   test_array_interface_offset!  s   
r	  c                     sr   t jg ddd} t| j d d< G  fddd}tt t |  W d    d S 1 s2w   Y  d S )Nr(  r   r   u   ✓rz	  c                       r	  )z8test_array_interface_unicode_typestr.<locals>.DummyArrayNr_	  r=   r	  r=   r>   r	  )!  r-  r	  )r'   r   rz  r4   r   r;  r
  r^   )rX   r	  r=   r	  r>   $test_array_interface_unicode_typestr$!  s   
"r	  c                  C   sH   t dj} z| d= | dd= W d S  ty   Y d S  ty#   tw )Nr   r#   r"   )r'   r   r`  r
  r   r  )r8  r=   r=   r>   test_flat_element_deletion0!  s   r	  c                  C   s(   t jdddgd} tt| d jd d S )Nr"   )r   r   )r  r   r   r   r   )r'   r*   r   r)   __delitem__r   r=   r=   r>   test_scalar_element_deletion;!  rM  r	  c                   @   rV   )TestMapIterc                 C   s   t ddt}g dg df}g d}t||| t|g dg dg dg t d	t}t g d
f}g d}t||| t|g d d S )NrK  r^  )r#   r#   r"   r   )r   r   r"   r   )r  r  r   r   )r  r  r  g      3@)g      Z@rA  r  r  )rq  r  g      D@g      &@r   )r#   r"   r   )r  r   fffffY@)r	  g     I@r  r  r  rA  )	r'   rC   r   rn  r  rm  test_inplace_incrementr	   r   )rF   rD   r  rg   r   r=   r=   r>   test_mapiterA!  s   
zTestMapIter.test_mapiterN)rQ   rR   rS   r	  r=   r=   r=   r>   r	  @!  r\   r	  c                   @   ru  )TestAsCArrayc                 C   s.   t jdt jd}t|d}t|d | d S )NrE  r   r   )r'   rC   ry  rm  test_as_c_arrayr	   rF   r   from_cr=   r=   r>   test_1darrayW!  s   zTestAsCArray.test_1darrayc                 C   s8   t jdt jddd}t|dd}t|d | d S )NrE  r   r   r   r"   r   )r"   r   r'   rC   ry  r   rm  r	  r	   r	  r=   r=   r>   test_2darray\!  s   zTestAsCArray.test_2darrayc                 C   s<   t jdt jdddd}t|ddd}t|d | d S )NrE  r   r"   r   r   r#   r(  r	  r	  r=   r=   r>   test_3darraya!  s   zTestAsCArray.test_3darrayN)rQ   rR   rS   r	  r	  r	  r=   r=   r=   r>   r	  V!  s    r	  c                   @   ru  )TestConversionc                 C   s  t jd D ]T}tdt jd|dkd|f  tdt jd|dk  d|f  t jd D ]-}tt jd|dt jd|dkd||f  tt jd|dt jd|dk  d||f  q+qdD ]u}tdt jd|dk d|f  tdt jd|dk d|f  tdt jd|dkd|f  d	D ]B}tt jd|dt jd|dkd||f  tt jd|dt jd|dk  d||f  tt jd|dt jd|dkd||f  qq\d
t jd  D ]{}tdt jd|dkd|f  tdt jd|dk  d|f  tdt jd|dkd|f  d
t jd  D ]C}tt jd|dt jd|dkd||f  tt jd|dt jd|dk  d||f  tt jd|dt jd|dkd||f  qqd S )Nr  r#   r   r   ztype %s failedztype %s and %s failedBHILQPr%   bhilqpbhlqpr  )r'   r  r   r   )rF   r  r  r=   r=   r>   &test_array_scalar_relational_operationh!  sT    

 


	 


z5TestConversion.test_array_scalar_relational_operationc                 C   s   t ttdgd t ttdgd t ttdggd ttttddg G dd d}tttt|  tttt| g trPt	d td g}||d	< t
}t|t| d |d	< d S )
NFTr  r#   r"   c                   @   rV   )z:TestConversion.test_to_bool_scalar.<locals>.NotConvertiblec                 S   rc  rW   r  rE   r=   r=   r>   rM	  !  r  zCTestConversion.test_to_bool_scalar.<locals>.NotConvertible.__bool__NrN	  r=   r=   r=   r>   NotConvertible!  r\   r	  z"Pyston disables recursion checkingr   )r	   r!  r'   r   r   r)   r  r   r   rH	  RecursionError)rF   r	  self_containingErrorr=   r=   r>   test_to_bool_scalar!  s   
z"TestConversion.test_to_bool_scalarc                 C   s0  t dd f}|D ]}t|tdd t|tdgd t|tdggd tt|tddg td|td td	|td
 td|td tj	dk rxG dd d}td|t|  td|t| g n	 G dd d}tt
|t|  tt
|t| g qd S )Nc                 S      |   S rW   )__int__r   r=   r=   r>   rU  !  r  z3TestConversion.test_to_int_scalar.<locals>.<lambda>r   r#   r  r"   r   4rI      5r   6)r   r@  c                   @   rV   )z3TestConversion.test_to_int_scalar.<locals>.HasTruncc                 S   r  r  r=   rE   r=   r=   r>   	__trunc__!  r  z=TestConversion.test_to_int_scalar.<locals>.HasTrunc.__trunc__N)rQ   rR   rS   r	  r=   r=   r=   r>   HasTrunc!  r\   r	  r   c                   @   rV   )z9TestConversion.test_to_int_scalar.<locals>.NotConvertiblec                 S   rc  rW   r  rE   r=   r=   r>   r	  !  r  zATestConversion.test_to_int_scalar.<locals>.NotConvertible.__int__N)rQ   rR   rS   r	  r=   r=   r=   r>   r	  !  r\   r	  )r   r	   r'   r   r   r
  r  r  r  version_infor  )rF   	int_funcsint_funcr	  r	  r=   r=   r>   test_to_int_scalar!  s,   
z!TestConversion.test_to_int_scalarN)rQ   rR   rS   r	  r	  r	  r=   r=   r=   r>   r	  g!  s    )r	  c                   @   r   )	TestWherec              
   C   s  t tjtjtjtjtjtjtjg}|D ]d}tj	dt d}t
t||d|d|d t
t| |d|d|d t
td|d|d|d t
td|d|d|d t||}t|}||}d|d< |d |d< t
t|||| t
t|||| t
t|||d | t
t||d || t
t|d d d |d d d |d d d |d d d  t
t|dd d |dd d |dd d |dd d  t
t|d d d	 |d d d	 |d d d	 |d d d	  t
t|dd d	 |dd d	 |dd d	 |dd d	  t
t|d d d
 |d d d
 |d d d
 |d d d
  t
t|d d d |d d d |d d d |d d d  t
t|dd d |dd d |dd d |dd d  qd S )N5   r   r   r#   TFr   r"   r   r   r   )r!  r'   r   r   r   ry  rH  rk  r{  r   r	   r$  	ones_likern  r  )rF   dtsr  r  r   r   r   r=   r=   r>   rG  !  s4   
 "  

<<<<<<>zTestWhere.test_basicc                 C   s  t tdd d td  tjg tddd}tjg tjddd}t t|d|tg dd tg d}td}tjdd|d	||d
d||d||d||d|ddgtd}tjg dtd}|d d  }|t| |t|< t t|||| |d d  }|t|  |t| < t t|||| t t|||| tjddgtj	d}td}t
td||jtj	 td}t
td||jtj	 td}t
td||jtj	 td}t
td||jtj d S )NTr   r   r   )gq=
ףpg{GzĿgHzGgףp=
ӿg{Gzgffffffr  gx&1?g/$?g
ףp=
ǿgx&1?gh|?5?g/$?gףp=
?g|?5^?gh|?5?gʡE?gZd;O?g=
ףp=g^I+?NaN5z0lWzXqcsQNFdkp36r>  )r   r   r#   r   r#   r#   r   r   r#   r#   r   r#   r#   r   r#   r#   r   r#   r   r   r  r  Infinityz	-InfinitygP.5_)r   r'   r$  r   r!  r   r   r  r(   rF  r	   r   )rF   rZ  r   r   rk  r   r   r=   r=   r>   test_exotic!  s<   "
zTestWhere.test_exoticc                 C   s   ddg}t d}t d}t t |d d t jf ||}t|d |d  t|d |d  |j}|j}t |||}t|d d df |d d df  t|d d df |d d df  d S )NTF)r"   r  r   r#   )r'   r*   r   r$  r   r  r   r"  )rF   r  rD   r   r   r=   r=   r>   	test_ndim"  s   

""&zTestWhere.test_ndimc                 C   s   t g d}t d}t jg dt jd}t jg dt jd}tt |||| |t j}|t j}tt |||| |t	}d||dk< tt |||| |dk}d||dk< d||< tt |||| d S )	NFTFFFFTFFFTFr#   rA  r  r  r  rf        r        $r  r  r  r  r   rA  r  r  r  rf  r	  r  r	  r  r  r  r  i
r   iau)
r'   r   r   r   r	   r$  rn  rF  r   r   )rF   r  rD   r   r   tmpmaskr=   r=   r>   test_dtype_mix"  s&   



zTestWhere.test_dtype_mixc                 C   s   t g d}t jg dt jd}t jddd}t jg dt jd}tt |||| |d}tt |||| |d}tt |||| |d}tt |||| d S )	Nr	  r	  r   r#   r{  r	  rM  rz  )r'   r   r   r   r	   r$  rn  )rF   r  r   rD   r   r=   r=   r>   test_foreign4"  s   




zTestWhere.test_foreignc                 C   sH   ddg}t d}t d}ttt j||| ttt j|d || d S )NTr   r=  r   )r'   r   r   r)   r$  )rF   r  rD   r   r=   r=   r>   
test_errorG"  s
   

zTestWhere.test_errorc                 C   s|   t d}t d}tt d||d tt d||d t d}t d}tt d||d tt d||d d S )Nr    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTFabcdxxxxxxxx)r'   r   r	   r$  r  r=   r=   r>   r  N"  s   



zTestWhere.test_stringc                 C   sB   t d}t t |dk}t|t t jg g gt jd d S )Nr  g     X@r   )r'   r*   vstackr$  r   
atleast_2dr   r  )rF   r   ibadr=   r=   r>   test_empty_result["  s
   
zTestWhere.test_empty_resultc                 C   sL   g d}t jd t jj| }tdD ]}| }| }t|| qd S )N)rB   r"   r   r   rI   r   r"   rB   )r'   r  r  r  rz   nonzeror   )rF   r7   r   r   	benchmarkr  r=   r=   r>   test_largedimc"  s   zTestWhere.test_largedimN)rQ   rR   rS   rG  r	  r	  r	  r	  r	  r  r	  r	  r=   r=   r=   r>   r	  !  s    )r	  c                   @   s`   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
edd Zdd ZdS )
TestSizeOfc                 C   s    t g }tt|dk d S r   )r'   r   r   r  	getsizeofr  r=   r=   r>   test_empty_arrays"  s   
zTestSizeOf.test_empty_arrayc                 C   s<   |dj }dD ]}tj||d}tt||| k qd S )Nr   )rB   r  r  i  r   )r1   r'   rC   r   r  r	  )rF   r   	elem_sizer  r   r=   r=   r>   check_arrayw"  s
   
zTestSizeOf.check_arrayc                 C   r  rW   )r	  r'   r   rE   r=   r=   r>   test_array_int32~"  rH   zTestSizeOf.test_array_int32c                 C   r  rW   )r	  r'   r   rE   r=   r=   r>   test_array_int64"  rH   zTestSizeOf.test_array_int64c                 C   r  rW   )r	  r'   rF  rE   r=   r=   r>   test_array_float32"  rH   zTestSizeOf.test_array_float32c                 C   r  rW   )r	  r'   r   rE   r=   r=   r>   test_array_float64"  rH   zTestSizeOf.test_array_float64c                 C   s*   t d}tt|d t|k  d S )Nr  .)r'   r   r   r  r	  r8  r=   r=   r>   r  "  s   
 zTestSizeOf.test_viewc              	   C   s4   t d}tt|t|ddd k  d S )Nr  r#   )r'   r   r   r  r	  r   r*  r8  r=   r=   r>   r_  "  s   
*zTestSizeOf.test_reshapec                 C   sP   t d}t|}|d t|t|k |d t|t|k  d S )Nr  r     )r'   r   r  r	  r  r   )rF   r   oldr=   r=   r>   r  "  s   



zTestSizeOf.test_resizec                 C   s   t d}tt|jd d S )Nr  rD   )r'   r   r   r
  
__sizeof__r8  r=   r=   r>   r	  "  s   
zTestSizeOf.test_errorN)rQ   rR   rS   r	  r	  r	  r	  r	  r	  r  r_  r   r  r	  r=   r=   r=   r>   r	  q"  s    
r	  c                   @   r`  )TestHashingc                 C   s   t d}ttt| d S r  )r'   r   r   r
  r   r  r=   r=   r>   test_arrays_not_hashable"  s   
z$TestHashing.test_arrays_not_hashablec                 C   s"   t g }tt|tjj  d S rW   )r'   r   r   r~   collectionsr  Hashabler  r=   r=   r>   test_collections_hashable"  r  z%TestHashing.test_collections_hashableN)rQ   rR   rS   r	  r	  r=   r=   r=   r>   r	  "  s    r	  c                   @   s   e Zd ZeZejejejejej	ej
ejejejejejejejejejejejejejgZG dd dejZG dd dejZG dd dZdd Zd	d
 Zdd Zdd Z dS )TestArrayPriorityc                   @      e Zd ZdZdd ZdS )zTestArrayPriority.Foor,  c                 O      t j|i || S rW   r'   r   r]   r  r  r  r=   r=   r>   r  "  rm  zTestArrayPriority.Foo.__new__NrQ   rR   rS   r  r  r=   r=   r=   r>   r}	  "      r}	  c                   @   r	  )zTestArrayPriority.Barg     @Y@c                 O   r	  rW   r	  r	  r=   r=   r>   r  "  rm  zTestArrayPriority.Bar.__new__Nr	  r=   r=   r=   r>   Bar"  r	  r	  c                   @   s   e Zd ZdZdd Ze ZZe ZZe Z	Z
e ZZe ZZe ZZe ZZe ZZe ZZe ZZe ZZe ZZe ZZeZeZ eZ!eZ"eZ#eZ$dS )zTestArrayPriority.Otherg     @@c                 C   r	  rW   r  r  r=   r=   r>   _all"  r  zTestArrayPriority.Other._allN)%rQ   rR   rS   r  r	  r  r'  r  __rsub__rF  r  rJ  rK  rG  __rdiv____mod____rmod____truediv____rtruediv____floordiv____rfloordiv____and____rand____xor____rxor____or____ror__
__lshift____rlshift__
__rshift____rrshift__r  r  r  r  r  r  r=   r=   r=   r>   Other"  s,    r
  c                 C   sd   t ddg}| ddg}| jD ]}t|}tt|||| j| tt|||| j| qd S Nr#   r"   )r'   r   r	  
binary_opsrW  r   r~   rF   rD   r   r   r  r=   r=   r>   test_ndarray_subclass"     
z'TestArrayPriority.test_ndarray_subclassc                 C   s^   t ddg}|  }| jD ]}t|}tt|||| j| tt|||| j| qd S r
  )r'   r   r
  r
  rW  r   r~   r
  r=   r=   r>   test_ndarray_other"     
z$TestArrayPriority.test_ndarray_otherc                 C   sd   |  ddg}| ddg}| jD ]}t|}tt|||| j| tt|||| j| qd S r
  )r}	  r	  r
  rW  r   r~   r
  r=   r=   r>   test_subclass_subclass"  r
  z(TestArrayPriority.test_subclass_subclassc                 C   s^   |  ddg}|  }| jD ]}t|}tt|||| j| tt|||| j| qd S r
  )r}	  r
  r
  rW  r   r~   r
  r=   r=   r>   test_subclass_other"  r
  z%TestArrayPriority.test_subclass_otherN)!rQ   rR   rS   r/   r  r  r  r  r0   r  r  r  and_or_r  r  r  gtgeltleneeqr
  r'   r5   r}	  r	  r
  r
  r
  r
  r
  r=   r=   r=   r>   r	  "  s    r	  c                   @   r  )
TestBytestringArrayNonzeroc                 C   s   t tjdgtd  d S Nr  r   )r   r'   r   r   rE   r=   r=   r>   "test_empty_bstring_array_is_falsey"  r  z=TestBytestringArrayNonzero.test_empty_bstring_array_is_falseyc                 C   &   t jdgtd}d|d< t|  d S )Nr  r       r   r'   r   r   r   r   r=   r=   r>   'test_whitespace_bstring_array_is_falsey#     zBTestBytestringArrayNonzero.test_whitespace_bstring_array_is_falseyc                 C   r 
  )Nr  r       r   r"
  r   r=   r=   r>   %test_all_null_bstring_array_is_falsey#  r$
  z@TestBytestringArrayNonzero.test_all_null_bstring_array_is_falseyc                 C   s$   t jdgtd}d|d< t| d S )Nr  r       r   r"
  r   r=   r=   r>   (test_null_inside_bstring_array_is_truthy#  s   zCTestBytestringArrayNonzero.test_null_inside_bstring_array_is_truthyN)rQ   rR   rS   r
  r#
  r&
  r(
  r=   r=   r=   r>   r
  "  
    r
  c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	TestUnicodeEncodingz_
    Tests for encoding related bugs, such as UCS2 vs UCS4, round-tripping
    issues, etc
    c                 C   sX   t jddd}tdtjd D ]}t|}||d< |d |ks!J | |ks)J qdS )z; Tests that GETITEM, SETITEM, and PyArray_Scalar roundtrip r=   U1r  r#   N)r'   r*   rz   r  
maxunicoder  r  )rF   rX   r   r  r=   r=   r>   test_round_trip#  s   z#TestUnicodeEncoding.test_round_tripc                 C   s2   t ddg}t d|d d < t|ddg d S Naabbcc)r'   r   r  r	   rF   r   r=   r=   r>   test_assign_scalar #  s   z&TestUnicodeEncoding.test_assign_scalarc                 C   s0   t ddg}|t d t|ddg d S r.
  )r'   r   r6   r  r	   r2
  r=   r=   r>   test_fill_scalar&#  s   z$TestUnicodeEncoding.test_fill_scalarN)rQ   rR   rS   r3  r-
  r3
  r4
  r=   r=   r=   r>   r*
  #  s
    
r*
  c                   @   r  )
TestUnicodeArrayNonzeroc                 C   s   t tjdgtjd  d S r
  )r   r'   r   r  rE   r=   r=   r>   "test_empty_ustring_array_is_falsey/#  r  z:TestUnicodeArrayNonzero.test_empty_ustring_array_is_falseyc                 C   (   t jdgt jd}d|d< t|  d S )Neggsr   r!
  r   r'   r   r  r   r   r=   r=   r>   'test_whitespace_ustring_array_is_falsey2#     z?TestUnicodeArrayNonzero.test_whitespace_ustring_array_is_falseyc                 C   r7
  )Nr8
  r   r%
  r   r9
  r   r=   r=   r>   %test_all_null_ustring_array_is_falsey7#  r;
  z=TestUnicodeArrayNonzero.test_all_null_ustring_array_is_falseyc                 C   s&   t jdgt jd}d|d< t| d S )Nr8
  r   r'
  r   r9
  r   r=   r=   r>   (test_null_inside_ustring_array_is_truthy<#  s   z@TestUnicodeArrayNonzero.test_null_inside_ustring_array_is_truthyN)rQ   rR   rS   r6
  r:
  r<
  r=
  r=   r=   r=   r>   r5
  -#  r)
  r5
  c                   @   ru  )
TestFormatc                 C   s4   t t j}td|d td|d d d S )Nz{:0.3g}z3.14r=   )r'   r   pir	   r  r   r=   r=   r>   test_0dD#  s   zTestFormat.test_0dc                 C   s&   t t jg}td|t| d S )Nz{})r'   r   r?
  r	   r  r   r   r=   r=   r>   test_1d_no_formatI#  s   zTestFormat.test_1d_no_formatc                 C   s    t t jg}ttdj| d S )Nz{:30})r'   r   r?
  r   r
  r  r   r=   r=   r>   test_1d_formatM#  s   zTestFormat.test_1d_formatN)rQ   rR   rS   r@
  rA
  rB
  r=   r=   r=   r>   r>
  B#  s    r>
  )r   c                   @   s   e Zd Zdd Zdd Zdd Zejjde	
g de	
d	d
gddgge	j
ddde	jde	eddgddgddgddde	j
dgede	
g e	dee	
g dgg dddd Zdd ZdS ) 
TestCTypesc                 C   s:   t g dg dg}tt|jj tt|jjd d S )Nr(  rS  r   )r'   r   r	   r  _ctypesr  r7   )rF   test_arrr=   r=   r>   test_ctypes_is_availableV#  s   z#TestCTypes.test_ctypes_is_availablec                 C   sd   ddl m} d |_z$tg dg dg}tt|jj|j t	t
|jjd W t|_d S t|_w )Nr   )r	  r(  rS  r   )
numpy.corer	  r  r'   r   r   r~   rD
  _missing_ctypesr	   r  r7   )rF   r	  rE
  r=   r=   r>   test_ctypes_is_not_available\#  s   
z'TestCTypes.test_ctypes_is_not_availablec                 C   s   d| j _| S )NF)rK   rL   r   r=   r=   r>   _make_readonlyh#  s   zTestCTypes._make_readonlyrX   r(  r   r   r   fourr-  r^  r   r  rz  rD   r   r   r"   r   r'	  Nr  )1d2d
structuredoverlappingr(   r2   zempty-2dr   r  c                 C   sX   |  }t|}|jtj}~t  t| d ud ~tr"t  t| d u d d S Nz,ctypes pointer did not hold onto a referencez3unknowable whether ctypes pointer holds a reference)	r*  r  r  r  data_asc_void_pr   r   r   rF   rX   arr_ref
ctypes_ptrr=   r=   r>   #test_ctypes_data_as_holds_referencel#  s   
z.TestCTypes.test_ctypes_data_as_holds_referencec                 C   sZ   t d g }t|}|jj}~t  t| d ud ~t	r#t  t| d u d d S rP
  )
r'   r   r*  r  r  r  _as_parameter_r   r   r   rS
  r=   r=   r>   (test_ctypes_as_parameter_holds_reference#  s   
z3TestCTypes.test_ctypes_as_parameter_holds_reference)rQ   rR   rS   rF
  rI
  rJ
  r   r   r   r'   r   r*   r   rz  r(   r2   rV
  rX
  r=   r=   r=   r>   rC
  T#  s2    
rC
  c                   @   sz   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zejjdddd Zdd ZdS )TestWritebackIfCopyc                 C   s:   t d}t jddd}t j|d|d}t|td d S NrI   r  r   r   r6  )r'   r  r2   r  r	   rz   rF   r  r2  r  r=   r=   r>   test_argmax_with_out#  s   
z(TestWritebackIfCopy.test_argmax_with_outc                 C   s<   t d }t jddd}t j|d|d}t|td d S rZ
  )r'   r  r2   r  r	   rz   r[
  r=   r=   r>   test_argmin_with_out#  s   z(TestWritebackIfCopy.test_argmin_with_outc                 C   sf   t dddj}t ||dkddg t|t ddgddgddgg ttt j||dkg  d S )	Nr   r"   r   ,   rQ  r   r#   r   )	r'   rC   r   r"  placer	   r   r   r)   r   r=   r=   r>   test_insert_noncontiguous#  s   "z-TestWritebackIfCopy.test_insert_noncontiguousc                 C   sP   t dddj}t |ddgddg t|t ddgddgddgg d S )	Nr   r"   r   r   r^
  rQ  r   rI   )r'   rC   r   r"  r  r	   r   r   r=   r=   r>   test_put_noncontiguous#  s   &z*TestWritebackIfCopy.test_put_noncontiguousc                 C   sP   t dddj}t ||dk|d  t|t ddgddgddgg d S )	Nr   r"   r   r   r   r#   r   r  )r'   rC   r   r"  rm  r	   r   r   r=   r=   r>   test_putmask_noncontiguous#  s   &z.TestWritebackIfCopy.test_putmask_noncontiguousc                 C   sJ   t jddd}t jddd}t j|ddg|dd t|t ddg d S )Nr   r   r   r"   r   raiser8  )r'   rC   r2   r}  r	   r   )rF   rD   r2  r=   r=   r>   test_take_mode_raise#  s   z(TestWritebackIfCopy.test_take_mode_raisec                 C   sj   t g dg dg dg}t jddd}ddg}t j|||dd	 t|t g d
g dg d
g d S )Nr  r<  r  r   r   rB   rc
  r8  )rB   re
  rB   )re
  rB   re
  )r'   r   r2   r:  r	   )rF   rD   r2  choicesr=   r=   r>   test_choose_mod_raise#  s   z)TestWritebackIfCopy.test_choose_mod_raisec                 C   s(   t ddd}|jj}| }~d S )Nr   r   )r'   rC   r   r"  r`  r  rw  r=   r=   r>   test_flatiter__array__#  s   z*TestWritebackIfCopy.test_flatiter__array__c                 C   sL   t jdtddd}t j|||d}t|t g dg dg dg d S )Nr   r   r   r6  )r"  r  r  )r  6   B   )E   Z   o   )r'   rC   r  r   rv  r	   r   r  r=   r=   r>   test_dot_out#  s   &z TestWritebackIfCopy.test_dot_outc                 C   s   ddl m}m} tdddj}||}t|jj	 t|j
|u  d|d< || t|d t|jjdk t|j
d  d|d< t|d d S )Nr   )npy_create_writebackifcopynpy_resolver   r   rp  .r  )r   ro
  rp
  r'   rC   r   r"  r   rK   r   r   r	   r  r$   )rF   ro
  rp
  rX   arr_wbr=   r=   r>   test_view_assign#  s   
z$TestWritebackIfCopy.test_view_assignz9increments self in dealloc; ignore since deprecated path.rw   c                 C   sj   t  (}|t tddd}|j}t| t	|j
dks#J W d    d S 1 s.w   Y  d S )Nr   r   r#   )r   r   r"  r'   rC   r   r"  rm  npy_abuse_writebackifcopyr   log)rF   r$  rX   r   r=   r=   r>   test_dealloc_warning#  s   

"z(TestWritebackIfCopy.test_dealloc_warningc                 C   s   ddl m}m} tdddj}| }trt	
|}||}t|jj t|j|u  d|d< || t|| t|jjdk t|jd  trSt|t	
| d|d< t|| d S )Nr   )ro
  npy_discardr   r   rp  .r  )r   ro
  rv
  r'   rC   r   r"  r*  r   r  r  r   rK   r   r   r	   r  r$   )rF   ro
  rv
  rX   rU  arr_cntrq
  r=   r=   r>   test_view_discard_refcount	$  s"   

z.TestWritebackIfCopy.test_view_discard_refcountN)rQ   rR   rS   r\
  r]
  r`
  ra
  rb
  rd
  rg
  rh
  rn
  rr
  r   r   r  ru
  rx
  r=   r=   r=   r>   rY
  #  s     	
rY
  c                   @   rz  )
TestArangec                 C   s   t tdtjdtj d S )Nzsize exceededr   )r   r)   r'   rC   r  rE   r=   r=   r>   test_infinite"$  s   
zTestArange.test_infinitec                 C   s   t tdtjddtj d S )Nzcannot compute lengthr   r#   )r   r)   r'   rC   rk  rE   r=   r=   r>   test_nan_step($  s   zTestArange.test_nan_stepc                 C   sL   t ttjddd t ttjddd t ttjddd t ttjddd d S )Nr   rB   r  r  )r   ZeroDivisionErrorr'   rC   rE   r=   r=   r>   test_zero_step.$  s   zTestArange.test_zero_stepc                 C   s@   t ttj t ttjdd t ttjdd t ttjdd d S )Nr   )stepr   r   r   )start)r   r
  r'   rC   rE   r=   r=   r>   test_require_range6$  s   zTestArange.test_require_rangec                 C   sf   t jdd}t jddd}t jddd}t|dksJ t|dks$J t|dks,J t|| d S )Nr   )stopr   )r
  r
  r   r   )r'   rC   r   r   )rF   keyword_stopkeyword_zerotostopkeyword_start_stopr=   r=   r>   test_start_stop_kwarg<$  s   z TestArange.test_start_stop_kwargN)rQ   rR   rS   rz
  r{
  r}
  r
  r
  r=   r=   r=   r>   ry
  !$  s    ry
  c                   @   @   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestArrayFinalizez Tests __array_finalize__ c                 C   s6   G dd dt j}t d|}t|j|ju  d S )Nc                   @   rV   )z7TestArrayFinalize.test_receives_base.<locals>.SavesBasec                 S   s   | j | _d S rW   )r   
saved_baser  r=   r=   r>   r  M$  rJ  zJTestArrayFinalize.test_receives_base.<locals>.SavesBase.__array_finalize__NrQ   rR   rS   r  r=   r=   r=   r>   	SavesBaseL$  r\   r
  r#   )r'   r5   r   r]   r   r
  r   )rF   r
  rD   r=   r=   r>   test_receives_baseJ$  s   z$TestArrayFinalize.test_receives_basec                 C   V   G dd dt j}tjtdd t d| W d    d S 1 s$w   Y  d S )Nc                   @   s   e Zd Zedd ZdS )z?TestArrayFinalize.test_bad_finalize1.<locals>.BadAttributeArrayc                 S   r  Nboohoo!rd  rE   r=   r=   r>   r  U$     zRTestArrayFinalize.test_bad_finalize1.<locals>.BadAttributeArray.__array_finalize__N)rQ   rR   rS   r(  r  r=   r=   r=   r>   BadAttributeArrayT$  s    r
  znot callableri  rB   r'   r5   r   r;  r
  rC   r]   rF   r
  r=   r=   r>   test_bad_finalize1S$  s   "z$TestArrayFinalize.test_bad_finalize1c                 C   r
  )Nc                   @   rV   )z?TestArrayFinalize.test_bad_finalize2.<locals>.BadAttributeArrayc                 S   r  r
  rd  rE   r=   r=   r>   r  ^$  r  zRTestArrayFinalize.test_bad_finalize2.<locals>.BadAttributeArray.__array_finalize__Nr
  r=   r=   r=   r>   r
  ]$  r\   r
  ztakes 1 positionalri  rB   r
  r
  r=   r=   r>   test_bad_finalize2\$     "z$TestArrayFinalize.test_bad_finalize2c                 C   r
  )Nc                   @   rV   )z?TestArrayFinalize.test_bad_finalize3.<locals>.BadAttributeArrayc                 S   r  r
  rd  r  r=   r=   r>   r  f$  r  zRTestArrayFinalize.test_bad_finalize3.<locals>.BadAttributeArray.__array_finalize__Nr
  r=   r=   r=   r>   r
  e$  r\   r
  r
  ri  rB   )r'   r5   r   r;  r   rC   r]   r
  r=   r=   r>   test_bad_finalize3d$  r
  z$TestArrayFinalize.test_bad_finalize3c                 C   s   G dd dt j}G dd d}t | }t|d }tt}|| W d    n1 s1w   Y  |jj	d }~t
t|| t  t
| d ud ~t  t
| d ud ~t  t
| d u d	 d S )
Nc                   @   rV   )zBTestArrayFinalize.test_lifetime_on_error.<locals>.RaisesInFinalizec                 S   s   t | rW   r  r  r=   r=   r>   r  o$  r
  zUTestArrayFinalize.test_lifetime_on_error.<locals>.RaisesInFinalize.__array_finalize__Nr
  r=   r=   r=   r>   RaisesInFinalizen$  r\   r
  c                   @   rO   )z7TestArrayFinalize.test_lifetime_on_error.<locals>.DummyNrP   r=   r=   r=   r>   Dummyt$  r  r
  r=   r   z!object should not already be deadz*obj_arr should not hold the last referencezno references should remain)r'   r5   r   r  r  r   r   r]   r6	  r  r   r~   r   )rF   r
  r
  rN  obj_refr   obj_subarrayr=   r=   r>   test_lifetime_on_errorl$  s$   
z(TestArrayFinalize.test_lifetime_on_errorc                 C   s4   G dd dt j}t d|}t|jd u  d S )Nc                       s   e Zd Z fddZ  ZS )z;TestArrayFinalize.test_can_use_super.<locals>.SuperFinalizec                    s   t  || _d S rW   )superr  saved_resultr  r	  r=   r>   r  $  r  zNTestArrayFinalize.test_can_use_super.<locals>.SuperFinalize.__array_finalize__)rQ   rR   rS   r  __classcell__r=   r=   r	  r>   SuperFinalize$  s    r
  r#   )r'   r5   r   r]   r   r
  )rF   r
  rD   r=   r=   r>   test_can_use_super$  s   z$TestArrayFinalize.test_can_use_superN)
rQ   rR   rS   r3  r
  r
  r
  r
  r
  r
  r=   r=   r=   r>   r
  G$  s    		"r
  c                  C   s   t d} tt| jdd d S )NrI      âr&   )r'   rC   r   r)   rI  r   r=   r=   r>   2test_orderconverter_with_nonASCII_unicode_ordering$  s   
r
  c                  C   s   G dd d} G dd d| }G dd d| }t jddgd	d
}||fD ]!}| }t||kd t||kd t||kd t||kd q$d S )Nc                   @   r`  )z*test_equal_override.<locals>.MyAlwaysEqualc                 S   r  )Nr
  r=   r  r=   r=   r>   r  $  r  z1test_equal_override.<locals>.MyAlwaysEqual.__eq__c                 S   r  )Nr
  r=   r  r=   r=   r>   r  $  r  z1test_equal_override.<locals>.MyAlwaysEqual.__ne__N)rQ   rR   rS   r  r  r=   r=   r=   r>   MyAlwaysEqual$  r  r
  c                   @   r*  )z-test_equal_override.<locals>.MyAlwaysEqualOldr  Nr+  r=   r=   r=   r>   MyAlwaysEqualOld$  r-  r
  c                   @   s   e Zd ZdZdS )z-test_equal_override.<locals>.MyAlwaysEqualNewNr2  r=   r=   r=   r>   MyAlwaysEqualNew$  r-  r
  r1  r   r^  r   r
  r
  rO  )r
  r
  r
  r   my_always_equal_clsmy_always_equalr=   r=   r>   test_equal_override$  s   r
  funnpfunr   r  r  c                 C   s,   |t ||}| |}||}t|| d S rW   )r   r   )r
  r
  r   r  r  rb  gotr  r=   r=   r>   test_npymath_complex$  s   r
  c               
   C   s   ddl m} m}m}m}m} | tj|tj|tj	|tj
|tji}dtjtj tjf}tjtjtjf}tjdd. | D ] \}}	t||D ]\}
}||
}||}|	|}t|| qFq<W d    d S 1 shw   Y  d S )Nr   )	npy_log10npy_coshnpy_sinhnpy_tannpy_tanhr#   ignore)r'  )r   r
  r
  r
  r
  r
  r'   log10coshsinhtantanhr  rk  rF  r   rk  errstater
  r  r5  r   )r
  r
  r
  r
  r
  r  rg   rr   r
  r
  r   r  rb  r
  r  r=   r=   r>   test_npymath_real$  s&   "r
  c            	      C   s  t jddd} t jddd}t jddgd| gddd}tt jd	| d
d jd d tt jd	|d
d jd d tt jd	dd
d jd d t }t| ||g|D ]\}\}}t|j| t|j	| qUt jd| d
d }t 
| t jddd
}|d d d	f |d d d	f< d S )Nzu1,c8Tr  zu4,c8rD   r   rh   r_  r#   r   r  ALIGNEDFr  c8)r'   r   r	   r*   rK   rm  get_struct_alignmentsr  r+   r1   rH  )	rw  rx  d3r   r   r+   r9   r  dstr=   r=   r>    test_uintalignment_and_alignment$  s   
 r
  c                   @   ru  )TestAlignmentc                 C   s   t ||||f}t||||d}|d u rt|j}t|jd d | d t|dr3t|j|| nt|j|f| t|j| |dkrNt	|j
j| d S |dkrb|jdkr`t	|j
j| d S d S |d u rot	|j
j| d S t )Nr  r$   r   r!   r   r,  )rW  r?   r'   r   r+   r	   r4   r,   r7   r   rK   r5  r9   r6  r)   )rF   r7   r   r    r8   r   r   r=   r=   r>   r  %  s$   

zTestAlignment.checkc                 C   sr   dD ]4}dD ]/}dD ]*}t tjd dg D ]}|dkrq|ddd	|ffD ]}| |t||| q%qq
qqd S )
N)
r#   r"   r   r   r   rK  r   r   r   N)r   r#   r   r@  rh	  r  zi4,i4,i4r  r#   r"   r   )r  r'   r  r  r   )rF   r8   r  r    r   r7   r=   r=   r>   test_various_alignments%  s   z%TestAlignment.test_various_alignmentsc              	   C   s6  dD ]}t dtj}t dtj|d}t dtj|d}t }|tjd |d W d    n1 s4w   Y  |tj || }|d |tj || }|| }|	 |d d < |	 |d d < |	 |d d < |d d d 	 |d d d< |d d d 	 |d d d< |d d d 	 |d d d< qd S )N)r#   r"   r   r   rK  r   Nr   r  zCasting complex valuesr  r"   )
r?   r'   r   rG  rk  r   r!  rE  rn  r*  )rF   r8   xf64xc64xf128r$  rY  r=   r=   r>   test_strided_loop_alignments(%  s*   
z*TestAlignment.test_strided_loop_alignmentsN)rQ   rR   rS   r  r
  r
  r=   r=   r=   r>   r
  %  s    r
  c                  C   s   t jddd} tjdkrd}d}nd}d}| d|}t||  | d|}t|d tt| jdd	 tt| jdd
 tt| jdd d S )Nr   r   r   r  r   r#   r   r3   r%   r   r   )	r'   rC   r  r  getfieldr	   r   r;  r)   )rD   r   rB  r   r=   r=   r>   test_getfieldI%  s   


r
  c                   @   r
  )TestViewDtypezP
    Verify that making a view of a non-contiguous array works as expected.
    c                 C   s   t jdddd d d }tjtdd |d W d    n1 s#w   Y  ddgddgd	dgd
dgddgg}t|d d t jf d| d S )NrB   rz  r   r"    the last axis must be contiguousri  r  r   r   r   r   )r'   rC   r   r;  r)   r]   r   r  rF   r   r  r=   r=   r>   test_smaller_dtype_multiple^%  s   ""z)TestViewDtype.test_smaller_dtype_multiplec                 C   s   t jdddd d d }tjtdd |d W d    n1 s#w   Y  tjtdd |d d t jf d W d    n1 sFw   Y  d	gd
gdgg}t|d d t jf d| d S )NrI   rz  r   r"   r
  ri  rq  z When changing to a smaller dtyperr        rk   )r'   rC   r   r;  r)   r]   r  r   r
  r=   r=   r>   test_smaller_dtype_not_multipleg%  s   "z-TestViewDtype.test_smaller_dtype_not_multiplec                 C   s^   t jdddddd d dd d f }t jdgdgdgd	gd
ggdd}t|d| d S )Nr   r  r   rB   r"   i   i  i 	 i  i  rz  )r'   rC   r   r   r   r]   r
  r=   r=   r>   test_larger_dtype_multiplev%  s   (z(TestViewDtype.test_larger_dtype_multiplec                 C   s   t jdddddd d dd d f }tjtdd |d W d    n1 s+w   Y  d	gd
gdgdgdgg}t|d| d S )Nr   r  r   rB   r"   zWhen changing to a larger dtyperi  rq  s     s    s    	s    s    rk   )r'   rC   r   r   r;  r)   r]   r   r
  r=   r=   r>   test_larger_dtype_not_multiple}%  s   (z,TestViewDtype.test_larger_dtype_not_multiplec                 C   sV   t jdddddj}tjtdd |d W d    d S 1 s$w   Y  d S )	NrK  rz  r   r   r   r
  ri  r  )r'   rC   r   r"  r   r;  r)   r]   r  r=   r=   r>   test_f_contiguous%  s   "zTestViewDtype.test_f_contiguousc                 C   sd   t jddddddddd}d	d
gddggddgddggddgddggg}t|d| d S )NrE  r>  r   r"   r   r   r#   r   r  i  i  i  i  i  i  i  i	  i
  i  i  r  )r'   rC   r   r9  r   r]   r
  r=   r=   r>   test_non_c_contiguous%  s   z#TestViewDtype.test_non_c_contiguousN)
rQ   rR   rS   r3  r
  r
  r
  r
  r
  r
  r=   r=   r=   r>   r
  Z%  s    	r
  r  )r   r   rE  r   r  r   `   r        r  i  i   i    c                 C   sJ  t jd dt j| d }t j|t j|jd d< tt j	|ddt j	|dd t j
t j| dd	 }d
|t j|jd d< tt j	|ddt j	|dd t j
 t j| dd	 }d|t j|jd d< tt j	|ddt j	|dd t j
t j| dd	 }t j
 |t j|jd t| d < tt j	|ddt j	|dd d S )Nr  g      r   r   r   quickrm  heapr   rf  rI   r  r"   )r'   r  r  samplern  rk  r  r7   r	   r  r  r   r   )r  rX   infarr	neginfarrr=   r=   r>   test_sort_float%  s   $"r
  c                  C   s   t jd} d}t t jj}t t jj}| j|||dd}||t j	|j
d d< ||t j	|j
d d< tt j|ddt j|d	d d S )
Nr  r
  lowhighr9   r   r   rB   r
  rm  r
  )r'   r  rd  r  r   r  r   rf  rn  r  r7   r	   r  )rngr  minvmaxvrX   r=   r=   r>   test_sort_int%  s   "r
  c                  C   sn   t jd} d}t t jj}| jd||dd}||t j|j	d d< t
t j|ddt j|d	d d S )
Nr  r
  r   r
  r   rB   r
  rm  r
  )r'   r  rd  r  r   r   rf  rn  r  r7   r	   r  )r
  r  r
  rX   r=   r=   r>   test_sort_uint%  s   "r
  )collections.abcr	  r  r  r   r/   r{  r  r-   r  r  r.	  r  r   
contextlibr   numpy.compatr   r  r  r  r   r%  numpyr'   r   rn   rm  numpy.core._rational_testsr   numpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   numpy.testing._private.utilsr   r   numpy.core.tests._localesr   numpy.lib.recfunctionsr   r   r   r  r?   r@   r   r   r  rB  rv  r  r  r  r7  r  r  r  r  r  rR  rc  rr  rt  r  r  r  r  r:  r>  rD  rI  ri  rl  r|  r  r  r   r*  r:  rO  rt  rx  rz  r|  r}  r  r  r!  rC  rl  rv  ry  r{  r  r  r  r   r   r  r  r  r  numpy.core._internalr  r  r  r(   rL	  rm	  rx	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r
  r*
  r5
  r>
  rC
  rY
  ry
  r
  r
  r
  npy_cabsabsolutenpy_cargangler  rk  complexfloating__subclasses__r
  r
  r
  r
  r
  r
  r
  r
  r
  r=   r=   r=   r>   <module>   sf   L$ 4 muh`  C   Z`              @   f- 6 -  N=B7   \%Hc|  t<   Z )N&V k   T S"-
c &/Q\q&P

$G@
