a
    ç´«jÐh  ã                   @   s†  d dl Zd dlZd dlZd dlZd dl mZmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZmZ ejdkZdd„ ZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZ G dd„ dƒZ!G dd„ dƒZ"G dd„ dƒZ#G dd„ dƒZ$G dd„ dƒZ%G dd„ dƒZ&G dd„ dƒZ'G dd„ dƒZ(G dd„ dƒZ)G d d!„ d!ƒZ*G d"d#„ d#ƒZ+G d$d%„ d%ƒZ,G d&d'„ d'ƒZ-d(d)„ Z.dS )*é    N)Úapply_along_axisÚapply_over_axesÚarray_splitÚsplitÚhsplitÚdsplitÚvsplitÚdstackÚcolumn_stackÚkronÚtileÚexpand_dimsÚtake_along_axisÚput_along_axis)Ú	AxisError)Úassert_Úassert_equalÚassert_array_equalÚassert_raisesÚassert_warnsì        c                    s   t  ˆ ¡‡ fdd„ƒ}|S )z: hack in keepdims behavior into a function taking an axis c                    s.   ˆ | fd|i|¤Ž}|d u r d}t j||d�S )NÚaxisr   ©r   )Únpr   )Úar   ÚkwargsÚres©Úfunc© ú^/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/lib/tests/test_shape_base.pyÚwrapped   s    z_add_keepdims.<locals>.wrapped)Ú	functoolsÚwraps)r   r!   r   r   r    Ú_add_keepdims   s    r$   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestTakeAlongAxisc           
   	   C   sÀ   ddl m} |dddƒ}tjtjtƒ fttjƒttjƒtƒ fttj	ƒttj
