o
    V=ºi�g  ã                   @   sz  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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)Ú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© úeC:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\numpy/lib/tests/test_shape_base.pyÚwrapped   s   z_add_keepdims.<locals>.wrappedN)Ú	functoolsÚwraps)r   r    r   r   r   Ú_add_keepdims   s   r#   c                   @   ó,   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tjtjtdd�fg}|D ]0\}}}tt|jƒƒdg D ] }||fd	|i|¤Ž}||fd	|i|¤Ž}	t|t||	|d
�ƒ qEq6dS )z- Test it translates from arg<func> to <func> r   ©Úrandé   é   é   é   )ZkthNr   r   )Únumpy.randomr'   r   ÚsortZargsortÚdictr#   ÚminÚargminÚmaxÚargmaxÚ	partitionZargpartitionÚ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 jt||dd� dS )z4 Test it errors when indices has too few dimensions )é
   r:   )r:   r+   ©Údtypeé   r   r:   N)r   ÚonesÚintpr   r   Ú
ValueErrorÚarrayÚ
IndexErrorZastypeÚboolÚfloatÚ	AxisError©r7   r   Úair   r   r   Útest_invalid1   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©r7   r   rG   Úactualr   r   r   Ú
test_emptyB   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=   r+   r*   r;   r=   r   ©r(   r+   r*   NrI   rK   r   r   r   Útest_broadcastJ   s   
z TestTakeAlongAxis.test_broadcastN)Ú__name__Ú
__module__Ú__qualname__r9   rH   rM   rR   r   r   r   r   r%      s
    r%   c                   @   ó   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 ]%}| ¡ }tt jƒ||d�}t||d|d� tt j	ƒ||d�}t
||ƒ qd S )N)r:   é   é   )é<   é(   é2   r   i�ÿÿÿ)r   rA   r4   r5   r6   Úcopyr#   r2   r   r0   r   )r7   Za_baser   r   Zi_maxZi_minr   r   r   Útest_replace_maxS   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 )
rN   rO   r:   r;   rP   r)   rY   r=   r   N)r   r>   Úaranger?   Úreshaper   r   r   rF   r   r   r   rR   c   s   
zTestPutAlongAxis.test_broadcastN)rS   rT   rU   r^   rR   r   r   r   r   rW   R   s    rW   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   ó6   t  dd¡}tttd|ƒt|ƒt  |jd ¡ ƒ d S )N©rY   r:   Údr   r=   ©r   r>   r   r   ÚlenrJ   ©r7   r   r   r   r   Útest_simplel   ó    ÿzTestApplyAlongAxis.test_simplec                 C   rb   )N)r:   ée   rd   r   r=   re   rg   r   r   r   Útest_simple101q   ri   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   )rl   rX   é!   )é$   é'   é*   )é-   é0   é3   )r   r_   r`   r   r   Úsumrg   r   r   r   Útest_3dv   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 )Nr+   r   )Úrowr   r   r   Údouble|   s   z9TestApplyAlongAxis.test_preserve_subclass.<locals>.doublec                   @   ó   e Zd ZdS )z<TestApplyAlongAxis.test_preserve_subclass.<locals>.MyNDArrayN©rS   rT   rU   r   r   r   r   Ú	MyNDArray   ó    r{   r   r=   r+   r(   r)   é   )r   ÚndarrayrA   Úviewr   r   Ú
isinstancer   )r7   rx   r{   Ú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                   @   ó   e Zd ZdZdS )z9TestApplyAlongAxis.test_subclass.<locals>.MinimalSubclassr=   N)rS   rT   rU   Údatar   r   r   r   ÚMinimalSubclassŽ   ó    r‡   c                 S   s   | j S ©N)r†   )rA   r   r   r   Úminimal_function‘   s   z:TestApplyAlongAxis.test_subclass.<locals>.minimal_function©r}   r(   r   )r=   r=   r=   )r   r~   Úzerosr   r   r   rA   )r7   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   ©r}   r}   r}   )	r   r>   r   r   ru   r   r€   r   rA   )r7   Ú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keepdimsN)r   r6   r   Úsqueezeru   ©Ú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>   r   r   r   r€   r   rA   )r7   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   r6   r   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>¸   ó    ÿ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Ÿ   À   r    éZ   )r}   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   Ústackr5   rJ   )r›   )r¢   r˜   )r£   r   rŸ   Ê   s    ýÿþÿr+   )
r   r_   r`   r   r¤   r5   rJ   r   r   Útype)r7   r�   rL   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                   @   ry   )zFTestApplyAlongAxis.test_subclass_preservation.<locals>.MinimalSubclassNrz   r   r   r   r   r‡   Ô   r|   r‡   )r   r~   r�   r•   r¦   )r7   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   r6   r   ÚmaZmasked_where)r“   r   r   r   r   r˜   Û   s   z8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2r™   r‹   r   r(   r=   r+   )r   r_   r`   r   r   r€   r¨   Zmasked_arrayr   r6   r   Úmask)r7   r˜   r   r   r   r   r   Útest_axis_insertion_maÚ   s   004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é   ó   z7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1dr=   r+   r(   r)   )r   r   rA   r   )r7   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   rf   r’   r   r   r   Ú
empty_to_1ø   s   z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1)r:   r   r:   )r   Úemptyr   r@   r   r   r>   )r7   r®   r   r¯   rL   r   r   r   rM   î   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|| ƒƒ q;d S )Nr=   é   r+   é   r(   rn   r)   é,   r*   é7   r}   éB   c                 S   s
   t j| Ž S r‰   )ÚsetÚunion)r   r   r   r   Ú<lambda>  s   
 z>TestApplyAlongAxis.test_with_iterable_object.<locals>.<lambda>r   >   r=   r±   r)   r³   >   r+   r*   r²   r´   >   rn   rµ   r(   r}   )r   rA   r   r   ZndindexrJ   r¥   )r7   rd   rL   r‚   rœ   r   r   r   Útest_with_iterable_object  s   þ
