U
    #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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/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d d	l6m7Z7 d d
l8m9Z9m8Z8 e:d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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 d.d/ d/ZLG d0d1 d1ZMG d2d3 d3ZNG d4d5 d5ZOG d6d7 d7ZPG d8d9 d9ZQG d:d; d;ZRG d<d= d=ZSG d>d? d?ZTG d@dA dAZUG dBdC dCZVG dDdE dEZWG dFdG dGZXG dHdI dIZYG dJdK dKZZG dLdM dMZ[G dNdO dOZ\G dPdQ dQZ]G dRdS dSZ^G dTdU dUZ_G dVdW dWZ`dXdY ZadZd[ Zbd\d] ZcG d^d_ d_ZdG d`da daZeG dbdc dcZfG ddde deZgG dfdg dgegZhG dhdi diegZidjdk Zjdldm ZkG dndo doZlG dpdq dqZmG drds dsZnd dtdudvdwdxZoejpjqdye:egdzd{gd|G d}d~ d~ZrG dd dZsG dd dZtG dd dZud dlvmwZw G dd dZxG dd dZyG dd dezZ{G dd dZ|G dd dZ}dd Z~dd Zdd Zdd Zdd Zdd Zdd ZG dd dZG dd dZG dd dZG dd dZe)sPG 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jpqddgejejfejejfgejpqddtejej ejgejpqddtejej ejgejpqdej ddǄ ZddɄ Zdd˄ ZG dd̈́ d̓Zddτ ZG ddф dуZejpqddddddddddddddddg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r8|dk	r(tdt j| ||dS |dkrF|j}t| dsV| f} tt	j
| |j }t |d|  d t j}|jd d }|| }|dkr|| }|d|  dkr||7 }|||| d  dd	 }|d t j| |||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__fillndarray)	shaper   r    alignsizebufptroffsetr$    r=   D/tmp/pip-unpacked-wheel-b2rbor69/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	dddgdddg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_methodN   s    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   Zmydictr=   r=   r>   test_writeableQ   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 5 Q R X d S )	NrB   c                   @   s   e Zd ZdS )z3TestFlags.test_writeable_any_base.<locals>.subclassN__name__
__module____qualname__r=   r=   r=   r>   subclass_   s   rQ   .FTc                   @   s   e Zd Zdd ZdS )z8TestFlags.test_writeable_any_base.<locals>.frominterfacec                 S   s   || _ |j| _d S N)arrr4   rF   rS   r=   r=   r>   __init__l   s    zATestFlags.test_writeable_any_base.<locals>.frominterface.__init__N)rN   rO   rP   rU   r=   r=   r=   r>   frominterfacek   s   rV   )	r'   rC   r6   viewrJ   rK   asarrayr   r)   )rF   rS   rQ   Zview1Zview2rV   r=   r=   r>   test_writeable_any_baseZ   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Zres3S4r_   )	r'   
frombufferr   r)   setflagsr   corerecords
fromstringrF   r$   r_   typesvaluesr=   r=   r>   test_writeable_from_readonly{   s    z&TestFlags.test_writeable_from_readonlyc                 C   s   t d}t|d}t|jj |jdd t|jjdk |jdd t|jj tddg}tjj	
||}|d }t|jj |jdd t|jjdk |jdd t|jj d S )	NrZ   r[   Fr\   Tr^   ra   r_   )	bytearrayr'   rc   r   rJ   rK   rd   r   re   rf   rg   rh   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 ]2}||||}t|jj	 tt
|jt qd S )Nr     )r   r'   rC   rangeHIGHEST_PROTOCOLloadsdumpsr   rJ   rK   
isinstancebasebytes)rF   r   rD   vr_   r=   r=   r>   test_writeable_pickle   s    
zTestFlags.test_writeable_picklec                 C   s.  ddl m} |d}|jjr t|jjs,t|d }d|j_|jjrHtd|j_|jjs\td|j_|d}|jjrxt|jjrt||fD ]}|d }d|j_d|j_|jjrttt d|j_W 5 Q R X t	 . t
dt tt d|j_W 5 Q R X W 5 Q R X tt d|j_W 5 Q R X qd S )Nr   )get_c_wrapping_arrayT.Ferror)numpy.core._multiarray_testsrz   rJ   owndataAssertionErrorrK   r   r)   warningscatch_warningssimplefilterDeprecationWarningr   )rF   rz   Zarr_writeablerW   Zarr_readonlyrS   r=   r=   r>   test_writeable_from_c_data   s4    



z$TestFlags.test_writeable_from_c_datac              	   C   sX   t d}d|j_tjdd0}td d|d< d|d< tt|dk W 5 Q R X d S )NrB   Trecordalwaysr#   r"   )	r'   rC   rJ   _warn_on_writer   r   filterwarningsr   len)rF   rD   wr=   r=   r>   test_warnonwrite   s    

zTestFlags.test_warnonwriteflag
flag_valuerK   )rK   TT)r   TF)rK   FFc                    sn   t d t j|| G  fddd}t j|k	s<t jd d |k	sRtt | jj	|ksjtd S )NrB   c                       s   e Zd Z jZdS )z5TestFlags.test_readonly_flag_protocols.<locals>.MyArrN)rN   rO   rP   __array_struct__r=   rD   r=   r>   MyArr   s   r   r$   r#   )
r'   rC   setattrrJ   
memoryviewreadonlyr~   r4   rX   rK   )rF   r   r   rK   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XZWRITEBACKIFCOPY)r	   rD   rJ   carrayfarraybehavedfncforcr}   rK   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   rH   r'   r*   r   r   rJ   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)rN   rO   rP   rG   rL   rY   rk   rm   pytestmarkskipifr   ry   r   r   parametrizer   r   r   r   r=   r=   r=   r>   r@   M   s&   	!
(

r@   c                   @   s   e Zd Zdd ZdS )TestHashc              	   C   sd  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 qJq4d S )N          @   r#   r"   z
%r: -2**%derr_msgz	%r: 2**%dz%r: 2**%d - 1)r'   int8r3   int16uint16int32uint32int64uint64rq   r	   hashmax)rF   stutsir=   r=   r>   test_int  s,    
""
""
zTestHash.test_intN)rN   rO   rP   r   r=   r=   r=   r>   r      s   r   c                   @   sT   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   rH   <   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   rH   )r"   rH   r   )rB      r"   rH      r   r#   r"   r   r   )r	   r   r7   r   r   stridesr1   ndimr9   nbytesr   rv   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k 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   Zfloat_charr   strrE   r=   r=   r>   test_dtypeattr1  s    zTestAttributes.test_dtypeattrc                 C   s   t d}tt|t  d S Nr   )r'   r   r   ru   int)rF   Z	numpy_intr=   r=   r>   test_int_subclassing:  s    
z#TestAttributes.test_int_subclassingc              	      s   | j   fdd}t|dddtddddg 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'   r6   r   r1   )r9   r<   r   xr=   r>   
make_arrayE  s    
z3TestAttributes.test_stridesattr.<locals>.make_arrayr   r%   r   r"   r#   r   r   r"   r   rH   rB   )r   r	   r'   arrayr   r)   )rF   r   r=   r   r>   test_stridesattrB  s     zTestAttributes.test_stridesattrc                    sD  | j   fdd}t|dddtddddg t|dddtddd	d
dddg 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              
      s^   zt j| gt | j d}W n* tk
rH } zt|W 5 d }~X Y nX | j  |_}|S )N)r   r   r<   )r'   r6   r   r1   	ExceptionRuntimeErrorr   )r9   r<   r   rer   r=   r>   r   V  s    
z7TestAttributes.test_set_stridesattr.<locals>.make_arrayr   r%   r   r"   r#      rH   r   r   	   r   rB   rB   r   r   c                 S   s
   || _ d S rR   r   )rS   r   r=   r=   r>   set_stridesh  s    z8TestAttributes.test_set_stridesattr.<locals>.set_stridesrB   r   r   r%   )r7   r   r   r=   )r   r	   r'   r   r   r)   r   libZstride_tricksZ
as_stridedrC   r1   r   r   	TypeError)rF   r   r   rD   Zarr_0dr=   r   r>   test_set_stridesattrS  s*    	 & 
z#TestAttributes.test_set_stridesattrc                 C   sB   dD ]8}t d|}t d|}|d d|d< t|| qd S )Nz?bhilqpBHILQPfdgFDGOr   r"   r#   r#   .)r'   r2   r5   r	   )rF   tr   yr=   r=   r>   	test_fillz  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   r5   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   r5   r	   r*   r   rF   r   r=   r=   r>   test_fill_struct_array  s    
z%TestAttributes.test_fill_struct_arrayN)rN   rO   rP   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 dddgdddg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"   T)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 rR   )r   r   r'   r   rE   r=   r=   r>   test_array_empty  s    z&TestArrayConstruction.test_array_emptyc                 C   s   t t djdkstd S )Nr   r   )r'   r  r   r7   r~   rE   r=   r=   r>   test_0d_array_shape  s    z)TestArrayConstruction.test_0d_array_shapec                 C   sz   t dddg}t j|dd}d|d< t|dddg t j|ddd}d|d< t|dddg d	|d< t|ddd	g d S )
Nr#   r"   r   FcopyF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 dddgdddgg}t j|dd}d|d< d|d< t|dddgdddgg t|dddgdddgg t j|dd	d
}d|d< d|d< t|dddgdddgg t|dddgdddgg d S )Nr#   r"   r   Tr  r   r#   ir  r  r  rH   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   ascontiguousarrayrJ   c_contiguousf_contiguousasfortranarrayrF   r   r=   r=   r>   test_array_cont  s    z%TestArrayConstruction.test_array_contfuncc              
   C   sn   t t |ddd W 5 Q R X t t |  W 5 Q R X t t |ddddddd	d
 W 5 Q R X d S )Nr   z	bad dtyper   r#   r"   r   rH   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kr|dd n
|dd d S )Nr   )r(   r   r'   r   r   r=   r=   r>   test_array_as_keyword  s    	
z+TestArrayConstruction.test_array_as_keywordN)rN   rO   rP   r  r  r  r  r  r  r   r   r   r'   r   rX   Z
asanyarrayr  r  r!  r#  r=   r=   r=   r>   r    s0   '

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S )TestAssignmentc              	   C   s   t ddd}t d|d< t|dddgdddgg t ddd|d< t|dddgdddgg t dd d d ddd|d< t|dd	dgdddgg d
d }tt||t dddd d S )Nr   r"   r   .r   r#   r%   rH   r   c                 S   s   || d< d S )N.r=   rD   r   r=   r=   r>   assign  s    z;TestAssignment.test_assignment_broadcasting.<locals>.assign   )r'   rC   r   r	   r   r)   rF   rD   r&  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                   @   s   e Zd ZdS )z0TestAssignment.test_assignment_errors.<locals>.CNrM   r=   r=   r=   r>   r   !  s   r   r#   c                    s   |  d< d S r   r=   rx   r   r=   r>   r&  %  s    z5TestAssignment.test_assignment_errors.<locals>.assign)r'   r*   r   AttributeErrorr   r)   )rF   r   r&  r=   r   r>   test_assignment_errors  s
    
z%TestAssignment.test_assignment_errorsc              	      sr   ddl m  t fdd}tdg}td}|d ||d< W 5 Q R X t|d d ttdg d S )	Nr   set_string_functionc              
   3   s2    fdddd z
dV  W 5 ddd X dS )z% replace ndarray.__str__ temporarily c                    s    S rR   r=   r   r   r=   r>   <lambda>2      zLTestAssignment.test_unicode_assignment.<locals>.inject_str.<locals>.<lambda>F)reprNr=   r/  r-  r/  r>   
inject_str/  s    
z:TestAssignment.test_unicode_assignment.<locals>.inject_strtestdonebadu   åäö)Znumpy.core.numericr.  r   r'   r   r	   )rF   r3  Za1dZa0dr=   r-  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 )Nr5  s   donec                   @   s   e Zd Zdd Zdd ZdS )z?TestAssignment.test_stringlike_empty_list.<locals>.bad_sequencec                 S   s   d S rR   r=   rE   r=   r=   r>   __getitem__G  r1  zKTestAssignment.test_stringlike_empty_list.<locals>.bad_sequence.__getitem__c                 S   s   t d S rR   r   rE   r=   r=   r>   r!   H  r1  zGTestAssignment.test_stringlike_empty_list.<locals>.bad_sequence.__len__NrN   rO   rP   r8  r!   r=   r=   r=   r>   bad_sequenceF  s   r;  r   )r'   r   r   r)   r/   setitem)rF   ur   r;  r=   r=   r>   test_stringlike_empty_listA  s    z)TestAssignment.test_stringlike_empty_listc                 C   s   t jt jfD ]}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'   
longdoubleZlongcomplexZ	nextafterastyper   r	   )rF   r   ZtinybZtinyaZtiny1drS   r=   r=   r>   test_longdouble_assignmentP  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_stringp  s    z"TestAssignment.test_cast_to_stringN)	rN   rO   rP   r)  r,  r7  r>  rB  rD  r=   r=   r=   r>   r$    s    r$  c                   @   s$   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_constructionz  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   rI  rD   rJ  )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   rN  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*   r2  )rF   fieldsZdt_intZarr_intr=   r=   r>   test_structured_non_void  s    z'TestDtypedescr.test_structured_non_voidN)rN   rO   rP   rH  rM  rQ  r=   r=   r=   r>   rE  y  s   rE  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     s    zTestZeroRank.setup_methodc                 C   sN   | j \}}t|d d t|d d t|d j|k t|d j|k d S )N.r   r   )r   r	   r   rv   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k tt|d tk d S )Nr=   r   r   )r   r	   r   typer   r   rS  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   s   | d S r   r=   r   r=   r=   r>   r0    r1  z5TestZeroRank.test_invalid_subscript.<locals>.<lambda>c                 S   s   | d S r   r=   r   r=   r=   r>   r0    r1  c                 S   s   | t g t S rR   r'   r   r   r   r=   r=   r>   r0    r1  c                 S   s   | t g t S rR   rW  r   r=   r=   r>   r0    r1  r   r   
IndexErrorrS  r=   r=   r>   test_invalid_subscript  s
    
z#TestZeroRank.test_invalid_subscriptc                 C   s6   | j \}}d|d< t|d d|d< t| d d S )N*   . r   r	   itemrS  r=   r=   r>   "test_ellipsis_subscript_assignment  s
    

z/TestZeroRank.test_ellipsis_subscript_assignmentc                 C   s6   | j \}}d|d< t|d d|d< t| d d S )Nr[  r=   r\  r]  rS  r=   r=   r>   test_empty_subscript_assignment  s
    

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   s   || |< d S rR   r=   r   r   rx   r=   r=   r>   r&    s    z>TestZeroRank.test_invalid_subscript_assignment.<locals>.assignr   r[  r\  r=   )r   r   rY  r)   )rF   rD   r   r&  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   rS  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   s   | |  d S rR   r=   r   r   r=   r=   r>   	subscript  s    z4TestZeroRank.test_invalid_newaxis.<locals>.subscriptr   2   r   r   rY  r'   rg  )rF   rD   r   rj  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 5 Q R X tt t jddd W 5 Q R X d S )Nr=   rH   )r   r   r"   r   )r'   r6   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  s    
zTestZeroRank.test_outputc                 C   s   t d}|j}|j}t|t d tt|t jk t|jj	d t|jj
d t|t d tt|t jk t|jj	d t|jj
d d S )N              ?r   Tr#   )r'   r   realimagr	   r   rU  r6   rJ   
contiguousr  )rF   r   Zxrxir=   r=   r>   test_real_imag  s    
zTestZeroRank.test_real_imagN)rN   rO   rP   rG   rT  rV  rZ  r_  r`  rb  rh  rm  rp  rr  rx  r=   r=   r=   r>   rR    s   
	rR  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestScalarIndexingc                 C   s   t ddgd | _d S Nr   r#   )r'   r   r   rE   r=   r=   r>   rG     s    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>   rT    s    z*TestScalarIndexing.test_ellipsis_subscriptc                 C   s(   | j }t|d d t|d jd d S )Nr=   r   r{  r   r=   r=   r>   rV     s    z'TestScalarIndexing.test_empty_subscriptc                 C   s*   | j }ttdd | ttdd | d S )Nc                 S   s   | d S r   r=   r   r=   r=   r>   r0    r1  z;TestScalarIndexing.test_invalid_subscript.<locals>.<lambda>c                 S   s   | t g t S rR   rW  r   r=   r=   r>   r0    r1  rX  r   r=   r=   r>   rZ    s    z)TestScalarIndexing.test_invalid_subscriptc                 C   s"   | j }dd }tt||dd d S )Nc                 S   s   || |< d S rR   r=   ra  r=   r=   r>   r&    s    zDTestScalarIndexing.test_invalid_subscript_assignment.<locals>.assignr   r[  )r   r   r   r(  r=   r=   r>   rb  
  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 rc  rf  r   r=   r=   r>   rh    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   s   | |  d S rR   r=   ri  r=   r=   r>   rj     s    z:TestScalarIndexing.test_invalid_newaxis.<locals>.subscriptr   rk  rl  )rF   rD   rj  r=   r=   r>   rm    s    z'TestScalarIndexing.test_invalid_newaxisc                 C   sx  t d}|dd  |d d< t|ddddg t d}|d d |dd < t|ddddg t d}|d d d |d d < t|ddddg t ddd}|d d d d df |d d dd d f< t|dddgdddgg t ddd}|d d d d df |d d dd d df< t|dddgdddgg t d}|dd  |d d< t|dddddg t d}|d d |dd < t|dddddg t d}|dd  |dd d< t|dddddg t d}|dd d |dd < t|dddddg t d}|d dd |dd d< t|dddddg t d}|dd d |d dd< t|dddddg d S )	Nr   r#   r%   r"   r   r   r   rH   )r'   rC   r	   r   r   r=   r=   r>   test_overlapping_assignment&  sB    


(*





z.TestScalarIndexing.test_overlapping_assignmentN)rN   rO   rP   rG   rT  rV  rZ  rb  rh  rm  r|  r=   r=   r=   r>   ry    s   	ry  c                   @   sV  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&ej	d:e'd;d<d=gej	d>ej(ej)d?d@ gdAdB Z*dCS )D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   s   d S rR   r=   )rF   r   r=   r=   r>   	__array__]  s    z5TestCreation.test_from_attribute.<locals>.x.__array__)NrN   rO   rP   r~  r=   r=   r=   r>   r   \  s   r   )r   r)   r'   r   r  r=   r=   r>   test_from_attribute[  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 q2d S )N
AllIntegerFloatZ123{   r   zString conversion for %sr   )r'   	typecodesr   r   r	   )rF   ri   ZnstrresultrU  msgr=   r=   r>   test_from_stringb  s    zTestCreation.test_from_stringc              	   C   s   t jg dd}|jdkstt jddgdd}|jdks<ttt t jddgdd W 5 Q R X tt t jddgdd W 5 Q R X t jddgddd}|jdksttt t jddgddd W 5 Q R X d S )NVr   V8s   1234V4s   12345O)r'   r   r   r~   r   r  r   rA  rT   r=   r=   r>   	test_voidj  s    zTestCreation.test_voididxrS   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4 t jt jddd| t jddd| gdd W 5 Q R X d S )	Nr#   i,ir   r"   r  re  r"   r"   zi,i,i)r'   r   r   r   r  r   )rF   r  rS   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 systemsrn   c              	   C   s8   t tjjj  tjttjjtj	d W 5 Q R X d S Nr   )
r   r'   re   _exceptionsZ_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 ]}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)i4Z4i4z(2,4)i4, (2,4)i4)r'   r  r*   r	   count_nonzerosumr   anyrF   ri   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  r  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   r  r=   r=   r>   test_zeros_obj_obj  s    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   ZS5U5rI  rJ  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 )NrH   d   Ur   )rq   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dddgdddgdddggjt d S )Nr   r"   P   r   r#   rs  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                   @   s   e Zd Zdd Zdd ZdS )z5TestCreation.test_non_sequence_sequence.<locals>.Failc                 S   s   dS Nr#   r=   rE   r=   r=   r>   r!   	  s    z=TestCreation.test_non_sequence_sequence.<locals>.Fail.__len__c                 S   s
   t  d S rR   r)   rF   indexr=   r=   r>   r8    s    zATestCreation.test_non_sequence_sequence.<locals>.Fail.__getitem__NrN   rO   rP   r!   r8  r=   r=   r=   r>   Fail  s   r  c                   @   s   e Zd Zdd Zdd ZdS )z4TestCreation.test_non_sequence_sequence.<locals>.Mapc                 S   s   dS r  r=   rE   r=   r=   r>   r!     s    z<TestCreation.test_non_sequence_sequence.<locals>.Map.__len__c                 S   s
   t  d S rR   )KeyErrorr  r=   r=   r>   r8    s    z@TestCreation.test_non_sequence_sequence.<locals>.Map.__getitem__Nr  r=   r=   r=   r>   Map  s   r  rd  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                   @   s   e Zd Zdd Zdd ZdS )z4TestCreation.test_no_len_object_type.<locals>.Point2c                 S   s   d S rR   r=   rE   r=   r=   r>   rU     s    z=TestCreation.test_no_len_object_type.<locals>.Point2.__init__c                 S   s   |dkr|S t  d S )Nr  rY  rF   indr=   r=   r>   r8  !  s    z@TestCreation.test_no_len_object_type.<locals>.Point2.__getitem__N)rN   rO   rP   rU   r8  r=   r=   r=   r>   Point2  s   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                   @   s   e Zd Zdd Zdd ZdS )z/TestCreation.test_false_len_sequence.<locals>.Cc                 S   s   t d S rR   r  )rF   r   r=   r=   r>   r8  ,  s    z;TestCreation.test_false_len_sequence.<locals>.C.__getitem__c                 S   s   dS )Nr[  r=   rE   r=   r=   r>   r!   .  s    z7TestCreation.test_false_len_sequence.<locals>.C.__len__Nr:  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   sT   G dd d}t d}tt | |d d < W 5 Q R X t | t| k d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z/TestCreation.test_false_len_iterable.<locals>.Cc                 S   s   t d S rR   r   r  r=   r=   r>   r8  7  s    z;TestCreation.test_false_len_iterable.<locals>.C.__getitem__c                 S   s   t dS )Nr=   )iterrE   r=   r=   r>   __iter__9  s    z8TestCreation.test_false_len_iterable.<locals>.C.__iter__c                 S   s   dS )Nr"   r=   rE   r=   r=   r>   r!   ;  s    z7TestCreation.test_false_len_iterable.<locals>.C.__len__N)rN   rO   rP   r8  r  r!   r=   r=   r=   r>   r   6  s   r   r"   )r'   r2   r   r)   r   listr  r=   r=   r>   test_false_len_iterable4  s
    

z$TestCreation.test_false_len_iterablec                 C   s4   G dd d}|dddg}t tt|d d S )Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )z0TestCreation.test_failed_len_sequence.<locals>.Ac                 S   s
   || _ d S rR   )_data)rF   r$   r=   r=   r>   rU   G  s    z9TestCreation.test_failed_len_sequence.<locals>.A.__init__c                 S   s   t | | j| S rR   )rU  r  )rF   r^  r=   r=   r>   r8  I  s    z<TestCreation.test_failed_len_sequence.<locals>.A.__getitem__c                 S   s
   t | jS rR   )r   r  rE   r=   r=   r>   r!   K  s    z8TestCreation.test_failed_len_sequence.<locals>.A.__len__N)rN   rO   rP   rU   r8  r!   r=   r=   r=   r>   AF  s   r  r#   r"   r   )r	   r   r'   r   )rF   r  r   r=   r=   r>   test_failed_len_sequenceD  s    	z%TestCreation.test_failed_len_sequencec              	   C   sn   t d}t t jj}dD ]L}t |}|j}t j|d|| f|d tt	t j|d|| d f|d qd S )Nr  )r  rC  r   r   )r   r   r7   r   r#   )
r'   r*   r  r  r   r   r1   r6   r   r)   )rF   r:   Z	max_bytesr   r1   r=   r=   r>   test_array_too_bigR  s    

  zTestCreation.test_array_too_bigc              	   C   s2   t jtdd t|}W 5 Q R X tj|tdS )Nz.*detected shape wasmatchr   )r   r  r)   r'   r   r(   )rF   seqrD   r=   r=   r>   _ragged_creationa  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st|jtkstd S r  )r  r	   r7   r   r(   r~   r   r=   r=   r>   test_ragged_shape_objectv  s    z%TestCreation.test_ragged_shape_objectc                 C   s   t d d g}t dddg |d< |d< t |jdks>tt |gjdksTtt d d g}t dddg|d< t ddddg|d< t |jdkstt |gjdkstd S )Nr#   r"   r   r   rn  r#   r"   r   )r'   r   r7   r~   )rF   outerZ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_objectr   zO,OzO,(3)Oz(2,3)Ofunctionc                 C   s   t t j| |dS r  )r'   
empty_liker2   r7   r   r=   r=   r>   r0    r1  zTestCreation.<lambda>c                 C   s@   |d|d}t d  }||jt|  }| |ks<td S )Nr   r   )r'   r   tobytesr   r   r~   )rF   r  r   rS   expectedr=   r=   r>   test_object_initialized_to_None  s    z,TestCreation.test_object_initialized_to_NoneN)+rN   rO   rP   __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  r  r  r(   r6   r2   r  r=   r=   r=   r>   r}  W  sN   


"	 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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d0d1 Zd2S )3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   rH   )rD   r   r  r   r   r   rH   r"   rD   r#   r   r  r&   )
r'   r*   rC   r   r   r	  	transposer  r	   r7   rS  r=   r=   r>   test_subarray_field_access  s     z)TestStructured.test_subarray_field_accessc              	   C   s  t jjdddgdddgddggfdddg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 ]F}|d j|d _d|d j|< t||kddg t||kddg qtdD ]T}tdD ]D}| }d|d j	||f< t||kddg t||kddg qq t j
dgdggdgd
}t j
dddgdgd
}t||kdddgdddgg t||kdddgdddgg t j
dgdggdgd
}t j
dddgdgd
}t||kdddgdddgg t||kdddgdddg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dddgdddgg t||kdddgdddg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dddgdddgg t||kdddgdddgg t jdddgd
}t jdddgd
}tt ||k W 5 Q R X t jdddgd
}t jdddgd
}tt ||k W 5 Q R X d S )Nr#   r"   r   rD   r   r   r   )rD   )f4r   )r  r  r   TFr  rH   rB   r  rd  r   )rD   r  rd  )rD   r  rn  r  r   )rD   )r  r  r   i1)rD   )r  rn  )rD   )r  r"   r#   )r'   recZfromrecordsr(   r  r	   r   rq   rD   r  r   r*   r   r  r   )rF   rD   r   r   jr   r   r=   r=   r>   test_subarray_comparison  sZ    6
$(&(z'TestStructured.test_subarray_comparisonc                 C   sd   t ddg}t|| t ddg}t|| t ddg}t|| t ddg}t|| d S )Nr   )rD   <f8re  )rD   r  rd  r   )r#   r   r#   )r'   r*   r	   r   r=   r=   r>   &test_empty_structured_array_comparison  s    


z5TestStructured.test_empty_structured_array_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rH   r[  rB   r#   rD   >i8r   r  r   )rH   +   rD   z<i8r   >f8FT)rD   r  r   r  )rD   z10>f8)r   z5<f8)rD   z10<i8)r   z5>i8r'   r   r	   rS  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 5 Q R X t jddgd}t |j|js\ttt ||k W 5 Q R X t jddd}t jddd}tt ||k W 5 Q R X d S )Nr   )rD   r  r   ))titlerD   r  ZV7r  )r'   r*   r   r  r   can_castr   r~   ro  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 ]F}dg}tt j|j||d  dddg}tt j|j||d  qRd S )Nrd  rK  r   rL  unsafecastingrD   r   r  r  r  r  equivTr  safe)r   z>f4	same_kindr  )r   <f4)rD   >i2rO  no)r
  r  r  r  )r  r   )r'   r   r   r   r   rA  r	   byteswapnewbyteorderr   r   )rF   rD   r   r  r   r  r=   r=   r>   test_casting#  sP    
zTestStructured.test_castingc                 C   s@   t jg dddg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   )r[   z|Or[   r  )r'   r   r*   )rF   rD   Zdat2r=   r=   r>   test_objview]  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   rH   )fieldr   rB   structr#   rB   r   r   r   r  )r'   r   r*   r  r	   )rF   Z	struct_dtr  r   r=   r=   r>   test_setfieldf  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  rH   c                      s   t d d d< d S )Nr   r   r   r'   rC   r=   r  r=   r>   
testassignz  s    z7TestStructured.test_setfield_object.<locals>.testassign)r'   r*   rC   r	   r   r)   )rF   r   r  r=   r  r>   test_setfield_objecto  s    z#TestStructured.test_setfield_objectc              	   C   sX  t dtfdg}t jd|d}t|d ddddg t|d jd dd	d
dg|d< t|d ddddg t|d ddddg d|d |d dk< t|d ddddg t|d ddddg d|d< t|d ddddg t|d ddddg 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2}t || t |}t|jd t|| W 5 Q R X d S )NI)SZS0r   r   r  r1  r   rD   r   r  r   Zhellor  )rD   S0,S0)r   r`   r   r  zS0,u1f0r  r   z.npy)suffix)r'   r   r   r*   r	   r1   r6   r2   r   r   evalr2  dictr   ioBytesIOsaveseekloadr   )rF   r  r   r   Zxxr   yytmpr=   r=   r>   test_zero_width_string  sR    




