U
    b»{jþ  ã                   @   s  d dl mZmZmZ d dlZd dlZd dlZd dlZd dl	m
Z
mZ d dlmZ d dlmZ d dlmZmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZ d dlZd	Z d
Z!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'd–d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(„ Z0d)d*„ Z1d+d,„ Z2d-d.„ Z3d/d0„ Z4d1d2„ Z5d3d4„ Z6d5d6„ Z7d7d8„ Z8d9d:„ Z9d;d<„ Z:d=d>„ Z;d?d@„ Z<dAdB„ Z=dCdD„ Z>dEdF„ Z?dGdH„ Z@dIdJ„ ZAdKdL„ ZBdMdN„ ZCdOdP„ ZDdQdR„ ZEdSdT„ ZFdUdV„ ZGdWdX„ ZHdYdZ„ ZId[d\„ ZJd]d^„ ZKd_d`„ ZLdadb„ ZMdcdd„ ZNdedf„ ZOdgdh„ ZPdidj„ ZQdkdl„ ZRdmdn„ ZSdodp„ ZTdqdr„ ZUdsdt„ ZVdudv„ ZWdwdx„ ZXdydz„ ZYd—d{d|„ZZd˜d}d~„Z[d™dd€„Z\dšd�d‚„Z]dƒd„„ Z^d…d†„ Z_d‡dˆ„ Z`d‰dŠ„ Zad‹dŒ„ Zbd�dŽ„ Zcd�d�„ ZdG d‘d’„ d’eeƒZeG d“d”„ d”eƒZfegd•k�r
e h¡  dS )›é    )ÚproductÚcycleÚpermutationsN)ÚjitÚtypeof)Útypes)Úcompile_isolated)ÚTypingErrorÚLoweringErrorÚNumbaValueErrorÚNumbaExperimentalFeatureWarning)Úas_dtypeÚnumpy_version)ÚTestCaseÚCompilationCacheÚ
MemoryLeakÚMemoryLeakMixinÚtagÚ
needs_blasztimedelta64[M]ztimedelta64[Y]c                 C   s   t  | ||¡ d S ©N©ÚnpÚaround©ÚarrÚdecimalsÚout© r   ú]/var/www/html/bwave/python/venv/lib/python3.8/site-packages/numba/tests/test_array_methods.pyÚnp_around_array   s    r   c                 C   s   t  | |¡S r   r   ©Úvalr   r   r   r   Únp_around_binary   s    r"   c                 C   s
   t  | ¡S r   r   ©r!   r   r   r   Únp_around_unary   s    r$   c                 C   s   t  | ||¡ d S r   ©r   Úroundr   r   r   r   Únp_round_array   s    r'   c                 C   s   t  | |¡S r   r%   r    r   r   r   Únp_round_binary"   s    r(   c                 C   s
   t  | ¡S r   r%   r#   r   r   r   Únp_round_unary%   s    r)   c                 C   s˜   |dk	r8| j jdkr8t| j||jƒ t| j||jƒ |S t | ||¡}|dkr�dd„ }t| ttj	fƒr†t|| j|jƒ|| j|jƒƒ}n
|| |ƒ}|S dS )z4
    A slightly bugfixed version of np.round().
    NÚcc                 S   s$   |dkr| dk rt  |¡ S |S d S )Nç        r   )r   Úabs)ÚargÚresr   r   r   Úfixup_signed_zero5   s    z*_fixed_np_round.<locals>.fixup_signed_zero)
ÚdtypeÚkindÚ_fixed_np_roundÚrealÚimagr   r&   Ú
isinstanceÚcomplexZcomplexfloating)r   r   r   r.   r/   r   r   r   r2   (   s    ÿ
r2   c                 C   s   | j S r   )ÚT©r   r   r   r   Úarray_TB   s    r9   c                 C   s   |   ¡ S r   )Z	transposer8   r   r   r   Úarray_transposeE   s    r:   c                 C   s   |   ¡ S r   ©Úcopyr8   r   r   r   Ú
array_copyH   s    r=   c                 C   s
   t  | ¡S r   )r   r<   r8   r   r   r   Únp_copyK   s    r>   c                 C   s
   t  | ¡S r   )r   Úasfortranarrayr8   r   r   r   Únp_asfortranarrayN   s    r@   c                 C   s
   t  | ¡S r   )r   Zascontiguousarrayr8   r   r   r   Únp_ascontiguousarrayQ   s    rA   c                 C   s
   |   |¡S r   ©Úview)r   Únewtyper   r   r   Ú
array_viewT   s    rE   c                 C   s
   |   |¡S r   ©Ztake)r   Úindicesr   r   r   Ú
array_takeW   s    rH   c                 C   s   | j ||d�S ©N©ÚaxisrF   )r   rG   rK   r   r   r   Úarray_take_kwsZ   s    rL   c                 C   s
   t  | ¡S r   ©r   Úarange)Úarg0r   r   r   Únp_arange_1]   s    rP   c                 C   s   t  | |¡S r   rM   )rO   Úarg1r   r   r   Únp_arange_2`   s    rR   c                 C   s   t  | ||¡S r   rM   )rO   rQ   Úarg2r   r   r   Únp_arange_3c   s    rT   c                 C   s   t  | |||¡S r   rM   )rO   rQ   rS   Úarg3r   r   r   Únp_arange_4f   s    rV   c                 C   s   t j| |d�S ©N)ÚstoprM   )rO   rX   r   r   r   Únp_arange_1_stopi   s    rY   c                 C   s   t j| |d�S ©N©ÚsteprM   )rO   r\   r   r   r   Únp_arange_1_stepl   s    r]   c                 C   s   t j| |d�S ©N©r0   rM   )rO   r0   r   r   r   Únp_arange_1_dtypeo   s    r`   c                 C   s   t j| ||d�S rZ   rM   )rO   rQ   r\   r   r   r   Únp_arange_2_stepr   s    ra   c                 C   s   t j| ||d�S r^   rM   )rO   rQ   r0   r   r   r   Únp_arange_2_dtypeu   s    rb   c                 C   s   t j| |d�S )N©ÚstartrX   rM   rc   r   r   r   Únp_arange_start_stopx   s    re   c                 C   s   t j| ||d�S )N©rd   rX   r\   rM   rf   r   r   r   Únp_arange_start_stop_step{   s    rg   c                 C   s   t j| |||d�S )N©rd   rX   r\   r0   rM   rh   r   r   r   Únp_arange_start_stop_step_dtype~   s    ri   c                 C   s
   |   |¡S r   )Úfill)r   r!   r   r   r   Ú
array_fill�   s    rk   c                    s   ‡ fdd„}|S )Nc                    s
   |   ˆ ¡S r   rB   r8   ©rD   r   r   rE   †   s    z#make_array_view.<locals>.array_viewr   )rD   rE   r   rl   r   Úmake_array_view…   s    rm   c                 C   s   | dd…   tj¡d S )Nr   é   )rC   r   Úfloat32r8   r   r   r   Úarray_sliced_viewŠ   s    rp   c                    s   ‡ fdd„}|S )Nc                    s
   |   ˆ ¡S r   )Úastyper8   rl   r   r   Úarray_astypeŽ   s    z'make_array_astype.<locals>.array_astyper   )rD   rr   r   rl   r   Úmake_array_astype�   s    rs   c                 C   s
   t  | ¡S )z7
    np.frombuffer() on a Python-allocated buffer.
    ©r   Ú
frombuffer©Úbr   r   r   Únp_frombuffer“   s    rx   c                 C   s   t j| t jd�S r^   )r   ru   Ú	complex64rv   r   r   r   Únp_frombuffer_dtype™   s    rz   c                 C   s   t j| dd�S )Nry   r_   rt   rv   r   r   r   Únp_frombuffer_dtype_strœ   s    r{   c                 C   s   t j| t jd�}t  |¡S )z6
    np.frombuffer() on a Numba-allocated buffer.
    r_   )r   ÚonesÚint32ru   ©Úshaper   r   r   r   Únp_frombuffer_allocatedŸ   s    r€   c                 C   s    t j| t jd�}t j|t jd�S r^   )r   r|   r}   ru   ry   r~   r   r   r   Únp_frombuffer_allocated_dtype¦   s    r�   c                 C   s   | |k| |k	fS r   r   ©Úarw   r   r   r   Úidentity_usecaseª   s    r„   c                 C   s   |   ¡ S r   )Únonzero©rƒ   r   r   r   Úarray_nonzero­   s    r‡   c                 C   s
   t  | ¡S r   )r   r…   r†   r   r   r   Ú
np_nonzero°   s    rˆ   c                 C   s
   t  | ¡S r   ©r   Úwhere)r*   r   r   r   Ú
np_where_1³   s    r‹   c                 C   s   t  | ||¡S r   r‰   )r*   ÚxÚyr   r   r   Ú
np_where_3¶   s    rŽ   c                 C   s   |   ¡ S r   )Úitemr†   r   r   r   Ú
array_item¹   s    r�   c                 C   s   |   |¡ d S r   )Zitemset)rƒ   Úvr   r   r   Úarray_itemset¼   s    r’   c                 G   s
   | j |Ž S r   ©Úsum©rƒ   Úargsr   r   r   Ú	array_sum¿   s    r—   c                 C   s   | j |d�S rI   r“   ©rƒ   rK   r   r   r   Úarray_sum_axis_kwsÂ   s    r™   c                 C   s   | j |d�S r^   r“   )rƒ   r0   r   r   r   Úarray_sum_dtype_kwsÅ   s    rš   c                 C   s   | j ||d�S )N©rK   r0   r“   )rƒ   r0   rK   r   r   r   Úarray_sum_axis_dtype_kwsÈ   s    rœ   c                 C   s   |   ||¡S r   r“   )rƒ   Za1Za2r   r   r   Úarray_sum_axis_dtype_posË   s    r�   c                 C   sN   t j| dd�}t  | d¡}t  | |¡}| jdd�}t j| dd�}|||||fS )Nrn   rJ   é   é   éÿÿÿÿ)r   r”   )r   rK   rƒ   rw   r*   ÚdÚer   r   r   Úarray_sum_const_multiÎ   s    r£   c                 C   s   | j dd�S )Nr    rJ   r“   r˜   r   r   r   Úarray_sum_const_axis_neg_oneÜ   s    r¤   c                 G   s
   | j |Ž S r   ©Zcumsumr•   r   r   r   Úarray_cumsumá   s    r¦   c                 C   s   | j |d�S rI   r¥   r˜   r   r   r   Úarray_cumsum_kwsä   s    r§   c                 C   s
   t  | ¡S r   )r   r3   r†   r   r   r   Ú
