U
    SA{iG? ã                   @   s0  d dl Z d dl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Zd dl	m
Z
 d dlmZ d dl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 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dd	„ ZEd
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 dd„ dƒZMG dd„ dƒZNG dd„ dƒZOG dd„ dƒZPG d d!„ d!ƒZQG d"d#„ d#ƒZRG d$d%„ d%ƒZSG d&d'„ d'ƒZTG d(d)„ d)ƒZUG d*d+„ d+ƒZVG d,d-„ d-ƒZWG d.d/„ d/ƒZXG d0d1„ d1ƒZYG d2d3„ d3ƒZZdud5d6„Z[dvd8d9„Z\G d:d;„ d;ƒZ]G d<d=„ d=ƒZ^G d>d?„ d?ƒZ_G d@dA„ dAƒZ`eja bdBdCejcdD  ejcdE  ¡eja bdFd dGdHg¡G dIdJ„ dJƒƒƒZdG dKdL„ dLƒZeG dMdN„ dNƒZfG dOdP„ dPƒZgG dQdR„ dRƒZhG dSdT„ dTƒZiG dUdV„ dVƒZjG dWdX„ dXƒZkG dYdZ„ dZƒZlG d[d\„ d\ƒZmG d]d^„ d^ƒZnG d_d`„ d`ƒZoG dadb„ dbƒZpG dcdd„ ddƒZqG dedf„ dfƒZrG dgdh„ dhƒZsG didj„ djƒZtG dkdl„ dlƒZuG dmdn„ dnƒZvG dodp„ dpƒZwG dqdr„ drƒZxG dsdt„ dtƒZydS )wé    N©ÚFraction)Úarrays)Úma)Úassert_Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_raisesÚassert_allcloseÚIS_PYPYÚassert_warnsÚassert_raises_regexÚsuppress_warningsÚHAS_REFCOUNT)Úrand) Úadd_newdoc_ufuncÚangleÚaverageÚbartlettÚblackmanÚcorrcoefÚcovÚdeleteÚdiffÚdigitizeÚextractÚflipudÚgradientÚhammingÚhanningÚi0ÚinsertÚinterpÚkaiserÚmeshgridÚmsortÚ	piecewiseÚplaceÚrot90ÚselectÚsetxor1dÚsincÚtrapzÚ
trim_zerosÚunwrapÚuniqueÚ	vectorizec                 C   s   t  | ¡}t j ||¡}|S ©N)ÚnpÚarangeÚaddÚouter)ÚnÚdata© r:   úF/tmp/pip-unpacked-wheel-m6chaliv/numpy/lib/tests/test_function_base.pyÚget_mat   s    
r<   c                 C   s(   t  t  | |¡jt j¡}| |_||_|S )za
    Like real + 1j * imag, but behaves as expected when imag contains non-finite
    values
    )r4   ÚzerosÚ	broadcastÚshapeÚcomplex_ÚrealÚimag)rA   rB   Úretr:   r:   r;   Ú_make_complex$   s    rD   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestRot90c                 C   s¤  t ttt d¡ƒ t ttt d¡dd� t ttt d¡dd� t ttt d¡dd� t ttt d¡dd� d	d
dgdddgg}ddgd
dgd	dgg}dddgdd
d	gg}dd	gdd
gddgg}d	d
dgdddgg}tdddƒD ]}tt||d�|ƒ qÞtdddƒD ]}tt||d�|ƒ �qtdddƒD ]}tt||d�|ƒ �q(td	ddƒD ]}tt||d�|ƒ �qNttt|dd�dd�|ƒ tt|d
dd�t|ddd�ƒ d S )Né   ©é   rH   rH   ©r   é   rH   ©Úaxes©rH   rH   ©r   rH   ©rJ   rJ   )éþÿÿÿrJ   r   rJ   rH   é   é   éýÿÿÿé   )ÚkrP   éÿÿÿÿ©r   rJ   ©rJ   r   ©rU   rL   )r   Ú
ValueErrorr*   r4   ÚonesÚranger   )ÚselfÚaZb1Zb2Zb3Zb4rU   r:   r:   r;   Ú
test_basic0   s@    ÿþÿþÿzTestRot90.test_basicc                 C   sR   t  d¡}tt|ƒjdƒ tt|dd�t|dd�ƒ tt|dd�t|dd�ƒ d S )N)é2   é(   rQ   )ra   r`   rQ   rN   rK   ©r   rV   ©rJ   rH   ©rP   rV   )r4   r[   r   r*   r?   ©r]   r^   r:   r:   r;   Ú	test_axesP   s    
zTestRot90.test_axesc                 C   sü   t  d¡ d¡}ddgddggddgd	d
ggg}ddgddggd
dgd	dggg}d	dgddggd
dgddggg}d	d
gddggddgddggg}tt|dd�|ƒ tt|dd�|ƒ tt|dd�|ƒ tdd
ƒD ]&}tt||dd�t||d dd�ƒ qÐd S )Né   rG   rH   rQ   é   é   r   rJ   rF   rR   rW   rK   rX   rc   )rH   r   rY   )r4   r5   Úreshaper   r*   r\   )r]   r^   Z
a_rot90_01Z
a_rot90_12Z
a_rot90_20Z
a_rot90_10rU   r:   r:   r;   Útest_rotation_axesV   sH    ÿÿþÿÿþÿÿþÿÿþÿzTestRot90.test_rotation_axesN)Ú__name__Ú
__module__Ú__qualname__r_   rf   rk   r:   r:   r:   r;   rE   /   s    rE   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 )ÚTestFlipc                 C   sl   t tjtjt d¡dd� t tjtjt d¡dd� t tjtjt d¡dd� t tjtjt d¡dd� d S )NrF   rJ   ©Úaxis©rF   rF   rH   rS   ©r   rQ   )r   r4   Ú	AxisErrorÚflipr[   ©r]   r:   r:   r;   rf   u   s    zTestFlip.test_axesc                 C   sn   t dƒ}|d d …d d d…f }tt |d¡|ƒ dddgdddgg}dddgdddgg}tt |d¡|ƒ d S )NrF   rV   rJ   r   rH   rQ   rR   ©r<   r   r4   ru   ©r]   r^   Úbr:   r:   r;   Útest_basic_lr{   s    ÿÿzTestFlip.test_basic_lrc                 C   sn   t dƒ}|d d d…d d …f }tt |d¡|ƒ dddgdddgg}dddgdddgg}tt |d¡|ƒ d S )NrF   rV   r   rJ   rH   rQ   rR   rw   rx   r:   r:   r;   Útest_basic_ud…   s    ÿÿzTestFlip.test_basic_udc                 C   sb   t  ddgddggddgddggg¡}t  ddgddggddgddggg¡}tt  |d¡|ƒ d S ©	Nr   rJ   rH   rQ   rF   rR   rh   ri   ©r4   Úarrayr   ru   rx   r:   r:   r;   Útest_3d_swap_axis0�   s    
ÿÿþ
ÿÿþzTestFlip.test_3d_swap_axis0c                 C   sb   t  ddgddggddgddggg¡}t  ddgddggddgddggg¡}tt  |d¡|ƒ d S r|   r}   rx   r:   r:   r;   Útest_3d_swap_axis1œ   s    
ÿÿþ
ÿÿþzTestFlip.test_3d_swap_axis1c                 C   sb   t  ddgddggddgddggg¡}t  ddgddggddgddggg¡}tt  |d¡|ƒ d S r|   r}   rx   r:   r:   r;   Útest_3d_swap_axis2©   s    
ÿÿþ
ÿÿþzTestFlip.test_3d_swap_axis2c              	   C   sR   t  d¡ dddd¡}t|jƒD ],}tt  ||¡t  | d|¡¡ |d¡ƒ q d S )Néx   rH   rQ   rF   rR   r   )	r4   r5   rj   r\   Úndimr   ru   r   Úswapaxes)r]   r^   Úir:   r:   r;   Útest_4d¶   s
    ÿzTestFlip.test_4dc                 C   sH   t  dddgdddgg¡}t  dddgdddgg¡}tt  |¡|ƒ d S )NrJ   rH   rQ   rF   rR   rh   r}   rx   r:   r:   r;   Útest_default_axis¼   s    ÿÿzTestFlip.test_default_axisc                 C   s²   t  ddgddggddgddggg¡}tt j|d	d
�|ƒ t  ddgddggddgddggg¡}tt j|dd
�|ƒ t  ddgddggddgddggg¡}tt j|dd
�|ƒ d S )Nr   rJ   rH   rQ   rF   rR   rh   ri   r:   rp   rN   rc   r}   ©r]   r^   ry   Úcr:   r:   r;   Útest_multiple_axesÃ   s0    
ÿÿþ
ÿÿþ
ÿÿþzTestFlip.test_multiple_axesN)rl   rm   rn   rf   rz   r{   r   r€   r�   r†   r‡   rŠ   r:   r:   r:   r;   ro   s   s   

ro   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAnyc                 C   sT   ddddg}ddddg}ddddg}t t |¡ƒ t t |¡ƒ t t |¡ ƒ d S ©Nr   rJ   )r   r4   Úany©r]   Úy1Úy2Úy3r:   r:   r;   r_   Ü   s    zTestAny.test_basicc                 C   sb   dddgdddgdddgg}t t |¡ƒ ttj|dd�dddgƒ ttj|dd�dddgƒ d S ©Nr   rJ   rp   )r   r4   r�   r   Zsometrue©r]   r�   r:   r:   r;   Útest_ndä   s    zTestAny.test_ndN©rl   rm   rn   r_   r”   r:   r:   r:   r;   r‹   Ú   s   r‹   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAllc                 C   sl   ddddg}ddddg}ddddg}t t |¡ ƒ t t |¡ƒ t t |¡ ƒ t t t |¡ ¡ƒ d S rŒ   )r   r4   Úallr~   rŽ   r:   r:   r;   r_   í   s    zTestAll.test_basicc                 C   sd   dddgdddgdddgg}t t |¡ ƒ ttj|dd�dddgƒ ttj|dd�dddgƒ d S r’   )r   r4   r—   r   Zalltruer“   r:   r:   r;   r”   ö   s    zTestAll.test_ndNr•   r:   r:   r:   r;   r–   ë   s   	r–   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCopyc                 C   sR   t  ddgddgg¡}t  |¡}t||ƒ d|d< t|d dƒ t|d dƒ d S )NrJ   rH   rQ   rF   é
   )r   r   )r4   r~   Úcopyr   r   )r]   r^   Úa_copyr:   r:   r;   r_   ÿ   s    

zTestCopy.test_basicc                 C   s°   t  ddgddgg¡}t|jjƒ t|jj ƒ t jddgddggdd�}t|jj ƒ t|jjƒ t  |¡}t|jjƒ t|jj ƒ t  |¡}t|jj ƒ t|jjƒ d S )NrJ   rH   rQ   rF   ÚF©Úorder)r4   r~   r   ÚflagsÚc_contiguousÚf_contiguousrš   )r]   r^   Za_fortr›   Za_fort_copyr:   r:   r;   Ú
test_order  s    

zTestCopy.test_orderc                 C   sV   t  d¡}tt  tj|dd�¡ ƒ tt  tj|dd�¡ƒ tt  t |¡¡ ƒ d S )NrR   F)ZsubokT)r   r[   r   ZisMaskedArrayr4   rš   )r]   Zmxr:   r:   r;   Ú
test_subok  s    
zTestCopy.test_subokN)rl   rm   rn   r_   r¢   r£   r:   r:   r:   r;   r˜   ý   s   r˜   c                   @   s¬   e Zd Zdd„ Zej ddddgddgdd	dgd
gdgfdddgdddggddddggddgdddggd	d	d	ggfg¡dd„ ƒZdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS ) ÚTestAveragec                 C   sæ   t  dddg¡}tt|dd�dkƒ t  dddg¡}tt|dd�dkƒ d	d	d	g}tt|dd�d	kƒ t  d
¡}d|d< d|d< t| d¡t|dƒƒ t| d¡t|dƒƒ tddƒ}t| d¡t|dƒƒ t| d¡t|dƒƒ d S )NrJ   rH   rQ   r   rp   ç       @ç      ð?ç      @ç        rr   rW   rX   rR   )r4   r~   r   r   r[   r	   Úmeanr   )r]   r�   r�   r‘   Zy4Zy5r:   r:   r;   r_   "  s    


zTestAverage.test_basicz<x, axis, expected_avg, weights, expected_wavg, expected_wsumrJ   rH   rQ   Nr¥   rF   ç      ü?ç       @rR   rh   é   r   r¦   ç      @ç      @ç      #@c           
      C   s¶   t j||dd�}|jt  |¡ks$t‚t||ƒ t j|||dd�}|jt  |¡ksTt‚t||ƒ t j|||ddd�\}}	|jt  |¡ksŠt‚t||ƒ |	jt  |¡ks¨t‚t|	|ƒ d S )NT©rq   Úkeepdims)rq   Úweightsr±   )rq   r²   Úreturnedr±   )r4   r   r?   ÚAssertionErrorr   )
r]   Úxrq   Zexpected_avgr²   Zexpected_wavgZexpected_wsumÚavgZwavgZwsumr:   r:   r;   Útest_basic_keepdims4  s    

ÿ

zTestAverage.test_basic_keepdimsc                 C   sâ  t  d¡}t  d¡}t||d�}t  d¡d  ¡ d t  d¡ ¡  }t||ƒ t  dddgddd	gg¡}ddg}t||d
d�}t  dddg¡}t||ƒ d
d
dg}t||dd�}t  ddg¡}t||ƒ d
d
dgd
d
dgg}t  ddg¡}tt||dd�|ƒ tt||d�dƒ tdƒ 	t j
¡}	tdƒ 	t j¡}
tt j|	|
d�jt  |	|
¡kƒ t  dddg¡ dd¡}t  ddd	g¡ dd¡}t j||ddd�}t  dddg¡}t||ƒ t j||ddd�}t  dgdgdgg¡}t||ƒ d S )Nr™   ©r²   rH   r¦   rJ   rQ   rF   rR   rh   r   )r²   rq   r§   r­   r®   ç      @F)r²   rq   r±   r¥   T)r4   r5   r   Úsumr	   r~   r   r   r   ÚastypeÚfloat32Úfloat64r   ÚdtypeÚresult_typerj   )r]   ÚyÚwÚactualZdesiredr�   Úw0Úw1Úw2r‘   Zw3rµ   r:   r:   r;   Útest_weightsK  s:    

$



 
zTestAverage.test_weightsc                 C   s&  t  dddgdddgg¡}t|dd�\}}t|d	ƒ t|d
dd�\}}t|t  dddg¡ƒ t|ddd�\}}t|t  ddg¡ƒ ddg}t||d
dd�\}}t|t  dddg¡ƒ dddg}t||ddd�\}}t|t  d	d	g¡ƒ d
d
dgdddgg}t||ddd�\}}t|t  dd	g¡ƒ d S )NrJ   rH   rQ   rF   rR   rh   T)r³   r¹   r   r¥   r§   )r²   rq   r³   r¦   )r4   r~   r   r   r   )r]   rÀ   r¶   ZsclrÃ   rÄ   rÅ   r:   r:   r;   Útest_returnedw  s     

zTestAverage.test_returnedc                 C   sz   G dd„ dt jƒ}t  ddgddgg¡ |¡}t  ddgddgg¡ |¡}ttt  |¡ƒ|ƒ ttt j||d�ƒ|ƒ d S )Nc                   @   s   e Zd ZdS )z-TestAverage.test_subclasses.<locals>.subclassN©rl   rm   rn   r:   r:   r:   r;   Úsubclass’  s   rÉ   rJ   rH   rQ   rF   r¸   )r4   Úndarrayr~   Úviewr   Útyper   )r]   rÉ   r^   rÁ   r:   r:   r;   Útest_subclasses‘  s
    zTestAverage.test_subclassesc                 C   sr   dddddg}|D ]Z\}}}t jddgdd	gg|d
�}t jddgdd	gg|d
�}tt j||d�jt  |¡ƒ qd S )N)Úi4rÎ   Úf8)rÎ   Úf4rÏ   )rÐ   rÎ   rÏ   )rÐ   rÐ   rÐ   )rÐ   rÏ   rÏ   rJ   rH   rQ   rF   ©r¾   r¸   )r4   r~   r   r   r¾   )r]   ZtypsÚatÚwtÚrtr^   rÁ   r:   r:   r;   Útest_upcastingš  s     ÿzTestAverage.test_upcastingc                 C   sX   t  dd„ tdƒD ƒ¡}t  dd„ tdƒD ƒ¡}|| ¡  }t| d¡t||d�ƒ d S )Nc                 S   s   g | ]}t  |¡‘qS r:   ©ÚdecimalÚDecimal)Ú.0rµ   r:   r:   r;   Ú
<listcomp>£  s     z1TestAverage.test_object_dtype.<locals>.<listcomp>r™   c                 S   s   g | ]}t  d ¡‘qS ©rJ   rÖ   )rÙ   Ú_r:   r:   r;   rÚ   ¤  s     r   r¸   )r4   r~   r\   rº   r	   r©   r   )r]   r^   rÁ   r:   r:   r;   Útest_object_dtype¢  s    zTestAverage.test_object_dtype)rl   rm   rn   r_   ÚpytestÚmarkÚparametrizer·   rÆ   rÇ   rÍ   rÕ   rÝ   r:   r:   r:   r;   r¤      s"     
 
ÿÿþ
,	r¤   c                   @   s¢   e Zd Ze dddg¡e dddg¡e ddd	g¡gZe d
d
d
g¡e d
dd
g¡e d
d
dg¡gZddd„Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú
TestSelectrJ   rH   rQ   rF   rR   rh   ri   rg   é	   FTr   c                    s<   g }t t|ƒƒD ]&‰ |‡ fdd„t||ƒD ƒp2|g7 }q|S )Nc                    s    g | ]\}}|ˆ  r|ˆ  ‘qS r:   r:   )rÙ   ÚVÚC©Úmr:   r;   rÚ   ³  s      z&TestSelect._select.<locals>.<listcomp>)r\   ÚlenÚzip)r]   ZcondÚvaluesÚdefaultÚoutputr:   rå   r;   Ú_select°  s    $zTestSelect._selectc                 C   sL   | j }| j}tt||dd�| j||dd�ƒ tt|ƒdƒ tt|ƒdƒ d S )Né   ©rê   rQ   )ÚchoicesÚ
conditionsr   r+   rì   r   rç   ©r]   rï   rð   r:   r:   r;   r_   ¶  s    ÿzTestSelect.test_basicc                 C   sf   t  d¡t  dddg¡g}dt  d¡ dd¡g}tt||ƒt  d¡ƒ ttdgdgdgd	�jd
ƒ d S )NTFrJ   é   rF   rQ   ©rF   rQ   r   rî   rÛ   )	r4   r~   r5   rj   r   r+   r[   r   r?   ©r]   rð   rï   r:   r:   r;   Útest_broadcasting¿  s    zTestSelect.test_broadcastingc                 C   sˆ   t t| j| jdƒjtjƒ dd„ | jD ƒ}t t| j|ƒjtjƒ t dddtj	ddg¡}t 
|¡}t t|g|gƒd	d	d	tj	d	d	gƒ d S )
Nù              ð?c                 S   s   g | ]}|  tj¡‘qS r:   )r»   r4   Úint8)rÙ   Úchoicer:   r:   r;   rÚ   Ë  s     z0TestSelect.test_return_dtype.<locals>.<listcomp>rJ   rH   rQ   rR   ri   r   )r   r+   rð   rï   r¾   r4   r@   r÷   r~   ÚnanÚisnan)r]   rï   Údræ   r:   r:   r;   Útest_return_dtypeÆ  s    ÿ
zTestSelect.test_return_dtypec                 C   s"   t ttg g dƒ t ttg g ƒ d S )Nù              @)r   rZ   r+   rv   r:   r:   r;   Útest_deprecated_emptyÒ  s    z TestSelect.test_deprecated_emptyc                 C   sj   | j }| jd d … }|d  tj¡|d< ttt||ƒ |d  tj¡|d< ttt||ƒ ttt||ƒ d S ©Nr   )	rï   rð   r»   r4   Úint_r   Ú	TypeErrorr+   Úuint8rñ   r:   r:   r;   Útest_non_bool_deprecationÖ  s    z$TestSelect.test_non_bool_deprecationc                 C   s2   t  dg¡gd }t  dg¡gd }t||ƒ d S )NFéd   rJ   )r4   r~   r+   rô   r:   r:   r;   Útest_many_argumentsß  s    zTestSelect.test_many_argumentsN)r   )rl   rm   rn   r4   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d„ Zd	d
„ Zdd„ Zdd„ Z	e
j dddg¡dd„ ƒZdS )Ú
TestInsertc              
   C   sª  dddg}t t|ddƒddddgƒ t t|ddƒddddgƒ t t|dddgdddgƒddddddgƒ t t|ddddgƒddddddgƒ t t|dddgdƒddddddgƒ t t|tdd dƒdƒddddddgƒ t t|dddgdddgƒddddddgƒ tjddgtjd	�}t t|d|d ƒd
d
dgƒ t t|g g ƒ|ƒ tjdd��R}t ddt	¡ t t|t dgd ¡dƒdddddddgƒ t
|d jt	kƒ W 5 Q R X d S )NrJ   rH   rQ   r   rV   râ   ri   rg   rÑ   r¨   r¦   T©ÚrecordÚalwaysÚ rF   )r   r#   Úslicer4   r~   r½   ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningr   Úcategory)r]   r^   ry   rÁ   r:   r:   r;   r_   è  s$    
*$$&* ÿzTestInsert.test_basicc              
   C   s’  dddgg}dddgdddgg}t t|ddgƒddddgƒ t t|ddddgdd�|ƒ t t|dddd�|ƒ t t|dddd�ddddggƒ t ddgddgddgg¡}t dd¡ d¡ dd¡}tj|d d …dd…f t dd¡ d¡ dd¡j|d d …dd…f fdd�}t t|dgdgdgdggdd�|ƒ t t|dgdddgdd�|ƒ t t|ddddgdd�|ƒ t t|ddgdgdggdd�|ƒ t d¡ dd¡}t t|d d …d d…f d|d d …df dd�|ƒ t t|d d…d d …f d|dd d …f dd�|ƒ t d¡ d¡}t t|d|d d …d d …df d	d�t|d|d d …d d …df dd�ƒ t t|d|d d …dd d …f d
d�t|d|d d …dd d …f dd�ƒ t	tj
t|d|d d …dd d …f dd� t	tj
t|d|d d …dd d …f dd� t d¡ d¡}t t|d|d d …d d …df d	d�t|d|d d …d d …df dd�ƒ t t|d|d d …dd d …f d
d�t|d|d d …dd d …f dd�ƒ d S )NrJ   rH   r   rp   rQ   rF   é   ©rH   rQ   rF   rV   rP   éüÿÿÿ)r   r#   r4   r~   r5   Úrepeatrj   ÚconcatenateÚTr   rt   )r]   r^   Úrry   r‰   r:   r:   r;   Útest_multidimü  sN    ÿ ,ÿþ$"22" ÿ" ÿ((" ÿ" ÿzTestInsert.test_multidimc              	   C   s\   t  d¡}t t j¡� t|g ddd� W 5 Q R X t t¡� t|g ddd� W 5 Q R X d S )NrJ   rH   r   rp   Únonsense)r4   r~   rÞ   Úraisesrt   r#   r  re   r:   r:   r;   Útest_0d&  s
    
zTestInsert.test_0dc              	   C   sä   G dd„ dt jƒ}t  d¡ |¡}ttt  |ddg¡|ƒƒ ttt  |g g ¡|ƒƒ ttt  |ddgddg¡|ƒƒ ttt  |tddƒddg¡|ƒƒ ttt  |tdddƒg ¡|ƒƒ t  d¡ |¡}ttt  |ddg¡|ƒƒ d S )	Nc                   @   s   e Zd ZdS )z*TestInsert.test_subclass.<locals>.SubClassNrÈ   r:   r:   r:   r;   ÚSubClass.  s   r  r™   r   rJ   rH   rP   rV   )	r4   rÊ   r5   rË   r   Ú
isinstancer#   r  r~   ©r]   r  r^   r:   r:   r;   Útest_subclass-  s     " zTestInsert.test_subclassc                 C   sD   t  dddg¡}t  dddg|dddg¡ t|t  dddg¡ƒ d S )NrJ   r   rH   rQ   rF   rR   )r4   r~   r#   r   ©r]   rµ   r:   r:   r;   Útest_index_array_copied:  s    z"TestInsert.test_index_array_copiedc                 C   s‚   t jdddgddgd�}d}t  |d|¡}t|d t j||jd�ƒ dgd	 }t  |dd	g|¡}t|dd
g t j||jd�ƒ d S )N)rJ   r^   )rH   ry   )rQ   r‰   )Úfoor…   )ÚbarÚa1rÑ   )rF   rû   r   rH   rQ   )r4   r~   r#   r   r¾   )r]   r^   Úvalry   r:   r:   r;   Útest_structured_array?  s    ÿ
z TestInsert.test_structured_arrayc              	   C   sp   t  t¡�( t dddgt ddg¡ddg¡ W 5 Q R X t  t¡�$ t dddgtjg td�g ¡ W 5 Q R X d S )	Nr   rJ   rH   r¦   r¥   r™   é   rÑ   )rÞ   r  Ú
IndexErrorr4   r#   r~   Úfloatrv   r:   r:   r;   Útest_index_floatsI  s    ,zTestInsert.test_index_floatsÚidxrF   r  c              	   C   s8   t jtdd��  t dddg|gddg¡ W 5 Q R X d S )Nzout of bounds©Úmatchr   rJ   rH   rQ   rF   )rÞ   r  r(  r4   r#   )r]   r+  r:   r:   r;   Útest_index_out_of_boundsO  s    z#TestInsert.test_index_out_of_boundsN)rl   rm   rn   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 )ÚTestAmaxc                 C   sv   dddddddg}t t |¡dƒ ddd	gddd
gdddgg}t tj|dd�ddd	gƒ t tj|dd�d	ddgƒ d S )NrQ   rF   rR   r™   rS   éûÿÿÿr¹   ç      $@ç      "@r®   rg   r§   r¥   r   rp   r«   rJ   )r   r4   Zamaxrx   r:   r:   r;   r_   W  s    þzTestAmax.test_basicN©rl   rm   rn   r_   r:   r:   r:   r;   r/  U  s   r/  c                   @   s   e Zd Zdd„ ZdS )ÚTestAminc                 C   sv   dddddddg}t t |¡dƒ ddd	gdd
dgdddgg}t tj|dd�dddgƒ t tj|dd�dddgƒ d S )NrQ   rF   rR   r™   rS   r0  r¹   g      Àr2  r1  r®   rg   r§   r¥   r   rp   rJ   r­   )r   r4   Zaminrx   r:   r:   r;   r_   c  s    þzTestAmin.test_basicNr3  r:   r:   r:   r;   r4  a  s   r4  c                   @   s   e Zd Zdd„ ZdS )ÚTestPtpc              	   C   s´   t  dddddddg¡}t|jdd	�d
ƒ 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	�dddgƒ t|jddd�dddggƒ t|jddd�dggƒ d S )NrQ   rF   rR   r™   rS   r0  r¹   r   rp   ç      .@r2  r1  r®   rg   r§   r¥   ç      @rV   Tr°   rW   r«   )r4   r~   r   Zptprx   r:   r:   r;   r_   o  s    þzTestPtp.test_basicNr3  r:   r:   r:   r;   r5  m  s   r5  c                   @   s   e Zd Zdd„ ZdS )Ú
TestCumsumc              
   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t j	t j
f
D ]Æ}t  ||¡}t  ||¡}t  dddddddg|¡}tt j|dd�|ƒ t  ddddgddddgddddgg|¡}tt j|dd�|ƒ t  ddddgddddgddddgg|¡}tt j|dd�|ƒ q`d S )NrJ   rH   r™   r¬   rh   rR   rF   rQ   ri   râ   rT   r  é   é#   é'   r   rp   rg   é   é   é   é   é   é   )r4   r÷   r  Úint16Úuint16Úint32Úuint32r¼   r½   Ú	complex64Ú
complex128r~   r   Úcumsum)r]   ÚbaÚba2Úctyper^   Úa2Útgtr:   r:   r;   r_   ~  s.    "   þ  ÿ  ÿzTestCumsum.test_basicNr3  r:   r:   r:   r;   r8  |  s   r8  c                   @   s   e Zd Zdd„ ZdS )ÚTestProdc              	   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rœt
tt j|ƒ t
tt j|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 )NrJ   rH   r™   r¬   rh   rR   rF   rQ   ri   râ   ©Ú1ry   r   rp   é g  r`   é$   éT   é´   rV   r  éb  éX  )r4   rB  rC  rD  rE  r¼   r½   rF  rG  r~   r   ÚArithmeticErrorÚprodr   r   ©r]   rI  rJ  rK  r^   rL  r:   r:   r;   r_   •  s(    "   ÿÿÿzTestProd.test_basicNr3  r:   r:   r:   r;   rN  “  s   rN  c                   @   s   e Zd Zdd„ ZdS )ÚTestCumprodc                 C   sN  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rªt
tt j|ƒ t
tt j|dƒ t
tt j|ƒ qXtt j|dd�t  	dddddddg|¡ƒ tt j|dd�t  	ddddgddddgddddgg|¡ƒ tt j|dd�t  	ddddgddddgddddgg|¡ƒ qXd S ) NrJ   rH   r™   r¬   rh   rR   rF   rQ   ri   râ   rO  rV   rp   r'  éÜ   i(  iÈ  rQ  r   rò   é   rR  r`   rS  rT  r  r9  éÒ   rU  r‚   rV  )r4   rB  rC  rD  rE  r¼   r½   rF  rG  r~   r   rW  Zcumprodr   rY  r:   r:   r;   r_   ©  sN    "   ÿ  ÿÿÿ