ÿz,TestApplyAlongAxis.test_with_iterable_objectN)rS   rT   rU   rh   rk   rv   r„   r�   r   r~   r�   r•   r¦   r§   rª   r­   rM   r¹   r   r   r   r   ra   k   s    %ra   c                   @   ó   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é   r+   r(   r)   r   rZ   é\   é|   )r   r_   r`   r   ru   r   rA   )r7   r   Zaoa_ar   r   r   rh     s   "zTestApplyOverAxes.test_simpleN)rS   rT   rU   rh   r   r   r   r   r»     ó    r»   c                   @   ó4   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 ]}t||ƒ}t|j| dkƒ tt  |¡j|kƒ qd S )N©r+   r(   r)   r*   éûÿÿÿr)   r=   )r   r°   r5   r   r   rJ   r‘   )r7   Ú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s)J ‚t j|d	d�jd
ks5J ‚d S )Nrm   ©r   r=   r+   r   )r=   r=   r=   r(   r(   r(   )r   r—   éþÿÿÿ)r=   r(   r(   r(   r=   r=   )r   r(   r*   )r=   r(   r(   r=   r(   r=   )r   éýÿÿÿrÃ   )r=   r=   r(   r=   r(   r(   )r   r°   r   rJ   rg   r   r   r   Útest_axis_tuple!  s
   
zTestExpandDims.test_axis_tuplec                 C   s\   d}t  |¡}tt jt|dƒ tt jt|dƒ t  d¡}tt jt|dƒ tt jt|dƒ d S )NrÂ   éúÿÿÿr*   rm   )r   rË   )r   r*   )r   r°   r   rE   r   )r7   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 )Nrm   ©r=   r=   r   )r   r°   r   r@   r   rg   r   r   r   Útest_repeated_axis2  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 )	Nr:   )r+   r*   r(   r   ©r©   r=   r   )r+   r=   r*   )r   r_   r`   r¨   rA   r   r   r€   ZMaskedArrayr   rJ   r©   )r7   r   Zexpandedr   r   r   Útest_subclasses6  s   zTestExpandDims.test_subclassesN)rS   rT   rU   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   ó   t  d¡}ttt|dƒ d S )Nr:   r   )r   r_   r   r@   r   rg   r   r   r   Útest_integer_0_splitA  ó   
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 )Nr:   r=   r+   r*   r(   r)   é   r}   é   é	   r±   )r   r_   r   Úcompare_resultsrA   ©r7   r   r   Údesiredr   r   r   Útest_integer_splitE  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 )Nr:   r(   r   r   ©r   r:   r—   r=   ©	r   rA   r_   r   rŒ   rØ   r   r<   r¥   ©r7   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 )Nr:   r(   r—   r   r)   rÕ   )r   rA   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
        r:   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   r+   r)   )i   @r+   )r   Zbroadcast_tor   r5   rf   r   rJ   )r7   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 )	Nr:   )r=   r*   rÕ   r—   r   r   r=   r*   rÕ   )r   r_   r   rØ   ©r7   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 )Nr:   )r   r*   rÕ   r—   r   r   r*   rÕ   ©r   r_   r   rA   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 )Nr:   )r   r*   rÕ   r:   é   r—   r   r   r*   rÕ   ré   ræ   r   r   r   Útest_index_split_high_bound½  s   