array_realç   s    r¨   c                 C   s
   t  | ¡S r   )r   r4   r†   r   r   r   Ú
array_imagê   s    r©   c                 C   s   t  | ||¡S r   ©r   Úclip©rƒ   Úa_minÚa_maxr   r   r   Únp_clip_no_outí   s    r¯   c                 C   s   t  | |||¡S r   rª   ©rƒ   r­   r®   r   r   r   r   Únp_clipð   s    r±   c                 C   s   t j| |||d�S ©N©r   rª   r°   r   r   r   Únp_clip_kwargsó   s    r´   c                 C   s   |   |||¡S r   ©r«   r°   r   r   r   Ú
array_clipö   s    r¶   c                 C   s   | j |||d�S r²   rµ   r°   r   r   r   Úarray_clip_kwargsù   s    r·   c                 C   s   |   ||¡S r   rµ   r¬   r   r   r   Úarray_clip_no_outü   s    r¸   c                 C   s   |   ¡ S r   )Zconjr†   r   r   r   Ú
array_conjÿ   s    r¹   c                 C   s   |   ¡ S r   )Ú	conjugater†   r   r   r   Úarray_conjugate  s    r»   c                 C   s
   t  | ¡S r   )r   Úuniquer†   r   r   r   Ú	np_unique  s    r½   c                 C   s
   |   |¡S r   ©Údotr‚   r   r   r   Ú	array_dot	  s    rÀ   c                 C   s   |   |¡  |¡S r   r¾   r‚   r   r   r   Úarray_dot_chain  s    rÁ   c                 C   s   t j| |d�S r^   ©r   r|   )Únr0   r   r   r   Ú
array_ctor  s    rÄ   c                       s’  e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zejf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)dJdK„ Z*dLdM„ Z+dNdO„ Z,dPdQ„ Z-dRdS„ Z.dTdU„ Z/dVdW„ Z0dXdY„ Z1dZd[„ Z2d\d]„ Z3d^d_„ Z4d`da„ Z5dbdc„ Z6ddde„ Z7dfdg„ Z8dhdi„ Z9djdk„ Z:dldm„ Z;dndo„ Z<dpdq„ Z=drds„ Z>dtdu„ Z?dvdw„ Z@dxdy„ ZAdzd{„ ZBd|d}„ ZCd~d„ ZDd€d�„ ZEd‚dƒ„ ZFd„d…„ ZGd†d‡„ ZHdˆd‰„ ZIdŠd‹„ ZJdŒd�„ ZKdŽd�„ ZLd�d‘„ ZMd’d“„ ZNd”d•„ ZOd–d—„ ZPd˜d™„ ZQeRdšd›„ ƒZSdœd�„ ZT‡  ZUS )žÚTestArrayMethodszA
    Test various array methods and array-related functions.
    c                    s   t t| ƒ ¡  tƒ | _d S r   )ÚsuperrÅ   ÚsetUpr   Úccache©Úself©Ú	__class__r   r   rÇ     s    zTestArrayMethods.setUpc                 C   s  ddddddddg}d	d
„ |D ƒ}dd
„ |D ƒ}t jt jt jt jt jf}|||||g}|}t||ƒD ]b\}	}
t||	t jfƒ}|j}dD ]>}|
D ]4}|dkr¢|d9 }t	||ƒ}|||ƒ}|  
||¡ qŽq†qd|}t||ƒD ]@\}	}
t||	fƒ}|j}|
D ] }t	|ƒ}||ƒ}|  
||¡ qôqÖd S )Nç      Àç      Àç      Àç      ø¿ç      ø?ç      @ç      @ç      @c                 S   s   g | ]}|d  ‘qS )ù      ð?      ð¿r   ©Ú.0rŒ   r   r   r   Ú
<listcomp>  s     z7TestArrayMethods.check_round_scalar.<locals>.<listcomp>c                 S   s   g | ]}t |ƒ‘qS r   )ÚintrÖ   r   r   r   rØ     s     )é   r   r    r   é
   )r   Úfloat64ro   r}   ry   Ú
complex128Úzipr   Úentry_pointr2   ÚassertPreciseEqual)rÊ   Zunary_pyfuncZbinary_pyfuncZbase_valuesZcomplex_valuesZ
int_valuesÚargtypesZ	argvaluesÚpyfuncÚtyÚvaluesÚcresÚcfuncr   r‘   ÚexpectedÚgotr   r   r   Úcheck_round_scalar  s<     ÿ ÿ

z#TestArrayMethods.check_round_scalarc                 C   s   |   tt¡ d S r   )ré   r)   r(   rÉ   r   r   r   Útest_round_scalar9  s    z"TestArrayMethods.test_round_scalarc                 C   s   |   tt¡ d S r   )ré   r$   r"   rÉ   r   r   r   Útest_around_scalar<  s    z#TestArrayMethods.test_around_scalarc              
      st   ‡fdd„‰ ‡ ‡fdd„}t  ddddd	d
ddg¡}tjtjf}||||ƒ tjtjf}||||d ƒ ˆ ¡  d S )Nc           	   	      s    |  t|ƒ¡}t |¡  t|ƒ¡}| ¡ }t|||ƒ ˆ  ¡  | |||ƒ ˆ  ¡  tj 	||¡ ˆ  
t¡�}| |||dd … ƒ W 5 Q R X ˆ  t|jƒd¡ d S )NrÚ   zinvalid output shape)rq   r   r   Ú
zeros_liker<   r2   Úmemory_leak_setupÚmemory_leak_teardownÚtestingÚassert_allcloseÚassertRaisesÚ
ValueErrorÚassertEqualÚstrÚ	exception)	ræ   rä   ÚintyÚouttyr   r   r   ÚpyoutÚraisesrÉ   r   r   Úcheck_round@  s    ÿz7TestArrayMethods.check_round_array.<locals>.check_roundc              
      sŒ   t | |ƒD ]|\}}tˆt |dd¡tjt |dd¡fƒ}|j}ˆ |j|||dƒ ˆ |j|||dƒ t|tjƒs
ˆ |j|d ||dƒ q
q
d S )NrÚ   ÚAr   rÛ   r    )r   r   r   ZArrayr}   rß   r5   ÚInteger)rá   Zouttypesrä   rö   r÷   rå   ræ   )rú   râ   r   r   Úcheck_typesP  s    þÿz7TestArrayMethods.check_round_array.<locals>.check_typesrÍ   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   )r   Úarrayr   rÜ   ro   ry   rÝ   Údisable_leak_check)rÊ   râ   rý   rä   rá   r   )rú   râ   rÊ   r   Úcheck_round_array?  s    z"TestArrayMethods.check_round_arrayc                 C   s   |   t¡ d S r   )r   r'   rÉ   r   r   r   Útest_round_arrayk  s    z!TestArrayMethods.test_round_arrayc                 C   s   |   t¡ d S r   )r   r   rÉ   r   r   r   Útest_around_arrayn  s    z"TestArrayMethods.test_around_arrayc              
   C   sD   t tfD ]6}tdd�|ƒ}d}|  t|¡� |d ƒ W 5 Q R X qd S )NT©Znopythonú'.*The argument "a" must be array-like.*)r)   r$   r   ÚassertRaisesRegexr	   ©rÊ   râ   ræ   Úmsgr   r   r   Útest_around_bad_arrayq  s
    z&TestArrayMethods.test_around_bad_arrayc              
   C   sJ   t tfD ]<}tdd�|ƒ}d}|  t|¡� |dddd� W 5 Q R X qd S )NTr  ú9.*The argument "out" must be an array if it is provided.*rŸ   r   é   r³   )r'   r   r   r  r	   )rÊ   Úpy_funcræ   r  r   r   r   Útest_around_bad_outx  s
    z$TestArrayMethods.test_around_bad_outc                    sH  ‡fdd„‰ ‡ ‡fdd„}‡ ‡fdd„}‡ ‡fdd„}‡ ‡fd	d
„}‡ ‡fdd„}‡ ‡fdd„}t  dt jfdt jfg¡}t  dt jfdt jfg¡}t  dt jfdt jfg¡}	tdkrÈ|}
|}|}|}n|}
|}|}|}t jdt jd�}||t  d¡ƒ ||t jƒ ||t jƒ ||t jƒ ||t jƒ |||ƒ |||ƒ |
|t jƒ | 	d¡}||t jƒ ||t jƒ ||t jƒ |||ƒ |
||ƒ |
|t jƒ t jdt jd� 	d¡j
}t  d¡j
d d d…d d d…f }tdk�rÞ|}n|}||t jƒ ||t jƒ ||t jƒ ||t jƒ |||ƒ |||ƒ ||t jƒ ||t jƒ t jdt jd�d d d… }||t jƒ ||t jƒ |||	ƒ ||t jƒ ||t jƒ ||t jƒ |||ƒ |||ƒ t jdgt jd� 	d¡}||t jƒ ||t jƒ |||	ƒ ||t jƒ ||t jƒ ||t jƒ |||ƒ |||ƒ t  dg¡}||t jƒ ˆ ¡  d S ) Nc                    s&   t |ƒ}ˆ j |t| ƒf¡}| | ¡S r   )rm   rÈ   Úcompiler   rß   ©r   r0   râ   rå   rÉ   r   r   Úrun�  s    z-TestArrayMethods.test_array_view.<locals>.runc                    s6   |   |¡}ˆ ¡  ˆ | |ƒ}ˆ ||¡ ~ˆ ¡  d S r   )rC   rí   rà   rî   ©r   r0   rç   rè   ©r  rÊ   r   r   Úcheck…  s    

z/TestArrayMethods.test_array_view.<locals>.checkc              	      s6   ˆ  t¡�}ˆ | |ƒ W 5 Q R X ˆ t|jƒd¡ d S )Nz"new type not compatible with array)rñ   rò   ró   rô   rõ   )r   r0   rù   r  r   r   Ú	check_errŒ  s
    ÿz3TestArrayMethods.test_array_view.<locals>.check_errc              	      sn   d}ˆ  t¡�}t|ƒ| ƒ W 5 Q R X ˆ t|jƒ|¡ ˆ  t¡�}ˆ | |ƒ W 5 Q R X ˆ t|jƒ|¡ d S )NzJTo change to a dtype of a different size, the last axis must be contiguous©rñ   rò   rm   ró   rô   rõ   ©r   r0   r  rù   r  r   r   Úcheck_err_noncontig_last_axis‘  s    zGTestArrayMethods.test_array_view.<locals>.check_err_noncontig_last_axisc              	      sn   d}ˆ  t¡�}t|ƒ| ƒ W 5 Q R X ˆ t|jƒ|¡ ˆ  t¡�}ˆ | |ƒ W 5 Q R X ˆ t|jƒ|¡ d S )NzOChanging the dtype of a 0d array is only supported if the itemsize is unchangedr  r  r  r   r   Úcheck_err_0d�  s    z6TestArrayMethods.test_array_view.<locals>.check_err_0dc              	      sn   d}ˆ  t¡�}t|ƒ| ƒ W 5 Q R X ˆ t|jƒ|¡ ˆ  t¡�}ˆ | |ƒ W 5 Q R X ˆ t|jƒ|¡ d S )NzZWhen changing to a smaller dtype, its size must be a divisor of the size of original dtyper  r  r  r   r   Úcheck_err_smaller_dtype©  s    zATestArrayMethods.test_array_view.<locals>.check_err_smaller_dtypec              	      sn   d}ˆ  t¡�}t|ƒ| ƒ W 5 Q R X ˆ t|jƒ|¡ ˆ  t¡�}ˆ | |ƒ W 5 Q R X ˆ t|jƒ|¡ d S )NzuWhen changing to a larger dtype, its size must be a divisor of the total size in bytes of the last axis of the array.r  r  r  r   r   Úcheck_err_larger_dtypeµ  s    z@TestArrayMethods.test_array_view.<locals>.check_err_larger_dtyperƒ   rw   Úur‘   rŒ   r�   )rÚ   é   é   r_   Úint16©rž   é   ©rn   rn   é   é   é*   r   Zabcdef)r   r0   Úint8r  r   rN   ro   ry   rÝ   Úreshaper7   ÚzerosÚuint64r}   Úuint32Úint64rþ   rÿ   )rÊ   r  r  r  r  r  r  Zdt1Zdt2Zdt3Zcheck_error_larger_dtZcheck_error_smaller_dtZcheck_error_noncontigZcheck_error_0dr   Zf_arrZnot_f_or_c_arrZcheck_maybe_errorr   r  r   Útest_array_view  sŠ    




 








z TestArrayMethods.test_array_viewc                 C   sd   t }| j |tjdd… f¡}|j}tjddgtjd�}| 	tj¡}||ƒ}||ƒ}|  
||¡ dS )zX
        Test .view() on A layout array but has contiguous innermost dimension.
        NrÑ   r!  r_   )rp   rÈ   r  r   Zuint8rß   r   rþ   ro   rC   ró   )rÊ   râ   rå   ræ   ÚorigZbytearyÚexpectrè   r   r   r   Útest_array_sliced_view  s    z'TestArrayMethods.test_array_sliced_viewc              	      s`  ‡fdd„‰ ‡ ‡fdd„}t jdt jd�}||t  d¡ƒ ||t jƒ ||t jƒ ||t jƒ ||dƒ t jdt jd� d	¡j}||t jƒ t jd