þþÿ

þþÿzTestCumprod.test_basicNr3  r:   r:   r:   r;   rZ  §  s   rZ  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 )ÚTestDiffc                 C   sì   dddddg}t  ddddg¡}t  d	d	dg¡}t  d
dg¡}tt|ƒ|ƒ tt|dd�|ƒ tt|dd�|ƒ dddddg}t  ddddg¡}tt|ƒ|ƒ ddddg}t  dddg¡}t  ddg¡}tt|ƒ|ƒ tt|dd�|ƒ d S )NrJ   rF   rh   ri   rò   rQ   rH   rR   rV   r   ©r8   çš™™™™™ñ?çš™™™™™@r§   gš™™™™™É¿çš™™™™™¹¿gš™™™™™é?gš™™™™™	Àçš™™™™™¹?TF)r4   r~   r   r   r	   )r]   rµ   ÚoutÚout2Úout3r:   r:   r;   r_   Ä  s    zTestDiff.test_basicc                 C   sö   t  d¡}d|d d …dd d…d d …f< t  d¡}d|d d …dd d…d d …f< tt|ƒt  d¡ƒ tt|dd�t  d¡ƒ tt|dd�t  d	¡ƒ tt|dd�|ƒ tt|d
d�|ƒ tt jt|dd� tt jt|dd� t  dt j¡}tt	t|ƒ d S )N)r™   r'  r9  rJ   rH   )r™   é   r9  rV   )r™   r'  é   rp   r   )râ   r'  r9  rP   rQ   r  gæÇqÇñ?)
r4   r=   r[   r   r   r   rt   r~   r½   rZ   )r]   rµ   Úexpr:   r:   r;   Ú	test_axis×  s    

zTestDiff.test_axisc                 C   s*  dt dddƒ }|d d …d d …dd …f |d d …d d …d d…f  }|d d …d d …dd …f |d d …d d …d d…f  }|dd …d d …d d …f |d d…d d …d d …f  }|dd …d d …d d …f |d d…d d …d d …f  }tt|ƒ|ƒ tt|dd�|ƒ tt|dd	�|ƒ tt|ddd
�|ƒ d S )Nr'  r™   r9  rJ   rV   rH   r_  r   rp   )r8   rq   )r   r   r   )r]   rµ   Zout1re  rf  Zout4r:   r:   r;   r”   ç  s    4444zTestDiff.test_ndc                    sÄ   t tdƒƒ‰ tttˆ dd� ‡ fdd„tddƒD ƒ}ddgdgg g g}ttˆ dd�ˆ kƒ tt||ƒdd	�D ]R\}\}}tt|ƒt	j
kƒ t||ƒ t|jt	jƒ tt|ƒtdtˆ ƒ| ƒƒ qld S )
NrQ   rV   r_  c                    s   g | ]}t ˆ |d �‘qS )r_  )r   )rÙ   r8   ©rµ   r:   r;   rÚ   õ  s     z#TestDiff.test_n.<locals>.<listcomp>rJ   rR   r   ©Ústart)Úlistr\   r   rZ   r   r   Ú	enumeraterè   rÌ   r4   rÊ   r   r   r¾   r   rç   Úmax)r]   rë   Úexpectedr8   rd  r:   rk  r;   Útest_nò  s    
zTestDiff.test_nc                 C   sŒ   t jddt jd�}t jddgdd�t jdgdd�g}| t jg dd�gd ¡ t|dd�D ],\}}t||d	�}t||ƒ t|j	|j	ƒ qZd S )
Nz
1066-10-13z
1066-10-16rÑ   rJ   útimedelta64[D]r   rQ   rl  r_  )
r4   r5   Z
datetime64r~   Úextendro  r   r   r   r¾   )r]   rµ   rq  r8   ri  rd  r:   r:   r;   Ú
test_timesþ  s    þ
zTestDiff.test_timesc                 C   sö   t jddgddgddgddgd	d
ggddgddgddgddgddggd�}t|ƒ}t|jdgdgdgdgdggƒ t|jdgdgdgdgdggƒ tt|ƒt|ƒkƒ t|dd�}t|jg g g g g gƒ t|jg g g g g gƒ tt|ƒt|ƒkƒ d S )NrJ   rH   rQ   rF   rR   rh   ri   rg   râ   r™   FT©Úmaskr_  )r   r~   r   r   r9   rw  r   rÌ   )r]   rµ   rd  rf  r:   r:   r;   r  
  s&    $  ÿÿ   ÿzTestDiff.test_subclassc                 C   sN  t  d¡d }tt|dd�t  d¡ƒ tt|dgd�t  d¡ƒ tt  t j|dd�¡|ƒ tt|ddgd�t  d¡ƒ t  d¡ dd¡}t j|ddd	�}ddgddgg}t||ƒ t j|ddgdggd	�}t||ƒ t j|ddd	�}ddgddgg}t||ƒ t j|dddggd	�}t||ƒ ttt j|t  	d
¡d� tt j
t|ddd� d S )NrR   rJ   r   )ÚprependrV   rh   rF   rH   )rq   rx  ©rQ   rQ   rQ   )rx  rq   )r4   r5   r   r   r[   rH  rj   r   rZ   r=   rt   ©r]   rµ   Úresultrq  r:   r:   r;   Útest_prepend  s$    



zTestDiff.test_prependc                 C   sB  t  d¡}t|dd�}dddddg}t||ƒ t|dgd�}t||ƒ t|ddgd�}|dg }t||ƒ t  d¡ dd¡}t j|ddd�}dd	gdd
gg}t||ƒ t j|ddgdggd�}t||ƒ t j|ddd�}ddgdd
gg}t||ƒ t j|dddggd�}t||ƒ ttt j|t  d¡d� tt jt|ddd� d S )NrR   r   )ÚappendrJ   r  rH   rF   )rq   r}  rV   rS   rP   ry  rQ   )r}  rq   )	r4   r5   r   r   rj   r   rZ   r=   rt   rz  r:   r:   r;   Útest_append1  s,    








zTestDiff.test_appendN)rl   rm   rn   r_   rj  r”   rr  ru  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ej de dg¡dgg¡dd„ ƒZdd„ ZdS )Ú
TestDeletec                 C   s,   t  d¡| _t  d¡ d¡ ddd¡| _d S )NrR   rH   rJ   )r4   r5   r^   r  rj   Únd_arv   r:   r:   r;   Úsetup_methodP  s    zTestDelete.setup_methodc                 C   sˆ   t | j|ƒ}t | j|dd�}d| }tt|| j|f ƒ| j|d� t|dd d …df | jd|df ƒ}t|| jdd d …df |d� d S )NrJ   rp   zDelete failed for obj: %r)Úerr_msgr   )r   r^   r€  r   r,   )r]   ÚindicesÚa_delÚnd_a_delÚmsgÚxorr:   r:   r;   Ú_check_inverse_of_slicingT  s    ÿ$z$TestDelete._check_inverse_of_slicingc                 C   sV   dddddddg}dd	dd
g}|D ].}|D ]$}|D ]}t |||ƒ}|  |¡ q2q*q"d S )NéúÿÿÿrP   r   rJ   rH   rF   rR   rS   rV   rQ   )r  rˆ  )r]   ZlimsZstepsrm  ÚstopÚstepÚsr:   r:   r;   Útest_slices]  s    zTestDelete.test_slicesc              	   C   sú   |   t ddgddgg¡¡ t t¡� t| jdgƒ W 5 Q R X t t¡� t| jdgƒ W 5 Q R X |   ddddg¡ |   dddddg¡ t t¡� t| jdƒ W 5 Q R X t t¡� t| jdƒ W 5 Q R X t t¡� t| jdgd	 ƒ W 5 Q R X d S )
Nr   rJ   rH   r  iœÿÿÿrV   TFrF   )	rˆ  r4   r~   rÞ   r  r(  r   r^   rZ   rv   r:   r:   r;   Ú
test_fancyf  s    zTestDelete.test_fancyc                 C   s   |   d¡ |   d¡ d S )Nr   r  )rˆ  rv   r:   r:   r;   Útest_single{  s    
zTestDelete.test_singlec              	   C   sX   t  d¡}t t j¡� t|g dd� W 5 Q R X t t¡� t|g dd� W 5 Q R X d S )NrJ   r   rp   r  )r4   r~   rÞ   r  rt   r   r  re   r:   r:   r;   r    s
    
zTestDelete.test_0dc                 C   s–   G dd„ dt jƒ}| j |¡}ttt|dƒ|ƒƒ ttt|g ƒ|ƒƒ ttt|ddgƒ|ƒƒ ttt|tddƒƒ|ƒƒ ttt|tddƒƒ|ƒƒ d S )Nc                   @   s   e Zd ZdS )z*TestDelete.test_subclass.<locals>.SubClassNrÈ   r:   r:   r:   r;   r  ‡  s   r  r   rJ   rH   rP   )r4   rÊ   r^   rË   r   r  r   r  r  r:   r:   r;   r  †  s    zTestDelete.test_subclassc                 C   sR   t  d¡jdddd�}t|tdd ƒdd�}t|jj|jjƒ t|jj|jjƒ d S )	Nr™   rH   rR   rœ   r�   é<   rJ   rp   )	r4   r5   rj   r   r  r   rŸ   r    r¡   )r]   rU   ræ   r:   r:   r;   Útest_array_order_preserve�  s    z$TestDelete.test_array_order_preservec              	   C   sh   t  t¡�" t dddgt ddg¡¡ W 5 Q R X t  t¡�" t dddgtjg td�¡ W 5 Q R X d S )Nr   rJ   rH   r¦   r¥   rÑ   )rÞ   r  r(  r4   r   r~   r)  rv   r:   r:   r;   r*  š  s    &zTestDelete.test_index_floatsÚindexerrJ   c                 C   sX   t | jdƒ}t | j|ƒ}t||ƒ t | jddd�}t | jt dg¡dd�}t||ƒ d S )NrJ   rp   )r   r^   r   r€  r4   r~   )r]   r’  Z	a_del_intr„  Znd_a_del_intr…  r:   r:   r;   Útest_single_item_array   s    
z!TestDelete.test_single_item_arrayc              	   C   sú   t t d¡t dg¡ƒ}t|t d¡ƒ t d¡}tjdgtd�}tjdgtd�}t ||dd�}t||ƒ t ||dd�}t||d d …d d…f ƒ t t¡�" t t d	¡tjdgt	d�ƒ W 5 Q R X t t¡�" t t d	¡tjdgd
d�ƒ W 5 Q R X d S )NrJ   F)rQ   rJ   rÑ   TrV   rp   r   rH   zm8[ns])
r   r4   r[   r~   r   ÚboolrÞ   r  r(  Úobject)r]   Úresrµ   Z
false_maskZ	true_maskr:   r:   r;   Útest_single_item_array_non_intª  s    

&z)TestDelete.test_single_item_array_non_intN)rl   rm   rn   r�  rˆ  r�  rŽ  r�  r  r  r‘  r*  rÞ   rß   rà   r4   r~   r“  r—  r:   r:   r:   r;   r  N  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ej dejejejejg¡dd„ ƒZej dejejejejg¡dd„ ƒZej dejejejejg¡dd„ ƒZej dejejejejg¡dd „ ƒZd!S )"ÚTestGradientc                 C   sf   ddgddgg}t  |¡}t  ddgddgg¡t  ddgddgg¡g}tt|ƒ|ƒ tt|ƒ|ƒ d S )NrJ   rQ   rF   r¥   r§   r¨   r¦   )r4   r~   r   r   ©r]   Úvrµ   Údxr:   r:   r;   r_   Å  s    
ÿzTestGradient.test_basicc              	   C   sÌ   t  t  d¡¡}dddddg}t  d¡ dd¡}tt  d¡dƒ tt  d¡t  d¡ƒ tt  d¡|ƒ t|d	ƒ t|t  d	¡ƒ t|||ƒ t||d
ƒ t||dd� ttdt|t j	|gd
 dd�dƒ d S )NrR   r¦   r¥   r®   r2  ç      &@é   r§   ç      ø?rH   rJ   rp   z.*scalars or 1drV   )