z%TestStructured.test_zero_width_stringc                 C   s(   t jddd}|d }t|j|k d S )Nr   zi4,f4r   r   )r'   r*   r   rv   rS  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dddg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 rz  r  )rS   rx   r  r=   r=   r>   r    s    z2TestStructured.test_assignment.<locals>.testassign)fooi8)barr+  r"   r   r   )bazr+  rn  )r*  r  )r,  r  r,  r+  r   namesformatsoffsetsc                      s
    S rR   r=   r=   rS   r  Zv4r=   r>   r0    r1  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   rW   r	   r   r   r^  )	rF   r  v1v2Zv3Zv5r   ZansrD   r=   r2  r>   test_assignment  s2    zTestStructured.test_assignmentc              	   C   s4   t t" tddd}|d W 5 Q R X d S )N   rH   r   )r   r)   r'   rC   r   ZitemsetrT   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)3Ur  r  r   r   r=   )r'   r2   r	   r  r=   r=   r>   test_structuredscalar_indexing  s    "z-TestStructured.test_structuredscalar_indexingc                    sZ   t jddddgd tt fdd tt fdd tt fd	d  d
dg  d S )Nr   )r%  r   r  r   r   r   r   c                      s    ddg S )NrD   r  r=   r=   r   r=   r>   r0    r1  z7TestStructured.test_multiindex_titles.<locals>.<lambda>c                      s    ddg S )NrD   r=   r=   r   r=   r>   r0    r1  c                      s    ddg S )Nr   r=   r=   r   r=   r>   r0    r1  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 )Nr  r  r  r   rD   r   NTzf8,i8)r  r  )r   r+  )r   r  )r  r+  Fr  r  )r\  r   )r\  r+  )r\  V3r   zi8,f4r\  r  r   r   r   r.  r   )r   r   )r'   r   r   r   concatenateresult_typer   promote_typesr	   r   r  r   rA  r  )rF   r  r[   abbadt1dt2Zdt1nestZdt2nestr  rD   r=   r=   r>   )test_structured_cast_promotion_fieldorder  sJ    z8TestStructured.test_structured_cast_promotion_fieldorder
dtype_dictrD   r   r   r   r  )r/  r0  r1   r   r'  r.  r8   TFc                 C   s|   t j||d}|dd  |dd  t j||d}t ||}|j|jksPt|j|jks`tt ||}||ksxtd S )Nr8   r1   r1  )r'   r   poprA  r1   r~   rP  )rF   rG  r8   r   r  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$tt |j|ks8tt j||jdjd ksRtt	t
|}|jjsntt |jd kstd S )Nr#   r  r   r   )r'   r   rJ   r}   r~   rX   rv   r   r   rs   rt   )rF   rS   r  r=   r=   r>   test_structured_asarray_is_view8  s    z.TestStructured.test_structured_asarray_is_viewN)rN   rO   rP   r  r  r  r  r  r  r  r  r  r(  r)  r6  r8  r9  r<  rF  r   r   r   r   rK  rL  r=   r=   r=   r>   r    s2   ::		8%/r  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||k t d}t d}t||k tt dgd |k tt dd |k d S )Nr   Fr#   Tr=   )r'   bool_r   r   )rF   a0b0Za1b1r=   r=   r>   test_test_interningI  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   rc   r  r=   r=   r>   test_sumS  s    $$$zTestBool.test_sumc                    s   dd t |D }t d| D ]  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 rn  r=   .0r   r=   r=   r>   
<listcomp>_  s     z0TestBool.check_count_nonzero.<locals>.<listcomp>r"   c                    s   g | ]} |@ d kqS r  r=   rV  r   r   r=   r>   rW  a  s     r   r   r      r   )
rq   r'   r   r  builtinsr  r	   r  rW   r3   )rF   powerlengthZpowersr   rD   r  avr=   rY  r>   check_count_nonzero^  s    
zTestBool.check_count_nonzeroc                 C   s   |  dd d S )Nr'     r_  rE   r=   r=   r>   test_count_nonzerom  s    zTestBool.test_count_nonzeroc                 C   s   |  dd d S )Nr`  ra  rE   r=   r=   r>   test_count_nonzero_allr  s    zTestBool.test_count_nonzero_allc                 C   s   t dD ]}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)
rq   r'   r*   r  r	   r  r[  r  tolistr  )rF   orD   r=   r=   r>   test_count_nonzero_unalignedx  s    z%TestBool.test_count_nonzero_unalignedc                 C   s  t dD ]r}td||f}tt|d tt|d d t|td tt|ttj t|d ttj	k qt ddD ]|}dD ]r}t|||f}tt|d tt|d d t|td tt|ttj t|d ttj
k qqd S )	Nr   r1  Fr=   r#   r   )   a   0    T)rq   r'   r   r	   r  rA  r   ru   r6   False_True_)rF   r   nrx   valr=   r=   r>   _test_cast_from_flexible  s    z!TestBool._test_cast_from_flexiblec                 C   s   |  tj d S rR   )ro  r'   voidrE   r=   r=   r>   test_cast_from_void  s    zTestBool.test_cast_from_voidzSee gh-9847rn   c                 C   s   |  tj d S rR   )ro  r'   unicode_rE   r=   r=   r>   test_cast_from_unicode  s    zTestBool.test_cast_from_unicodec                 C   s   |  tj d S rR   )ro  r'   bytes_rE   r=   r=   r>   test_cast_from_bytes  s    zTestBool.test_cast_from_bytesN)rN   rO   rP   rR  rT  r_  rb  r   r   r  rc  rg  ro  rq  Zxfailrs  ru  r=   r=   r=   r>   rM  H  s   



rM  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   rp  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   )rw  rw   r	   r1   r'   rp  r   rF   zsr=   r=   r>   test_create  s    z TestZeroSizeFlexible.test_createc           	      K   sf   t tjtfD ]T}| d|}t||}tt|}|D ]*}|f d|i| ||fd|i| q4qd S )NrB   kind)rw   r'   rp  r   rw  getattr)	rF   namekindskwargsr  ry  Zsort_methodZ	sort_funcr{  r=   r=   r>   _test_sort_partition  s    

z)TestZeroSizeFlexible._test_sort_partitionc                 C   s   | j ddd d S )Nsortqhsr~  r  rE   r=   r=   r>   	test_sort  s    zTestZeroSizeFlexible.test_sortc                 C   s   | j ddd d S )Nargsortr  r  r  rE   r=   r=   r>   test_argsort  s    z!TestZeroSizeFlexible.test_argsortc                 C   s   | j ddgdd d S )N	partitionintroselectr"   r~  kthr  rE   r=   r=   r>   test_partition  s    z#TestZeroSizeFlexible.test_partitionc                 C   s   | j ddgdd d S )Nargpartitionr  r"   r  r  rE   r=   r=   r>   test_argpartition  s    z&TestZeroSizeFlexible.test_argpartitionc                 C   s6   t tjtfD ]$}| d|}|d |d qd S )NrB   r7  r   )rw   r'   rp  r   rw  resizerF   r  ry  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  )	rw   r'   rp  r   rw  r	   rW   r   r7   r  r=   r=   r>   	test_view  s    zTestZeroSizeFlexible.test_viewc                 C   s$   |  dt}t|t|  d S rA   )rw  r   r	   r   rs   rt   rx  r=   r=   r>   
test_dumps  s    zTestZeroSizeFlexible.test_dumpsc                 C   s^   t dtjd D ]H}ttjtfD ]6}| d|}tj||d}t	|}t
|j|j q qd S )Nr"   r#   rB   protocol)rq   r   rr   rw   r'   rp  r   rw  rt   rs   r	   r   )rF   protor  ry  pZzs2r=   r=   r>   test_pickle  s    
z TestZeroSizeFlexible.test_picklec                 C   s8   t g dd}t|}t|}|jdks4t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   rt   rs   r9   r~   )rF   rS   Zpk_dmpZpk_loadr=   r=   r>   test_pickle_empty  s    

z&TestZeroSizeFlexible.test_pickle_emptyrH   requires pickle protocol 5rn   c                 C   sR   t d}g }tj||jdd}tj||d}d|d< |d dksNt|d d S )NrB   rH   )buffer_callbackr  buffersr%   r   )r'   rC   r   rt   appendrs   r~   )rF   r   r  bytes_stringZarray_from_bufferr=   r=   r>   test_pickle_with_buffercallback  s    

z4TestZeroSizeFlexible.test_pickle_with_buffercallbackN)rN   rO   rP   staticmethodr   rw  rz  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rr   r  r=   r=   r=   r>   rv    s"   	

		rv  c                   @   s,  e Zd Zddd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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(d0d1 Z)d2d3 Z*d4d5 Z+d6d7 Z,d8d9 Z-d:d; Z.d<d= Z/ejdd>ejd?gd@dA Z0dBdC Z1dDdE Z2dFdG Z3dHdI Z4ejdJej5dKdLej6gejdMej5dKdLej6gejdMe5dKdLej6ggdNdO Z7dPdQ Z8dRdS Z9dTdU Z:dVdW Z;dXdY Z<dZd[ Z=d\d] Z>d^d_ Z?d`da Z@ejdejAdb dcdd ZBejdejAdb dedf ZCdgdh ZDdidj ZEejdkejAdl dmdn ZFejdkejAdl dodp ZGdqdr ZHdsdt ZIdudv ZJdwdx ZKdydz ZLd{d| ZMejdkejAdl d}d~ ZNdd ZOejdejPejQfdd ZRejde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 )TestMethodsZ	quicksortZheapsortZstablec                 C   s   t dddgdddgdddgg}t dddgdddgdddgg}t dgdgdgg}dD ]p}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 NTFr   Naxiswherer   r  r  )r'   r   r	   all)rF   rD   wh_fullZwh_lower_axr=   r=   r>   test_all_where  s.    $"zTestMethods.test_all_wherec                 C   s   t dddgdddgdddgg}t dddgdddgdddgg}t dgdgdgg}dD ]p}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 r  )r'   r   r	   r  )rF   rD   r  Z	wh_middler  r=   r=   r>   test_any_where  s.    $"zTestMethods.test_any_wherec                 C   s   dddddgg}t ddd}|jdd	gdd
}t|| d	dgddgg}|jdd	dd	dg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 NrH   r   r   r   r   rB   r"   r   r#   r  r   r'   rC   r   compressr	   rF   r
  rS   outr=   r=   r>   test_compress/  s    


zTestMethods.test_compressc           
      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 }t dddg}|||f}t|dddg |||f}t|dddgdddgg |||f}t|dddgdddgg t d}tt|jt d|g t d}t jt ddd	d
g|d}	||	kst	t|d d	 t 
d}t jdddg|d d |d d |d d g|dd dd}t|t dddg d S )Nr"   r  r   r   r   r   r#   rB   r   r   r  r=   rH   r   wrapr  mode)r'   r  r   r   chooser	   r   r   rp  r~   rC   )
rF   r   r   x2y2r  r  Zonedr  retr=   r=   r>   test_chooseB  s(    


>zTestMethods.test_choosec              	   C   s   dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jfD ]}t 	||}t 	||}|dkrt
t|j t
t|jdd qXt|jddd t|jddt 	ddddg| t|jddt 	dddg| qXd S )Nr#   r"   rB      r   rH   r   r   r   r   )1r   r  r   i g  rk  $   T      r%      ib  iX  )r'   r   r   r   r   float32r   	complex64
complex128r   r   ArithmeticErrorprodr	   r   )rF   rC  Zba2ctyperD   Za2r=   r=   r>   	test_prod`  s(    "   zTestMethods.test_prodc                 C   s^  t ddddddg}|d}|ddddddg}t|ddddddddddg
 |d}t|ddddddddddddg |jddgdd	}t|dddgdddgdddgg |jdddgdd	}t|ddddddgddddddgg |jddd	}t|dddgdddgdddgdddgg |jddd	}t|ddddddgddddddgg d S )
Nr#   r"   r   r   rH   r   r   r   r  )r'   r   r   repeatr	   )rF   mm_rectr  r=   r=   r>   test_repeatr  sL    
    
     zTestMethods.test_repeatc                 C   s  t dddgdddgddd	gd
ddgg}ddddddgddd	d
ddgg}t|dd| ddddgddddgd	d
ddgg}t|dd| dd
ddgdddd	gddddgg}t|jddd| dddd
gddddgddd	dgg}t|jjddd| d S )Nr#   r"   r   r   rH   r   r   r   r   rB   r  r'  r   r   r  r&   r   )r'   r   r	   r   r	  )rF   rS   r
  r=   r=   r>   test_reshape  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 || ||ks@td S Nr  )r	   roundr'   r  r~   )rS   r  Z
round_argsr  rJ  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   r  r=   r=   r>   
test_round  s    zTestMethods.test_roundc                 C   sx   t dgdgdggg}t| dddg t|jdddgdgdgg tt|jdd t|jdddddgg d S )Nr#   r"   r   r  r  rd  rn  )r'   r   r	   Z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   r  r=   r   r=   r>   r0    r1  z,TestMethods.test_transpose.<locals>.<lambda>c                      s     ddS r   r  r=   r   r=   r>   r0    r1  c                      s     dddS )Nr   r#   r"   r  r=   r   r=   r>   r0    r1  )r'   r   r	   r  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*   r  rt  ru  )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 ]L}d| }| }|j|d t||| | }|j|d t||| q&d S )NrS  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 ]L}d| }| }|j|d t||| | }|j|d t||| q(d S )N3   r   r%   r  r  r  r  r=   r=   r>   test_sort_signed  s    
zTestMethods.test_sort_signedpartrt  ru  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 ]P}d||f }	| }
|
j|d t|
||	 | }
|
j|d t|
||	 q|d S )	Nr  r  r   r%         ?      ?r#   z#complex sort, %s part == 1, kind=%sr  )r'   singlecsingledoublecdoubler@  clongdoublerC   r  rA  r   r  r  r	   )rF   r  r   ZcdtyperD   r   aibir{  r  r  r=   r=   r>   test_sort_complex  s.       
zTestMethods.test_sort_complexc                 C   s\   dD ]R}t jd D ]B}t jdddg|| d}| }|  d|}t||| qqd S )Nr   Complex      ?      @       @       @      @      ?r   z$byte-swapped complex sort, dtype={0})r'   r  r   r  r  formatr	   )rF   
endiannessr  rS   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 ]L}d| }| }|j|d t||| | }|j|d t||| q4d S )Nc                 S   s   g | ]}d t | qS )aaaaaaaachrrU  r=   r=   r>   rW    s     z0TestMethods.test_sort_string.<locals>.<listcomp>rS  r   r%   kind=%sr  )r'   r   rq   r  r  r  r	   r  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 ]L}d| }| }|j|d t||| | }|j|d t||| q4d S )NrS  r   rS  r%   qhr  r  r  )r'   r2   r(   r  rq   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 ]L}d	| }| }|j|d
 t||| | }|j|d
 t||| qDd S )Nr   r   c                 S   s   g | ]}||fqS r=   r=   rU  r=   r=   r>   rW  8  s     z4TestMethods.test_sort_structured.<locals>.<listcomp>rS  r   r%   r  r  r  )	r'   r   floatr   r   rq   r  r  r	   )rF   r  rD   r   r{  r  r  r=   r=   r>   test_sort_structured5  s    z TestMethods.test_sort_structureddatetime64[D]timedelta64[D]c                 C   st   t jdd|d}|d d d }dD ]L}d| }| }|j|d t||| | }|j|d t||| q"d S )Nr   rS  r   r%   r  r  r  )r'   rC   r  r  r	   r  r=   r=   r>   test_sort_timeC  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_axisQ  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 )Nr   r"   r#   r   z#test empty array sort with axis={0}r  z$test empty array sort with axis=None)	r'   r   r7   rq   r   r  r	   r  ravel)rF   rD   r  r  r=   r=   r>   test_sort_size_0a  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                   @   s   e Zd Zdd ZdS )z0TestMethods.test_sort_bad_ordering.<locals>.Boomc                 S   s   dS )NTr=   rF   otherr=   r=   r>   __lt__o  s    z7TestMethods.test_sort_bad_ordering.<locals>.Boom.__lt__N)rN   rO   rP   r	  r=   r=   r=   r>   Boomn  s   r
  r  r   r  r  )r'   r   r(   r  r  r  r	   )rF   r
  rD   r{  r  r  r=   r=   r>   test_sort_bad_orderingk  s    
z"TestMethods.test_sort_bad_orderingc                 C   s   t dD ]4}tjjddtjd}|d}|d d d   qtdg}t dD ]4}tjjddtjd}||}|d d d   qRd S )Nr      i  r9   r   r  r%   )rn  r   rd  )rq   r'   randomrandintr3   rW   r  r   )rF   r   randrS   r  r=   r=   r>   test_void_sorty  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 qvd S )Nr   r#   r   r  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                  _   s   t dd S )NzSOMETHING ERROREDr   argsr  r=   r=   r>   raises_anything  s    z<TestMethods.test_sort_raises.<locals>.Raiser.raises_anythingN)
rN   rO   rP   r  __eq____ne__r	  __gt____ge____le__r=   r=   r=   r>   Raiser  s   r  c                    s   g | ]}  |gqS r=   r=   )rV  rm  r  r=   r>   rW    s     z0TestMethods.test_sort_raises.<locals>.<listcomp>rB   r%   )r'   r   r   nowr(   r  r   r   r  rq   r   r  shuffle)rF   rS   r{  r=   r  r>   test_sort_raises  s    
"
zTestMethods.test_sort_raisesc                 C   sz   t d}| }|}|jdkrR|jd }|d ||  ||< |d< |d d }qtt || t|t | | d S )N@B r   r"   r   )r'   rC   r  r9   r	   r  r  )rF   r   Z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 rR   r   rJ   fortranr  r  rS   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 rR   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   sX   t jd|d}t|jjd|j |i }d|d< tt	 t
|| W 5 Q R X d S )Nr   r   r   r[  )r'   r2   ctypesmemsetr$   r   __deepcopy__r   r  r~   r   )rF   r   rD   r   r=   r=   r>   test__deepcopy__  s    
zTestMethods.test__deepcopy__c              	   C   sH   G dd d}t jd| dgdd}tt |i  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z:TestMethods.test__deepcopy__catches_failure.<locals>.MyObjc                 _   s   t d S rR   r9  rF   r  r  r=   r=   r>   r+    s    zGTestMethods.test__deepcopy__catches_failure.<locals>.MyObj.__deepcopy__N)rN   rO   rP   r+  r=   r=   r=   r>   MyObj  s   r.  r#   r   r  r   )r'   r   r   r  r   r+  )rF   r.  rS   r=   r=   r>   test__deepcopy__catches_failure  s    z+TestMethods.test__deepcopy__catches_failurec                    s  t dddg}t dddg}t ddd	g}t jj|||gd
d  jdgd t jt dddg t jt dddg t jt d	ddg  jdgd t jt dddg t jt dddg t jt ddd	g  jdgd t jt dddg t jt dddg t jt ddd	g t	t
d fdd tjdkrnd}nd}dd|fg}t jddddg|d  jdd t d dddd g t t jddddg|d d S )!N   r      Zmyfirstr}  g@g      @@zid,word,number)r/  r  r&   wordnumberZ	duplicatec                      s    j ddgdS )Nr  r&   )r  r=   r   r=   r>   r0    r1  z-TestMethods.test_sort_order.<locals>.<lambda>littler	  rN  )r}  r  Zcol2)rD   r#   )r   rZ  )r  r   )r     r   r#   r   rZ  r8  )r'   r   r  
fromarraysr  r	   r  r4  r5  r   r)   sys	byteorder)rF   x1r  x3ZstrtypeZmydtyper=   r6  r>   test_sort_order  s>    
zTestMethods.test_sort_orderc                    sr  t jt jt jfD ]l}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|| q|d }|d }| jD ]<}d| }t| j|d|| t| j|d|| qd	D ]Z}t j	d
 D ]H}	t j
dddg||	 d}
d|	}t|
 t jt|
t jd| q@q2d 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|| qpt 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|| qt 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|| qt 
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 ]2}d%|}tt j||d#t j|t jd| qpd&}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 )+NrS  r   r%   z!scalar argsort, kind=%s, dtype=%sr  rs  r#   zcomplex argsort, kind=%sr   r  r  r  r  z'byte-swapped complex argsort, dtype={0}r  c                    s   g | ]} t | qS r=   r  rU  r/  r=   r>   rW   	  s     z,TestMethods.test_argsort.<locals>.<listcomp>zstring argsort, kind=%sc                    s   g | ]} t | qS r=   r  rU  r/  r=   r>   rW  +	  s     zunicode argsort, kind=%sr  zobject argsort, kind=%sr   r   c                 S   s   g | ]}||fqS r=   r=   rU  r=   r=   r>   rW  A	  s     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  r  c                 S   s   g | ]}d qS Z	aaaaaaaaar=   rU  r=   r=   r>   rW  {	  s     c                 S   s   g | ]}d qS r?  r=   rU  r=   r=   r>   rW  ~	  s     )r'   r   r   r  rC   r  r  r	   r  r  r   r  r   r  rq   rr  r2   r(   r  r   r  r   r7   r   r  r  r*   r  )rF   r   rD   r   r{  r  r  r  r  r  rS   r   rrr  r  r=   r/  r>   r    s    



 

"









  

zTestMethods.test_argsortc                 C   s8   t d}dd}tt|j|d tt|j|d d S )NrB      äUTF8r  )r'   rC   decoder   r)   r  r  rF   r   r  r=   r=   r>   test_sort_unicode_kind	  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   r*  r   r  r   r%   r"   )r   searchsortedr	   r'   rC   r   r  )rF   rD   r  r   r   r   r=   r=   r>   test_searchsorted_floats	  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'rF  rG  z-Test complex searchsorted with nans, side='r'rI  rB   z.Test searchsorted with little endian, side='l'   rI  z+Test searchsorted with big endian, side='l'rJ  )
r'   r*   r  rt  r  ru  rJ  r	   rC   r   )rF   rD   r  r   r=   r=   r>   test_searchsorted_complex	  s"    &&z%TestMethods.test_searchsorted_complexc                 C   s   t d}|dddgd}t|dddg |dddgd}t|dddg t d}|dddgd}t|dddg |dddgd}t|dddg t d}|dddgd}t|dddg |dddgd}t|dddg d S )Nr   r#   r"   rF  rI  )r'   r  rJ  r	   rS  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   rF  rI  )	r'   rC   r2   r1   r9   rW   r   rJ  r	   )rF   rD   r   	unalignedr   r=   r=   r>   !test_searchsorted_unaligned_array	  s    