t jd�d d d… }||t j	ƒ t jd
t jd�}d|j
_||t jƒ t  dt jfg¡}ˆ ¡ �}|||ƒ W 5 Q R X ˆ dt|jƒ¡ d}ˆ ¡ � }tdd�dd„ ƒ}||ƒ W 5 Q R X ˆ dt|jƒ¡ d S )Nc                    s&   t |ƒ}ˆ j |t| ƒf¡}| | ¡S r   )rs   rÈ   r  r   rß   r  rÉ   r   r   r  -  s    z/TestArrayMethods.test_array_astype.<locals>.runc                    s,   |   |¡jdd�}ˆ | |ƒ}ˆ ||¡ d S )Nrû   ©Úorder)rq   r<   rà   r  r  r   r   r  1  s    
z1TestArrayMethods.test_array_astype.<locals>.checkr  r_   r  ro   r  r"  r!  FrŒ   z#cannot convert from int32 to RecordTr  c                 S   s   t  dg¡ | ¡ d S ©NrÚ   )r   rþ   rq   r_   r   r   r   ÚfooT  s    z/TestArrayMethods.test_array_astype.<locals>.fooz5array.astype if dtype is a string it must be constant)r   rN   r$  r0   r}   ro   rÝ   r%  r7   r'  ÚflagsZ	writeableZassertTypingErrorÚassertInrô   rõ   r   )rÊ   r  r   Údtrù   Zunicode_valr1  r   r  r   Útest_array_astype+  s:    

ÿ

ÿz"TestArrayMethods.test_array_astypec              	      s°   ‡ ‡fdd„‰‡ ‡‡fdd„}t tdƒƒ}||ƒ |t|ƒƒ |t|ƒƒ |t d¡ƒ t d¡ d¡}||ƒ ˆ ¡  ˆ t	¡�}ˆt dƒƒ W 5 Q R X ˆ 
d	t|jƒ¡ d S )
Nc                    s   ˆj  ˆ t| ƒf¡}| | ¡S r   ©rÈ   r  r   rß   )Úbufrå   ©râ   rÊ   r   r   r  \  s    z1TestArrayMethods.check_np_frombuffer.<locals>.runc                    sv   t  | ¡}ˆ | ƒ}ˆ ¡  ˆ| ƒ}ˆ ||¡ ~t ¡  ˆ t  | ¡|d ¡ ~t ¡  ˆ t  | ¡|¡ ˆ ¡  d S r0  )ÚsysÚgetrefcountrí   rà   ÚgcZcollectró   rî   )r7  Z
old_refcntrç   rè   ©râ   r  rÊ   r   r   r  _  s    
z3TestArrayMethods.check_np_frombuffer.<locals>.checkr"  é   )rž   rn   s   xxxz.buffer size must be a multiple of element size)Ú	bytearrayÚrangeÚbytesÚ
memoryviewr   rN   r%  rÿ   rñ   rò   ró   rô   rõ   )rÊ   râ   r  rw   rù   r   r<  r   Úcheck_np_frombuffer[  s    ÿz$TestArrayMethods.check_np_frombufferc                 C   s   |   t¡ d S r   )rB  rx   rÉ   r   r   r   Útest_np_frombuffer  s    z#TestArrayMethods.test_np_frombufferc                 C   s   |   t¡ d S r   )rB  rz   rÉ   r   r   r   Útest_np_frombuffer_dtype‚  s    z)TestArrayMethods.test_np_frombuffer_dtypec                 C   s   |   t¡ d S r   )rB  r{   rÉ   r   r   r   Útest_np_frombuffer_dtype_str…  s    z-TestArrayMethods.test_np_frombuffer_dtype_strc              	   C   sX   t dd�dd„ ƒ}|  t¡�}|ttdƒƒdƒ W 5 Q R X t|jƒ}d}|  ||¡ d S )NTr  c                 S   s   t j| |d� d S r^   rt   )r7  r4  r   r   r   Úfunc‰  s    zETestArrayMethods.test_np_frombuffer_dtype_non_const_str.<locals>.funcr"  r}   z@If np.frombuffer dtype is a string it must be a string constant.)r   rñ   r	   r>  r?  rô   rõ   r3  )rÊ   rF  rù   Zexcstrr  r   r   r   Ú&test_np_frombuffer_dtype_non_const_strˆ  s    

z7TestArrayMethods.test_np_frombuffer_dtype_non_const_strc              	   C   s:   t dd�dd„ ƒ}d}|  t|¡�}|d ƒ W 5 Q R X d S )NTr  c                 S   s
   t  | ¡S r   rt   )r7  r   r   r   rF  –  s    z<TestArrayMethods.test_np_frombuffer_bad_buffer.<locals>.funcz).*Argument "buffer" must be buffer-like.*)r   r  r	   )rÊ   rF  r  rù   r   r   r   Útest_np_frombuffer_bad_buffer•  s
    
z.TestArrayMethods.test_np_frombuffer_bad_bufferc                    s²   dd„ ‰ ‡ ‡‡fdd„}|dƒ}||ƒ ||  d¡ƒ ||  d¡jƒ ||  d¡d d d… ƒ ||  d¡ƒ ||  d¡jƒ ||  d¡d d d… ƒ t d	g¡  d
¡}||ƒ d S )Nc                 S   s   | j j|j jkS r   )ÚctypesÚdatar‚   r   r   r   Úis_sameŸ  s    z=TestArrayMethods.check_layout_dependent_func.<locals>.is_samec                    sJ   t ˆt| ƒfƒ}ˆ| ƒ}| | ¡}ˆ ||¡ ˆ ˆ || ƒˆ || ƒ¡ d S r   )r   r   rß   rà   ró   )r   rå   rç   rè   ©rK  râ   rÊ   r   r   Ú	check_arr¡  s
    