ƒtƒ fg}|D ]`\}}}tt|jƒƒdg D ]@}||fd|i|¤Ž}||fd|i|¤Ž}	t|t||	|d�ƒ qxqZdS )	z- Test it translates from arg<func> to <func> r   ©Úrandé   é   é   Nr   r   )Únumpy.randomr'   r   ÚsortZargsortÚdictr$   ÚminÚargminÚmaxÚargmaxÚlistÚrangeÚndimr   r   )
Úselfr'   r   Úfuncsr   Zargfuncr   r   Za_funcZai_funcr   r   r    Útest_argequivalent    s    ýz$TestTakeAlongAxis.test_argequivalentc                 C   s†   t  d¡}t jdt jd�}t||dd� ttt|t  d¡dd� ttt|| t	¡dd� ttt|| t
¡dd� ttt||dd� dS )z4 Test it errors when indices has too few dimensions )é
   r8   )r8   é   ©Údtypeé   r   r8   N)r   ÚonesÚintpr   r   Ú
ValueErrorÚarrayÚ
IndexErrorZastypeÚboolÚfloatr   ©r5   r   Úair   r   r    Útest_invalid2   s    
zTestTakeAlongAxis.test_invalidc                 C   s:   t  d¡}t jdt jd�}t||dd�}t|j|jƒ dS )zC Test everything is ok with empty results, even with inserted dims )r(   r)   r*   )r(   r   r*   r:   r<   r   N©r   r=   r>   r   r   Úshape©r5   r   rE   Úactualr   r   r    Ú
test_emptyC   s    
zTestTakeAlongAxis.test_emptyc                 C   s8   t  d¡}t jdt jd�}t||dd�}t|jdƒ dS )úD Test that non-indexing dimensions are broadcast in both directions ©r(   r)   r<   ©r<   r9   r*   r:   r<   r   ©r(   r9   r*   NrG   rI   r   r   r    Útest_broadcastK   s    
z TestTakeAlongAxis.test_broadcastN)Ú__name__Ú
__module__Ú__qualname__r7   rF   rK   rP   r   r   r   r    r%      s   r%   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestPutAlongAxisc                 C   sz   t  g d¢g d¢g¡}tt|jƒƒd g D ]J}| ¡ }tt jƒ||d�}t||d|d� tt j	ƒ||d�}t
||ƒ q*d S )N)r8   é   é   )é<   é(   é2   r   i�ÿÿÿ)r   r@   r2   r3   r4   Úcopyr$   r1   r   r/   r   )r5   Za_baser   r   Zi_maxZi_minr   r   r    Útest_replace_maxT   s    z!TestPutAlongAxis.test_replace_maxc                 C   sL   t  d¡}t jdt jd� d¡d }t||ddd� tt||dd�dƒ d	S )
rL   rM   r8   r:   rN   r)   rV   r<   r   N)r   r=   Úaranger>   Úreshaper   r   r   rD   r   r   r    rP   d   s    
zTestPutAlongAxis.test_broadcastN)rQ   rR   rS   r[   rP   r   r   r   r    rT   S   s   rT   c                   @   s†   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	fdd„Z
ej	fdd„Zej	fdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestApplyAlongAxisc                 C   s6   t  dd¡}tttd|ƒt|ƒt  |jd ¡ ƒ d S )N©rV   r8   Údr   r<   ©r   r=   r   r   ÚlenrH   ©r5   r   r   r   r    Útest_simplem   s     ÿzTestApplyAlongAxis.test_simplec                 C   s6   t  dd¡}tttd|ƒt|ƒt  |jd ¡ ƒ d S )N)r8   ée   r`   r   r<   ra   rc   r   r   r    Útest_simple101r   s     ÿz!TestApplyAlongAxis.test_simple101c                 C   s:   t  d¡ d¡}ttt jd|ƒg d¢g d¢g d¢gƒ d S )Né   ©r(   r(   r(   r   )rg   rU   é!   )é$   é'   é*   )é-   é0   é3   )r   r\   r]   r   r   Úsumrc   r   r   r    Útest_3dw   s    ÿzTestApplyAlongAxis.test_3dc                 C   sž   dd„ }G dd„ dt jƒ}t  ddgddgg¡ |¡}t  ddgd	d
gg¡ |¡}t|d|ƒ}tt||ƒƒ t||ƒ t|d|ƒ}tt||ƒƒ t||ƒ d S )Nc                 S   s   | d S )Nr9   r   )Úrowr   r   r    Údouble}   s    z9TestApplyAlongAxis.test_preserve_subclass.<locals>.doublec                   @   s   e Zd ZdS )z<TestApplyAlongAxis.test_preserve_subclass.<locals>.MyNDArrayN©rQ   rR   rS   r   r   r   r    Ú	MyNDArray€   s   ru   r   r<   r9   r(   r)   é   )r   Úndarrayr@   Úviewr   r   Ú
isinstancer   )r5   rs   ru   ÚmÚexpectedÚresultr   r   r    Útest_preserve_subclass|   s    
z)TestApplyAlongAxis.test_preserve_subclassc                 C   sJ   G dd„ dt jƒ}dd„ }t  d¡ |¡}tt|d|ƒt  g d¢¡ƒ d S )Nc                   @   s   e Zd ZdZdS )z9TestApplyAlongAxis.test_subclass.<locals>.MinimalSubclassr<   N)rQ   rR   rS   Údatar   r   r   r    ÚMinimalSubclass�   s   r   c                 S   s   | j S ©N)r~   )r@   r   r   r    Úminimal_function’   s    z:TestApplyAlongAxis.test_subclass.<locals>.minimal_function©rv   r(   r   )r<   r<   r<   )r   rw   Úzerosrx   r   r   r@   )r5   r   r�   r   r   r   r    Útest_subclassŽ   s    ÿz TestApplyAlongAxis.test_subclassc                 C   sJ   t  d¡ |¡}tt jd|ƒ}tt||ƒƒ t|t  g d¢¡ |¡ƒ d S )Nr‚   r   ©rv   rv   rv   )	r   r=   rx   r   rp   r   ry   r   r@   )r5   Úclsr   r   r   r   r    Útest_scalar_array›   s    z$TestApplyAlongAxis.test_scalar_arrayc                 C   s„   dd„ }t  d¡ |¡}t|d|ƒ}tt||ƒƒ t|t  g d¢¡ |¡ƒ t|d|ƒ}tt||ƒƒ t|t  g d¢¡ |¡ƒ d S )Nc                 S   s    t | jdƒ t tj| dd�¡S )z/ Sum x, returning a 0d array of the same class r<   T)Zkeepdims)r   r4   r   Úsqueezerp   ©Úxr   r   r    Ú	sum_to_0d¢   s    z3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0dr‚   r   r…   r<   )r(   r(   r(   r(   r(   r(   )r   r=   rx   r   r   ry   r   r@   )r5   r†   r‹   r   r   r   r   r    Útest_0d_array¡   s    z TestApplyAlongAxis.test_0d_arrayc                    s2  ‡fdd„‰t  d¡ d¡‰ tˆdˆ ƒ}t j‡ ‡fdd„tˆ jd ƒD ƒd	d
� ˆ¡}tt	|ƒt	|ƒƒ t||ƒ tˆdˆ ƒ}t j‡ ‡fdd„tˆ jd ƒD ƒdd
� ˆ¡}tt	|ƒt	|ƒƒ t||ƒ t  d¡ d¡‰tˆdˆƒ}t j‡‡fdd„tˆjd ƒD ƒd	d
� ˆ¡}tt	|ƒt	|ƒƒ t||ƒ d S )Nc                    s0   t | jdƒ | ddd… | dd…df   ˆ ¡S )ú/produces an asymmetric non-square matrix from xr<   Néÿÿÿÿ)r   r4   rx   r‰   )r†   r   r    Úf1to2°   s    z5TestApplyAlongAxis.test_axis_insertion.<locals>.f1to2é   r‚   r   c                    s    g | ]}ˆˆ d d …|f ƒ‘qS r€   r   ©Ú.0Úi©Úa2dr�   r   r    Ú
<listcomp>¹   s   z:TestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>r<   rŽ   r   c                    s    g | ]}ˆˆ |d d …f ƒ‘qS r€   r   r‘   r”   r   r    r–   Á   s   éZ   )rv   r*   r(   c                    s6   g | ].‰ t j‡‡‡ fd d„tˆjd ƒD ƒdd�‘qS )c                    s"   g | ]}ˆˆ |d d …ˆf ƒ‘qS r€   r   r‘   )Úa3dr�   Újr   r    r–   Ì   s   zETestApplyAlongAxis.test_axis_insertion.<locals>.<listcomp>.<listcomp>r   r   )r   Ústackr3   rH   )r’   )r˜   r�   )r™   r    r–   Ë   s   ýÿþr9   )
r   r\   r]   r   rš   r3   rH   rx   r   Útype)r5   r†   rJ   r{   r   )r•   r˜   r†   r�   r    Útest_axis_insertion¯   sB    ÿþþ
ÿþþ
üûûz&TestApplyAlongAxis.test_axis_insertionc                 C   s4   G dd„ dt jƒ}|  |¡ |  |¡ |  |¡ d S )Nc                   @   s   e Zd ZdS )zFTestApplyAlongAxis.test_subclass_preservation.<locals>.MinimalSubclassNrt   r   r   r   r    r   Õ   s   r   )r   rw   r‡   rŒ   rœ   )r5   r   r   r   r    Útest_subclass_preservationÔ   s    