ÿz*TestArraySplit.test_index_split_high_boundN)rS   rT   rU   rÓ   rÛ   rà   rá   râ   ÚpytestÚmarkZskipifÚIS_64BITrå   rè   rê   rì   r   r   r   r   rÑ   @  s    =
rÑ   c                   @   rV   )Ú	TestSplitc                 C   s8   t  d¡}t|dƒ}t  d¡t  dd¡g}t||ƒ d S )Nr:   r+   r*   )r   r_   r   rØ   rÙ   r   r   r   Útest_equal_splitË  s   

zTestSplit.test_equal_splitc                 C   rÒ   )Nr:   r(   )r   r_   r   r@   r   rg   r   r   r   Útest_unequal_splitÑ  rÔ   zTestSplit.test_unequal_splitN)rS   rT   rU   rñ   rò   r   r   r   r   rð   Æ  s    rð   c                   @   r$   )
ÚTestColumnStackc                 C   ó   t ttdƒ d S ©Nr=   )r   Ú	TypeErrorr
   ©r7   r   r   r   Útest_non_iterable×  r¬   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=   r+   r(   )r+   r(   r)   r=   r+   r(   r)   ©r   rA   r
   r   ©r7   r   rÅ   r‚   rL   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=   r+   r(   r)   rú   rû   r   r   r   Útest_2D_arraysä  s   
þzTestColumnStack.test_2D_arraysc                 C   óD   t tƒ� tdd„ tdƒD ƒƒ W d   ƒ d S 1 sw   Y  d S )Nc                 s   ó   � | ]}t  d ¡V  qdS ©r(   N©r   r_   ©r›   Ú_r   r   r   Ú	<genexpr>ð  ó   € z1TestColumnStack.test_generator.<locals>.<genexpr>r+   )r   ÚFutureWarningr
   r5   r÷   r   r   r   Útest_generatorî  ó   
"ÿzTestColumnStack.test_generatorN)rS   rT   rU   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   rô   rõ   )r   rö   r	   r÷   r   r   r   rø   ô  r¬   zTestDstack.test_non_iterablec                 C   s@   t  d¡}t  d¡}t||gƒ}t  ddggg¡}t||ƒ d S ©Nr=   r+   ©r   rA   r	   r   ©r7   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   rþ   )Nc                 s   rÿ   r   r  r  r   r   r   r    r  z,TestDstack.test_generator.<locals>.<genexpr>r+   )r   r  r	   r5   r÷   r   r   r   r    r  zTestDstack.test_generatorN)	rS   rT   rU   rø   r  r  r  r  r  r   r   r   r   r	  ó  s    r	  c                   @   ó0   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   ó   t ttddƒ d S rõ   )r   r@   r   r÷   r   r   r   rø     ó   zTestHsplit.test_non_iterablec                 C   s8   t  d¡}zt|dƒ tdƒ W d S  ty   Y d S w )Nr=   r+   r   )r   rA   r   r   r@   rg   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=   r+   r(   r)   r+   r=   r(   r)   ©r   rA   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  /  s   
ÿ
,zTestHsplit.test_2D_arrayN©rS   rT   rU   Ú__doc__rø   r  r  r  r   r   r   r   r    s    r  c                   @   r  )Ú
TestVsplitr  c                 C   r  rõ   )r   r@   r   r÷   r   r   r   rø   ;  r  zTestVsplit.test_non_iterablec                 C   rÒ   r
  )r   rA   r   r@   r   rg   r   r   r   r  >  rÔ   zTestVsplit.test_0D_arrayc                 C   s<   t  g d¢¡}zt|dƒ tdƒ W d S  ty   Y d S w ©Nr  r+   r   )r   rA   r   r   r@   rg   r   r   r   r  B  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  r+   )r   rA   r   rØ   rÙ   r   r   r   r  J  s   
ÿ
 zTestVsplit.test_2D_arrayNr  r   r   r   r   r  7  s    r  c                   @   rÀ   )Ú