r4   rH  r[   r5   rj   r   r~   r   rZ   Ústack)r]   r›  Z	dx_unevenÚf_2dr:   r:   r;   Ú	test_argsÍ  s"    
   ÿzTestGradient.test_argsc                 C   sÚ   t  d¡ dd¡}t  t  d¡¡}ttt||t  d¡ƒ ttt|dt  d¡ƒ ttt|t  d¡t  d¡ƒ ttt||ƒ ttt||dd� ttt||||ƒ ttt|dddƒ ttt|||dd� ttt|dddd� d S )Nr�  rR   rH   rJ   rW   rp   )	r4   r5   rj   rH  r[   r   rZ   r   r  )r]   r   rµ   r:   r:   r;   Útest_badargsæ  s    zTestGradient.test_badargsc                 C   s^   t jdddddddgdd	�}t jd
ddddddgdd	�}tt|ƒ|ƒ t|jt  d¡kƒ d S )Nz
1910-08-16z
1910-08-11z
1910-08-10z
1910-08-12z
1910-10-12z
1910-12-12z
1912-12-12zdatetime64[D]rÑ   r0  rS   r   é   é=   iŒ  iÛ  rs  ©r4   r~   r   r   r   r¾   ©r]   rµ   r›  r:   r:   r;   Útest_datetime64ö  s      ÿýþzTestGradient.test_datetime64c                 C   s–   t jjddgddggddgddggd�}t|ƒd }tt|ƒt|ƒƒ t|j|jk	ƒ t j d¡}t jj	|d< t j|dd	� t
|jddd
ddgƒ d S )NrJ   rQ   rF   Frv  r   rR   rH   ©Ú
edge_orderT)r4   r   r~   r   r   rÌ   r   Z_maskr5   Úmaskedr   rw  )r]   rµ   rd  Úx2r:   r:   r;   Útest_masked  s    ÿzTestGradient.test_maskedc                 C   s  t  ddd¡}|d |d  }d|d  d|d   d|  }d|d  d|  d }t  t j||dd	�| d ¡}tt  |d
k ¡dkƒ t j d¡ t  t j d¡¡}d|d  d|d   d|  }d|d  d|  d }t  t j||dd	�| d ¡}tt  |d
k ¡dkƒ d S )Nr   rJ   r™   rH   rQ   rF   rh   rg   r¨  g¸…ëQ¸ž?T)	r4   ÚlinspaceÚabsr   r   r—   ÚrandomÚseedÚsort)r]   rµ   r›  rÀ   Z
analyticalZ	num_errorr:   r:   r;   Útest_second_order_accurate  s      z'TestGradient.test_second_order_accuratec                 C   s  t  ddddddg¡}t  |d¡| dd¡ }t  d	d
ddddg¡}t  d¡}t  ddddd
d	gd¡}t  ddddd
dgd¡}t  dddd
dd	gd¡}t  dddd
ddgd¡}d|fd|ffD ]ä\}}	t|dd|d�}
t|||d|d�}t|||d |d�}t|
|ƒ t||ƒ t|
d |	jƒ t|
d |	ƒ t|dd|d�}
t||d|d�}t	|
j
|j
kƒ t||	jƒ t|dd|d�}
t||d|d�}t	|
j
|j
kƒ t||	ƒ q¾d|fd|ffD ]Œ\}}	t|||d|d�}
t|||d |d�}t|
|ƒ t|
d |	jƒ t|
d |	ƒ t||d|d�}
t|
|	jƒ t||d|d�}
t|
|	ƒ �q´t|||ddd�}
t|||ddd�}t|
d |d ƒ t|
d |d ƒ t|
d |jƒ t|
d |ƒ t|||ddd�}
t|||ddd�}t|
d |d ƒ t|
d |d ƒ t|
d |jƒ t|
d |ƒ d S )Nr   r¥   r§   r­   r®   )rh   rJ   rV   rJ   r¨   ç      à?r¦   r7  r¹   rž  ç      @ç      à¿g333333û?ç      Ð?g      Ð¿rH   rW   )rq   r©  rX   )r4   r~   Ztilerj   r5   r   r   r	   r  r   r?   )r]   ÚfZx_unevenZx_evenZfdx_even_ord1Zfdx_even_ord2Zfdx_uneven_ord1Zfdx_uneven_ord2r©  Zexp_resÚres1Úres2Úres3r:   r:   r;   Útest_spacing%  st    
 ÿ ÿ

 ÿ ÿ
zTestGradient.test_spacingc                 C   s@  ddgddgg}t  |¡}t  ddgddgg¡t  ddgddgg¡g}tt|dd	�|d ƒ tt|dd	�|d ƒ tt|d
d	�|d ƒ tt|dd	�|d |d gƒ tt|d d	�|d |d gƒ tt|d d	�t|ƒƒ tt|dddd	�|d d |d d gƒ ttt|dddd	� tt jt|dd	� tt jt|dd	� d S )NrJ   rQ   rF   r¥   r§   r¨   r¦   r   rp   rV   rX   rH   rS   )r4   r~   r   r   r	   r   r  rt   r™  r:   r:   r;   Útest_specific_axese  s"    
ÿÿzTestGradient.test_specific_axesc                 C   s^   t jdddddddgdd	�}t jd
ddddddgdd	�}tt|ƒ|ƒ t|jt  d¡kƒ d S )Nr0  rS   r™   rò   r¤  iA  é,  rs  rÑ   rH   ri   r�  éš   éw   iëÿÿÿr¥  r¦  r:   r:   r;   Útest_timedelta64  s    þþzTestGradient.test_timedelta64c                 C   sF   t jt jt jfD ]0}t jdddg|d�}tt|ƒjt  |¡jƒ qd S )NrJ   rH   rQ   rÑ   )	r4   Úfloat16r¼   r½   r~   r   r   r¾   r   )r]   Údtrµ   r:   r:   r;   Útest_inexact_dtypesŠ  s    z TestGradient.test_inexact_dtypesc                 C   s–   t t d¡dd� t t d¡dd� ttt t d¡dd� ttt t d¡dd� ttt t d¡dd� ttt t d¡dd� ttt t d¡dd� d S )NrH   rJ   r¨  rQ   r   )r   r4   r5   r   rZ   rv   r:   r:   r;   Útest_values�  s    zTestGradient.test_valuesÚf_dtypec                 C   s8   t jdddddg|d�}t|ƒ}t|dgt|ƒ ƒ d S )NrR   rF   rQ   rH   rJ   rÑ   rV   ©r4   r~   r   r   rç   )r]   rÅ  r·  Úgr:   r:   r;   Útest_f_decreasing_unsigned_intœ  s    z+TestGradient.test_f_decreasing_unsigned_intc                 C   sR   t  |¡j}t  ddg¡}t jd|g|d�}t||ƒ}t||d d gd ƒ d S )NrJ   rQ   rV   rÑ   rH   )r4   Úiinforp  r~   r   r   )r]   rÅ  Úmaxintrµ   r·  Údfdxr:   r:   r;   Útest_f_signed_int_big_jump£  s
    
z'TestGradient.test_f_signed_int_big_jumpÚx_dtypec                 C   sF   t jdddg|d�}t  dddg¡}t||ƒ}t|dgt|ƒ ƒ d S )NrQ   rH   rJ   rÑ   r   rF   rP   rÆ  )r]   rÍ  rµ   r·  rË  r:   r:   r;   Útest_x_decreasing_unsigned¬  s    
z'TestGradient.test_x_decreasing_unsignedc                 C   sX   t  |¡j}t  |¡j}t jd|g|d�}t  |d dg¡}t||ƒ}t|ddgƒ d S )NrV   rÑ   rH   r   r³  )r4   rÉ  Úminrp  r~   r   r   )r]   rÍ  ZminintrÊ  rµ   r·  rË  r:   r:   r;   Útest_x_signed_int_big_jump´  s    
z'TestGradient.test_x_signed_int_big_jumpN)rl   rm   rn   r_   r¡  r¢  r§  r¬  r²  r»  r¼  rÀ  rÃ  rÄ  rÞ   rß   rà   r4   r  rC  rE  Zuint64rÈ  r÷   rB  rD  Zint64rÌ  rÎ  rÐ  r:   r:   r:   r;   r˜  Ã  s>   @ ÿ
 ÿ
 ÿ
 ÿr˜  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestAnglec                 C   s¸   dt  d¡d dt  d¡ d  dddddd	g}t|ƒ}t  d
¡t  d¡dt jd t jt j d t  d
¡ t jt  d
¡ g}t|dd�}t  |¡d t j }t||dƒ t||dƒ d S )Nù      ð?      @rH   r¥   rö   rJ   rV   ù       €      ð¿ù      ð?      Ày      ð¿      @r§   r¦   r   T)ÚdegrT  r¬   )r4   Úsqrtr   ÚarctanÚpir~   r
   )r]   rµ   rÀ   ZyoÚzZzor:   r:   r;   r_   Á  s,          ÿ    

 ýzTestAngle.test_basicc                 C   sŒ   t j ddt  d¡d d g¡}t jj|d< t j t  d¡dt  d¡g¡}t jj|d< t|ƒ}tt|ƒt|ƒƒ t|j	|j	ƒ t||ƒ d S )NrÒ  rJ   rH   ù      ð?      ð?r§   r   r¦   )
r4   r   r~   rÖ  rª  r×  r   r   rÌ   rw  )r]   rµ   rq  rÂ   r:   r:   r;   r  Î  s     zTestAngle.test_subclassN)rl   rm   rn   r_   r  r:   r:   r:   r;   rÑ  ¿  s   rÑ  c                
   @   sÄ   e Zd Ze ddddddddg¡Ze e¡Ze e	¡Z
e e¡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dg¡e dddg¡e dddg¡g¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestTrimZerosr   rJ   rH   rQ   rF   c                    s   d}‡ fdd„|D ƒS )N)r^   ry   r‰   rû   c                 3   s   | ]}t ˆ |ƒV  qd S r3   )Úgetattr)rÙ   Únamerv   r:   r;   Ú	<genexpr>â  s     z'TestTrimZeros.values.<locals>.<genexpr>r:   )r]   Z
attr_namesr:   rv   r;   ré   à  s    zTestTrimZeros.valuesc                 C   s6   t jdd… }|  ¡ D ]}t|ƒ}t||| ƒ qd S )NrH   rV   ©r4   Ús_ré   r/   r   ©r]   ÚslcÚarrr–  r:   r:   r;   r_   ä  s    zTestTrimZeros.test_basicc                 C   s:   t jd d… }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrV   ry   ©Ztrimrß  rá  r:   r:   r;   Útest_leading_skipê  s    zTestTrimZeros.test_leading_skipc                 C   s:   t jdd … }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrH   rœ   rä  rß  rá  r:   r:   r;   Útest_trailing_skipð  s    z TestTrimZeros.test_trailing_skipc                 C   sZ   |   ¡ D ]L}tj||jd�}t|dd�}t|ƒdks8t‚t|dd�}t|ƒdkst‚qd S )NrÑ   ÚBrä  r   r·  )ré   r4   Z
zeros_liker¾   r/   rç   r´   )r]   Z_arrrã  r¸  r¹  r:   r:   r;   Útest_all_zeroö  s    zTestTrimZeros.test_all_zeroc                 C   s    t  d¡}t|ƒ}t||ƒ d S rÿ   )r4   r=   r/   r   ©r]   rã  r–  r:   r:   r;   Útest_size_zero   s    
zTestTrimZeros.test_size_zerorã  l            l            l            c                 C   s(   t jdd… }t|ƒ}t||| ƒ d S )NrJ   rH   )r4   rà  r/   r   )r]   rã  râ  r–  r:   r:   r;   Útest_overflow  s    zTestTrimZeros.test_overflowc                 C   s&   t  d dd g¡}t|ƒ}t||ƒ d S ©NrJ   )r4   r~   r/   r   ré  r:   r:   r;   Útest_no_trim  s    zTestTrimZeros.test_no_trimc                 C   s    t | j ¡ ƒ}t|tƒst‚d S r3   )r/   r^   Útolistr  rn  r´   )r]   r–  r:   r:   r;   Útest_list_to_list  s    zTestTrimZeros.test_list_to_listN)rl   rm   rn   r4   r~   r^   r»   r)  ry   Úcomplexr‰   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 )Ú
TestExtinsc              	   C   s>   t  dddddddg¡}t|dk|ƒ}t|dddddgƒ d S )NrJ   rQ   rH   )r4   r~   r   r   rx   r:   r:   r;   r_     s    zTestExtins.test_basicc              	      s  t ttdddgddgddgƒ t dddddd	d
g¡‰ tˆ dddddddgdddgƒ tˆ ddddddd
gƒ tˆ t d
¡g ƒ tˆ t dd	¡ƒ tˆ dddddddgd	dgƒ tˆ d	dddd	ddgƒ tt	d‡ fdd„ƒ t ddg¡‰ tˆ ddgdƒ tˆ ddgƒ d S )NrJ   rH   rQ   TFr   rF   rR   rg   ri   rh   râ   z!Cannot insert from an empty arrayc                	      s   t ˆ dddddddgg ƒS rŒ   )r)   r:   ©r^   r:   r;   Ú<lambda>0  ó    z'TestExtins.test_place.<locals>.<lambda>Z12Z34Ú9)
r   r  r)   r4   r~   r   r=   r5   r   rZ   rv   r:   rò  r;   Ú
test_place!  s     
ÿzTestExtins.test_placec                 C   sH   t dƒ}|dk}| ¡ }t||ƒ}t||dƒ t|||ƒ t||ƒ d S )Nr™   r³  r   )r   rš   r   r)   r   )r]   r^   rw  Úacr‰   r:   r:   r;   Ú	test_both7  s    
zTestExtins.test_bothN)rl   rm   rn   r_   rö  rø  r:   r:   r:   r;   rñ    s   rñ  r¦   c                 C   s   |t  | ¡ S r3   ©ÚmathÚfloor©rµ   rÀ   r:   r:   r;   Ú_foo1C  s    rý  r¨   c                 C   s   |t  | ¡ | S r3   rù  )rµ   rÀ   rÙ  r:   r:   r;   Ú_foo2G  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d)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGS )HÚTestVectorizec                 C   s@   dd„ }t |ƒ}|ddddgdddd	gƒ}t|dddd
gƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   ©r^   ry   r:   r:   r;   ÚaddsubtractN  s    z.TestVectorize.test_simple.<locals>.addsubtractr   rQ   rh   râ   rJ   rR   ri   rH   ©r2   r   ©r]   r  r·  r  r:   r:   r;   Útest_simpleM  s    zTestVectorize.test_simplec                 C   s8   dd„ }t |ƒ}|ddddgdƒ}t|ddd	d
gƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   r   r:   r:   r;   r  Y  s    z.TestVectorize.test_scalar.<locals>.addsubtractr   rQ   rh   râ   rR   rg   rJ   rF   r  r  r:   r:   r;   Útest_scalarX  s    zTestVectorize.test_scalarc                 C   s0   t  ddd¡}tdd„ ƒ}||ƒ}t||ƒ d S )NrS   rH   i'  c                 S   s   | S r3   r:   rk  r:   r:   r;   ró  e  rô  z*TestVectorize.test_large.<locals>.<lambda>)r4   r­  r2   r   )r]   rµ   r·  rÀ   r:   r:   r;   Ú
test_largec  s    zTestVectorize.test_largec                 C   sR   t tjƒ}t ddtj tjdtj dtj g¡}||ƒ}t |¡}t||ƒ d S )Nr   r³  rž  rH   )r2   rú  Úcosr4   r~   rØ  r
   )r]   r·  ÚargsÚr1Úr2r:   r:   r;   Ú
test_ufunci  s
    
(
zTestVectorize.test_ufuncc                 C   sl   ddd„}t |ƒ}t dddg¡}||ƒ}t dddg¡}t||ƒ ||dƒ}t dddg¡}t||ƒ d S )	NrJ   c                 S   s   | | S r3   r:   r   r:   r:   r;   r"  r  s    z(TestVectorize.test_keywords.<locals>.foorH   rQ   rF   rR   )rJ   ©r2   r4   r~   r   ©r]   r"  r·  r  r	  r
  r:   r:   r;   Útest_keywordsp  s    


zTestVectorize.test_keywordsc                 C   s:   t ttgd�}|t d¡dƒ}|t d¡ƒ}t||ƒ d S ©N©Úotypesr§   r¦   ©r2   rý  r)  r4   r5   r   ©r]   r·  r	  r
  r:   r:   r;   Ú test_keywords_with_otypes_order1~  s    z.TestVectorize.test_keywords_with_otypes_order1c                 C   s:   t ttgd�}|t d¡ƒ}|t d¡dƒ}t||ƒ d S r  r  r  r:   r:   r;   Ú test_keywords_with_otypes_order2ˆ  s    z.TestVectorize.test_keywords_with_otypes_order2c                 C   sT   t ttgd�}|t d¡ƒ}|t d¡dd�}|t d¡ƒ}t||ƒ t||ƒ d S )Nr  r§   r¦   ©rÀ   r  ©r]   r·  r	  r
  Zr3r:   r:   r;   Ú test_keywords_with_otypes_order3“  s    
z.TestVectorize.test_keywords_with_otypes_order3c                 C   sd   t ttgd�}|ddd�}|ddd�}|dƒ}t|tddd�ƒ t|tddd�ƒ t|tdƒƒ d S )Nr  çÍÌÌÌÌÌ$@r  )rÙ  rV   r  ©r2   rþ  r)  r   r  r:   r:   r;   Ú+test_keywords_with_otypes_several_kwd_args1Ÿ  s    z9TestVectorize.test_keywords_with_otypes_several_kwd_args1c                 C   sR   t ttgd�}|dddd�}|dddƒ}t|tdddd�ƒ t|tdddƒƒ d S )	Nr  r  r  rV   )rÙ  rµ   rÀ   rJ   rH   rQ   r  r  r:   r:   r;   Ú+test_keywords_with_otypes_several_kwd_args2¬  s
    z9TestVectorize.test_keywords_with_otypes_several_kwd_args2c                 C   s6   dd l }zt|jƒ W n tk
r0   tƒ ‚Y nX d S rÿ   )r¯  r2   Ú	randrangeÚ	Exceptionr´   )r]   r¯  r:   r:   r;   Útest_keywords_no_func_code·  s
    z(TestVectorize.test_keywords_no_func_codec                 C   s†   ddd„}t |ƒ}t dddg¡}||d�}t dddg¡}t||ƒ |d|d�}t||ƒ ||dd	�}t ddd
g¡}t||ƒ d S )NrJ   c                 S   s   | | S r3   r:   r   r:   r:   r;   r"  Ä  s    z5TestVectorize.test_keywords2_ticket_2100.<locals>.foorH   rQ   rò  rF   )ry   r^   ©ry   rR   )rJ   r  r  r:   r:   r;   Útest_keywords2_ticket_2100Á  s    



z(TestVectorize.test_keywords2_ticket_2100c                 C   sx   dd„ }t j|ddgd�}ddg}t||ddgdd	dgd
�ƒ t||ddgdd	dgd�ƒ t||ddgdd	dgƒƒ d S )Nc                 S   s.   t |ƒ}| d¡}|r*||  | d¡ }q|S rÿ   )rn  Úpop)rµ   ÚpZ_pr–  r:   r:   r;   Ú	mypolyvalÔ  s
    
z;TestVectorize.test_keywords3_ticket_2100.<locals>.mypolyvalr#  rJ   )ÚexcludedrQ   rh   r   rH   )rµ   r#  )r#  )r4   r2   r   )r]   r$  ZvpolyvalZansr:   r:   r;   Útest_keywords3_ticket_2100Ò  s    z(TestVectorize.test_keywords3_ticket_2100c                 C   s.   t dd„ ƒ}t|ddgddgd�ddgƒ d S )	Nc                  [   s   d}| D ]}|| | 9 }q|S ©Nr¦   r:   )Úkwr–  Z_kr:   r:   r;   r·  ã  s    z3TestVectorize.test_keywords4_ticket_2100.<locals>.frJ   rH   rQ   rF   r   rg   r  ©r]   r·  r:   r:   r;   Útest_keywords4_ticket_2100á  s    
z(TestVectorize.test_keywords4_ticket_2100c                 C   s,   t dd„ ƒ}t|ddgddgƒddgƒ d S )Nc                  W   s
   t  | ¡S r3   )r4   rX  )rš  r:   r:   r;   r·  î  s    z3TestVectorize.test_keywords5_ticket_2100.<locals>.frJ   rH   rQ   rF   rg   r  r)  r:   r:   r;   Útest_keywords5_ticket_2100ì  s    