z-TestApplyAlongAxis.test_subclass_preservationc                 C   sÖ   dd„ }t  d¡ d¡}t|d|ƒ}tt|t jjƒƒ t|j	dƒ t
|d d …d d …df j||d d …df ƒjƒ t
|d d …d d …df j||d d …df ƒjƒ t
|d d …d d …df j||d d …df ƒjƒ d S )	Nc                 S   s@   t | jdƒ | ddd… | dd…df  }tj |d dk|¡S )r�   r<   NrŽ   r*   r   )r   r4   r   ÚmaZmasked_where)rŠ   r   r   r   r    r�   Ü   s    z8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2r�   r‚   r   r(   r<   r9   )r   r\   r]   r   r   ry   rž   Zmasked_arrayr   r4   r   Úmask)r5   r�   r   r   r   r   r    Útest_axis_insertion_maÛ   s    00z)TestApplyAlongAxis.test_axis_insertion_mac              	   C   sH   dd„ }t  |dt  ddgddgg¡¡}t|t  ddgddgg¡ƒ d S )Nc                 S   s   | d | d fS )Nr<   r   r   r‰   r   r   r    Ú	sample_1dê   s    z7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1dr<   r9   r(   r)   )r   r   r@   r   )r5   r¡   r   r   r   r    Útest_tuple_func1dé   s     z$TestApplyAlongAxis.test_tuple_func1dc                 C   s|   dd„ }t  d¡}ttt j|d|ƒ ttt j|d|ƒ dd„ }t  d¡}t  |d|¡}t|t  d	¡ƒ ttt j|d|ƒ d S )
Nc                 S   s   t dƒ d S )NF)r   r‰   r   r   r    Ú
never_callñ   s    z1TestApplyAlongAxis.test_empty.<locals>.never_call)r   r   r   r<   c                 S   s   t t| ƒdkƒ dS )Nr   r<   )r   rb   r‰   r   r   r    Ú
empty_to_1ù   s    z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1)r8   r   r8   )r   Úemptyr   r?   r   r   r=   )r5   r£   r   r¤   rJ   r   r   r    rK   ï   s    

