o
    ðT·j`k  ã                   @   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© úb/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/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                   @   ó,   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 ]0\}}}tt|jƒƒdg D ] }||fd|i|¤Ž}||fd|i|¤Ž}	t|t||	|d�ƒ q<q-dS )	z- Test it translates from arg<func> to <func> r   ©Úrandé   é   é   Nr   r   )Únumpy.randomr(   r   ÚsortÚargsortÚdictr$   ÚminÚargminÚmaxÚargmaxÚlistÚrangeÚndimr   r   )
Úselfr(   r   Úfuncsr   Úargfuncr   r   Úa_funcÚ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� ttt||dd� dS )z4 Test it errors when indices has too few dimensions )é
   r=   )r=   é   ©Údtypeé   r   r=   N)r   ÚonesÚintpr   r   Ú
ValueErrorÚarrayÚ
IndexErrorÚastypeÚboolÚfloatr   ©r7   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?   rA   r   N©r   rB   rC   r   r   Úshape©r7   r   rK   Úactualr   r   r    Ú
test_emptyE   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*   rA   ©rA   r>   r+   r?   rA   r   ©r)   r>   r+   NrM   rO   r   r   r    Útest_broadcastM   s   
z TestTakeAlongAxis.test_broadcastN)Ú__name__Ú
__module__Ú__qualname__r<   rL   rQ   rV   r   r   r   r    r&      s
    r&   c                   @   s$   e Zd Zd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   rE   r4   r5   r6   Úcopyr$   r3   r   r1   r   )r7   Úa_baser   r   Úi_maxÚi_minr   r   r    Útest_replace_maxV   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 )
rR   rS   r=   r?   rT   r*   r]   rA   r   N)r   rB   ÚarangerC   Úreshaper   r   r   rJ   r   r   r    rV   f   s   
zTestPutAlongAxis.test_broadcastc                 C   sÆ   t  g d¢g d¢g¡}t  dgdgg¡}t  dgdgg¡}| ¡ }t|||dd� t  |g d¢g d¢gk¡s8J ‚| ¡ }ttƒ�}t|||d	d� W d	  ƒ n1 sSw   Y  d
t|jƒv saJ ‚d	S )z Test invalid inputs r[   r^   r   rA   r>   r   ©r>   r>   r>   ©rA   rA   rA   Nzsingle dimension)	r   rE   rb   r   Úallr   rD   ÚstrÚ	exception)r7   rc   ÚindicesÚvaluesr   Úexcr   r   r    rL   m   s   
ÿzTestPutAlongAxis.test_invalidN)rW   rX   rY   rf   rV   rL   r   r   r   r    rZ   U   s    rZ   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©r]   r=   Údr   rA   ©r   rB   r   r   ÚlenrN   ©r7   r   r   r   r    Útest_simple�   ó    ÿzTestApplyAlongAxis.test_simplec                 C   rr   )N)r=   ée   rt   r   rA   ru   rw   r   r   r    Útest_simple101†   ry   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   )r|   r\   é!   )é$   é'   é*   )é-   é0   é3   )r   rg   rh   r   r   Úsumrw   r   r   r    Útest_3d‹   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©rW   rX   rY   r   r   r   r    Ú	MyNDArray”   ó    r‹   r   rA   r>   r)   r*   é   )r   ÚndarrayrE   Úviewr   r   Ú
isinstancer   )r7   rˆ   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>.MinimalSubclassrA   N)rW   rX   rY   Údatar   r   r   r    ÚMinimalSubclass£   ó    r—   c                 S   s   | j S ©N)r–   )rE   r   r   r    Úminimal_function¦   s   z:TestApplyAlongAxis.test_subclass.<locals>.minimal_function©r�   r)   r   rj   )r   rŽ   Úzerosr�   r   r   rE   )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   rB   r�   r   r…   r   r�   r   rE   )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 rA   T)Úkeepdims)r   r6   r   Úsqueezer…   ©Úxr   r   r    Ú	sum_to_0d¶   s   z3TestApplyAlongAxis.test_0d_array.<locals>.sum_to_0dr›   r   rž   rA   )r)   r)   r)   r)   r)   r)   )r   rB   r�   r   r   r�   r   rE   )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 xrA   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>rA   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   rN   )r¬   )r³   r©   )r´   r    r°   ß   s    ýÿþÿr>   )
r   rg   rh   r   rµ   r5   rN   r�   r   Útype)r7   rŸ   rP   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                   @   r‰   )zFTestApplyAlongAxis.test_subclass_preservation.<locals>.MinimalSubclassNrŠ   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§   rA   Nr¨   r+   r   )r   r6   r   ÚmaÚmasked_where)r¤   r   r   r   r    r©   ð   s   z8TestApplyAlongAxis.test_axis_insertion_ma.<locals>.f1to2rª   r›   r   r)   rA   r>   )r   rg   rh   r   r   r�   r¹   Ú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 )NrA   r   r   r£   r   r   r    Ú	sample_1dþ   ó   z7TestApplyAlongAxis.test_tuple_func1d.<locals>.sample_1drA   r>   r)   r*   )r   r   rE   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   rA   c                 S   s   t t| ƒdkƒ dS )Nr   rA   )r   rv   r£   r   r   r    Ú
empty_to_1  s   z1TestApplyAlongAxis.test_empty.<locals>.empty_to_1)r=   r   r=   )r   Úemptyr   rD   r   r   rB   )r7   rÁ   r   rÂ   rP   r   r   r    rQ     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 )NrA   é   r>   é   r)   r~   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   >   rA   r*   rÄ   rÆ   >   r>   r+   rÅ   rÇ   >   r)   r�   r~   rÈ   )r   rE   r   r   ÚndindexrN   r¶   )r7   rt   rP   r’   r­   r   r   r    Útest_with_iterable_object  s   þ
ÿz,TestApplyAlongAxis.test_with_iterable_objectN)rW   rX   rY   rx   r{   r†   r”   r�   r   rŽ   r    r¦   r·   r¸   r½   rÀ   rQ   rÍ   r   r   r   r    rq   €   s    %rq   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   r_   é\   é|   )r   rg   rh   r   r…   r   rE   )r7   r   Úaoa_ar   r   r    rx   '  s   "zTestApplyOverAxes.test_simpleN)rW   rX   rY   rx   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*   rA   )r   rÃ   r5   r   r   rN   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 )Nr}   ©r   rA   r>   r   )rA   rA   rA   r)   r)   r)   )r   r¨   éþÿÿÿ)rA   r)   r)   r)   rA   rA   )r   r)   r+   )rA   r)   r)   rA   r)   rA   )r   éýÿÿÿrØ   )rA   rA   r)   rA   r)   r)   )r   rÃ   r   rN   rw   r   r   r    Útest_axis_tuple6  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+   r}   )r   rà   )r   r+   )r   rÃ   r   r   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 )Nr}   ©rA   rA   r   )r   rÃ   r   rD   r   rw   r   r   r    Útest_repeated_axisG  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¼   rA   r   )r>   rA   r+   )r   rg   rh   r¹   rE   r   r   r�   ÚMaskedArrayr   rN   r¼   )r7   r   Úexpandedr   r   r    Útest_subclassesK  s   zTestExpandDims.test_subclassesN)rW   rX   rY   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   rg   r   rD   r   rw   r   r   r    Útest_integer_0_splitV  ó   
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=   rA   r>   r+   r)   r*   é   r�   é   é	   rÄ   )r   rg   r   Úcompare_resultsrE   ©r7   r   r   Údesiredr   r   r    Útest_integer_splitZ  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¨   rA   ©	r   rE   rg   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   rE   rg   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   Úbroadcast_tor   r5   rv   r   rN   )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=   )rA   r+   rì   r¨   r   r   rA   r+   rì   )r   rg   r   rï   ©r7   r   rn   r   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   rg   r   rE   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)rW   rX   rY   rê   rò   r÷   rø   rù   ÚpytestÚmarkÚskipifÚIS_64BITrý   rÿ   r  r  r   r   r   r    rè   U  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 )Nr=   r>   r+   )r   rg   r   rï   rð   r   r   r    Útest_equal_splità  s   

zTestSplit.test_equal_splitc                 C   ré   )Nr=   r)   )r   rg   r   rD   r   rw   r   r   r    Útest_unequal_splitæ  rë   zTestSplit.test_unequal_splitN)rW   rX   rY   r	  r
  r   r   r   r    r  Û  s    r  c                   @   r%   )
ÚTestColumnStackc                 C   ó   t ttdƒ d S ©NrA   )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©rA   r>   r)   )r>   r)   r*   rA   r>   r)   r*   ©r   rE   r
   r   ©r7   r   rÚ   r’   rP   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 )NrA   r>   r)   r*   r  r  r   r   r    Útest_2D_arraysù  s   
þzTestColumnStack.test_2D_arraysc                 C   óJ   t jtdd�� tdd„ tdƒD ƒƒ W d   ƒ d S 1 sw   Y  d S )Núarrays to stack must be©Úmatchc                 s   ó   � | ]}t  d ¡V  qdS ©r)   N©r   rg   ©r¬   Ú_r   r   r    Ú	<genexpr>  ó   € z1TestColumnStack.test_generator.<locals>.<genexpr>r>   )r  Úraisesr  r
   r5   r  r   r   r    Útest_generator  ó   "ÿzTestColumnStack.test_generatorN)rW   rX   rY   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 ©NrA   r>   ©r   rE   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  )Nr  r  c                 s   r  r  r  r  r   r   r    r  *  r   z,TestDstack.test_generator.<locals>.<genexpr>r>   )r  r!  r  r	   r5   r  r   r   r    r"  (  r#  zTestDstack.test_generatorN)	rW   rX   rY   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   rD   r   r  r   r   r    r  3  ó   zTestHsplit.test_non_iterablec                 C   s8   t  d¡}zt|dƒ tdƒ W d S  ty   Y d S w )NrA   r>   r   )r   rE   r   r   rD   rw   r   r   r    r(  6  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©rA   r>   r)   r*   r>   rA   r)   r*   ©r   rE   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 r1  r3  rð   r   r   r    r*  D  s   
ÿ
,zTestHsplit.test_2D_arrayN©rW   rX   rY   Ú__doc__r  r(  r)  r*  r   r   r   r    r-  /  s    r-  c                   @   r,  )Ú
TestVsplitr.  c                 C   r/  r  )r   rD   r   r  r   r   r    r  P  r0  zTestVsplit.test_non_iterablec                 C   ré   r%  )r   rE   r   rD   r   rw   r   r   r    r(  S  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 ©Nr2  r>   r   )r   rE   r   r   rD   rw   r   r   r    r)  W  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 ©Nr2  r>   )r   rE   r   rï   rð   r   r   r    r*  _  s   
ÿ
 zTestVsplit.test_2D_arrayNr4  r   r   r   r    r6  L  s    r6  c                   @   rÕ   )Ú
TestDsplitc                 C   r/  r  )r   rD   r   r  r   r   r    r  i  r0  zTestDsplit.test_non_iterablec                 C   ré   r%  ©r   rE   r   rD   r   rw   r   r   r    r(  l  rë   zTestDsplit.test_0D_arrayc                 C   s    t  g d¢¡}ttt|dƒ d S r8  r:  rw   r   r   r    r)  p  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 r7  )r   rE   r   r   rD   rw   r   r   r    r*  t  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 r1  )r   rE   r   rï   rð   r   r   r    Útest_3D_array}  s   
ÿÿþ
$$ÿzTestDsplit.test_3D_arrayN)rW   rX   rY   r  r(  r)  r*  r;  r   r   r   r    r9  g  s    	r9  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'   r]   r=   rA   )r]   r=   r=   )r]   r=   r]   rs   g      ø?)
r,   r(   r   r   r¢   rh   r   r6   r¶   rŽ   )r7   r(   r   rÚ   Úcr   r   r   r    Ú
test_basic‰  s   


zTestSqueeze.test_basicN©rW   rX   rY   r>  r   r   r   r    r<  ˆ  rÔ   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 )	NrA   r>   r)   r*   r�   rî   r  rí   )r   rE   r   r   )r7   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                   @   r•   )z*TestKron.test_return_type.<locals>.myarrayg      ð?N)rW   rX   rY   Ú__array_priority__r   r   r   r    Úmyarrayº  r˜   rC  r>   )	r   rŽ   rB   rN   r@   r–   r   r¶   r   )r7   rC  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   rB   r   r   )r7   rE  r   rÚ   rA  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 )	NrA   r>   r)   r*   r   rä   )rA   r*   r*   é   r?   )r   r¹   rE   ÚdiagÚidentityrH   r   r   )r7   r¤   rA  r   r   r    Útest_kron_maÎ  s
   (ÿzTestKron.test_kron_mazshape_a,shape_b))râ   râ   )r  )r*   r+   r�   )©r>   r>   ri   ))rA   r   râ   )©r>   r   r>   rK  ))r>   r   r   r>   rL  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)rA   r   zUnexpected shape from kron)r   rB   r2   rv   Úmultiplyr   Úarray_equalrN   )	r7   Úshape_aÚshape_br   rÚ   Únormalised_shape_aÚnormalised_shape_bÚexpected_shaperA  r   r   r    Útest_kron_shapeÕ  s   


ÿÿzTestKron.test_kron_shapeN)rW   rX   rY   r>  rD  r  r  Úparametrizer   ÚasarrayÚasmatrixrF  rJ  rT  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Ü   rA   r>   r)   r*   )r   rA   r>   r   rA   r>   rK  ©rA   r>   )rA   r>   rA   r>   )r)   r*   r)   r*   ©r>   rA   )r   rE   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+   rA   r>   )r   rg   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 )Nr>   rU   )r>   r   )r)   r>   r   )r   rE   r   rN   r   )r7   r   rÚ   r=  rt   r   r   r    rQ   ü  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>   rY  rZ  rK  )r>   r)   r>   )r)   r>   ))r)   )r>   r)   )r)   r*   r)   )r)   r>   r)   )r*   r)   r>   r*   rK  r=   )Úsize)r,   r]  r   rB   r@   r   r   r   )
r7   r]  ÚrepsrN   rÙ   rÚ   Úrr   ÚlargeÚklarger   r   r    Útest_kroncompare  s   

üþzTestTile.test_kroncompareN)rW   rX   rY   r>  r\  rQ   rc  r   r   r   r    rX  ê  s
    rX  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)ra   r_   )r\   r_   r�   r¨   r>   rA   )r   rB   r   Úmay_share_memory)r7   rt   Úd2r   r   r    r>    s   

"$&zTestMayShareMemory.test_basicNr?  r   r   r   r    rd    rÔ   rd  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)rv   rD   Ú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   Únumpy.exceptionsr   Únumpy.testingr   r   r   r   r   Úmaxsizer  r$   r&   rZ   rq   rÏ   rÖ   rè   r  r  r$  r-  r6  r9  r<  r@  rX  rd  rï   r   r   r   r    Ú<module>   s8    @
6+ '( '!O(