U
    iâËdþ  ã                   @   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©ÚnpZaround©ÚarrÚdecimalsÚout© r   úW/home/sam/Atlas/atlas_env/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   r1   (   s    ÿ
r1   c                 C   s   | j S r   )ÚT©r   r   r   r   Úarray_TB   s    r8   c                 C   s   |   ¡ S r   )Z	transposer7   r   r   r   Úarray_transposeE   s    r9   c                 C   s   |   ¡ S r   ©Úcopyr7   r   r   r   Ú
array_copyH   s    r<   c                 C   s
   t  | ¡S r   )r   r;   r7   r   r   r   Únp_copyK   s    r=   c                 C   s
   t  | ¡S r   )r   Úasfortranarrayr7   r   r   r   Únp_asfortranarrayN   s    r?   c                 C   s
   t  | ¡S r   )r   Zascontiguousarrayr7   r   r   r   Únp_ascontiguousarrayQ   s    r@   c                 C   s
   |   |¡S r   ©Úview)r   Únewtyper   r   r   Ú
array_viewT   s    rD   c                 C   s
   |   |¡S r   ©Ztake)r   Úindicesr   r   r   Ú
array_takeW   s    rG   c                 C   s   | j ||d�S ©N©ÚaxisrE   )r   rF   rJ   r   r   r   Úarray_take_kwsZ   s    rK   c                 C   s
   t  | ¡S r   ©r   Úarange)Úarg0r   r   r   Únp_arange_1]   s    rO   c                 C   s   t  | |¡S r   rL   )rN   Úarg1r   r   r   Únp_arange_2`   s    rQ   c                 C   s   t  | ||¡S r   rL   )rN   rP   Úarg2r   r   r   Únp_arange_3c   s    rS   c                 C   s   t  | |||¡S r   rL   )rN   rP   rR   Úarg3r   r   r   Únp_arange_4f   s    rU   c                 C   s   t j| |d�S ©N)ÚstoprL   )rN   rW   r   r   r   Únp_arange_1_stopi   s    rX   c                 C   s   t j| |d�S ©N©ÚsteprL   )rN   r[   r   r   r   Únp_arange_1_stepl   s    r\   c                 C   s   t j| |d�S ©N©r/   rL   )rN   r/   r   r   r   Únp_arange_1_dtypeo   s    r_   c                 C   s   t j| ||d�S rY   rL   )rN   rP   r[   r   r   r   Únp_arange_2_stepr   s    r`   c                 C   s   t j| ||d�S r]   rL   )rN   rP   r/   r   r   r   Únp_arange_2_dtypeu   s    ra   c                 C   s   t j| |d�S )N©ÚstartrW   rL   rb   r   r   r   Únp_arange_start_stopx   s    rd   c                 C   s   t j| ||d�S )N©rc   rW   r[   rL   re   r   r   r   Únp_arange_start_stop_step{   s    rf   c                 C   s   t j| |||d�S )N©rc   rW   r[   r/   rL   rg   r   r   r   Únp_arange_start_stop_step_dtype~   s    rh   c                 C   s
   |   |¡S r   )Úfill)r   r    r   r   r   Ú
array_fill�   s    rj   c                    s   ‡ fdd„}|S )Nc                    s
   |   ˆ ¡S r   rA   r7   ©rC   r   r   rD   †   s    z#make_array_view.<locals>.array_viewr   )rC   rD   r   rk   r   Úmake_array_view…   s    rl   c                 C   s   | dd…   tj¡d S )Nr   é   )rB   r   Úfloat32r7   r   r   r   Úarray_sliced_viewŠ   s    ro   c                    s   ‡ fdd„}|S )Nc                    s
   |   ˆ ¡S r   )Úastyper7   rk   r   r   Úarray_astypeŽ   s    z'make_array_astype.<locals>.array_astyper   )rC   rq   r   rk   r   Úmake_array_astype�   s    rr   c                 C   s
   t  | ¡S )z7
    np.frombuffer() on a Python-allocated buffer.
    ©r   Ú