TestDsplitc                 C   r  rõ   )r   r@   r   r÷   r   r   r   rø   T  r  zTestDsplit.test_non_iterablec                 C   rÒ   r
  ©r   rA   r   r@   r   rg   r   r   r   r  W  rÔ   zTestDsplit.test_0D_arrayc                 C   s    t  g d¢¡}ttt|dƒ d S r  r  rg   r   r   r   r  [  s   zTestDsplit.test_1D_arrayc                 C   sD   t  g d¢g d¢g¡}zt|dƒ tdƒ W d S  ty!   Y d S w r  )r   rA   r   r   r@   rg   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   rA   r   rØ   rÙ   r   r   r   Útest_3D_arrayh  s   
ÿÿþ
$$ÿzTestDsplit.test_3D_arrayN)rS   rT   rU   rø   r  r  r  r   r   r   r   r   r  R  s    	r  c                   @   rº   )Ú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&   rY   r:   r=   )rY   r:   r:   )rY   r:   rY   rc   g      ø?)
r,   r'   r   r   r‘   r`   r   r6   r¥   r~   )r7   r'   r   rÅ   Úcr   r   r   r   Ú
test_basict  s   


zTestSqueeze.test_basicN©rS   rT   rU   r#  r   r   r   r   r!  s  r¿   r!  c                   @   sT   e Z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ˆ   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                   @   r…   )z*TestKron.test_return_type.<locals>.myarrayg      ð?N)rS   rT   rU   Z__array_priority__r   r   r   r   Úmyarrayˆ  rˆ   r&  r+   )	r   r~   r>   rJ   r<   r†   r   r¥   r   )r7   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   )r7   r(  r   rÅ   Úkr   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=   r+   r(   r)   r   rÏ   )r=   r)   r)   é   r;   )r   r¨   rA   ZdiagÚidentityrC   r   r   )r7   r“   r)  r   r   r   Útest_kron_maœ  s
   (ÿzTestKron.test_kron_mazshape_a,shape_b))rÍ   rÍ   )rù   )r)   r*   r}   )©r+   r+   )r+   r+   r+   ))r=   r   rÍ   )©r+   r   r+   r.  ))r+   r   r   r+   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>   r1   rf   Úmultiplyr   Zarray_equalrJ   )	r7   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)rS   rT   rU   r'  rí   rî   Zparametrizer   ZasarrayÚmatr*  r-  r1  r   r   r   r   r%  †  s    ÿ
ÿ	r%  c                   @   r$   )
Ú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=   r+   r(   r)   )r   r=   r+   r   r=   r+   r.  ©r=   r+   )r=   r+   r=   r+   )r(   r)   r(   r)   ©r+   r=   )r   rA   r   r   ©r7   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=   r+   )r   r_   r   r   r6  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 )Nr+   rQ   )r+   r   )r(   r+   r   )r   rA   r   rJ   r   )r7   r   rÅ   r"  rd   r   r   r   rM   Ê  s   
zTestTile.test_emptyc           
      C   sn   ddl m} g d¢}g d¢}|D ]$}|dd|d�}|D ]}t ||j¡}t||ƒ}t||ƒ}	t||	ƒ qqd S )Nr   )Úrandint))r+   r4  r5  r.  )r+   r(   r+   )r(   r+   ))r(   )r+   r(   )r(   r)   r(   )r(   r+   r(   )r)   r(   r+   r)   r.  r:   )Úsize)r,   r8  r   r>   r<   r   r   r   )
r7   r8  ZrepsrJ   rÄ   rÅ   Úrr   ZlargeZklarger   r   r   Útest_kroncompareÒ  s   

üþzTestTile.test_kroncompareN)rS   rT   rU   r#  r7  rM   r;  r   r   r   r   r3  ¸  s
    r3  c                   @   rº   )Ú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)r\   rZ   )rX   rZ   r}   r—   r+   r=   )r   r>   r   Zmay_share_memory)r7   rd   Zd2r   r   r   r#  á  s   

"$&zTestMayShareMemory.test_basicNr$  r   r   r   r   r<  à  r¿   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)rf   r@   Úzipr   )r   rÚ   r“   Úyr   r   r   rØ   ð  s
   ÿrØ   ).Znumpyr   r!   Úsysrí   Znumpy.lib.shape_baser   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Znumpy.testingr   r   r   r   r   Úmaxsizerï   r#   r%   rW   ra   r»   rÁ   rÑ   rð   ró   r	  r  r  r  r!  r%  r3  r<  rØ   r   r   r   r   Ú<module>   s6    @
4 '( '!2(