B
    .uf*=  ã               @   sø   d dl Z d dlmZ d dlZd dlmZ d dlm  mZ d dl	m
Z
 ejZG dd„ dƒZedkrôdZd	e Zd
\ZZx|eddƒD ]nZde Ze  ee¡ eed ¡Ze e¡Zede d ƒ eede ƒƒ eded  d›ded d›ƒ q‚W dS )é    N)Úreduce)Úfloat_)Úbuild_err_msgc               @   sð   e Zd Zdd„ Zd dd„Zd!dd„Zejd	d
dd„ ƒZejd	d
dd„ ƒZ	ejd	d
dd„ ƒZ
ejd	d
dd„ ƒZejd	d
dd„ ƒZejd	d
dd„ ƒZejd	d
dd„ ƒZejd	d
dd„ ƒZejd	d
dd„ ƒZejd	d
dd„ ƒZdS )"ÚModuleTesterc             C   s
  || _ |j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j	| _	t
| _
|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _y|j| _W n tk
rþ   |jj| _Y nX g | _d S )N)ÚmoduleÚallequalÚarangeÚarrayÚconcatenateÚcountÚequalÚfilledÚgetmaskZgetmaskarrayÚidÚinnerÚ	make_maskÚmaskedÚmasked_arrayÚmasked_valuesÚmask_orÚnomaskÚonesÚouterÚrepeatÚresizeÚsortÚtakeÚ	transposeÚzerosZMaskTypeÚumathÚAttributeErrorÚcoreZ	testnames)Úselfr   © r#   ú[/home/ankuromar296_gmail_com/myenv/lib/python3.7/site-packages/numpy/ma/timer_comparison.pyÚ__init__   s@    zModuleTester.__init__Ú Tc          
   C   sB  |   |¡}|   |¡}|  |  |¡|  |¡¡}	|   | j||	d|¡}|   | j||	d|¡}|jjdkr¢| t¡}t|t	j
ƒr”|jdkr”d|t	 |¡< nt	 |¡r¢d}|jjdkrì| t¡}t|t	j
ƒrÞ|jdkrÞd|t	 |¡< nt	 |¡rìd}y|jdkp|jdkp|j|jk}
|
sRt||g|d|j› d|j› d |d	d
}|
sRt|ƒ‚|||ƒ}|	| jk	r||r|| j||	d}t|tƒr”|}
dg}n| ¡ }| ¡ }
| ¡ }|
sødd| d¡ t|ƒ  }t||g|d|f  |d	d
}|
søt|ƒ‚W nB tk
r< } z"t||g||d	d
}t|ƒ|‚W dd}~X Y nX dS )zZ
        Assert that a comparison of two masked arrays is satisfied elementwise.

        )ÚmaskÚOé   r   r#   z	
(shapes z, z
 mismatch))ÚxÚy)ÚheaderÚnameséd   g      Y@z
(mismatch %s%%)N)r   r   r   r   ÚdtypeÚcharÚastyper   Ú
isinstanceÚnpZndarrayÚsizeÚisnanÚshaper   ÚAssertionErrorr   ÚboolZravelÚallÚtolistr   ÚlenÚ
ValueError)r"   Z
comparisonr*   r+   Úerr_msgr,   Z
fill_valueÚxfZyfÚmZcondÚmsgÚvalZreducedÚmatchÚer#   r#   r$   Úassert_array_compare0   s\    





$

z!ModuleTester.assert_array_comparec             C   s   | j | j|||dd dS )zH
        Checks the elementwise equality of two masked arrays.

        zArrays are not equal)r=   r,   N)rD   r   )r"   r*   r+   r=   r#   r#   r$   Úassert_array_equalg   s    zModuleTester.assert_array_equalÚignore)r9   c             C   s\   t  ddddtd dddddddg¡}d	d
d
d
d
d
d	d
d
d
d
d
g}| j||d}|d
  dS )z!
        Tests creation

        g      ð?g       Àg       @g      @g      @g      $Àg      $@g      @r)   r   )r'   N)r3   r	   Úpir   )r"   r*   r?   Úxmr#   r#   r$   Útest_0o   s    &zModuleTester.test_0c       	      C   sf  t  ddddtd dddddddg¡}t  dd	ddd