z(TestVectorize.test_keywords5_ticket_2100c                 C   s    dd„ }t |ƒ}t|ƒ dƒ d S )Nc                   S   s   dS rì  r:   r:   r:   r:   r;   r"  õ  s    z5TestVectorize.test_coverage1_ticket_2100.<locals>.foorJ   r  ©r]   r"  r·  r:   r:   r;   Útest_coverage1_ticket_2100ô  s    z(TestVectorize.test_coverage1_ticket_2100c                 C   s>   dd„ }t |ƒ}t|j|jƒ d}t ||d�}t|j|ƒ d S )Nc                 S   s   | S )zOriginal documentationr:   rk  r:   r:   r;   r"  ü  s    z3TestVectorize.test_assigning_docstring.<locals>.foozProvided documentation)Údoc)r2   r   Ú__doc__)r]   r"  r·  r.  r:   r:   r;   Útest_assigning_docstringû  s    z&TestVectorize.test_assigning_docstringc                 C   s`   G dd„ dƒ}t t|ƒ jƒt d¡ƒt d¡d ƒ t t|jƒ|ƒ t d¡ƒt d¡d ƒ d S )Nc                   @   s   e Zd ZdZdd„ ZdS )z9TestVectorize.test_UnboundMethod_ticket_1156.<locals>.FoorH   c                 S   s
   || j  S r3   r   re   r:   r:   r;   r#    s    z=TestVectorize.test_UnboundMethod_ticket_1156.<locals>.Foo.barN)rl   rm   rn   ry   r#  r:   r:   r:   r;   ÚFoo	  s   r1  râ   rH   )r   r2   r#  r4   r5   )r]   r1  r:   r:   r;   Útest_UnboundMethod_ticket_1156  s    ÿÿz,TestVectorize.test_UnboundMethod_ticket_1156c                 C   sl   t dd„ ƒ}|t d¡ƒ}|t dd¡ƒ}t dd„ ƒ}|t dd¡ƒ}|t d¡ƒ}t||ƒ t||ƒ d S )Nc                 S   s   | S r3   r:   rk  r:   r:   r;   ró    rô  z@TestVectorize.test_execution_order_ticket_1487.<locals>.<lambda>rQ   rc  c                 S   s   | S r3   r:   rk  r:   r:   r;   ró    rô  )r2   r4   r5   r   )r]   Úf1Zres1aZres1bÚf2Zres2bZres2ar:   r:   r;   Ú test_execution_order_ticket_1487  s    
z.TestVectorize.test_execution_order_ticket_1487c                 C   s$   t  dd„ ¡}d}t|||ƒƒ d S )Nc                 S   s   | S r3   r:   rk  r:   r:   r;   ró  !  rô  z7TestVectorize.test_string_ticket_1892.<locals>.<lambda>Zd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789)r4   r2   r   )r]   r·  rŒ  r:   r:   r;   Útest_string_ticket_1892  s    z%TestVectorize.test_string_ticket_1892c                    sN   dg‰ t ‡ fdd„ƒ}d|_t d¡}t||ƒ|| ƒ tˆ d t|ƒƒ d S )Nr   c                    s   ˆ d  d7  < | d S )Nr   rJ   rH   r:   rk  ©Z_callsr:   r;   r·  )  s    z#TestVectorize.test_cache.<locals>.fTrR   )r2   Úcacher4   r5   r   r   rç   ©r]   r·  rµ   r:   r7  r;   Ú
test_cache%  s    
zTestVectorize.test_cachec                 C   s0   t  dd„ ¡}d|_t  d¡}t||ƒ|ƒ d S )Nc                 S   s   | S r3   r:   rk  r:   r:   r;   ró  4  rô  z+TestVectorize.test_otypes.<locals>.<lambda>r…   rR   )r4   r2   r  r5   r   r9  r:   r:   r;   Útest_otypes3  s    
zTestVectorize.test_otypesc              	   C   sŽ  t t d¡dgdgfƒ t t d¡dgdgfƒ t t d¡ddgdgfƒ t t d¡dgdgfƒ t t d	¡dgddgfƒ t t d
¡dddgdgfƒ t t d¡dgdgfƒ t t d¡dgdgfƒ t t d¡ddgdgfƒ t t d¡dgdgfƒ t t d¡dgddgfƒ t t d¡dddgdgfƒ ttƒ� t d¡ W 5 Q R X ttƒ� t d¡ W 5 Q R X ttƒ� t d¡ W 5 Q R X d S )Nz(x)->()rk  r:   z	(x,y)->()rü  z(x),(y)->()r  z(x)->(y)z(x)->(y),()z(),(a,b,c),(d)->(d,e))r^   ry   r‰   )rû   )rû   Úez(x )->()z( x , y )->(  )z(x),( y) ->()z(  x)-> (y )  z (x)->( y),( )z*(  ), ( a,  b,c )  ,(  d)   ->   (d  ,  e)z
(x)(y)->()z	(x),(y)->z
((x))->(x))r   ÚnfbZ_parse_gufunc_signaturer   rZ   rv   r:   r:   r;   Útest_parse_gufunc_signature9  sP    

ÿ
ÿ

ÿ
ÿ
ÿ

ÿ
ÿ

ÿ
ÿÿþ


z)TestVectorize.test_parse_gufunc_signaturec                 C   sD   dd„ }t |dd�}|ddddgd	dd
dgƒ}t|d	dd	dgƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   r   r:   r:   r;   r  \  s    z8TestVectorize.test_signature_simple.<locals>.addsubtractz	(),()->()©Ú	signaturer   rQ   rh   râ   rJ   rR   ri   rH   r  r  r:   r:   r;   Útest_signature_simple[  s    z#TestVectorize.test_signature_simplec                 C   s:   dd„ }t |dd�}|ddgddggƒ}t|ddgƒ d S )	Nc                 S   s   |   ¡ S r3   ©r©   rò  r:   r:   r;   r©   g  s    z4TestVectorize.test_signature_mean_last.<locals>.meanz(n)->()r?  rJ   rQ   rH   rF   r  )r]   r©   r·  r  r:   r:   r;   Útest_signature_mean_lastf  s    z&TestVectorize.test_signature_mean_lastc                 C   sB   dd„ }t |dd�}|ddgddggƒ}t|d	dgd	dggƒ d S )
Nc                 S   s   | |   ¡  S r3   rB  rò  r:   r:   r;   Úcentero  s    z3TestVectorize.test_signature_center.<locals>.centerú(n)->(n)r?  rJ   rQ   rH   rF   rV   r  )r]   rD  r·  r  r:   r:   r;   Útest_signature_centern  s    z#TestVectorize.test_signature_centerc                 C   sd   t dd„ dd�}|dddgƒ}tt|tƒo4t|ƒdkƒ t|d dddgƒ t|d dddgƒ d S )	Nc                 S   s   | | fS r3   r:   rk  r:   r:   r;   ró  w  rô  z:TestVectorize.test_signature_two_outputs.<locals>.<lambda>ú	()->(),()r?  rJ   rH   rQ   r   )r2   r   r  Útuplerç   r   ©r]   r·  r  r:   r:   r;   Útest_signature_two_outputsv  s
    z(TestVectorize.test_signature_two_outputsc                 C   s  t tjdd�}|ddgdddgƒ}t|dddgdddggƒ |ddgggdddgƒ}t|dddgdddggggƒ |ddgddggdddgƒ}t|dddgdddggdddgdddgggƒ |ddgdddgdddggƒ}t|dddgdddggdddgdddgggƒ d S )	Nz(a),(b)->(a,b)r?  rJ   rH   rQ   rF   rh   r   )r2   r4   r7   r   rI  r:   r:   r;   Útest_signature_outer}  s    ÿÿz"TestVectorize.test_signature_outerc                 C   s^   t dd„ dd�}|dddgƒ}t|ddgƒ |dddgdddggƒ}t|ddgddggƒ d S )	Nc                 S   s   | d d… S ©NrV   r:   rk  r:   r:   r;   ró  Ž  rô  z<TestVectorize.test_signature_computed_size.<locals>.<lambda>z(n)->(m)r?  rJ   rH   rQ   rF   r  rI  r:   r:   r;   Útest_signature_computed_size�  s
    z*TestVectorize.test_signature_computed_sizec                 C   sV   ddd„}t |ddhd�}t|dddgƒddd	gƒ t|dddgd
d�dddgƒ d S )NrJ   c                 S   s   | | S r3   r:   r   r:   r:   r;   r"  —  s    z2TestVectorize.test_signature_excluded.<locals>.fooú()->()ry   )r@  r%  rH   rQ   rF   r   r   )rJ   r  r,  r:   r:   r;   Útest_signature_excluded•  s    
z%TestVectorize.test_signature_excludedc                 C   sH   t dd„ ddgd�}|dddgƒ}t|jt d¡ƒ t|dddgƒ d S )	Nc                 S   s   | S r3   r:   rk  r:   r:   r;   ró  Ÿ  rô  z5TestVectorize.test_signature_otypes.<locals>.<lambda>rE  r½   ©r@  r  rJ   rH   rQ   )r2   r   r¾   r4   r   rI  r:   r:   r;   Útest_signature_otypesž  s    z#TestVectorize.test_signature_otypesc              	   C   s¬   t tjdd�}ttdƒ� |ddgƒ W 5 Q R X ttdƒ� |ddƒ W 5 Q R X ttdƒ� |ddgdddgƒ W 5 Q R X t tjd	d�}ttdƒ� |ddƒ W 5 Q R X d S )
Nz(n),(n)->(n)r?  zwrong number of positionalrJ   rH   zdoes not have enough dimensionsú$inconsistent size for core dimensionrQ   rN  )r2   Úoperatorr6   r   r  rZ   r)  r:   r:   r;   Útest_signature_invalid_inputs¤  s      ÿ ÿz+TestVectorize.test_signature_invalid_inputsc              	   C   s˜   t dd„ dd�}ttdƒ� |dddgƒ W 5 Q R X t d	d„ d
d�}ttdƒ� |dƒ W 5 Q R X t dd„ dd�}ttdƒ� |ddgƒ W 5 Q R X d S )Nc                 S   s   | d d… S rL  r:   rk  r:   r:   r;   ró  µ  rô  z>TestVectorize.test_signature_invalid_outputs.<locals>.<lambda>rE  r?  rR  rJ   rH   rQ   c                 S   s   | S r3   r:   rk  r:   r:   r;   ró  º  rô  rG  zwrong number of outputsc                 S   s   | | fS r3   r:   rk  r:   r:   r;   ró  ¾  rô  rN  )r2   r   rZ   r)  r:   r:   r;   Útest_signature_invalid_outputs³  s     ÿz,TestVectorize.test_signature_invalid_outputsc              	   C   s   t  dd„ ¡}t jddgtd�}ttdƒ� ||ƒ W 5 Q R X d|_t||ƒ|ƒ t jdd„ d	d
�}ttdƒ� ||ƒ W 5 Q R X t jdd„ d	dd�}t||ƒ|ƒ t jdd„ ddd�}t||ƒ|ƒ t jdd„ dd
�}t||jƒ|jƒ t jdd„ ddd�}ttdƒ� ||ƒ W 5 Q R X d S )Nc                 S   s   | S r3   r:   rk  r:   r:   r;   ró  Ä  rô  z5TestVectorize.test_size_zero_output.<locals>.<lambda>r   rR   rÑ   r  r…   c                 S   s   | S r3   r:   rk  r:   r:   r;   ró  Ì  rô  rN  r?  c                 S   s   | S r3   r:   rk  r:   r:   r;   ró  Ð  rô  rP  c                 S   s   | S r3   r:   rk  r:   r:   r;   ró  Ó  rô  rE  c                 S   s   | S r3   r:   rk  r:   r:   r;   ró  Ö  rô  c                 S   s   | gS r3   r:   rk  r:   r:   r;   ró  Ù  rô  z()->(n)znew output dimensions)	r4   r2   r=   Úintr   rZ   r  r   r  r9  r:   r:   r;   Útest_size_zero_outputÂ  s$    z#TestVectorize.test_size_zero_outputc                 C   sä   G dd„ dt jƒ}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 jt jdd�}|||ƒ}tt|ƒ|ƒ t|dddgdd	dgd
ddggƒ t  dd„ ¡}|||ƒ}tt|ƒ|ƒ t||| ƒ d S )Nc                   @   s   e Zd ZdS )z/TestVectorize.test_subclasses.<locals>.subclassNrÈ   r:   r:   r:   r;   rÉ   Þ  s   rÉ   r¦   r¨   r¥   r§   r­   r®   r¹   r7  r«   r2  z(m,m),(m)->(m)r?  c                 S   s   | | S r3   r:   rü  r:   r:   r;   ró  ì  rô  z/TestVectorize.test_subclasses.<locals>.<lambda>)r4   rÊ   r~   rË   r2   Úmatmulr   rÌ   )r]   rÉ   ræ   rš  Zmatvecr  Zmultr:   r:   r;   rÍ   Ý  s     þþ(
"
zTestVectorize.test_subclassesN)&rl   rm   rn   r  r  r  r  r  r  r  r  r  r  r  r!  r&  r*  r+  r-  r0  r2  r5  r6  r:  r;  r>  rA  rC  rF  rJ  rK  rM  rO  rQ  rT  rU  rW  rÍ   r:   r:   r:   r;   rÿ  K  sF   

"	rÿ  c                   @   sL   e Zd ZG dd„ dƒZejje dd�ej ddej	fdg¡dd	„ ƒƒZ
d
S )Ú	TestLeaksc                   @   s$   e Zd ZdZdd„ Zedd„ ƒZdS )zTestLeaks.Ar'  c                 G   s   dS rÿ   r:   ©r]   r  r:   r:   r;   Úboundö  s    zTestLeaks.A.boundc                  G   s   dS rÿ   r:   )r  r:   r:   r;   Úunboundù  s    zTestLeaks.A.unboundN)rl   rm   rn   Úitersr[  Ústaticmethodr\  r:   r:   r:   r;   ÚAó  s   r_  úPython lacks refcounts©Úreasonz
name, incrr[  )r\  r   c           	      C   s¸   dd l }t| j|ƒ}| ¡  zŒt |¡}t| jjƒD ]2}|  ¡ }t	 
t||ƒdd¡|_| t	 d¡¡}q4d }tt |¡|| ƒ tdƒD ]}| ¡  qˆtt |¡|ƒ W 5 | ¡  X d S )Nr   rJ   r™   rR   )ÚgcrÜ  r_  ÚdisableÚenableÚsysÚgetrefcountr\   r]  r4   Z
frompyfuncr·  r5   r   Zcollect)	r]   rÝ  Úincrrc  ZA_funcÚrefcountr…   r^   rd  r:   r:   r;   Útest_frompyfunc_leaksý  s    

zTestLeaks.test_frompyfunc_leaksN)rl   rm   rn   r_  rÞ   rß   Úskipifr   rà   r]  rj  r:   r:   r:   r;   rY  ò  s   
þrY  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dd„ Zejjdd�dd„ ƒZdS )ÚTestDigitizec                 C   s2   t  dd¡}t  dd¡}tt||ƒt  d¡ƒ d S )Nr‰  rR   r0  r¬   ©r4   r5   r   r   ©r]   rµ   Úbinsr:   r:   r;   Útest_forward  s    zTestDigitize.test_forwardc                 C   s6   t  ddd¡}t  ddd¡}tt||ƒt  d¡ƒ d S )NrR   r‰  rV   r0  r¬   rm  rn  r:   r:   r;   Útest_reverse"  s    zTestDigitize.test_reversec                 C   s:   t dƒ}t | ¡ | ¡ d¡}tt t||ƒdk¡ƒ d S )Nr™   r   ©r   r4   r­  rÏ  rp  r   r—   r   )r]   rµ   Úbinr:   r:   r;   Útest_random'  s    zTestDigitize.test_randomc                 C   sf   dddddddg}dddg}dddd	dd	dg}t t||ƒ|ƒ dddddd	dg}t t||d
ƒ|ƒ d S )NrJ   rR   rF   r™   rg   r¬   r   rH   rQ   T)r   r   )r]   rµ   ro  Zdefault_answerZright_answerr:   r:   r;   Útest_right_basic,  s    
zTestDigitize.test_right_basicc                 C   s4   t  dd¡}t  dd¡}tt||dƒt  d¡ƒ d S )Nr‰  rR   rF   Tr¬   rm  rn  r:   r:   r;   Útest_right_open4  s    zTestDigitize.test_right_openc                 C   s8   t  ddd¡}t  ddd¡}tt||dƒt  d¡ƒ d S )NrR   r‰  rV   rF   Tr¬   rm  rn  r:   r:   r;   Útest_right_open_reverse9  s    z$TestDigitize.test_right_open_reversec                 C   s<   t dƒ}t | ¡ | ¡ d¡}tt t||dƒdk¡ƒ d S )Nr™   Trr  rn  r:   r:   r;   Útest_right_open_random>  s    z#TestDigitize.test_right_open_randomc                 C   s   ddddg}dddg}t t||dƒddddgƒ t t||dƒddddgƒ dddg}t t||dƒddddgƒ t t||dƒddddgƒ ddddg}t t||dƒddddgƒ t t||dƒddddgƒ ddddg}ttt||ƒ ddddg}ttt||ƒ d S )	NrV   r   rJ   rH   FrQ   TrF   )r   r   r   rZ   rn  r:   r:   r;   Útest_monotonicC  s    

zTestDigitize.test_monotonicc                 C   s>   dddg}dddg}t tt||ƒ || }}t tt||ƒ d S )NrJ   rH   y      @      ð?rQ   )r   r  r   rn  r:   r:   r;   Útest_casting_errorS  s
    


zTestDigitize.test_casting_errorc                 C   sh   G dd„ dt jƒ}t  d¡ |¡}t  dd¡ |¡}ttt||dƒ|ƒ ƒ ttt||dƒ|ƒ ƒ d S )Nc                   @   s   e Zd ZdS )z(TestDigitize.test_return_type.<locals>.ANrÈ   r:   r:   r:   r;   r_  \  s   r_  rR   rJ   rQ   FT)r4   rÊ   r5   rË   r   r  r   )r]   r_  r^   ry   r:   r:   r;   Útest_return_typeZ  s
    zTestDigitize.test_return_typec                 C   s&   d}t t ||d |d g¡dƒ d S ©Nl          rJ   ©r   r4   r   r   r:   r:   r;   Útest_large_integers_increasingc  s    z+TestDigitize.test_large_integers_increasingz8gh-11022: np.core.multiarray._monoticity loses precisionra  c                 C   s&   d}t t ||d |d g¡dƒ d S r|  r}  r   r:   r:   r;   Útest_large_integers_decreasingh  s    z+TestDigitize.test_large_integers_decreasingN)rl   rm   rn   rp  rq  rt  ru  rv  rw  rx  ry  rz  r{  r~  rÞ   rß   Úxfailr  r:   r:   r:   r;   rl    s   	ÿrl  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestUnwrapc                 C   sH   t tdddtj  gƒddgƒ tt tttdƒd ƒƒtjk ¡ƒ d S )NrJ   rH   r™   r  )r   r0   r4   rØ  r   r—   r   r   rv   r:   r:   r;   r  r  s     zTestUnwrap.test_simplec                 C   sî   t tddgdd�ddgƒ tt tttdƒd dd�ƒdk ¡ƒ t dd	d
ddg¡}t |d¡}t t|dd�|ƒ t dd	d
dddg¡}t |d¡}t|dd�}t |dd	d
dddgƒ t|ddd�}t |dd	d
dddgƒ |j	|j	ksêt
‚d S )NrJ   i  éÿ   ©ÚperiodrH   r™   éè  r   éK   é–   éá   r½  i®  éú   rT  éŒ   )r„  Zdiscont)r   r0   r   r4   r—   r   r   r~   Úmodr¾   r´   )r]   Z
simple_seqZwrap_seqZ
uneven_seqZwrap_unevenZ
no_discontZ
sm_discontr:   r:   r;   Útest_periodx  s    &zTestUnwrap.test_periodN)rl   rm   rn   r  rŒ  r:   r:   r:   r;   r�  p  s   r�  r¾   ÚOÚ
AllIntegerZFloatÚMrJ   r™   c                   @   sf   e Zd Zeeddœdd„Zeeddœdd„Zeeddœdd„Zeeddœd	d
„Zeeddœdd„Z	dS )ÚTestFilterwindowsN)r¾   r�  Úreturnc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÑ   r:   r�  rJ   r   rp   ç      @rF   )r4   r~   r!   r½   r¿   r¾   r´   r   r   r   r[   r	   rº   ©r]   r¾   r�  ZscalarrÁ   Z	ref_dtyper:   r:   r;   Útest_hanning‘  s    zTestFilterwindows.test_hanningc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÑ   r:   r�  rJ   r   rp   gÃõ(\�Â@rF   )r4   r~   r    r½   r¿   r¾   r´   r   r   r   r[   r	   rº   r“  r:   r:   r;   Útest_hamming¦  s    zTestFilterwindows.test_hammingc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÑ   r:   r�  rJ   r   rp   gž^)ËÇ@rF   )r4   r~   r   r½   r¿   r¾   r´   r   r   r   r[   r	   rº   r“  r:   r:   r;   Útest_bartlett»  s    zTestFilterwindows.test_bartlettc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÑ   r:   r�  rJ   r   rp   g=
×£p=@rF   )r4   r~   r   r½   r¿   r¾   r´   r   r   r   r[   r	   rº   r“  r:   r:   r;   Útest_blackmanÐ  s    zTestFilterwindows.test_blackmanc                 C   s¦   t j||d�d }t|dƒ}|dkr,t j}nt  |jt j¡}|j|ksJt‚t|t|ƒƒ |dk rrt	|t  g ¡ƒ n0|dkrŒt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÑ   r:   r   r�  rJ   rp   r™   rí   )r4   r~   r%   r½   r¿   r¾   r´   r   r   r   r[   r	   rº   r“  r:   r:   r;   Útest_kaiserå  s    
zTestFilterwindows.test_kaiser)
rl   rm   rn   ÚstrrV  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 )Ú	TestTrapzc                 C   sH   t  ddd¡}tt  d|d  ¡t  dt j ¡ dd�}t|ddƒ d S )	Néöÿÿÿr™   rc  rµ  rH   )r›  rJ   ri   )r4   r5   r.   ri  rÖ  rØ  r	   )r]   rµ   r  r:   r:   r;   r  ý  s    *zTestTrapz.test_simplec                 C   s&  t  ddd¡}t  ddd¡}t  ddd¡}t  |¡|d |d   }|d  d  < |d  d  < t  |¡|d |d   }|d  d  < |d  d  < t  |¡|d |d   }|d  d  < |d  d  < |d d …d d f |d d d …d f  |d d d d …f  }||d d …d d f  jdd�}||d d d …d f  jdd�}	||d d d d …f  jdd�}
t||d d …d d f dd	�}t||ƒ t||d d d …d f dd	�}t||	ƒ t||d d d d …f dd	�}t||
ƒ t||dd	�}t||ƒ t||dd	�}t||	ƒ t||dd	�}t||
ƒ d S )
Nr   rJ   rQ   rH   rg   rT   rV   rp   )rµ   rq   )r4   r­  Z	ones_likerº   r.   r	   )r]   rµ   rÀ   rÙ  ZwxZwyZwzÚqZqxZqyZqzr  r:   r:   r;   Ú	test_ndim  s8    6




zTestTrapz.test_ndimc                 C   s‚   t  d¡}|| }|dk}t jj||d�}d}tt||ƒ|ƒ t jj||d�}tt||ƒ|ƒ t jj||d�}tt||ƒ|ƒ d S )NrR   rH   rv  g      *@)r4   r5   r   r~   r	   r.   )r]   rµ   rÀ   rw  Zymr  Zxmr:   r:   r;   r¬  (  s    
zTestTrapz.test_maskedN)rl   rm   rn   r  r�  r¬  r:   r:   r:   r;   rš  û  s   %rš  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestSincc                 C   s6   t tdƒdkƒ tt ddd¡ƒ}t|t|ƒdƒ d S )Nr   rJ   rV   r  ri   )r   r-   r4   r­  r
   r   ©r]   rÁ   r:   r:   r;   r  ;  s    zTestSinc.test_simplec                 C   sF   ddg}t t |¡ƒ}t t|ƒƒ}t t|ƒƒ}t||ƒ t||ƒ d S )Nr   r³  )r-   r4   r~   rn  rH  r   )r]   rµ   r�   r�   r‘   r:   r:   r;   Útest_array_likeA  s    
zTestSinc.test_array_likeN)rl   rm   rn   r  r   r:   r:   r:   r;   rž  9  s   rž  c                   @   s   e Zd Zdd„ ZdS )Ú
TestUniquec                 C   sÈ   t  dddddddddg	¡}tt  t|ƒdddddgk¡ƒ ttt  dddddg¡ƒt  dg¡kƒ dddd	ddg}tt  t|ƒd	dddgk¡ƒ t  d
dddd
g¡}tt  t|ƒddd
dgk¡ƒ d S )NrF   rQ   rH   rJ   r   ZwidgetZhamr"  r#  y      @      @rÚ  y      ð?      $@r™   )r4   r~   r   r—   r1   r   r:   r:   r;   r  L  s     (zTestUnique.test_simpleN©rl   rm   rn   r  r:   r:   r:   r;   r¡  J  s   r¡  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestCheckFinitec                 C   sR   dddg}ddt jg}ddt jg}t j |¡ ttt jj|ƒ ttt jj|ƒ d S )NrJ   rH   rQ   )r4   Úinfrù   ÚlibÚasarray_chkfiniter   rZ   rˆ   r:   r:   r;   r  X  s    
zTestCheckFinite.test_simplec                 C   s2   dddg}t jj|dt jd�}t|jt jkƒ d S )NrJ   rH   rQ   rœ   )rž   r¾   )r4   r¥  r¦  r½   r   r¾   re   r:   r:   r;   Útest_dtype_order`  s    
z TestCheckFinite.test_dtype_orderN)rl   rm   rn   r  r§  r:   r:   r:   r;   r£  V  s   r£  c                   @   s6  e Zd Ze dddgdddgddd	gg¡Ze d
ddgdddgdddgg¡Ze dddgdddgdddgg¡Ze 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¡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 d3ejejejejg¡d4d5„ ƒZd6S )7ÚTestCorrCoefgÿÁ°‘^³Ã?gŸ.{§<Ç?g�¥‹$,Â?g¯ßá4Œæ?gpÖ)ßî?gÕJ¶ôGÜÑ?gY»’‰Àí?g½�¬€«Ô?gáÞˆ0v©È?gØ©‡¢‘º?gBÈF­Uá?g ¢G)tàß?g3äTBâ„ê?gLÁ\ƒåè?gïÃAçÙ?g>
“Îí?gqµFëE`å?g€5Ø¢?r¦   gÞ›•£¶î?gßÉár@©¿gp¾è]‚4Ó?g?Ä'LÓ?gÝë(÷Ð8å?gîê4V‹}à?gÕØw¨{¨¿g,H¨×5ì?gjSŽ,úè?gªÀâÓóî¿gµ)h¤ïßæ?gå5#AÀ“ê?gƒätÄçoà¿gBCÃæ,å¿g@§ÿ02vï?c                 C   s.   t t dddgdddg¡ddgddggƒ d S )Nr   rJ   r¦   ç      ð¿)r	   r4   r   rv   r:   r:   r;   Útest_non_array|  s    ÿzTestCorrCoef.test_non_arrayc                 C   sd   t | jƒ}t|| jƒ tt t |¡dk¡ƒ t | j| jƒ}t|| j	ƒ tt t |¡dk¡ƒ d S r'  )
r   r_  r	   r¸  r   r4   r—   r®  rç  r¹  )r]   Ztgt1Ztgt2r:   r:   r;   r  €  s    
zTestCorrCoef.test_simplec              	   C   sœ   t ƒ �Œ}t d¡ ttt| jdd� | t¡ tt| jdd�| j	ƒ tt| j| j
dd�| jƒ tt| jdd�| j	ƒ tt| j| j
dd�| jƒ W 5 Q R X d S )Nr	  rV   ©ZddofrQ   )r   r  Úsimplefilterr   ÚDeprecationWarningr   r_  Úfilterr	   r¸  rç  r¹  ©r]   Úsupr:   r:   r;   Ú	test_ddof‰  s    

zTestCorrCoef.test_ddofc              	   C   sh   t ƒ �X}t d¡ ttt| j| jddƒ ttt| jdd� | t¡ t	t| jdd�| j
ƒ W 5 Q R X d S )Nr	  rJ   r   )Zbias)r   r  r¬  r   r­  r   r_  rç  r®  r	   r¸  r¯  r:   r:   r;   Ú	test_bias•  s    

zTestCorrCoef.test_biasc                 C   s^   t  dddgdddgg¡}t|ƒ}t  ddgddgg¡}t||ƒ tt  t  |¡dk¡ƒ d S ©	NrJ   rH   rQ   rö   ù               @rý   r¦   rÓ  )r4   r~   r   r   r   r—   r®  )r]   rµ   r–  rM  r:   r:   r;   Útest_complexŸ  s
    
zTestCorrCoef.test_complexc                 C   sL   t  dddgg¡}t  dddgg¡}tt  ||¡t  ddgddgg¡ƒ d S r³  )r4   r~   r   r   ©r]   rµ   rÀ   r:   r:   r;   Útest_xy¦  s    zTestCorrCoef.test_xyc              	   C   sž   t jdd��ˆ t  dt¡ ttt g ¡ƒtjƒ ttt g ¡ 	dd¡ƒt g ¡ 	dd¡ƒ ttt g ¡ 	dd¡ƒt tjtjgtjtjgg¡ƒ W 5 Q R X d S ©NTr  r	  r   rH   )
r  r  r¬  ÚRuntimeWarningr   r   r4   r~   rù   rj   rv   r:   r:   r;   Ú
test_empty«  s    ÿÿzTestCorrCoef.test_emptyc              	   C   sh   ddgddgg}t jdd�� t|ƒ}W 5 Q R X t|t  ddgddgg¡ƒ tt  t  |¡dk¡ƒ d S )Ng0Žä.ÿ++g}Ã”%­I²TÚraise)r—   r¦   r©  )r4   Zerrstater   r
   r~   r   r—   r®  )r]   rµ   r‰   r:   r:   r;   Útest_extreme´  s
    zTestCorrCoef.test_extremeÚ	test_typec                 C   s*   | j  |¡}t||d�}||jks&t‚d S ©NrÑ   )r_  r»   r   r¾   r´   )r]   r½  Zcast_Ar–  r:   r:   r;   Útest_corrcoef_dtype»  s    z TestCorrCoef.test_corrcoef_dtypeN)rl   rm   rn   r4   r~   r_  rç  r¸  r¹  rª  r  r±  r²  rµ  r·  rº  r¼  rÞ   rß   rà   ÚhalfÚsingleÚdoubleÚ
longdoubler¿  r:   r:   r:   r;   r¨  g  sJ   þÿþÿþÿûÿ	
	r¨  c                   @   sh  e Zd Ze ddgddgddgg¡jZe ddgddgg¡Zejdddgdd�Ze dd	dg¡Z	e dgdgdgdgdgdgg¡jZ
e d
dgdd
gg¡Zejdejd�Ze dddg¡Ze ddgddgg¡Ze d¡Ze dd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ej d*ej ej!ej"ej#g¡d+d,„ ƒZ$d-S ).ÚTestCovr   rH   rJ   r¦   r©  r¨   r¥   )ÚndminrF   çš™™™™™Ù?gš™™™™™Ù¿rQ   rÑ   r­   gUUUUUUå?gUUUUUUå¿g&S£’:Ù?gÒo_Îã?g#Ûù~j¼è?g”‡…ZÓ¼ï?gÎQÚ|é?c                 C   s   t t| jƒ| jƒ d S r3   )r   r   Úx1r¸  rv   r:   r:   r;   r_   Ï  s    zTestCov.test_basicc                 C   sZ   t  dddgdddgg¡}t  ddgddgg¡}tt|ƒ|ƒ tt|t  d¡d	�|ƒ d S )
NrJ   rH   rQ   rö   r´  rý   r¦   rÓ  ©Úaweights)r4   r~   r   r   r[   )r]   rµ   r–  r:   r:   r;   rµ  Ò  s    zTestCov.test_complexc                 C   sJ   t  dddgg¡}t  dddgg¡}tt||ƒt  ddgddgg¡ƒ d S r³  )r4   r~   r   r   r¶  r:   r:   r;   r·  Ø  s    zTestCov.test_xyc              	   C   sž   t jdd��ˆ t  dt¡ ttt g ¡ƒtjƒ ttt g ¡ 	dd¡ƒt g ¡ 	dd¡ƒ ttt g ¡ 	dd¡ƒt tjtjgtjtjgg¡ƒ W 5 Q R X d S r¸  )
r  r  r¬  r¹  r   r   r4   r~   rù   rj   rv   r:   r:   r;   rº  Ý  s    ÿÿzTestCov.test_emptyc              	   C   sZ   t jdd��D t  dt¡ tt| jdd�t tj	tj	 gtj	 tj	gg¡ƒ W 5 Q R X d S )NTr  r	  rR   r«  )
r  r  r¬  r¹  r   r   rÇ  r4   r~   r¤  rv   r:   r:   r;   Útest_wrong_ddofæ  s    ÿÿzTestCov.test_wrong_ddofc                 C   sP   t t| jƒt| jdd�ƒ t dddddg¡}t t| j|ƒt| j|dd�ƒ d S )NF)Zrowvarg+‡ÙÎ÷³?g4€·@‚âÓ?g¾Á&SË?gÒo_Î¡?gŒJê4ë?)r   r   Úx3r4   r~   ©r]   rÀ   r:   r:   r;   Útest_1D_rowvarí  s    zTestCov.test_1D_rowvarc                 C   s$   t t| jdd�tj| jdd�ƒ d S )NrJ   r«  )r   r   rË  r4   Úvarrv   r:   r:   r;   Útest_1D_varianceò  s    zTestCov.test_1D_variancec                 C   sÖ   t t| j| jd�t| jƒƒ t t| j| jd�| jƒ t t| j| jd�| jƒ | jd }t	t
t| j|d� tjdtjd�}t	tt| j|d� tjdtjd�}t	tt| j|d� dtjdtjd� }t	tt| j|d� d S )N)Úfweightsr³  ©rH   rQ   rÑ   rH   rV   rQ   )r   r   r«  ÚfrequenciesÚ
x2_repeatsrÇ  r¹  Úunit_frequenciesr¸  r   r  r4   r[   r   ÚRuntimeErrorrZ   )r]   Znonintr·  r:   r:   r;   Útest_fweightsõ  s"    ÿÿÿ
zTestCov.test_fweightsc                 C   s²   t t| j| jd�| jƒ t t| jd| j d�t| j| jd�ƒ t t| j| jd�| jƒ t d¡}t	t
t| j|d� t d¡}t	t
t| j|d� dt d¡ }t	tt| j|d� d S )NrÈ  r§   rÑ  rH   r©  rQ   )r   r   rÇ  r²   rº  Úunit_weightsr¸  r4   r[   r   rÕ  rZ   rŸ  r:   r:   r;   Útest_aweights	  s    ÿ

zTestCov.test_aweightsc                 C   s¾   t t| j| j| jd�t| jƒƒ t t| j| j| jd�| jƒ t t| j| j| jd�| j	ƒ t t| j| j| j
d�| jƒ t t| j| jd| j
 d�t| j| j
d�ƒ t t| j| j| jd�| j	ƒ d S )N)rÐ  rÉ  r§   rÈ  )r   r   r«  rÒ  r×  rÓ  rÇ  r¹  rÔ  r¸  r²   rº  rv   r:   r:   r;   Útest_unit_fweights_and_aweights	  s<    ÿþÿþÿþÿþÿþÿþz'TestCov.test_unit_fweights_and_aweightsr½  c                 C   s*   | j  |¡}t||d�}||jks&t‚d S r¾  )rÇ  r»   r   r¾   r´   )r]   r½  Zcast_x1r–  r:   r:   r;   Útest_cov_dtype%	  s    zTestCov.test_cov_dtypeN)%rl   rm   rn   r4   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.   $
	rÄ  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTest_I0c              
   C   sê   t tdƒt d¡ƒ t dddddg¡}t dd	d
ddg¡}t t|ƒ|ƒ t t| ƒ|ƒ t ddgddgddgddgddgg¡}t t|ƒt ddgddgddgddgdd gg¡ƒ t d!g¡}t|jd"ƒ tt d!g¡t d#g¡ƒ d S )$Nr³  gÿÇ’#ñ?gC„ê¬7æß?gùmãªMæ?g˜¡3aâ,Ì?gª$WV?Û�?r1  gšÖ¿N^ñ?gEá¿ ò?gé–¡Ä1ð?gÔ%©m? ð?gDíénÿ¥@g>@÷åÌvê?gÏu¯Í¥üï?gVºX¤Ë³ì?g÷uaœ&Ù?gB-¬sJØ?g-^þ§ª?g§_¿³V×?g¨X±Ï.ç?gVØëaXÓÞ?gõj¨•à?gpÁÛÚò?g~-ØÛ@ô?g¦¼D/bó?gÝ¦‰ˆ¬Ÿð?g,êY1Ø”ð?gš[!¬Æð?g‘QÐL‰ð?gWè¤sU+ò?g÷ ±@ñð?g™fx»wñ?r¨   rÛ   r¦   )r	   r"   r4   r~   r   r?   r   )r]   r_  rq  rç  Zi0_0r:   r:   r;   r  .	  s4    þ
ü
üþzTest_I0.test_simplec                    sV   t  d¡‰ G ‡ fdd„dƒ}tt  |ƒ ¡|ƒs2t‚t  ˆ ¡}t  |ƒ ¡}t||ƒ d S )NrF   c                       s   e Zd Z” jZdd„ ZdS )z*Test_I0.test_non_array.<locals>.array_likec                 S   s   | S r3   r:   )r]   rã  r:   r:   r;   Ú__array_wrap__P	  s    z9Test_I0.test_non_array.<locals>.array_like.__array_wrap__N)rl   rm   rn   Z__array_interface__rÜ  r:   rò  r:   r;   Ú
array_likeM	  s   rÝ  )r4   r5   r  r®  r´   r"   r   )r]   rÝ  ri  r–  r:   rò  r;   rª  J	  s    

zTest_I0.test_non_arrayc              	   C   s4   t  ddg¡}tjtdd�� t|ƒ}W 5 Q R X d S )Nr   y      ð?       @z#i0 not supported for complex valuesr,  )r4   r~   rÞ   r  r  r"   )r]   r^   r–  r:   r:   r;   rµ  Z	  s    zTest_I0.test_complexN)rl   rm   rn   r  rª  rµ  r:   r:   r:   r;   rÛ  ,	  s   rÛ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestKaiserc              	   C   sˆ   t t tddƒ¡ƒ ttddƒt g ¡ƒ ttddƒt ddg¡ƒ ttddƒt dddddg¡ƒ ttddƒt d	d
dd
d	g¡ƒ d S )NrJ   r¦   r   rH   g ˆöoFé?rR   gÀvT¶=î?gg›Óù?gø†„½¦â?g÷�ñY…Jì?)r   r4   Úisfiniter%   r	   r~   rv   r:   r:   r;   r  b	  s&    
ÿ
ÿ

 ÿÿ

 ÿÿzTestKaiser.test_simplec                 C   s   t ddƒ d S )NrQ   rF   )r%   rv   r:   r:   r;   Útest_int_betao	  s    zTestKaiser.test_int_betaN)rl   rm   rn   r  rà  r:   r:   r:   r;   rÞ  `	  s   rÞ  c                   @   s   e Zd Zdd„ ZdS )Ú	TestMsortc              	   C   sR   t  dddgdddgddd	gg¡}tt|ƒt  ddd	gdddgdddgg¡ƒ d S )