frombuffer©Úbr   r   r   Únp_frombuffer“   s    rw   c                 C   s   t j| t jd�S r]   )r   rt   Ú	complex64ru   r   r   r   Únp_frombuffer_dtype™   s    ry   c                 C   s   t j| dd�S )Nrx   r^   rs   ru   r   r   r   Únp_frombuffer_dtype_strœ   s    rz   c                 C   s   t j| t jd�}t  |¡S )z6
    np.frombuffer() on a Numba-allocated buffer.
    r^   )r   ÚonesÚint32rt   ©Ú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|   rt   rx   r}   r   r   r   Únp_frombuffer_allocated_dtype¦   s    r€   c                 C   s   | |k| |k	fS r   r   ©Úarv   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 rH   r’   ©r‚   rJ   r   r   r   Úarray_sum_axis_kwsÂ   s    r˜   c                 C   s   | j |d�S r]   r’   )r‚   r/   r   r   r   Úarray_sum_dtype_kwsÅ   s    r™   c                 C   s   | j ||d�S )N©rJ   r/   r’   )r‚   r/   rJ   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 )Nrm   rI   é   é   éÿÿÿÿ)r   r“   )r   rJ   r‚   rv   r)   ÚdÚer   r   r   Úarray_sum_const_multiÎ   s    r¢   c                 C   s   | j dd�S )NrŸ   rI   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 rH   r¤   r—   r   r   r   Úarray_cumsum_kwsä   s    r¦   c                 C   s
   t  | ¡S r   )r   r2   r…   r   r   r   Ú
array_realç   s    r§   c                 C   s
   t  | ¡S r   )r   r3   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{   )Únr/   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   Úfloat64rn   r|   rx   Ú
complex128Úzipr   Úentry_pointr1   Ú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)rp   r   r   Ú
zeros_liker;   r1   Ú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Þ   r4   Ú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Û   rn   rx   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   )rl   rÇ   Úcompiler   rÞ   ©r   r/   rá   rä   rÈ   r   r   Úrun�  s    z-TestArrayMethods.test_array_view.<locals>.runc                    s6   |   |¡}ˆ ¡  ˆ | |ƒ}ˆ ||¡ ~ˆ ¡  d S r   )rB   rì   rß   rí   ©r   r/   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   r/   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ñ   rl   rò   ró   rô   ©r   r/   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‚   rv   Úur�   r‹   rŒ   )rÙ   é   é   r^   Úint16©r�   é   ©rm   rm   é   é   é*   r   Zabcdef)r   r/   Úint8r  r   rM   rn   rx   rÜ   Úreshaper6   Ú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^   )ro   rÇ   r  r   Zuint8rÞ   r   rý   rn   rB   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   )rr   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)rp   r;   rß   r  r  r   r   r  1  s    
z1TestArrayMethods.test_array_astype.<locals>.checkr  r^   r  rn   r  r!  r   Fr‹   z#cannot convert from int32 to RecordTr  c                 S   s   t  dg¡ | ¡ d S ©NrÙ   )r   rý   rp   r^   r   r   r   ÚfooT  s    z/TestArrayMethods.test_array_astype.<locals>.fooz5array.astype if dtype is a string it must be constant)r   rM   r#  r/   r|   rn   rÜ   r$  r6   r&  ÚflagsZ	writeableZassertTypingErrorÚassertInró   rô   r   )rÉ   r  r   Údtrø   Zunicode_valr0  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 r/  )ÚsysÚgetrefcountrì   rß   ÚgcZcollectrò   rí   )r6  Z
old_refcntræ   rç   ©rá   r  rÉ   r   r   r  _  s    
z3TestArrayMethods.check_np_frombuffer.<locals>.checkr!  é   )r�   rm   s   xxxz.buffer size must be a multiple of element size)Ú	bytearrayÚrangeÚbytesÚ
memoryviewr   rM   r$  rþ   rð   rñ   rò   ró   rô   )rÉ   rá   r  rv   rø   r   r;  r   Úcheck_np_frombuffer[  s    ÿz$TestArrayMethods.check_np_frombufferc                 C   s   |   t¡ d S r   )rA  rw   rÈ   r   r   r   Útest_np_frombuffer  s    z#TestArrayMethods.test_np_frombufferc                 C   s   |   t¡ d S r   )rA  ry   rÈ   r   r   r   Útest_np_frombuffer_dtype‚  s    z)TestArrayMethods.test_np_frombuffer_dtypec                 C   s   |   t¡ d S r   )rA  rz   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]   rs   )r6  r3  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ô   r2  )rÉ   rE  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   rs   )r6  r   r   r   rE  –  s    z<TestArrayMethods.test_np_frombuffer_bad_buffer.<locals>.funcz).*Argument "buffer" must be buffer-like.*)r   r  r	   )rÉ   rE  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ç   ©rJ  rá   rÉ   r   r   Ú	check_arr¡  s
    
