o
    Ô­j*=  ã                   @   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'   úV/var/www/html/CropPilot/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}
|
s¤t||g|d|j› d|j› d� |d	d
�}|
s¤J |ƒ‚|||ƒ}|	| jur·|r·| j||	d�}t|tƒrÂ|}
dg}n| ¡ }| ¡ }
| ¡ }|
sòdd| d¡ t|ƒ  }t||g|d|f  |d	d
�}|
sõJ |ƒ‚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Únameséd   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s�J ‚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s»J ‚g d¢}|  |¡}|  |¡}||u sÏJ ‚| j|dd�}||usÜJ ‚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sŽJ ‚|d dks–J ‚|d dksžJ ‚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 ¡sŠJ ‚|   d¡d }|   d¡d }| j|d< |d }|  ||¡s©J ‚|d }|  ||¡sµJ ‚|   d¡d }|   d¡d }| j|d< |d }|  ||d ¡sÖJ ‚||   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 }|  ||| ¡s…J ‚|  ||| ¡s�J ‚|  |j|  ||j¡¡s�J ‚| j dtd�}| j dtd�}| j|d< |j}| j dtd�}| j|d< ||9 }||9 }|  ||| ¡sÑJ ‚|  ||| ¡sÛJ ‚|  |j|  ||j¡¡séJ ‚| 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 sƒJ ‚|  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       $
"ó