z-TestMethods.test_searchsorted_unaligned_arrayc                 C   sR   t d}|dddgd}t|dddg |dddgd}t|dddg d S )NrH   r   r   rF  rI  )r'   rC   rJ  r	   rS  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 ]}|dkr8d}|dkrZt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   rH   rF  rI  r#   r1  r7   r   r   )joinr'   r  rC   rJ  r	   r6   r   r*   r   r  )rF   ri   r  rD   r  r   r   r=   r=   r>   test_searchsorted_type_specific	  s*     

z+TestMethods.test_searchsorted_type_specificc                    s   t jddddddddd	d
ddddg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 )Nz'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                    s   g | ]}  |d qS rF  rJ  rV  rx   r   r=   r>   rW  
  s     z9TestMethods.test_searchsorted_unicode.<locals>.<listcomp>c                    s   g | ]}  |d qS rI  r[  r\  r   r=   r>   rW  
  s     r#   c                    s   g | ]}   | d qS rZ  r[  rU  r   r=   r>   rW  
  s     c                    s   g | ]}   | d qS r]  r[  rU  r   r=   r>   rW  
  s     )r'   r   rr  rC   r   r	   r  r=   r   r>   test_searchsorted_unicode	  s,    z%TestMethods.test_searchsorted_unicodec                 C   s   t dddddg}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ddddgd	 ttt j|dddddddgd	 ttt j|ddddddgd	 ttt j|ddddddgd	 ttt j|ddddddgd	 d S )NrH   r"   r#   r   r   r   )r#   r   r   sorterg?r   r%   )r'   r   r  r   r   rJ  r(   r)   )rF   rD   r   r=   r=   r>   %test_searchsorted_with_invalid_sorter
  s    
 z1TestMethods.test_searchsorted_with_invalid_sorterc                 C   s  t jd}| }t |}t ddd}t|||j||d t dddddgd }| }dddddg}ddd	d
dg}t|j|d|d| dd	d
ddg}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 ]8}
|
dkrd}
|
dkr
t jddg|
d}t jddgt jd}t ddg}nLt jdddddg|
d}t jdddddgt jd}t jdddddg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 dddddg}t jdt jd}d|dd d< dddddg|d d d< |d d d }t jdddddgt jd}||d|}t|| ||d|}t||d  d S ) Ni,  r   r#   r   r_  r"   r   rH   (   r   r  rF  )rH  r`  r  rI  rB   r3   r\  r  r  rR  rS  rT  rU  rV  r   r   r1  rW  r   r%   )r'   r  r  r  r  linspacer	   rJ  r   rC   r  r  r2   r1   r9   rW   r   rX  r  r   r  r6   r   r*   r   )rF   rD   r   r   r  r  keysr   rO  ri   r  r  r   Zsrtr=   r=   r>   test_searchsorted_with_sorter#
  sz    



 




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                   @   s   e Zd ZdS )z4TestMethods.test_searchsorted_return_type.<locals>.ANrM   r=   r=   r=   r>   r  r
  s   r  rH   r#   r   rF  rI  )r'   r6   rC   rW   r   ru   rJ  )rF   r  rD   r   r   r=   r=   r>   test_searchsorted_return_typep
  s    z)TestMethods.test_searchsorted_return_typer  c                 C   s2   t dj|d}tt|jd tt|jd d S NrB   r   i)r'   rC   rA  r   r)   r  rF   r   r   r=   r=   r>   test_argpartition_out_of_range|
  s    z*TestMethods.test_argpartition_out_of_rangec                 C   s2   t dj|d}tt|jd tt|jd d S rg  )r'   rC   rA  r   r)   r  rh  r=   r=   r>   test_partition_out_of_range
  s    z'TestMethods.test_partition_out_of_rangec                 C   s8   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   Zd_objr=   r=   r>   test_argpartition_integer
  s    
z%TestMethods.test_argpartition_integerc                 C   s8   t d}tt|jd t jdtd}tt|jd d S rk  )r'   rC   r   r   r  r(   rm  r=   r=   r>   test_partition_integer
  s    
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|| q2d}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   rq   r   r  r	   r  r  rF   rp  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 ]2}d|}tt j|||dt j|t j	d| q2d}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   rq   r   r  r	   r  r  r  r  rq  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 ]x}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 d	d
dg}|
 }t t d| t|| ddgddgddgfD ]}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|| qBdddgdddgdddgdddgdddgdddgdddgdddg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 qLt|| 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| ||  qt|t j|d|d t j|d|d t|t j|d|d t j|d|d t|jD ]}||d  jd|d q2t|| t dddddddddddddddddddddddg}ddddg}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 ]V}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  d(||d d |f |d d d |f jf d) ||d d |d d f j|d d |f k  d*||d d |f |d d |d d f jf d) |||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  d(|||d d f |d |d d f f d) |||d d d d f ||d d f k  d*|||d d f |d d |d d f f d) |||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
q*qrd S )+NrB   r"   r#   r  Znonsenser   )r  r{  )r  r      rH   rb  r   rk  1   /   r%   r   r   i)   i   r   iAB r   )r"   r%   r   r      r   )r   r   r   r   r  r"   rH   r  c                 S   s   g | ]}d D ]}||fqqS ))r   r   r=   )rV  r  r   r=   r=   r>   rW  S  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  rq   r9   r	   Zrollr  r   isnanr  r  	AxisErrorr   r   r  r  tilemapr  r   r7   r	  r  )rF   r   r  r  Zokthr   r
  r   r   r!  tdr  r   ZaaeatrF  d0r  dcr=   r=   r>   r  
  s   






    








"
&     
,**.. ,((,,zTestMethods.test_partitionc                 C   st   d}t |D ]`}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_partitioned  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 dd	d
dg}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 ddddg}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 | q<t 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   rz  r   r  r#   r   r   r"   r   r   )r   r%   r   r   r   r%   rH   r   r  r'  r{  )r#   r   r   r%   )r'   rC   r   r)   r  r  r   r   r  r   r  r  rq   r9   r  r  r  r7   )	rF   r   r  r  rd  rF  r  par   r=   r=   r>   test_partition_iterative  sz    

 
  



z$TestMethods.test_partition_iterativec                 C   sJ  t jdddgdddg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 ]L}tt j||dd	gd
| ||  t|t j||dd	gd
 | ||  qzt ddddg}t |}tt |t|j| t|jD ]>}tt ||| ||  t|t || | ||  qd S )N)Galahadg333333?&   )Arthurg?rw  )Lancelotgffffff?r  )r}  z|S10)heightr  )agerI  r   r  r  r&   r  r  Zzebrar  )	r'   r   r  r   r  rq   r9   r  r	   )rF   r   r
  r  r=   r=   r>   test_partition_cdtype  s:    
z!TestMethods.test_partition_cdtypec                 C   s<   t d}dd}tt|jd|d tt|jd|d d S )NrB   rA  rB  r"   r  )r'   rC   rC  r   r)   r  r  rD  r=   r=   r>   test_partition_unicode_kind  s    

z'TestMethods.test_partition_unicode_kindc                 C   s   t ddD ]}t d|d D ]z}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   )
rq   r'   rC   r  r  r  r9   r  r   r  )rF   r  r   r   r  r  r
  r=   r=   r>   test_partition_fuzz  s    

zTestMethods.test_partition_fuzzc                 C   sJ   t jd|dd }dddddd	g}t ||}| t || dg d S )
Nr#   r   r=   r   r   r   r"   r   r   )r'   r   r  r  )rF   rp  r  r   r  r=   r=   r>   test_argpartition_gh5524  s    z$TestMethods.test_argpartition_gh5524c              
   C   s$  t dddgdddggt j}t ddgddggddgddgggt j}t ddddddgt j}t ddddddgt j}t ddddddddgt j}t ddddddddgt j}t| | t|d	| t|d	|j  t| | t|d	| t|d	|j  d S )
Nr#   r"   r   r   rH   r   r   r   r  )r'   r   r   r	   flattenr	  )rF   Zx0r<  Zy0Zy0fy1Zy1fr=   r=   r>   test_flatten  s    *zTestMethods.test_flattenr  c                 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 ddd}t dd	d
dgd	dddgd
dddgddddgg}t ddddddgddddddgdddddd gdddd!d"d#gdddd"d$d%gddd d#d%d&gg}t jt jt jt jfD ]}||}	t	||	|	|	 t	||	j
|	|	 t	||	|	j
|	 t	||	j
|	j
|	 t	||	j
 |	|	 t	||	|	j
 |	 t	||	j
 |	j
 |	 qt jt jt jt jfD ]b}||}	||}
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
  q$t jt jt jt jfD ]H}||}||}||}t	|||j
| t	||j
|| qPd S ))Nr#   r   r   r  r   r   7         iE  i  i  i'  i  i	  i	  i  i  i@  id  i  i  iD  il  i  i  i  i  i  i  i  i  i$  iT  iX  i  i  r%   r"   )r'   r   rC   r   r  r   r  r  rA  r	   r	  r  r7   )rF   r  rD   r   r  r   ZddtZdtdetZeafZebfZedfZeddtfZedtdfr=   r=   r>   test_arr_mult  s    







$$  6>6>


zTestMethods.test_arr_multZ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   rW   r   r4   )rF   r  r   rD   r   Zret1Zret2r  r=   r=   r>   test_no_dgemvc  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   r  )r   r  )r'   r   r	   dotr  rF   rD   r   r  r=   r=   r>   test_dot  s    &

zTestMethods.test_dotc                 C   s6   d}t jddd}ttt j|| ttt j|| d S Nr   re  r  r   )r'   r   r   r   r  rF   r  r  r=   r=   r>   test_dot_type_mismatch  s    z"TestMethods.test_dot_type_mismatchc              
   C   s   t jd dd t jd D }|D ]}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 krt |qS )ZUSVMr'   r   )rV  coder=   r=   r>   rW    s    z8TestMethods.test_dot_out_mem_overlap.<locals>.<listcomp>r  r   r  r   .r  r   r"   )r'   r  seedr  r  rA  r?   r  r	   r2  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                   @   s   e Zd ZdS )z,TestMethods.test_dot_matmul_out.<locals>.SubNrM   r=   r=   r=   r>   Sub  s   r  r  r  )r'   r6   r  rW   r  matmul)rF   r  rD   r   r  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                   @   s   e Zd Zdd ZdS )z@TestMethods.test_dot_matmul_inner_array_casting_fails.<locals>.Ac                 _   s   t d S rR   NotImplementedErrorr-  r=   r=   r>   r~    s    zJTestMethods.test_dot_matmul_inner_array_casting_fails.<locals>.A.__array__Nr  r=   r=   r=   r>   r    s   r  )r   r  r'   r  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||k t|| t dddd}t j|||d d ddf d}t|j|jk t|| d S )Nrd  r"   r   r  r%   .)r'   rC   r   r  r   r	   rv   r  r=   r=   r>   test_matmul_out  s    
zTestMethods.test_matmul_outc                 C   s  t dd}t| dddg t|ddddg t|ddddg 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 )Nr'  r  r   rH   rB   r#   r   r  r%   r   r   )axis1axis2r   r"   r"   r"   r   r"   r   r<   r  r  )r'   rC   r   r	   diagonalr   r~  r)   rS  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   rJ   rK   r}   Zdiagr   r=   r=   r>   test_diagonal_view_notwriteable  s    z+TestMethods.test_diagonal_view_notwriteablec                 C   sP   t d}tr tt|dk  tdD ]}|  q(trLtt|dk  d S )Nr  r  rk  r  )r'   r*   r   r   r:  getrefcountrq   r  )rF   rD   r   r=   r=   r>   test_diagonal_memleak  s    

z!TestMethods.test_diagonal_memleakc                 C   sR   t jg t jd}t d}tdD ]}t j|||d q"trNtt|dk  d S )Nr          @r  r  rk  )	r'   r   r   rq   r  r   r   r:  r  )rF   rD   r   _r=   r=   r>   test_size_zero_memleak  s    
z"TestMethods.test_size_zero_memleakc                 C   s6  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}||ks2td S )Nr'  r  rt  r   r#   rd  r%   r  r   r  r   r"   r   r   rH   r   r  r  r  )r'   rC   r   r	   tracer   r~   )rF   rD   r   r  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                   @   s   e Zd ZdS )z0TestMethods.test_trace_subclass.<locals>.MyArrayNrM   r=   r=   r=   r>   MyArray$  s   r  r   r  )r'   r6   rC   r   rW   r  r   ru   )rF   r  r   r   r=   r=   r>   test_trace_subclass!  s    zTestMethods.test_trace_subclassc                 C   s  t jd }t jd }|| d D ]}t jddddddg|d}t jd	|d}|dddgdddg t|| t jd
|d}|dddgdddg t||dd q dD ]}t jddddddg|d}t jd	|d}|dddgdgd  t|| t jd
|d}|dddgdgd  t||dd qt d	}d|j_t	t
|jdddgdddg dddg}t	tt j|ddgd d S )Nr  r  r  r   r#   r   rH   r   r   r   r"   rV  FT)r'   r  r   r*   putr	   r   rJ   rK   r   r)   r   )rF   icodesfcodesr  r
  rD   Z	bad_arrayr=   r=   r>   test_put+  s.    





zTestMethods.test_putc              
   C   s  t ddgddgg}t| ddddg t| jj  t|dddddg t|jddddddg t|jddddddg t|jddddddg t|jddjj  t|jd	dddddg t|jd	djj  t| |d
 t jddgddggdd}t| ddddg t|jddddddg t|jd	dddddg 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| ddddg t|jddddddg t|jddddddg t|jddddddg t|jd	dddddg 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ddddg t|d	ddddg t dgg}d|_t djdkrftt |d	| t|d	j|jjf dD ]8}t d}t||dg tt ||| qjt dd d d dddd}|dd d df }t|d	ddddddddg t|dddddddddg t|dddddddddg t|dddddddddg |d d ddf }t|d	ddddddddg t|dddddddddg t|dddddddddg t|dddddddddg d S )Nr   r#   r"   r   r  r   r&   r  Kr%   rB   r   r   r  rt  r   r   )r  i  r   )r   r  r  r  r   .r'  r   r     r   r1  )r'   r   r	   r  r   rJ   r}   r   rC   swapaxesr  r   may_share_memoryr  r   r1   )rF   rD   r   r    r   r=   r=   r>   
test_ravelS  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                   @   s   e Zd ZdS )z6TestMethods.test_ravel_subclass.<locals>.ArraySubclassNrM   r=   r=   r=   r>   ArraySubclass  s   r  rB   r   r  r  r  r"   )r'   r6   rC   rW   r   ru   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|}qqqd S )Nr  r#   r"   r   r   ZOWNDATAr   c                 S   s   g | ]}|d  qS rd  r=   rV  dimr=   r=   r>   rW    s     z-TestMethods.test_swapaxes.<locals>.<listcomp>c                 S   s   g | ]}|d  qS rd  r=   r  r=   r=   r>   rW    s     )r'   rC   r   r  indicesr7   r   rJ   r   r~  r  rq   	enumerater  r	   r   )rF   rD   r  r   r   r  r  srcr  r7   Zi0r  i2Zi3Zj0Zj1Zj2Zj3r=   r=   r>   test_swapaxes  s2    
 zTestMethods.test_swapaxesc                    s  t dddg   }t j|j t j|j  t|   t|t   t dddgd   }t j|j t j|j  t|   t|t   t dddg   }t | t|   t|t   t dd	d
g   }t | t|   t|t   t dddd	gt   }t|dd  D  t|   t|t   t ddd	dgt tt	 fdd tt	 fdd d S )N      ?      r        7@      7@r  r#   r"   r   r   r        @c                 S   s   g | ]}|  qS r=   	conjugate)rV  r  r=   r=   r>   rW    s     z.TestMethods.test_conjugate.<locals>.<listcomp>r   c                      s      S rR   )conjr=   r   r=   r>   r0     r1  z,TestMethods.test_conjugate.<locals>.<lambda>c                      s      S rR   r  r=   r   r=   r>   r0    r1  )
r'   r   r  r	   rt  ru  r  r(   r   r   )rF   acr=   r   r>   test_conjugate  s<    

zTestMethods.test_conjugatec                 C   sB   t dddg}t |}||}||ks0tt||  d S )Nr  r  r  )r'   r   r  r  r~   r   )rF   rD   r  rJ  r=   r=   r>   test_conjugate_out  s
    

zTestMethods.test_conjugate_outc           
      C   s   ddddddddd	d
ddddddg}|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 )Nr  r  r   r+  r`   u2u4u8r   r   gr  DGrV  r  r   r   z
dtype: {0})r'   r   r  r  r	   )
rF   r  r  rD   r   r  r  ZapZbpcpr=   r=   r>   test__complex__  s2             
zTestMethods.test__complex__c                 C   s   ddddddddd	d
ddddddg}|D ]$}t jdddg|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  r  r   r   r  r  r  r  rV  r  r#   r"   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  s4             
z*TestMethods.test__complex__should_not_workN)hrN   rO   rP   r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r'   r3   r   r   r   float16r  r   r@  r  r   r   r   r   r  r  r  rt  rr  r  r  r  r  r  r  r  r  r  r"  r(  r,  r/  r>  r  rE  r   r  rK  rM  rN  rP  rQ  rY  r^  ra  re  rf  r  ri  rj  rn  ro  rr  rs  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    s   
  
  





	% 

M

		

 QD

M

([ %	r  c                   @   s   e Zd Zdd ZdS )TestCequenceMethodsc                 C   s8   t dtdddk t dtdddk d S )N      @g      0@r         4@)r   r'   rC   r   rE   r=   r=   r>   test_array_contains5  s    z'TestCequenceMethods.test_array_containsN)rN   rO   rP   r  r=   r=   r=   r>   r  4  s   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"         ?rH   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)rq  subr0   truedivfloordivmoddivmodpowlshiftrshiftandxororr  c                   @   s   e Zd ZdS )z7TestBinop.test_ufunc_binop_interaction.<locals>.CoercedNrM   r=   r=   r=   r>   Coercedy  s   r  c                    s    d S rR   r=   rE   )r  r=   r>   
array_impl|  s    z:TestBinop.test_ufunc_binop_interaction.<locals>.array_implc                 S   s   dS )Nforwardr=   r  r=   r=   r>   op_impl  s    z7TestBinop.test_ufunc_binop_interaction.<locals>.op_implc                 S   s   dS )Nreverser=   r  r=   r=   r>   rop_impl  s    z8TestBinop.test_ufunc_binop_interaction.<locals>.rop_implc                 S   s   dS )Nzin-placer=   r  r=   r=   r>   iop_impl  s    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_impl  s    z@TestBinop.test_ufunc_binop_interaction.<locals>.array_ufunc_impl__main__c                    s   d i}|dk	r||d< D ].}|d |< |d |< |d |< q|dk	r\||d< | ||d}td	|}t|tjrtd
ddd|S | S d S )Nr~  F__array_priority____{0}____r{0}____i{0}__r
  )rv   class_namespacerN   z(type('MyType', (base,), class_namespace)r   r   r"   )r  r  
issubclassr'   r6   rC   r   rW   )rv   array_priorityarray_ufuncZalleged_moduler  opZeval_namespaceZMyType)r  r	  r  opsr  r=   r>   make_obj  s&    z8TestBinop.test_ufunc_binop_interaction.<locals>.make_objc                    s8    D ](\ \}}}d |||f }tjdd|dddg}	|rX|	|	d d  |	D ]}
t|
d } fdd	}|rt|| t| nl|rt|| d d
| nRt	| tj
rt| jtj
jkr||| }t|j| jk| nttf|| |d t|
d }|rD|| }t|d d
|d t|d ||d nVt	| tj
rt| jtj
jkr||| }t|j| jk| nttf|| |d |rt	|
tj
rt|
d }|rt|| t|d n|r<|| }t|d d
| t|d || tt|d d tk| t|d d d |
k| nJt	| tj
rrt| jtj
jkrrt|| |
k| nttf|| |d tt d }|d krtt d d }|d krtt }t|| |
d| t	| tj
s|rt||
| d| n|rt||
| d d
| |r\t|| |
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 d S )Nr  r   )r   ru   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%   r  r  r  r  )itemsr'   rC   r   r  r|  r  r	   NotImplementedru   r6   rU  r
  r   	__class__r   r   r  r/   r[  )objZbinop_override_expectedZufunc_override_expectedZinplace_override_expectedcheck_scalarr  Zhas_inplacer   r   Z
check_objsrS   
arr_methodr  rJ  Zarr_rmethodZarr_imethodZop_fn)r  r  r  r>   check  s    

  
  
 


z5TestBinop.test_ufunc_binop_interaction.<locals>.checki   )r  r#   )r!  )r  r  )r  )FFr  )T)r'   rq  r  subtractmultiplytrue_divideZfloor_divide	remainderr  r\  r   Z
left_shiftZright_shiftZbitwise_andZbitwise_xorZ
bitwise_orr  r   r(   r6   )rF   r  r  r#  r=   )r  r  r	  r  r  r  r>   test_ufunc_binop_interaction_  sd    













   ^  
  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sHt|d dksXt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__!r9  rE   r)  r=   r>   r    s    zUTestBinop.test_ufunc_binop_bad_array_priority.<locals>.BadPriority.__array_priority__c                 S   s   dS )Nr  r=   r  r=   r=   r>   __radd__$  s    zKTestBinop.test_ufunc_binop_bad_array_priority.<locals>.BadPriority.__radd__N)rN   rO   rP   propertyr  r,  r=   r+  r=   r>   BadPriority  s   r.  c                   @   s   e Zd ZdZdS )zBTestBinop.test_ufunc_binop_bad_array_priority.<locals>.LowPriorityiNrN   rO   rP   r  r=   r=   r=   r>   LowPriority'  s   r0  r   r  r   r  )r'   r6   rC   rW   r7   r~   )rF   r)  r.  r0  rJ  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|ko2d|k t j|dgdd}td|koXd|k t|d d t j|dgdd}td|kod|k t|d d d S )	Nc                   @   s   e Zd Zdd ZdS )zDTestBinop.test_ufunc_override_normalize_signature.<locals>.SomeClassc                 _   s   |S rR   r=   rF   r  r  inputskwr=   r=   r>   r
  4  s    zTTestBinop.test_ufunc_override_normalize_signature.<locals>.SomeClass.__array_ufunc__NrN   rO   rP   r
  r=   r=   r=   r>   	SomeClass3  s   r6  r#   sig	signaturezii->i)r7  )r8  )r'   rq  r   r	   )rF   r6  rD   r4  r=   r=   r>   'test_ufunc_override_normalize_signature1  s    z1TestBinop.test_ufunc_override_normalize_signaturec              	   C   s"  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 5 Q R X 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                   @   s   e Zd Zdd ZdS )z4TestBinop.test_array_ufunc_index.<locals>.CheckIndexc                 _   sN   t |D ]\}}|| kr|  S qt |d D ]\}}|| kr.|f  S q.d S r  )r  )rF   r  r  r3  r4  r   rD   r  r=   r=   r>   r
  F  s    
zDTestBinop.test_array_ufunc_index.<locals>.CheckIndex.__array_ufunc__Nr5  r=   r=   r=   r>   
CheckIndexE  s   r:  r  r   r  r  rd  r#   )	r'   rC   r	   sinmodfr   r   r)   rq  )rF   r:  rD   dummyr=   r=   r>   test_array_ufunc_indexA  s8    


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                   @   s   e Zd Zdd ZdS )z-TestBinop.test_out_override.<locals>.OutClassc                 _   s>   d|kr:|  }|d t||}||||d d d< d S )Nr  r   .)r  rI  r|  )rF   r  r  r3  r4  Ztmp_kwr  r=   r=   r>   r
  t  s
    

z=TestBinop.test_out_override.<locals>.OutClass.__array_ufunc__Nr5  r=   r=   r=   r>   OutClasss  s   r?  r   rH   r   r   r  )r'   r6   r   rW   r%  r	   r   ru   )rF   r?  r  r[   r   r=   r=   r>   test_out_overrideq  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 5 Q R X tt |d  W 5 Q R X tt |d	  W 5 Q R X tt |d
  W 5 Q R X tt |d  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z:TestBinop.test_pow_override_with_errors.<locals>.PowerOnlyc                 _   s   |t jk	rtdS )NPOWER!)r'   r\  r  r2  r=   r=   r>   r
    s    
zJTestBinop.test_pow_override_with_errors.<locals>.PowerOnly.__array_ufunc__Nr5  r=   r=   r=   r>   	PowerOnly  s   rB        @r         @rA  r  r   r#   r%   r"   )r'   r6   r   r   rW   r	   r   r  )rF   rB  rD   r=   r=   r>   test_pow_override_with_errors  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   s
   || _ d S rR   r   r   r=   r=   r>   rU     s    zATestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__init__c                 S   s   t dd S )Nz__mul__ should not be calledr~   r  r=   r=   r>   __mul__  s    z@TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__mul__c                 S   s   t dd S )Nz__div__ should not be calledrG  r  r=   r=   r>   __div__  s    z@TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__div__c                    s    | j | dS )NrF  rF  )rF   expr6  r=   r>   __pow__  s    z@TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__pow__c                    s   t | r| j|jkS d S rR   )ru   r   r  rK  r=   r>   r    s    
z?TestBinop.test_pow_array_object_dtype.<locals>.SomeClass.__eq__)N)	rN   rO   rP   rU   rH  rI  rL  r  __rpow__r=   rK  r=   r>   r6    s   
r6  c                    s   t  fdd|D S )Nc                    s   g | ]}|  qS r=   r=   rX  rJ  r=   r>   rW    s     zJTestBinop.test_pow_array_object_dtype.<locals>.pow_for.<locals>.<listcomp>r"  )rJ  rS   r=   rN  r>   pow_for  s    z6TestBinop.test_pow_array_object_dtype.<locals>.pow_forr#   r"   r   r  r   r%   r  )rF   rO  obj_arrr=   rK  r>   test_pow_array_object_dtype  s    z%TestBinop.test_pow_array_object_dtypec              	   C   s@   G dd dt j}t d|}tt |
  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z2TestBinop.test_pos_array_ufunc_override.<locals>.Ac                 _   s   t ||dd |D |S )Nc                 S   s   g | ]}| tjqS r=   )rW   r'   r6   rU  r=   r=   r>   rW    s   zVTestBinop.test_pos_array_ufunc_override.<locals>.A.__array_ufunc__.<locals>.<listcomp>)r|  )rF   r  r  r3  r  r=   r=   r>   r
    s
    zBTestBinop.test_pos_array_ufunc_override.<locals>.A.__array_ufunc__Nr5  r=   r=   r=   r>   r    s   r  r*  )r'   r6   r   rW   r   r   )rF   r  Ztstr=   r=   r>   test_pos_array_ufunc_override  s    