z?TestArrayMethods.check_layout_dependent_func.<locals>.check_arrr  r  r   ©r   r�   rm   r   r   )r$  r6   r   rý   )rÉ   rá   ÚfacrL  r   r   rK  r   Úcheck_layout_dependent_funcž  s    z,TestArrayMethods.check_layout_dependent_funcc                 C   s   |   t¡ d S r   )rO  r9   rÈ   r   r   r   Útest_array_transpose²  s    z%TestArrayMethods.test_array_transposec                 C   s   |   t¡ d S r   )rO  r8   rÈ   r   r   r   Útest_array_Tµ  s    zTestArrayMethods.test_array_Tc                 C   s   |   t¡ d S r   )rO  r<   rÈ   r   r   r   Útest_array_copy¸  s    z TestArrayMethods.test_array_copyc                 C   s   |   t¡ d S r   )rO  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ç   r7  r   r   Úcheck_scalar¿  s    
zETestArrayMethods.check_ascontiguousarray_scalar.<locals>.check_scalarr"  g      E@y              E@T)r   rn   rÛ   )rÉ   rá   rT  r‹   r   r7  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   )rO  r?   rW  rU  rÈ   r   r   r   Útest_np_asfortranarrayÌ  s    

z'TestArrayMethods.test_np_asfortranarrayc                 C   s"   |   t¡ |  t¡ |  t¡ d S r   )rO  r@   rW  r?   rU  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   r5  )r~   rä   r7  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   rN  ê  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æ   r7  r   r   rL  ñ  s    z1TestArrayMethods.check_nonzero.<locals>.check_arrrÙ   r   rŸ   r  r  r   rM  r*   rÐ   r_  r   ZHelloÚ Úworld)r   r  Úbool_r$  r6   rc  rý   )rÉ   rá   rN  rL  r   r�   r   r7  r   Úcheck_nonzeroé  s&    
zTestArrayMethods.check_nonzeroc                 C   s   |   t¡ d S r   )rj  r†   rÈ   r   r   r   Útest_array_nonzero  s    z#TestArrayMethods.test_array_nonzeroc                 C   s   |   t¡ d S r   )rj  r‡   rÈ   r   r   r   Útest_np_nonzero  s    z TestArrayMethods.test_np_nonzeroc                 C   s   |   t¡ d S r   )rj  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   rM   r   r�   ÚwarningsÚcatch_warningsró   ÚmessageÚcategoryZassertFalse)rÉ   r  rr  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^  r`  rd  r   r   r   rN  '  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   )r/   r.  rÙ   r-  rm   é	   )r   ra  Úshufflerë   r;   Únextri   r   r   rÞ   rß   )r   Úlayoutr‹   rŒ   rä   ræ   rç   ©Ú_typesÚlayoutsrá   rÉ   r   r   rL  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 )Nrm   rž   r   rÙ   )r   ra  ry  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   rM  )r{  r*   rÐ   r_  r   )r   rÙ   TFrÒ   y                )F)r�   r   r   r|   r(  rn   rÛ   rx   rÜ   ra  rb  r  ri  r$  r6   rc  rý   )rÉ   rN  rL  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   rZ  )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éþÿÿÿrm   é   r   rž   rw  r-  rŸ   )r   Úlinspacera  ry  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   rZ  )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 )Nrx  r�   gš™™™™™ñ?rŸ   éöÿÿÿrÚ   é<   rm   rž   ù              ð?)r   rM   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_likerp   rë   )	rÉ   rá   rå   Údtsr3  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_equalr6   )rÉ   rá   rå   r)   r‚   rv   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–  rp   rn   r(  rØ   )rÉ   rá   rå   r)   r‚   rv   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  )rm   rž   )rž   rž   zobjects cannot be broadcastr   )r�   r   r   r{   rþ   r  rñ   )rÉ   rá   rå   r)   r‚   rv   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Ù   rV  z/The argument "y" must be array-like if providedrh  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Ú   rL   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Ù   rZ   )r   rM   Úmaxr+   r�  r   r   r   r£     r¤  Tr  c                    s"   ˆ| ƒ}ˆ | ƒ}t j ||¡ d S r   ©r   rî   rï   )rN   ræ   rç   ©rå   rá   r   r   r‚  &  s    z4TestArrayMethods.test_arange_1_arg.<locals>.check_okr   rÙ   rm   g      @r“  )rO   r   r5   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¦  )rN   rP   rá   rå   ræ   rç   r   r   r   r‚  4  s    