Ngî\é…Ü?gb¥ÝCQé?g×”�s‘á?gwøˆ‹”×?g¥¹klã×?gø*dtaÀî?gÐèÓ¯Áä?g6Hœòïà?gÜ˜C÷Ù?)r4   r~   r	   r'   )r]   r_  r:   r:   r;   r  u	  s    þþþzTestMsort.test_simpleNr¢  r:   r:   r:   r;   rá  s	  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 )ÚTestMeshgridc              
   C   s€   t dddgddddgƒ\}}t|t dddgdddgdddgdddgg¡ƒ t|t dddgdddgdddgdddgg¡ƒ d S )NrJ   rH   rQ   rF   rR   rh   ri   ©r&   r   r4   r~   ©r]   ÚXÚYr:   r:   r;   r  ‚	  s    ýýzTestMeshgrid.test_simplec                 C   s.   t ddddgƒ\}t|t ddddg¡ƒ d S )NrJ   rH   rQ   rF   rã  )r]   rå  r:   r:   r;   Útest_single_input�	  s    zTestMeshgrid.test_single_inputc                 C   s*   g }t g t|Ž ƒ t g t|ddiŽƒ d S )Nrš   F)r   r&   rZ  r:   r:   r;   Útest_no_input‘	  s    zTestMeshgrid.test_no_inputc              
   C   s  dddg}ddddg}t ||dd	�\}}t|t ddddgddddgddddgg¡ƒ t|t ddddgddddgddddgg¡ƒ d