z'TestBinop.test_pos_array_ufunc_override)rN   rO   rP   r  r(  r   r   r   r1  r9  r>  r@  rE  rQ  rR  r=   r=   r=   r>   r  9  s   % 9
0!r  c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestTemporaryElidec                 C   sF   ddl m} td}||\}}||  t|| t|||  d S )Nr   )incref_elide順 )r|   rT  r'   r  r   )rF   rT  r   origrJ  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#   rU  r   )r|   rX  r'   r  r   )rF   rX  r   rJ  r=   r=   r>   !test_extension_incref_elide_stack  s
    z4TestTemporaryElide.test_extension_incref_elide_stackc                 C   sx  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   q6d S )
Ni@ r   r"      r  r  r  rU  zf%d)r'   r  r   r	   r   r&  r  rA  r   r@  r  r  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k d S rR   )r'   rN  r   rU  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 )NrU  r   r"   )r'   r2   r   ru  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#   rU  r   r   )r'   rX   r  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  ra  r~  r	   rS  r=   r=   r>   test_elide_updateifcopy%  s    z*TestTemporaryElide.test_elide_updateifcopyN)rN   rO   rP   rW  rY  r\  r^  r_  r`  rb  rc  r=   r=   r=   r>   rS    s   !
	rS  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oVe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|   re  r   )rF   re  r=   r=   r>   test_IsPythonScalar-  s    zTestCAPI.test_IsPythonScalar	converterc                 C   sb   |ddkst |ddks t |tddks6t |ddksFt |tdgdks^t d S )	NrB   r   r%   r   r  )r  r  )r  )r~   r'   r   rF   rg  r=   r=   r>   test_intp_sequence_converters5  s
    z&TestCAPI.test_intp_sequence_converters)r   r   r   zPyPy bug in error formattingrn   c              	   C   s   t jtdd |t  W 5 Q R X t jtdd |d W 5 Q R X t jtdd |dg W 5 Q R X t jtdd |d W 5 Q R X d S )Nz5expected a sequence of integers or a single integer, r  z?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)   rh  r=   r=   r>   $test_intp_sequence_converters_errorsC  s     z-TestCAPI.test_intp_sequence_converters_errorsN)rN   rO   rP   rf  r   r   r   _multiarray_testsZrun_scalar_intp_converterZrun_scalar_intp_from_sequenceri  r   r   r:  implementationversionrk  r=   r=   r=   r>   rd  ,  s    
rd  c                   @   s   e Zd Zdd ZdS )TestSubscriptingc                 C   s>   t dddg}tt|d t j tt|d t jk d S )Nr#   r"   r   r   r?  )r'   r   r   ru   r   rU  r6   r  r=   r=   r>   test_test_zero_rankZ  s    z$TestSubscripting.test_test_zero_rankN)rN   rO   rP   rp  r=   r=   r=   r>   ro  Y  s   ro  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 )"TestPicklingrH   zSthis tests the error messages when trying toprotocol 5 although it is not availablern   c                 C   s   t d}d S rA   r  )rF   r   r=   r=   r>   $test_correct_protocol5_error_messagea  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 ]H}t	tj
||d	}t	tj
||d	}t|j|j t|j|j q`d S )
Nr#   r  rD   r   r  r   Zxxxr#   r  r"   r  )r(   r'   r   r   r  r   rq   r   rr   rs   rt   r	   r   )rF   Z	my_objectZarr_with_objectZarr_without_objectr  Zdepickled_arr_with_objectZdepickled_arr_without_objectr=   r=   r>   #test_record_array_with_object_dtypeg  s,    
z0TestPickling.test_record_array_with_object_dtyper  c                 C   s`   t jdddgdddggdd}g }tj|d|jd	}t|d
ksDttj||d}t|| d S )Nr#   r"   r   r   rH   r   r  r&   )r  r  r   r  )	r'   r   r   rt   r  r   r~   rs   r	   )rF   Zf_contiguous_arrayr  r  Zdepickled_f_contiguous_arrayr=   r=   r>   test_f_contiguous_array|  s    z$TestPickling.test_f_contiguous_arrayc                 C   sr   t dddd d d df }|jjr.t|jjr:ttdtj	d D ]"}t
tj||d}t|| qJd S )Nr'  r   r   r"   r#   r  )r'   rC   r   rJ   r  r~   r  rq   r   rr   rs   rt   r	   )rF   Znon_contiguous_arrayr  Zdepickled_non_contiguous_arrayr=   r=   r>   test_non_contiguous_array  s    "z&TestPickling.test_non_contiguous_arrayc              
   C   s   t dtjd D ]}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 qt~~~t  |D ]}| d kstqqd S )Nr"   r#   r   r   r   r   r   rs  rD   r   r  r   c                 S   s   g | ]}t |qS r=   )weakrefrefrV  rD   r=   r=   r>   rW    s     z/TestPickling.test_roundtrip.<locals>.<listcomp>r  %rr   )rq   r   rr   r'   r   r  r   r   r  r	   rs   rt   r   r~   )rF   r  r   ZDATArefsrD   rx  r=   r=   r>   test_roundtrip  s&     zTestPickling.test_roundtripc                 C   s   t j|ddS )Nlatin1)encoding)r   rs   rF   r   r=   r=   r>   _loads  s    zTestPickling._loadsc                 C   s4   d}t jddddg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   r   r  r	   rF   r   rD   r  r=   r=   r>   test_version0_int8  s    
zTestPickling.test_version0_int8c                 C   s4   d}t jddddgt jd}| |}t|| d S )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   r  r  r	   r  r=   r=   r>   test_version0_float32  s    
z"TestPickling.test_version0_float32c                 C   s2   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  s    
z!TestPickling.test_version0_objectc                 C   s4   d}t jddddgt jd}| |}t|| d S )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  r=   r=   r>   test_version1_int8  s    
zTestPickling.test_version1_int8c                 C   s4   d}t jddddgt jd}| |}t|| d S )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  r=   r=   r>   test_version1_float32  s    
z"TestPickling.test_version1_float32c                 C   s2   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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  s    
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  s    
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&   r  Tinplace)
r'   r   r  r   r  r  r   rs   rt   r	   )rF   originalZoriginal_byte_reversednewr=   r=   r>   test_datetime64_byteorder  s    z&TestPickling.test_datetime64_byteorderN)rN   rO   rP   r   r   r   r   rr   rr  rt  ru  rv  r|  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   rq  `  s(   

rq  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S )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 )Nre  r  r   r#   r#   r#   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 )Nre  r  r  r  r  r  r=   r=   r>   
test_tuple  s    

zTestFancyIndexing.test_tuplec                 C   s@   t ddddg}t ddddgt}t|| t dg d S )Nr#   r"   r   r   r   r'   r   r  r   rF   r   r  r=   r=   r>   	test_mask  s    zTestFancyIndexing.test_maskc                 C   s   t ddddgddddgg}t d	dgt}t d	dd	d	gdd	d	d	ggt}t d	dd	d	gd	d	d	d	ggt}t|| t ddddgg t|| t ddg t|| t dg d S )
Nr#   r"   r   r   rH   r   r   r   r   r  )rF   r   r  m2m3r=   r=   r>   
test_mask2  s      zTestFancyIndexing.test_mask2c                 C   sJ   t ddddg}t ddddgt}d||< t|t ddddg d S )Nr#   r"   r   r   r   rH   r  r  r=   r=   r>   test_assign_mask  s    z"TestFancyIndexing.test_assign_maskc              	   C   s  t ddddgddddgg}t d	dgt}t d	dd	d	gdd	d	d	ggt}t d	dd	d	gd	d	d	d	ggt}| }d
||< t|t ddddgd
d
d
d
gg | }d
||< t|t dd
ddgd
dddgg | }d
||< t|t dd
ddgddddgg d S )Nr#   r"   r   r   rH   r   r   r   r   rB   )r'   r   r  r  r   )rF   Zxorigr  r  r  r   r=   r=   r>   test_assign_mask2  s      $$z#TestFancyIndexing.test_assign_mask2N)	rN   rO   rP   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S )TestStringComparec                    s   t dddg t dddg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wasc                    s   g | ]} | | kqS r=   r=   rU  g1g2r=   r>   rW  &  s     z1TestStringCompare.test_string.<locals>.<listcomp>r   r#   r"   c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  '  s     c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  (  s     c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  )  s     c                    s   g | ]} | | k qS r=   r=   rU  r  r=   r>   rW  *  s     c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  +  s     r  rE   r=   r  r>   test_string#  s    zTestStringCompare.test_stringc                    s   t ddddg}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spamZspaZspammerzand eggsc                    s   g | ]}| kqS r=   r=   rX  r  r=   r>   rW  0  s     z0TestStringCompare.test_mixed.<locals>.<listcomp>c                    s   g | ]}| kqS r=   r=   rX  r  r=   r>   rW  1  s     c                    s   g | ]}| k qS r=   r=   rX  r  r=   r>   rW  2  s     c                    s   g | ]}| kqS r=   r=   rX  r  r=   r>   rW  3  s     c                    s   g | ]}| kqS r=   r=   rX  r  r=   r>   rW  4  s     c                    s   g | ]}| kqS r=   r=   rX  r  r=   r>   rW  5  s     r  )rF   r  r=   r  r>   
test_mixed-  s    zTestStringCompare.test_mixedc                    s   t dddg t dddg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 )Nr  r  r  r  c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  :  s     z2TestStringCompare.test_unicode.<locals>.<listcomp>r  c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  ;  s     c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  <  s     c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  =  s     c                    s   g | ]} | | k qS r=   r=   rU  r  r=   r>   rW  >  s     c                    s   g | ]} | | kqS r=   r=   rU  r  r=   r>   rW  ?  s     r  rE   r=   r  r>   test_unicode7  s    zTestStringCompare.test_unicodeN)rN   rO   rP   r  r  r  r=   r=   r=   r>   r  "  s   

r  c                   @   sD  e Zd Zddddddddd	d
ddddg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/d0gd1d2 Zd3S )4TestArgmaxArgminCommonr=   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   )rL  r  z
size, axisc                    s8   g | ]0  fd dt tt  t dg D qS )c                    s   g | ]} |fqS r=   r=   )rV  r  r9   r=   r>   rW  I  s   z,TestArgmaxArgminCommon.<listcomp>.<listcomp>N)r  rq   r   )rV  r=   r  r>   rW  I  s   
z!TestArgmaxArgminCommon.<listcomp>r  c              	   C   s  t jj|d}|d k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	|
|	k t||	 t|d
kr"t|}|d k	rd||< nd|d
< t j||jd}tt ||j||dd	 W 5 Q R X |d krDd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	|
|	k t||	 t|d
kr&tt ||d
 ||	dd	 W 5 Q R X t|d
krt|}|d k	rPd||< nd|d
< t j||jd}tt ||j||dd	 W 5 Q R X d S )Nr  c                 S   s   g | ]}d qS rd  r=   rV  r  r=   r=   r>   rW  S  s     zITestArgmaxArgminCommon.test_np_argmin_argmax_keepdims.<locals>.<listcomp>r#   r  Tr  keepdimsr   )r  r  r  r   r"   c                 S   s   g | ]}d qS rd  r=   r  r=   r=   r>   rW  q  s     r%   )r'   r  normalrq   r   r  r  r   r	   r   r7   r2   r   r   r  r)   r	  )rF   r9   r  r  rS   Z	new_shapeZ	_res_origZres_origrJ  ZoutarrayZres1Zwrong_shapeZwrong_outarrayr=   r=   r>   test_np_argmin_argmax_keepdimsI  s|    



 





 

 z5TestArgmaxArgminCommon.test_np_argmin_argmax_keepdimsr   minc           	   	   C   s   t jddd}t|d| }t||}t|jD ]P}||}||}tt|j}|| tt 	||j
|j|f|  k q2d S )Nr   r#   )r   rH   r   r   r   arg)r'   r  r  r|  rq   r   r  remover   r  r  r  )	rF   r  rD   
arg_methodZ
val_methodr   Za_maxminZ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   rH   r  r   r%   rz  r#   rB   rB   r  )r'   r  r|  r   r   r)   r	   )rF   r  rD   r  r  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}||ksHtd S )Nr   r  r   r   r  r  )r'   r  r|  r2   r  r~   )rF   r   r  rD   r  r  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   Znp_arrayr  r  rn  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   )r  r  )r'   r  r  r|  r*   r   r	   )rF   r"  Z	np_methodrD   r  out1out2r=   r=   r>   test_np_vs_ndarray  s    

z)TestArgmaxArgminCommon.test_np_vs_ndarrayzreplaces None with NULL.rn   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  r_   rD   r  r=   r=   r>   test_object_with_NULLs  s    
z-TestArgmaxArgminCommon.test_object_with_NULLsN)rN   rO   rP   sizesr   r   r   	itertoolschainr'   r  r  r  r  r  r  r*   r  r  r  leaks_referencesr  r=   r=   r=   r>   r  A  sV         H



r  c                   @   s  e Zd ZdddddddddddddddgdfddddddddgdfddddddddgdfddddddddgdfgZeddddd	d
ddgdfddddddd
d	g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d/d,ed0dd,edd+d,gdfed0d1d,ed0dd,ed0d/d,gdfd2d2d2d2d3gdfd2d2d2d3d2gdfd3d2d2d2d2gdfd3d2d3d2d2gdfg Zejd4ed5d6 Zd7d8 Zd9S ):
TestArgmaxr#   r   r   r"   r   rH   r   r   r  r   r   r%   c                 C   s*   g | ]"\}}t j|d  |d|d fqS r   r   r#   r"  rV  r   r   r=   r=   r>   rW    s     zTestArgmax.<listcomp>c                 C   s*   g | ]"\}}t j|d  |d|d fqS r  r"  r  r=   r=   r>   rW    s     c                 C   s*   g | ]"\}}t j|d  |d|d fqS r  r"  r  r=   r=   r>   rW    s     r   ry  '   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:03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   r1  daysseconds#      r  rB   r  FTr$   c           	   	   C   s  |\}}t  }|td t|}W 5 Q R X 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 reducerz  r      i  )
r   filterRuntimeWarningr'   r   r	   r  r  r  r?  )	rF   r$   rS   possuprn  rarrrpospaddr=   r=   r>   test_combinationsN  s"    zTestArgmax.test_combinationsc                 C   s  t jdddgt jd}tt |d |d tt |d t jdddgt jd}tt |d |d tt |d t jddd	gt jd}tt |d |d tt |d t jdd
dgt jd}tt |d |d tt |d d S )Nr#      r   r     r     r           )	r'   r   r   r	   r  r  r   r   r   r   r=   r=   r>   test_maximum_signed_integersf  s     



z'TestArgmax.test_maximum_signed_integersN)rN   rO   rP   usg_datasg_datar  productr'   r3   r   r   r   darrr   r   r   r   r  r   r  r  
datetime64timedelta64r   nan_arrr   r   r   r  r  r=   r=   r=   r>   r    s   $         $&&






;
r  c                   @   s  e Zd Zdddddddddddddddgdfddddddddgdfdddddddd	gdfd	dddddddgd	fgZeddddd
dddgdfdddddddd
g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d.d+ed/dd+edd*d+gdfed/d0d+ed/dd+ed/d.d+gdfd1d1d1d1d2gdfd1d1d1d2d1gdfd2d1d1d1d1gdfd2d1d2d1d1gdfg Zejd3ed4d5 Zd6d7 Zd8S )9
TestArgminr#   r   r   r   r"   r   rH   r   r   r  r   r   r%   c                 C   s*   g | ]"\}}t j|d  |d|d fqS r  r"  r  r=   r=   r>   rW    s     zTestArgmin.<listcomp>c                 C   s*   g | ]"\}}t j|d  |d|d fqS r  r"  r  r=   r=   r>   rW    s     c                 C   s*   g | ]"\}}t j|d  |d|d fqS r  r"  r  r=   r=   r>   rW    s     r   ry  r  r  r  r  r  r  r  r  r  r  r  r  z2014-11-20T12:20:59r  r  r  r  r  r  r  r  r   r1  r  r  r  r  rB   r  TFr$   c           	   	   C   s  |\}}t  }|td t|}W 5 Q R X 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 r  )
r   r  r  r'   r  r	   r  r  r   r?  )	rF   r$   rS   r  r  Zmin_valr  r  r  r=   r=   r>   r    s"    zTestArgmin.test_combinationsc                 C   s  t jddddgt jd}tt |d |d tt |d t jdddd	gt jd}tt |d |d tt |d t jdd
ddgt jd}tt |d |d tt |d t jddddgt jd}tt |d |d tt |d d S )Nr#   r  ir  r   r  r  ir  r  i  r  r  l r  )	r'   r   r   r	   r  r  r   r   r   r   r=   r=   r>   test_minimum_signed_integers  s     



z'TestArgmin.test_minimum_signed_integersN)rN   rO   rP   r  r  r  r  r'   r3   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   $         $&&






;
r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
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   s8   t tjtjdddgd ttjdddggddd d S )Nr#   r"   r   rp   r  )r   r'   r~  r  r	   rE   r=   r=   r>   	test_axis  s    zTestMinMax.test_axisc                 C   sv   dD ]l}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   rA  r	   r  r  )rF   r   rD   r=   r=   r>   test_datetime  s    zTestMinMax.test_datetimeN)rN   rO   rP   r  r  r	  r=   r=   r=   r>   r  
  s   	r  c                   @   s   e Zd Zdd ZdS )TestNewaxisc                 C   s<   t dddg}d|d d t jf  }t| d|  d S )Nr   gg?   )r'   r   rg  r
   r  )rF   skrJ  r=   r=   r>   
test_basic%  s    zTestNewaxis.test_basicNrN   rO   rP   r  r=   r=   r=   r>   r
  $  s   r
  c                   @   s>   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 rR   )r   r'   r  )rF   r   ZcminZcmaxr=   r=   r>   _check_range,  s    zTestClip._check_rangeFNc                 C   s   |d kr|}|d kr|}t j| D ]}tjdkr:ddg}	nddg}	|	D ]~}
t ||
}t jd| |}|r|j|||dd n|||}d}
|jjdkrd}
t	|jj|
 | 
||| qFq"|S )	Nr7  =><rp   r  r  |)r'   sctypesr:  r;  r   r  r  rA  clipr	   r  )rF   Z
type_groupZ	array_maxZclip_minZclip_maxr  expected_minZexpected_maxr	  Zbyte_ordersr;  r   r   r=   r=   r>   
_clip_type0  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  Zuint)r  r  )r  )rF   r  r=   r=   r>   r  R  sX                             zTestClip.test_basicc                 C   s:   t jddgdddgd}|d dd	}| |dd	 d S )
Nr  r  r  rC  r  r  r   r  )r   r  zr  r   r   g333333ӿr  )r'   r   r  r  )rF   r  r   r=   r=   r>   test_record_arrayc  s
    
zTestClip.test_record_arrayc              
   C   sv   t ddddddddg}|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   rH   r   r   )r  )r   )r'   r   r  r   r  )rF   rn  r   r=   r=   r>   test_max_or_mini  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   r  r  r   )rF   Z	input_arrr  r  r=   r=   r>   test_nanr  s    zTestClip.test_nan)FNN)	rN   rO   rP   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S )TestCompressc                 C   sx   dddddgg}t ddd}t jdd	g|dd
}t|| d	dgddgg}t jdd	dd	dg|d	d
}t|| d S r  r  r  r=   r=   r>   r  z  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"   rH   r   r  r  r  r=   r=   r>   test_truncate  s    zTestCompress.test_truncatec                 C   s0   t ddd}t ddg|}t|d d S )NrB   r"   rH   r   r#   r  rF   rS   r  r=   r=   r>   r    s    zTestCompress.test_flattenN)rN   rO   rP   r  r%  r  r=   r=   r=   r>   r$  y  s   
r$  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 rR   )r'   putmaskr	   r   )rF   r   r	  maskrn  r=   r=   r>   	tst_basic  s    zTestPutmask.tst_basicc              	   C   s   t ttjg}tjdd }|dk }dD ]}tj D ]X}|D ]N}||kr>|dk rrt|jdkrrt	|j
d }| | |||| q>q6td}| |||j|||d d	  q(d S )
Nrp   r  rb  )r   rt  r   r=  c   S3r   )rw   r   r'   rp  r  r  rj   r   r{  r  r   r*  r  rA  rU  )rF   unchecked_typesr   r)  rn  ri   r	  r  r=   r=   r>   test_ip_types  s    
zTestPutmask.test_ip_typesc                 C   s$   t ttjtdddgdgd d S )Nr#   r"   r   TrH   )r   r)   r'   r(  r   rE   r=   r=   r>   test_mask_size  s    zTestPutmask.test_mask_sizer   rJ  rI  c                 C   s:   t dddg|}t |dddgd t|dddg d S )Nr#   r"   r   TFr%   r'   r   r(  r   rF   r   r   r=   r=   r>   test_byteorder  s    zTestPutmask.test_byteorderc                 C   s   t jddgdddg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   r  r  r   r   TFrB   rH   r   r"   r   r  r   r  r2  )rF   r  r=   r=   r>   r    s    
zTestPutmask.test_record_arrayc                 C   s   t ddddg}t |dd dddg|d d  t|t ddddg t ddddg}t |dd |d d dddg t|t ddddg d S )NTFr#   r   r   )r'   r   r(  r	   r  r=   r=   r>   test_overlaps  s    $$zTestPutmask.test_overlapsc              	   C   s>   t d}d|j_tt t ||dkd W 5 Q R X d S )NrH   Fr"   r   )r'   rC   rJ   rK   r   r  r)   r(  r   r=   r=   r>   rL     s    
zTestPutmask.test_writeableN)rN   rO   rP   r*  r/  r0  r   r   r   r4  r  r6  rL   r=   r=   r=   r>   r'    s   

r'  c                   @   sv   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dddgdd ZdS )TestTakec                 C   s*   t t|jd }t|j|dd| d S )Nr   r  )r  rq   r7   r   take)rF   r   r  r=   r=   r>   r*    s    zTestTake.tst_basicc                 C   sl   t ttjg}tjdd }d|_tj D ]:}|D ] }||kr4| |	 
| q4| |
d q,d S )Nr  r  r  r-  )rw   r   r'   rp  r  r7   r  rj   r*  r  rA  )rF   r.  r   ri   r	  r=   r=   r>   r/    s    zTestTake.test_ip_typesc                 C   sd   t jdd }d|_tt|jdddgdd tt|jdgdd t|jd	gddd |d  d S )
Nr  r  r  r   r#   r"   r  r   r%   )r'   r  r7   r   rY  r8  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 )
Nr  r  r  r%   r   r  r  r  r"   r#   r'   r  r7   r   r8  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 )Nr  r  r  r%   r   r  r:  r#   r"   r   r;  r  r=   r=   r>   	test_wrap  s
      zTestTake.test_wrapr   r1  c                 C   s2   t dddg|}t|dddgdddg d S )Nr#   r"   r   r   )r'   r   r   r8  r3  r=   r=   r>   r4    s    zTestTake.test_byteorderc                 C   sD   t jddgdddgd}|dg}t|d d	ko<|d
 dk d S )Nr  r  r  r5  r  r   r#   r   rC  r   r  )r'   r   r8  r   )rF   r  Zrec1r=   r=   r>   r    s
    
zTestTake.test_record_arrayc                 C   sD   t d}t j|dddg|dd dd}t|t dddg d S )NrH   r#   r"   r   r  r  )r'   rC   r8  r	   r   ro  r=   r=   r>   test_out_overlap  s    
 zTestTake.test_out_overlapr7   r  rd  r=   c                 C   sJ   t d}t j|t jd}t j||jd}t j|||d}||ksFtd S )NrH   r   r  )r'   rC   r*   r  r   r8  r~   )rF   r7   r   indsr  r  r=   r=   r>   r    s
    
zTestTake.test_ret_is_outN)rN   rO   rP   r*  r/  r9  r<  r=  r   r   r   r4  r  r>  r  r=   r=   r=   r>   r7    s   
r7  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   sz   t jddddddg|d}t jddddddg|d}t ||f}t ddddddg}t|| t|| t | d S )	Nr#   r"   r   rH   r   r   r   r   )r'   r   lexsortr   r  )rF   r   rD   r   r  expected_idxr=   r=   r>   r    s    
zTestLexsort.test_basicc                 C   sb   t ddddddg}t jddddddgdd	}t ||f}t ddddddg}t|| d S )
Nr#   r"   r   rH   r   r   r   r   r   r'   r   rA  r   rF   rD   r   r  rB  r=   r=   r>   r    s
    zTestLexsort.test_mixedc                 C   s   t jdddgdd}t jdddgdd}t ||f}t dddg}t|| t jdddgdd}t jdddgdd}t ||f}t dddg}t|| d S )Nr   r   r   r"   r#   r  rC  rD  r=   r=   r>   r	  '  s    
zTestLexsort.test_datetimec              	   C   s   t jdd}t jddddddgd}||fD ].}t |d	f}t j|d
d}t|| q0||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 qpd S )NrB   rp   abcZxyZwzZefghiZqwstr   r  Z	mergesortr  r(   r   )r'   r  choicerA  rA  r  r   r   )rF   rD   r   r=  rF  rI  rx   r  r=   r=   r>   test_object4  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'   rc  r   r   r~  rA  r  r=   r=   r>   test_invalid_axisD  s    zTestLexsort.test_invalid_axisN)rN   rO   rP   r   r   r   r'   r3   r   r   r   r   r   r   r   r  r  r   r  r  r	  rG  rI  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   rs  r   r#   )r'   r  rA  r  r  inf)rF   r7   r  r   r=   r=   r>   r   K  s
    $zTestIO.xstringZpath_obj)paramsc                 c   s$   |d }|j dkrt|}|V  d S )NfilerL  )r  r   )rF   Ztmp_pathrequestfilenamer=   r=   r>   tmp_filenameS  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 rR   tofiler   r   r=   r>   r0  c  r1  z$TestIO.test_nofile.<locals>.<lambda>)r!  r"  r   OSErrorr'   fromfiler3   r  r  r=   rT  r>   test_nofile]  s    