z4TestArrayMethods.test_arange_2_arg.<locals>.check_okc                 S   s   t  | |d¡S )Nrž   rL   ©r‹   rŒ   r   r   r   r£  >  r¤  z4TestArrayMethods.test_arange_2_arg.<locals>.<lambda>c                 S   s   t jd|| d�S )Nr   rZ   rL   rª  r   r   r   r£  ?  r¤  Tr  rŸ   rž   éøÿÿÿrm   ç      à?rÙ   r�   rž  rÚ   r’  r   )rQ   rd   rX   r\   r   r5   r_   r   rn   r|   rÜ   rx   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ò   r/   )rN   rP   rR   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¬  rm   r   çš™™™™™¹?r	  rž  r  rÚ   r’  )F)r8  ÚplatformÚ
startswithÚmaxsizerS   r`   rf   r   r5   r   r#  r  r|   r(  ra   rn   rÜ   rx   )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¦  )rN   rP   rR   rT   ræ   rç   r§  r   r   r‚  „  s    z4TestArrayMethods.test_arange_4_arg.<locals>.check_okr   rž   rÙ   r«  rŸ   r�   rŠ  rƒ  r¬  rm   r   r°  r	  )	rU   rh   r   r   rÛ   r|   rn   rÜ   r5   )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 rV   rL   r�  r   r   r   r£  —  r¤  z5TestArrayMethods.test_arange_throws.<locals>.<lambda>c                 S   s   t j| d�S rY   rL   r�  r   r   r   r£  ˜  r¤  c                 S   s   t j| d�S r]   rL   r�  r   r   r   r£  ™  r¤  c                 S   s   t j| |d�S )N)rW   r[   rL   rª  r   r   r   r£  œ  r¤  c                 S   s   t j| |d�S )N)rW   r/   rL   rª  r   r   r   r£  �  r¤  Tr  r   r	  rÙ   r   )rÙ   r   r   ÚignorezMaximum allowed size exceeded)rþ   rð   r	   r   rS   r   r  ÚZeroDivisionErrorrñ   ro  rp  Úsimplefilterr2  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Ù   rL   rZ   r   r   r   r0  ¼  s    z2TestArrayMethods.test_arange_accuracy.<locals>.foog[¿R Ö¯„?)r   rß   r
  )rÉ   r0  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   rZ  )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ñ   r2  ró   rô   )r,   rø   ©rå   rÉ   r   r   r  Ì  s
    ÿz-TestArrayMethods.test_item.<locals>.check_errrÐ   ù              ø?rÙ   r   )r�   r   rþ   r   rn   rÜ   rý   ri  ©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   rn   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ž   rm   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Û   rn   r(  r|   rx   rÜ   r'  r&  Ztimedelta64ÚsubTestÚformatr/   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 rI   N)r˜   r   r   rÛ   rn   r(  r&  rx   rÜ   ÚTIMEDELTA_MÚlenr~   rÈ  rÉ  r/   rß   )rÉ   rá   rå   rÊ  rË  rÌ  r   rJ   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Ï  rI   N)r˜   r   r   r|   r'  r/   r(  r&  rÐ  rÑ  r~   rÈ  rÉ  r4   Zndarrayrß   rp   rò   )rÉ   rá   rå   rÊ  Ú
out_dtypesrË  rÌ  r   rJ   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Û   rn   r(  r|   r'  r&  rx   rÜ   z*Testing np.sum with {} input and {} outputr^   N)r™   r   r   rÛ   rn   r(  r|   r'  r&  rx   rÜ   r/   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Û   rn   r(  r|   r'  r&  rx   rÜ   rÎ  rÙ   z+Testing np.sum with {} input and {} output rš   N)r›   r   r   rÛ   rn   r(  r|   r'  r&  rx   rÜ   r/   rÑ  r~   rÉ  rÈ  rß   )rÉ   rá   rå   rÊ  rË  rÓ  rÌ  r   rÕ  rJ   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å   r/   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   rI   rŸ   )r˜   r   r   rM   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�   rm   rž   r	  r’  r  rÙ   r   )r¢   r   r   r{   rß   )rÉ   rá   rå   r   rJ   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Å  ©rm   r�   r   rŸ   rm   )rþ   r–   r   r   r{   rð   rñ   ©rÉ   rá   rå   r‚   rv   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“  rI   r’   r7   r   r   r   r0  Á  s    z5TestArrayMethods.test_sum_const_negative.<locals>.foo)rÙ   r   r�   rm   )rÙ   r   r�   )rÙ   r   z"'axis' entry (-1) is out of boundszout of bounds)rþ   r   r   r{   rß   r
  rð   r   r2  ró   rô   rñ   )rÉ   r0  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Ù   rI   )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   rw  r-  r   ©rÙ   rž   rÙ   )ræ  )rå  r�   r   ))©rÙ   )rž   rç  ))rå  )r�   )r   rv  rú   r<  r^   rÝ  ç333333û?rI   )rG   r   Úappendr   rý   r   rÛ   r(  rÜ   rM   r$  rz  Úsizerð   Ú
IndexErrorr	   rK   rþ   )rÉ   r  Ztest_indicesr~  r3  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;   Ú
assertTruerß   )r   r    ræ   Zervrç   Zgrvr�  r   r   r  (  s    



z)TestArrayMethods.test_fill.<locals>.checkrÙ   rÚ   r<  r�   rm   é0   r^   r   )	rj   r   r   rM   rÛ   ri  r$  rx   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¬   rE  r   r   Úlower_clip_resultZ  s    zHTestArrayMethods._lower_clip_result_test_util.<locals>.lower_clip_resultTr  )r   rî   Zassert_almost_equalr   )rÉ   rE  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   rm   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   rm   r«  r   r  rÆ  Tr  rü  )r°   r³   rµ   r¶   r®   r·   r   r…  r$  rM   rp   r/   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Ù   rv   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   rm   rÆ  r   rÙ   )rþ   r   r°   r   r…  r$  rM   rp   r/   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�   rm   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@rm   rž   r�  g      0@)r¿   r   r   rM   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›  r/   rn   )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,  r4  rA  rB  rC  rD  rF  rG  r   rM   rO  rP  rQ  rR  rS  rU  rW  rX  rY  r[  r\  r]  rj  rk  rl  rm  ru  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   rf  )r‚   rv   ræ   rä   r7  r   r   r  ú  s    ÿz1TestArrayComparisons.test_identity.<locals>.checkrÚ   r^   )r   rž   TFr'  rŸ   )rƒ   r   r%  r|   r$  r;   rB   r6   )rÉ   r  r   r   r7  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:  r8  ro  Ú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(   r1   r8   r9   r<   r=   r?   r@   rD   rG   rK   rO   rQ   rS   rU   rX   r\   r_   r`   ra   rd   rf   rh   rj   rl   ro   rr   rw   ry   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  Úmainr   r   r   r   Ú<module>   s¾    




           p