zTestApplyAlongAxis.test_emptyc                 C   sš   t  ddhddhddhgddhd	d
hddhgg¡}t  dd„ d|¡}t  h d£h d£h d£g¡}t||ƒ t  |j¡D ]}tt|| ƒt|| ƒƒ qvd S )Nr<   é   r9   é   r(   ri   r)   é,   r*   é7   rv   éB   c                 S   s
   t j| Ž S r€   )ÚsetÚunion)r   r   r   r    Ú<lambda>  ó    z>TestApplyAlongAxis.test_with_iterable_object.<locals>.<lambda>r   >   r<   r¦   r)   r¨   >   r9   r*   r§   r©   >   ri   rª   r(   rv   )r   r@   r   r   ZndindexrH   r›   )r5   r`   rJ   r{   r“   r   r   r    Útest_with_iterable_object  s    þ
z,TestApplyAlongAxis.test_with_iterable_objectN)rQ   rR   rS   rd   rf   rq   r}   r„   r   rw   r‡   rŒ   rœ   r�   r    r¢   rK   r¯   r   r   r   r    r^   l   s   %r^   c                   @   s   e Zd Zdd„ ZdS )ÚTestApplyOverAxesc                 C   sH   t  d¡ ddd¡}tt j|ddgƒ}t|t  dgdgdggg¡ƒ d S )	Né   r9   r(   r)   r   rW   é\   é|   )r   r\   r]   r   rp   r   r@   )r5   r   Zaoa_ar   r   r    rd     s    zTestApplyOverAxes.test_simpleN)rQ   rR   rS   rd   r   r   r   r    r°     s   r°   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestExpandDimsc                 C   sR   d}t  |¡}tddƒD ]4}t||ƒ}t|j| dkƒ tt  |¡j|kƒ qd S )N©r9   r(   r)   r*   éûÿÿÿr)   r<   )r   r¥   r3   r   r   rH   rˆ   )r5   Úsr   r   Úbr   r   r    Útest_functionality  s    

z!TestExpandDims.test_functionalityc                 C   sn   t  d¡}t j|dd�jdks"J ‚t j|dd�jdks:J ‚t j|dd�jdksRJ ‚t j|d	d�jd
ksjJ ‚d S )Nrh   ©r   r<   r9   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   rH   rc   r   r   r    Útest_axis_tuple"  s
    
zTestExpandDims.test_axis_tuplec                 C   sT   d}t  |¡}ttt|dƒ ttt|dƒ t  d¡}ttt|dƒ ttt|dƒ d S )Nrµ   éúÿÿÿr*   rh   )r   r¾   )r   r*   )r   r¥   r   r   r   )r5   r·   r   r   r   r    Útest_axis_out_of_range)  s    

z%TestExpandDims.test_axis_out_of_rangec                 C   s   t  d¡}ttt|dd� d S )Nrh   ©r<   r<   r   )r   r¥   r   r?   r   rc   r   r   r    Útest_repeated_axis3  s    
z!TestExpandDims.test_repeated_axisc                 C   sf   t  d¡ d¡}t jj||d dkd�}t j|dd�}tt|t jjƒƒ t	|j
dƒ t	|jj
dƒ d S )	Nr8   )r9   r*   r(   r   ©rŸ   r<   r   )r9   r<   r*   )r   r\   r]   rž   r@   r   r   ry   ZMaskedArrayr   rH   rŸ   )r5   r   Úexpandedr   r   r    Útest_subclasses7  s    zTestExpandDims.test_subclassesN)rQ   rR   rS   r¹   r½   r¿   rÁ   rÄ   r   r   r   r    r´     s
   
r´   c                   @   sf   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	j
e dd�dd„ ƒZdd„ Zdd„ Zdd„ ZdS )ÚTestArraySplitc                 C   s   t  d¡}ttt|dƒ d S )Nr8   r   )r   r\   r   r?   r   rc   r   r   r    Útest_integer_0_splitB  s    
z#TestArraySplit.test_integer_0_splitc                 C   s’  t  d¡}t|dƒ}t  d¡g}t||ƒ t|dƒ}t  d¡t  dd¡g}t||ƒ t|dƒ}t  d¡t  dd¡t  dd¡g}t||ƒ t|dƒ}t  d¡t  dd¡t  dd	¡t  d	d¡g}t||ƒ t|dƒ}t  d¡t  dd¡t  dd¡t  dd	¡t  d	d¡g}t||ƒ t|dƒ}t  d¡t  dd¡t  dd¡t  dd	¡t  d	d
¡t  d
d¡g}t||ƒ t|dƒ}t  d¡t  dd¡t  dd¡t  dd¡t  dd	¡t  d	d
¡t  d
d¡g}t||ƒ t|d	ƒ}t  d¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd	¡t  d	d
¡t  d
d¡g}t||ƒ t|d
ƒ}t  d¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd	¡t  d	d
¡t  d
d¡g	}t||ƒ t|dƒ}t  d¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd	¡t  d	d
¡t  d
d¡g
}t||ƒ t|dƒ}t  d¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd¡t  dd	¡t  d	d
¡t  d
d¡t  g ¡g}t||ƒ d S )Nr8   r<   r9   r*   r(   r)   é   rv   é   é	   r¦   )r   r\   r   Úcompare_resultsr@   ©r5   r   r   Údesiredr   r   r    Útest_integer_splitF  sr    





 


ÿ

ÿ

ÿ


þ

þ

þ


ý

ýz!TestArraySplit.test_integer_splitc                 C   sÚ   t  t  d¡t  d¡g¡}t|ddd�}t  t  d¡g¡t  t  d¡g¡t  d¡g}t||ƒ t|jj|d jju ƒ t|ddgdd�}t  d¡t  t  d¡g¡t  t  d¡g¡g}t||ƒ t|jj|d jju ƒ d S )Nr8   r(   r   r   ©r   r8   rŽ   r<   ©	r   r@   r\   r   rƒ   rÊ   r   r;   r›   ©r5   r   r   Útgtr   r   r    Útest_integer_split_2D_rowsƒ  s     ÿ
ÿ
z)TestArraySplit.test_integer_split_2D_rowsc              	   C   sŠ   t  t  d¡t  d¡g¡}t|ddd�}t  t  d¡t  d¡g¡t  t  dd¡t  dd¡g¡t  t  dd¡t  dd¡g¡g}t||ƒ d S )Nr8   r(   rŽ   r   r)   rÇ   )r   r@   r\   r   rÊ   rË   r   r   r    Útest_integer_split_2D_cols’  s    þz)TestArraySplit.test_integer_split_2D_colsc                 C   sv   t  t  d¡t  d¡g¡}t|dƒ}t  t  d¡g¡t  t  d¡g¡t  d¡g}t||ƒ t|jj|d jju ƒ dS )z2 This will fail if we change default axis
        r8   r(   rÎ   rŽ   NrÏ   rÐ   r   r   r    Útest_integer_split_2D_defaultš  s    
 ÿ
z,TestArraySplit.test_integer_split_2D_defaultzNeeds 64bit platform)Úreasonc                 C   s\   t  dgd¡}t|dƒ}t  dgd¡}|gd }tt|ƒƒD ]}t|| j|| jƒ q<d S )Nr   )r   r9   r)   )i   @r9   )r   Zbroadcast_tor   r3   rb   r   rH   )r5   r   r   ÚchunkrÑ   r“   r   r   r    Ú,test_integer_split_2D_rows_greater_max_int32¥  s    

z;TestArraySplit.test_integer_split_2D_rows_greater_max_int32c                 C   sZ   t  d¡}g d¢}t||dd�}t  dd¡t  dd¡t  dd¡t  dd¡g}t||ƒ d S )	Nr8   )r<   r*   rÇ   rŽ   r   r   r<   r*   rÇ   )r   r\   r   rÊ   ©r5   r   Úindicesr   rÌ   r   r   r    Útest_index_split_simple®  s    

ÿz&TestArraySplit.test_index_split_simplec                 C   sX   t  d¡}g d¢}t||dd�}t  g ¡t  dd¡t  dd¡t  dd¡g}t||ƒ d S )Nr8   )r   r*   rÇ   rŽ   r   r   r*   rÇ   ©r   r\   r   r@   rÊ   rØ   r   r   r    Útest_index_split_low_bound¶  s    

ÿz)TestArraySplit.test_index_split_low_boundc                 C   sh   t  d¡}g d¢}t||dd�}t  g ¡t  dd¡t  dd¡t  dd¡t  g ¡t  g ¡g}t||ƒ d S )Nr8   )r   r*   rÇ   r8   é   rŽ   r   r   r*   rÇ   rÛ   rØ   r   r   r    Útest_index_split_high_bound¾  s    
ÿz*TestArraySplit.test_index_split_high_boundN)rQ   rR   rS   rÆ   rÍ   rÒ   rÓ   rÔ   ÚpytestÚmarkZskipifÚIS_64BITr×   rÚ   rÜ   rÞ   r   r   r   r    rÅ   A  s   =
rÅ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestSplitc                 C   s8   t  d¡}t|dƒ}t  d¡t  dd¡g}t||ƒ d S )Nr8   r9   r*   )r   r\   r   rÊ   rË   r   r   r    Útest_equal_splitÌ  s    

zTestSplit.test_equal_splitc                 C   s   t  d¡}ttt|dƒ d S )Nr8   r(   )r   r\   r   r?   r   rc   r   r   r    Útest_unequal_splitÒ  s    
zTestSplit.test_unequal_splitN)rQ   rR   rS   rã   rä   r   r   r   r    râ   Ç  s   râ   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestColumnStackc                 C   s   t ttdƒ d S ©Nr<   )r   Ú	TypeErrorr
   ©r5   r   r   r    Útest_non_iterableØ  s    z!TestColumnStack.test_non_iterablec                 C   sL   t  d¡}t  d¡}t  ddgddgddgg¡}t  ||f¡}t||ƒ d S )N©r<   r9   r(   )r9   r(   r)   r<   r9   r(   r)   ©r   r@   r
   r   ©r5   r   r¸   r{   rJ   r   r   r    Útest_1D_arraysÛ  s    


þzTestColumnStack.test_1D_arraysc                 C   sd   t  dgdgdgg¡}t  dgdgdgg¡}t  ddgddgddgg¡}t  ||f¡}t||ƒ d S )Nr<   r9   r(   r)   rë   rì   r   r   r    Útest_2D_arrayså  s    
þzTestColumnStack.test_2D_arraysc                 C   sH   t jtdd��& tdd„ tdƒD ƒƒ W d   ƒ n1 s:0    Y  d S )Núarrays to stack must be©Úmatchc                 s   s   | ]}t  d ¡V  qdS ©r(   N©r   r\   ©r’   Ú_r   r   r    Ú	<genexpr>ñ  r®   z1TestColumnStack.test_generator.<locals>.<genexpr>r9   )rß   Úraisesrç   r
   r3   rè   r   r   r    Útest_generatorï  s    zTestColumnStack.test_generatorN)rQ   rR   rS   ré   rí   rî   rø   r   r   r   r    rå   ×  s   

rå   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú
TestDstackc                 C   s   t ttdƒ d S ræ   )r   rç   r	   rè   r   r   r    ré   õ  s    zTestDstack.test_non_iterablec                 C   s@   t  d¡}t  d¡}t||gƒ}t  ddggg¡}t||ƒ d S ©Nr<   r9   ©r   r@   r	   r   ©r5   r   r¸   r   rÌ   r   r   r    Útest_0D_arrayø  s
    

zTestDstack.test_0D_arrayc                 C   sD   t  dg¡}t  dg¡}t||gƒ}t  ddggg¡}t||ƒ d S rú   rû   rü   r   r   r    Útest_1D_arrayÿ  s
    zTestDstack.test_1D_arrayc                 C   sX   t  dgdgg¡}t  dgdgg¡}t||gƒ}t  ddggddggg¡}t||ƒ d S rú   rû   rü   r   r   r    Útest_2D_array  s
    zTestDstack.test_2D_arrayc                 C   sN   t  ddg¡}t  ddg¡}t||gƒ}t  ddgddggg¡}t||ƒ d S rú   rû   rü   r   r   r    Útest_2D_array2  s
    zTestDstack.test_2D_array2c                 C   sH   t jtdd��& tdd„ tdƒD ƒƒ W d   ƒ n1 s:0    Y  d S )Nrï   rð   c                 s   s   | ]}t  d ¡V  qdS rò   ró   rô   r   r   r    rö     r®   z,TestDstack.test_generator.<locals>.<genexpr>r9   )rß   r÷   rç   r	   r3   rè   r   r   r    rø     s    zTestDstack.test_generatorN)	rQ   rR   rS   ré   rý   rþ   rÿ   r   rø   r   r   r   r    rù   ô  s   rù   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú
TestHsplitú&Only testing for integer splits.

    c                 C   s   t ttddƒ d S ræ   )r   r?   r   rè   r   r   r    ré     s    zTestHsplit.test_non_iterablec                 C   s8   t  d¡}zt|dƒ tdƒ W n ty2   Y n0 d S )Nr<   r9   r   )r   r@   r   r   r?   rc   r   r   r    rý   "  s    

zTestHsplit.test_0D_arrayc                 C   sB   t  g d¢¡}t|dƒ}t  ddg¡t  ddg¡g}t||ƒ d S ©N©r<   r9   r(   r)   r9   r<   r(   r)   ©r   r@   r   rÊ   rË   r   r   r    rþ   *  s    
zTestHsplit.test_1D_arrayc                 C   sZ   t  g d¢g d¢g¡}t|dƒ}t  ddgddgg¡t  ddgddgg¡g}t||ƒ d S r  r  rË   r   r   r    rÿ   0  s    
ÿ
,zTestHsplit.test_2D_arrayN©rQ   rR   rS   Ú__doc__ré   rý   rþ   rÿ   r   r   r   r    r    s
   r  c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )Ú
TestVsplitr  c                 C   s   t ttddƒ d S ræ   )r   r?   r   rè   r   r   r    ré   <  s    zTestVsplit.test_non_iterablec                 C   s   t  d¡}ttt|dƒ d S rú   )r   r@   r   r?   r   rc   r   r   r    rý   ?  s    
zTestVsplit.test_0D_arrayc                 C   s<   t  g d¢¡}zt|dƒ tdƒ W n ty6   Y n0 d S ©Nr  r9   r   )r   r@   r   r   r?   rc   r   r   r    rþ   C  s    
zTestVsplit.test_1D_arrayc                 C   sN   t  g d¢g d¢g¡}t|dƒ}t  g d¢g¡t  g d¢g¡g}t||ƒ d S ©Nr  r9   )r   r@   r   rÊ   rË   r   r   r    rÿ   K  s    
ÿ
 zTestVsplit.test_2D_arrayNr  r   r   r   r    r  8  s
   r  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú
TestDsplitc                 C   s   t ttddƒ d S ræ   )r   r?   r   rè   r   r   r    ré   U  s    zTestDsplit.test_non_iterablec                 C   s   t  d¡}ttt|dƒ d S rú   ©r   r@   r   r?   r   rc   r   r   r    rý   X  s    
zTestDsplit.test_0D_arrayc                 C   s    t  g d¢¡}ttt|dƒ d S r
  r  rc   r   r   r    rþ   \  s    zTestDsplit.test_1D_arrayc                 C   sD   t  g d¢g d¢g¡}zt|dƒ tdƒ W n ty>   Y n0 d S r	  )r   r@   r   r   r?   rc   r   r   r    rÿ   `  s    
