o
    寪g*=                     @   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getmaskgetmaskarrayidinner	make_maskmaskedmasked_arraymasked_valuesmask_ornomaskonesouterrepeatresizesorttake	transposezerosMaskTypeumathAttributeErrorcore	testnames)selfr    r'   U/var/www/html/chatdoc2/venv/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npndarraysizeisnanshaper   r   boolravelalltolistr   len
ValueError)r&   
comparisonr0   r1   err_msgr2   
fill_valuexfyfmcondmsgval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)rE   r2   N)rP   r   )r&   r0   r1   rE   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)r9   r
   pir   )r&   r0   rI   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 )rS   rT   rU   rV   rW   rX   rY   rZ   r[   )rX           r[   rV   g      g      r`   rY   rZ   rT   r`   r[   r\   )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(   ra      rb   ))      )      c                 S   rc   r   r'   r/   r'   r'   r(   ra      rb   N)r9   r
   r]   r   whereset_fill_valuer   anyr=   r;   r   r   rB   )	r&   r0   r1   m1m2r^   ymrG   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.   rg   rd   re   r.   r   r   r   r+   )r   r.   r   r.   r.   	   rg   c   re   N)r.   rg   re   rd   )r   r.   r.   r      rT   r[   )r.   hellorg   re   )r   )r   r   r.   r   r   )copy)r9   r
   strreprtyperQ   r   r   r	   r   objectr=   r   )	r&   x1x2x3x4nrI   rl   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

        rd   rg   )   )r   r   r.   r   r   r   r.   r   )rg   rg   rg   rg   r   axis)r   r   r.   r.   rg   rg   re   re   N)r	   r   r   r   r   r   r   rQ   )r&   r}   y4y5y6y7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.

           rs   rf   rg   re   rd   )rg   r   r.   r.   r   )abcr.   defrg   re   )r   re   rd   r   N)r	   r9   r   reshaper   r   r   r   r   r   r
   ry   )r&   r0   r1   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

        
   rg   r.   rT   rV   )r   N)r	   r   r   rQ   r   r7   r   )r&   r0   r1   r^   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   )r5   rg   N)r	   r   r   r,   r   r   )r&   r0   r1   r^   rI   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 ufuncrT   r   r   rg   r.   rf   r+   )sqrtloglog10exp	conjugateN)r
   r]   getattrr"   r#   fromnumericr   ninrQ   r   _mask)r&   df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)r`   rT   rV   r[   rp   r+   rV   r   r   )rT   rT   rV   rT   )weightsr.   )r   returnedrW   rg   r`   )r   r   rT   )r   r.   r.   r.   r.   r   )r.   r   r   r   r   r.   rf   g      @)r   r   r[   g      (@g
@)r`   rT   rV   r[   rW   rZ   )r   r   r.   r.   r   r   )r   r.   r.   r.   r.   r.   )r`   rT        X@r   rW   g      @rX   )r`   rT   r   r   rW   rZ   )r
   rQ   averager   r   r	   r9   addr   r    r   r   r   )r&   ottresultwtsw1w2r0   r1   rk   rl   r   m4m5zr'   r'   r(   test_99y  sT   
*$22

$ zModuleTester.test_99c                 C   s*   |  d}| j|dd< |ddd}d S )Nr   rs   rf   rg   re   rd   )r	   r   r   )r&   r0   r'   r'   r(   test_A  s   
zModuleTester.test_AN)r*   r*   T)r*   )__name__
__module____qualname__r)   rP   rQ   r9   errstater_   ro   r   r   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.   r   ztester.test_%i()r   z#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )timeit	functoolsr   numpyr9   r   numpy.core.fromnumericr$   r   numpy.testingr   r]   r   r   
setup_base	setup_curnrepeatnlooprangeifuncTimerr   curr   printevalr'   r'   r'   r(   <module>   s0       $
"