dd	dddd	dg¡}ddddddddddddg}ddddddddddddg}| j||d}| j||d}t  |d|¡}| d¡ ||  d¡ ¡ sÊt‚|j	}|j
tdd„ |ƒksèt‚|  |¡t|ƒtdd„ |ƒ kst‚xRdD ]J}||_	||_	||_	||_	||_	|  |¡t|ƒtdd„ |ƒ kst‚qW dS )z!
        Tests creation

        g      ð?g       Àg       @g      @g      @g      $Àg      $@g      @g        g      ð¿g      Àr)   r   )r'   g@Œµx¯Dc             S   s   | | S )Nr#   )r*   r+   r#   r#   r$   Ú<lambda>‹   ó    z%ModuleTester.test_1.<locals>.<lambda>c             S   s   | | S )Nr#   )r*   r+   r#   r#   r$   rJ   Œ   rK   ))é   é   )é   é   c             S   s   | | S )Nr#   )r*   r+   r#   r#   r$   rJ   ”   rK   N)r3   r	   rG   r   ÚwhereZset_fill_valuer   Úanyr7   r6   r4   r   r   r;   )	r"   r*   r+   Úm1Úm2rH   Zymr>   Úsr#   r#   r$   Útest_1z   s&    &"
&
zModuleTester.test_1c       	      C   sì  t  ddddg¡}| j|ddddgd}| j|ddddgd}|  |¡}t|ƒ t|ƒ t|d ƒt|d ƒkstt‚|d |d ksˆt‚d|d< d|d< |  ||¡ d|dd…< d|dd…< | j|d< | j|dd…< ||d	d	…< | j|d< |  ddddgddddg¡|d	d	…< |  ddddgddddg¡|d	d	…< t  	d
¡d }|  
|d¡}|  ddddgt¡}t  ddddgt¡}|d  |d  |dd… jdksœt‚dddddg}|  |¡}|  |¡}||ksÌt‚| j|dd}||k	sèt‚d	S )z2
        Tests conversions and indexing.

        r)   rO   rL   rM   r   )r'   é	   éc   Né   g      ð?g      @Zhello)r   )Úcopy)r3   r	   ÚstrÚreprÚtyper7   rE   r   r   r   r   Úobjectr6   r   )	r"   Úx1Zx2Zx3Úx4Únr?   rS   Úm3r#   r#   r$   Útest_2–   s@    


$$

zModuleTester.test_2c             C   sê   |   d¡}| j|d< |  |d¡}|  |  ||g¡|¡s:t‚|  |  |¡ddddddddg¡s`t‚| j|ddd}|  |ddddddddg¡ | j|ddd}|  ||¡s¬t‚|jddd}|  ||¡sÊt‚| dd¡}|  ||¡sæt‚d	S )
z&
        Tests resize/repeat

        rL   rO   )é   r   r)   )rO   rO   rO   rO   )ÚaxisrM   N)	r   r   r   r   r
   r7   r   r   rE   )r"   r_   Zy4Zy5Zy6Zy7Zy8r#   r#   r$   Útest_3Á   s    

&zModuleTester.test_3c          	   C   sN  |   d¡}t  d¡}| j|dd…< | ddd¡}| ddd¡}|  t |d¡|  |d¡¡s^t‚|  t |dd¡|  |dd¡¡s‚t‚|  t |  	|d	¡|  	|d	¡¡|  ||¡¡s²t‚|  t 
|  	|d	¡|  	|d	¡¡|  
||¡¡sât‚|  d
ddddgt¡}| j|d< |  |d	ddg¡}|d	 d
ks&t‚|d dks8t‚|d dksJt‚dS )zB
        Test of take, transpose, inner, outer products.

        é   rX   rN   rO   rM   rL   )rO   r   r)   r)   r   ÚabcÚdefN)r   r3   r   Úreshaper   r   r7   r   r   r   r   r	   r]   )r"   r*   r+   Útr#   r#   r$   Útest_4Õ   s"    

 $
zModuleTester.test_4c             C   s  |   d¡}|   d¡}|   d¡}| j|d< |d7 }|  ||d ¡sDt‚|d7 }|  ||d ¡s`t‚|   d¡}|   d¡}| j|d< |d8 }|  ||d ¡sšt‚|d8 }|  ||d ¡s¶t‚|   d¡d }|   d¡d }| j|d< |d9 }|  ||d ¡søt‚|d9 }|  ||d ¡st‚|   d¡d }|   d¡d }| j|d< |d }|  ||¡sVt‚|d }|  ||¡spt‚|   d¡d }|   d¡d }| j|d< |d }|  ||d ¡s´t‚||   d¡ }|  ||  d¡¡ |   d¡ t¡}|   d¡}| j|d< |d7 }|  ||d ¡st‚dS )z*
        Tests inplace w/ scalar

        é
   rO   r)   g      ð?g       @)rl   N)r   r   r   r7   rE   r   r1   r   )r"   r*   r+   rH   r#   r#   r$   Útest_5í   sR    