ÿ
zTestDsplit.test_2D_arrayc                 C   sŠ   t  g d¢g d¢gg d¢g d¢gg¡}t|dƒ}t  ddgddggddgddggg¡t  ddgddggddgddggg¡g}t||ƒ d S r  )r   r@   r   rÊ   rË   r   r   r    Útest_3D_arrayi  s    
ÿÿþ
$$ÿzTestDsplit.test_3D_arrayN)rQ   rR   rS   ré   rý   rþ   rÿ   r  r   r   r   r    r  S  s
   	r  c                   @   s   e Zd Zdd„ ZdS )ÚTestSqueezec                 C   sÀ   ddl m} |dddddƒ}|dddddƒ}|ddddƒ}tt |¡t |d¡ƒ tt |¡t |d¡ƒ tt |¡t |d¡ƒ d	ggg}t |¡}t|d	ƒ t|jdƒ tt|ƒtj	ƒ d S )
Nr   r&   rV   r8   r<   )rV   r8   r8   )rV   r8   rV   r_   g      ø?)
r+   r'   r   r   rˆ   r]   r   r4   r›   rw   )r5   r'   r   r¸   Úcr   r   r   r    Ú
test_basicu  s    


zTestSqueeze.test_basicN©rQ   rR   rS   r  r   r   r   r    r  t  s   r  c                   @   s\   e Zd Zdd„ Zdd„ Zej dej	ej
g¡dd„ ƒZdd	„ Zej d
g d¢¡dd„ ƒZdS )ÚTestKronc                 C   sÄ  t  d¡}t  ddgddgg¡}t  ddgddgg¡}tt  ||¡|ƒ t  ddgddgg¡}t  d¡}tt  ||¡|ƒ t  dg¡}t  ddgddgg¡}t  ddgddgg¡}tt  ||¡|ƒ t  ddgddgg¡}t  dg¡}tt  ||¡|ƒ t  dggdggg¡}t  ddgddgg¡}t  ddgddggddgddggg¡}tt  ||¡|ƒ t  ddgddgg¡}t  dggdggg¡}t  ddgddggddgddggg¡}tt  ||¡|ƒ d S )	Nr<   r9   r(   r)   rv   rÉ   rÝ   rÈ   )r   r@   r   r   )r5   r   r¸   Úkr   r   r    r  ˆ  s,    