dg}tt ||ƒd jdkƒ tt ||dd	�d jdkƒ tt |||ƒd jdkƒ tt |||dd	�d jdkƒ ttt ||dd	� d S )NrJ   rH   rQ   rF   rR   rh   ri   Úij©Zindexingrg   râ   r   ró   ©rQ   rF   )rF   rQ   rH   )rQ   rF   rH   Znotvalid)r&   r   r4   r~   r   r?   r   rZ   )r]   rµ   rÀ   rå  ræ  rÙ  r:   r:   r;   Útest_indexing–	  s"    


þ

þzTestMeshgrid.test_indexingc                 C   s\   t dddgddddgdd	�\}}t|t dddgg¡ƒ t|t dgdgdgdgg¡ƒ d S )
NrJ   rH   rQ   rF   rR   rh   ri   T©Úsparserã  rä  r:   r:   r;   Útest_sparseª	  s     zTestMeshgrid.test_sparsec                 C   s$   t ttdddgddddgdd	� d S )
NrJ   rH   rQ   rF   rR   rh   ri   ré  )rƒ  )r   r  r&   rv   r:   r:   r;   Útest_invalid_arguments¯	  s
     
 ÿz#TestMeshgrid.test_invalid_argumentsc                 C   sÀ   t jddt jd�}t jddt jd�}t  ||¡\}}t|j|jkƒ t|j|jkƒ t j||dd�\}}t|j|jkƒ t|j|jkƒ t j||dd�\}}t|j|jkƒ t|j|jkƒ d S )Nr   r™   rÑ   r'  T)rš   rí  )r4   r5   r¼   r½   r&   r   r¾   )r]   rµ   rÀ   rå  ræ  r:   r:   r;   r{  ¶	  s    zTestMeshgrid.test_return_typec                 C   sr   t  ddg¡}t  ddg¡}t j||ddd�\}}d|dd d …f< t|dd d …f dƒ t|d	d d …f |ƒ d S )
Nr`  ra  gffffff
@gš™™™™™@FT)rî  rš   r   rJ   )r4   r~   r&   r   )r]   rå  ræ  rµ   rÀ   r:   r:   r;   Útest_writebackÎ	  s    zTestMeshgrid.test_writebackc                 C   sh   t jdd„ tddƒD ƒŽ \}}}}}d}t|j|ƒ t|j|ƒ t|j|ƒ t|j|ƒ t|j|ƒ d S )Nc                 s   s   | ]}d g| V  qdS )r   Nr:   ©rÙ   r…   r:   r:   r;   rÞ  Ù	  s     z-TestMeshgrid.test_nd_shape.<locals>.<genexpr>rJ   rh   )rH   rJ   rQ   rF   rR   )r4   r&   r\   r   r?   )r]   r^   ry   r‰   rû   r<  Zexpected_shaper:   r:   r;   Útest_nd_shapeØ	  s    $zTestMeshgrid.test_nd_shapec                 C   s~   t  dgddgdddg¡\}}}t|dddggdddgggƒ t|dddggdddgggƒ t|dddggdddgggƒ d S )Nr   rJ   rH   rQ   rF   rR   ©r4   r&   r   rˆ   r:   r:   r;   Útest_nd_valuesá	  s     zTestMeshgrid.test_nd_valuesc                 C   s|   t jdgddgdddgdd�\}}}t|dddgdddgggƒ t|dddgdddgggƒ t|dddgdddgggƒ d S )	Nr   rJ   rH   rQ   rF   rR   ré  rê  rô  rˆ   r:   r:   r;   Útest_nd_indexingç	  s    $zTestMeshgrid.test_nd_indexingN)rl   rm   rn   r  rç  rè  rì  rï  rð  r{  rñ  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 )ÚTestPiecewisec              	   C   s6  t ddgddgdgƒ}t|ddgƒ t ddgddggdgƒ}t|ddgƒ t ddgt ddg¡dgƒ}t|ddgƒ t ddgt ddg¡dgƒ}t|ddgƒ t ddgt ddg¡gdgƒ}t|ddgƒ t ddgddggdd„ gƒ}t|ddgƒ ttdt ddgddggg ƒ ttdt ddgddggdd	d
gƒ d S )Nr   TFrJ   c                 S   s   dS rL  r:   rk  r:   r:   r;   ró  
  rô  z+TestPiecewise.test_simple.<locals>.<lambda>rV   z1 or 2 functions are expectedrH   rQ   )r(   r   r4   r~   r   rZ   r   r:   r:   r;   r  ð	  s0       ÿ   ÿzTestPiecewise.test_simplec                 C   s2   t ddgddgddggddgƒ}t|ddgƒ d S )NrJ   rH   TFrQ   rF   ©r(   r   r   r:   r:   r;   Útest_two_conditions
  s     z!TestPiecewise.test_two_conditionsc                 C   s&   t ddddgdddgƒ}t|dƒ d S )NrQ   TFrF   rH   r   )r(   r   r   r:   r:   r;   Ú$test_scalar_domains_three_conditions
  s    z2TestPiecewise.test_scalar_domains_three_conditionsc                 C   sN   t ddgddgdgƒ}t|ddgƒ t ddgddgddgƒ}t|ddgƒ d S )NrJ   rH   TFr   rQ   rø  r   r:   r:   r;   Útest_default
  s    zTestPiecewise.test_defaultc                 C   s�   t  d¡}t||dkddgƒ}t|jdkƒ t|dkƒ d}t|ddgddgƒ}t|jdkƒ t|dkƒ t|dddgdddgƒ}t|dƒ d S )	NrQ   rF   r   rR   TFrJ   rH   )r4   r~   r(   r   rƒ   r   r¶  r:   r:   r;   r  
  s    
zTestPiecewise.test_0dc              
   C   s®   d}t ||dk|dkgddgƒ}t|dƒ d}t ||dk|dk|dk |dkgdddgƒ}t|dƒ ttdt ||dk|dkgdgƒ ttdt ||dk|dkgddddgƒ d S )NrQ   rF   r   rR   rJ   rH   z2 or 3 functions are expected)r(   r   r   r   rZ   r¶  r:   r:   r;   Útest_0d_comparison-
  s$    
,
   ÿ   
ÿz TestPiecewise.test_0d_comparisonc                 C   s8   t  d¡}t  |dk¡}t||gddgƒ}t|dƒ d S )NrQ   rJ   rH   )r4   r~   r(   r   )r]   rµ   r‰   rÀ   r:   r:   r;   Útest_0d_0d_condition<
  s    
z"TestPiecewise.test_0d_0d_conditionc                 C   s\   t  dddgdddgg¡}t||dk |dkgd	d
dgƒ}t|t  dddgdddgg¡ƒ d S )Ng      Àg      ø¿rµ  r³  rž  r´  r   rH   rV   rJ   rQ   r©  r§   r¦   )r4   r~   r(   r   r¶  r:   r:   r;   Útest_multidimensional_extrafuncB
  s    ÿÿz-TestPiecewise.test_multidimensional_extrafuncc                 C   sf   G dd„ dt jƒ}t  d¡ |¡}t||dk |dkgdddgƒ}tt|ƒ|ƒ t|dddddgƒ d S )	Nc                   @   s   e Zd ZdS )z/TestPiecewise.test_subclasses.<locals>.subclassNrÈ   r:   r:   r:   r;   rÉ   J
  s   rÉ   r®   r¥   rF   r©  r¦   r¨   )r4   rÊ   r5   rË   r(   r   rÌ   )r]   rÉ   rµ   r  r:   r:   r;   rÍ   I
  s
    zTestPiecewise.test_subclassesN)rl   rm   rn   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
dd„ Zdd„ Zejje dd�dd„ ƒZej dddggdg¡dd„ ƒZdS )ÚTestBincountc                 C   s$   t  t  d¡¡}t|t  d¡ƒ d S )NrF   )r4   Úbincountr5   r   r[   rÌ  r:   r:   r;   r  T
  s    zTestBincount.test_simplec              
   C   s:   t  t  dddddg¡¡}t|t  ddddddg¡ƒ d S )NrJ   rR   rH   rF   r   )r4   r   r~   r   rÌ  r:   r:   r;   Útest_simple2X
  s    zTestBincount.test_simple2c                 C   s6   t  d¡}t  ddddg¡}t  ||¡}t||ƒ d S )NrF   çš™™™™™É?ç333333Ó?r³  rc  )r4   r5   r~   r   r   ©r]   rµ   rÁ   rÀ   r:   r:   r;   Útest_simple_weight\
  s    
zTestBincount.test_simple_weightc              
   C   sT   t  dddddg¡}t  dddddg¡}t  ||¡}t|t  d	ddd	ddg¡ƒ d S )
NrJ   rH   rF   rR   r  r  r³  rc  r   ©r4   r~   r   r   r  r:   r:   r;   Útest_simple_weight2b
  s    z TestBincount.test_simple_weight2c                 C   s^   t  dddddg¡}t j|dd�}t|t  dddg¡ƒ g }t j|dd�}t|t  g ¡ƒ d S )Nr   rJ   rQ   ©Z	minlengthrH   r  r¶  r:   r:   r;   Útest_with_minlengthh
  s    z TestBincount.test_with_minlengthc              	   C   sh   t  dddddddg¡}t j|dd�}t|t  ddddg¡ƒ t j|dd�}t|t  ddddg¡ƒ d S )Nr   rJ   rH   rQ   r  r  r¶  r:   r:   r;   Ú)test_with_minlength_smaller_than_maxvaluep
  s
    z6TestBincount.test_with_minlength_smaller_than_maxvaluec                 C   sZ   t  dddddg¡}t  dddddg¡}t  ||d	¡}t|t  d
ddd
ddd
d
g¡ƒ d S )NrJ   rH   rF   rR   r  r  r³  rc  rg   r   r  r  r:   r:   r;   Útest_with_minlength_and_weightsw
  s    z,TestBincount.test_with_minlength_and_weightsc                 C   s&   t jg td�}t  |¡}t||ƒ d S r¾  )r4   r~   rV  r   r   r¶  r:   r:   r;   rº  }
  s    
zTestBincount.test_emptyc                 C   s4   t jg td�}t j|dd�}t|t jdtd�ƒ d S )NrÑ   rR   r  )r4   r~   rV  r   r   r=   r¶  r:   r:   r;   Útest_empty_with_minlength‚
  s    z&TestBincount.test_empty_with_minlengthc                    sl   t jg td�‰ ttd‡ fdd„ƒ ttd‡ fdd„ƒ t  d¡‰ ttd‡ fdd„ƒ ttd‡ fd	d„ƒ d S )
NrÑ   z"'str' object cannot be interpretedc                      s   t jˆ dd�S ©NÚfoobarr  ©r4   r   r:   rk  r:   r;   ró  ‹
  rô  z<TestBincount.test_with_incorrect_minlength.<locals>.<lambda>zmust not be negativec                      s   t jˆ dd�S ©NrV   r  r  r:   rk  r:   r;   ró  Ž
  rô  rR   c                      s   t jˆ dd�S r  r  r:   rk  r:   r;   ró  “
  rô  c                      s   t jˆ dd�S r  r  r:   rk  r:   r;   ró  –
  rô  )r4   r~   rV  r   r  rZ   r5   rv   r:   rk  r;   Útest_with_incorrect_minlength‡
  s$    
þ
þ

þ
þz*TestBincount.test_with_incorrect_minlengthr`  ra  c                 C   sÌ   t  t tj¡¡}t  t tj¡¡}tdƒD ]}t dddg¡ q,tt  t tj¡¡|ƒ tt  t tj¡¡|ƒ tdƒD ]}t dddgdddg¡ qztt  t tj¡¡|ƒ tt  t tj¡¡|ƒ d S )Nr™   rJ   rH   rQ   rF   rR   rh   )	rf  rg  r4   r¾   ZintprÂ  r\   r   r   )r]   Zintp_refcountZdouble_refcountÚjr:   r:   r;   Útest_dtype_reference_leaks˜
  s    z'TestBincount.test_dtype_reference_leaksÚvalsrH   c              	   C   sJ   t  |¡}ttƒ� t  |¡ W 5 Q R X ttƒ� t  |¡ W 5 Q R X d S r3   )r4   Úasarrayr   rZ   r   )r]   r  Zvals_arrr:   r:   r;   Útest_error_not_1d¨
  s
    


zTestBincount.test_error_not_1dN)rl   rm   rn   r  r  r  r  r	  r
  r  rº  r  r  rÞ   rß   rk  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ej	dd„ dd„ dd„ dd„ gdd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)S )*Ú