zTestIO.test_nofilec                 C   s8   t jddddgt jd}t jddt jd}t|| d S )NTFr   z1 0 -2.3 0.0 sepr   )r'   r   rN  rg   r   )rF   rx   r   r=   r=   r>   test_bool_fromstringe  s    zTestIO.test_bool_fromstringc                 C   s4   t jdt jdd}t jddgt jd}t|| d S )Nz#9923372036854775807 104783749223640rX  r   rZ  l   *M    M<3} r   )r'   rg   r   r   r   r  r=   r=   r>   test_uint64_fromstringj  s     zTestIO.test_uint64_fromstringc                 C   s4   t jdt jdd}t jddgt jd}t|| d S )Nz-25041670086757 104783749223640rX  r\  le o[r]  r   )r'   rg   r   r   r   r  r=   r=   r>   test_int64_fromstringp  s     zTestIO.test_int64_fromstringc                 C   s&   t jddt jdd}|jdks"td S )Nz1,2,r   )rZ  r   countr  )r'   rg   r   r7   r~   r  r=   r=   r>   test_fromstring_count0v  s    zTestIO.test_fromstring_count0c              	   C   s4   t |d}W 5 Q R X t|}t|jdkd d S )Nr   r   Array not emptyopenr'   rV  r   r9   rF   rQ  r   r   r=   r=   r>   test_empty_files_textz  s    

zTestIO.test_empty_files_textc              	   C   s8   t |d}W 5 Q R X tj|dd}t|jdkd d S )NwbrX  rZ  r   rc  rd  rf  r=   r=   r>   test_empty_files_binary  s    
zTestIO.test_empty_files_binaryc              	   C   sV   t |d}|| W 5 Q R X t |d}tj||jd}W 5 Q R X t||j d S )Nrh  rbr   )re  rS  r'   rV  r   r   ra  rF   r   rQ  r   r   r=   r=   r>   test_roundtrip_file  s
    zTestIO.test_roundtrip_filec                 C   s*   | | tj||jd}t||j d S r  )rS  r'   rV  r   r   ra  )rF   r   rQ  r   r=   r=   r>   r|    s    
zTestIO.test_roundtripc                 C   s0   t |}|| tj|dd}t|| d S )NT)Zallow_pickle)pathlibPathdumpr'   r%  r   )rF   r   rQ  r  r   r=   r=   r>   test_roundtrip_dump_pathlib  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  )r  r'   rc   r   r   ra  r  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@ri  rH   decimal)
rt  r  rX  r  r   r'   rg   isfiniter   r   )rF   r   r   r   Z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 )Nrt  ri  )rt  r  rX  r  r2  r'   rg   r   rr  r=   r=   r>   test_roundtrip_repr  s    
zTestIO.test_roundtrip_reprc              	   C   sR   | | dd }tj|ddd&}||_||_tttj||j	d W 5 Q R X d S )Nc                  _   s   t dd S )NzCan not tell or seek)rU  r  r=   r=   r>   fail  s    z-TestIO.test_unseekable_fromfile.<locals>.failrk  r   	bufferingr   )
rS  r!  re  r$  tellr   rU  r'   rV  r   )rF   r   rQ  rz  r   r=   r=   r>   test_unseekable_fromfile  s    
zTestIO.test_unseekable_fromfilec              	   C   sF   | | tj|ddd"}tj||jd}t||j W 5 Q R X d S )Nrk  r   r{  r   rS  r!  re  r'   rV  r   r   ra  rl  r=   r=   r>    test_io_open_unbuffered_fromfile  s    
z'TestIO.test_io_open_unbuffered_fromfilec              	   C   s   t d}|| ttj||j t|t 	| t
|d4}||j || ttj||jd  W 5 Q R X t
|d  t
|d}|| W 5 Q R X t|t 	| t
|d}|| W 5 Q R X ttj||jd  d S )Ni  @ r+br"   r   rB  )r'   r*   rS  r	   ospathgetsizer   r   rV  re  r$  close)rF   rQ  r   r   r=   r=   r>   test_largish_file  s    


"zTestIO.test_largish_filec              	   C   sF   | | tj|ddd}tj||jd}W 5 Q R X t||j d S )Nrk  r%   r{  r   r  rl  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 5 Q R X dD ]X}d||f }t||*}|d tj|tjdd |	 }W 5 Q R X t
|d	|d
 qRqd S )Nr   rh  r#       )rk  r  z%d %sr"   r   ra  rB   r   )r!  DEFAULT_BUFFER_SIZEre  r$  r]   readr'   rV  r   r}  r	   )rF   rQ  r  r9   r   r  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R}||d  |d |d |d tjdgtjd	| |	 }W 5 Q R X t
|d
|d t|d<}|d |dd tjdgtjd	| |	 }W 5 Q R X t
|d|d qd S )Nr   z%drh  r#   r  rB   s   12r   r   r   r   r  r"   )r!  r  re  r$  r]   r'   r   r   rS  r}  r	   r  )rF   rQ  r  r9   r   r   r  r=   r=   r>   test_file_position_after_tofile  s(    




z&TestIO.test_file_position_after_tofilec              	   C   sX   t |d}W 5 Q R X t |d}ttdtj|td W 5 Q R X ttdtj|td d S )Nr   rk  zCannot read into object arrayr   )re  r   r)   r'   rV  r(   )rF   rQ  r   r=   r=   r>   test_load_object_array_fromfile  s    
    z&TestIO.test_load_object_array_fromfilec           	   
   C   sL  t |d}|| W 5 Q R X t |d$}tj||jdd}t||j W 5 Q R X t |d}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 5 Q R X t |d}|j|d	d
 W 5 Q R X t |d }t	t
dtj||jd	dd W 5 Q R X d S )Nrh  rk  r   )r   r<   r   r   )r   ra  r<   r#   r`  ri  z1'offset' argument only permitted for binary files)r   rZ  r<   )re  rS  r'   rV  r   r   ra  r   r1   r   r   )	rF   r   rQ  r   r   Zcount_itemsZoffset_itemsZoffset_bytesr  r=   r=   r>   test_fromfile_offset  sD        &   zTestIO.test_fromfile_offsetz bug in PyPy's PyNumber_AsSsize_trn   c           	   	   C   sv   dd }dd }t j}zRt|d>}|| |tf|tffD ]\}}|t _t|tj| q>W 5 Q R X W 5 |t _X d S )Nc                 S   s   dS )NrE  r=   fdr=   r=   r>   dup_str=  s    z-TestIO.test_fromfile_bad_dup.<locals>.dup_strc                 S   s   dd S )Nr"   D   r=   r  r=   r=   r>   
dup_bigint@  s    z0TestIO.test_fromfile_bad_dup.<locals>.dup_bigintrh  )	r  dupre  rS  r   rU  r   r'   rV  )	rF   r   rQ  r  r  Zold_dupr   r  excr=   r=   r>   test_fromfile_bad_dup;  s    
zTestIO.test_fromfile_bad_dupc              	   K   sl   d|krt j|f|}nt j|f|}t|| t|d}|| W 5 Q R X t j|f|}t|| d S )NrZ  rh  )r'   rc   rg   r   re  r]   rV  )rF   r   r   rP  r4  r   r   r=   r=   r>   _check_fromM  s    
zTestIO._check_fromperiodcommac              	   c   sH   |j dkrdV  n2|j dkr6t  dV  W 5 Q R X ndsDt|j dS )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  F)r  r   r~   )rF   rO  r=   r=   r>   decimal_sep_localizationY  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_)rX  ri  )r  r'   r  rF   rQ  r  r=   r=   r>   r#  u  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 -inFrX  ri  )r  r'   rK  r  r=   r=   r>   test_inf|  s    $zTestIO.test_infc                 C   s    | j ddddddg|dd d S )	Ns'   1.234 -1.234 .3 .3e55 -123133.1231e+133X9v?gX9vg333333?g.LKR?KgY]xrX  ri  r  r  r=   r=   r>   test_numbers  s    zTestIO.test_numbersc                 C   s$   | j dtddddg|dd d S )Ns     ?   @  @@  @r#   r"   r   r   r  r   )r  r'   r   rF   rQ  r=   r=   r>   test_binary  s    zTestIO.test_binaryc              	   C   s   t jdksdt jkrdS zd}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 n ttfk
r   Y nX dS )zTest workarounds for 32-bit limit for MSVC fwrite, fseek, and ftell

        These normally would hang doing something like this.
        See : https://github.com/numpy/numpy/issues/2256
        win32z[GCC Nl       r   r   r   )r:  platformrn  r'   rC   r   r   tempfileNamedTemporaryFilerN  r  r   rS  r$  rV  r  r   r  MemoryErrorr)   )rF   Z
fourgbplusZ	testbytesrm  Zfliker   rD   r=   r=   r>   test_big_binary  s"    
zTestIO.test_big_binaryc                 C   s   | j dddddg|dd d S )N   1,2,3,4r   r  r  r  r`  ri  r  r  r=   r=   r>   r    s    zTestIO.test_stringc                 C   sV   | j dddddg|ddd | j ddddg|d	dd | j dddddg|d
dd d S )Nr  r   r  r  r  r   r`  )ra  rZ  r   r%   r  r  r=   r=   r>   test_counted_string  s*     
        
   zTestIO.test_counted_stringc                 C   s    | j dddddg|tdd d S )N   1 2  3     4   r#   r"   r   r   rX  r\  r  r   r  r=   r=   r>   test_string_with_ws  s     
   zTestIO.test_string_with_wsc                 C   s    | j ddddg|dtdd d S )Nr  r#   r"   r   rX  )ra  r   rZ  r  r  r=   r=   r>   test_counted_string_with_ws  s        z"TestIO.test_counted_string_with_wsc                 C   s:   | j dddddg|dd | j dddddg|tdd	 d S )
Ns   1 , 2 , 3 , 4r   r  r  r  r`  ri  r  r\  )r  r  r  r=   r=   r>   
test_ascii  s     
   
   zTestIO.test_asciic              	   C   s.   t t | jdddg|dd W 5 Q R X d S )Ns   1.234 1,234r  r   rX  ri  )r   r   r  r  r=   r=   r>   test_malformed  s    
   zTestIO.test_malformedc                 C   s   | j dddddg|dd d S )Ns   1_x_3_x_4_x_5r#   r   r   rH   Z_x_ri  r  r  r=   r=   r>   test_long_sep  s     
  zTestIO.test_long_sepc                 C   s2   t jddddgt jd}| jd||dt jd d S )	Nr#   r"   r   r   r   r  r`  rY  )r'   r   r   r  )rF   rQ  rx   r=   r=   r>   
test_dtype  s    zTestIO.test_dtypec              	   C   sj   t jddddgt jd}d}t|d}|| W 5 Q R X t j|dt jd}t|jdk t|| d S )	NTFr   s
   1,0,-2.3,0rh  r`  rY  rV  )	r'   r   rN  re  r]   rV  r   r   r   )rF   rQ  rx   r   r   r   r=   r=   r>   test_dtype_bool  s    zTestIO.test_dtype_boolc              	   C   s   t jddddgtd}t|d}|j|dd W 5 Q R X t|d	}| }W 5 Q R X t d
d |dD }t|| d S )N)\(?r"   Gz@r   r   r   r`  ri  r   c                 S   s   g | ]}t |qS r=   )r  )rV  r  r=   r=   r>   rW    s     z*TestIO.test_tofile_sep.<locals>.<listcomp>)r'   r   r  re  rS  r  splitr   )rF   rQ  r  r   r   r   r   r=   r=   r>   test_tofile_sep  s    zTestIO.test_tofile_sepc              	   C   sh   t jddddgtd}t|d}|j|ddd	 W 5 Q R X t|d
}| }W 5 Q R X t|d d S )Nr  r"   r  r   r   r   r`  z%.2f)rZ  r  r   z1.51,2.00,3.51,4.00)r'   r   r  re  rS  r  r	   )rF   rQ  r  r   r   r   r=   r=   r>   test_tofile_format  s    zTestIO.test_tofile_formatc              	      sd   t jdtdtd tt fdd W 5 Q R X t ttfdd t d S )NrB   r   rh  c                      s   j  ddS )Nr\  ri  rR  r=   )r   r   r=   r>   r0    r1  z,TestIO.test_tofile_cleanup.<locals>.<lambda>c                      s
     S rR   rR  r=   )rQ  r   r=   r>   r0    r1  )r'   r*   r(   re  r   rU  r  r  r  r=   )r   rQ  r   r>   test_tofile_cleanup  s    
zTestIO.test_tofile_cleanupc              	   C   sr   t jdddddd}|| t j|dd}t|| | }tt t j	|dd}t|| W 5 Q R X d S )Nr  r   r   r"   r   r   z(3,4)i4)
r'   rC   r   rS  rV  r   r  r   r   rg   )rF   rQ  r   rJ  Zx_strr=   r=   r>   test_fromfile_subarray_binary  s    


z$TestIO.test_fromfile_subarray_binaryc              	   C   st   d}t t tj|ddd}W 5 Q R X t|d}|| W 5 Q R X t t tj|ddd W 5 Q R X 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'   rg   re  r]   rV  )rF   rQ  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 5 Q R X W 5 Q R X |
| 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   rg   rS  rV  r   )rF   rQ  r  binaryrJ  r=   r=   r>   %test_read_shorter_than_count_subarray  s    $
z,TestIO.test_read_shorter_than_count_subarrayN)8rN   rO   rP   r  r   Zfixturer   rQ  rW  r[  r^  r_  rb  rg  rj  rm  r|  rq  rs  rx  ry  r~  r  r  r  r  r  r  r  r   r   r   r  r  r  r#  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   rJ  H  sh   

			"




rJ  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;  r  r  r   c                 C   sH   t ||}t jdd |}| }tt j||d|j d S )N)r   r   rH   r   )	r'   r   r  r  rA  r  r   rc   ra  )rF   r;  r   r  r   r:   r=   r=   r>   r  $  s    zTestFromBuffer.test_basicr   rB   s   12345678c                 C   s   t |}|j|kstd S rR   )r'   rc   rv   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 )Nr1  )r   r'   rc   r   rE   r=   r=   r>   
test_empty4  s    zTestFromBuffer.test_emptyzjPyPy's memoryview currently does not track exports. See: https://foss.heptapod.net/pypy/pypy/-/issues/3724rn   c              
   C   sv   t jdd`}|d |  t| d}tj|tjd}t	
t |  W 5 Q R X ~|  W 5 Q R X d S )Nrh  )r  s   asdfr   r   )r  TemporaryFiler]   flushmmapfilenor'   rc   r3   r   r  BufferErrorr  )rF   r'  mmrS   r=   r=   r>   test_mmap_close7  s    
zTestFromBuffer.test_mmap_closeN)rN   rO   rP   r   r   r   r  r   r  r  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   rH   r   Fr"   )
r'   rC   r   r7   rJ   rK   rD   r   rO  rP  )rF   rO  rD   r=   r=   r>   rG   I  s    
zTestFlat.setup_methodc                 C   sN   d}zd| j jd< W n tk
r,   d}Y nX t| t| j jd dk d S )NF      Y@r'  T      (@)rD   ra  r)   r   rF   Z
testpassedr=   r=   r>   test_contiguousS  s    
zTestFlat.test_contiguousc                 C   sN   d}zd| j jd< W n tk
r,   d}Y nX t| t| j jd dk d S )NFr  r   Tr  )r   ra  r)   r   r  r=   r=   r>   test_discontiguous\  s    
zTestFlat.test_discontiguousc                 C   s   | j j }| jj }| jj }| jj }t|jjdk t|jjdk t|jjdk t|jjdk t|jj	dk t|jj	dk t|jj	dk t|jj	dk d S )NFT)
rD   ra  r~  r   rO  rP  r   rJ   rK   r   )rF   r  r   r   r   r=   r=   r>   test___array__e  s    zTestFlat.test___array__zPython lacks refcountsrn   c              
   C   s   t dt dg| jj t dgd g}t t j}t|}|D ]v}t|}tdD ]*}z| jj	|  W qZ t
k
r   Y qZX qZttt|| dk  ttt|| dk  qDd S )Nr   Tr  rk  )r'   r  r   rD   r9   r   r:  r  rq   ra  rY  r   r[  )rF   r?  ZindtypeZ
rc_indtyper  Zrc_indr  r=   r=   r>   test_refcountt  s    *

zTestFlat.test_refcountc              	   C   sR   t ddddj}tt d|_W 5 Q R X |D ]}q6|j|jj	ksNt
d S )NrB   r"   r#   rH   )r'   rC   r   ra  r   r  r+  r  rv   r9   r~   )rF   itr  r=   r=   r>   test_index_getset  s    zTestFlat.test_index_getsetN)rN   rO   rP   rG   r  r  r  r   r   r   r   r  r  r=   r=   r=   r>   r  H  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 dddgdddgdddgg}tr6|jddd n
|d t|jd d t dddgdddgdddggj t|dd  jd d S )Nr#   r   rH   rH   FZrefcheckr   )r'   r   r   r  r   ra  r  r=   r=   r>   r    s    "
"zTestResize.test_basicc                 C   s:   t dddgdddgdddgg}|}tt|jd ~d S Nr#   r   )rH   r#   )r'   r   r   r)   r  ro  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   rd  r=   r#   )rq   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   rt  Fr  )rt  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   Zx_viewr=   r=   r>   test_empty_view  s    
zTestResize.test_empty_viewc                 C   s@   t dddgdddgdddgg}t|}tt|jd ~d S r  )r'   r   rw  rx  r   r)   r  )rF   r   Zxrefr=   r=   r>   test_check_weakref  s    "
zTestResize.test_check_weakrefN)rN   rO   rP   r   r  r  r  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r    s    




	
r  c                   @   sd   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   s   dd }t t| d S )Nc                   S   s   t dddg d S )N)r  r  r[   r  r  r=   r=   r=   r>   test_dtype_init  s    zGTestRecord.test_multiple_field_name_occurrence.<locals>.test_dtype_initr   r)   )rF   r  r=   r=   r>   #test_multiple_field_name_occurrence  s    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dddg|d}t t|jd |d }t t|jd d S )	Nrh  )r   rh  )rh  r   rd  rn  r  r   r   )r   r   r'   r   r   r8  r   rY  )rF   r  r   r   r=   r=   r>   test_bytes_fields   s    zTestRecord.test_bytes_fieldsc                 C   s   dd }t t| d S )Nc                   S   s   t dddg d S )N)u   ₹r  r  r  r=   r=   r=   r>   test_dtype_unicode  s    zGTestRecord.test_multiple_field_name_unicode.<locals>.test_dtype_unicoder  )rF   r  r=   r=   r>    test_multiple_field_name_unicode  s    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/  r0  rD   r   )r'   re   rf   r9  r	   r  r=   r=   r>   test_fromarrays_unicode  s    
  z"TestRecord.test_fromarrays_unicodec                 C   sH   d}t jdddg|tfgd}|j|d t|d t dddg d S )Nr   r#   r   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 )Nrd  )r   r   )f2r   Zf3)sf1r   r   s   f1r#   r   s   sf1z
not at allr"   r   r  r  r   r   r  )r"   rd  u   Ϡ)r'   r*   r   rY  __setitem__r8  r  r   r	   r)   re  )rF   rD   r   Zfn1ZfnnZfn3Zsfn1Z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o|d |d k d S )
Nr  i1,i2r   Fr  )Znum1r  )Znum2r  r   r#   )r'   r   rJ   rK   r   r   r  r=   r=   r>   test_record_hashO  s    zTestRecord.test_record_hashc                 C   s&   t jddgdd}ttt|d  d S )Nr  r  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dddddgg g g ddd d S )Nr=   r'  r/  r0  r1  r1   r   r"  rE   r=   r=   r>   test_empty_structure_creation_  s     
 z(TestRecord.test_empty_structure_creationc                 C   sx   t jddddgd}|ddg }t|j|k 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#   rH   )r'   r  r   rv   r   r	   r^  )rF   rD   rx   r=   r=   r>   test_multifield_indexing_viewf  s    z(TestRecord.test_multifield_indexing_viewN)rN   rO   rP   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d ZdS )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  )rH   r   r   r   r   r  r   rD   r   rI  ii)r'   r   r   rW   r   )rF   r   r   r  r=   r=   r>   r  q  s    
 

zTestView.test_basicNr  r=   r=   r=   r>   r  p  s   r  c                 K   s   | j f |S rR   )meanrD   r  r=   r=   r>   _mean}  s    r  c                 K   s   | j f |S rR   )varr  r=   r=   r>   _var  s    r   c                 K   s   | j f |S rR   )stdr  r=   r=   r>   _std  s    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   rs  c                 S   s   g | ]}t t|qS r=   )r   r2  )rV  r   r=   r=   r>   rW    s     z*TestStats.setup_method.<locals>.<listcomp>r   rH   )
r'   r  r  rq   rmatcmatr   ra  omatr   rE   r=   r=   r>   rG     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	   r  r  r  r  r=   r=   r>   test_python_type  s    zTestStats.test_python_typec                 C   sz   t d}| jD ]d}dD ]4}|||dd}t|j|jk t|j| dk qdD ] }|||dd}t|jdk qRqd S )Nr   r  Tr  r#   rR   re  )r'   r  funcsr   r   r7   )rF   matr   r  rJ  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   r  r
  rJ  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||k t||d d}t|tk q| jD ]Z}|D ]P}t jd|d}t j	}||ddjj}t||k ||d djj}t||k qqt
fD ]\}|D ]R}t jd|d}|jj}||ddjj}t||k ||d djj}t||k qqttfD ]b}|D ]V}t jd|d}|jjj}||ddjj}t||k ||d djj}t||k qPqHd S )Nr  r  r#   r   r  r   )r'   r  r  r   r   r   rU  r   r  r   r  r   r  rt  )rF   r  r  r   r	  r
  rJ  r  r=   r=   r>   test_dtype_from_input  sB    





zTestStats.test_dtype_from_inputc                 C   sr   t d}| jD ]\}t jd D ]L}t |j}||d|djj}t||k ||d |djj}t||k qqd S )Nr   r  r#   )r  r   )r'   r  r  r  r   rU  r   )rF   r	  r   r  r
  rJ  r=   r=   r>   test_dtype_from_dtype  s    

zTestStats.test_dtype_from_dtypec                 C   s   t fD ]H}tdD ]:}| jjd }|| jdd| }|| jd|d||  }qqtfD ]h}tdD ]Z}| jjd }|| jddt| }|| jd|dt||  }t|| t|| qbqVd S )Nr   r#   r  r  ddof)r   rq   r  r7   r  r'   sqrtr
   )rF   r   r  r  r
  rJ  r=   r=   r>   	test_ddof  s    


zTestStats.test_ddofc                 C   s   | j jd }ttfD ]}t||d D ]l}tjddV}td || j d|d}t|dk 	   tt
|dk tt|d jt W 5 Q R X q&qd S )Nr#   r"   Tr   r   r  r   )r  r7   r   r  rq   r   r   r   r   r  r   r  categoryr  )rF   r  r   r  r   rJ  r=   r=   r>   test_ddof_too_big  s    
zTestStats.test_ddof_too_bigc                 C   s   t d}| jD ]}dD ]d}tjddN}td tt |||d  tt	|dk tt
|d jt W 5 Q R X qdD ]>}tjdd(}td t|||dt g  W 5 Q R X qqd S )	Nr  r  Tr   r   r  r   rd  )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 ]r}dD ]0}|j|d}t||d|j|  }t|| qdD ]2}|j|d}t||dt|j }t|| qNqd S )Nr  r  rR   )	r  r  r  r  r  r7   r
   r'   r  rF   r	  r  r
  rJ  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 )NrU  r  r   r#   )r   r  r'   r  rE   r=   r=   r>   test_mean_float160  s    zTestStats.test_mean_float16c              	   C   s0   t tjjj tdjdd W 5 Q R X d S NrB   r"   r  )r   r'   re   r  r~  rC   r  rE   r=   r=   r>   test_mean_axis_error5  s    zTestStats.test_mean_axis_errorc              	   C   s  t dd}t ddddgddddgddddgddddgg}t dgdgdgdgg}dddddd	gfd
|ddddgfd|ddddgfd
|ddddgfg}|D ]@\}}}t|j||dt | tt j|||dt | qt dd}t ddddg}	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 5 Q R X tt}
t
|jddt j	 W 5 Q R X tt}
t
t j|ddt j	 W 5 Q R X d S )Nr   )r   r   FTr#   r  g      @g      #@g      +@r         @rC        $@rl  r  g      !@g      -@      @r  r  r"   r"   r   r"   r  )r'   rC   r   r   r   r  r   r  r  r  r	   rF   rD   r  Z
wh_partial_casesr  _wh_resa3d_wh_partialr   r=   r=   r>   test_mean_where;  sP    


zTestStats.test_mean_wherec                 C   sj   | j | j| jfD ]T}dD ]J}t||  |d}t||d}|||   }t||d}t|| qqd S Nr   r#   Nr  )r  r  r  r  r  r  r   r
   rF   r	  r  msqrr  r
  rJ  r=   r=   r>   test_var_values_  s    zTestStats.test_var_values)complex_dtypendec))r  r   )r  r   )r  r   c           	      C   sh   dD ]^}| j  |}t||  |d}t||d}|||   }t||d}t|||d qd S )Nr%  r  ru  )r  r  rA  r  r  r  r   r
   )	rF   r)  r*  r  r	  r'  r  r
  rJ  r=   r=   r>   test_var_complex_valuesh  s    z!TestStats.test_var_complex_valuesc                 C   sf   t | jgd }dD ]J}t||  |d}t||d}|||   }t||d}t|| qd S )Nr   )r   r#   r"   r%   Nr  )r'   stackr  r  r  r  r   r
   r&  r=   r=   r>   test_var_dimensionsw  s    zTestStats.test_var_dimensionsc                 C   s6   | j  d}||j }t| |  d S )Nr  )r  r  rA  r   r  r
   r  )rF   r  Zcmat_swappedr=   r=   r>   test_var_complex_byteorder  s    z$TestStats.test_var_complex_byteorderc              	   C   s0   t tjjj tdjdd W 5 Q R X d S r  )r   r'   re   r  r~  rC   r  rE   r=   r=   r>   test_var_axis_error  s    zTestStats.test_var_axis_errorc                 C   s  t dd}t dddddgdddddgdddddgdddddgdddddgg}t dgdgdgdgdgg}dddddddgfdddddddgfg}|D ]@\}}}t|j||d	t | tt j|||d	t | qt d
d}t ddddg}	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 5 Q R X tt}
t	t j|ddt j
 W 5 Q R X d S )Nr7  r  FTr   g      I@r#   r  r  r   r  r  r"   rH   r   r  r  )r'   rC   r   r   r   r  r   r  r  r	   r  r  r=   r=   r>   test_var_where  sT    zTestStats.test_var_wherec                 C   sL   | j | j| jfD ]6}dD ],}tt||d}t||d}t|| qqd S r$  )r  r  r  r'   r  r   r  r
   r  r=   r=   r>   test_std_values  s
    zTestStats.test_std_valuesc                 C   sx  t ddd d d }t dddddgdddddgdddddgdddddgdddddg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 dddddgfd|dt d fg}|D ]4\}}}t|j||d| tt j|||d| qt dd}t ddddg}	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 5 Q R X tt	}
t
t j|ddt j W 5 Q R X d S )Nr7  r  r%   FTr   gMH@rH   r#   g'e?gevT@gfvT @rC  g@g,I\) @rD  r  r   r  r  r"   r0  r  r  )r'   rC   r   r   r  r   r  r   r  r  r	   r  )rF   rD   ZwhfZwhpr  r  r  r   r!  r"  r   r=   r=   r>   test_std_where  s`    zTestStats.test_std_wherec                 C   s   G dd dt j}|ddddgddd	d
ggd}|d}t|j|jk |d}t|j|jk |d}t|j|jk d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z*TestStats.test_subclass.<locals>.TestArrayc                 S   s   t |}|| }||_|S rR   )r'   r   rW   info)clsr$   r4  r  r=   r=   r>   __new__  s    