&&zTestKron.test_basicc                 C   sˆ   G dd„ dt jƒ}t  ddg¡}||j|j|jƒ}ttt||ƒƒt jƒ ttt||ƒƒ|ƒ ttt||ƒƒ|ƒ ttt||ƒƒ|ƒ d S )Nc                   @   s   e Zd ZdZdS )z*TestKron.test_return_type.<locals>.myarrayg      ð?N)rQ   rR   rS   Z__array_priority__r   r   r   r    Úmyarray¦  s   r  r9   )	r   rw   r=   rH   r;   r~   r   r›   r   )r5   r  r   rž   r   r   r    Útest_return_type¥  s    zTestKron.test_return_typeÚarray_classc                 C   sL   |t  ddg¡ƒ}|t  ddg¡ƒ}|t  ddg¡ƒ}tt  ||¡|ƒ d S )Nr(   rÉ   )r   r=   r   r   )r5   r  r   r¸   r  r   r   r    Útest_kron_smoke°  s    zTestKron.test_kron_smokec                 C   sj   t jjddgddggddgddggd�}t jjt  g d¢¡t jt  d¡td� d�}t|t  ||¡ƒ d S )	Nr<   r9   r(   r)   r   rÂ   )r<   r)   r)   é   r:   )r   rž   r@   ZdiagÚidentityrB   r   r   )r5   rŠ   r  r   r   r    Útest_kron_maº  s
    (ÿzTestKron.test_kron_mazshape_a,shape_b))rÀ   rÀ   )rê   )r)   r*   rv   )©r9   r9   )r9   r9   r9   ))r<   r   rÀ   )©r9   r   r9   r  ))r9   r   r   r9   r  c           	      C   s‚   t  |¡}t  |¡}dtdt|ƒt|ƒ ƒ | }dtdt|ƒt|ƒ ƒ | }t  ||¡}t  ||¡}t  |j|¡s~J dƒ‚d S )N)r<   r   zUnexpected shape from kron)r   r=   r0   rb   Úmultiplyr   Zarray_equalrH   )	r5   Zshape_aZshape_br   r¸   Znormalised_shape_aZnormalised_shape_bZexpected_shaper  r   r   r    Útest_kron_shapeÁ  s    