z?TestArrayMethods.check_layout_dependent_func.<locals>.check_arrr  r  r!  ©r!  rž   rn   r   r   )r%  r7   r   rþ   )rÊ   râ   ÚfacrM  r   r   rL  r   Úcheck_layout_dependent_funcž  s    z,TestArrayMethods.check_layout_dependent_funcc                 C   s   |   t¡ d S r   )rP  r:   rÉ   r   r   r   Útest_array_transpose²  s    z%TestArrayMethods.test_array_transposec                 C   s   |   t¡ d S r   )rP  r9   rÉ   r   r   r   Útest_array_Tµ  s    zTestArrayMethods.test_array_Tc                 C   s   |   t¡ d S r   )rP  r=   rÉ   r   r   r   Útest_array_copy¸  s    z TestArrayMethods.test_array_copyc                 C   s   |   t¡ d S r   )rP  r>   rÉ   r   r   r   Útest_np_copy»  s    zTestArrayMethods.test_np_copyc                    s<   ‡ ‡fdd„}dddt  d¡t  d¡dfD ]}||ƒ q*d S )Nc                    s2   t ˆ t| ƒfƒ}ˆ | ƒ}| | ¡}ˆ ||¡ d S r   )r   r   rß   rà   )rŒ   rå   rç   rè   r8  r   r   Úcheck_scalar¿  s    
zETestArrayMethods.check_ascontiguousarray_scalar.<locals>.check_scalarr#  g      E@y              E@T)r   ro   rÜ   )rÊ   râ   rU  rŒ   r   r8  r   Úcheck_ascontiguousarray_scalar¾  s     z/TestArrayMethods.check_ascontiguousarray_scalarc              	   C   s0   d}|   t|¡�}t|tdƒfƒ}W 5 Q R X d S )Nr  Úhello)r  r	   r   r   )rÊ   râ   r  rù   rå   r   r   r   Úcheck_bad_arrayÇ  s    z TestArrayMethods.check_bad_arrayc                 C   s"   |   t¡ |  t¡ |  t¡ d S r   )rP  r@   rX  rV  rÉ   r   r   r   Útest_np_asfortranarrayÌ  s    

z'TestArrayMethods.test_np_asfortranarrayc                 C   s"   |   t¡ |  t¡ |  t¡ d S r   )rP  rA   rX  r@   rV  rÉ   r   r   r   Útest_np_ascontiguousarrayÑ  s    

z*TestArrayMethods.test_np_ascontiguousarrayc                    s:   ‡ ‡fdd„‰‡ ‡‡fdd„}|dƒ |dƒ |dƒ d S )Nc                    s   ˆj  ˆ t| ƒf¡}| | ¡S r   r6  )r   rå   r8  r   r   r  ×  s    z;TestArrayMethods.check_np_frombuffer_allocated.<locals>.runc                    s    ˆ | ƒ}ˆ| ƒ}ˆ  ||¡ d S r   ©rà   )r   rç   rè   r<  r   r   r  Ú  s    z=TestArrayMethods.check_np_frombuffer_allocated.<locals>.check)r"  r   )rÚ   r   rÚ   r   )rÊ   râ   r  r   r<  r   Úcheck_np_frombuffer_allocatedÖ  s
    z.TestArrayMethods.check_np_frombuffer_allocatedc                 C   s   |   t¡ d S r   )r\  r€   rÉ   r   r   r   Útest_np_frombuffer_allocatedã  s    z-TestArrayMethods.test_np_frombuffer_allocatedc                 C   s   |   t¡ d S r   )r\  r�   rÉ   r   r   r   Útest_np_frombuffer_allocated2æ  s    z.TestArrayMethods.test_np_frombuffer_allocated2c                    s  dd„ }‡ ‡fdd„}t  ddddg¡}||ƒ t  dddg¡}||ƒ |dƒ}||ƒ || d	¡ƒ || d	¡jƒ || d	¡d d d
… ƒ || d¡ƒ || d¡jƒ || d¡d d d
… ƒ ddtdƒfD ]}t  |g¡ d¡}||ƒ qÒt  dddg¡}||ƒ d S )Nc                 S   s8   t j d¡ t j | ¡}d||dk < tdƒ||dk< |S ©Nr#  r+   g333333Ó?Únangffffffæ?©r   ÚrandomÚseedÚfloat©ÚNr   r   r   r   rO  ê  s
    z+TestArrayMethods.check_nonzero.<locals>.facc                    s<   t ˆ t| ƒfƒ}ˆ | ƒ}dd„ |D ƒ}ˆ | | ¡|¡ d S )Nc                 S   s   g | ]}|  ¡ ‘qS r   r;   )r×   rƒ   r   r   r   rØ   ô  s     zETestArrayMethods.check_nonzero.<locals>.check_arr.<locals>.<listcomp>©r   r   rà   rß   )r   rå   rç   r8  r   r   rM  ñ  s    z1TestArrayMethods.check_nonzero.<locals>.check_arrrÚ   r   r    r  r  r!  rN  r+   rÑ   r`  r   ZHelloÚ Úworld)r   r  Úbool_r%  r7   rd  rþ   )rÊ   râ   rO  rM  r   r‘   r   r8  r   Úcheck_nonzeroé  s&    
zTestArrayMethods.check_nonzeroc                 C   s   |   t¡ d S r   )rk  r‡   rÉ   r   r   r   Útest_array_nonzero  s    z#TestArrayMethods.test_array_nonzeroc                 C   s   |   t¡ d S r   )rk  rˆ   rÉ   r   r   r   Útest_np_nonzero  s    z TestArrayMethods.test_np_nonzeroc                 C   s   |   t¡ d S r   )rk  r‹   rÉ   r   r   r   Útest_np_where_1  s    z TestArrayMethods.test_np_where_1c              	   C   s„   d}t }t d¡}tdd�tƒ}tjdd��N}||dk |d| ƒ d}|D ] }|t|jƒkrJ|j	|krJd}qJ|  
|¡ W 5 Q R X d S )Nz>Use of isinstance() detected. This is an experimental feature.rÛ   Tr  )ÚrecordrŸ   F)r   r   rN   r   rŽ   ÚwarningsÚcatch_warningsrô   ÚmessageÚcategoryZassertFalse)rÊ   r  rs  rƒ   ræ   ZcatchÚfoundÚwr   r   r   Ú test_np_where_no_isinstance_warn  s    
z1TestArrayMethods.test_np_where_no_isinstance_warnc                    sž  t ‰dd„ }tdddgƒ‰tjtjtjtjtjtjg‰ tj	 
d¡ d‡ ‡‡‡fdd	„	}‡ ‡‡fd
d„}t ddddg¡}||ƒ t dddg¡}||ƒ |dƒ}||ƒ || d¡ƒ || d¡jƒ || d¡d d d… ƒ || d¡ƒ || d¡jƒ || d¡d d d… ƒ || d¡dd� || d¡jdd� || d¡d d d… dd� ddtdƒfD ] }t |g¡ d¡}||ƒ �qddD ]}||ƒ �qŠd S )Nc                 S   s8   t j d¡ t j | ¡}d||dk < tdƒ||dk< |S r_  ra  re  r   r   r   rO  '  s
    z-TestArrayMethods.test_np_where_3.<locals>.facÚCÚFrû   r#  Fc                    sÔ   t j ˆ ¡ |dkrJt j| ˆ d |d�}t j| ˆ d |d�}| j|d�} n0t j| ˆ d tˆƒd�}t j| ˆ d tˆƒd�}| d¡ | d¡ tˆt| ƒt|ƒt|ƒfƒ}ˆ| ||ƒ}| 	| ||¡}ˆ 
||¡ d S )NFr   )r0   r/  rÚ   r.  rn   é	   )r   rb  Úshufflerì   r<   Únextrj   r   r   rß   rà   )r   ÚlayoutrŒ   r�   rå   rç   rè   ©Ú_typesÚlayoutsrâ   rÊ   r   r   rM  4  s    

z3TestArrayMethods.test_np_where_3.<locals>.check_arrc                    sr   d}d}t j ˆ ¡ ˆ d dƒ}ˆ d dƒ}tˆt| ƒt|ƒt|ƒfƒ}ˆ| ||ƒ}| | ||¡}ˆ ||¡ d S )Nrn   rŸ   r   rÚ   )r   rb  rz  r   r   rß   rà   )ZscalrŒ   r�   rå   rç   rè   )r~  râ   rÊ   r   r   Ú
check_scalD  s    z4TestArrayMethods.test_np_where_3.<locals>.check_scalrÚ   r   r    r  r  r!  rN  )r|  r+   rÑ   r`  r   )r   rÚ   TFrÓ   y                )F)rŽ   r   r   r}   r)  ro   rÜ   ry   rÝ   rb  rc  r  rj  r%  r7   rd  rþ   )rÊ   rO  rM  r€  r   r‘   rŒ   r   r}  r   Útest_np_where_3%  s:    ÿz TestArrayMethods.test_np_where_3c                    s‚   t ‰tdd�ˆƒ‰ ‡ ‡‡fdd„}‡fdd„}|ƒ D ]H}|dkddf}||ƒ |dk tjd	f}||ƒ |dkdd
f}||ƒ q4d S )NTr  c                    s    ˆ| Ž }ˆ | Ž }ˆ  ||¡ d S r   r[  )r–   rç   rè   ©ræ   râ   rÊ   r   r   Úcheck_okl  s    zGTestArrayMethods.test_np_where_3_broadcast_x_y_scalar.<locals>.check_okc                  3   s`   t  ddd¡} ˆ j | ¡ | V  |  ddd¡V  | jdddd�V  |  ddd¡d d d… V  d S )	Néþÿÿÿrn   é   r!  rŸ   rx  r.  r    )r   Úlinspacerb  rz  r%  r†   rÉ   r   r   Úa_variationsq  s    zKTestArrayMethods.test_np_where_3_broadcast_x_y_scalar.<locals>.a_variationsr   rÚ   y      ð?      @F)rŽ   r   r   r`  )rÊ   rƒ  r‡  rƒ   Úparamsr   r‚  r   Ú$test_np_where_3_broadcast_x_y_scalarh  s    
z5TestArrayMethods.test_np_where_3_broadcast_x_y_scalarc           	         sr   t ‰tdd�ˆƒ‰ ‡ ‡‡fdd„}dd„ }dd„ }|ƒ D ]4}|ƒ D ](}t |¡}||k}|||f}||ƒ qBq8d S )	NTr  c                    sV   | \}}}ˆ|||ƒ}ˆ |||ƒ}ˆ  ||¡ ˆ|||ƒ}ˆ |||ƒ}ˆ  ||¡ d S r   r[  )r–   Ú	conditionrŒ   r�   rç   rè   r‚  r   r   rƒ  ‡  s    
zJTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.check_okc                  s   s`   t  d¡ dd¡} | V  | d V  t  | ¡V  | d d d… V  t  ddd¡ ddd	¡d
 V  d S )Nry  rž   gš™™™™™ñ?r    éöÿÿÿrÛ   é<   rn   rŸ   ù              ð?)r   rN   r%  r?   r†  ©rŒ   r   r   r   Úarray_permutations“  s    
zTTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.array_permutationsc                   s   s$   dV  dV  t jV  dV  dV  d S )Nr   g333333@Ty       @      @)r   r`  r   r   r   r   Úscalar_permutations›  s
    zUTestArrayMethods.test_np_where_3_broadcast_x_or_y_scalar.<locals>.scalar_permutations)rŽ   r   r   Zmean)	rÊ   rƒ  r�  r�  rŒ   r�   Zx_meanrŠ  rˆ  r   r‚  r   Ú'test_np_where_3_broadcast_x_or_y_scalarƒ  s    