TestInterpc                 C   st   t ttdg g ƒ t ttddgddgƒ t ttdddgddgdd� t ttdg g dd� t ttddgddgdd� d S )Nr   rJ   rH   rƒ  éh  )r   rZ   r$   rv   r:   r:   r;   Útest_exceptions´
  s
    zTestInterp.test_exceptionsc                 C   sB   t  ddd¡}t  ddd¡}t  ddd¡}tt  |||¡|ƒ d S )Nr   rJ   rR   r`   )r4   r­  r	   r$   ©r]   rµ   rÀ   Úx0r:   r:   r;   r_   »
  s    zTestInterp.test_basicc           
      C   s¼  t ddƒD �]ª}tj|tjd�}tj|tjd�}tjdd|d |gtjd�}|d d d… }t|||ƒ}t|||ƒ}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ t|||dd�}t|||dd�}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ t|||dd�}t|||dd�}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ t|||ddd	�}t|||ddd	�}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ q
d S )
NrJ   r™   rÑ   rV   r   ©ÚleftrH   ©Úright)r  r  )	r\   r4   r5   rÂ  r[   r~   r$   r)  r   )
r]   ÚsizeÚxpZypZincptsZdecptsZincresZdecresZinctgtZdectgtr:   r:   r;   Útest_right_left_behaviorÁ
  s:    






z#TestInterp.test_right_left_behaviorc                 C   s¦   t  ddd¡}t  ddd¡}d}tt  |||¡|ƒ d}tt  |||¡|ƒ t  d¡}tt  |||¡|ƒ t  d¡}tt  |||¡|ƒ t j}tt  |||¡|ƒ d S )Nr   rJ   rR   r  )r4   r­  r	   r$   r¼   r½   rù   r  r:   r:   r;   Útest_scalar_interpolation_pointç
  s    

z*TestInterp.test_scalar_interpolation_pointc                 C   s~   dddddg}ddddg}ddt jdg}tt  |||¡ddt jt jdgƒ ddt jdg}tt  |||¡ddt jt jdgƒ d S )NrJ   rH   r´  rQ   rF   )r4   r¤  r	   r$   rù   )r]   rµ   r!  Úfpr:   r:   r;   Ú test_non_finite_behavior_exact_xõ
  s    "z+TestInterp.test_non_finite_behavior_exact_xc                 C   s
   t  | ¡S r3   )r4   Zfloat_rk  r:   r:   r;   ró  þ
  rô  zTestInterp.<lambda>c                 C   s
   t | dƒS rÿ   ©rD   rk  r:   r:   r;   ró  ÿ
  rô  c                 C   s
   t d| ƒS rÿ   r&  rk  r:   r:   r;   ró     rô  c                 C   s   t | t | d¡ƒS )NrP   )rD   r4   Úmultiplyrk  r:   r:   r;   ró    rô  rA   zcomplex-realzcomplex-imagzcomplex-both)ÚparamsÚidsc                 C   s   |j S )z( scale function used by the below tests )Úparam)r]   Úrequestr:   r:   r;   Úscý
  s    zTestInterp.scc                 C   s¤   t t dtjdg|ddgƒ¡|tjƒƒ t t ddtjg|ddgƒ¡|tjƒƒ t t dddg|tjdgƒ¡|tjƒƒ t t dddg|dtjgƒ¡|tjƒƒ dS )z test that nans are propagated r³  rJ   r   r™   N)r   r4   r$   rù   ©r]   r,  r:   r:   r;   Útest_non_finite_any_nan  s    (((z"TestInterp.test_non_finite_any_nanc                 C   sº   t t dtj tj
 g|ddgƒ¡|tjƒƒ t t dddg|tj tj
 gƒ¡|tjƒƒ t t dddg|tj
 tj gƒ¡|tjƒƒ t t dtj tj
 g|ddgƒ¡|dƒƒ dS )z2 Test that interp between opposite infs gives nan r³  r   r™   rJ   N©r   r4   r$   r¤  rù   r-  r:   r:   r;   Útest_non_finite_inf  s    ...zTestInterp.test_non_finite_infc                 C   st  t t dtj dg|tj dgƒ¡|tjƒƒ t t dtj dg|tj
 dgƒ¡|tjƒƒ t t dtj dg|dtj gƒ¡|tjƒƒ t t dtj dg|dtj
 gƒ¡|tjƒƒ t t ddtj
 g|tj dgƒ¡|tjƒƒ t t ddtj
 g|tj
 dgƒ¡|tjƒƒ t t ddtj
 g|dtj gƒ¡|tjƒƒ t t ddtj
 g|dtj
 gƒ¡|tjƒƒ dS )z@ Test that interp where both axes have a bound at inf gives nan r³  rJ   r™   r   Nr/  r-  r:   r:   r;   Útest_non_finite_half_inf_xf  s    .......z&TestInterp.test_non_finite_half_inf_xfc                 C   s¬   t t dtj tj g|ddgƒ¡|dƒƒ t t dtj dg|ddgƒ¡|dƒƒ t t ddtj
 g|ddgƒ¡|dƒƒ t t dtj
 tj
 g|ddgƒ¡|dƒƒ dS )z1 Test interp where the x axis has a bound at inf r³  r   r™   rJ   N©r   r4   r$   r¤  r-  r:   r:   r;   Útest_non_finite_half_inf_x'  s    ,((z%TestInterp.test_non_finite_half_inf_xc                 C   s  t t dddg|dtj gƒ¡|tj ƒƒ t t dddg|dtj
 gƒ¡|tj
 ƒƒ t t dddg|tj dgƒ¡|tj ƒƒ t t dddg|tj
 dgƒ¡|tj
 ƒƒ t t dddg|tj tj gƒ¡|tj ƒƒ t t dddg|tj
 tj
 gƒ¡|tj
 ƒƒ dS )z1 Test interp where the f axis has a bound at inf r³  r   rJ   r™   Nr2  r-  r:   r:   r;   Útest_non_finite_half_inf_f.  s    ,,,,0z%TestInterp.test_non_finite_half_inf_fc           	      C   sH  t  ddd¡}t  ddd¡dt  ddd¡ d  }d}|d| d  }tt  |||¡|ƒ d}d}tt j||||d�|ƒ d	}d}tt j||||d
�|ƒ dddddg}ddddg}ddt jdg}ddt jd t jdg}tt  |||¡|ƒ ddddddddg}ddddg}ddddg}d dd!d"dd#d$d%g}tt j|||d&d'�|ƒ d S )(Nr   rJ   rR   rö   r  rV   ù       @      @r  r¥   r  rH   r´  rQ   rF   ù       @      ð?y              à?éLÿÿÿéVÿÿÿéGÿÿÿé¹   r›  r0  ém  é¾   éBÿÿÿé^  é¢þÿÿy      @      ð?y      $@       @y      @      @y      @      @y      @      ø?y     €!@      ü?y      @      ô?y      
@      
@y      @      @y      @      @r  rƒ  )r4   r­  r	   r$   r¤  )	r]   rµ   rÀ   r  Zy0r  r  r!  r$  r:   r:   r;   Útest_complex_interp7  s0    $ ÿzTestInterp.test_complex_interpc                 C   s¾   t  ddd¡}t  ddd¡}t  d¡}tt  |||¡|ƒ t  dddg¡}t  dddg¡}t  t  d¡||¡}t|dƒ tt|t jƒƒ t jt  d¡||dd	�}t|d
ƒ tt|t jƒƒ d S )Nr   rJ   rR   r  rH   rF   rV   r’  rƒ  r³  )	r4   r­  r~   r	   r$   r   r   r  r½   )r]   rµ   rÀ   r  r!  r$  rÂ   r:   r:   r;   Ú)test_zero_dimensional_interpolation_pointS  s    


z4TestInterp.test_zero_dimensional_interpolation_pointc                 C   s2   t  ddd¡}t  |¡}tt  t j||¡dƒ d S )Nr   r™   g-Cëâ6?r¨   )r4   r5   Úsinr	   r$   rØ  )r]   r!  r$  r:   r:   r;   Útest_if_len_x_is_smalld  s    
z!TestInterp.test_if_len_x_is_smallc                 C   s    ddddddddg}d	d
ddg}ddddg}ddddddddg}t tj|||dd�|ƒ tj|dd� dd¡}tj|dd� dd¡}t tj|||dd�|ƒ d S ) Nr7  r8  r9  r:  r›  r0  r   r;  r<  r=  r>  r?  rR   r™   rQ   rF   g      @r®   ç     €!@g      @r§   g      
@ç      @g      @r  rƒ  rœ   r�   rH   rV   rä   )r	   r4   r$   r~   rj   )r]   rµ   r!  r$  rÀ   r:   r:   r;   rŒ  i  s    zTestInterp.test_periodN)rl   rm   rn   r  r_   r"  r#  r%  rÞ   Zfixturer,  r.  r0  r1  r3  r4  r@  rA  rC  rŒ  r:   r:   r:   r;   r  ²
  s6   &üüû
		r  c                   @   sÜ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
jd
 ¡dd„ ƒZdd„ e
jd D ƒe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
 d¡e
jfg Zej 	ddge¡ej 	ddgdddddddddg	¡dd„ ƒƒZe
jd e
jd
  d Zej 	d	e¡d d!„ ƒZej 	d	e¡d"d#„ ƒZej 	d	e¡d$d%„ ƒZd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Z d2d3„ Z!d4d5„ Z"d6d7„ Z#d8d9„ Z$d:d;„ Z%d<d=„ Z&d>d?„ Z'd@dA„ Z(dBdC„ Z)dDdE„ Z*dFdG„ Z+dHdI„ Z,dJS )KÚTestPercentilec                 C   s~   t  d¡d }tt  |d¡dƒ tt  |d¡dƒ tt  |d¡dƒ t j|d	< tt  |d¡t jƒ tt j|dd
d�t jƒ d S )Nrg   r³  r   r¨   r  rE  r`   rª   rJ   Únearest©Úmethod)r4   r5   r   Ú
percentilerù   r   r:   r:   r;   r_   v  s    
zTestPercentile.test_basicc                 C   sØ   dd„ t dƒD ƒ}t |tdƒ¡}t|tdƒƒ tt|ƒtƒ t |tdƒ¡}t|tddƒƒ tt|ƒtƒ t |tdƒ¡}t|tdd	ƒƒ tt|ƒtƒ t |tdƒg¡}t|t tdd	ƒg¡ƒ tt|ƒtjƒ d S )
Nc                 S   s   g | ]}t |d ƒ‘qS ©rH   r   rò  r:   r:   r;   rÚ   €  s     z0TestPercentile.test_fraction.<locals>.<listcomp>rg   r   r  ri   rH   r`   rF   )r\   r4   rJ  r   r   rÌ   r~   rÊ   )r]   rµ   r#  r:   r:   r;   Útest_fraction  s    zTestPercentile.test_fractionc                 C   sR   t  d¡}t  |dd d d¡ t  |dd d dd¡ t  d¡}t  |dd |dd¡ d S )NrR   FÚlinearrÛ   )r4   r[   rJ  )r]   rû   Úor:   r:   r;   Útest_api’  s
    

zTestPercentile.test_apic              	   C   sR   t  dddgdddgdddgdddgdddgg¡}tt j|ddd�dddgƒ d S )NrJ   rF   rQ   r`   r   rp   )r4   r~   r   rJ  r   r:   r:   r;   Útest_2D™  s    üzTestPercentile.test_2Dr¾   ZAllFloatc                 C   sP   t jdt jdddg|d�}t j|ddd�}t j |t j¡ t j |j|j¡ d S )Nr6  ç     €A@ç      D@ç      I@rÑ   rM  rH  )r4   r  ZNANrJ  Útestingr   r¾   )r]   r¾   rã  r–  r:   r:   r;   Útest_linear_nan_1D¡  s    ýz!TestPercentile.test_linear_nan_1Dc                 C   s   g | ]}|t jf‘qS r:   )r4   r½   )rÙ   Zint_typer:   r:   r;   rÚ   ¬  s   ÿzTestPercentile.<listcomp>rŽ  r�  Úinput_dtypeÚexpected_dtyperI  rq  )Úinverted_cdfr'  )Úaveraged_inverted_cdfç     €;@)Úclosest_observationr'  )Úinterpolated_inverted_cdfr'  )ÚhazenrZ  )Úweibullé   )rM  rh  )Úmedian_unbiasedr?  )Únormal_unbiasedg      ;@c                 C   s    t jdddddg|d�}t j|d|d�}t j ||d¡ |d	kr€|d
krbt j t  |¡jt j¡ qœt j t  |¡jt  |¡¡ nt j t  |¡jt  |¡¡ d S )Nr6  g      4@rQ  rR  rS  rÑ   rH  r=  )rX  r[  r�  )r4   r  rJ  rT  r	   r   r¾   r½   )r]   rI  rq  rV  rW  rã  rÂ   r:   r:   r;   Útest_linear_interpolation·  s    ÿÿz(TestPercentile.test_linear_interpolationc                 C   sD   t tjtjd|d�ddd�dƒ t tjtjd|d�ddd�dƒ d S )	Nr™   rÑ   r`   ÚlowerrH  rF   ÚhigherrR   ©r   r4   rJ  r5   ©r]   r¾   r:   r:   r;   Útest_lower_higherÙ  s    ÿÿÿÿz TestPercentile.test_lower_higherc                 C   sˆ   t tjtjd|d�ddd�dƒ t tjtjd|d�d d	dd�d
ƒ t tjtjd|d�ddd�dƒ t tjtjd|d�d	dd�d
ƒ d S )Nr™   rÑ   é3   ÚmidpointrH  r’  râ   rJ   r`   rR   r¬   ç      @re  rf  r:   r:   r;   Útest_midpointà  s(    ÿÿÿÿÿÿÿÿzTestPercentile.test_midpointc                 C   sD   t tjtjd|d�ddd�dƒ t tjtjd|d�ddd�dƒ d S )	Nr™   rÑ   rh  rG  rH  rR   é1   rF   re  rf  r:   r:   r;   Útest_nearestë  s    ÿÿÿÿzTestPercentile.test_nearestc                 C   sL   t j d¡}t  |d¡}t j || ¡ ¡ t  |d¡}t j || ¡ ¡ d S )NrR   r  r   )r4   r¯  r   rJ  rT  r   rp  rÏ  )r]   rã  rÂ   r:   r:   r;   Ú'test_linear_interpolation_extrapolationò  s
    z6TestPercentile.test_linear_interpolation_extrapolationc                 C   s0   t  d¡d }tt  |dddg¡dddgƒ d S )Nrg   r³  r   r  r`   rE  rª   )r4   r5   r   rJ  r   r:   r:   r;   Útest_sequenceû  s    zTestPercentile.test_sequencec                 C   s  t  d¡ dd¡}tt  |d¡dddgƒ dddd	gdd	d
dgddddgg}tt j|ddd�|ƒ dddgdddgdddgg}tt j|ddd�t  |¡jƒ t  d¡ ddd	d
¡}tt  |d¡jdƒ tt  |d¡jdƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jd ƒ tt j|ddd�jd!ƒ tt j|dd"d#�jdƒ tt j|dd"d#�jdƒ tt j|ddd"d$�jdƒ tt j|ddd"d$�jdƒ tt j|ddd"d$�jdƒ tt j|ddd"d$�jd ƒ tt j|ddd"d$�jd!ƒ d S )%Nrò   rQ   rF   )r�  r`   r  g      @rj  rœ  rH   rR   rh   ri   rg   râ   r™   r¬   r   rp   ç      è?rž  ç      @rD  r¯   rJ   r  ©r�  r`   rK  )r�  r`   r†  ©rQ   )rH   rF   rR   rh   )rH   rQ   rR   rh   )rH   rQ   rF   rh   )rH   rQ   rF   rR   )rQ   rQ   rR   rh   rd  rH  ©rq   rI  )r4   r5   rj   r   rJ  r~   r  r?   )r]   rµ   Úr0r	  r:   r:   r;   rj  ÿ  sh    " ÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_axisc                 C   sœ  t  d¡ dd¡}tt  |d¡dƒ tt  t  |d¡¡ƒ t  dddd	g¡}tt j|dd
d�|ƒ tt j|dd
d�j|jƒ t  dddg¡}t	t j|ddd�|ƒ tt j|ddd�j|jƒ t  
d¡}tt j|d|d�dƒ t|dƒ t  
d¡}tt j|dd
|d�|ƒ t||ƒ t  
d¡}tt j|dd|d�|ƒ t||ƒ t  d¡ dd¡}tt j|ddd�dƒ tt  t  |d¡¡ƒ t  dddd	g¡}t j|ddd
d�}t||ƒ t|j|jƒ t  dddg¡}t j|dddd�}t	||ƒ t|j|jƒ t j
d|jd�}t j|dd|d�}t|dƒ t|dƒ t j
d|jd�}t j|ddd
|d�}t||ƒ t||ƒ t j
d|jd�}t j|ddd|d�}t||ƒ t||ƒ d S )Nrò   rQ   rF   r`   rj  r­   r®   r¹   r7  r   rp   rž  r¯   rJ   ©rd  ©rq   rd  rc  rH  )rI  rq   r¦   r2  r:   rÑ   ©rI  rd  rR   ©rI  rq   rd  )r4   r5   rj   r   rJ  r   Úisscalarr~   r?   r	   Úemptyr¾   )r]   rµ   ru  r	  rd  Zc0Zc1r‰   r:   r:   r;   Útest_scalar_q#  sR    












zTestPercentile.test_scalar_qc                 C   s€   t ttjddgddd� t ttjdgdƒ t ttjdgdƒ t ttjdgttdƒƒdg ƒ t ttjdgttdƒƒd	g ƒ d S )
NrJ   rH   é8   r  rH  ée   rV   r`   rb  )r   rZ   r4   rJ  rn  r\   rv   r:   r:   r;   Útest_exceptionS  s    ÿ zTestPercentile.test_exceptionc                 C   s   t t dddgd¡dƒ d S )NrJ   rH   rQ   r   )r   r4   rJ  rv   r:   r:   r;   Útest_percentile_list[  s    z#TestPercentile.test_percentile_listc                 C   s  t  dddg¡}t  d¡}d}t j|||d� tt  ||¡|ƒ t  dddgddd	gg¡}t  d
¡}t j||d|d� tt j||dd�|ƒ t  d¡}t j||d|d� tt j||dd�|ƒ t  d¡ dd¡}t  ddddgddddgg¡}t  d¡}tt j|dd|d�|ƒ t||ƒ t  dddgdddgg¡}t  d¡}tt j|dd|d�|ƒ t||ƒ t  ddddgddd	dgg¡}t jd|jd �}t j|dd!d|d"�}t||ƒ t||ƒ t  ddd#gddd$gg¡}t jd|jd �}t j|dd!d|d"�}t||ƒ t||ƒ d S )%NrJ   rH   rQ   rs  ©rJ   rH   rQ   rv  rF   rR   rh   ry  r   rw  rp   ©rQ   rH   rò   r¥   r§   r­   r®   r¹   r7  )rH   rF   rr  rp  rq  rD  rž  rj  r¯   rÑ  ri   rÑ   rc  ry  rg   râ   )	r4   r~   r=   rJ  r   r5   rj   r{  r¾   )r]   rµ   rÀ   r#  ru  rd  r	  r‰   r:   r:   r;   Útest_percentile_out^  sB    
ÿ








z"TestPercentile.test_percentile_outc                 C   s–  t  d¡ dddd¡}tt j|ddd�jdƒ tt j|ddd�jd	ƒ tt j|ddd�jd
ƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jd
ƒ tt j|ddd�jd	ƒ tt j|ddd�jdƒ tt j|dddd�jd
ƒ tt j|dddd�jd
ƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ d S )NrA  r¬   rJ   rH   r`   r   rp   )rJ   rH   rJ   )r¬   rH   rJ   )r¬   rJ   rJ   rQ   )r¬   rJ   rH   rV   rP   rS   r  ri  rt  r™   )rH   rJ   rH   rJ   )rH   r¬   rH   rJ   )rH   r¬   rJ   rJ   )rH   r¬   rJ   rH   )r4   r5   rj   r   rJ  r?   r~   ©r]   rû   r:   r:   r;   Útest_percentile_empty_dim‡  s>    ÿþÿþÿÿÿÿz(TestPercentile.test_percentile_empty_dimc                 C   sx   t  ddddg¡}t j|dgdd� t|t  ddddg¡ƒ t  ddddg¡}t  |dg¡ t|t  ddddg¡ƒ d S )NrH   rQ   rF   rJ   r`   F©Úoverwrite_input©r4   r~   rJ  r   re   r:   r:   r;   Útest_percentile_no_overwrite£  s    z+TestPercentile.test_percentile_no_overwritec                 C   s„   t jdddd�}t jt  d¡|dd� t|t jdddd�ƒ t jdddd� ¡ }t jt  d¡|dd� t|t jdddd� ¡ ƒ d S )Nr¨   ç      Y@rR   )Únumri  rH  )r4   r­  rJ  r5   r   rî  )r]   r#  r:   r:   r;   Útest_no_p_overwrite¬  s    z"TestPercentile.test_no_p_overwritec                 C   sf   t  ddddg¡}t j|dgdd�}t|t  dg¡ƒ t jddddgdgdd�}t|t  dg¡ƒ d S )	NrH   rQ   rF   rJ   r`   Tr†  r´  rˆ  rx   r:   r:   r;   Útest_percentile_overwrite´  s
    z(TestPercentile.test_percentile_overwritec              
   C   sÔ  t jjdd�}t  |gd ¡}tt j|ddd�t  |d¡ƒ t  |dd¡}tt j|dd	d�t  |d¡ƒ | dd
¡ ¡ }tt j|ddd�t  |d¡ƒ | dd
¡ ¡ }tt j|ddgdd�t j|ddgd d�ƒ tt j|ddgdd�t j|ddgdd�ƒ t  	d¡ 
d¡}t j | ¡ ¡ tt j|ddd�d t  |d d …d d …d d …df  ¡ d¡ƒ tt j|ddgdd�d d …d
f t  |d d …d d …d
d d …f  ¡ ddg¡ƒ tt j|ddd�d t  |d d …d d …dd d …f  ¡ d¡ƒ tt j|ddd�d t  |dd d …d d …d d …f  ¡ d¡ƒ tt j|ddd�d t  |dd
d d …d d …f  ¡ d¡ƒ tt j|ddd�d t  |dd d …d d …d
f  ¡ d¡ƒ tt j|ddd�d t  |dd d …dd d …f  ¡ d¡ƒ d S )N©éG   é   ©r   r™   r9  rW   rp   rV   r   rd   rJ   rb   r�  r�  rI   ©r   éƒ  ©rQ   rR   ri   r¬   éZ   ©r   rJ   rQ   ©rQ   rJ   r  rH   ©rQ   rJ   rH   r‚  ©rH   rJ   ©rJ   rP   ©rJ   rQ   rM   )r4   r¯  ÚnormalÚdstackr   rJ  Úmoveaxisr„   rš   r5   rj   ÚshuffleÚravelÚflatten©r]   rN  rµ   rû   r:   r:   r;   Útest_extended_axis¼  sJ    ÿÿ&ÿ *ÿ&ÿ&ÿ"ÿ"ÿ"ÿz!TestPercentile.test_extended_axisc                 C   s¢   t  d¡}tt jt j|ddd� tt jt j|ddd� tt jt j|ddd� tt j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”  r0  r�  )rq   rœ  ©r   r0  rF   ©r   rF   rO   )rV   rV   )rQ   rV   )r4   r[   r   rt   rJ  rZ   r„  r:   r:   r;   Útest_extended_axis_invalidÜ  s    
z)TestPercentile.test_extended_axis_invalidc                 C   sæ   t  d¡}tt j|dd dd�jdƒ tt j|dddd�jdƒ tt j|dddd�jd	ƒ tt j|dd
dd�jdƒ tt j|dddd�jdƒ tt j|dddd�jdƒ tt j|ddgddd�jdƒ tt j|ddgddd�jdƒ d S )Nr”  ri   Tr°   ©rJ   rJ   rJ   rJ   rW   ©rJ   rJ   ri   r¬   rs   ©rJ   rR   ri   rJ   rÛ   ©rQ   rJ   ri   r¬   ©r   rJ   rH   rQ   )r±   r–  ©rJ   rJ   ri   rJ   rJ   )rH   rJ   rJ   ri   rJ   )rH   rJ   rR   ri   rJ   )r4   r[   r   rJ  r?   r„  r:   r:   r;   Útest_keepdimsç  s:    
ÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_keepdimsc                 C   s¾   t  d¡}t  d¡}tt j|dd|d�|ƒ tt j|ddd|d�|ƒ t  d¡}tt j|dd|d�|ƒ tt j|ddd|d�|ƒ t  d	¡}tt j|d
|d�|ƒ tt j|d
d|d�|ƒ d S )N©rF   rë  r   rv  rG  rx  rs  rJ   r:   rH   )r4   r=   r[   r   rJ  ©r]   rN  rû   r:   r:   r;   Útest_outû  s    



zTestPercentile.test_outc              	   C   sî   t jdd��Ø t  ddt¡ t d¡}t d¡}tj|d< ttj	|dd|d	�|ƒ ttj	|ddd
|d�|ƒ t d¡}ttj	|dd|d	�|ƒ ttj	|ddd
|d�|ƒ t d¡}ttj	|d|d	�|ƒ ttj	|dd
|d�|ƒ W 5 Q R X d S )NTr  r	  r
  r®  rë  r™  r   rv  rG  rx  rs  rJ   r:   )
r  r  r  r¹  r4   r=   r[   rù   r   rJ  r¯  r:   r:   r;   Útest_out_nan  s,    


 ÿ
 ÿ
 ÿzTestPercentile.test_out_nanc                 C   s:  t jdtd�}t j|d< tt  |d¡t jƒ tt j|ddd�t jƒ tt j|ddgdd�t  t jgd ¡ƒ t jdtd� ddd	¡}t j|d
< t j|d< tt  |d¡t jƒ tt  |d¡jdƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …ddf< t j|d d …ddf< tt  |ddgd¡|ƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …ddf< t j|d d …ddf< tt  |ddgd¡|ƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …df< t j|d d …df< tt  |ddgd¡|ƒ t jt jdtd� ddd	¡ddgddd�}t j|d d …df< t j|d d …df< tt j|ddgddd�|ƒ d S )Nr  rÑ   rH   r  r   rp   g333333ã?rQ   rF   r�  ©rJ   rJ   rH   rÑ  rc   rJ   r›  rN   rG  rH  )	r4   r5   r)  rù   r   rJ  r~   rj   rƒ   rx   r:   r:   r;   Útest_nan_behavior  s‚    
ÿ

"

 ÿ"

  ÿ  ÿ

 ÿ  ÿ   ÿÿz TestPercentile.test_nan_behaviorc              	   C   s¬   t jtdd�� t ddddgtj¡ W 5 Q R X t jtdd�� t ddddgtjg¡ W 5 Q R X t ddd	¡}tj|d
< t jtdd�� t ddddg|¡ W 5 Q R X d S )NzPercentiles must be inr,  rJ   rH   rQ   r­   r¦   g     ÀX@r<  r   )rÞ   r  rZ   r4   rJ  rù   r­  )r]   rœ  r:   r:   r;   Ú
test_nan_qW  s     "
zTestPercentile.test_nan_qN)-rl   rm   rn   r_   rL  rO  rP  rÞ   rß   rà   r4   Ú	typecodesrU  rÁ  r½   r¼   rÃ  rF  rG  Zclongdoubler¾   ZH_F_TYPE_CODESrb  Z
TYPE_CODESrg  rk  rm  rn  ro  rj  r|  r  r€  rƒ  r…  r‰  rŒ  r�  r£  r¦  r­  r°  r±  r³  r´  r:   r:   r:   r;   rF  t  st   	

ÿ






ùþøÿ



	$0)	 =rF  c                   @   sÎ   e Zd Zdd„ Zdd„ Zejjdd�dd„ ƒZd	d