ÿÿzTestKron.test_kron_shapeN)rQ   rR   rS   r  r  rß   rà   Zparametrizer   ZasarrayZasmatrixr  r  r  r   r   r   r    r  ‡  s   ÿ
ÿ	r  c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚTestTilec                 C   sÔ   t  g d¢¡}ddgddgg}tt|dƒg d¢ƒ tt|dƒg d¢g d¢gƒ tt|dƒg d¢gƒ tt|dƒg d	¢g d
¢gƒ tt|dƒddgddgddgddggƒ tt|dƒg d	¢g d
¢g d	¢g d
¢gƒ d S )Nrº   r<   r9   r(   r)   )r   r<   r9   r   r<   r9   r  ©r<   r9   )r<   r9   r<   r9   )r(   r)   r(   r)   ©r9   r<   )r   r@   r   r   ©r5   r   r¸   r   r   r    r  ×  s    (ÿzTestTile.test_basicc                 C   s0   t  d¡}t|dƒ}|d7 }t|t  d¡ƒ d S )Nr*   r<   r9   )r   r\   r   r   r"  r   r   r    Ú(test_tile_one_repetition_on_array_gh4679â  s    

z1TestTile.test_tile_one_repetition_on_array_gh4679c                 C   sL   t  g gg¡}t  g g g¡}t|dƒj}t|dƒj}t|dƒ t|dƒ d S )Nr9   rO   )r9   r   )r(   r9   r   )r   r@   r   rH   r   )r5   r   r¸   r  r`   r   r   r    rK   è  s    
zTestTile.test_emptyc           
      C   sn   ddl m} g d¢}g d¢}|D ]H}|dd|d�}|D ]0}t ||j¡}t||ƒ}t||ƒ}	t||	ƒ q6q d S )Nr   )Úrandint))r9   r   r!  r  )r9   r(   r9   )r(   r9   ))r(   )r9   r(   )r(   r)   r(   )r(   r9   r(   )r)   r(   r9   r)   r  r8   )Úsize)r+   r$  r   r=   r;   r   r   r   )
r5   r$  ZrepsrH   r·   r¸   Úrr   ZlargeZklarger   r   r    Útest_kroncompareð  s    

zTestTile.test_kroncompareN)rQ   rR   rS   r  r#  rK   r'  r   r   r   r    r  Ö  s   r  c                   @   s   e Zd Zdd„ ZdS )ÚTestMayShareMemoryc              	   C   sü   t  d¡}t  d¡}tt  ||¡ƒ tt  ||d d d… ¡ƒ tt  ||d d d… ¡ƒ tt  ||dd …d d d…f ¡ƒ tt  |d d d… |¡ ƒ tt  |d d d… |¡ ƒ tt  |dd …d d d…f |¡ ƒ tt  |dd …d d d…f |¡ƒ d S )N)rY   rW   )rU   rW   rv   rŽ   r9   r<   )r   r=   r   Zmay_share_memory)r5   r`   Zd2r   r   r    r  ÿ  s    

"$zTestMayShareMemory.test_basicNr  r   r   r   r    r(  þ  s   r(  c                 C   s:   t | ƒt |ƒkrtdƒ‚t| |ƒD ]\}}t||ƒ q"dS )zCompare lists of arrays.z Iterables have different lengthsN)rb   r?   Úzipr   )r   rÌ   rŠ   Úyr   r   r    rÊ     s    rÊ   )/Únumpyr   r"   Úsysrß   r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Znumpy.exceptionsr   Znumpy.testingr   r   r   r   r   Úmaxsizerá   r$   r%   rT   r^   r°   r´   rÅ   râ   rå   rù   r  r  r  r  r  r  r(  rÊ   r   r   r   r    Ú<module>   s6   @
4 '( '!O(