U
    ?h"                     @   s   d dl Zd dlmZ d dlmZmZmZm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 d dlmZ d dlmZ G dd deejZG d	d
 d
ZG dd dZG dd dZdS )    N)assert_warns)assert_assert_equalassert_raisesassert_array_equal)masked_arraymasked_valuesmaskedallequalMaskTypegetmaskMaskedArraynomasklogaddhypotdividemr_)picklec                   @   s,   e Zd ZefddZdd Zedd ZdS )MMatrixc                 C   s   t |}tj| ||d}|S )N)datamask)npmatrixr   __new__)clsr   r   Zmat_data r   Z/var/www/html/venv/lib/python3.8/site-packages/numpy/matrixlib/tests/test_masked_matrix.pyr      s    
zMMatrix.__new__c                 C   s   t j| | t| | d S N)r   r   __array_finalize__r   )selfobjr   r   r   r!      s    zMMatrix.__array_finalize__c                 C   s   |  t}d|_|S )NF)viewr   Z_sharedmask)r"   Z_viewr   r   r   _series   s    
zMMatrix._seriesN)__name__
__module____qualname__r   r   r!   propertyr%   r   r   r   r   r      s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestMaskedMatrixc              	   C   s
  t dddgdddgg}t|dddgdddggd}t|dddgdddggd}t|}t| t| tt|d t|d k t|d |d k t|d tk t|d	 |d	  t|ddd f |ddd f  t|d d df |d d df  t|d d  |d d   t|dd  |dd   d
|d	< d
|d	< t|| d|ddd f< d|ddd f< t|| t|d< t|| t|ddd f< t|| |dd d f |dd d f< t|d< tt	t
|t dddgdddgg tdddgdddg|dd d f< tt	t
|d tdddg tt	t
|d tdddg tdddgdddg|dd d f< tt	t
|d tdddg tt	|d tdddg t t dd }t|d}t|| tt	tdddddgtd|j td|j d S )N            r   r   r+   r   )r+   r+   )r   r,   	   c   )r   r+            ?      @Zdtype)r   r   r   strreprr   typer	   r   r
   r   arrayaranger   r   r   Z
fill_value)r"   x1Zx2Zx3Zx4r   r   r   test_matrix_indexing    sP    ""



("  " 

z%TestMaskedMatrix.test_matrix_indexingc                 C   s   t tttddddddgd d}tdtjd D ]B}ttj||d}t	|j
|j
 t	|| tt|jtj q8d S )N
   r+   r   r,   r/   )protocol)r   r   r   listranger   HIGHEST_PROTOCOLloadsdumpsr   _maskr   
isinstancer   )r"   aprotoZ	a_pickledr   r   r   test_pickling_subbaseclassL   s    (
z+TestMaskedMatrix.test_pickling_subbaseclassc                 C   s   t tddgddggtdd}t|jddjd	 t|jddjd
 t|jddddgg t|jdddgdgg d S )Nr+   r,   r-   r.   )r,   r,   r/   r   )Zaxis)r+   r,   )r,   r+   g       @r5   g      ?g      @)r   r   r   Zzerosr   countshapeZmean)r"   mr   r   r   test_count_mean_with_matrixU   s
    $z,TestMaskedMatrix.test_count_mean_with_matrixc                 C   sx  t tdddggdddgd}t|jd d t|jd t tt|jdd |dddf k t tdddggdddgd}t dddgdddgd|_t tdddggdddgd}t|| t tdddggdddgd}|j}|dddg |d d < t|| d|d< t ttddd}|j}|d d }t|j	t
ddgg t|jt
d	d	gg d S )
Nr+   r,   r-   r   r/   r1   r4   g        F)r   r   r   r   Zflatr	   r   alleyer   r:   r   )r"   testcontrolZtestflatrG   bZb01r   r   r   	test_flat_   s$     (  
 