z2TestStats.test_subclass.<locals>.TestArray.__new__c                 S   s   t |dd| _d S )Nr4  r\  )r|  r4  r  r=   r=   r>   __array_finalize__  s    z=TestStats.test_subclass.<locals>.TestArray.__array_finalize__N)rN   rO   rP   r6  r7  r=   r=   r=   r>   	TestArray  s   r8  r#   r"   r   r   rH   r   r   r   Zjubba)r'   r6   r  r   r4  r  r  )rF   r8  ZdatrJ  r=   r=   r>   test_subclass  s    



zTestStats.test_subclassN) rN   rO   rP   r  r   r  r  rG   r  r
  r  r  r  r  r  r  r  r  r  r#  r(  r   r   r   r+  r-  r.  r/  r1  r2  r3  r9  r=   r=   r=   r>   r    s0   
1$	

%,r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestVdotc                 C   s   t jd t jd  }t jd }t d}|d D ]:}||}t ||}tt | tt ||d q0t dd }|d D ]:}||}t ||}tt | tt ||d qt jdtd}t ||}tt | tt ||d d S )	Nr  r  r  r   r  rs  r   T)	r'   r  r  rA  vdotr   Zisscalarr	   r  )rF   Z
dt_numericZ
dt_complexrD   r  r   rJ  r=   r=   r>   r    s$    



zTestVdot.test_basicc                 C   sz   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   rJ  r=   r=   r>   test_vdot_array_order  s    zTestVdot.test_vdot_array_orderc                 C   s2  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"   rp   r"   r   r#   .r   r  )r'   r*   rC   r	   r;  r  r  )rF   r9   rD   r   r=   r=   r>   test_vdot_uncontiguous   s,    
zTestVdot.test_vdot_uncontiguousN)rN   rO   rP   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
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.d/ Z d0S )1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 )NrL  r   r"   r#   r   )
r'   r  r  r  r  rQ  b2b3b4r=  rE   r=   r=   r>   rG   8  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-?ru  )r  r'   r  r  r   r
   r=  )rF   r  rJ  r
  r=   r=   r>   test_dotmatmatA  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с?ru  )r  rQ  r'   r  r   r
   r=  )rF   r  rQ  rJ  r
  r=   r=   r>   test_dotmatvecH  s     zTestDot.test_dotmatvecc                 C   s@   | j | j }}t||}tddddg}t||| jd d S )NgHo?gĊ"?g-P?gNz?ru  )r  rB  r'   r  r   r
   r=  )rF   r  rB  rJ  r
  r=   r=   r>   test_dotmatvec2O  s    zTestDot.test_dotmatvec2c                 C   s<   | j | j }}t||}tddg}t||| jd d S Ngة[?g?ru  )r  rD  r'   r  r   r
   r=  rF   r  rD  rJ  r
  r=   r=   r>   test_dotvecmatU  s    zTestDot.test_dotvecmatc                 C   sF   | j | j }}t|| }tddddgg}t||| jd d S )Ngoc?gTbi\?g2r?gb?ru  )rC  r  r'   r  r  r   r
   r=  )rF   rC  r  rJ  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 rH  )r  rD  r'   r  r  r   r
   r=  rI  r=   r=   r>   test_dotvecmat3a  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?ru  rQ  rC  r'   r  r   r
   r=  rF   rQ  rC  rJ  r
  r=   r=   r>   test_dotvecvecouterg  s    zTestDot.test_dotvecvecouterc                 C   s<   | j | j }}t||}tdgg}t||| jd d S )Ng".!?ru  rM  rN  r=   r=   r>   test_dotvecvecinnerm  s    zTestDot.test_dotvecvecinnerc                 C   s@   t d}dg}t ||}t dddg}t||| jd d S )Nr   r#   g333333@ru  )r'   r  r  r   r
   r=  rF   rQ  rB  rJ  r
  r=   r=   r>   test_dotcolumnvect1s  s
    
zTestDot.test_dotcolumnvect1c                 C   sD   t d }dg}t ||}t dddg}t||| jd d S )NrQ  r3  ru  )r'   r  r  r  r   r
   r=  rR  r=   r=   r>   test_dotcolumnvect2z  s
    zTestDot.test_dotcolumnvect2c                 C   s\   t jd t jdd}t jdd}t ||}t ddddgg}t||| jd d S )	Nr  r#   r   g#:\?gNp?gwr*a?p<e?ru  r'   r  r  r  r  r   r
   r=  rR  r=   r=   r>   test_dotvecscalar  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#   rU  gpVȅU?gX;'Ii`?g3Tp?ru  rV  rR  r=   r=   r>   test_dotvecscalar2  s    zTestDot.test_dotvecscalar2c           
   	   C   s   dddg}dddddddddg	}t |t||D ]V\}\}}t|}t|}t||}t|}	t|j|	jk t||	| j	d q2d S )Nr=   rd  re  ru  )
zipr  r  r'   r*   r  r   r7   r
   r=  )
rF   dimsZdoutr  Zdim1Zdim2rQ  rB  rJ  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 krg }t || _d S rR   r"  )rF   sequencer=   r=   r>   rU     s    z,TestDot.test_vecobject.<locals>.Vec.__init__c                    s     }| j |j  |_ |S rR   r  rF   r  r  Vecr=   r>   __add__  s    z+TestDot.test_vecobject.<locals>.Vec.__add__c                    s     }| j |j  |_ |S rR   r  r\  r]  r=   r>   __sub__  s    z+TestDot.test_vecobject.<locals>.Vec.__sub__c                    s     | j  }| j |9  _ |S rR   )r   r  r\  r]  r=   r>   rH    s    z+TestDot.test_vecobject.<locals>.Vec.__mul__c                 S   s   | | S rR   r=   r  r=   r=   r>   __rmul__  s    z,TestDot.test_vecobject.<locals>.Vec.__rmul__)N)rN   rO   rP   rU   r_  r`  rH  ra  r=   r]  r=   r>   r^    s
   
r^  r   r  r   r   r#   )r'   r  r  r   r  r	   )rF   Z
U_non_contZU_contr   r*   Z
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   r  r#   r"   r   r   r   r   )numpy.core.multiarrayr  r'   r   r  r   )rF   r  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 ]}|||| qBtrht	t
|d |||d d	}t|| t|||||d	k |d d df  }|d d df  }|||}t|||||k t|| d S )
Nr   rc     r  r   r   r   r  r   r'  r"   r  )rd  r  r'   r  r  random_sampler2   rq   r   r	   r:  r  r   r   r  )rF   r  r   rx   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   rc  rf  rg  rh  )r  rx  )r  )r   )r   r  )r  r   r"   r   ri  r   )rd  r  r'   r  r  rj  r2   r   r)   r	  r  r   )rF   r  r   rx   r   r=   r=   r>   test_dot_3args_errors  s(    




" zTestDot.test_dot_3args_errorsc                 C   sz   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 r<  )r'   r   r  r	   r=  r=   r=   r>   test_dot_array_order  s    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rpt|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rB q\qB|||||j   j|d}|j| |dS )Nr   r   r$   r&   )	r'   r  r*   r   r3   r4   rq   rW   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 rR   )r7   )rS   r8   r   r    r   rp  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>)ZrtolZatol)r   r'   r  )r  r   desiredr=   r=   r>   assert_dot_close  s    zETestDot.test_accelerate_framework_sgemv_fix.<locals>.assert_dot_closer  rt  r  )rt  r   )r  )   Y   )r   r  r&   r"   r  r   r  )r   )r   )	r'   r  r  r  r  r  r  r	   r   )rF   rr  rt  r  r   Ztestdatar8   rm  Za_orderZA_dZX_drs  ZA_fZX_fZA_d_2ZA_f_2ZA_d_22ZX_d_2ZA_f_22ZX_f_2ZX_f_2cZA_d_12ZA_f_12r=   rq  r>   #test_accelerate_framework_sgemv_fix  sF    

z+TestDot.test_accelerate_framework_sgemv_fixr   g   ЈB)Z
free_bytesc                 C   s*   t jd|d}t ||}|dks&td S )Nid  @r   )r'   r  r  r~   )rF   r   r$   rJ  r=   r=   r>   test_huge_vectordotE  s    zTestDot.test_huge_vectordotc              	   C   s^   G dd dt }tt t| |  W 5 Q R X tt td|  W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z5TestDot.test_dtype_discovery_fails.<locals>.BadObjectc                 S   s   t dd S )Nzjust this tiny mint leafr  rE   r=   r=   r>   r~  R  s    z?TestDot.test_dtype_discovery_fails.<locals>.BadObject.__array__Nr  r=   r=   r=   r>   	BadObjectQ  s   ry  r  )r(   r   r  r   r'   r  )rF   ry  r=   r=   r>   test_dtype_discovery_failsO  s
    z"TestDot.test_dtype_discovery_failsN)!rN   rO   rP   rG   rE  rF  rG  rJ  rK  rL  rO  rP  rS  rT  rW  rX  r  rb  re  rl  rm  rn  rw  r   r   r  r   r'   r   r  r   rx  rz  r=   r=   r=   r>   rA  7  s2   	!

@rA  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   sb   ddddddddd	g	}t | j|D ]8\}\}}tj||d
}tj||d
}tt| j|| q$d S )N)rd  rn  )r  rn  )rn  r  )r  rQ  )rd  r=   )r=   r#   )re  r=   )r=   re  ))r"   r"   r#   )r   r#   r"   r   )r  r  ri   r'   r  r   r)   r  )rF   rZ  r  dm1dm2rD   r   r=   r=   r>   test_exceptionsd  s    zMatmulCommon.test_exceptionsc           	      C   s   dddg}t | j|D ]B\}\}}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 qbd S )N)re  r"   r#   r#   )r  re  )r  r  r   r  rn  r=   )	r  r  ri   r'   r  r  r   r7   r   )	rF   rZ  r  r|  r}  rD   r   rJ  r  r=   r=   r>   test_shapesv  s    
zMatmulCommon.test_shapesc                 C   s   t d}t d}| jD ]x}||}||}||f||f||ffD ]}| j| }t|j|k qH|dkr| ||}tt|t |jk qd S )Nre  rd  r  )r'   r  ri   rA  r  r   r   rU  )rF   r	  vecr  r  rx   r  rJ  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 ]F}||}||}| ||}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   TrV  r   r   )r'   r   r   ri   rA  r  r	   r	  )	rF   vec1vec2r
  r  r4  r5  rJ  r  r=   r=   r>   test_scalar_output  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 ]L}||}||}| ||}t|| | ||dd}t|| qTt jd	d	gd
d}	| |	|	}t|d	 d S )Nr#   r"   r   r   r%   r  r   r   TrV  r   )r'   r   r   ri   rA  r  r	   )
rF   r  r  tgt1tgt2r  r4  r5  rJ  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 ]N}||}||}||}	| ||}
t|
| | ||	}
t|
| qht 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,  ri   rA  r  r	   rF   r  mat1mat2r  r  r  rx   m1r  rJ  r=   r=   r>   test_vector_matrix_values  s,    




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 ]N}||}||}||}	| ||}
t|
| | |	|}
t|
| qht 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  rH   r  TFr  r  r=   r=   r>   test_matrix_vector_values  s,    




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 ]}||}||}||}||}| ||}t|| | ||}t|| | ||}t||
 | ||}t||	 | ||}t|| qt 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   rt  rf  r   r   )r'   r   r,  ri   rA  r  r	   rN  )rF   r  r  Zmat12Zmat21Ztgt11Ztgt12Ztgt21Ztgt12_21Ztgt11_12Ztgt11_21r  r  r  Zm12Zm21rJ  r=   r=   r>   test_matrix_matrix_values  sZ    











z&MatmulCommon.test_matrix_matrix_valuesN)rN   rO   rP   r  ri   r~  r  r  r  r  r  r  r  r=   r=   r=   r>   r{  \  s   r{  c                %   @   sp  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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f!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   s"  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||k t  }|t jd ||j}W 5 Q R X t|| d S )NrH   r"   r   r#   r   rH   r   zout positional argumentr   zout keyword argumentr  zCannot cast ufunc .* outputr\  )r'   r  r  r   r  r*   r  r   r   r   r   r  r   r   r  ComplexWarningrA  r   )rF   rD   r   r
  r  r  r  r  r=   r=   r>   test_out_arg8  s*    zTestMatmul.test_out_argc              	   C   sX   t d}t d}| ||jdks*ttjtdd | j|||d W 5 Q R X d S )N)r   r#   r#   r  znon-broadcastabler  r  )r'   r  r  r7   r~   r   r  r)   r&  r=   r=   r>   test_empty_outW  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|kst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 )Nr  r   r#   r   rH   r   )rH   r"   r"   r?  r  r   )rB   r"   r"   )
r'   r  r  r   r  r  rv   r~   r   r	  )rF   rD   r   rx   r
  Ztgt_mvr  r  r=   r=   r>   test_out_contiguousa  s&    

 
"
zTestMatmul.test_out_contiguousg      .@rH   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 rz  )r'   r  r  r	   r  )rF   r  Zr1rk  Zr3r=   r=   r>   test_dot_equivalent  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#   rp   )rB   r   r   r  )r'   r  r  r=   r=   r=   r>   random_ints  s    z2TestMatmul.test_matmul_object.<locals>.random_intsc                 S   s   g | ]}| tqS r=   )rA  r  ry  r=   r=   r>   rW    s     z1TestMatmul.test_matmul_object.<locals>.<listcomp>)	fractionsr'   Z	vectorizeFractionr  r   )
rF   r  r   r  ZM1ZM2ZM3ZN1ZN2ZN3r=   r=   r>   test_matmul_object  s    zTestMatmul.test_matmul_objectc                 C   sF   ddl m} t|dd|ddg}| ||}tt||k d S )Nr   )r  r"   r   rH   r   )r  r  r'   r   r  r   rU  )rF   r  rx   rJ  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 )Nr  r   r  r  )r'   r2   r(   r*   r   r  r  r=   r=   r>   test_matmul_empty  s    
zTestMatmul.test_matmul_emptyc              	   C   s@   G dd d}t d| }tt t ||}W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )zCTestMatmul.test_matmul_exception_multiply.<locals>.add_not_multiplyc                 S   s   | S rR   r=   r  r=   r=   r>   r_    s    zKTestMatmul.test_matmul_exception_multiply.<locals>.add_not_multiply.__add__N)rN   rO   rP   r_  r=   r=   r=   r>   add_not_multiply  s   r  r  r'   fullr   r   r  )rF   r  rD   r   r=   r=   r>   test_matmul_exception_multiply  s    
z)TestMatmul.test_matmul_exception_multiplyc              	   C   s@   G dd d}t d| }tt t ||}W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z>TestMatmul.test_matmul_exception_add.<locals>.multiply_not_addc                 S   s   | S rR   r=   r  r=   r=   r>   rH    s    zFTestMatmul.test_matmul_exception_add.<locals>.multiply_not_add.__mul__N)rN   rO   rP   rH  r=   r=   r=   r>   multiply_not_add  s   r  r  r  )rF   r  rD   r   r=   r=   r>   test_matmul_exception_add  s    
z$TestMatmul.test_matmul_exception_addc                 C   s   t jddgddggtd}t |t jdks4tt ||}t |t jdksZt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 |rtd S )Nr#   r   r   r  r"   r   r  r   rH   )r"   r   )r'   r   r  r   rW   r3   r~   r  r  default_rngZPCG64integersr   r   r  r	   r*   r  )rF   rD   r   Zrgr   r  r  r  r=   r=   r>   test_matmul_bool  s    
 zTestMatmul.test_matmul_bool)rN   rO   rP   r'   r  r  r  r  rC   r   r  r  r  ZvcZvrr*   Zm0r   r   r   r	  r  r  r  r  r  r  r  r  r=   r=   r=   r>   r  5  sh   
$


 
       
                

		r  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>.Arp   c                 S   s   dS Nr  r=   r  r=   r=   r>   
__matmul__  s    zETestMatmulOperator.test_array_priority_override.<locals>.A.__matmul__c                 S   s   dS r  r=   r  r=   r=   r>   __rmatmul__  s    zFTestMatmulOperator.test_array_priority_override.<locals>.A.__rmatmul__N)rN   rO   rP   r  r  r  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 )NrH   s   abcrB   )r   r   r  r'   r   rp  rC   rE   r=   r=   r>   test_matmul_raises  s    z%TestMatmulOperator.test_matmul_raises)rN   rO   rP   r/   r  r  r  r=   r=   r=   r>   r    s   r  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globalsrI   )rD   r   r/   r=   r=   r>   test_matmul_inplace  s    

r  c                  C   s   t dddd} t j| | dddgd}|jd	ks8tt j| | ddd
gd}|jdks\tt |dd}t|| t j| t ddddgd}|jdkstd S )Nr   r   r   rH   )r   r%   )r%   r   r  )r  )r   r   r   r  )r   r   r   r   r"   )r#   r   r   )r'   rC   r   r  r7   r~   r  r   )rD   r  r   r   r   r=   r=   r>   test_matmul_axes  s    
r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	TestInnerc                 C   s6   d}t jddd}ttt j|| ttt j|| d S r  )r'   r   r   r   r  r  r=   r=   r>   test_inner_type_mismatch  s    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  rV  r   r   r=   r#   r"   r   )r'   r  r   r	   r  )rF   r  Zscar  rs  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   r1  ru  )r'   r*   r   r  r
   )rF   rD   r  r=   r=   r>   test_vecself  s    zTestInner.test_vecselfc                 C   sx  t jd t jd  d D ]X}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  rV  r#   r"   r   r   r   r   r   rB   rt  rf  rH   r  r7  r%   )
r'   r  r   r	   r  r	  r  rC   rA  r^  )rF   r  r  r[   r   rs  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 ]}t dddd|}t ddddd|}t d	d
dgdddggdddgdddggdddgdddgggdddgddd ggd!d"d#gd$d%d&ggd'd(d)gd*d+d,gggg|}tt ||| tt ||ddd-d.| qd S )/Nr  r  rV  r  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  rC   r   rA  r   r	   r  r  )rF   r  rD   r   rs  r=   r=   r>   test_3d_tensor?  s<    	zTestInner.test_3d_tensorN)rN   rO   rP   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 | _dddg| _d S )Nr"   r  r   r   r   r   r#   )r'   r  r   r   r   r  r  r  rE   r=   r=   r>   rG   [  s
    zTestChoose.setup_methodc                 C   s*   t | j| j| jf}t|dddg d S Nr"   r   )r'   r  r  r   r   r	   r  r=   r=   r>   r  b  s    zTestChoose.test_basicc                 C   s4   t | j| j| jf}t|dddgdddgg d S r  )r'   r  r  r  r  r	   r  r=   r=   r>   test_broadcast1f  s    zTestChoose.test_broadcast1c                 C   s4   t | j| j| jf}t|dddgdddgg d S r  )r'   r  r  r   r  r	   r  r=   r=   r>   test_broadcast2j  s    zTestChoose.test_broadcast2r  rp   r#   r   r%   r   r   c                 C   s&   t j| }t dg|j|ks"td S r   )r'   r@  r  r   r~   )rF   r  Zexpected_dtr=   r=   r>   test_output_dtypen  s    
zTestChoose.test_output_dtypeN)rN   rO   rP   rG   r  r  r  r   r   r   r'   r   r3   r  r  r=   r=   r=   r>   r  Z  s   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
TestRepeatc                 C   s*   t ddddddg| _| jd| _d S Nr#   r"   r   r   rH   r   r   )r'   r   r  r   r  rE   r=   r=   r>   rG   y  s    zTestRepeat.setup_methodc                 C   s<   t | jddddddg}t|ddddddddddg
 d S )Nr#   r   r"   r   rH   r   r'   r  r  r	   r  r=   r=   r>   r  }  s        zTestRepeat.test_basicc                 C   s4   t | jd}t|ddddddddddddg d S )Nr"   r#   r   r   rH   r   r  r  r=   r=   r>   r    s         zTestRepeat.test_broadcast1c              	   C   sz   t j| jddgdd}t|dddgdddgdddgg t j| jdddgdd}t|ddddddgddddddgg d S )	Nr"   r#   r   r  r   r   rH   r   r'   r  r  r	   r  r=   r=   r>   test_axis_spec  s    zTestRepeat.test_axis_specc              	   C   sx   t j| jddd}t|dddgdddgdddgdddgg t j| jddd}t|ddddddgddddddgg d S )	Nr"   r   r  r#   r   r   rH   r   r  r  r=   r=   r>   r    s    zTestRepeat.test_broadcast2N)rN   rO   rP   rG   r  r  r  r  r=   r=   r=   r>   r  x  s
   
r  r#   r"   r   r   )zeror   constantcircularmirrorr  r  r(   idsc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestNeighborhoodIterc                 C   sX  t jddgddgg|d}t jdddgdddgg|dt jdddgdddgg|dt jdddgdddgg|dt jdddgdddgg|dg}t|ddddg|d td }t|| t jdddgdddgg|dt jdddgdddgg|dt jdddgdddgg|dt jdddgdddgg|dg}t|ddddg|d td }t|| t jd	d	d	gd	ddgg|dt jd	d	d	gddd	gg|dt jd	ddgd	ddgg|dt jddd	gddd	gg|dg}t|ddddgd	td
 }t|| t jd	ddgd	ddgg|dt jddd	gddd	gg|dg}t|ddddgd	td
 d}t|| d S )Nr   r#   r"   r   r   r%   r  r   r   r  r'   r   rl  test_neighborhood_iterator