„ Z	dd„ Z
ej dejd ¡dd„ ƒZej ddddddddddddddg¡dd „ ƒZejeejejd!d"d#�ejd$d$d%d&d'�d(�d)�d*d+„ ƒZd,d-„ Zd.S )/ÚTestQuantilec                 C   s,   dddg}t  |d¡}t jj|ddd� d S )Nr¨   r  rÆ  gÍÌÌÌÌÌÜ?g
×£p=
Ç?rJ   )Zmaxulp)r4   ÚquantilerT  Zassert_array_max_ulp)r]   rµ   r^   r:   r:   r;   Útest_max_ulpf  s    
zTestQuantile.test_max_ulpc                 C   sH   t  d¡d }tt  |d¡dƒ tt  |d¡dƒ tt  |d¡dƒ d S )Nrg   r³  r   r¨   rJ   rE  rª   )r4   r5   r   r·  r   r:   r:   r;   r_   n  s    zTestQuantile.test_basiczSee gh-19154ra  c                 C   sn   t  dg¡}t  dd¡}t||d ƒ tt|ƒ|jƒ t  dddg¡}t  ||¡}t||ƒ t|j|jƒ d S )NTFr   )r4   r~   r·  r   rÌ   r¾   r   )r]   r^   Ztf_quantZ	quant_resr:   r:   r;   Útest_correct_quantile_valuet  s    
z(TestQuantile.test_correct_quantile_valuec                 C   s8  dd„ t dƒD ƒ}t |d¡}t|dƒ tt|ƒtƒ t |d¡}t|tddƒƒ tt|ƒtƒ t |tddƒ¡}t|tddƒƒ tt|ƒtƒ t |tddƒg¡}t|t tddƒg¡ƒ tt|ƒtjƒ t |tddƒgg¡}t|t tddƒgg¡ƒ tt|ƒtjƒ t d¡}tt |tddƒ¡tddƒƒ d S )	Nc                 S   s   g | ]}t |d ƒ‘qS rK  r   rò  r:   r:   r;   rÚ   �  s     z.TestQuantile.test_fraction.<locals>.<listcomp>rg   r   rJ   ri   rH   rF   )	r\   r4   r·  r   rÌ   r   r~   rÊ   r5   )r]   rµ   rœ  r:   r:   r;   rL    s$    

zTestQuantile.test_fractionc                 C   sp   t  dddddg¡}| ¡ }t jt  d¡|dd� t||ƒ | ¡ }| ¡ }t jt  d¡|dd� t||ƒ d S )	Nr   rp  r¶  r³  r¦   rŠ  ri  rH  )r4   r~   rš   r·  r5   r   rî  )r]   Úp0r#  r:   r:   r;   rŒ  š  s    
z TestQuantile.test_no_p_overwriter¾   rŽ  c                 C   s2   t jt jddg|d�dgdd�}|j|ks.t‚d S )NrJ   rH   rÑ   r³  rG  rH  )r4   r·  r~   r¾   r´   )r]   r¾   r–  r:   r:   r;   Útest_quantile_preserve_int_type¦  s    ÿz,TestQuantile.test_quantile_preserve_int_typerI  rX  rY  r[  r\  r]  r^  rM  r`  ra  rG  rc  rd  ri  c                 C   sˆ   t  ddd¡}t jt  dddddddddddddddd	d	d
g¡d ||d�}tt  |¡|ƒ t jddddg||d�}tt  |¡|ƒ d S )Nr   rJ   r~  rH   rQ   rF   rR   râ   rg   ri   rc  rH  r¨   r¦   r¥   r§   )r4   r­  r·  r~   r   r±  )r]   rI  rº  r·  r:   r:   r;   Útest_quantile_monotonic¬  s    	&  ÿÿ ÿz$TestQuantile.test_quantile_monotonicrQ   r…  )Ú	min_valueÚ	max_valueFçœu ˆ<ä7þçœu ˆ<ä7~)Úallow_infinityÚ	allow_nanr½  r¾  )r¾   r?   Úelements)rã  c                 C   s.   t  ddd¡}t  ||¡}tt  |¡|ƒ d S )Nr   rJ   g{®Gáz„?)r4   r5   r·  r   r±  )r]   rã  rº  r·  r:   r:   r;   Útest_quantile_monotonic_hypo¾  s    z)TestQuantile.test_quantile_monotonic_hypoc                 C   sZ   t  dddgdddgg¡}t j|d d< t  |d	¡}t  |¡sBt‚tt  |d	¡t jƒ d S )
Nr1  r7  r­   r§   r¥   r¦   r   rJ   r³  )r4   r~   rù   r·  rz  r´   r   )r]   r^   rÂ   r:   r:   r;   Útest_quantile_scalar_nanÈ  s
    z%TestQuantile.test_quantile_scalar_nanN)rl   rm   rn   r¸  r_   rÞ   rß   r€  r¹  rL  rŒ  rà   r4   rµ  r»  r¼  Ú
hypothesisÚgivenr   r½   ÚstZintegersÚfloatsrÄ  rÅ  r:   r:   r:   r;   r¶  c  sD   


       ýÿ
 ÿþÿ
r¶  c                
   @   sê   e Zd Zejejddddd�ejddddd�ejddddd�ejddddd�d�dd	„ ƒZejejddddd�ejddddd�ejddddd�d
�dd„ ƒZejejddddd�ejddddd�ejddddd�d
�dd„ ƒZ	dd„ Z
dS )ÚTestLerpFr   rJ   )rÂ  rÁ  r½  r¾  r¿  rÀ  )Út0Út1r^   ry   c                 C   sh   t  |||¡}t  |||¡}||ks,||kr:||ksdt‚n*||k ||k krX||ksdt‚n||ksdt‚d S r3   ©r=  Ú_lerpr´   )r]   rË  rÌ  r^   ry   Zl0Úl1r:   r:   r;   Ú+test_linear_interpolation_formula_monotonicÑ  s    	z4TestLerp.test_linear_interpolation_formula_monotonic)Útr^   ry   c                 C   sV   ||kr.|t  |||¡  kr&|ksRn t‚n$|t  |||¡  krL|ksRn t‚d S r3   rÍ  )r]   rÑ  r^   ry   r:   r:   r;   Ú)test_linear_interpolation_formula_boundedã  s    &z2TestLerp.test_linear_interpolation_formula_boundedc                 C   s6   t  ||dd|  ¡}t  ||d| ¡}t||ƒ d S rì  )r=  rÎ  r   )r]   rÑ  r^   ry   r  r  r:   r:   r;   Ú+test_linear_interpolation_formula_symmetricï  s    z4TestLerp.test_linear_interpolation_formula_symmetricc                 C   s8   t  d¡}t  d¡}t  d¡}t |||¡dks4t‚d S )NrH   rR   r  gÍÌÌÌÌÌ@)r4   r~   r=  rÎ  r´   )r]   r^   ry   rÑ  r:   r:   r;   Ú+test_linear_interpolation_formula_0d_inputsû  s    


z4TestLerp.test_linear_interpolation_formula_0d_inputsN)rl   rm   rn   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ej	 
ddddgdejdgejd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"S )#Ú
TestMedianc                 C   sH  t  d¡}t  d¡}t  d¡ dd¡}tt  |¡dƒ tt  |¡dƒ tt  |¡dƒ tt j|dd�d	dd
gƒ tt j|dd�ddgƒ tt j|d d�dƒ t  ddddg¡}t|d |d  d t  |¡ƒ t  dddg¡}t|d t  |¡ƒ t  dddg¡}t|d t  |¡ƒ tt  |¡jdƒ t j	|d< tt  |¡jdƒ d S )NrJ   rH   rh   rQ   r³  r´  r   rp   rž  rE  rF   gð™6-Â¦?gº¤0”¸§?gºÝË}rÂ?g©Á4¯?r¥   rV   )
r4   r~   r5   rj   r   Úmedianr   r	   rƒ   rù   )r]   Úa0r$  rL  r^   r:   r:   r;   r_     s$    

 
zTestMedian.test_basicc                 C   sè   t  ddgddgddgddgg¡}|t jjdd	d
d�fD ]B}| ¡ }t j|d d� t|jƒD ]}t j||d� q\t||ƒ q8t	t j|dd�ddgƒ t	t j|j
dd�ddgƒ t	t  |¡dƒ t	t j|d d�dƒ t	t  |j
¡dƒ d S )NrH   rQ   r   rJ   rh   ri   rF   rR   r  r  r‘  rp   rE  )r4   r~   r¯  Úrandintrš   rÖ  r\   rƒ   r   r   r  )r]   Úa3r^   ÚorigZaxr:   r:   r;   Útest_axis_keyword  s     
ýzTestMedian.test_axis_keywordc                 C   sà  t  ddgddgddgddgg¡}t  d¡}t  d¡}t  d¡ dd¡}tt j| ¡ d	d
�dƒ tt j| ¡ d	d
�dƒ tt j| ¡ d	d
�dƒ tt j| ¡ d	dd�dddgƒ tt j| ¡ d	dd�ddgƒ tt j| ¡ d	d d�dƒ tt j| ¡ d	dd�ddgƒ tt j|j ¡ d	dd�ddgƒ t jdt jd� d¡}t j	 
| ¡ ¡ tt j|d d�t j| ¡ d d	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ d S )NrH   rQ   r   rJ   rh   ri   rF   rR   Tr†  r³  r´  )r‡  rq   rž  rE  r�  rÑ   )rQ   rF   rR   rp   )rq   r‡  )r4   r~   r5   rj   r   rÖ  rš   r  r¼   r¯  rŸ  r   )r]   rÙ  r×  r$  rL  Za4r:   r:   r;   Útest_overwrite_keyword,  sV    
ý

ÿ ÿ ÿ ÿÿÿÿÿÿz!TestMedian.test_overwrite_keywordc                 C   sH   dddg}t t |¡dƒ |g}t t |¡dƒ ttj|dd�|ƒ d S )NrJ   rH   rQ   r   rp   )r	   r4   rÖ  r   )r]   rµ   r«  r:   r:   r;   r   M  s
    
zTestMedian.test_array_likec                 C   s4   G dd„ dt jƒ}|dddgƒ}tt  |¡dƒ d S )Nc                   @   s    e Zd Zddd„Zddd„ZdS )z,TestMedian.test_subclass.<locals>.MySubClassNc                 S   s   t  |¡ | ¡}||_|S r3   )r4   r  rË   Úinfo)ÚclsZinput_arrayrÝ  Úobjr:   r:   r;   Ú__new__X  s    z4TestMedian.test_subclass.<locals>.MySubClass.__new__c                 S   s   dS )Néùÿÿÿr:   )r]   rq   r¾   rd  r:   r:   r;   r©   ]  s    z1TestMedian.test_subclass.<locals>.MySubClass.mean)N)NNN)rl   rm   rn   rà  r©   r:   r:   r:   r;   Ú
MySubClassV  s   
râ  rJ   rH   rQ   rá  )r4   rÊ   r   rÖ  )r]   râ  r^   r:   r:   r;   r  T  s    
zTestMedian.test_subclassrã  r¦   r¥   r§   r¨   c                 C   s:   G dd„ dt jƒ}t  t  |¡ |¡¡}t||ƒs6t‚dS )z6Check that we return subclasses, even if a NaN scalar.c                   @   s   e Zd ZdS )z-TestMedian.test_subclass2.<locals>.MySubclassNrÈ   r:   r:   r:   r;   Ú
MySubclassg  s   rã  N)r4   rÊ   rÖ  r~   rË   r  r´   )r]   rã  rã  ræ   r:   r:   r;   Útest_subclass2c  s    zTestMedian.test_subclass2c                 C   sl   t  d¡}t  d¡}tt j|d|d�|ƒ t  d¡}tt j|d|d�|ƒ t  d¡}tt j||d�|ƒ d S )Nr®  rë  r   rv  rs  rJ   r:   )r4   r=   r[   r   rÖ  r¯  r:   r:   r;   r°  m  s    



zTestMedian.test_outc              	   C   sœ   t jdd��† t  ddt¡ t d¡}t d¡}tj|d< ttj	|d|d	�|ƒ t d
¡}ttj	|d|d	�|ƒ t d¡}ttj	||d	�|ƒ W 5 Q R X d S )NTr  r	  r
  r®  rë  r™  r   rv  rs  rJ   r:   )
r  r  r  r¹  r4   r=   r[   rù   r   rÖ  r¯  r:   r:   r;   r±  v  s    




zTestMedian.test_out_nanc                 C   sf  t jdtd�}t j|d< tt  |¡t jƒ tt j|dd�t jƒ t jdtd� ddd¡}t j|d< t j|d	< tt  |¡t jƒ tt  |¡jdƒ t  t jdtd� ddd¡d¡}t j|d
< t j|d< tt  |d¡|ƒ t  t jdtd� ddd¡d¡}t j|d< t j|d< tt  |d¡|ƒ t  t jdtd� ddd¡d¡}t j|d< t j|d< tt  |d¡|ƒ d S )Nr  rÑ   rH   r   rp   rQ   rF   r�  r²  rÑ  rc   rJ   r›  rN   )r4   r5   r)  rù   r   rÖ  rj   rƒ   rx   r:   r:   r;   r³  ‚  s*    


 

 

 

zTestMedian.test_nan_behaviorc              	   C   sZ  t jg td�}tjdd��F}t ddt¡ tt  |¡t j	ƒ t
|d jtkƒ tt|ƒdƒ W 5 Q R X t jg tdd	�}tjdd��8}t ddt¡ tt  |¡t j	ƒ t
|d jtkƒ W 5 Q R X t jg tdd	�}tt j|dd
�|ƒ tt j|dd
�|ƒ t jt j	tdd	�}tjdd��:}t ddt¡ tt j|dd
�|ƒ t
|d jtkƒ W 5 Q R X d S )NrÑ   Tr  r	  r
  r   rH   rQ   )r¾   rÅ  rp   rJ   )r4   r~   r)  r  r  r  r¹  r   rÖ  rù   r   r  rç   )r]   r^   rÁ   ry   r:   r:   r;   rº  ¢  s&    zTestMedian.test_emptyc                 C   sL   t  d¡}ttt  | t¡¡ƒtƒ t j|d< ttt  | t¡¡ƒtƒ d S )Nr7  rH   )	r4   r5   r   rÌ   rÖ  r»   r•  r)  rù   )r]   rN  r:   r:   r;   Útest_object¿  s    

zTestMedian.test_objectc              
   C   s’  t jjdd�}t  |gd ¡}tt j|dd�t  |¡ƒ t  |dd¡}tt j|dd�t  |¡ƒ | dd	¡ ¡ }tt j|d
d�t  |¡ƒ 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¡ 
d¡}t j | ¡ ¡ tt j|dd�d t  |d d …d d …d d …df  ¡ ¡ƒ tt j|dd�d	 t  |d d …d d …d	d d …f  ¡ ¡ƒ tt j|dd�d t  |d d …d d …dd d …f  ¡ ¡ƒ tt j|dd�d t  |dd d …d d …d d …f  ¡ ¡ƒ tt j|dd�d t  |dd	d d …d d …f  ¡ ¡ƒ tt j|dd�d t  |dd d …d d …d	f  ¡ ¡ƒ tt j|dd�d t  |dd d …dd d …f  ¡ ¡ƒ d S )NrŽ  r‘  r™   rW   rp   rV   r   rd   rJ   rb   rI   r’  )rV   r“  r”  r–  r—  rH   r˜  r‚  r™  rš  r›  rM   )r4   r¯  rœ  r�  r   rÖ  rž  r„   rš   r5   rj   rŸ  r   r¡  r¢  r:   r:   r;   r£  Å  sB    $ÿ$ÿ$ÿ$ÿ ÿ ÿ ÿzTestMedian.test_extended_axisc                 C   sp   t  d¡}tt jt j|dd� tt jt j|dd� tt jt j|dd� tt jt j|dd� ttt j|dd� d S )Nr”  r0  rp   r¤  rF   r¥  rO   )r4   r[   r   rt   rÖ  rZ   r„  r:   r:   r;   r¦  ã  s    
z%TestMedian.test_extended_axis_invalidc                 C   sž   t  d¡}tt j|d dd�jdƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|d	dd�jd
ƒ tt j|ddd�jdƒ tt j|ddd�jdƒ d S )Nr”  Tr°   r§  rW   r¨  rs   r©  rÛ   rª  r«  r–  r¬  )r4   r[   r   rÖ  r?   r„  r:   r:   r;   r­  ë  s&    
ÿÿÿÿÿÿzTestMedian.test_keepdimsN)rl   rm   rn   r_   rÛ  rÜ  r   r  rÞ   rß   rà   r4   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 )ÚTestAdd_newdoc_ufuncc                 C   s"   t ttddƒ t tttjdƒ d S )NrH   Zblah)r   r  r   rZ   r4   r6   rv   r:   r:   r;   Útest_ufunc_argý  s    z#TestAdd_newdoc_ufunc.test_ufunc_argc                 C   s   t tttjdƒ d S )NrQ   )r   r  r   r4   r6   rv   r:   r:   r;   Útest_string_arg  s    z$TestAdd_newdoc_ufunc.test_string_argN)rl   rm   rn   rç  rè  r:   r:   r:   r;   ræ  û  s   ræ  c                   @   s\   e Zd Zejjejjdkdd�ejj	e
dd�dd„ ƒƒZejjejjdkdd�dd„ ƒZd	S )
ÚTestAdd_newdocrH   úPython running -OOra  úPyPy does not modify tp_docc                 C   sV   d}t tjjjjd t|ƒ… |ƒ tttjjj	jƒdkƒ tttj
jjjƒdkƒ d S )Nz"Current flat index into the array.r½  )r   r4   ÚcoreÚflatiterÚindexr/  rç   r   ZufuncÚidentityr¥  Zindex_tricksZmgrid)r]   rM  r:   r:   r;   Útest_add_doc  s    zTestAdd_newdoc.test_add_docc                 C   s2   t jjjj}t  ddd¡ |t jjjjks.t‚d S )Nz
numpy.corerí  )rî  zbad docstring)r4   rì  rí  rî  r/  Z
add_newdocr´   )r]   Zprev_docr:   r:   r;   Útest_errors_are_ignored  s    z&TestAdd_newdoc.test_errors_are_ignoredN)rl   rm   rn   rÞ   rß   rk  rf  rŸ   Úoptimizer€  r   rð  rñ  r:   r:   r:   r;   ré    s
   ré  c                   @   s\   e Zd Zejjejjdkdd�ejje	dd�dd„ ƒƒZ
ejjejjdkdd�dd„ ƒZd	S )
ÚTestAddDocstringrH   rê  ra  rë  c                 C   s0   t  t jjt jjj¡ dd„ }t  ||j¡ d S )Nc                   S   s   dS ©Z	docstringNr:   r:   r:   r:   r;   Úfunc"  s    z6TestAddDocstring.test_add_same_docstring.<locals>.func)r4   Úadd_docstringrÊ   Úflatr/  ©r]   rõ  r:   r:   r;   Útest_add_same_docstring  s    z(TestAddDocstring.test_add_same_docstringc              	   C   sP   t tƒ� t tjjd¡ W 5 Q R X dd„ }t tƒ� t |d¡ W 5 Q R X d S )Nzdifferent docstringc                   S   s   dS rô  r:   r:   r:   r:   r;   rõ  .  s    z=TestAddDocstring.test_different_docstring_fails.<locals>.func)r   rÕ  r4   rö  rÊ   r÷  rø  r:   r:   r;   Útest_different_docstring_fails(  s
    

z/TestAddDocstring.test_different_docstring_failsN)rl   rm   rn   rÞ   rß   rk  rf  rŸ   rò  r   rù  rú  r:   r:   r:   r;   ró    s
   
ró  c                	   @   s6   e Zd Zej dddddddg¡dd	„ ƒZd
d„ ZdS )ÚTestSortComplexztype_in, type_out)ÚlÚD)Úhrœ   )ÚHrœ   )ry   rœ   )rç  rœ   )rÇ  ÚGc                 C   sN   t jdddddg|d�}t  |¡}t  |¡ |¡}t||ƒ t|j|jƒ d S )NrR   rQ   rh   rH   rJ   rÑ   )r4   r~   Úsort_complexr±  r»   r   r¾   )r]   Ztype_inZtype_outr^   rÂ   rq  r:   r:   r;   Útest_sort_real8  s
    


zTestSortComplex.test_sort_realc                 C   sR   t jddddgdd�}t jddddgdd�}t  |¡}t||ƒ t|j|jƒ d S )Nr5  y      ð?       ÀrÔ  r6  rý  rÑ   )r4   r~   r  r   r¾   )r]   r^   rq  rÂ   r:   r:   r;   Útest_sort_complexH  s
    

z!TestSortComplex.test_sort_complexN)rl   rm   rn   rÞ   rß   rà   r  r  r:   r:   r:   r;   rû  6  s   ú
rû  )r¦   )r¦   r¨   )zrS  r  rf  r×   Z	fractionsr   rú  rÞ   rÆ  Zhypothesis.extra.numpyr   Zhypothesis.strategiesZ
strategiesrÈ  Znumpyr4   r   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   Znumpy.lib.function_baser¥  Zfunction_baser=  Znumpy.randomr   Z	numpy.libr   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/   r0   r1   r2   r<   rD   rE   ro   r‹   r–   r˜   r¤   rá   r  r/  r4  r5  r8  rN  rZ  r^  r  r˜  rÑ  rÛ  rñ  rý  rþ  rÿ  rY  rl  r�  rß   rà   rµ  r�  rš  rž  r¡  r£  r¨  rÄ  rÛ  rÞ  rá  râ  r÷  rÿ  r  rF  r¶  rÊ  rÕ  ræ  ré  ró  rû  r:   r:   r:   r;   Ú<module>   s¢   8ˆDg# 	>o u }A)

   *)U ÿl>[j4nd` C   rm2 z