zTestMaskedMatrix.test_flatc                 C   s  t dddgdddgddd	gg}t |}t jd
ddgdddgd
d
dggt jd}t||d}|dk}|dk }t|   t|  t|dt ddd
g t|dt ddd
gj	 t|dt ddd
g t|dt d
d
d
gj	 t|   t|  t|dt d
d
dg t|dt dddgj	 t|dt d
d
dg t|dt d
d
dgj	 d S )Ngp=
ף?gp=
ף?g?gQ?gQ?g)\(?gףp=
?gףp=
?gffffff?TFr6   r/   g      ?r   r+   )
r   r:   r   Zbool_r   r   rN   anyr   T)r"   xXrL   ZmXZmXbigZmXsmallr   r   r   test_allany_onmatricesx   s4    
z'TestMaskedMatrix.test_allany_onmatricesc                 C   sj   t tddddgddddgd}| }t|| tt|tj t|d< | }t|dddgg d S )Nr+   r,   r-   r.   r   r/   )r   r   )r   r   r   
compressedr   r   rF   r	   )r"   rG   rR   r   r   r   test_compressed   s    "
z TestMaskedMatrix.test_compressedc                 C   sP   t tdddddgdddddggd}| }t|jd t|jj|j d S )	Nr+   r,   r-   r.   r3   r   r/   )r+   r3   )r   r   r   Zravelr   rK   rE   )r"   rG   Zaravelr   r   r   
test_ravel   s    (zTestMaskedMatrix.test_ravelc                 C   s   t ttdtjd}t|}t|dtfdtfgd}d|j	d< |
tdftj}t|| tt|tj tt|t  d S )Nr>   rG   rR   r6   r0   r   r,   )r@   zipr   r;   randomZrandr:   r   floatr   r$   r   r   r   rF   r   )r"   iteratorr   rG   rP   r   r   r   	test_view   s    


zTestMaskedMatrix.test_viewN)r&   r'   r(   r=   rI   rM   rS   rX   rZ   r[   r`   r   r   r   r   r*      s   ,	
	r*   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSubclassingc                 C   s2   t jddd}t|dddddgd}||f| _d S )Nr3   r^   r6   r   r+   r/   )r   r;   r   r   r"   rV   mxr   r   r   setup_method   s    zTestSubclassing.setup_methodc                 C   s    | j \}}tt|jtj d S r    )r   r   rF   r   r   r   rb   r   r   r   test_maskedarray_subclassing   s    
z,TestSubclassing.test_maskedarray_subclassingc              	   C   sL   | j \}}tjdd, ttt|t tt|t| W 5 Q R X d S )Nignore)r   )r   r   Zerrstater   rF   r   r   r   rb   r   r   r   test_masked_unary_operations   s    
z,TestSubclassing.test_masked_unary_operationsc              	   C   s   | j \}}ttt||t ttt||t tt||||  ttt||jtj t	t
 ttt||t W 5 Q R X ttt||t ttt||t d S r    )r   r   rF   r   r   r   r   r   r   r   DeprecationWarningouterr   rb   r   r   r   test_masked_binary_operations   s    

 z-TestSubclassing.test_masked_binary_operationsc                 C   s`   | j \}}t|j  |jd}ttt||t ttt||t tt||t|| d S )Nr/   )	r   r   Z	__array__r   r   rF   r   r   r   )r"   rV   rc   Zxmxr   r   r   test_masked_binary_operations2   s
    
z.TestSubclassing.test_masked_binary_operations2N)r&   r'   r(   rd   re   rg   rj   rk   r   r   r   r   ra      s
   ra   c                   @   s   e Zd Zdd Zdd ZdS )TestConcatenatorc                 C   s   t tjjdd  d S )Nc                   S   s   t d S )Nz
1, 2; 3, 4r   r   r   r   r   <lambda>       z6TestConcatenator.test_matrix_builder.<locals>.<lambda>)r   r   maZMAError)r"   r   r   r   test_matrix_builder   s    z$TestConcatenator.test_matrix_builderc                 C   sP   t d }tjtjd }t|| tt|t| tt|jt|j d S )N)rr+   r,   r-   )	r   r   ro   r:   Zr_r   r   r9   r   )r"   actualexpectedr   r   r   test_matrix   s
    
zTestConcatenator.test_matrixN)r&   r'   r(   rp   rt   r   r   r   r   rl      s   rl   )numpyr   Znumpy.testingr   Znumpy.ma.testutilsr   r   r   r   Znumpy.ma.corer   r   r	   r
   r   r   r   r   r   r   r   r   Znumpy.ma.extrasr   Znumpy.compatr   r   r   r*   ra   rl   r   r   r   r   <module>   s   8 *