NEIGH_MODEr   rF   r  r   r   r   r=   r=   r>   test_simple2d  s`     
  
 
  
 
  
 
   z"TestNeighborhoodIter.test_simple2dc                 C   s   t jddgddgg|d}t jdddgdddgg|dt jdddgdddgg|dt jdddgdddgg|dt jdddgdddgg|dg}t|ddddg|d td }t|| d S )Nr   r#   r"   r   r   r%   r  r  r  r=   r=   r>   test_mirror2d  s     
  z"TestNeighborhoodIter.test_mirror2dc                 C   s  t ddd|}dddgdddgdddgdddgdddgg}t|ddg|d td }t|| dddgdddgdddgdddgdddgg}t|ddg|d td	 }t|| |d ddgdddgdddgdddgdd|d gg}t|ddg|d td
 }t|| d S )Nr#   rH   r   r"   r   r   r%   r  r   r  )r'   rc  rA  rl  r  r  r   r  r=   r=   r>   test_simple  s2    ,   
,   
4   z TestNeighborhoodIter.test_simplec              
      s   t ddd }t jdddddgdddddgdddddgdddddgdddddgg d}t|ddg|d td }t fd	d
|D  t|| d S )Nr#   rH   r"   r   r   r   r   r  c                    s   g | ]}|j  kqS r=   r   rU  r  r=   r>   rW    s     z4TestNeighborhoodIter.test_mirror.<locals>.<listcomp>)	r'   rc  rA  r   rl  r  r  r   r   r  r=   r  r>   test_mirror  s    (    z TestNeighborhoodIter.test_mirrorc              
   C   s   t ddd|}t jdddddgdddddgdddddgdddddgdddddgg|d}t|ddg|d td	 }t|| d S )
Nr#   rH   r   r"   r   r   r   r   r  )r'   rc  rA  r   rl  r  r  r   r  r=   r=   r>   test_circular  s    (    z"TestNeighborhoodIter.test_circularN)rN   rO   rP   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	S )
TestStackedNeighborhoodIterc              
   C   s:  t j}t jdd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t jdg|dg}t|ddgtd ddgtd }t|| t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|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   rl  Ztest_neighborhood_iterator_oobr  r   r  r=   r=   r>   test_simple_const  s@        
    z-TestStackedNeighborhoodIter.test_simple_constc              
   C   s  t j}t jdddg|d}t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|dg}t|ddgtd ddgtd }t|| t jdddg|d}t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|dg}t|ddgtd d	dgtd }t|| t jdddg|d}t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|dg}t|ddgtd ddgtd }t|| t jdddg|d}t jdddddg|dt jdddddg|dt jdddddg|dt jdddddg|dt jdddddg|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>   test_simple_mirror  sz        
    
    
    z.TestStackedNeighborhoodIter.test_simple_mirrorc              
   C   s  t j}t jdddg|d}t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|dg}t|ddgtd ddgtd }t|| t jdddg|d}t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|dg}t|ddgtd d	dgtd }t|| t jdddg|d}t jdddg|dt jdddg|dt jdddg|dt jdddg|dt jdddg|dg}t|ddgtd ddgtd }t|| t jdddg|d}t jdddddg|dt jdddddg|dt jdddddg|dt jdddddg|dt jdddddg|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>   test_simple_circularD  sz        
    
    
    z0TestStackedNeighborhoodIter.test_simple_circularc                 C   s  t j}t jdddg|d}t jddddg|dg}t|ddgtd ddgtd }t|| t jdddg|d}t jddddg|dg}t|ddgtd ddgtd }t|| t jdddg|d}t jddddg|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>   test_simple_strict_withint  s>        
    
    z5TestStackedNeighborhoodIter.test_simple_strict_withinN)rN   rO   rP   r  r  r  r  r=   r=   r=   r>   r    s   00r  c                   @   s   e Zd Zdd ZdS )TestWarningsc              	   C   sf   t ddg}t ddg}t 8 tdt j tt j|jtd | t	|ddg W 5 Q R X d S )Nr#   r"   y      ?       y      ?       @r{   )
r'   r   r   r   r   r  r   r  slicer	   ro  r=   r=   r>   test_complex_warning  s    
z!TestWarnings.test_complex_warningN)rN   rO   rP   r  r=   r=   r=   r>   r    s   r  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestMinScalarTypec                 C   s"   t d}t d}t|| d S )NrZ  r3   r'   Zmin_scalar_typer   r	   rF   r  wantedr=   r=   r>   test_usigned_shortshort  s    

z)TestMinScalarType.test_usigned_shortshortc                 C   s"   t d}t d}t|| d S )Ni  r   r  r  r=   r=   r>   test_usigned_short  s    

z$TestMinScalarType.test_usigned_shortc                 C   s"   t d}t d}t|| d S )Nl    r   r  r  r=   r=   r>   test_usigned_int  s    

z"TestMinScalarType.test_usigned_intc                 C   s"   t d}t d}t|| d S )Nr  r   r  r  r=   r=   r>   test_usigned_longlong  s    

z'TestMinScalarType.test_usigned_longlongc                 C   s"   t d}t d}t|| d S )Nrj  r  r  r  r=   r=   r>   rG    s    

zTestMinScalarType.test_objectN)rN   rO   rP   r  r  r  r  rG  r=   r=   r=   r>   r    s
   r  )_dtype_from_pep3118c                   @   sd   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 )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%dxirt  )r  r   r#   r  r   r  )r'   r   r+   rq   r  )rF   r8   r  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}r  )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f d||d i| | d	tf d||d
 i| | dtf d||d i| | dtf d||d i| | dtf d||d i| | dtf d|d i| | dtf d|d
 i| | dtf d|d i| | dtf d|d i| | dtf d|d i| d S )Nr   c                    s    d| d     S r  r=   rm  rH  r=   r>   r     s    z7TestPEP3118Dtype.test_trailing_padding.<locals>.alignedr  )r0  r/  ixr1   r#   Zixxr"   Zixxxr   Zixxxxr   Zi7xr   z^ixz^ixxz^ixxxz^ixxxxz^i7x)r'   r   r+   r1   r   r  )rF   r9   r   rv   r=   rH  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 )Nr%  r   r   r  b,ir:  TrH  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  r  r=   r=   r>   test_native_padding_3  s      z&TestPEP3118Dtype.test_native_padding_3c                 C   s&   t jddddgdd}| d| d S )Nr%  r  r  r   r  r;  TrH  zT{b:a:xxxi:b:3b:c:xi:d:}r  r  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}xir  )r   r   r   )r   rH   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                    s    d| d     S r  r=   r  rH  r=   r>   r     s    z4TestPEP3118Dtype.test_intra_padding.<locals>.alignedz(3)T{ix}r  r   r#   r  r  )r'   r   r+   r1   r  r   )rF   r9   r   r=   rH  r>   test_intra_padding  s    
z#TestPEP3118Dtype.test_intra_paddingc                 C   s4   t d}| d| t ddg}| d| d S )Nr  )r  ZS1r  )r   rb   Z4c4sr  r  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   r  r  r  z(0)I:b:f:a:)r   r  r  r  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)r  r   )r   r   zii:f0:r   zi:f0:r  rE   r=   r=   r>   test_unnamed_fields  s    z$TestPEP3118Dtype.test_unnamed_fieldsN)rN   rO   rP   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 rR   )r'   rX   r   r   r   rJ   r}   r	   r   r7   r   )rF   r   r   r   r  r=   r=   r>   _check_roundtrip'  s    



z&TestNewBufferProtocol._check_roundtripc                 C   s>  t jdddddg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dddgd"d}| | t jdddgd#d}| | t jdddgd$d}| | t jdddgd%d}| | t jdddgd&d}| | tjd'krt jdddgd(d}tt| j| t jdddgd)d}| | n@t jdddgd(d}| | t jdddgd)d}tt| j| d S )*Nr#   r"   r   r   rH   r   r   r   r   r   r   r%  r   r  r:  r   r   Zdxr  r   r[   r   Hr  r  r  LhxQr   r  r  r  jxkxr   rb   r  ZU4rm  r>  rf  rV  r  )r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#      aaaabbbbs   xxxTr   rD   r  r	  rN  rJ  rI  z>qr7  z>gz<g)r'   r   r  r   r*   r  r  r  r@  r  r  r  halfr   r:  r;  r   r)   )rF   r   r  r=   r=   r>   r|  7  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   r!  g     @g      ?g      p>r   g       z+infz-infg     T?z>er   z<e)r  r'   r   r  )rF   Z	half_listr   r=   r=   r>   test_roundtrip_half}  s    
z)TestNewBufferProtocol.test_roundtrip_halfc                 C   s   t j D ]}t |}|jdkr$q
|jdkr0q
t jd|d}| | |jdkr
|d}t jd|d}| | |d}t jd|d}| | q
d S )NZMmr  r   r   ZqQgGr  r  )r'   Z
sctypeDictrj   r   r   r*   r  r  )rF   typr   r   r  r=   r=   r>   test_roundtrip_single_types  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   rU  )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   sl   t jdddddg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   r   rH   r   r   )rH   r  r=   
r'   r   r   r	   r  r7   r   r   
suboffsetsr1   ro  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   ro  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"   )r  r   r=   r   )r'   r*   r  r   r	   r  r7   r   r   r%  r1   ro  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rt
|jd nt
|jd  t djd! t t jjkst
|j|f t
|j| d S )"Nr%  r
  r:  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  )r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r#   r  r  s      Tr   r   rd  r#   r=   c                 S   s   g | ]\}}t |jqS r=   )r'   r   r1   )rV  rD   r   r=   r=   r>   rW    s     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'   r  r  r@  r  r  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$  ro  r=   r=   r>   test_export_subarray  s    z*TestNewBufferProtocol.test_export_subarrayc                 C   s   t jdddgdd}t|}tjdkr4t|jd nt|jd t jdddgdd}t|}tjdkrtt|jd nt|jd d S )	Nr#   r"   r   z>ir   r7  r   z<i)r'   r   r   r:  r;  r	   r  ro  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 )NrH   r"   )ZSIMPLE)r   r)   rl  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   sP   t | t|d W 5 Q R X t|d t|}t|}t|| d S )N)
STRIDED_ROZFORMAT)r/  )r   r  rl  r-  r   rt   rs   r   )rF   r   r{   Z
pickle_objrJ  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   rd  rn  r  r   )rq   r'   r   r   r  )rF   r  r   r=   r=   r>   test_padding)  s    z"TestNewBufferProtocol.test_paddingc                 C   sP   t rttjj}td}t|}t|}t rJttjj}t	|| ~d S )Nr   )
r   r:  r  r'   re   	_internalr*   r   rX   r	   )rF   Zcount_1rD   r   r  Z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ddd	d
g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 )Nr%  r  r  r  r:  TrH  r   r  r;  r  r  r  )r'   r   rC   r1   r   rW   r  )rF   rD  r<  rE  r  Zdt3r=  r=   r=   r>   test_padded_struct_array9  s(    


 z.TestNewBufferProtocol.test_padded_struct_arrayz$leaks buffer info cache temporarily.rn   )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rt|dg\}}t|d dk tj	dd	d
}t|dg\}}t|d dk d S )N)r%   r  r   )   r  r   )r   r  r5  r  F_CONTIGUOUSr   r   r  r  r&   C_CONTIGUOUSr%   )r   r   r   r!  r"  r]   r$   r	  r'   r  rJ   r  rl  r-  )rF   r  r  r$  rS   r7   r   r=   r=   r>   test_relaxed_stridesL  s&    
  z*TestNewBufferProtocol.test_relaxed_stridesr  r   r&   z8Test is unnecessary (but fails) without relaxed strides.r  c                 C   sN   t dD ]@}t|dg\}}|dks*tt|dg\}}|dkst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   r6  )r   r   r7  )r  r   N)rq   rl  r-  r~   )rF   rS   r   r  r   r=   r=   r>   %test_relaxed_strides_buffer_info_leake  s
    z;TestNewBufferProtocol.test_relaxed_strides_buffer_info_leakc              	   C   sN   t tddgddgddgdd}t d|}tt t| W 5 Q R X d S )	NrI  r   r   r   r   r   r0  r/  r1  r1   r#   )r'   r   r   r2   r   r)   r   )rF   r  rS   r=   r=   r>   test_out_of_order_fieldsv  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_dims  s    
z#TestNewBufferProtocol.test_max_dimsc                 C   s`   dd }|dt j}t| }t|jd ttdtj| ~~t	dD ]}t
 dkrF q\qFd S )Nc                 S   s$   |}| d d d D ]}|| }q|S )Nr%   r=   )r7   Z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   rq   gcZcollect)rF   r=  Zc_u8_33dr  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k ttdtj	| d S )N&zformat string)
r   r)  pointerr?  r   r  r   r)   r'   r   )rF   r  r=   r=   r>   test_error_pointer_type  s      z-TestNewBufferProtocol.test_error_pointer_typec              	   C   sP   t jd }tt}t|  W 5 Q R X |j}ttd |j	W 5 Q R X 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   sR   t jt jt jhD ]<}|d}tjdd tddt t	| W 5 Q R X qd S )Nr[  Tr   r   .*\bctypes\b)
r)  c_intc_long
c_longlongr   r   r   r  r'   rX   )rF   Z	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 5 Q R X 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)rN   rO   rP   r)  r?  c_uint32_fields_r=   r=   r=   r>   r*    s   r*  r#   r"   r%  Tr   r   rJ  rD   r   r   )
r)  	Structurer   r   r   r  r'   rX   r	   rD   )rF   r*  r   rS   r=   r=   r>   !test_ctypes_struct_via_memoryview  s    z7TestNewBufferProtocol.test_ctypes_struct_via_memoryviewr   r  r=   c              	   C   sJ   t | t|}tjtd| dd t| W 5 Q R X 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 subclassedr  N)rl  Zcorrupt_or_fix_bufferinforU  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k
r*   tdY nX dD ]}ttt|}|j||d|j	d}d}tj
t|d t| W 5 Q R X tj
t|d t|g W 5 Q R X t
t t| W 5 Q R X q0d S )Nr   z_testbuffer is not available)r   r  r   )r  rJ   z,NumPy currently does not support.*suboffsetsr  )_testbufferImportErrorr   skipr  rq   r'   r  r6   ZND_PILr  r  rX   rc   )rF   rT  r7   r$   r   r  r=   r=   r>   test_no_suboffsets  s     
z(TestNewBufferProtocol.test_no_suboffsetsN)/rN   rO   rP   r  r  r|  r  r!  r"  r#  r&  r'  r(  r*  r+  r,  r.  r   r   r   r  r'   r   r   r)   r   r0  r1  r3  r4  Zvalgrind_errorr  r8  r   rJ   r  r9  r;  r<  r  rA  rD  rI  rN  rR  rS  rW  r=   r=   r=   r>   r  $  sP   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dddgejdddddgdd Zdd ZdS )TestArrayCreationCopyArgumentc                   @   s   e Zd Zdd ZdS )z)TestArrayCreationCopyArgument.RaiseOnBoolc                 C   s   t d S rR   r  rE   r=   r=   r>   __bool__  s    z2TestArrayCreationCopyArgument.RaiseOnBool.__bool__NrN   rO   rP   rY  r=   r=   r=   r>   RaiseOnBool  s   r[  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 5 Q R X q
d S )Nr  r=   r   r   r  r#   )r   r  )r'   r  r*   r^  r   r)   r   	_CopyModeNEVERr[  rl  Znpy_ensurenocopyr   r  r   )rF   r   rS   r  Zpyscalarr=   r=   r>   test_scalars  s$    



z*TestArrayCreationCopyArgument.test_scalarsc              	   C   sD  ddd}| D ],}|dD ]}t jd|d}| jD ]2}t j|||d}||k	r\|jjs`tt|| q8||kr| jD ]*}t j|||d}||ksz|j	|ksztqzt j|t j
j|d}||ks|j	|kstq| jD ]6}t j|||d}||k	r |jjstt|| qttt j|t j
j|d ttt j|d |d qqd S )	NFc                 s   sB   t jd t jd  }|D ]$}t |V  | rt | V  qd S )NZIntegerZUnsignedInteger)r'   r  r   r  )r  	int_typesZint_typer=   r=   r>   r_     s    zETestArrayCreationCopyArgument.test_compatible_cast.<locals>.int_typesTrB   r   )r  r   )F)r'   rC   	true_valsr   rJ   r}   r~   r   
false_valsrv   r\  r]  r   r)   )rF   r_  Zint1Zint2rS   r  rJ  r=   r=   r>   test_compatible_cast   s>    



  z2TestArrayCreationCopyArgument.test_compatible_castc                 C   s   t d}t|}| jD ]"}t j||d}t ||rtq| jD ]"}t j||d}t ||sBtqBt j|t jj	d}t ||std S )NrB   r  )
r'   rC   r   r`  r   r  r~   ra  r\  r]  )rF   rS   rW   r  rJ  r=   r=   r>   test_buffer_interfaceA   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|ksLtqLd S )NrB   c                       s   e Zd Z jZdS )zFTestArrayCreationCopyArgument.test_array_interfaces.<locals>.ArrayLikeNrN   rO   rP   r4   r=   Zbase_arrr=   r>   	ArrayLikeV   s   rf  )TNFr  )	r'   rC   r\  ALWAYS	IF_NEEDEDr]  r   rv   r~   )rF   rf  rS   r  rn  rJ  r=   re  r>   test_array_interfacesR   s    
 

z3TestArrayCreationCopyArgument.test_array_interfacesc              	      s   t d G  fddd}| }| jD ](}t j||d}t|  | k	s(tq(| jD ](}t j|dd}t|  | ksXtqXtt	 t j|t j
jd W 5 Q R X d S )NrB   c                       s   e Zd Z fddZdS )z?TestArrayCreationCopyArgument.test___array__.<locals>.ArrayLikec                    s    S rR   r=   rE   re  r=   r>   r~  e   s    zITestArrayCreationCopyArgument.test___array__.<locals>.ArrayLike.__array__Nr  r=   re  r=   r>   rf  d   s   rf  r  F)r'   rC   r`  r   r   r~   ra  r   r  r)   r\  r]  )rF   rf  rS   r  rJ  r=   re  r>   r  a   s    




z,TestArrayCreationCopyArgument.test___array__rS   r=   Q   )r   r   order1r   r  Norder2r  r  c                 C   s  | |}|dkr |jjsdtnD|dkr6|jjsdtn.|jdkrd|d d dd d df }|jjrdt|dkrv|jj}n|dkr|jj}nd}|t|fD ]}| jD ]2}t	j
|||d}||k	r|jjstt|| q|rN| jD ]0}t	j
|||d}ts||ks|jj|kstqt	j
|t	jj|d}ts||ks|jj|kstq| jD ] }t	j
|||d}t|| qTttt	j
|t	jj|d ttt	j
|d |d qd S )Nr   r  r   r"   Tr  )r  rJ   r  r~   r  r   r   r   r`  r'   r   r}   r   ra  r   rv   r   r\  r]  r   r)   )rF   rS   rk  rl  Zno_copy_necessaryrW   r  rJ  r=   r=   r>   test_order_mismatch|   sR    






  z1TestArrayCreationCopyArgument.test_order_mismatchc                 C   s   t dddgdddg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 )
Nr#   r"   r   r   rH   r   r  )r  r    r   r  )r'   r   r   r)   r	  r\  r]  r   rT   r=   r=   r>   test_striding_not_ok   s.          z2TestArrayCreationCopyArgument.test_striding_not_ok)rN   rO   rP   r[  r'   r\  rg  rl  r`  rh  rk  ra  r^  rb  rc  ri  r  r   r   r   r  rC   r   rm  rn  r=   r=   r=   r>   rX    s    . 7rX  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestArrayAttributeDeletionc              	   C   sV   t d}dddddddg}t *}|td	 |D ]}ttt|| q4W 5 Q R X d S )
Nr"   r7   r   r$   r   rt  ru  ra  zAssigning the 'data' attribute)r'   r  r   r  r   r   r+  delattr)rF   rD   attrr  r   r=   r=   r>   ,test_multiarray_writable_attributes_deletion   s    
zGTestArrayAttributeDeletion.test_multiarray_writable_attributes_deletionc                 C   sB   t d}dddddddd	d
dddg}|D ]}ttt|| q*d S )Nr"   r   rJ   r1   r9   r   rv   r)  r	  r4   r   r  r7  )r'   r  r   r+  rp  rF   rD   rq  r   r=   r=   r>   0test_multiarray_not_writable_attributes_deletion   s    
    zKTestArrayAttributeDeletion.test_multiarray_not_writable_attributes_deletionc                 C   s4   t dj}ddddg}|D ]}ttt|| qd S )Nr"   r   Zupdateifcopyr   rK   r'   r  rJ   r   r+  rp  rs  r=   r=   r>   1test_multiarray_flags_writable_attribute_deletion   s    zLTestArrayAttributeDeletion.test_multiarray_flags_writable_attribute_deletionc                 C   sB   t dj}dddddddd	d
ddg}|D ]}ttt|| q*d S )Nr"   rv  r  r  r$  r}   r   r   r   r   r   r   ru  rs  r=   r=   r>   5test_multiarray_flags_not_writable_attribute_deletion   s         zPTestArrayAttributeDeletion.test_multiarray_flags_not_writable_attribute_deletionN)rN   rO   rP   rr  rt  rv  rw  r=   r=   r=   r>   ro     s   	ro  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>   rU      s    zTestArrayInterface.Foo.__init__c                 C   s
   t | jS rR   )r  r   rE   r=   r=   r>   	__float__   s    z TestArrayInterface.Foo.__float__c                 C   s   | j S rR   )r{  rE   r=   r=   r>   r4      s    z*TestArrayInterface.Foo.__array_interface__N)rN   rO   rP   rU   r|  r-  r4   r=   r=   r=   r>   Foo   s   r}  r  zval, iface, expectedr7   r=   Nre  rn  r   r   c                 C   s   ddi| j _| j j| tr.ttd}t|t	rHt
|tj| n*t|}tt|| |jdkspt~trttd}t|| d S ry  )r   r{  updater   r:  r  r'   r   ru   rU  r   r   r	   r~   )rF   rn  r{  r  Zpre_cntr  Zpost_cntr=   r=   r>   test_scalar_interface   s    

z(TestArrayInterface.test_scalar_interface)rN   rO   rP   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)rN   rO   rP   r'   r   r4   r=   r=   r=   r>   rf  !  s   
rf  r#   )r	   r'   r   )rf  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  r[   r  r   r   r   r  rB   r   descrrz  )r'   r   r  r4   r	   r1   )Zmy_dtyperD   Zdescr_tZ	typestr_tr=   r=   r>   test_array_interface_itemsize!  s     r  c                     s   t dddg} 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"   r   r=   r7   c                       s   e Zd Z ZdS )z5test_array_interface_empty_shape.<locals>.DummyArray1Nrd  r=   )
interface1r=   r>   DummyArray1-!  s   r  r   r$   c                       s   e Zd Z ZdS )z5test_array_interface_empty_shape.<locals>.DummyArray2Nrd  r=   )
interface2r=   r>   DummyArray27!  s   r  )r'   r   r   r4   r  rX   r   r	   )rS   r  r  arr1Zarr2Zarr3r=   )r  r  r>    test_array_interface_empty_shape'!  s    

r  c                     sn   t jdddg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   r$   rn  r7   r   r<   c                       s   e Zd Z ZdS )z/test_array_interface_offset.<locals>.DummyArrayNrd  r=   Z	interfacer=   r>   
DummyArrayH!  s   r  )r'   r   r   r4   r   rX   r	   )rS   r  r  r=   r  r>   test_array_interface_offset@!  s    
r  c               	      s^   t jdddgdd} t| j d d< G  fdd	d	}tt t |  W 5 Q R X d S )
Nr#   r"   r   r   r   u   ✓rz  c                       s   e Zd Z ZdS )z8test_array_interface_unicode_typestr.<locals>.DummyArrayNrd  r=   r  r=   r>   r  S!  s   r  )r'   r   r   r4   r   r  r   rX   )rS   r  r=   r  r>   $test_array_interface_unicode_typestrN!  s    
r  c                  C   sP   t dj} z| d= | dd= W n* tk
r4   Y n tk
rJ   tY nX d S )Nr   r#   r"   )r'   r  ra  r   r   r~   )r  r=   r=   r>   test_flat_element_deletionZ!  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_deletione!  s    r  c                   @   s   e Zd Zdd ZdS )TestMapIterc                 C   s   t ddt}ddddgddddgf}dddd	g}t||| t|d
dddgddddgddddgg t dt}t dddgf}dddg}t||| t|ddddddg d S )Nr'  r  r#   r"   r   r   rk  r   r   r   r   r  g      3@g      Z@rC  r  r  r  rl  g      D@g      &@r   r   gfffffY@g     I@r  r  )	r'   rC   r   rA  r  rl  Ztest_inplace_incrementr	   r   )rF   rD   r  r_   r   r=   r=   r>   test_mapiterk!  s    




zTestMapIter.test_mapiterN)rN   rO   rP   r  r=   r=   r=   r>   r  j!  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestAsCArrayc                 C   s.   t jdt jd}t|d}t|d | d S )Nr  r   r   )r'   rC   r  rl  test_as_c_arrayr	   rF   r   Zfrom_cr=   r=   r>   test_1darray!  s    zTestAsCArray.test_1darrayc                 C   s8   t jdt jddd}t|dd}t|d | d S )Nr  r   r   r   r"   r   )r"   r   r'   rC   r  r   rl  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 )Nr  r   r"   r   r   r#   r3  r  r  r=   r=   r>   test_3darray!  s    zTestAsCArray.test_3darrayN)rN   rO   rP   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S )TestConversionc                 C   s  t jd D ]}tdt jd|dkd|f  tdt jd|dk  d|f  t jd D ]Z}tt jd|dt jd|dkd||f  tt jd|dt jd|dk  d||f  qVq
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	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  tt jd|dt jd|dkd||f  qqd
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 ]}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 failedZBHILQPr%   ZbhilqpZbhlqpr  )r'   r  r   r   )rF   rD  rE  r=   r=   r>   &test_array_scalar_relational_operation!  sL     

 



 


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rt	d td g}||d	< t
}t|t| d |d	< d S )
NFTr[  r#   r"   c                   @   s   e Zd Zdd ZdS )z:TestConversion.test_to_bool_scalar.<locals>.NotConvertiblec                 S   s   t d S rR   r  rE   r=   r=   r>   rY  !  s    zCTestConversion.test_to_bool_scalar.<locals>.NotConvertible.__bool__NrZ  r=   r=   r=   r>   NotConvertible!  s   r  z"Pyston disables recursion checkingr   )r	   r  r'   r   r   r)   r  r   r   rV  RecursionError)rF   r  Z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 rG 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   |   S rR   )__int__r   r=   r=   r>   r0  !  r1  z3TestConversion.test_to_int_scalar.<locals>.<lambda>r   r#   r[  r"   r   4rH      5r   6)r   r  c                   @   s   e Zd Zdd ZdS )z3TestConversion.test_to_int_scalar.<locals>.HasTruncc                 S   s   dS r  r=   rE   r=   r=   r>   	__trunc__!  s    z=TestConversion.test_to_int_scalar.<locals>.HasTrunc.__trunc__N)rN   rO   rP   r  r=   r=   r=   r>   HasTrunc!  s   r  r   c                   @   s   e Zd Zdd ZdS )z9TestConversion.test_to_int_scalar.<locals>.NotConvertiblec                 S   s   t d S rR   r  rE   r=   r=   r>   r  !  s    zATestConversion.test_to_int_scalar.<locals>.NotConvertible.__int__N)rN   rO   rP   r  r=   r=   r=   r>   r  !  s   r  )r   r	   r'   r   r   r   rt  rr  r:  version_infor  )rF   Z	int_funcsZint_funcr  r  r=   r=   r>   test_to_int_scalar!  s,    

 
 z!TestConversion.test_to_int_scalarN)rN   rO   rP   r  r  r  r=   r=   r=   r>   r  !  s   )r  c                   @   sT   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 )	TestWherec              
   C   s  t tjtjtjtjtjtjtjg}|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   r  r  r@  r  r  r	   r  Z	ones_likerA  r  )rF   Zdtsr  r  r   r   r   r=   r=   r>   r  !  s4     
 "  

<<<<<<zTestWhere.test_basicc                 C   s0  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ddddd	d
ddddddddddddddg}td}tjdd|d||dd||d||d ||d!|d"d#gtd}tjddd$dd$d$ddd$d$dd$d$dd$d$dd$ddg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+?NaNZ5zZ0lZWzZXqcsZQNZFdZkpZ36r  r#   r   r  Infinityz	-InfinitygP.5_)r   r'   r  r   r  r   r   r  r(   r  r	   r   )rF   r  r   r   r  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"   r7  r   r#   )r'   r*   r  r  r   rg  r   r	  )rF   r  rD   r   r   r=   r=   r>   	test_ndim8"  s    