z8TestArrayMethods.test_np_where_3_broadcast_x_or_y_scalarc           	   
   C   s  t }tdd�|ƒ}ttjtjtjtjtjg}|D �]æ}tj	dtd�}tj
 |||dƒ|dƒƒ|dƒ¡ tj
 || |dƒ|dƒƒ|dƒ¡ tj
 |d|dƒ|dƒƒ|dƒ¡ tj
 |d|dƒ|dƒƒ|dƒ¡ t |¡ |¡}t |¡}| |¡}d|d< |d |d< tj
 ||||ƒ|¡ tj
 ||||ƒ|¡ tj
 ||||d ƒ|¡ tj
 |||d |ƒ|¡ tj
 ||d d d	… |d d d	… |d d d	… ƒ|d d d	… ¡ tj
 ||dd d	… |dd d	… |dd d	… ƒ|dd d	… ¡ tj
 ||d d d
… |d d d
… |d d d
… ƒ|d d d
… ¡ tj
 ||dd d
… |dd d
… |dd d
… ƒ|dd d
… ¡ tj
 ||d d d… |d d d… |d d d… ƒ|d d d… ¡ tj
 ||d d d… |d d d… |d d d… ƒ|d d d… ¡ tj
 ||dd d… |dd d… |dd d… ƒ|dd d… ¡ q0d S )NTr  é5   r_   r   rÚ   Fé   r!  rž   r„  éýÿÿÿ)rŽ   r   Úboolr   r  r}   r)  ÚdoublerÝ   r|   rï   Úassert_equalZ	ones_likerq   rì   )	rÊ   râ   ræ   Údtsr4  r*   r¡   r¢   Úrr   r   r   Útest_np_where_numpy_basic©  s2    
"$""

>>>>>>z*TestArrayMethods.test_np_where_numpy_basicc                 C   sâ   t }tdd�|ƒ}ddg}t d¡}t d¡}|t |¡d d …tjf ||ƒ}tj |d |d ¡ tj |d |d ¡ |j	}|j	}||||ƒ}tj |d d …df |d d …df ¡ tj |d d …df |d d …df ¡ d S )NTr  F)r!  é   r   rÚ   )
rŽ   r   r   r&  r|   rþ   Znewaxisrï   Úassert_array_equalr7   )rÊ   râ   ræ   r*   rƒ   rw   r™  r   r   r   Útest_np_where_numpy_ndimÈ  s    

 &z)TestArrayMethods.test_np_where_numpy_ndimc                 C   s4  t }tdd�|ƒ}t ddddddddddddg¡}t d¡}tjddddd	d
ddddddgtjd�}tjddddd	d
ddddddgtjd�}tj ||||ƒ|¡ | tj	¡}| tj
¡}tj ||||ƒ|¡ | t¡}d||dk< tj ||||ƒ|¡ |dk}d||dk< d||< tj ||||ƒ|¡ d S )NTr  FrÚ   ç      @r+   g      @ç       @g      ð¿g      Àg      $Àç      $@g      ð?r_   i
r   iìau)rŽ   r   r   rþ   r(  rÜ   rï   r—  rq   ro   r)  rÙ   )rÊ   râ   ræ   r*   rƒ   rw   r™  Ztmpmaskr   r   r   Útest_np_where_numpy_dtype_mixÚ  s4       ÿ
ÿÿ
z.TestArrayMethods.test_np_where_numpy_dtype_mixc              	   C   s†   t }tdd�|ƒ}ddg}t d¡}t d¡}|  ¡  |  td¡� ||||ƒ W 5 Q R X |  td¡� ||d ||ƒ W 5 Q R X d S )NTr  )rn   rŸ   )rŸ   rŸ   zobjects cannot be broadcastr   )rŽ   r   r   r|   rÿ   r  rò   )rÊ   râ   ræ   r*   rƒ   rw   r   r   r   Útest_np_where_numpy_test_errorö  s    

z/TestArrayMethods.test_np_where_numpy_test_errorc              	   C   s¶   t }tdd�|ƒ}d}|  t|¡� |d ddƒ W 5 Q R X d}|  t|¡� |dddƒ W 5 Q R X d	}|  t|¡� |ddd
ƒ W 5 Q R X d}|  t|¡� |dd d ƒ W 5 Q R X d S )NTr  z+The argument "condition" must be array-liker!  rž   z/The argument "x" must be array-like if providedrÚ   rW  z/The argument "y" must be array-like if providedri  z"Argument "x" or "y" cannot be None)rŽ   r   r  r	   r  r   r   r   Útest_np_where_invalid_inputs  s    z-TestArrayMethods.test_np_where_invalid_inputsc                    s€   t dd„ dd„ f}|D ]d‰tdd�ˆƒ‰ ‡ ‡fdd„}|dƒ |d	ƒ |d
ƒ |dƒ |dƒ |td
d
ƒƒ |t d¡ƒ qd S )Nc                 S   s   t  | d¡S )NrÛ   rM   rŽ  r   r   r   Ú<lambda>  ó    z4TestArrayMethods.test_arange_1_arg.<locals>.<lambda>c                 S   s   t jdtdt| ƒƒd�S )Nr“  rÚ   r[   )r   rN   Úmaxr,   rŽ  r   r   r   r¤     r¥  Tr  c                    s"   ˆ| ƒ}ˆ | ƒ}t j ||¡ d S r   ©r   rï   rð   )rO   rç   rè   ©ræ   râ   r   r   rƒ  &  s    z4TestArrayMethods.test_arange_1_arg.<locals>.check_okr   rÚ   rn   g      @r”  )rP   r   r6   r   r$  )rÊ   Úall_pyfuncsrƒ  r   r¨  r   Útest_arange_1_arg  s    ýz"TestArrayMethods.test_arange_1_argc                 C   s0  dd„ }t tttdd„ dd„ f}|D ]Œ}tdd�|ƒ}|dd	||ƒ |d
d||ƒ |dd||ƒ |dd||ƒ |tddƒtddƒ||ƒ |tddƒtddƒ||ƒ |dd ||ƒ q$t}tdd�|ƒ}|d	tj||ƒ |dtj	||ƒ |dtj
||ƒ |t d¡tj
||ƒ |dd ||ƒ |t d¡d ||ƒ d S )Nc                 S   s&   || |ƒ}|| |ƒ}t j ||¡ d S r   r§  )rO   rQ   râ   ræ   rç   rè   r   r   r   rƒ  4  s    

