o
    ʩZh*=                     @   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rxdZd	e Zd
\ZZeddD ]9Z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@dS 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| _z|j| _W n ty~   |jj| _Y nw 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$   P/var/www/html/lang_env/lib/python3.10/site-packages/numpy/ma/timer_comparison.py__init__   sB   
zModuleTester.__init__ Tc              
   C   s(  |  |}|  |}| | || |}	|  | j||	d|}|  | j||	d|}|jjdkrQ|t}t|t	j
rJ|jdkrJd|t	|< nt	|rQd}|jjdkrv|t}t|t	j
ro|jdkrod|t	|< nt	|rvd}z|jdkp|jdkp|j|jk}
|
st||g|d|j d|j d |d	d
}|
sJ ||||}|	| jur|r| j||	d}t|tr|}
dg}n| }| }
| }|
sdd|d t|  }t||g|d|f  |d	d
}|
sJ |W dS W dS  ty } zt||g||d	d
}t||d}~ww )zZ
        Assert that a comparison of two masked arrays is satisfied elementwise.

        maskO   r   r$   z	
(shapes z, z
 mismatch)xy)headernamesd   g      Y@z
(mismatch %s%%)N)r   r   r   r   dtypecharastyper   
isinstancenpZndarraysizeisnanshaper   r   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   sl   





 


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)rF   r   )r#   r-   r.   r?   r$   r$   r%   assert_array_equalg   s   
zModuleTester.assert_array_equalignore)r;   c                 C   sH   t ddddtd dddddddg}g d	}| j||d
}|d  dS )!
        Tests creation

              ?              @      @      @      $      $@      @r+   r   r   r   r   r   r+   r   r   r   r   r   r(   r   N)r6   r
   pir   )r#   r-   rA   xmr$   r$   r%   test_0o   s   &zModuleTester.test_0c           	      C   s   t ddddtd dddddddg}t g d	}g d
}g d}| j||d}| j||d}t |d|}|d || d sGJ |j}|j	t
dd |ksVJ | |t|t
dd | kshJ dD ]#}||_||_||_||_||_| |t|t
dd | ksJ qjdS )rI   rJ   rK   rL   rM   rN   rO   rP   rQ   )rN           rQ   rL   g      g      rV   rO   rP   rJ   rV   rQ   rR   )r   r   r+   r   r   r+   r+   r   r   r   r   r+   r(   g@xDr   c                 S   s   | | S r   r$   r,   r$   r$   r%   <lambda>       z%ModuleTester.test_1.<locals>.<lambda>c                 S      | | S r   r$   r,   r$   r$   r%   rW      rX   ))      )      c                 S   rY   r   r$   r,   r$   r$   r%   rW      rX   N)r6   r
   rS   r   whereZset_fill_valuer   anyr9   r7   r   r   r=   )	r#   r-   r.   m1m2rT   Zymr@   sr$   r$   r%   test_1z   s(   &
$&zModuleTester.test_1c           	      C   s  t g d}| j|g dd}| j|g dd}| |}t| t| t|d t|d u s4J |d |d ks>J d|d< d|d< | || d|dd	< d|dd	< | j|d< | j|dd	< ||d
d
< | j|d< | g dg d|d
d
< | g dg d|d
d
< t dd }| 	|d}| g dt
}t g dt
}|d  |d  |dd jdksJ g d}| |}| |}||u sJ | j|dd}||usJ d
S )z2
        Tests conversions and indexing.

        )r+   r]   rZ   r[   r+   r   r   r   r(   )r   r+   r   r+   r+   	   r]   c   r[   N)r+   r]   r[   rZ   )r   r+   r+   r      rJ   rQ   )r+   Zhellor]   r[   )r   )r   r   r+   r   r   )copy)r6   r
   strreprtyperG   r   r   r	   r   objectr9   r   )	r#   x1Zx2Zx3x4nrA   ra   m3r$   r$   r%   test_2   s@   




zModuleTester.test_2c                 C   s   |  d}| j|d< | |d}| | ||g|sJ | | |g ds*J | j|ddd}| |g d | j|ddd}| ||sJJ |jddd}| ||sYJ |dd}| ||sgJ d	S )
z&
        Tests resize/repeat

        rZ   r]   )   )r   r   r+   r   r   r   r+   r   )r]   r]   r]   r]   r   axis)r   r   r+   r+   r]   r]   r[   r[   N)r	   r   r   r   r   r   r   rG   )r#   rn   Zy4Zy5Zy6Zy7Zy8r$   r$   r%   test_3   s   