""zTestWhere.test_ndimc                 C   s  t ddddddddddddg}t d}t jdddddd	dd
ddddgt jd}t jdddddd	dd
ddddg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 )NFTr#   rC  r   r  r  r"              $r  r   r   i
r   iau)
r'   r   r   r   r	   r  rA  r  r   r   )rF   r  rD   r   r   Ztmpmaskr=   r=   r>   test_dtype_mixF"  s0       

zTestWhere.test_dtype_mixc                 C   s   t ddddddddddddg}t jdddddddd	d
dddgt jd}t jddd}t jdddddddd	d
dddgt jd}tt |||| |d}tt |||| |d}tt |||| |d}tt |||| d S )NFTrC  r   r  r  r"  r  r  r  r   r#   rJ  r   r  rI  )r'   r   r   r  r	   r  rA  )rF   r  r   rD   r   r=   r=   r>   test_foreign^"  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_errorq"  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 )NrE  A  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTFZabcdZxxxxxxxx)r'   r   r	   r  rS  r=   r=   r>   r  x"  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 )Nre  g     X@r   )r'   r*   Zvstackr  r   Z
atleast_2dr   r  )rF   r   Zibadr=   r=   r>   test_empty_result"  s
    
zTestWhere.test_empty_resultc                 C   sT   ddddddg}t jd t jj| }tdD ]}| }| }t|| q0d S )NrB   r"   r   r   rH   r   )r'   r  r  r  rq   Znonzeror   )rF   r7   r   r   Z	benchmarkr  r=   r=   r>   test_largedim"  s    zTestWhere.test_largedimN)rN   rO   rP   r  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_array"  s    
zTestSizeOf.test_empty_arrayc                 C   s<   |dj }dD ](}tj||d}tt||| k qd S )Nr   )rB   rk  r  i  r   )r1   r'   rC   r   r:  r  )rF   r   Z	elem_sizer]  r   r=   r=   r>   check_array"  s    
zTestSizeOf.check_arrayc                 C   s   |  tj d S rR   )r  r'   r   rE   r=   r=   r>   test_array_int32"  s    zTestSizeOf.test_array_int32c                 C   s   |  tj d S rR   )r  r'   r   rE   r=   r=   r>   test_array_int64"  s    zTestSizeOf.test_array_int64c                 C   s   |  tj d S rR   )r  r'   r  rE   r=   r=   r>   test_array_float32"  s    zTestSizeOf.test_array_float32c                 C   s   |  tj d S rR   )r  r'   r   rE   r=   r=   r>   test_array_float64"  s    zTestSizeOf.test_array_float64c                 C   s*   t d}tt|d t|k  d S )Nr  .)r'   r  r   r:  r  r  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  r  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  rk     )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__r  r=   r=   r>   r  "  s    
zTestSizeOf.test_errorN)rN   rO   rP   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d Zdd ZdS )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 rR   )r'   r   r   ru   collectionsrE  Hashabler  r=   r=   r>   test_collections_hashable"  s    
z%TestHashing.test_collections_hashableN)rN   rO   rP   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                   @   s   e Zd ZdZdd ZdS )zTestArrayPriority.Foor  c                 O   s   t j||| S rR   r'   r   rW   r5  r  r  r=   r=   r>   r6  "  s    zTestArrayPriority.Foo.__new__NrN   rO   rP   r  r6  r=   r=   r=   r>   r}  "  s   r}  c                   @   s   e Zd ZdZdd ZdS )zTestArrayPriority.Barg     @Y@c                 O   s   t j||| S rR   r  r  r=   r=   r>   r6  "  s    zTestArrayPriority.Bar.__new__Nr  r=   r=   r=   r>   Bar"  s   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   s   |   S rR   r  r  r=   r=   r>   _all"  s    zTestArrayPriority.Other._allN)%rN   rO   rP   r  r  r_  r,  r`  __rsub__rH  ra  rL  rM  rI  Z__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_opsr2  r   ru   rF   rD   r   r   r  r=   r=   r>   test_ndarray_subclass#  s    
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  r2  r   ru   r  r=   r=   r>   test_ndarray_other#  s    
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  r2  r   ru   r  r=   r=   r>   test_subclass_subclass#  s    
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  r2  r   ru   r  r=   r=   r>   test_subclass_other#  s    
z%TestArrayPriority.test_subclass_otherN)!rN   rO   rP   r/   r  r  rq  r  r0   r  r  r  and_or_r  r  r  gtgeltleneeqr  r'   r6   r}  r  r  r  r  r  r  r=   r=   r=   r>   r  "  s8                   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
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(#  s    z=TestBytestringArrayNonzero.test_empty_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   r=   r=   r>   'test_whitespace_bstring_array_is_falsey+#  s    zBTestBytestringArrayNonzero.test_whitespace_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_all_null_bstring_array_is_falsey0#  s    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_truthy5#  s    zCTestBytestringArrayNonzero.test_null_inside_bstring_array_is_truthyN)rN   rO   rP   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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 ]4}t|}||d< |d |ksBt| |kstqdS )z; Tests that GETITEM, SETITEM, and PyArray_Scalar roundtrip r=   ZU1r  r#   N)r'   r*   rq   r:  
maxunicoder  r~   r^  )rF   rS   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 NZaaZbbcc)r'   r   rr  r	   rF   r   r=   r=   r>   test_assign_scalarJ#  s    z&TestUnicodeEncoding.test_assign_scalarc                 C   s0   t ddg}|t d t|ddg d S r  )r'   r   r5   rr  r	   r  r=   r=   r>   test_fill_scalarP#  s    z$TestUnicodeEncoding.test_fill_scalarN)rN   rO   rP   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	S )
TestUnicodeArrayNonzeroc                 C   s   t tjdgtjd  d S r  )r   r'   r   rr  rE   r=   r=   r>   "test_empty_ustring_array_is_falseyY#  s    z:TestUnicodeArrayNonzero.test_empty_ustring_array_is_falseyc                 C   s(   t jdgt jd}d|d< t|  d S )Neggsr   r  r   r'   r   rr  r   r   r=   r=   r>   'test_whitespace_ustring_array_is_falsey\#  s    z?TestUnicodeArrayNonzero.test_whitespace_ustring_array_is_falseyc                 C   s(   t jdgt jd}d|d< t|  d S )Nr  r   r  r   r  r   r=   r=   r>   %test_all_null_ustring_array_is_falseya#  s    z=TestUnicodeArrayNonzero.test_all_null_ustring_array_is_falseyc                 C   s&   t jdgt jd}d|d< t| d S )Nr  r   r  r   r  r   r=   r=   r>   (test_null_inside_ustring_array_is_truthyf#  s    z@TestUnicodeArrayNonzero.test_null_inside_ustring_array_is_truthyN)rN   rO   rP   r   r  r  r  r=   r=   r=   r>   r  W#  s   r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )
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_0dn#  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_formats#  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_formatw#  s    zTestFormat.test_1d_formatN)rN   rO   rP   r  r	  r
  r=   r=   r=   r>   r  l#  s   r  )r   c                   @   s   e Zd Zdd Zdd Zdd Zejjde	
dd	d
g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	
dd	d
ggdddddd d!d"gd#d$d% Zd&d' ZdS )(
TestCTypesc                 C   s>   t dddgdddgg}tt|jj tt|jjd d S r  )r'   r   r	   r)  _ctypesr  r7   )rF   test_arrr=   r=   r>   test_ctypes_is_available#  s    z#TestCTypes.test_ctypes_is_availablec                 C   sd   ddl m} d |_zDtdddgdddgg}tt|jj|j t	t
|jjd	 W 5 t|_X d S )
Nr   )r2  r#   r"   r   r   rH   r   r   )Z
numpy.corer2  r)  r'   r   r   ru   r  Z_missing_ctypesr	   r  r7   )rF   r2  r  r=   r=   r>   test_ctypes_is_not_available#  s    
z'TestCTypes.test_ctypes_is_not_availablec                 C   s   d| j _| S )NF)rJ   rK   r   r=   r=   r>   _make_readonly#  s    zTestCTypes._make_readonlyrS   r#   r"   r   r   r   r   Zfourr  r  r   rn  rI  rD   r   r   r   r:  Nr   Z1dZ2dZ
structuredZoverlappingr(   r2   zempty-2dr   r  c                 C   sX   |  }t|}|jtj}~t  t| d k	d ~trDt  t| d kd d S Nz,ctypes pointer did not hold onto a referencez3unknowable whether ctypes pointer holds a reference)	r  rw  rx  r)  Zdata_asc_void_pr   r   r   rF   rS   Zarr_refZ
ctypes_ptrr=   r=   r>   #test_ctypes_data_as_holds_reference#  s    
z.TestCTypes.test_ctypes_data_as_holds_referencec                 C   sZ   t d g }t|}|jj}~t  t| d k	d ~t	rFt  t| d kd d S r  )
r'   r   r  rw  rx  r)  Z_as_parameter_r   r   r   r  r=   r=   r>   (test_ctypes_as_parameter_holds_reference#  s    
z3TestCTypes.test_ctypes_as_parameter_holds_reference)rN   rO   rP   r  r  r  r   r   r   r'   r   r*   r   r   r(   r2   r  r  r=   r=   r=   r>   r  ~#  s@   
r  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 NrH   r  r   r   r  )r'   r  r2   r  r	   rq   rF   r	  r  rJ  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 r  )r'   r  r2   r  r	   rq   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   ,   r  r   r#   r   )	r'   rC   r   r	  Z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  r  r   rH   )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   r7  )r'   rC   r   r	  r(  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   raiser  )r'   rC   r2   r8  r	   r   )rF   rD   r  r=   r=   r>   test_take_mode_raise#  s    z(TestWritebackIfCopy.test_take_mode_raisec              	   C   sv   t dddgdddgdddgg}t jddd}ddg}t j|||dd	 t|t dddgdddgdddgg d S )
Nr#   r   r  r   r   irB   r  r  )r'   r   r2   r  r	   )rF   rD   r  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	  ra  r~  r  r=   r=   r>   test_flatiter__array__
$  s    z*TestWritebackIfCopy.test_flatiter__array__c              	   C   sR   t jdtddd}t j|||d}t|t dddgdd	d
gdddgg d S )Nr   r   r   r  rt  rd  r0  r[  6   B   E   Z   o   )r'   rC   r  r   r  r	   r   rS  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
|k 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   r+  .r  )r|   r*  r+  r'   rC   r   r	  r   rJ   r   rv   r	   r)  r$   )rF   r*  r+  rS   arr_wbr=   r=   r>   test_view_assign$  s    
z$TestWritebackIfCopy.test_view_assignz9increments self in dealloc; ignore since deprecated path.rn   c              	   C   sT   t  D}|t tddd}|j}t| t	|j
dksFtW 5 Q R X d S )Nr   r   r#   )r   r   r  r'   rC   r   r	  rl  Znpy_abuse_writebackifcopyr   logr~   )rF   r  rS   rx   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|k d|d< || t|| t|jjdk t|jd  trt|t	
| d|d< t|| d S )Nr   )r*  npy_discardr   r   r+  .r  )r|   r*  r0  r'   rC   r   r	  r  r   r:  r  r   rJ   r   rv   r	   r)  r$   )rF   r*  r0  rS   rV  Zarr_cntr,  r=   r=   r>   test_view_discard_refcount3$  s"    

z.TestWritebackIfCopy.test_view_discard_refcountN)rN   rO   rP   r  r  r  r  r  r   r"  r#  r)  r-  r   r   r  r/  r1  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dddgdd Zdd Zdd Ze	j
ddddgdd ZdS )
TestArangec                 C   s   t tdtjdtj d S )Nzsize exceededr   )r   r)   r'   rC   rK  rE   r=   r=   r>   test_infiniteL$  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   r  rE   r=   r=   r>   test_nan_stepR$  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_stepX$  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_range`$  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s8tt|dksHtt|dksXtt|| d S )Nr   )stopr   )r8  r:  r   r   )r'   rC   r   r~   r   )rF   Zkeyword_stopZkeyword_zerotostopZkeyword_start_stopr=   r=   r>   test_start_stop_kwargf$  s    z TestArange.test_start_stop_kwargc              	   C   s   t jdtd}t|t jg dd t jddd}t|dg t jddd}t|ddg t jdddd}t|ddg tt t jddd W 5 Q R X d S )	NFr   r  Tr"   r   r   r   )r'   rC   r  r   r   r   r  r   )rF   rJ  r=   r=   r>   test_arange_booleansp$  s    zTestArange.test_arange_booleansr   r-  r  Z5ic              	   C   sN   t |}ttt|}tjtd| d t j	d|d W 5 Q R X d S )N'arange\(\) not supported for inputs .* r  r"   r   )
r'   r   reescaper   rU  r   r  r   rC   )rF   r   
DType_namer=   r=   r>   test_rejects_bad_dtypes$  s    
z"TestArange.test_rejects_bad_dtypesc              	   C   sJ   t tttdj}tjt	d| d t
dd W 5 Q R X d S )NrD   r=  r  r   )r>  r?  r   rU  r'   r   r   r   r  r   rC   )rF   r@  r=   r=   r>   test_rejects_strings$  s
    zTestArange.test_rejects_stringsc                 C   sJ   t jdddd}t jdddd}|jdks.t|jdks<tt|| d S )Nr#   rp   rJ  r   rI  )r'   rC   r   r~   r   )rF   Zres_beZres_ler=   r=   r>   test_byteswapped$  s
    zTestArange.test_byteswappedwhichr   r#   r"   c              	   C   s^   dddg}t d||< t j| jt jks.td g g||< tt t j|  W 5 Q R X d S )Nr   r#   r"   r  )r'   r   rC   r   r~   r   r  r)   )rF   rD  r  r=   r=   r>   test_error_paths_and_promotion$  s    
z)TestArange.test_error_paths_and_promotionN)rN   rO   rP   r3  r4  r6  r9  r;  r<  r   r   r   rA  rB  rC  rE  r=   r=   r=   r>   r2  K$  s   

r2  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S )TestArrayFinalizez Tests __array_finalize__ c                 C   s6   G dd dt j}t d|}t|j|jk d S )Nc                   @   s   e Zd Zdd ZdS )z7TestArrayFinalize.test_receives_base.<locals>.SavesBasec                 S   s   | j | _d S rR   )rv   
saved_baser  r=   r=   r>   r7  $  s    zJTestArrayFinalize.test_receives_base.<locals>.SavesBase.__array_finalize__NrN   rO   rP   r7  r=   r=   r=   r>   	SavesBase$  s   rI  r#   )r'   r6   r   rW   r   rG  rv   )rF   rI  rD   r=   r=   r>   test_receives_base$  s    z$TestArrayFinalize.test_receives_basec              	   C   s@   G dd dt j}tjtdd t d| W 5 Q R X d S )Nc                   @   s   e Zd Zedd ZdS )z?TestArrayFinalize.test_bad_finalize1.<locals>.BadAttributeArrayc                 S   s   t dd S Nboohoo!r9  rE   r=   r=   r>   r7  $  s    zRTestArrayFinalize.test_bad_finalize1.<locals>.BadAttributeArray.__array_finalize__N)rN   rO   rP   r-  r7  r=   r=   r=   r>   BadAttributeArray$  s   rM  znot callabler  rB   r'   r6   r   r  r   rC   rW   rF   rM  r=   r=   r>   test_bad_finalize1$  s    z$TestArrayFinalize.test_bad_finalize1c              	   C   s@   G dd dt j}tjtdd t d| W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z?TestArrayFinalize.test_bad_finalize2.<locals>.BadAttributeArrayc                 S   s   t dd S rK  r9  rE   r=   r=   r>   r7  $  s    zRTestArrayFinalize.test_bad_finalize2.<locals>.BadAttributeArray.__array_finalize__NrH  r=   r=   r=   r>   rM  $  s   rM  ztakes 1 positionalr  rB   rN  rO  r=   r=   r>   test_bad_finalize2$  s    z$TestArrayFinalize.test_bad_finalize2c              	   C   s@   G dd dt j}tjtdd t d| W 5 Q R X d S )Nc                   @   s   e Zd Zdd ZdS )z?TestArrayFinalize.test_bad_finalize3.<locals>.BadAttributeArrayc                 S   s   t dd S rK  r9  r  r=   r=   r>   r7  $  s    zRTestArrayFinalize.test_bad_finalize3.<locals>.BadAttributeArray.__array_finalize__NrH  r=   r=   r=   r>   rM  $  s   rM  rL  r  rB   )r'   r6   r   r  r   rC   rW   rO  r=   r=   r>   test_bad_finalize3$  s    z$TestArrayFinalize.test_bad_finalize3c              	   C   s   G dd dt j}G dd d}t | }t|d }tt}|| W 5 Q R X |jj	d }~t
t|| t  t
| d k	d ~t  t
| d k	d ~t  t
| d kd	 d S )
Nc                   @   s   e Zd Zdd ZdS )zBTestArrayFinalize.test_lifetime_on_error.<locals>.RaisesInFinalizec                 S   s   t | d S rR   r  r  r=   r=   r>   r7  $  s    zUTestArrayFinalize.test_lifetime_on_error.<locals>.RaisesInFinalize.__array_finalize__NrH  r=   r=   r=   r>   RaisesInFinalize$  s   rS  c                   @   s   e Zd ZdS )z7TestArrayFinalize.test_lifetime_on_error.<locals>.DummyNrM   r=   r=   r=   r>   Dummy$  s    rT  r=   r   z!object should not already be deadz*obj_arr should not hold the last referencezno references should remain)r'   r6   r   rw  rx  r   r   rW   rF  r  r   ru   r   )rF   rS  rT  rP  Zobj_refr   Zobj_subarrayr=   r=   r>   test_lifetime_on_error$  s"    
z(TestArrayFinalize.test_lifetime_on_errorc                 C   s4   G dd dt j}t d|}t|jd k 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 rR   )superr7  saved_resultr  r  r=   r>   r7  $  s    zNTestArrayFinalize.test_can_use_super.<locals>.SuperFinalize.__array_finalize__)rN   rO   rP   r7  __classcell__r=   r=   r  r>   SuperFinalize$  s   rY  r#   )r'   r6   r   rW   r   rW  )rF   rY  rD   r=   r=   r>   test_can_use_super$  s    z$TestArrayFinalize.test_can_use_superN)
rN   rO   rP   r  rJ  rP  rQ  rR  rU  rZ  r=   r=   r=   r>   rF  $  s   		"rF  c                  C   s   t d} tt| jdd d S )NrH      âr&   )r'   rC   r   r)   r  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 ]B}| }t||kd t||kd t||kd t||kd qHd S )Nc                   @   s   e Zd Zdd Zdd ZdS )z*test_equal_override.<locals>.MyAlwaysEqualc                 S   s   dS )Nr  r=   r  r=   r=   r>   r  %  s    z1test_equal_override.<locals>.MyAlwaysEqual.__eq__c                 S   s   dS )Nr  r=   r  r=   r=   r>   r  %  s    z1test_equal_override.<locals>.MyAlwaysEqual.__ne__N)rN   rO   rP   r  r  r=   r=   r=   r>   MyAlwaysEqual%  s   r]  c                   @   s   e Zd ZdZdS )z-test_equal_override.<locals>.MyAlwaysEqualOldr  Nr/  r=   r=   r=   r>   MyAlwaysEqualOld	%  s   r^  c                   @   s   e Zd ZdZdS )z-test_equal_override.<locals>.MyAlwaysEqualNewNr5  r=   r=   r=   r>   MyAlwaysEqualNew%  s   r_  r  r   r  r   r  r  r  )r]  r^  r_  r   Zmy_always_equal_clsZmy_always_equalr=   r=   r>   test_equal_override$  s    r`  funnpfunr   r   r  c                 C   s,   |t ||}| |}||}t|| d S rR   )r  r   )ra  rb  r   r   r  r  gotr  r=   r=   r>   test_npymath_complex%  s    rd  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P | D ]@\}}	t||D ]*\}
}||
}||}|	|}t|| qqxW 5 Q R X d S )Nr   )	npy_log10npy_coshnpy_sinhnpy_tannpy_tanhr#   ignore)r  )r|   re  rf  rg  rh  ri  r'   log10coshsinhtantanhrK  r  r  r   r@  Zerrstater  r  r  r   )re  rf  rg  rh  ri  r  r_   ri   ra  rb  r   r   r  rc  r  r=   r=   r>   test_npymath_real*%  s(        rp  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	| qt jd| d
d }t 
| t jddd
}|d d d	f |d d d	f< d S )Nzu1,c8TrH  zu4,c8rD   r   r`   r  r#   r   r   ZALIGNEDFr  Zc8)r'   r   r	   r*   rJ   rl  Zget_struct_alignmentsrY  r+   r1   rJ  )	rF  rG  Zd3r   r   r+   r9   r  dstr=   r=   r>    test_uintalignment_and_alignment?%  s    
rr  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestAlignmentc                 C   s   t ||||f}t||||d}|d kr4t|j}t|jd d | d t|drft|j|| nt|j|f| t|j| |dkrt	|j
j| n@|dkr|jdkrt	|j
j| n|d krt	|j
j| nt d S )NrH  r$   r   r!   r   r  )r2  r?   r'   r   r+   r	   r4   r,   r7   r   rJ   r  r9   r  r)   )rF   r7   r   r    r8   r   r   r=   r=   r>   r#  i%  s"    

zTestAlignment.checkc                 C   sr   dD ]h}dD ]^}dD ]T}t tjd dg D ]:}|dkr:q,|ddd	|ffD ]}| |t||| qJq,qqqd S )
N)
r#   r"   r   r   r   r'  r   r   r   N)r   r#   r   r  )r   r  Nr  zi4,i4,i4r  r#   r"   r   )r  r'   r  r#  r   )rF   r8   rm  r    r   r7   r=   r=   r>   test_various_alignments~%  s    z%TestAlignment.test_various_alignmentsc              
   C   s$  dD ]}t dtj}t dtj|d}t dtj|d}t }|tjd |d W 5 Q R X |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   r'  r   Nr   rH  zCasting complex valuesr  r"   )
r?   r'   r   r  r@  r   r  r  rA  r  )rF   r8   Zxf64Zxc64Zxf128r  r4  r=   r=   r>   test_strided_loop_alignments%  s&    

z*TestAlignment.test_strided_loop_alignmentsN)rN   rO   rP   r#  rt  ru  r=   r=   r=   r>   rs  c%  s   rs  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   r7  r   r#   r   r3   r%   r   r   )	r'   rC   r:  r;  Zgetfieldr	   r   r  r)   )rD   r   r  r   r=   r=   r>   test_getfield%  s    


rv  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S )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 5 Q R X 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   rI  r   r"    the last axis must be contiguousr  rN  r   r   r   r   )r'   rC   r   r  r)   rW   r   rg  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 5 Q R X tjtdd |d d t jf d W 5 Q R X d	gd
gdgg}t|d d t jf d| d S )NrH   rI  r   r"   rx  r  r-  z When changing to a smaller dtyper1        rb   )r'   rC   r   r  r)   rW   rg  r   ry  r=   r=   r>   test_smaller_dtype_not_multiple%  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   rN  r   rB   r"   i   i  i 	 i  i  rI  )r'   rC   r   r   r   rW   ry  r=   r=   r>   test_larger_dtype_multiple%  s    ( z(TestViewDtype.test_larger_dtype_multiplec              	   C   sx   t jdddddd d dd d f }tjtdd |d W 5 Q R X d	gd
gdgdgdgg}t|d| d S )Nr   rN  r   rB   r"   zWhen changing to a larger dtyper  r-  s     s    s    	s    s    rb   )r'   rC   r   r   r  r)   rW   r   ry  r=   r=   r>   test_larger_dtype_not_multiple%  s    ( z,TestViewDtype.test_larger_dtype_not_multiplec              	   C   s@   t jdddddj}tjtdd |d W 5 Q R X d S )	Nr'  rI  r   r   r   rx  r  rN  )r'   rC   r   r	  r   r  r)   rW   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 )Nr  r  r   r"   r   r   r#   r   r  i  i  i  i  i  i  i  i	  i
  i  i  rN  )r'   rC   r   r  r   rW   ry  r=   r=   r>   test_non_c_contiguous%  s        z#TestViewDtype.test_non_c_contiguousN)
rN   rO   rP   r  rz  r}  r~  r  r  r  r=   r=   r=   r>   rw  %  s   	rw  r=  r   r   r  r   r  r   `   rL        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   quickr  heapr   r"  rH   r   r"   )r'   r  r  samplerA  r  rF  r7   r	   r  rK  r  r   )r=  rS   ZinfarrZ	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  r  r  )r'   r  r  r  r   r  r   r  rA  rF  r7   r	   r  )rngr=  ZminvmaxvrS   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  r  r  )r'   r  r  r  r   r   r  rA  rF  r7   r	   r  )r  r=  r  rS   r=   r=   r>   test_sort_uint!&  s    r  )collections.abcr  r  r:  r   r/   r!  r  r-   r)  r  r@  r>  rw  r   
contextlibr   Znumpy.compatr   rn  r[  rv  r   r  Znumpyr'   r|   re   rl  Znumpy.core._rational_testsr   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   Znumpy.testing._private.utilsr   r   Znumpy.core.tests._localesr   Znumpy.lib.recfunctionsr   r   r   r  r?   r@   r   r   r  r$  rE  rR  ry  r}  r  rM  rv  r  r  r  rS  rd  ro  rq  r  r  r  r  r  r  r
  r  r$  r'  r7  r@  rJ  r  r  r  r  r  r  r   r  r  r:  rA  r{  r  r  r  r  r  r  r  r  r   r   r  r  r  r  Znumpy.core._internalr  r  r  r(   rX  ro  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r2  rF  r\  r`  Znpy_cabsabsoluteZnpy_cargZanglerK  r  Zcomplexfloating__subclasses__rd  rp  rr  rs  rv  rw  r  r  r  r=   r=   r=   r>   <module>   sr  L$ 4 muh`  P   &Z`              @   f- 6 -  N?B7   ^%Hc}  t<  ' Z )M&V k   T S"-
c &/Q\q]P

$G@    