z4TestArrayMethods.test_arange_2_arg.<locals>.check_okc                 S   s   t  | |d¡S )NrŸ   rM   ©rŒ   r�   r   r   r   r¤  >  r¥  z4TestArrayMethods.test_arange_2_arg.<locals>.<lambda>c                 S   s   t jd|| d�S )Nr!  r[   rM   r«  r   r   r   r¤  ?  r¥  Tr  r    rŸ   éøÿÿÿrn   ç      à?rÚ   rž   rŸ  rÛ   r“  r   )rR   re   rY   r]   r   r6   r`   r   ro   r}   rÝ   ry   r$  )rÊ   rƒ  r©  râ   ræ   r   r   r   Útest_arange_2_arg3  s2    ú	z"TestArrayMethods.test_arange_2_argc                    sì  t j d¡ot jdk‰d‡ ‡fdd„	}tttfD �]&}tdd�|ƒ}|dd	d
||ƒ |ddd||ƒ |ddd||ƒ |ddd||ƒ |dd
d||ƒ |dtddƒtd
d
ƒ||ƒ |ddd ||ƒ |dd d ||ƒ |t	 
d¡t	 
d	¡t	 
d
¡||ƒ |t	 
d¡t	 d	¡t	 d
¡||ƒ t	j
}||dƒ|d	ƒ|d
ƒ||dƒ |t	 d¡|d	ƒ|d
ƒ||dƒ q0t}tdd�|ƒ}|d
d	t	j||ƒ |ddt	j||ƒ |ddt	j||ƒ |dt	 d¡t	j||ƒ |d
dd ||ƒ |t	 
d¡t	 d	¡d ||dƒ d S )NÚwin32l        Fc                    s>   || ||ƒ}|| ||ƒ}t j ||¡ ˆs:ˆ  |j|j¡ d S r   )r   rï   rð   ró   r0   )rO   rQ   rS   râ   ræ   Zcheck_dtyperç   rè   ©rÊ   Z	windows64r   r   rƒ  Z  s
    z4TestArrayMethods.test_arange_3_arg.<locals>.check_okTr  r   rŸ   rÚ   r¬  r    rž   r‹  r„  r­  rn   r!  çš™™™™™¹?r
  rŸ  r  rÛ   r“  )F)r9  ÚplatformÚ
startswithÚmaxsizerT   ra   rg   r   r6   r   r$  r  r}   r)  rb   ro   rÝ   ry   )rÊ   rƒ  râ   ræ   Úi8r   r°  r   Útest_arange_3_argW  s2    
"""z"TestArrayMethods.test_arange_3_argc                    s´   t tfD ]¦‰tdd�ˆƒ‰ ‡ ‡fdd„}|dddtjƒ |dd	d
tjƒ |dddtjƒ |dddd ƒ |dddtjƒ |dtddƒtddƒtjƒ |d
dd d ƒ |d
d d d ƒ qd S )NTr  c                    s.   ˆ| |||ƒ}ˆ | |||ƒ}t j ||¡ d S r   r§  )rO   rQ   rS   rU   rç   rè   r¨  r   r   rƒ  „  s    z4TestArrayMethods.test_arange_4_arg.<locals>.check_okr   rŸ   rÚ   r¬  r    rž   r‹  r„  r­  rn   r!  r±  r
  )	rV   ri   r   r   rÜ   r}   ro   rÝ   r6   )rÊ   rƒ  r   r¨  r   Útest_arange_4_arg€  s    z"TestArrayMethods.test_arange_4_argc           	      C   s0  |   ¡  dd„ dd„ dd„ g}dd„ dd„ g}|D ]0}|  t¡�}tdd�|ƒ}|d	ƒ W 5 Q R X q2|D ]2}|  t¡�}tdd�|ƒ}|d	d
ƒ W 5 Q R X qht}tdd�|ƒ}||fD ]t}dt d	¡dfdfD ]Z}ttf}|  |¡�>}t	 
¡ � t	 d¡ ||Ž  W 5 Q R X |  dt|jƒ¡ W 5 Q R X qÎq¶d S )Nc                 S   s   t j| d�S rW   rM   rŽ  r   r   r   r¤  —  r¥  z5TestArrayMethods.test_arange_throws.<locals>.<lambda>c                 S   s   t j| d�S rZ   rM   rŽ  r   r   r   r¤  ˜  r¥  c                 S   s   t j| d�S r^   rM   rŽ  r   r   r   r¤  ™  r¥  c                 S   s   t j| |d�S )N)rX   r\   rM   r«  r   r   r   r¤  œ  r¥  c                 S   s   t j| |d�S )N)rX   r0   rM   r«  r   r   r   r¤  �  r¥  Tr  r!  r
  rÚ   r   )rÚ   r!  r   ÚignorezMaximum allowed size exceeded)rÿ   rñ   r	   r   rT   r   r  ÚZeroDivisionErrorrò   rp  rq  Úsimplefilterr3  rô   rõ   )	rÊ   Zbad_funcs_1Zbad_funcs_2râ   rù   ræ   ÚfÚinputsZpermitted_errorsr   r   r   Útest_arange_throws’  s8    ýþ

ÿz#TestArrayMethods.test_arange_throwsc                 C   s0   t dd�dd„ ƒ}d}|  ||ƒ| |¡¡ d S )NTr  c                 S   s   t  dd|  | ¡S )Nr   rÚ   rM   r[   r   r   r   r1  ¼  s    z2TestArrayMethods.test_arange_accuracy.<locals>.foog[¿R Ö¯„?)r   rà   r  )rÊ   r1  rŒ   r   r   r   Útest_arange_accuracy¹  s    
z%TestArrayMethods.test_arange_accuracyc                    s¨   t ‰tdd�ˆƒ‰ ‡ ‡‡fdd„}‡ ‡fdd„}ˆ ¡  |t dg¡ƒ |t dgg¡ƒ |t d¡ƒ |t d¡ƒ |t d¡ƒ |t d	d
g¡ƒ |t g ¡ƒ d S )NTr  c                    s    ˆ| ƒ}ˆ | ƒ}ˆ  ||¡ d S r   r[  )r-   rç   rè   r‚  r   r   rƒ  Ç  s    z,TestArrayMethods.test_item.<locals>.check_okc              	      s4   ˆ  t¡�}ˆ | ƒ W 5 Q R X ˆ dt|jƒ¡ d S )Nz>item(): can only convert an array of size 1 to a Python scalar©rñ   rò   r3  rô   rõ   )r-   rù   ©ræ   rÊ   r   r   r  Ì  s
    ÿz-TestArrayMethods.test_item.<locals>.check_errrÑ   ù              ø?rÚ   r!  )r�   r   rÿ   r   ro   rÝ   rþ   rj  ©rÊ   rƒ  r  r   r‚  r   Ú	test_itemÃ  s    zTestArrayMethods.test_itemc                    s’   t ‰tdd�ˆƒ‰ ‡ ‡‡fdd„}‡ ‡fdd„}ˆ ¡  |t dg¡dƒ |t d	gg¡dƒ |t d¡dƒ |t d
dg¡ƒ |t g ¡ƒ d S )NTr  c                    s4   |   ¡ }|   ¡ }ˆ||ƒ ˆ ||ƒ ˆ ||¡ d S r   )r<   rà   )rƒ   r‘   rç   rè   r‚  r   r   rƒ  ã  s
    

z/TestArrayMethods.test_itemset.<locals>.check_okc              	      s6   ˆ  t¡�}ˆ | dƒ W 5 Q R X ˆ dt|jƒ¡ d S )Nr#  z/itemset(): can only write to an array of size 1r¿  )rƒ   rù   rÀ  r   r   r  ê  s
    ÿz0TestArrayMethods.test_itemset.<locals>.check_errrÑ   r#  rÁ  rÚ   r!  )r’   r   rÿ   r   ro   rÝ   rþ   rÂ  r   r‚  r   Útest_itemsetß  s    zTestArrayMethods.test_itemsetc                 C   s’   t }tdd�|ƒ}tjtjtjtjtjtjtj	tj
tjg	}dd„ |D ƒ}|D ]@}|D ]6}|  d |j¡¡� |  ||ƒ||ƒ¡ W 5 Q R X qTqLdS )zK test sum over a whole range of dtypes, no axis or dtype parameter
        Tr  c                 S   s2   g | ]*}t  d |¡t  d|¡t  d|¡d g‘qS ©©r“  r
  rŸ   rn   rž   rÚ   )r“  rž   éûÿÿÿrÂ   ©r×   Z	arr_dtyper   r   r   rØ     s
   ý

þz-TestArrayMethods.test_sum.<locals>.<listcomp>zTest np.sum with {} input N)r—   r   r   rÜ   ro   r)  r}   ry   rÝ   r(  r'  Ztimedelta64ÚsubTestÚformatr0   rà   )rÊ   râ   ræ   Ú
all_dtypesÚall_test_arraysÚarr_listr   r   r   r   Útest_sumû  s         ÿüzTestArrayMethods.test_sumc                 C   s®   t }tdd�|ƒ}tjtjtjtjtjtjt	g}dd„ |D ƒ}|D ]f}|D ]\}dD ]R}|t
|jƒd krjqR|  d |j¡¡�" |  |||d�|||d�¡ W 5 Q R X qRqJqBd	S )
z< test sum with axis parameter over a whole range of dtypes  Tr  c                 S   s2   g | ]*}t  d |¡t  d|¡t  d|¡d g‘qS rÅ  rÂ   rÈ  r   r   r   rØ     s
   ý

þz7TestArrayMethods.test_sum_axis_kws1.<locals>.<listcomp>©r   rÚ   r!  rÚ   ú#Testing np.sum(axis) with {} input rJ   N)r™   r   r   rÜ   ro   r)  r'  ry   rÝ   ÚTIMEDELTA_MÚlenr   rÉ  rÊ  r0   rà   )rÊ   râ   ræ   rË  rÌ  rÍ  r   rK   r   r   r   Útest_sum_axis_kws1  s(     ÿüÿ
ÿz#TestArrayMethods.test_sum_axis_kws1c                 C   s  t }tdd�|ƒ}tjtjg}t d¡tjt d¡tjt d¡tjt t¡t t¡i}dd„ |D ƒ}|D ] }|D ]–}dD ]Œ}|t	|j
ƒd	 kr�qx|  d
 |j¡¡�\ |||d�}	|||d�}
t|
tjƒrî|  |	 ||j ¡|
 ||j ¡¡ n|  |	|
¡ W 5 Q R X qxqpqhdS )a�    testing uint32 and int32 separately

        uint32 and int32 must be tested separately because Numpy's current
        behaviour is different in 64bits Windows (accumulates as int32)
        and 64bits Linux (accumulates as int64), while Numba has decided to always
        accumulate as int64, when the OS is 64bits. No testing has been done
        for behaviours in 32 bits platforms.
        Tr  r}   r(  r)  c                 S   s2   g | ]*}t  d |¡t  d|¡t  d|¡d g‘qS rÅ  rÂ   rÈ  r   r   r   rØ   2  s
   ý

þz7TestArrayMethods.test_sum_axis_kws2.<locals>.<listcomp>rÏ  rÚ   rÐ  rJ   N)r™   r   r   r}   r(  r0   r)  r'  rÑ  rÒ  r   rÉ  rÊ  r5   Zndarrayrà   rq   ró   )rÊ   râ   ræ   rË  Ú
out_dtypesrÌ  rÍ  r   rK   Znpy_resZ	numba_resr   r   r   Útest_sum_axis_kws2"  s8    	  þüÿþz#TestArrayMethods.test_sum_axis_kws2c           
      C   sH  t }tdd�|ƒ}tjtjtjtjtjtjtj	tj
g}dd„ |D ƒ}t d¡tjgt d¡tjtjgt d¡tjtjtjgt d¡tjtjtjtjgt d	¡tjtjtjgt d
¡tjtjgt d¡tj	tj
gt d¡tj
gi}|D ]^}|D ]T}||j D ]D}d |j|¡}	|  |	¡�" |  |||d�|||d�¡ W 5 Q R X qúqìqädS )z< test sum with dtype parameter over a whole range of dtypes Tr  c                 S   s2   g | ]*}t  d |¡t  d|¡t  d|¡d g‘qS rÅ  rÂ   rÈ  r   r   r   rØ   O  s
   ý

þz7TestArrayMethods.test_sum_dtype_kws.<locals>.<listcomp>rÜ   ro   r)  r}   r(  r'  ry   rÝ   z*Testing np.sum with {} input and {} outputr_   N)rš   r   r   rÜ   ro   r)  r}   r(  r'  ry   rÝ   r0   rÊ  rÉ  rà   )
rÊ   râ   ræ   rË  rÌ  rÔ  rÍ  r   Ú	out_dtypeÚsubtest_strr   r   r   Útest_sum_dtype_kwsI  sJ      ÿü 
    
 
 ù	 ÿ
ÿz#TestArrayMethods.test_sum_dtype_kwsc                 C   sx  t }tdd�|ƒ}tjtjtjtjtjtjtj	tj
g}dd„ |D ƒ}t d¡tjgt d¡tjtjgt d¡tjtjtjgt d¡tjtjtjtjgt d	¡tjtjtjgt d
¡tjtjgt d¡tj	tj
gt d¡tj
gi}|D ]Ž}|D ]„}||j D ]t}dD ]j}	|	t|jƒd k�r�qd |j|¡}
|  |
¡�. |||	|d�}|||	|d�}|  ||¡ W 5 Q R X �qqúqìqädS )zF test sum with axis and dtype parameters over a whole range of dtypes Tr  c                 S   s2   g | ]*}t  d |¡t  d|¡t  d|¡d g‘qS rÅ  rÂ   rÈ  r   r   r   rØ   m  s
   ý

þz<TestArrayMethods.test_sum_axis_dtype_kws.<locals>.<listcomp>rÜ   ro   r)  r}   r(  r'  ry   rÝ   rÏ  rÚ   z+Testing np.sum with {} input and {} output r›   N)rœ   r   r   rÜ   ro   r)  r}   r(  r'  ry   rÝ   r0   rÒ  r   rÊ  rÉ  rà   )rÊ   râ   ræ   rË  rÌ  rÔ  rÍ  r   rÖ  rK   r×  Zpy_resZnb_resr   r   r   Útest_sum_axis_dtype_kwsg  sP      ÿü 
    
 
 ù	 ÿz(TestArrayMethods.test_sum_axis_dtype_kwsc                 C   s^   t }tdd�|ƒ}tj}t d¡}|  ||d|ƒ||d|ƒ¡ |  ||d|ƒ||d|ƒ¡ dS )zC testing that axis and dtype inputs work when passed as positional Tr  rÆ  rÚ   r!  N)r�   r   r   rÜ   r|   rà   )rÊ   râ   ræ   r0   rƒ   r   r   r   Útest_sum_axis_dtype_pos_arg‰  s    

ÿ
ÿz,TestArrayMethods.test_sum_axis_dtype_pos_argc                 C   st   t }tdd�|ƒ}t d¡}|  ||dd�||dd�¡ t}tdd�|ƒ}t d¡}|  ||dd�||dd�¡ d S )NTr  r   r   rJ   r    )r™   r   r   rN   rà   r¤   ©rÊ   râ   ræ   rƒ   r   r   r   Útest_sum_1d_kws–  s    

z TestArrayMethods.test_sum_1d_kwsc                 C   sX   t }tdd�|ƒ}t d¡}d}|  |||ƒ|||ƒ¡ d}|  |||ƒ|||ƒ¡ d S )NTr  )rž   rn   rŸ   r
  r“  r  rÚ   r!  )r£   r   r   r|   rà   )rÊ   râ   ræ   r   rK   r   r   r   Útest_sum_const¡  s    
zTestArrayMethods.test_sum_constc              	   C   s’   |   ¡  t}tdd�|ƒ}t d¡}t d¡}|  t¡� ||dƒ W 5 Q R X |  t¡� ||dƒ W 5 Q R X |  t¡� ||dƒ W 5 Q R X d S )NTr  rÆ  ©rn   rž   r!  r    rn   )rÿ   r—   r   r   r|   rñ   rò   ©rÊ   râ   ræ   rƒ   rw   r   r   r   Útest_sum_exceptions«  s    

z$TestArrayMethods.test_sum_exceptionsc              	   C   sÎ   |   ¡  tdd�dd„ ƒ}t d¡}|  ||ƒ| |¡¡ t d¡}|  ||ƒ| |¡¡ t d¡}|  t¡�}||ƒ W 5 Q R X d}|  |t	|j
ƒ¡ |  t¡�}| |¡ W 5 Q R X |  d	t	|j
ƒ¡ d S )
NTr  c                 S   s   | j dd�S )Nr”  rJ   r“   r8   r   r   r   r1  Á  s    z5TestArrayMethods.test_sum_const_negative.<locals>.foo)rÚ   r!  rž   rn   )rÚ   r!  rž   )rÚ   r!  z"'axis' entry (-1) is out of boundszout of bounds)rÿ   r   r   r|   rà   r  rñ   r   r3  rô   rõ   rò   )rÊ   r1  rƒ   rù   Úerrmsgr   r   r   Útest_sum_const_negative½  s    



z(TestArrayMethods.test_sum_const_negativec              	   C   sˆ   t }tdd�|ƒ}t d¡}|  ||ƒ||ƒ¡ |  t¡� ||dƒ W 5 Q R X t}tdd�|ƒ}|  t¡� ||dd� W 5 Q R X d S )NTr  )r!  rž   rÚ   rJ   )r¦   r   r   r|   rà   rñ   r	   r§   rÛ  r   r   r   Útest_cumsumÕ  s    
zTestArrayMethods.test_cumsumc              
      sr  t ‰tdd�ˆƒ‰ ‡ ‡‡fdd„}g }| d¡ | d¡ | d¡ | d¡ | t ddddd	g¡¡ | tjdddgdd	d
ggdd�¡ | t dddgdd	d
ggg¡¡ | t ddggdd
ggddgggg¡¡ | ddddd	g¡ | d¡ | d¡ | d¡ tdddgƒ}tjtjtjfD ]8}tj	d|d�j
dt|ƒd�}|D ]}|||ƒ �qL�q(tj	d|d�j
dt|ƒd�}|j}|| d t |¡t | d ¡|g| d gg}|D ]&}	ˆ t¡� ˆ ||	ƒ W 5 Q R X �qºˆ t¡� ˆ |dgƒ W 5 Q R X ˆ t¡�  tdd�tƒ}
|
|ddƒ W 5 Q R X ˆ t¡�" tdd�tƒ}
|
|ddd� W 5 Q R X ˆ ¡  d S )NTr  c                    s@   ˆ| |ƒ}ˆ | |ƒ}ˆ  ||¡ t|dƒr<ˆ |j|jk¡ d S )Nr/  )rà   Úhasattrró   r/  )r   Úindrç   rè   r‚  r   r   r  è  s
    


z)TestArrayMethods.test_take.<locals>.checkrÚ   rŸ   é   r„  rž   r   rx  r.  r!  ©rÚ   rŸ   rÚ   )rç  )ræ  rž   r!  ))©rÚ   )rŸ   rè  ))ræ  )rž   )r!  rw  rû   r=  r_   rÞ  ç333333û?rJ   )rH   r   Úappendr   rþ   r   rÜ   r)  rÝ   rN   r%  r{  Úsizerñ   Ú
IndexErrorr	   rL   rÿ   )rÊ   r  Ztest_indicesr  r4  rû   rå  ZszAZillegal_indicesrŒ   Ztake_kwsr   r‚  r   Ú	test_takeä  sN    



$"*


  
ÿzTestArrayMethods.test_takec                    sÂ   t ‰tdd�ˆƒ‰ ‡ ‡‡fdd„}t d¡}tjtjfD ]}|||dƒƒ q8t d¡ dd	¡}tjtjfD ]}|||dƒƒ qjtjd
tjd� ddd	d¡}tjtjtjfD ]}|||dƒƒ qªd S )NTr  c                    sT   t  | ¡}ˆ||ƒ}ˆ |d k¡ t  | ¡}ˆ ||ƒ}ˆ |d k¡ ˆ ||¡ d S r   )r   r<   Z
assertTruerà   )r   r!   rç   Zervrè   Zgrvr‚  r   r   r  (  s    



z)TestArrayMethods.test_fill.<locals>.checkrÚ   rÛ   r=  rž   rn   é0   r_   r!  )	rk   r   r   rN   rÜ   rj  r%  ry   rÝ   )rÊ   r  rû   rŒ   r   r‚  r   Ú	test_fill%  s    
zTestArrayMethods.test_fillc                 C   sj   t }tdd�|ƒ}t dd¡}tj ||ƒ||ƒ¡ t ||¡\}}|d|  }tj ||ƒ||ƒ¡ d S ©NTr  r‹  rÛ   r�  )r¨   r   r   r†  rï   r—  Úmeshgrid©rÊ   râ   ræ   rŒ   r�   Úzr   r   r   Ú	test_realA  s    zTestArrayMethods.test_realc                 C   sj   t }tdd�|ƒ}t dd¡}tj ||ƒ||ƒ¡ t ||¡\}}|d|  }tj ||ƒ||ƒ¡ d S rð  )r©   r   r   r†  rï   r—  rñ  rò  r   r   r   Ú	test_imagL  s    zTestArrayMethods.test_imagc                    s4   ‡ ‡‡fdd„}t j ||ƒtdd�|ƒ|ƒ¡ d S )Nc                    s   t  ˆ| ˆˆ ƒ¡S r   )r   Úexpm1r†   ©r®   r­   rF  r   r   Úlower_clip_resultZ  s    zHTestArrayMethods._lower_clip_result_test_util.<locals>.lower_clip_resultTr  )r   rï   Zassert_almost_equalr   )rÊ   rF  rƒ   r­   r®   rø  r   r÷  r   Ú_lower_clip_result_test_utilW  s
    þz-TestArrayMethods._lower_clip_result_test_utilc           	      C   sB  t tttf}ttf}t ddd¡t ddd¡ ddd¡fD �] }|| D ]ò}t	dd	�|ƒ}d
}|  
t|¡� ||d d ƒ W 5 Q R X tj ||dd ƒ||dd ƒ¡ tj ||d dƒ||d dƒ¡ tj ||ddƒ||ddƒ¡ ||k�r*t |¡}t |¡}tj ||dd|ƒ||dd|ƒ¡ tj ||¡ |  ||dd¡ qHq:d S )Nr‹  rÛ   ée   é(   rŸ   r!  rn   Tr  ú&array_clip: must set either max or minr   rÇ  )r±   r´   r¶   r·   r¯   r¸   r   r†  r%  r   r  rò   rï   r—  Ú
empty_likerù  )	rÊ   Úhas_outÚ
has_no_outrƒ   râ   ræ   r  rø   Úcoutr   r   r   Ú	test_clipa  s*    ÿ



ÿzTestArrayMethods.test_clipc                 C   sf  t tttf}ttf}t ddd¡ ddd¡}t 	dd¡ 
|j¡ dd¡}t 	dd	¡ 
|j¡ dd¡}dd
|d g}dd|d g}|| D ]Ü}tdd�|ƒ}	|D ]Ä}
|D ]º}|
d krà|d kràd}|  t|¡� |	|d d ƒ W 5 Q R X q¢tj |||
|ƒ|	||
|ƒ¡ ||k�rLt |¡}t |¡}tj |||
||ƒ|	||
||ƒ¡ tj ||¡ |  |	||
|¡ q¢qšq„d S )Nr‹  rÛ   rû  rŸ   r!  rn   r¬  r   r  rÇ  Tr  rü  )r±   r´   r¶   r·   r¯   r¸   r   r†  r%  rN   rq   r0   r   r  rò   rï   r—  rý  rù  )rÊ   rþ  rÿ  rƒ   Ú	a_min_arrÚ	a_max_arrZminsZmaxsrâ   ræ   r­   r®   r  rø   r   r   r   r   Útest_clip_array_min_max|  s2    


ÿz(TestArrayMethods.test_clip_array_min_maxc              	   C   s:   t dd�tƒ}d}|  t|¡� |d ddƒ W 5 Q R X d S )NTr  r  r   rÛ   ©r   r±   r  r	   ©rÊ   ræ   r  r   r   r   Útest_clip_bad_arrayœ  s    z$TestArrayMethods.test_clip_bad_arrayc              	   C   s:   t dd�tƒ}d}|  t|¡� |dddƒ W 5 Q R X d S )NTr  z).*The argument "a_min" must be a number.*rÚ   rƒ   rÛ   r  r  r   r   r   Útest_clip_bad_min¢  s    z"TestArrayMethods.test_clip_bad_minc              	   C   s:   t dd�tƒ}d}|  t|¡� |dddƒ W 5 Q R X d S )NTr  z).*The argument "a_max" must be a number.*rÚ   rw   r  r  r   r   r   Útest_clip_bad_max¨  s    z"TestArrayMethods.test_clip_bad_maxc              	   C   s>   t dd�tƒ}d}|  t|¡� |ddddd� W 5 Q R X d S )	NTr  r	  rŸ   rÚ   rÛ   r
  r³   r  r  r   r   r   Útest_clip_bad_out®  s    z"TestArrayMethods.test_clip_bad_outc           	   
   C   sÂ   |   ¡  tdd�tƒ}d}t ddd¡ ddd	¡}t d
d¡ |j¡ dd¡}t dd¡ |j¡ dd¡}d|fd
|f||f|df|dfg}|D ],\}}|  	t
|¡� ||||ƒ W 5 Q R X q�d S )NTr  zA.*shape mismatch: objects cannot be broadcast to a single shape.*r‹  rÛ   rû  rŸ   r!  rn   rÇ  r   rÚ   )rÿ   r   r±   r   r†  r%  rN   rq   r0   r  rò   )	rÊ   ræ   r  rƒ   r  r  Zmin_maxr­   r®   r   r   r   Útest_clip_no_broadcast´  s     þz'TestArrayMethods.test_clip_no_broadcastc                 C   st   t tfD ]f}tdd�|ƒ}t dd¡}tj ||ƒ||ƒ¡ t ||¡\}}|d|  }tj ||ƒ||ƒ¡ qd S rð  )r¹   r»   r   r   r†  rï   r—  rñ  rò  r   r   r   Ú	test_conjÂ  s    zTestArrayMethods.test_conjc                    s„   t ‰tdd�ˆƒ‰ ‡ ‡fdd„}|t dddgdddgg¡ƒ |t t d¡¡ƒ |t d	d	gd
dgdd
gg¡ƒ |t g ¡ƒ d S )NTr  c                    s   t j ˆ| ƒˆ | ƒ¡ d S r   )r   rï   r—  r†   r¨  r   r   r  Ñ  s    z+TestArrayMethods.test_unique.<locals>.checkrÚ   rž   rn   rŸ   gÍÌÌÌÌÌ@ré  gR¸…ëQ@gffffff
@)r½   r   r   rþ   r&  )rÊ   r  r   r¨  r   Útest_uniqueÍ  s     zTestArrayMethods.test_uniquec                 C   sŠ   t }tdd�|ƒ}t d¡ dd¡}t d¡}tj |||ƒ|||ƒ¡ t}tdd�|ƒ}t d¡ dd¡}tj |||ƒ|||ƒ¡ d S )NTr  g      4@rn   rŸ   rž  g      0@)rÀ   r   r   rN   r%  rï   r—  rÁ   rß  r   r   r   Útest_array_dotÙ  s    
zTestArrayMethods.test_array_dotc                 C   s¢   t }tdd�|ƒ}d}|tjf}tj ||Ž ||Ž ¡ |t d¡f}tj ||Ž ||Ž ¡ |tjf}tj ||Ž ||Ž ¡ |t d¡f}tj ||Ž ||Ž ¡ d S )NTr  r!  r}   Zf4)rÄ   r   r   r}   rï   rœ  r0   ro   )rÊ   râ   ræ   rÃ   r–   r   r   r   Útest_array_ctor_with_dtype_argé  s    

z/TestArrayMethods.test_array_ctor_with_dtype_arg)VÚ__name__Ú
__module__Ú__qualname__Ú__doc__rÇ   ré   rê   rë   r   r  r  r  r  r*  r-  r5  rB  rC  rD  rE  rG  rH  r   rN   rP  rQ  rR  rS  rT  rV  rX  rY  rZ  r\  r]  r^  rk  rl  rm  rn  rv  r�  r‰  r‘  rš  r�  r¡  r¢  r£  rª  r®  r¶  r·  r½  r¾  rÃ  rÄ  rÎ  rÓ  rÕ  rØ  rÙ  rÚ  rÜ  rÝ  rà  râ  rã  rí  rï  rô  rõ  rù  r  r  r  r  r	  r
  r  r  r  r   r  r  Ú__classcell__r   r   rË   r   rÅ     s¢   , 0$		"C&$)'
'"
A
 
rÅ   c                   @   s   e Zd Zdd„ ZdS )ÚTestArrayComparisonsc                    s�   ‡ ‡fdd„}t ‰ tjdtjd� d¡}|||dƒ |||d d … dƒ ||| ¡ dƒ ||| d¡dƒ |||jdƒ |||d d	… dƒ d S )
Nc                    s4   t ˆ t| ƒt|ƒfƒ}ˆ | | |¡|| f¡ d S r   rg  )rƒ   rw   rç   rå   r8  r   r   r  ú  s    ÿz1TestArrayComparisons.test_identity.<locals>.checkrÛ   r_   )r!  rŸ   TFr(  r    )r„   r   r&  r}   r%  r<   rC   r7   )rÊ   r  r   r   r8  r   Útest_identityù  s    z"TestArrayComparisons.test_identityN)r  r  r  r  r   r   r   r   r  ÷  s   r  Ú__main__)r   N)N)N)NNN)NNN)iÚ	itertoolsr   r   r   r;  r9  rp  Únumpyr   Znumbar   r   Z
numba.corer   Znumba.core.compilerr   Znumba.core.errorsr	   r
   r   r   Znumba.np.numpy_supportr   r   Znumba.tests.supportr   r   r   r   r   r   ZunittestrÑ  ZTIMEDELTA_Yr   r"   r$   r'   r(   r)   r2   r9   r:   r=   r>   r@   rA   rE   rH   rL   rP   rR   rT   rV   rY   r]   r`   ra   rb   re   rg   ri   rk   rm   rp   rs   rx   rz   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  Úmainr   r   r   r   Ú<module>   s¾    




           p