zModuleTester.test_3c              	   C   s@  |  d}t d}| j|dd< |ddd}|ddd}| t|d| |ds/J | t|dd| |ddsAJ | t| |d	| |d	| ||sYJ | t	| |d	| |d	| 	||sqJ | 
g d
t}| j|d< | |g d}|d	 dksJ |d dksJ |d dksJ dS )zB
        Test of take, transpose, inner, outer products.

           rg   r\   r]   r[   rZ   )r]   r   r+   r+   r   )abcr+   defr]   r[   )r   r[   rZ   rw   N)r	   r6   r   reshaper   r   r   r   r   r   r
   rl   )r#   r-   r.   tr$   r$   r%   test_4   s&   

 $


zModuleTester.test_4c                 C   s  |  d}|  d}|  d}| j|d< |d7 }| ||d s"J |d7 }| ||d s0J |  d}|  d}| j|d< |d8 }| ||d sMJ |d8 }| ||d s[J |  dd }|  dd }| j|d< |d9 }| ||d s|J |d9 }| ||d sJ |  dd }|  dd }| j|d< |d }| ||sJ |d }| ||sJ |  dd }|  dd }| j|d< |d }| ||d sJ ||  d }| || d |  dt}|  d}| j|d< |d7 }| ||d sJ dS )z*
        Tests inplace w/ scalar

        
   r]   r+   rJ   rL   )r|   N)r	   r   r   rG   r   r4   r   )r#   r-   r.   rT   r$   r$   r%   test_5   sR   











zModuleTester.test_5c                 C   s*  | j dtd}|  d}| j dtd}| j|d< |j}| j dtd}| j|d< ||7 }||7 }| ||| s9J | ||| sCJ | |j| ||jsQJ | j dtd}| j dtd}| j|d< |j}| j dtd}| j|d< ||8 }||8 }| ||| sJ | ||| sJ | |j| ||jsJ | j dtd}| j dtd}| j|d< |j}| j dtd}| j|d< ||9 }||9 }| ||| sJ | ||| sJ | |j| ||jsJ | j dtd}| j dtd}| j|d< |j}| j dtd}| j|d< || }|| }dS )z)
        Tests inplace w/ array

        r|   )r2   r]   N)r	   r   r   r)   r   r   )r#   r-   r.   rT   rA   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}dD ]C}zt| j|}W n tyF   tt|}Y nw t| j|}|d	|j }|| }|| }| |	d|	d| | |j
|j
 q.d	S )
zTests ufuncrJ   r   r~   r]   r+   r\   r(   )sqrtloglog10exp	conjugateN)r
   rS   getattrr    r!   fromnumericr   ZninrG   r   Z_mask)r#   dfZufmfargsurmrr$   r$   r%   test_7V  s    **zModuleTester.test_7c              	   C   s  | j g dg dd}| d| j|dd | d| j|g dd | j|g dd	d
\}}| d| |dks;J | j|d d < | j|dd| ju sNJ | j g dg dd}|dd}| j|d d d	f< | | j|ddddg | j|d	dd | ju sJ | ddg| j|dd | j|dd	d\}}| |ddg g d}g dg d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g d | | j|d	d| j|dd| j|ddd g | 	d}g d}	g dg dg}
| 
d}g d}| | j| ||ddd | | j| ||	ddd | | j| ||ddd | | | j| ||ddd | ||
}| | |d d | | j|ddg d | | j|d	dddg | | j|d|dg d d S )N)rV   rJ   rL   rQ   rd   r(   rL   r   rs   )rJ   rJ   rL   rJ   )weightsr+   )r   returnedrM   r]   rV   )rt   r   rJ   )r   r+   r+   r+   r+   r   )r+   r   r   r   r   r+   r\   g      @)rt   r   rQ   g      (@g
@)rV   rJ   rL   rQ   rM   rP   )r   r   r+   r+   r   r   )r   r+   r+   r+   r+   r+   )rV   rJ        X@r   rM   g      @rN   )rV   rJ   r   r   rM   rP   )r
   rG   Zaverager   ry   r	   r6   addr   r   r   r   r   )r#   ZottresultZwtsZw1Zw2r-   r.   r`   ra   rp   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 )Nrv   rg   r\   r]   r[   rZ   )r	   r   ry   )r#   r-   r$   r$   r%   test_A  s   
zModuleTester.test_AN)r'   r'   T)r'   )__name__
__module____qualname__r&   rF   rG   r6   ZerrstaterU   rc   rq   ru   r{   r}   r   r   r   r   r$   r$   r$   r%   r      s4    "

7







*





4

3

"

-r   __main__zNfrom __main__ import ModuleTester 
import numpy
tester = ModuleTester(module)
zimport numpy.ma.core as module
)r|   r|   r+   rr   ztester.test_%i()r|   z#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )Ztimeit	functoolsr   numpyr6   r   Znumpy.core.fromnumericr"   r   Znumpy.testingr   rS   r   r   Z
setup_baseZ	setup_curZnrepeatZnlooprangeifuncTimerr   curr   printevalr$   r$   r$   r%   <module>   s0       $
"