zModuleTester.test_5c             C   s6  | j dtd}|   d¡}| j dtd}| j|d< |j}| j dtd}| j|d< ||7 }||7 }|  ||| ¡srt‚|  ||| ¡s†t‚|  |j|  ||j¡¡s¢t‚| j dtd}| j dtd}| j|d< |j}| j dtd}| j|d< ||8 }||8 }|  ||| ¡st‚|  ||| ¡s"t‚|  |j|  ||j¡¡s@t‚| j dtd}| j dtd}| j|d< |j}| j dtd}| j|d< ||9 }||9 }|  ||| ¡sªt‚|  ||| ¡sÀt‚|  |j|  ||j¡¡sÞt‚| j dtd}| j dtd}| j|d< |j}| j dtd}| j|d< || }|| }dS )z)
        Tests inplace w/ array

        rl   )r/   rO   éÿÿÿÿN)r   r   r   r'   r   r7   r   )r"   r*   r+   rH   r?   Úar#   r#   r$   Útest_6"  sT    








zModuleTester.test_6c          	   C   sî   | j dddtd gd ddgdgd  d| j dddtd gd ddgdgd  df}xdD ]ˆ}yt| j|ƒ}W n tk
r   tt|ƒ}Y nX t| j|ƒ}|d	|j… }||Ž }||Ž }|  | 	d¡| 	d¡|¡ |  |j
|j
¡ q^W d	S )
zTests ufuncg      ð?r   rn   rO   r)   rN   )r'   )ÚsqrtÚlogÚlog10ÚexpÚ	conjugateN)r	   rG   Úgetattrr   r    Úfromnumericr   ZninrE   r   Z_mask)r"   ÚdÚfZufÚmfÚargsÚurÚmrr#   r#   r$   Útest_7V  s    *.
zModuleTester.test_7c          	   C   s(  | j ddddgddddgd}|  d| j|dd¡ |  d| j|ddddgd	¡ | j|ddddgdd
\}}|  d|¡ |dks†t‚| j|d d …< | j|dd| jks¬t‚| j ddddgddddgd}| dd¡}| j|d d …df< |  | j|ddddg¡ | j|ddd | jks t‚|  ddg| j|dd¡ | j|ddd\}}|  |ddg¡ ddddddg}ddddddgddddddgg}|  d¡}|  | j|ddd¡ |  | j|d|dd¡ |   |  d¡d|  d¡ g¡}|  |  |d ¡tj 	t d¡¡d d ¡ |  | j|ddt d¡d d ¡ |  | j|dd| j|dd| j|ddd g¡ |  | j|d |d	d¡ |  | j|d|dddddddg¡ |  | j|dd| j|dd| j|ddd g¡ |  
d¡}ddddddg}	ddddddgddddddgg}
|  d¡}ddddddg}|  | j|  ||¡ddd¡ |  | j|  ||	¡ddd¡ |  | j|  ||¡ddd¡ |  |  | j|  ||¡dd¡d¡ |  ||
¡}|  |  |d ¡d¡ |  | j|ddddddddg¡ |  | j|ddddg¡ |  | j|d|dddddddg¡ d S )Ng        g      ð?g       @g      @r)   r   )r'   )rd   )Úweights)r   Úreturnedg      @rO   )rd   r€   rN   g      @)rd   r   g      (@g«ªªªªª
@g      $@g     ÀX@g      @g      @)r	   rE   Zaverager7   r   ri   r   r3   Úaddr   r   r   r   r   )r"   ZottÚresultZwtsZw1Zw2r*   r+   rR   rS   ra   Zm4Zm5Úzr#   r#   r$   Útest_99y  sT     
*$2$2
 
$"zModuleTester.test_99c             C   s*   |   d¡}| j|dd…< | ddd¡}d S )Nrf   rX   rN   rO   rM   rL   )r   r   ri   )r"   r*   r#   r#   r$   Útest_A§  s    
zModuleTester.test_AN)r&   r&   T)r&   )Ú__name__Ú
__module__Ú__qualname__r%   rD   rE   r3   ZerrstaterI   rU   rb   re   rk   rm   rp   r~   r„   r…   r#   r#   r#   r$   r      s   " 
6
+54#.r   Ú__main__zNfrom __main__ import ModuleTester 
import numpy
tester = ModuleTester(module)
zimport numpy.ma.core as module
)rl   rl   r)   rc   ztester.test_%i()rl   z#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )ZtimeitÚ	functoolsr   Únumpyr3   r   Znumpy.core.fromnumericr!   rw   Znumpy.testingr   rG   r   r†   Z
setup_baseZ	setup_curZnrepeatZnloopÚrangeÚiÚfuncÚTimerr   Úcurr   ÚprintÚevalr#   r#   r#   r$   Ú<module>   s*      $
