U
    #c1                    @   sZ  d Z dZddlZddlZddlZddlZddlZddlZddlm	Z	 ddl
ZddlZ
ddlm  mZ ddlm  mZ ddlmZmZmZmZ ddlmZ ddl
mZ ddlmZ dd	lmZmZmZm Z 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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ejZe Zee
jjjd dd dD Zdd eD ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd  d ZG d!d" d"ZG d#d$ d$ZG d%d& d&ZG d'd( d(ZG d)d* d*ZG d+d, d,ZG d-d. d.ZG d/d0 d0Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZejjdAeedBejjdCeedBejdDdEdF ZdGdH ZdIdJ ZejjejjdKkdLdMdNdO ZdS )PznTests suite for MaskedArray & subclassing.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu
zPierre GF Gerard-Marchant    N)reduce)assert_raisesassert_warnssuppress_warningsIS_WASM)requires_memory)ndarray)asbytes)assert_assert_array_equalassert_equalassert_almost_equalassert_equal_recordsfail_if_equalassert_not_equalassert_mask_equal)iMAError	MaskErrorMaskTypeMaskedArrayabsabsoluteaddallallcloseallequalalltrueangleanomarangearccosarccosharctan2arcsinarctanargsortarrayasarraychooseconcatenate	conjugatecoscoshcountdefault_fill_valuediagdividedoc_noteempty
empty_likeequalexpflatten_maskfilledfix_invalidflatten_structured_arrayfromflexgetmaskgetmaskarraygreatergreater_equalidentityinnerisMaskedArrayless
less_equalloglog10	make_maskmake_mask_descrmask_ormaskedmasked_arraymasked_equalmasked_greatermasked_greater_equalmasked_insidemasked_lessmasked_less_equalmasked_not_equalmasked_outsidemasked_print_optionmasked_valuesmasked_wheremaxmaximummaximum_fill_valueminminimumminimum_fill_valuemodmultiplymvoidnomask	not_equalones	ones_likeouterpowerproductputputmaskravelrepeatreshaperesizeshapesinsinhsometruesortsqrtsubtractsumtaketantanh	transposewherezeros
zeros_like)picklezGsetting an item on a masked array which has a shared mask will not copyc                 C   s   g | ]}t |qS  )npdtype.0Zdt_r|   r|   </tmp/pip-unpacked-wheel-b2rbor69/numpy/ma/tests/test_core.py
<listcomp>?   s     r   z?bhilqBHILQefdgFDc                 C   s   g | ]
}|j qS r|   )charr   r|   r|   r   r   @   s     c                   @   s  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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#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zed/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIdJ Z(dKdL Z)dMdN Z*dOdP Z+dQdR Z,edSdT Z-dUdV Z.dWdX Z/dYdZ Z0d[d\ Z1d]d^ Z2d_d` Z3dadb Z4dcdd Z5dedf Z6dgdh Z7didj Z8dkdl Z9dmdn Z:dodp Z;dqdr Z<dsS )tTestMaskedArrayc                 C   s   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dg}ddddddddddddg}t||d}t||d}t dd	ddg}t|ddddgd}	t |d|}
|d |||||||||	|
f
| _d S )N      ?              @      @      @      $      $@      @                       r   mask            ?皙?@xD)r}   r&   pirJ   rx   set_fill_valuedselfxya10m1m2xmymzzmxfr|   r|   r   setup_methodF   s    &"
zTestMaskedArray.setup_methodc                 C   sr   t dddg}t dddgdddgd}t|jd t|jd t|jd t|jd t|jd t|jd d S )Nr         r   r   r   )r&   r   ndimsizerl   r   abr|   r|   r   test_basicattributesU   s    z$TestMaskedArray.test_basicattributesc                 C   st   t d}tt|d t ddd}tt|tt t ddd}tt|d tddd}t| j|jjk d S )Nr   0Tr   Fr   )	rJ   r   strrS   r&   r
   r7   r~   _datar   r   r|   r|   r   test_basic0d`   s    zTestMaskedArray.test_basic0dc              
   C   s   | j \
}}}}}}}}}	}
tt|  tt| t|| d  t|jt|jt |j	}t
t	|| t
|j	| t
|j|j t
|	j|j t
|jtdd | t
t|t|tdd |  t||
 tt|d|
 t|| d S )Nr   c                 S   s   | | S Nr|   r   r   r|   r|   r   <lambda>w       z.TestMaskedArray.test_basic1d.<locals>.<lambda>c                 S   s   | | S r   r|   r   r|   r|   r   r   x   r   r   )r   r
   rA   r7   anyr   r   astypeintrl   r   r}   r~   r   r   r-   lenr   r   r   r   r   r   r   r   r   r   r   r   sr|   r|   r   test_basic1dk   s     
zTestMaskedArray.test_basic1dc              
   C   s   | j \
}}}}}}}}}	}
dD ]}||_||_||_||_||
_tt|  tt| tt|| t|j| t|jtdd | tt|t|tdd |  t||
 tt	|d|
 t|| qd S )N)   r   )   r   c                 S   s   | | S r   r|   r   r|   r|   r   r      r   z.TestMaskedArray.test_basic2d.<locals>.<lambda>c                 S   s   | | S r   r|   r   r|   r|   r   r      r   r   )
r   rl   r
   rA   r   r   r   r-   r   r7   r   r|   r|   r   test_basic2d}   s      
zTestMaskedArray.test_basic2dc              
   C   s   | j \
}}}}}}}}}	}
tt||ft||f tt||ft||f tt||ft||f tt|||ft|||f d S r   )r   r   r}   r)   r   r|   r|   r   test_concatenate_basic   s
    z&TestMaskedArray.test_concatenate_basicc              
   C   s"  | j \
}}}}}}}}}	}
d}| |_ |_ |_|_t|jt|| t|jt|| t||fd}tt||fd| tt|j|jfd|j td}t	t
dddgd}t||f}t|ddddg t|jddddg t||f}t|ddddg t|jddddg d S )Nr   r   r   r   FTr   r   )r   rl   r   r   r}   rj   r)   _maskry   r&   ra   r   )r   r   r   r   r   r   r   r   r   r   r   r   Zxmymr|   r|   r   test_concatenate_alongaxis   s     z*TestMaskedArray.test_concatenate_alongaxisc                 C   sZ   t tttjdtddtfdtfgd}t	|d d |dd  g}t
|| d S )N
   r   r   r~      )rJ   listzipr}   randomrandr   floatr   r)   r   )r   datatestr|   r|   r   test_concatenate_flexible   s    z)TestMaskedArray.test_concatenate_flexiblec                 C   sR   t dddgdddgdd}t|jd t|jdddgg t|jdddgg d S )Nr   r   r   r   )r   ndminr   r   )r&   r   rl   r   r   r   r|   r|   r   test_creation_ndmin   s    z#TestMaskedArray.test_creation_ndminc                 C   sH   t dddg}t|d< t |dtd}t|j|jj t|j|jj d S )Nr   r   r   )r   r~   )r&   rI   r   r   rl   r   r   r   xxr|   r|   r   $test_creation_ndmin_from_maskedarray   s
    z4TestMaskedArray.test_creation_ndmin_from_maskedarrayc                 C   s  t dtd}t|dddg< t|}t|j|j t|}t|j|j t|ddddgd d}t|j|j tdd	dgd
d}t|jd
d
d
g tdd	dgdd}t|jdddg tdd	dg|jdd}t	t
|j|j tdd	dg|jd
d}t	t
|j|j  d S )N   r   r   r      r   r   r   r   TFr   copy)r   r   rI   r   r   r   r   r&   r   r
   r}   may_share_memory)r   r   Zdma_1Zdma_2Zdma_3r   r   r|   r|   r   test_creation_maskcreation   s     z*TestMaskedArray.test_creation_maskcreationc              	   C   s:   t t jj tt t dt jjg W 5 Q R X d S )Nr   )r}   r&   marI   pytestwarnsUserWarningr   r|   r|   r   *test_masked_singleton_array_creation_warns   s    z:TestMaskedArray.test_masked_singleton_array_creation_warnsc                 C   s   t tddddddgd}t ||d d d f}t|dddddgdddddgg t|jdddddgdddddgg t|_t ||d d d f}t|dddddgdddddgg t|jtk d S )	Nr   r   r   r   r   r   r   r   )r&   r}   r   r   r   r_   r   r
   )r   r   r   r|   r|   r   'test_creation_with_list_of_maskedarrays   s    "$"z7TestMaskedArray.test_creation_with_list_of_maskedarraysc              	   C   s   t jjddgddgd}t d}t jj||gdd}t|jddgddgg G d	d
 d
}t jj| dgddgd}tjt	dd t j|gt
d W 5 Q R X t j||g}t|jddgddgg d S )Nr   r   TFr   r   ZU21r   c                   @   s   e Zd Zdd ZdS )zUTestMaskedArray.test_creation_with_list_of_maskedarrays_no_bool_cast.<locals>.NotBoolc                 S   s   t dd S )Nnot a bool!)
ValueErrorr   r|   r|   r   __bool__   s    z^TestMaskedArray.test_creation_with_list_of_maskedarrays_no_bool_cast.<locals>.NotBool.__bool__N)__name__
__module____qualname__r   r|   r|   r|   r   NotBool   s   r   r   match)r}   r   rJ   r   r'   r   r   r   raisesr   bool)r   Z
masked_strZ
normal_intresr   Z
masked_objr|   r|   r   4test_creation_with_list_of_maskedarrays_no_bool_cast   s    
zDTestMaskedArray.test_creation_with_list_of_maskedarrays_no_bool_castc                 C   s0   t jdgddgddgddgdd	}t| d S )
N)Ar   f0f1ZS4i8r      )namesformatsoffsetsr   )r}   r&   r   r|   r|   r   'test_creation_from_ndarray_with_padding  s
    
z7TestMaskedArray.test_creation_from_ndarray_with_paddingc              	   C   s6   t jtdd tdddgdddgd W 5 Q R X d S )Nzunexpected keyword argumentr   r   r   r   r   )Zmaks)r   r   	TypeErrorr   r   r|   r|   r   test_unknown_keyword_parameter  s    z.TestMaskedArray.test_unknown_keyword_parameterc              
   C   sj   | j \
}}}}}}}}}	}
d|_d|_t|}t|j|j t|j|j t|j|j t|j|j d S )NT)r   
fill_value	_hardmaskr'   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   Zxmmr|   r|   r   test_asarray  s    zTestMaskedArray.test_asarrayc                 C   s2   t dj}t|jj  t|}t|jj d S )Nr   r}   eyeTr
   flagsc_contiguousr'   r   mZnew_mr|   r|   r   test_asarray_default_order  s    z*TestMaskedArray.test_asarray_default_orderc                 C   s6   t dj}t|jj  t|dd}t|jj d S )Nr   Corderr  r  r|   r|   r   test_asarray_enforce_order"  s    z*TestMaskedArray.test_asarray_enforce_orderc              	   C   sd   t jddN tt jddgdddgd}t|}t|j|jddg t|jdddg W 5 Q R X d S )Nignoreinvalidr   r   r   r   r   )	r}   errstaterJ   nanr8   r   r   r   r   )r   r   Z
data_fixedr|   r|   r   test_fix_invalid*  s
    z TestMaskedArray.test_fix_invalidc                 C   sH   t d}t|d< tttdk t|d tk tt|d dd d S )Nr   r   --r   )r   rI   r
   r   r   r7   r   r|   r|   r   test_maskedelement2  s
    z"TestMaskedArray.test_maskedelementc                 C   sd   t dtd}d}||d< t|d | t|d |k dd l}|j }||d< t|d |k d S )Nr   r   )r   r   r   r   r   r   )r2   objectr   r
   datetimenow)r   r   r   r  dtr|   r|   r   test_set_element_as_object:  s    
z*TestMaskedArray.test_set_element_as_objectc                 C   s  t ddddg}t|ddddgd}t|ddddgd}t|}t| t| tt |t|dd tt|d t|d k t|d |d k t|d tk t|d |d  t|dd	 |dd	  t|d d  |d d   t|dd  |dd   d
|d< d
|d< t|| d|dd< d|dd< t|| t|d< t|| t|dd< t|| ||d d < t|d< tt	t
|tddddg tddddgddddg|d d < tt	t
|tddddg tddddgddddg|d d < tt	t
|tddddg tt	|tddddg t d	d }t|d}t|| tt	tdddddgt|j td|j tddddgt}t ddddgt}|d }|d }tt|t tt|t t|| t|dd jdk d S )Nr   r   r   r   r   r   Fendwithr   	   c   r   r   Zhellor   )r}   r&   r   reprr   rp   r
   typerI   r   r;   rJ   r   rT   r   r   r   r  rl   )r   x1Zx2Zx3x4s1s2r|   r|   r   test_indexingG  sZ    



""

 
zTestMaskedArray.test_indexingc              
   C   s:  dddddg}t |}t |}t||k t |dd}t||k	 td}t||d}t|jj|j tt||j	 t|j
j|j t|}t|jj|jjk t|j
j|j
jk t||d}t|jj|jk t|j
j|jk t|d tk d|d< t|d tk	 t|j
j|jk tt|jd t||dd	}	t|	jj|jk t|	j
j|jk t|	d tk d|	d< t|	d tk	 t|	j
j|jk tt|	jd t|d
 |d}
tt|
j|d
 jk td}t|d< t|d}tt||g| tt|ddddddddg t|ddd}t|ddddddddg t|ddd}t|| |jddd}t|| |dd}t|| | }t|j|j t|j
|j
 tdddgdddgd}t|}t|jjj	|jjj	 t|j
jj	|j
jj	 t|dd}t|jjj	|jjj	 t|j
jj	|j
jj	 d S )Nr   r   Tr   r   r   r   r  r   r   r   )r   )r   r   r   r   axisr   )rF   r
   r}   r   r&   r   r   Z__array_interface__r   r   r   rI   r   r7   r~   rk   r)   r;   ri   r   rJ   ctypesr   )r   nr	  r   Zm3r#  y1Zy1ay2Zy2aZy3r$  Zy4Zy5Zy6Zy7Zy8Zy9r   r   r|   r|   r   	test_copyy  sv    




zTestMaskedArray.test_copyc                 C   s(   t jjddd}| }t|jd d S )N+   Tr   )r}   r   r&   r   r   r   )r   r   Zxcr|   r|   r   test_copy_0d  s    zTestMaskedArray.test_copy_0dc                 C   s2   t ttjdddg t ttjd d S )Nr   r   r   )r   r   r   )r
   rA   r}   r   r   r   r|   r|   r   test_copy_on_python_builtins  s    z,TestMaskedArray.test_copy_on_python_builtinsc                 C   sF   t jdddg}t jdddg}|j}|j t| dddg d S )Nr   r   r   r   r   r   )r}   r   r&   r   r   )r   r   r   Za_copy_methodr|   r|   r   test_copy_immutable  s
    z#TestMaskedArray.test_copy_immutablec                 C   s   ddl m} tdddgdddgd}||}t|j|j tt|jt|j d|d< t|jdddg t|jdddg ||}t|j|j d|jd< t|jdddg t|jdddg d S )Nr   )deepcopyr   r   FTr   )r   r4  r&   r   r   r   idr   )r   r4  r   copiedr|   r|   r   test_deepcopy  s    
zTestMaskedArray.test_deepcopyc              	   C   sp   t dddgdddgd}tt|d tttd tttd	d tt ttd
}W 5 Q R X t|d d S )Nr   r   r   FTr   [0 -- 2]r   z >5)r&   r   formatrI   r   FutureWarning)r   r   Zwith_format_stringr|   r|   r   test_format  s    
zTestMaskedArray.test_formatc                 C   s  t dddgdddgd}tt|d tt|td tjd	}tjj	|dd
< tt|td tjd}tt|td t dddgdddggtj
d}tjj	|d< tt|td tt|d d td tt|ttd d S )Nr   r   r   FTr   r8  z            masked_array(data=[0, --, 2],
                         mask=[False,  True, False],
                   fill_value=999999)  2   z            masked_array(data=[0, --, --, ..., 1997, 1998, 1999],
                         mask=[False,  True,  True, ..., False, False, False],
                   fill_value=999999)   z            masked_array(data=[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13,
                               14, 15, 16, 17, 18, 19],
                         mask=False,
                   fill_value=999999)r   r   r   r   r   r   r   z            masked_array(
              data=[[1, 2, 3],
                    [4, --, 6]],
              mask=[[False, False, False],
                    [False,  True, False]],
              fill_value=999999,
              dtype=int8)z            masked_array(data=[[1, 2, 3]],
                         mask=[[False, False, False]],
                   fill_value=999999,
                        dtype=int8)z            masked_array(
              data=[[1, 2, 3],
                    [4, --, 6]],
              mask=[[False, False, False],
                    [False,  True, False]],
              fill_value=999999))r&   r   r   r!  textwrapdedentr}   r   r   rI   int8r   r   r   r   r|   r|   r   test_str_repr  s>    		

zTestMaskedArray.test_str_reprc              	   C   s   t  }t jdd zbtdddgdddgd}tt|d	 tt|d
 t jd}t jj	|dd< tt|d W 5 t jf | X d S )Nz1.13)legacyr   r   r   FTr   r8  zcmasked_array(data = [0 -- 2],
             mask = [False  True False],
       fill_value = 999999)
r=  r>  zmasked_array(data = [0 -- -- ..., 1997 1998 1999],
             mask = [False  True  True ..., False False False],
       fill_value = 999999)
)
r}   Zget_printoptionsZset_printoptionsr&   r   r   r!  r   r   rI   )r   Zoldoptsr   r|   r|   r   test_str_repr_legacy;  s    z$TestMaskedArray.test_str_repr_legacyc                 C   sH   d}t |}tj|}tjj|dd}t||| t||d d S )Nu   caféTr   r  )r"  r}   r   r&   r   )r   uZutypeZ
arr_nomaskZ
arr_maskedr|   r|   r   test_0d_unicodeP  s    zTestMaskedArray.test_0d_unicodec                 C   s   t tttfD ]}td|}d|_ddddddddddg
ddf}tdtj	d D ]z}|D ]p}||_
ttj||d}t|j|j t|j|j |tt fkrt|jd nt|j|d t|j
| qZqRqd S )	Nr     r   r   TFr   protocol)r   r   r   r  r   r   r   ranger{   HIGHEST_PROTOCOLr   loadsdumpsr   r   r   r   )r   r~   r   masksprotor   	a_pickledr|   r|   r   test_picklingZ  s"    zTestMaskedArray.test_picklingc                 C   s   t jddgdtfdtfgdt j}t|ddgd}td	tj	d
 D ]B}t
tj||d}t|j|j t|| tt|jt j qFd S )N)r   r   )r   r   r   r   r   TFFTr   r   r   rK  )r}   r&   r   r   viewrecarrayrJ   rM  r{   rN  rO  rP  r   r   r
   
isinstancer   )r   r   r   rR  rS  r|   r|   r   test_pickling_subbaseclassp  s    

z*TestMaskedArray.test_pickling_subbaseclassc                 C   s`   t jj}tdtjd D ]B}ttj||d}t|j	|j	 t|j
|j
 t|j|j qd S )Nr   r   rK  )r}   r   rI   rM  r{   rN  rO  rP  r   Z
_baseclassr   r   )r   ZmcrR  Z
mc_pickledr|   r|   r   test_pickling_maskedconstant{  s    z,TestMaskedArray.test_pickling_maskedconstantc                 C   sh   t ddgddgdtfdtfgd}tdtjd	 D ]0}ttj||d
}t|j	|j	 t|| q2d S )Nr   r   r   r   r   r   r   r   r   r   r   r~   r   r   rK  )
r&   r   r   rM  r{   rN  rO  rP  r   r   )r   r   rR  rS  r|   r|   r   test_pickling_wstructured  s    z)TestMaskedArray.test_pickling_wstructuredc                 C   sL   t d}d|_|j}tdtjd D ]"}ttj||d}t|| q$d S )Nr   )r   r   r   r   rK  )	r   rl   r  rM  r{   rN  rO  rP  r   )r   r   r   rR  r   r|   r|   r   test_pickling_keepalignment  s    z+TestMaskedArray.test_pickling_keepalignmentc                 C   sZ   t dddg}t dddgdddgd}t|d jd t|d jd t|d jd d S )Nr   r   r   r   r   r|   )r&   r   rl   r   r|   r|   r   test_single_element_subscript  s
    z-TestMaskedArray.test_single_element_subscriptc              	      s(  t dttd t dttd t dttdggg t dttdgg ttttddg t }|td t	t
ttdgdgd tdddgdddgd tt fdd	 t t d
 d t	t
t d  W 5 Q R X ttt  t t d
 d tt fdd	 d S )Nr   r   z$Warning: converting a masked elementr   r   r   r   c                      s   t  S r   )r   r|   r   r|   r   r     r   z/TestMaskedArray.test_topython.<locals>.<lambda>r   r   c                      s   t  d S Nr   )r   r|   rd  r|   r   r     r   )r   r   r&   r   r   r   r   filterr   r
   r}   isnanr   )r   supr|   rd  r   test_topython  s     zTestMaskedArray.test_topythonc                 C   sV  t d}|dd}d|jd< t|d dk |d|  }t|j| t|jd|  t|t| jd| |  d	|jd
< t d}t|d< tt	|d t	tk |dk}tt
t|ttdk ttt|tt|jk t||}t|j|jk t|d tk t|d tk	 t|d tk	 t|d tk t|d tk t|| d S )Nr?  r   r      r   r   y              $@r   e   r   .r   r   r      r  )r   rj   flatr
   r   realimagr*   rI   r   r-   rx   rl   rU   r~   )r   r   r   cr|   r|   r   test_oddfeatures_1  s.    


z"TestMaskedArray.test_oddfeatures_1c                 C   s   t dddddg}t dddddg}t|d< t||| }t|ddd	d
dg t|d< t||| }t|ddd	d
dg t|d tk t|d tk	 t|d tk d S )Nr   r   r   r   r   r   r   r   r   r   )r&   rI   rx   r   r
   r   r   rq  r   r|   r|   r   test_oddfeatures_2  s    z"TestMaskedArray.test_oddfeatures_2c                 C   s:   t dgdd}t dg}|j}|| ||< t|dg d S )Nr   Tr   r?  )r&   r   r   )r   atestbtestidxr|   r|   r   test_oddfeatures_3  s
    
z"TestMaskedArray.test_oddfeatures_3c                 C   s(   t jjddd}t|dd d d S )Nr   Or   r   r   )r}   r   
masked_allr   r7   rD  r|   r|   r   test_filled_with_object_dtype  s    z-TestMaskedArray.test_filled_with_object_dtypec                 C   s|   t dgdtfddtfgd}t|d< t| tj tdtdtdfg|jd t|d< t|d	tj d
g|jd d S )Nr   r   r   ir   |S8fr   r   r   r   r   )r   1r   )	r&   r   r   rI   r   r7   r}   r.   r~   )r   Zflexir|   r|   r   test_filled_with_flexible_dtype  s     

z/TestMaskedArray.test_filled_with_flexible_dtypec                 C   sr   dt fdtfg}tddg|d}| }tt|dtdf |d}tt|d	 d
|_tt| d d S )Nr   r   r   r   r_  r`  r   r   r   r   )r   r   r  )r   r  )r   r   r^   r7   r   tupler.   r   )r   ndtyper   r   r|   r|   r   test_filled_with_mvoid  s    
z&TestMaskedArray.test_filled_with_mvoidc                 C   s   dt fddt fdt fgfg}tddgddg|d	}|d
}tjddg|d}t|| |d d
}tjddg|d jd}t|| tjdtdg}t|j	jtdddgdfg t|j
jtdddgdfg d S )Nr   BBABBr   r@  r   r   r   r   rk  r   r_  r`  r   r   r_  )r   r   r   r   r_  r  r   )r   z(2,2)i1,(2,2)i1r  )r   i1r  )r   r  r  r  )r   ?r  )r   r  r  )r   r&   r7   r}   r   r~   numpyr   ry   r   r   )r   r  r   r   controlZr|   r|   r   test_filled_with_nested_dtype  s,     



z-TestMaskedArray.test_filled_with_nested_dtypec                 C   sP   t tj ddgddtj ddgdddd}t|jd  t|d	jd  d S )
N)r   r   r   )r   r   r   Fr  )r   r   r   )r   r   r   )r   r  ZF_CONTIGUOUSr   )r&   r}   r
   r  r7   rD  r|   r|   r   test_filled_with_f_order  s    z(TestMaskedArray.test_filled_with_f_orderc                 C   sR   t dddgtd}d|jd< | }t|jd d d|jd< t|jd d d S )Nr   r   r   r   ???infoz!!!)r&   r   _optinfor   r   r   r   r   r|   r|   r   test_optinfo_propagation   s    

z(TestMaskedArray.test_optinfo_propagationc                 C   s  t ddddg}d|jd< t|jd |dkjd  t|jd |dkjd  t|jd |dkjd  t|jd |dkjd  t|jd |dkjd  t|jd |d jd  t|jd |d jd  t|jd |d jd  t|jd |d jd  t|jd |d d jd  t|jd |dddg jd  t|jd t|jd  t|jd t|jd  t|jd t |ddjd  t|jd t|jd  d S )	Nr   r   r   valuekeyr   Tr(  )r&   r  r   r}   r5   r   rz   rD  r|   r|   r    test_optinfo_forward_propagation)  s"    
 z0TestMaskedArray.test_optinfo_forward_propagationc                 C   s   t dtfddtfdtfgfg}tddgddg|d	}d
}tt|| tddddgdddggdfddddgdddggdfdd}d}tt|| d S )Nr   r   tr   )r   )r   r   )r   )r         @r  r  r`  z[(--, (2, --)) (4, (--, 6.0))]r   r   FTint, (2,3)float, floatr   r   r~   z)(0, [[--, 0.0, --], [0.0, 0.0, --]], 0.0))r}   r~   r   r   r&   r   r   rJ   )r   Z
fancydtyper   r  Zt_2d0r|   r|   r   test_fancy_printoptions<  s*    "
z'TestMaskedArray.test_fancy_printoptionsc                 C   s  dt fdtfg}tjddg|d}t|}tjddgddggtd}t|| t|j|j tddgdd	g|d
}t|}tddgddggddgddggtd
}t|| t|j|j t|j|j dt fddt fdtfgfg}tddgddg|d
}t|}tdddgdddggdddgdddggtd
}t|| t|j|j t|j|j dt fdtfg}tjdgdgg|d}t|}tjddggddgggtd}t|| t|j|j d S )Nr   r   r@  r  r   r   r   r_  rk  r`  r   r   babb)r   )r   皙?)r   )r   皙@r  r  r  r  )r   r   r}   r&   r9   r   r~   r   )r   r  r   r   r  r|   r|   r   test_flatten_structured_arrayP  sD    
 
  

z-TestMaskedArray.test_flatten_structured_arrayc                 C   s   dt fdt fg}tjdg|dd }t|}tt|t tdgdg|dd }tt|t tddgddg|d}t|jd |jd }tt|t d S )	Nr   r   r   r   r   r   rk  r`  r^  )	r   r}   r&   r^   r
   rY  rJ   r   r   )r   r  r   r  r|   r|   r   test_void0ds  s    zTestMaskedArray.test_void0dc                 C   s  dt fdt fg}tddgddg|d}|d }tt|t t|d |d fd	 t|d d
 |d }tt|t t|d tk t|d tk t|d d tddgfgddgfgdgd}t|d d |d d  t|d d tddgddgdd d S )Nr   r   r  r   r^  rk  r`  r   r@  r   r   r   TF)r   >i2r   r  r   r  )r   rJ   r
   rY  r^   r   rI   )r   r  r   r  r   r|   r|   r   test_mvoid_getitem  s,    
 z"TestMaskedArray.test_mvoid_getitemc                 C   sV   dt fdt fg}tddgddg|d}tt|d d	d
g tt|d	 tdg d S )Nr   r   r  r   r^  rk  r`  r   r   r   r   )r   rJ   r   r   rI   )r   r  r   r|   r|   r   test_mvoid_iter  s    zTestMaskedArray.test_mvoid_iterc              	   C   s   t ddgdtfdtfgd}tt|d d t|d d< tj}td z(tt|d d	 tt|d d	 W 5 t| X t d
dgdgd}tt|d d d S )Nr@  r  r   r   r   r   z(1, 1)z-X-z(1, -X-)r   r  )r   rz  z(1,))	r&   r   r   r   rI   rS   _displayZset_displayr!  )r   mxZini_displayr|   r|   r   test_mvoid_print  s    
z TestMaskedArray.test_mvoid_printc                 C   s  t dddgfgdddgfgdddgfdgd}tt|d	 d
k tt|d	 d
k t ddgddggfgddgddggfgdgd}tt|d	 dk tt|d	 dk t dgdgddgd}tt|d	 dk tt|d	 dk t ddgddggdfgddgddggdfgddtfgd}tt|d	 dk tt|d	 dk t dgdgddgd}tt|d	 dk tt|d	 dk d S )Nr   r   r   FT?B )r   <i4r   )r   r   r   r~   r   z([1, --, 3],)r   )r   r  r  r  z([[1, --], [--, 4]],)r  rU  )r   r  )r   r  z(--, 2)r   z([[1, --], [--, 4]], 1.0)r  )TrU  )r   i4,i4z(--, (--, 1)))rJ   r
   r   r!  r   )r   Zt_maZt_2dZt_0dZt_ner|   r|   r   test_mvoid_multidim_print  s>    

z)TestMaskedArray.test_mvoid_multidim_printc                 C   s   t dgdgd}t ddg}t ||gddgtd}t|d |k t|d |k	 tt|d j|jk tt|d j d	|d jd< t|d d	k d S )
Nr   Tr   r   Fr`  r   r   r   )rJ   r  r
   r}   r   r   r   )r   Zmx1Zmx2r  r|   r|   r   test_object_with_array  s    z&TestMaskedArray.test_object_with_arrayN)=r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r  r  r'   suppress_copy_mask_on_assignmentr/  r1  r2  r3  r7  r<  rE  rG  rI  rT  rZ  r[  ra  rb  rc  ri  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r|   r|   r|   r   r   C   sv   		
2
HF
			
	#
$r   c                
   @   s  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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#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#e$j%&dCdDdEge$j%&dFdGdHgdIdJ Z'e$j%&dCdDdEge$j%&dFdGdHgdKdL Z(e$j%j&dMe)e*dNe$j%j&dOe)e*dNe$j%&dFdGdPgdQdR Z+e$j%j&dMe)e*dNe$j%j&dOe)e*dNe$j%&dFdGdPgdSdT Z,e$j%j&dMe)e*dNe$j%j&dOe)e*dNe$j%&dFdGdPge$j%&dUe-j.e-j/e-j0e-j1gdVdW Z2e$j%&dUe-j.e-j/e-j0e-j1ge$j%&dFdGdXgdYdZ Z3d[d\ Z4d]d^ Z5d_d` Z6dadb Z7dGS )cTestMaskedArrayArithmeticc                 C   s  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dg}ddddddddddddg}t||d}t||d}t dd	ddg}t|ddddgd}	t |d|}
|d |||||||||	|
f
| _t  | _t j	ddd d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r0   r  )
r}   r&   r   rJ   rx   r   r   geterr
err_statusseterrr   r|   r|   r   r     s    &"

z&TestMaskedArrayArithmetic.setup_methodc                 C   s   t jf | j d S r   r}   r  r  r   r|   r|   r   teardown_method  s    z)TestMaskedArrayArithmetic.teardown_methodc              
   C   s@  | j \
}}}}}}}}}	}
tddgddgg}t|ddgddgg}t|| ||  t|| ||  t|| ||  dD ]}||}||}||}||}|
|}
t| |  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|| ||  t|d |d  tt|d t|d  t|| ||  tt||t|| tt||t|| tt	||t	|| tt
||t
|| q~d S )Nr   r   r   r   ))rj  r   )r   r         @)r   r&   rJ   r   rj   r   r}   r   rr   r]   r0   )r   r   r   r   r   r   r   r   r   r   r   Za2dZa2dmr   r|   r|   r   test_basic_arithmetic  s@    





z/TestMaskedArrayArithmetic.test_basic_arithmeticc                 C   s   t dtd}d|_t dtd}|| }t|dddgdddgg t|jd	d
d
gd	d
d
gg ||d d d f  }t|dddgdddgg t|jd	d
d
gd	d
d
gg t dtd}||d d d f  }t|dddgdddgg t|jd	d	d	gd
d
d
gg d S )Nr   r   r   r   r   r   r   r   r  r   r   r   r   r   )r   r   rl   r   r   r   r   r   r   r|   r|   r   test_divide_on_different_shapes   s    z9TestMaskedArrayArithmetic.test_divide_on_different_shapesc                 C   s>   t dg}tdg}tt|| t tt|| t d S Nr   )r}   r&   r
   rY  r   )r   nar   r|   r|   r   test_mixed_arithmetic2  s    
z/TestMaskedArrayArithmetic.test_mixed_arithmeticc                 C   sR   t tj}t|d| dg}tt|d dddg ttd| dddg d S )Nr   r   r   r   r   )r}   finfor   tinyr&   r   r<   )r   r  r   r|   r|   r   test_limits_arithmetic9  s    z0TestMaskedArrayArithmetic.test_limits_arithmeticc                 C   s\   t ddd}tdt d j td| j t| j tt||j tt||j d S )Nr   r   r   )r&   r
   r   rW   rZ   )r   r   r|   r|   r    test_masked_singleton_arithmetic?  s    z:TestMaskedArrayArithmetic.test_masked_singleton_arithmeticc                 C   sh   t dddgdddgd}t|d dktk t|d dktk t|d dkd t|d dkd d S )	Nr   r   r   r   r   r   FT)r&   r
   rI   r   rD  r|   r|   r   test_masked_singleton_equalityI  s
    z8TestMaskedArrayArithmetic.test_masked_singleton_equalityc                 C   st   t ddg}|t }t|j|j t|jddg |d t }t|tk |t }t|j|j t|jddg d S )Nr   r   Tr   )rJ   rI   r   rl   r   r
   r  r|   r|   r   %test_arithmetic_with_masked_singletonQ  s    z?TestMaskedArrayArithmetic.test_arithmetic_with_masked_singletonc                 C   s2   t dg}|t }t|j|j t|jdg d S )Nr   T)rJ   rI   r   rl   r   r  r|   r|   r   5test_arithmetic_with_masked_singleton_on_1d_singleton]  s    
zOTestMaskedArrayArithmetic.test_arithmetic_with_masked_singleton_on_1d_singletonc                 C   sN   t ddd}t| jj|jj t dd }t|jd t|jddg d S )Nr   r   r^  r   r  r   )r&   r   r7   r+  r   rl   r   )r   r   r   r|   r|   r   test_scalar_arithmeticd  s
    z0TestMaskedArrayArithmetic.test_scalar_arithmeticc              
   C   sN  | j \
}}}}}}}}}	}
tt|t| tt|t| tt|t| tt|t| tt|t| tt|t| tt	t
|t	| ttt
|t| ttt
|t| tt|t| tt|t|	 tt|t|	 tt|t|	 tt||t|| tt|t| tt|d|  t|d|   ttj|d|  ddt|d|  dd tt||t|| tt||t|| tt||t|| tt||t|| tt||t|| tt||t|| tt|t| d S )N              ?T)deg)r   r   r}   r+   r,   rm   rn   ru   rv   rq   r   rD   rE   r5   r#   r    r$   r"   r   r   r4   r`   rB   r=   rC   r>   r*   r   r|   r|   r   test_basic_ufuncsl  s2    $,z+TestMaskedArrayArithmetic.test_basic_ufuncsc                 C   s  t dtd t dtddgd tddddgddddgd}t|}t|jjtjk t d| |d	}t|}t|jjtjk t d| t|d}tt	|t
 t dd
g| tt|tk tddddg}t|d}tt	|t
 t|jjtjk ttj|jdd d S )Nr   r   r   r   r   r   r   r   r  r   r)  )r   r-   r&   r
   r~   r"  r}   Zintprj   rY  r   r;   r_   r   	AxisError)r   Zottr   r|   r|   r   test_count_func  s&    




z)TestMaskedArrayArithmetic.test_count_funcc                 C   s&   t dtdddg t dtd d S )Nr   r   r   r  )r   r-   r   r|   r|   r   test_count_on_python_builtins  s    z7TestMaskedArrayArithmetic.test_count_on_python_builtinsc              
   C   sL  | j \
}}}}}}}}}	}
t|}t|}tt|t| tt|t| ttdddgdddgdddg ttdddgdddgdddg t	d}t	dd }t
|d< t
|d< tt||tt|||| tt||tt|||| tt|dk tt|dk t	ddd}t
|d< ttj|d d	d d S )
Nr   r   r   r   r   r  r   r  r)  )r   r}   rh   r   rV   rW   r   rY   rZ   r   rI   rx   rB   r=   r
   rj   )r   r   r   r   r   r   r   r   r   r   r   ZxrZxmrr|   r|   r   test_minmax_func  s$    
""z*TestMaskedArrayArithmetic.test_minmax_funcc                 C   s   t d}t||}tt|t t|t || t||}tt|t t|t j|| t||}tt|t t|t || t||}tt|t t|t j|| d S )Nr  )	r}   ra   rZ   r
   rY  r   r   rc   rW   )r   r   ZaminimumZamaximumr|   r|   r   test_minimummaximum_func  s    


z2TestMaskedArrayArithmetic.test_minimummaximum_funcc                 C   s2   t dddgdddgd}tj|}t|d d S )Nr   r   r   Fr   )r&   r}   rW   r   r   r   r|   r|   r   test_minmax_reduce  s    z,TestMaskedArrayArithmetic.test_minmax_reducec              	   C   s   t jd }tt jddd|d}d|_dD ]}tt |}ttj	j
|}t jdtd}z||d|d	}W n tk
r   Y nX t jdtd}||d|d	}t||k |d
 ||d|d	}t||k q2d S )Nrj  r   r   r   r   rY   rV   r   r   r*  outr  )r}   r   r   roundr&   uniformrl   getattrr  r   corer2   r   r   r   r
   fill)r   r   r   funcnamenpfuncZmafuncnoutresultr|   r|   r   test_minmax_funcs_with_output  s"    

z7TestMaskedArrayArithmetic.test_minmax_funcs_with_outputc              
   C   sT  | j \
}}}}}}}}}}|jf|_t| d t|d  tk t|d dtk t|d dtk t| d t|d  tk t|d dtk t|d dtk t| d t|d  tk t|d dtk t|d dtk t	dddgd	d
}t| tk t| tk t| tk d S )Nr   r   r   r         4@r   r   r   Tr   )
r   r   rl   r   rV   r
   rI   rY   ptpr&   )r   _r   r   r|   r|   r   test_minmax_methods  s$    
z-TestMaskedArrayArithmetic.test_minmax_methodsc                 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
d
d
g}t||d}|d t jt jt jt jt j	t j
t jg}|D ]<}tt|||d || tt|||d || qt| | t| | |d d D ]<}tt|||d || tt|||d || q|dd  D ]}tdddgd
d	d
g|d}t| |d t| |d tt jd t jd t j d gd
d	d
g|d}	t|	 |t j d  t|	 |t jd  t jdt t jj  }
t|
 d
gd
d	gd |
 kstt|
d
gd
d	gd |
ks4tq4d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r`  r   y@xD      ?y@xD       y@xD      y               @y              @r  )r}   r&   r   rJ   r   ZhalfZsingledoubleZ
longdoubleZcfloatZcdoubleZclongdoubler   rV   rY   infr  float64AssertionError)r   r   r   Zan10r   r   Zfloat_dtypesZfloat_dtyper   r   Zcmaxr|   r|   r   test_minmax_dtypes  sT    &
   &&z,TestMaskedArrayArithmetic.test_minmax_dtypesc              
   C   s  | j \
}}}}}}}}}	}
ttj|t| ttj|t| tdttddd tdttddd ttj|ddt|dd ttjt|dddt|dd tt|dt|d ttj	|ddt	|dd tt	|dt	|d ttj	t|dddt	|dd d}| |_
 |_
 |_
|_
t|dkrtt||fdt||fd ttj|dt|d tt|dt|d tt	|dt	|d d S )Nr   r   r)  r   r   )r   r   r}   r   r   
accumulaters   r&   r7   re   rl   r   r)   r   r|   r|   r   test_addsumprod.  s$    "" z)TestMaskedArrayArithmetic.test_addsumprodc                 C   s  t dgdgdggdgdgdggd}t ddgddgd	d
gg}|| }t ddgddgddggddgddgddggd}t|| t|j|j t|j|j || }t ddgddgd	d
ggddgddgddggd}t|| t|j|j t|j|j t dgdgdgg}t ddgddgd	d
ggddgddgddggd}|| }t ddgddgddggddgddgddggd}t|| t|j|j t|j|j || }t ddgddgddggddgddgddggd}t|| t|j|j t|j|j d S )Nr   r   r   FTr   r   r   r        @r   r   r   r   r   r      rm  r&   r   r   r   r   r   r   r   r  r|   r|   r   test_binops_d2DC  sD    $



z)TestMaskedArrayArithmetic.test_binops_d2Dc                 C   s  t dgdgdggdgdgdggd}t ddgddgd	d
gg}|| }t ddgddgddggddgddgddggd}t|| t|j|j t|j|j || }t ddgddgd	d
ggddgddgddggd}t|| t|j|j t|j|j t dgdgdgg}t ddgddgd	d
ggddgddgddggd}|| }t ddgddgddggddgddgddggd}t|| t|j|j t|j|j || }t ddgddgddggddgddgddggd}t|| t|j|j t|j|j d S )Nr   r   r   FTr   r   r   r  r  r   gUUUUUU?r   r   g?r   r  rm  r  r  r|   r|   r   test_domained_binops_d2Dg  sD    $



z2TestMaskedArrayArithmetic.test_domained_binops_d2Dc                 C   s   t dddgdddgdd}|d }t|jdddg |d7 }t|jdddg |d }t|jdddg |d }t|jdddg d S )Nr   r   r   Fr   shrinkr   r   rJ   r   r   r   r|   r|   r   test_noshrinking  s    z*TestMaskedArrayArithmetic.test_noshrinkingc                 C   s(   t jdg}tt |djjd d S )Nr   r   r|   )r}   r   r&   r   true_divider   rl   r   r	  r|   r|   r   test_ufunc_nomask  s    z+TestMaskedArrayArithmetic.test_ufunc_nomaskc                 C   s.   t jjdddgddd}t|jdddg d S )Nr   r  @      ?Fr   r   )r}   r   rT   r   r   rD  r|   r|   r   test_noshink_on_creation  s    z2TestMaskedArrayArithmetic.test_noshink_on_creationc              
   C   s   | j \
}}}}}}}}}	}
tt||t|| t||}t|t|| t|jt|j|j t||}t|t|| t|jtt|j|j|dk d S re  )r   r   r\   r}   r   rH   )r   r   r   r   r   r   r   r   r   r   r   r   r|   r|   r   test_mod  s    

z"TestMaskedArrayArithmetic.test_modc                 C   s  t d}t d}t|dd< |ddd}|ddd}tt|dt|d tt|ddt|dd ttt|d	t|d	t|| tt	t|d	t|d	t	|| t
d
ddddgt}t|d< t|d	ddg}t|d	 d
k t|d dk t|d dk d S )Nr   r   r   r   r   r   )r   r   r   r   r   abcdef)r   r}   rI   rj   r   rw   rt   r@   r7   rc   r&   r  r
   )r   r   r   r  r|   r|   r   test_TakeTransposeInnerOuter  s&    
z6TestMaskedArrayArithmetic.test_TakeTransposeInnerOuterc                 C   s   t ddgddgd}t|jddg t|j ddg t|jj|jjj t|jdd	g t|j dd	g t|jj|jjj d S )
Ny      ?      $@y      4@       @r   r   r   r   r   r   r?  )r&   r   rp  r7   r~   r   ro  )r   r   r|   r|   r   test_imag_real  s    z(TestMaskedArrayArithmetic.test_imag_realc                 C   s   t tjddddd}t |d d df<  |d< |d< d}|D ]}tt|}t||}tjdtd}|	d	 ||d|d
}t
||k t||d|d
 tdtd}|d|d
}t
||k t
|d tk qDd S )Nr   r   rj  r   r   r  )rs   prodvarstdrV   rY   r  meanr   r   r  r&   r}   r   r  rj   rI   r  r2   r   r  r
   r   r   )r   r   Zfunclistr  r  xmmethoutputr  r|   r|   r   test_methods_with_output  s     


z2TestMaskedArrayArithmetic.test_methods_with_outputc                 C   s  dt fdt fg}tddgddg|d}||k}t|jddg t|jd	d	g t|jdk ||d
 k}t|jdd	g t|jd	d	g t|jdk tddgddg|d}||k}t|jd	dg t|jdd	g t|jdk |d
 |k}t|jd	d	g t|jdd	g t|jdk tddgddg|d}||k}t|jddg t|jd	d	g t|jdk dt fddt fdt fgfg}tddgddggddgddgg|d}|d |k}t|jdd	gd	d	gg t|jd	d	gd	dgg t|jdk d S )Nr   r  r@  r  r_  r^  r`  TFr   rk  r  r  r  r  r   r   r   r   r   r   r  r  r   r^  r   r&   r   r   r   r
   r   r   r  r   r   r   r|   r|   r   test_eq_on_structured  sJ    z/TestMaskedArrayArithmetic.test_eq_on_structuredc                 C   s  dt fdt fg}tddgddg|d}||k}t|jddg t|jddg t|jd	k ||d
 k}t|jdd	g t|jddg t|jd	k tddgddg|d}||k}t|jd	dg t|jd	dg t|jd	k |d
 |k}t|jd	d	g t|jd	dg t|jd	k tddgddg|d}||k}t|jddg t|jddg t|jd	k dt fddt fdt fgfg}tddgddggddgddgg|d}|d |k}t|jdd	gd	d	gg t|jddgdd	gg t|jd	k d S )Nr   r  r@  r  r_  r^  r`  FTr   rk  r  r  r  r  r  r  r  r  r  r  r  r|   r|   r   test_ne_on_structured  sJ    z/TestMaskedArrayArithmetic.test_ne_on_structuredc           	   	      s  t d}tdd|dtdd|dtdd|dtdd|dfD ]b  t}|d}t jd|d	td|d	tdd|dtd
d|dfD ]t}|d}||k }t k| t k| t|k| t |k| t||k|  fdd|jD }tt|t	d	 | ||k
 }t k| t k| t|k| t |k| t||k|  fdd|jD }tt|t	d	
 | qq>d S )Nr  r  r^  r`  r_  rk  r@  Z2i4r   r   r   c                    s   g | ]} | | kqS r|   r|   r   namer   r   r|   r   r   S  s     zITestMaskedArrayArithmetic.test_eq_ne_structured_extra.<locals>.<listcomp>c                    s   g | ]} | | kqS r|   r|   r!  r#  r|   r   r   [  s     )r}   r~   r^   rW  r   r&   r   r   r   r   r   )	r   r  ma1r1ma2Zr2Zeq_expectedZel_by_elZne_expectedr|   r#  r   test_eq_ne_structured_extra<  s>    







z5TestMaskedArrayArithmetic.test_eq_ne_structured_extrar  SUr  Nr   c                 C   sN  t ddg|ddg|d}||k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk t ddg|ddg|d}||k}t|jddg t|jddg t|jdk |d |k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk d S )Nr   r   r   r   r~   r   r   TFr&   r   r   r   r
   r   r   r  r  r   r   r   r|   r|   r   test_eq_for_strings^  s,    z-TestMaskedArrayArithmetic.test_eq_for_stringsc                 C   sN  t ddg|ddg|d}||k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk t ddg|ddg|d}||k}t|jddg t|jddg t|jdk |d |k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk d S )Nr   r   r   r   r*  FTr+  r,  r|   r|   r   test_ne_for_strings~  s,    z-TestMaskedArrayArithmetic.test_ne_for_stringsdt1idsdt2r   c                 C   sN  t ddg|ddg|d}||k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk t ddg|ddg|d}||k}t|jddg t|jddg t|jdk |d |k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk d S )Nr   r   r*  TFr+  r   r/  r2  r  r   r   r   r|   r|   r   test_eq_for_numeric  s,    z-TestMaskedArrayArithmetic.test_eq_for_numericc                 C   sN  t ddg|ddg|d}||k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk t ddg|ddg|d}||k}t|jddg t|jddg t|jdk |d |k}t|jddg t|jddg t|jdk ||d k}t|jddg t|jddg t|jdk d S Nr   r   r*  FTr+  r3  r|   r|   r   test_ne_for_numeric  s,    z-TestMaskedArrayArithmetic.test_ne_for_numericopc                 C   s  t ddg|ddg|d}|||}t|j||j|j t|jddg t|jdk |||d }t|j||j|jd  t|jddg t|jdk t ddg|ddg|d}|||}t|j||j|j t|jddg t|jdk ||d |}t|j||jd |j t|jddg t|jdk |||d }t|j||j|jd  t|jddg t|jdk d S r5  )r&   r   r   r   r   r
   r   )r   r7  r/  r2  r  r   r   r   r|   r|   r   test_comparisons_for_numeric  s,    

z6TestMaskedArrayArithmetic.test_comparisons_for_numericzN/Ac                 C   sT   t dddgdddg|d}t dddgdddg|d}t|||j||j|j d S )Nr   r   Zcder   r   )r   r   )rJ   r   r   )r   r7  r  r$  r&  r|   r|   r   test_comparisons_strings  s    z2TestMaskedArrayArithmetic.test_comparisons_stringsc              	   C   s  t   }|td td dgddgd}t|d ktddgddgd t|jd kddg t|d ktddgddgd td dgdd}t|d kddg t|d kddg td dgdd}t|d ktddgdd t|d ktddgdd t}t|d kt W 5 Q R X d S )NzComparison to `None`r   r   r   TFr   )r   rf  r;  r&   r   r   rI   )r   rh  r   r|   r|   r   test_eq_with_None  s    
z+TestMaskedArrayArithmetic.test_eq_with_Nonec                 C   s   t d}t|dkd t|dkd t|dkd t|dkd t ddd}t|dkt t|dkt t|dkt t|dkt d S )Nr   Tr   Fr   )r&   r   rI   r   r|   r|   r   test_eq_with_scalar'  s    z-TestMaskedArrayArithmetic.test_eq_with_scalarc                 C   s   t ddgddgd}t ddgddggt ddgddggfD ]<}||k}t|jddgddgg t|jddgddgg q>d S )Nr   r   r   r   FT)r&   r}   r   r   r   )r   r   r   r   r|   r|   r   test_eq_different_dimensions3  s    z6TestMaskedArrayArithmetic.test_eq_different_dimensionsc                 C   s   t dddddgdddddgd}t tjtjdtddgdddddgd}t|}t|| t|j|j t|jdddddg t|}t|| t|j|j t|jdddddg d S Nr   r   r   r   r   r   )rJ   r}   r  rD   r   r   )r   r   r  r   r|   r|   r   test_numpyarithmetic>  s     


z.TestMaskedArrayArithmetic.test_numpyarithmetic)8r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r'  r   markparametrizer-  r.  num_dtsnum_idsr4  r6  operatorleltgegtr8  r9  r:  r;  r<  r>  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 )TestMaskedArrayAttributesc                 C   s   t dddgdddgd}t |}t|j|j t |dddgdd}t|jdddg t |dddgdd}t|jdddg t |dddgd}t|jdddg d S )	Nr   r   r   r   r   F)r   Z	keep_maskTr  r   r   r  r|   r|   r   test_keepmaskQ  s    z'TestMaskedArrayAttributes.test_keepmaskc                 C   sF  t d}dddddg}t|}t||dd}t||ddd}dd	g|dd
g< dd	g|dd
g< t|jddddd
g t|jddddd	g t|jdddddg t|j t|j  dddg|dd
< dddg|dd
< t|jddddd
g t|jddddd	g t|jt t	|d< t	|d< t|jdddddg t|jdddddg d|d d < d|d d < t|jddddd
g t|jdddddg t|jdddddg t|jt |
  t d|d d < t|jddddd
g t|jt |  t	||dk < t|jddddd
g t|jdddddg d|t|dkd< t|jdddddg t|jdddddg tddgdd
ggddgddggdd}d|d< t|jddgdd
gg t|jddgddgg d|d< t|jddgddgg t|jddgddgg d|t|dk d< t|jddgddgg t|jddgddgg d S )Nr   r   r   Tr   	hard_maskFr   rL  r   r   (   r   r   r   r?     r  )r   rF   r&   r   r   r   r
   r  r_   rI   soften_maskharden_maskr   r7   )r   r   r,  r	  xhxsr|   r|   r   test_hardmask^  s`    
&z'TestMaskedArrayAttributes.test_hardmaskc                 C   s^   t d}dddddg}t|}t||dd}d|dd< d|dd< t|jdddd	dg d S )
Nr   r   r   TrK  rJ  r   r   r   )r   rF   r&   r   r   r   r   r,  r	  rR  r|   r|   r   test_hardmask_again  s    z-TestMaskedArrayAttributes.test_hardmask_againc                 C   s   t dddgdddgd}| }t|| d|d< t|| t|t dddgdddgd | }d|d< t|| t|t dddgdddgd d S Nr   r   r   r   r   )r&   rQ  r   rP  r   r|   r|   r   test_hardmask_oncemore_yay  s    


z4TestMaskedArrayAttributes.test_hardmask_oncemore_yayc                 C   sV   t d}t|d< d|d< t|jt t d}d|_t|d< d|d< t|jtd d S )Nr   r   F)r   rI   r   r   r_   Z
_smallmaskry   rD  r|   r|   r   test_smallmask  s    z(TestMaskedArrayAttributes.test_smallmaskc                 C   st   t dddgdddgd}| }t|| t|jt tj dgdtfdtfg}|	 }|  t|j|j d S )	Nr   r   r   r   r   r  r   r   )
r&   Zshrink_maskr   r   r_   r}   r   r   r   r   r   r|   r|   r   test_shrink_mask  s    
z*TestMaskedArrayAttributes.test_shrink_maskc                 C   sT  t dddgdddggdtfdtfd	gd
}t|d d< t|d d< t|d d< t|d< |j}t|d |d  t|d |d  t|d |d  t|d d |d  t|d |d  t|d |d  t|d |d  t|dd  |d  t|d |d  d}d}|D ]<}t||||f  |d7 }||jd krd}|d7 }qd S )N)r   r  one)r   r  two)r   ffffff
@thr)r   皙@Zfou)r         @Zfiv)r   gffffff@sixr   r   rq  r  r   r_  rk  rq  )r   r   r  r   r^  r   r   r   r   r@  r   r  r   )r&   r   r   rI   rn  r   rl   )r   r   Zxflatr~  jr   r|   r|   r   	test_flat  s6    
z#TestMaskedArrayAttributes.test_flatc                    s   t jddd t j }t d|_t| t|jt d  fdd}tt|  j	dt jj
d}t|jt d t jddd t j }t d|_t|jt d t|jt jj d S )Nr   zf4,i4r   f4c                     s   t j } t d| _d S )Nf8)r}   r   r&   r~   )r	  rd  r|   r   assign  s    z;TestMaskedArrayAttributes.test_assign_dtype.<locals>.assign)r~   r"  )r}   ry   r   r&   r~   r!  r   r   r   rW  r   r   r_   )r   r	  rg  r   r|   rd  r   test_assign_dtype  s    
z+TestMaskedArrayAttributes.test_assign_dtypeN)r   r   r   rJ  rT  rV  rX  rY  rZ  rd  rh  r|   r|   r|   r   rH  O  s   7
rH  c                   @   s   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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#d$ Zd%S )&TestFillingValuesc                 C   s   t jjj}|dt}t|d |d t}t|td |dd}t|d |d d}t|td tt|dt tt|dt d S )Nr   |S3   0s   camelot!r   stuff)	r}   r   r  _check_fill_valuer   r   r.   r   r   )r   rm  fvalr|   r|   r   test_check_on_scalar  s    






z&TestFillingValues.test_check_on_scalarc                 C   s  t jjj}dtfdtfdg}|dddg|}tt|t t	|
 dddg |d |}tt|t t	|
 tdtd	ttd
g t jd|d}|||}tt|t t	|
 dddg t jddtfdtfdgd}|||}tt|t t	|
 dddg t jdtd}d|d< ||t}tt|t t	|
 dddg dtfg}|d|}tt|t t	|
 d d S )Nr   r   )rq  rj  r  )gr     ???r   r   r   )r  rp  r  r   r   r  )r  rj  r  rl   r~   )r  rp  rq  6e)rs  )r}   r   r  rm  r   r   r
   rY  r   r   itemr.   r	   r&   r  )r   rm  r  rn  Zfill_valr|   r|   r   test_check_on_fields  s<    







z&TestFillingValues.test_check_on_fieldsc                 C   s   t dddg}|jddi t |td}t|jddd	g t|jtd
 t |td}t|jddd	g t|jtd |	t}t|jddd	g t|jtd
 t|jd d |	dg}t|d j|j t|d j|j d S )N   3   4   5commentzupdated!r   r   r   r   r   r   )r   rj  r   )
r&   r  updater   r   r   r   r.   r   r   r   r|   r|   r   test_fillvalue_conversion@  s    
z+TestFillingValues.test_fillvalue_conversionc                 C   s>   t d}t td}t tdj}t|| t|| d S )Nr   )r.   r}   r&   r~   r   )r   r   f2Zf3r|   r|   r   test_default_fill_valueX  s
    
z)TestFillingValues.test_default_fill_valuec                 C   sh   t dgdtfddtfgd}t|}t|j}tj tdtdtdf|jd}t|| t|| d S )	Nr}  r~  r  r  r   r   r   r   )r&   r   r   r.   r~   r}   r   )r   fieldsr   r|  expectedr|   r|   r   "test_default_fill_value_structured`  s    


z4TestFillingValues.test_default_fill_value_structuredc                 C   s:   t dg}t|}t|d t t|d |d  d S )N)vZV7r  )r}   r~   r.   r   r&   )r   r  r  r|   r|   r   test_default_fill_value_voidl  s    z.TestFillingValues.test_default_fill_value_voidc                 C   s
  t dddgdd}|dddg }t|j|j dtfdg}td	d
tdfg|d}d|_t|j ddg t|d jd t|d jd d|_t|j d t|d jd t|d jd tdddg}d|_tt	|jj
t t|jd t|jtd d S )Nr   r   r   r  r   r   r  r   rj  )r   r   )r   r   r   r   rJ       8@s   999r   )r  r  )r  rq  r  rq  r  )rJ   r   _fill_valuer   r&   r   r   rt  r}   r'   r~   )r   r   Zseriesmtyper   r|   r|   r   test_fillvalueq  s$    z TestFillingValues.test_fillvaluec              	   C   sr   t dgdtfddtfgd}t F}|td |ddg }tt|jd |dd  |d d	 k W 5 Q R X d S )
Nr}  r~  r  r  r   zNumpy has detected)r  r   r   r   )	r&   r   r   r   rf  r;  r   r  r   )r   r~  rh  Z	subfieldsr|   r|   r   test_subarray_fillvalue  s    z)TestFillingValues.test_subarray_fillvaluec                 C   s8  t jjj}dtfddtfg}t jtdtdtdf|d}t|d || dtd	fg}t jtdfdtfgd	|}t|d || t jd
dtfgd	|}t|d|| t 
d}t jtdtdtdfdd	|}|d |}t|| t jddd	|}t|d|| t|}t|d jjd d S )Nr~  r  r  r   r   r   r   r   r  r   r  zint, float, float)r   r   r   r   )r}   r   r  rm  r   r   r&   r.   r   r   r~   rJ   r   r   )r   rm  r  r  r   Mr|   r|   r   test_fillvalue_exotic_dtype  sB    





z-TestFillingValues.test_fillvalue_exotic_dtypec                 C   sn   dD ]d}t d|}tt d| d }tj|| t d|}tt d| d }tj|| qd S )N)asfsZpsnsusmsr   r	  hDWr  YZNaTz<M8[]z<m8[)r  Z
datetime64r.   r~   r}   Ztestingr   timedelta64)r   Ztimecoder  r   r|   r|   r   !test_fillvalue_datetime_timedelta  s    z3TestFillingValues.test_fillvalue_datetime_timedeltac                 C   s  t ddgdtfddtfdtfgfgd}|j}t|j|j t|d t|d  t|d d t|d d  t|d d t|d d  t|}t|j|j t|d t|d  t|d	 d t|d d  t|d	 d	 t|d d  t|d	 t|d  t|}t|j|j t|d t|d  t|d	 d t|d d  t|d	 d	 t|d d  t|d	 t|d  d S )
N)r   r  )r   r   r   r   r  r  r  r   r   r   )r&   r   r   r   r~   r.   r[   rX   r   r   r   r|   r|   r   test_extremum_fill_value  s(    z*TestFillingValues.test_extremum_fill_valuec                 C   s   t dddgfdtjdfgd}t|}t|j|j t|d tdt|d  t|}t|j|j t|d tdt|d  d S )Nr   r   r   r  r   r   )r&   r}   rC  r[   r   r~   fullrX   r  r|   r|   r   !test_extremum_fill_value_subdtype  s    z3TestFillingValues.test_extremum_fill_value_subdtypec                 C   s   dt fdt fg}tttdddgdddgd	|d
}|d }|d t|jtd tt|j	d d|j	d< tt|j	d tttdddgdddg|d}|d }|d t|jtd tt|j	dt
df d S )Nr   r   r   r   r   r   r   r   r  r   r~   r   )r   r  )r   r  r   r   )r   r&   r   r   r   r   r  r}   r  r   r.   )r   r  r   Zaar  ttr|   r|   r    test_fillvalue_individual_fields  s      

"
z2TestFillingValues.test_fillvalue_individual_fieldsc                 C   s   dt f}dt f}tddgddgtjft|gd}t|j||gd}|d |d< |d |d j |j	d }t
t|d	  t|d
 td d S )Nr   r   r   r   )F)r   r   r~   r   r|   r   r   r   )r   r&   r}   r  r~   r2   rl   r   r   r  r
   rg  r   r.   )r   r  Zadtyper   r   r  r|   r|   r   (test_fillvalue_implicit_structured_array  s     

z:TestFillingValues.test_fillvalue_implicit_structured_arrayc                 C   sj   t ddd}t|jd tddtd}t|jd tddtd}t|jd tddtd}t|jd d S )Nr   r  r  r  r   )r2   r   r   ra   r   ry   complexr?   rD  r|   r|   r   test_fillvalue_as_arguments	  s    z-TestFillingValues.test_fillvalue_as_argumentsc                 C   sJ   t dd}t|jd tdtd}t|jd tdtd}t|jd d S )Nr   rl   rr  )r2   r   rl   ra   r   ry   r  rD  r|   r|   r   test_shape_argument	  s    
z%TestFillingValues.test_shape_argumentc                 C   s   t dddgdtjd}| }t|jdk |t}t|jdk |jtd}t|jdk |tj}|jtjd}|jtdd}t|jdk |jtdd}t|jdk |jtjd}t|jd	k d S )
Nr   r   r   r  )r"  r  )r"  r   r   r  )	r&   r}   int64rW  r
   r   r   r   int32r  r|   r|   r   test_fillvalue_in_view	  s    
z(TestFillingValues.test_fillvalue_in_viewc                 C   s8   t ddd}t|d jtd t|d jtd d S )Nr   z(2)3S,(2)3Urr  r   s   spamr   eggs)r2   r   r   r.   rD  r|   r|   r   test_fillvalue_bytes_or_strI	  s    z-TestFillingValues.test_fillvalue_bytes_or_strN)r   r   r   ro  ru  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r|   r|   r|   r   ri    s$   /*ri  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 )
TestUfuncsc                 C   sr   t dddtd gd ddgdgd  dt dddtd gd ddgdgd  df| _t | _tjddd	 d S )
Nr   r   r   r   r   r   r   r  r  )r&   r   r   r}   r  r  r  r   r|   r|   r   r   T	  s
    ((
zTestUfuncs.setup_methodc                 C   s   t jf | j d S r   r  r   r|   r|   r   r  [	  s    zTestUfuncs.teardown_methodc              	   C   s   dD ]}zt t|}W n tk
r4   t t|}Y nX t tjj|}| jd |j }|| }|| }t	|
d|
d| t|j|j|d qd S )N)*rq   rD   rE   r5   r*   rm   r+   ru   r#   r    r$   rn   r,   rv   Zarcsinhr!   Zarctanhr   fabsnegativefloorceilZlogical_notr   rr   r]   r0   r  Zfloor_divide	remainderfmodhypotr"   r4   r`   rC   r>   rB   r=   logical_and
logical_orlogical_xorr   )err_msg)r  umathAttributeErrorfromnumericr  r   r  r   Zninr   r7   r   r   )r   r  ZufZmfargsurmrr|   r|   r   test_testUfuncRegression^	  s    z#TestUfuncs.test_testUfuncRegressionc                 C   sl   | j d }tt|dd  tt|dd tt|d d ddd tt|ddd tt|t	 d S )Nr   r)  r   )
r   r
   r   ro   r   rs   re   r   r   r   rD  r|   r|   r   test_reduce|	  s    
zTestUfuncs.test_reducec                 C   s   t dddd}t|dk |}t| |  t| d t|d|d t|ddddd	g t|dd j t|dd j d S )
Nr      r   r   r   r   r   rm  r   )r   rj   rU   r   rV   rY   r
   r   )r   r   amaskr|   r|   r   test_minmax	  s    zTestUfuncs.test_minmaxc                 C   s~   t dddddgdddddgd}t|}t dddtddgdddddgd}t|| t|j|j tt|jt  d S r=  )rJ   r}   rq   r   r   r
   rY  r   )r   r   r   r  r|   r|   r   test_ndarray_mask	  s     

zTestUfuncs.test_ndarray_maskc                    s   t ddgddgd tttj d tttj d G  fddd}| }t|  d	k t | d
k G dd d}| }t |tk tt	t
 |dk t |tk t|  dk t | dk t | dk d S )Nr   r   r   r   r   r  c                       s&   e Zd Z jd Zdd Zdd ZdS )z<TestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClassr   c                 S   s   dS )NMy mulr|   r   otherr|   r|   r   __mul__	  s    zDTestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass.__mul__c                 S   s   dS )NMy rmulr|   r  r|   r|   r   __rmul__	  s    zETestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass.__rmul__N)r   r   r   __array_priority__r  r  r|   rd  r|   r   MyClass	  s   
r  r  r  c                   @   s,   e Zd ZdZdd Zdd Zdd ZeZdS )	z=TestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass2d   c                 S   s   dS )NMe2mulr|   r  r|   r|   r   r  	  s    zETestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass2.__mul__c                 S   s   dS )NMe2rmulr|   r  r|   r|   r   r  	  s    zFTestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass2.__rmul__c                 S   s   dS )NMe2rdivr|   r  r|   r|   r   __rdiv__	  s    zFTestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass2.__rdiv__N)r   r   r   r  r  r  r  __rtruediv__r|   r|   r|   r   MyClass2	  s
   r  r  r  r  )rJ   r   r   rC  multruedivr
   r  NotImplementedr   r]   rc   __truediv__)r   r  mer  Zme_toor|   rd  r    test_treatment_of_NotImplemented	  s    	z+TestUfuncs.test_treatment_of_NotImplementedc              	   C   s   t jjdt jgddgd}t n td t| t|d |dk t	| t
| t| t| t| t| t|d t|d W 5 Q R X d S )Nr   r   r   r   errorr   )r}   r   r&   r  warningscatch_warningsfilterwarningsr5   r   rq   rD   ru   r#   r    r!   r0   r   r  r|   r|   r   test_no_masked_nan_warnings	  s    



z&TestUfuncs.test_no_masked_nan_warningsN)r   r   r   r   r  r  r  r  r  r  r  r|   r|   r|   r   r  Q	  s   	
+r  c                   @   s   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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#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Z d=S )> TestMaskedArrayInPlaceArithmeticc                 C   s   t d}t d}t d}t|d< |||f| _|t|t|tf| _tjd tjd  | _dd | jD | _|tj	|tj	|tj	f| _
d S )Nr   r   Z
AllIntegerZAllFloatc                 S   s   g | ]}t |jqS r|   r}   r~   r"  r   r  r|   r|   r   r   	  s     zATestMaskedArrayInPlaceArithmetic.setup_method.<locals>.<listcomp>)r   rI   intdatar   r   	floatdatar}   	typecodes
othertypesuint8	uint8datar   r   r   r   r|   r|   r   r   	  s    


z-TestMaskedArrayInPlaceArithmetic.setup_methodc                 C   s   | j \}}}t|d< |d7 }t||d  |d7 }t||d  | j\}}}|jjj}|d7 }t||jjjk t||d  d S )Nr   r   r   )r  rI   r   r  r   r+  r
   )r   r   r   r   r  Zid1r|   r|   r   test_inplace_addition_scalar	  s    
z=TestMaskedArrayInPlaceArithmetic.test_inplace_addition_scalarc                 C   sl   | j \}}}|j}tdtjd}t|d< ||7 }||7 }t|||  t|||  t|jt||j d S Nr   r   r   )r  r   r   r}   int16rI   r   rH   r   r   r   r   r	  r   r|   r|   r   test_inplace_addition_array
  s    z<TestMaskedArrayInPlaceArithmetic.test_inplace_addition_arrayc                 C   s<   | j \}}}|d8 }t||d  |d8 }t||d  d S r  )r  r   r  r|   r|   r   test_inplace_subtraction_scalar
  s
    z@TestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_scalarc                 C   sj   | j \}}}|j}tdtd}t|d< ||8 }||8 }t|||  t|||  t|jt||j d S r  r  r   r   r   rI   r   rH   r  r|   r|   r   test_inplace_subtraction_array
  s    z?TestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_arrayc                 C   s<   | j \}}}|d9 }t||d  |d9 }t||d  d S )Nr   r   )r  r   r  r|   r|   r   "test_inplace_multiplication_scalar"
  s
    zCTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_scalarc                 C   sj   | j \}}}|j}tdtd}t|d< ||9 }||9 }t|||  t|||  t|jt||j d S r  r  r  r|   r|   r   !test_inplace_multiplication_array*
  s    zBTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_arrayc                 C   sT   | j \}}}tdd }tdd }t|d< |d }t|| |d }t|| d S )Nr   r   )r  r   rI   r   r  r|   r|   r    test_inplace_division_scalar_int6
  s    
zATestMaskedArrayInPlaceArithmetic.test_inplace_division_scalar_intc                 C   s@   | j \}}}|d }t||d  |td }t|td d S )Nr   r   )r   )r  r   r   ra   r  r|   r|   r   "test_inplace_division_scalar_floatA
  s
    zCTestMaskedArrayInPlaceArithmetic.test_inplace_division_scalar_floatc                 C   st   | j \}}}|j}tdtd}t|d< || }|| }t|||  t|||  t|jtt||j|dk d S )Nr   r   r   r   r  r  r|   r|   r   !test_inplace_division_array_floatI
  s    zBTestMaskedArrayInPlaceArithmetic.test_inplace_division_array_floatc                 C   sD  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}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}t||d}t||d}|| }t|jddddddddddddg t|jdddd
t  d dddddddg | }|| }t|jddddddddddddg t|jdddd
t  d dddddddg d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rJ   r   r   r   r   )r   r   r   r   r   r   r   r   r|   r|   r   test_inplace_division_miscU
  s"     $ $ z;TestMaskedArrayInPlaceArithmetic.test_inplace_division_miscc                 C   s$  t dddgdddgd}|d }t|jdddg t|jdddg |d7 }t|jdddg t|jdddg t dddgdddgd}|t dddgdddgd }t|jdddg t|jdddg t dddgdddgd}|t dddgdddgd7 }t|jdddg t|jdddg d S )Nr   r   r   r   r   r   r  r   r|   r|   r   test_datafriendly_addi
  s    z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_addc                 C   s<  t dddgdddgd}|d }t|jdddg t|jdddg t dddgdddgd}|d8 }t|jdddg t|jdddg t dddgdddgd}|t dddgdddgd }t|jdddg t|jdddg t dddgdddgd}|t dddgdddgd8 }t|jdddg t|jdddg d S rW  r  r   r|   r|   r   test_datafriendly_sub
  s     z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_subc                 C   s<  t dddgdddgd}|d }t|jdddg t|jdddg t dddgdddgd}|d9 }t|jdddg t|jdddg t dddgdddgd}|t ddd	gdddgd }t|jdd
dg t|jdddg t dddgdddgd}|t ddd	gdddgd9 }t|jdd
dg t|jdddg d S )Nr   r   r   r   r   r   r   r?  rO  rN  r  r   r|   r|   r   test_datafriendly_mul
  s     z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_mulc                 C   s<  t dddgdddgd}|d }t|jdddg t|jdddg t ddd	gdddgd}|d }t|jdddg t|jdddg t ddd	gdddgd}|t d
ddgdddgd }t|jddd	g t|jdddg t ddd	gdddgd}|t d
ddgdddgd }t|jddd	g t|jdddg d S )Nr   r   r   r   r   r   r   r   r   r   r  g      >@g?r  r   r|   r|   r   test_datafriendly_div
  s     z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_divc                 C   st   t dddgdddgd}|d }t|jdddg t|jdddg |dC }t|jddd	g t|jdddg d S )
Nr   r   r   r   r   r   r  g;f@r   r  r   r|   r|   r   test_datafriendly_pow
  s    z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_powc                 C   s   t ddgddgg}t ddgddgd}||7 }t|ddgddgg |jtk	rht|jddgddgg t ddgddgg}t ddgddgd}||7 }t|ddgddgg t|jddgddgg d S )Nr   r   r   r   r   r   r&   r   r   r_   r   r|   r|   r   test_datafriendly_add_arrays
  s    
z=TestMaskedArrayInPlaceArithmetic.test_datafriendly_add_arraysc                 C   s   t ddgddgg}t ddgddgd}||8 }t|ddgddgg |jtk	rht|jddgddgg t ddgddgg}t ddgddgd}||8 }t|ddgddgg t|jddgddgg d S )Nr   r   r   r   r   r  r   r|   r|   r   test_datafriendly_sub_arrays
  s    
z=TestMaskedArrayInPlaceArithmetic.test_datafriendly_sub_arraysc                 C   s   t ddgddgg}t ddgddgd}||9 }t|ddgddgg |jtk	rht|jddgddgg t ddgddgg}t ddgddgd}||9 }t|ddgddgg t|jddgddgg d S )Nr   r   r   r   r  r   r|   r|   r   test_datafriendly_mul_arrays
  s    
z=TestMaskedArrayInPlaceArithmetic.test_datafriendly_mul_arraysc              
      s   | j D ] t n td  fdd| jD \}}}t|d< | d7 }t|| d  | d7 }t|| d  W 5 Q R X qd S )Nr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   	<genexpr>
  s     zUTestMaskedArrayInPlaceArithmetic.test_inplace_addition_scalar_type.<locals>.<genexpr>r   r   )r  r  r  r  r  rI   r   r  r|   r  r   !test_inplace_addition_scalar_type
  s    


zBTestMaskedArrayInPlaceArithmetic.test_inplace_addition_scalar_typec              
      s   | j D ] t  td  fdd| jD \}}}|j}td d}t|d< ||7 }||7 }t|||  t|||  t|jt	||j W 5 Q R X qd S )Nr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r    s     zTTestMaskedArrayInPlaceArithmetic.test_inplace_addition_array_type.<locals>.<genexpr>r   r   r   
r  r  r  r  r  r   r   rI   r   rH   r  r|   r  r    test_inplace_addition_array_type  s    


zATestMaskedArrayInPlaceArithmetic.test_inplace_addition_array_typec              
      s   | j D ]x t f td  fdd| jD \}}}| d8 }t|| d  | d8 }t|| d  W 5 Q R X qd S )Nr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r    s     zXTestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_scalar_type.<locals>.<genexpr>r   r  r  r  r  r  r   r  r|   r  r   $test_inplace_subtraction_scalar_type  s    


zETestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_scalar_typec              
      s   | j D ] t  td  fdd| jD \}}}|j}td d}t|d< ||8 }||8 }t|||  t|||  t|jt	||j W 5 Q R X qd S )Nr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r  %  s     zWTestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_array_type.<locals>.<genexpr>r   r   r   r  r  r|   r  r   #test_inplace_subtraction_array_type   s    


zDTestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_array_typec              
      s   | j D ]x t f td  fdd| jD \}}}| d9 }t|| d  | d9 }t|| d  W 5 Q R X qd S )Nr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r  4  s     z[TestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_scalar_type.<locals>.<genexpr>r   r  r  r|   r  r   'test_inplace_multiplication_scalar_type/  s    


zHTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_scalar_typec              
      s   | j D ] t  td  fdd| jD \}}}|j}td d}t|d< ||9 }||9 }t|||  t|||  t|jt	||j W 5 Q R X qd S )Nr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r  ?  s     zZTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_array_type.<locals>.<genexpr>r   r   r   r  r  r|   r  r   &test_inplace_multiplication_array_type:  s    


zGTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_array_typec              
      s   dd t jd D }| jD ]Ή t  td  fdd| jD \}}}td d d	 }td d d	 }t|d	< z0| d	 }| d	 }t	|| t	|| W n0 t
k
r   d
  d} |kst|Y nX W 5 Q R X qd S )Nc                 S   s   h | ]}t |jqS r|   r  r   r  r|   r|   r   	<setcomp>L  s     z[TestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_scalar_type.<locals>.<setcomp>Complexr  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r  P  s     z[TestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_scalar_type.<locals>.<genexpr>r   r   r   Supported type  throwing TypeError)r}   r  r  r  r  r  r  r   rI   r   r   r  )r   unsupportedr   r   r   msgr|   r  r   'test_inplace_floor_division_scalar_typeI  s     



zHTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_scalar_typec              
      s   dd t jd D }| jD ]ډ t  td  fdd| jD \}}}|j}td d}t	|d	< zR|| }|| }t
|||  t
|||  t
|jtt||j| d
k W n0 tk
r   d  d} |kst|Y nX W 5 Q R X qd S )Nc                 S   s   h | ]}t |jqS r|   r  r  r|   r|   r   r  `  s     zZTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_array_type.<locals>.<setcomp>r  r  c                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r  d  s     zZTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_array_type.<locals>.<genexpr>r   r   r   r   r  r  )r}   r  r  r  r  r  r  r   r   rI   r   rH   r   r  )r   r  r   r   r   r	  r   r  r|   r  r   &test_inplace_floor_division_array_type]  s(    


zGTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_array_typec                    sh  | j D ]Z t H}|t  fdd| jD \}}}td d d }td d d }t|d< z| d }t|| W n8 tt	fk
r } zt
jt|dd W 5 d }~X Y nX z| d }t|| W n: tt	fk
r } zt
jt|dd W 5 d }~X Y nX t tjr>tt|jdd  d	 ntt|jd
d  d	 W 5 Q R X qd S )Nc                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r  {  s     zUTestMaskedArrayInPlaceArithmetic.test_inplace_division_scalar_type.<locals>.<genexpr>r   r   r   r   
stacklevelFailed on type=.r   )r  r   recordr   r  r   rI   r   DeprecationWarningr   r  warnr   
issubclassr}   integerr   rD   )r   rh  r   r   r   er|   r  r   !test_inplace_division_scalar_typeu  s(    

$$zBTestMaskedArrayInPlaceArithmetic.test_inplace_division_scalar_typec                    st  | j D ]f t T}|t  fdd| jD \}}}|j}td d}t|d< z|| }t|||  W n8 t	t
fk
r } ztjt|dd W 5 d }~X Y nX z<|| }t|||  t|jtt||j| dk W n: t	t
fk
r } ztjt|dd W 5 d }~X Y nX t tjrJtt|jd	d
  d ntt|jdd
  d W 5 Q R X qd S )Nc                 3   s   | ]}|  V  qd S r   r   r  r  r|   r   r    s     zTTestMaskedArrayInPlaceArithmetic.test_inplace_division_array_type.<locals>.<genexpr>r   r   r   r   r  r   r   r  r  )r  r   r  r   r  r   r   rI   r   r  r   r  r  r   rH   r  r}   r  r   rD   )r   rh  r   r   r   r	  r   r  r|   r  r    test_inplace_division_array_type  s0    

$$zATestMaskedArrayInPlaceArithmetic.test_inplace_division_array_typec              
   C   s   | j D ]}t  td tdddgdddg|d}||d }tdddgdddg|d}t|j|j t|j|j ||dC }t|j|j t|j|j W 5 Q R X qd S )Nr  r   r   r   r   r`  r   )r  r  r  r  r&   r   r   r   )r   r  r   r   Zxx_rr|   r|   r   test_inplace_pow_type  s    


z6TestMaskedArrayInPlaceArithmetic.test_inplace_pow_typeN)!r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r   r|   r|   r|   r   r  	  s<   $'r  c                   @   s@  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d Zdd Zdd Zdd Zdd Zdd Ze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-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIdJ Z(dKdL Z)dMS )NTestMaskedArrayMethodsc              &   C   s  t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$g$}|d%d%}|d&d'd'd&}t d(d)d(d)d(d(d)d(d)d)d(d)d(d(d(d)d(d)d(d(d(d)d)d)d)d(d(d)d(d(d(d(d)d(d)d(g$}t||d*}t|||jd*}t|||jd*}t d)d)d(d)d(d(d)d)d)d)d(d)d(d(d)d)d(d)d(d(d(d)d)d)d)d(d(d)d)d(d(d(d)d(d)d)g$}t||d*}	t|||jd*}
t|||jd*}||||||||	|
|f
| _d S +N      @Gz.@-!@      !@&1?ʡE@\( @Q@{G#@Pn@h|?!@!rh@jt@J+@zGa@!rh@ʡE@-@)\(@(\B#@+@uV@~j@"~@K7@
ףp=J#@Gz@Mb@}?5^#@羟/$@!rhm@-#@J+@Mb@ʡ@-?r   r   r   r   r   r   r   r}   r&   rj   rl   r   r   r   XXXr	  r  mXmXXr   m2xm2Xm2XXr|   r|   r   r     s                                                                               z#TestMaskedArrayMethods.setup_methodc              	   C   sF  t dddg}t| |j  t| |j  t| |j  t| |j  t|ddddd|jddddd t|dddg|jdddg t|	 |j	  t|
 |j
  t ddgddgg}t| |j  t| |j  t|ddg|jddg t| |j  d S )Nr   r   r   r   r   )r&   r   r   r   r   argmaxargminr(   compressZconjr*   diagonalrs   rt   rw   r   r   r	  r|   r|   r   test_generic_methods  s    ($ z+TestMaskedArrayMethods.test_generic_methodsc                 C   s   t jd}|t jdd  }tt|| t j|d< tt||  t j|d< tt|| t|}t|d< tt||dd tt||dd  |d9 }d|d< tt|ddd tt t j	j
gt j	d}tt|| d S )	Nr   g:0yE>r   r   T)rK   Fr   )r}   r   r   r
   r   r  rJ   rI   Ziinfoint_rY   r   r|   r|   r   test_allclose  s     

z$TestMaskedArrayMethods.test_allclosec                 C   sH   t jddddggdd}t||dds*tt||t dd	dsDtd S )
Nr   r   r   r   zm8[ns]r   r   )Zatolr  )r}   r&   r   r  r  rD  r|   r|   r   test_allclose_timedelta  s    z.TestMaskedArrayMethods.test_allclose_timedeltac                 C   sN  t dddgdddgddd	gg}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ddd
g t|dddd
g t|dddd
g t|dd
d
d
g t|   t|  t|dd
d
dg t|ddddg t|dd
d
dg t|dd
d
dg d S )Ngp=
ף?gp=
ף?g?gQ?gQ?g)\(?gףp=
?gףp=
?gffffff?TFr   r   r   r   r   )r}   r&   bool_rJ   r
   r   r   r   )r   r   r	  r  ZmxbigZmxsmallr|   r|   r   test_allany$  s2    z"TestMaskedArrayMethods.test_allanyc                 C   s   t dtd}tdddgdd}t| tk |j|d t| t|jd t|tk	 t dtd}t| tk |j|d t|  t|jd t|tk	 d S )	Nr|   r   r   r   r   Tr   r  )r2   r   r&   r
   r   rI   r   r   )r   storer  r|   r|   r   test_allany_oddities>  s    
z+TestMaskedArrayMethods.test_allany_odditiesc              
   C   sn  | j \
}}}}}}}}}	}
t| d t| d t| d t|	 d t| d t| d t| d t|	 d t|dddddddg t|	dddddddg t|dddddddg t|	dddddddg t|dddddddg t|	ddddddd	g t|dddddddg t|	dddddddg d S )
N#   r         r   r   r   r   r   )r   r   rR  rQ  )r   r   rJ  rK  r	  r  rL  rM  rN  rO  rP  r|   r|   r   test_argmax_argminP  s"    z)TestMaskedArrayMethods.test_argmax_argminc              &   C   s   t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$g$}t d%d&d%d&d%d%d&d%d&d&d%d&d%d%d%d&d%d&d%d%d%d&d&d&d&d%d%d&d%d%d%d%d&d%d&d%g$}t||d'}|d(d)}t|j|j t|j|d(d) t|j|jd(d) d S )*Nr#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  r   r   r   r   r   )r}   r&   clipr   r   r   )r   r   r	  r  Zclippedr|   r|   r   	test_clipg  s~                                                   z TestMaskedArrayMethods.test_clipc                 C   sJ   t d}t jj|ddgd d}|jdd|d t|jddgd  d S )Nr   r   r   r   r   r\  )r}   r   r   r   rc  r   r   rU  r|   r|   r   test_clip_outx  s    
z$TestMaskedArrayMethods.test_clip_outc                 C   s  t dddddgdd}|dk|d	k @ }t||ddg t|d
dg< ||}t|jddg t|jddg t|jd t|||  |dk }||}t|jdddg t|jdddg t|jd t|||  t dddgdddggdddgdddggd}|| dk}t|jddddg t|jddddg t	ddd
g}|j|d
kdd}t|jddgddgg t|jddgddgg d S )Nr   r   r   r   r   i'  r  r        @r   r   r   r   r   r?  rO  rN  r>  <   r      r)  )
rJ   r   rS  rI   r   r   r   rh   r}   r&   )r   r   	conditionr   r   r|   r|   r   test_compress  s2    

z$TestMaskedArrayMethods.test_compressc                 C   sR   t ddddgddddgd}| }t|| t|d< | }t|dddg d S )Nr   r   r   r   r   r   )r&   
compressedr   rI   r   r|   r|   r   test_compressed  s    
z&TestMaskedArrayMethods.test_compressedc                 C   s   dt fdtfdg}tdddg|d}tt|j t| t|}t|j|j t|j|j t	t||d}t|j|j t|j|j tdd	d
gdddgd}t|}t
t|j|j  |t}t
t|j|j d S Nr   r   rb  )r   r  z1.1)r   r  z2.2)r   r]  z3.3r   r   r   r   FTr   )r   r   rJ   r   r   r   rt  r3   rl   r2   r
   r}   r   r   rW  r   datatyper   r   r|   r|   r   
test_empty  s     

z!TestMaskedArrayMethods.test_emptyc                 C   s   dt fdtfdg}tdddg|d}tt|j t| tt||d}t|j|j t|j|j t	|}t|j|j t|j|j tdd	d
gdddgd}t	|}t
t|j|j  | }t
t|j|j d S rm  )r   r   rJ   r   r   r   rt  ry   rl   rz   r
   r}   r   r   rW  rn  r|   r|   r   
test_zeros  s     
z!TestMaskedArrayMethods.test_zerosc                 C   s   dt fdtfdg}tdddg|d}tt|j t| tt||d}t|j|j t|j|j t	|}t|j|j t|j|j tdd	d
gdddgd}t	|}t
t|j|j  | }t
t|j|j d S rm  )r   r   rJ   r   r   r   rt  ra   rl   rb   r
   r}   r   r   rW  rn  r|   r|   r   	test_ones  s     
z TestMaskedArrayMethods.test_onesc                 C   sF  t d}dddddg}t|}t||d}t|d tk t|d tk ddg|ddg< t|d tk t|d tk	 t|ddd	d
dg tt ddddddgd	 d}dd	ddg}||ddd	dg t|tddddd	dddddg
 t|j	ddddddddddg
 ||tdd	ddgddddg t
|ddd	dddddddg
 t|j	ddddddddddg
 tt ddddddgd	 d}t||ddd	dg t|tddddd	dddddg
 t|j	ddddddddddg
 t||tdd	ddgddddg t
|ddd	dddddddg
 t|j	ddddddddddg
 d S )Nr   r   r   r   r   r   r   rN  r   r   r   rm  r   r  )r   rF   r&   r
   rI   r   rJ   rf   r'   r   r   )r   r   r,  r	  r   r~  r|   r|   r   test_put  s2    " " " "zTestMaskedArrayMethods.test_putc                 C   s   t d}tddgddgd}|ddg| t|d	 tk	 t|d	 d	 t|d tk	 t|d d
 t|d tk t|d
 tk	 t|d
 d	 d S )Nr   r   r   FTr   r   r   r   r   )ry   r&   rf   r
   rI   r   )r   r   r   r|   r|   r   test_put_nomask  s    z&TestMaskedArrayMethods.test_put_nomaskc                 C   sl   t d}dddddg}t|}t|d |ddd}|dddddgdddddg t|jdddddg d S )	Nr   r   r   TrM  r   r   r   )r   rF   r&   rf   r   r   rU  r|   r|   r   test_put_hardmask  s     z(TestMaskedArrayMethods.test_put_hardmaskc                 C   s  t dd }t|ddddddgd}ddddddg}| }t||d t|ddddddg | }t||d t|jddddddg t|jddddddg td	d
ddddgddddddgd}| }t||| t|jddddddg t|jddddddg | }t||| t|jddddddg t|jddddddg | }|  t||| t|ddddddg d S )Nr   r   r   r   r  r   r   r   r   r?  rO  rN  r>  rg  )r   r&   r   rg   r   r   r   rQ  )r   r   r  r   r   Zmxxvaluesr|   r|   r   test_putmask  s.    $z#TestMaskedArrayMethods.test_putmaskc                 C   s  t dddddggdddddggd}| }t|jj|j t ddgddgd}| }t|jj|j t ddddgddddgdd	}t| jddddg d
|_d|_| }t|jddddg t|jddddg t|jd
 t|jddddddg t|jddddddg d S )Nr   r   r   r   r   r   r   Fr  r  r  r  r  )r&   rh   r   r   rl   r   r   )r   r   Zaravelarr|   r|   r   
test_ravel=  s     $z!TestMaskedArrayMethods.test_ravelc                 C   sT   t d}t|d< |dd}t|jd t|jjd t|jd t|jjd d S )Nr   r   r   r  r  )r   rI   rj   r   rl   r   r  r|   r|   r   test_reshapeS  s    z#TestMaskedArrayMethods.test_reshapec                 C   s  t ddddgddddgtjd}t|}t|jddddg t|jddddg t|dd}t|jddddg t|jddddg |  t|jddddg t|jddddg t ddddgddddgtjd}|jdd t|jddddg t|jddddg ddddg}t|}ttt	t
  t ddd	d
dgttjd}t|dd}t|jd
d	dddg t ddd	d
dgdddddgtjd}t|dd}t|jddd
d	dg t|jdddddg t dd	gtjd}t|dd}t|t d	dgtjd d S )Nr   r   r   r   r   r`  Fr  r   r   stablekind)r&   r}   r  rp   r   r   r   r
   rY  sortedr   r_   rC  )r   r   sortedxr|   r|   r   	test_sort]  s6      $z TestMaskedArrayMethods.test_sortc                 C   sH   t ddddddgtjd}t ddddddg}t|dd	}t|| d S )
Nr   r   r   r   r   r   r   r}  r~  )r&   r}   r  r%   r   )r   r   r  Zcomputedr|   r|   r   test_stable_sort  s    z'TestMaskedArrayMethods.test_stable_sortc              	   C   s   t ddddgddddgtjd}t tddtd	dtdd
tdddtdd	dfD ]<}t|f|}|t|f| }t|j|j t|j|j qTd S )Nr   r   r   r   r   r`  Tr  Fr  )r   r  )	r&   r}   r  dictrp   r%   r   r   r   )r   r   kwargsr  Z
argsortedxr|   r|   r   test_argsort_matches_sort  s     

z0TestMaskedArrayMethods.test_argsort_matches_sortc              	   C   sd  t dddgdddgg}|d 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 t dddgdddggdddgdddggd}|d t|dddgdddgg t|jdddgdddgg t dddgdddggdddgdddggd}|d t|dddgdddgg t|jdddgdddgg t dddgdd	d
gdddggdddgdddgdd	d
ggdddgdddgdd	d
ggdd	d
gdddgdddggg}t||d dk< | }|d}|d |d t|| | }|d}|d |d t|| | }|d}|d |d t|| d S )Nr   r   r   r   r   r  r   rm  r   r   r   r  )rJ   rp   r   r   rI   r   r7   )r   r   amZanr|   r|   r   test_sort_2d  sF    

,
,











z#TestMaskedArrayMethods.test_sort_2dc              	   C   s  t dddddddgdd	dddddgd
tfdtfgd}t dddddddgdddddd	dgd
tfdtfgd}t dddddddgdddddd	dgd
tfdtfgd}t|}t|| t|j|j t|dd}t|| t|j|j tdtdfg}||}t|}t|dd}d S )Nr  r   r  )r   r   rk  r@  r  r^  r_  r   r  r  Fr  r  r   )r&   r   rp   r   r   r}   r~   rW  )r   r   Z	mask_lastZ
mask_firstr   r  r|   r|   r   test_sort_flexible  s2    


z)TestMaskedArrayMethods.test_sort_flexiblec                 C   s8   t dddddgdddddgd}tt|t| d S )Nr   r   r   r   r   r   r   )r&   r   r}   r%   rD  r|   r|   r   test_argsort  s     z#TestMaskedArrayMethods.test_argsortc                 C   s   t dddgg}t| dddg t dddggdddggd}t| dddg t| jdddg tdgg}| }t|d d|d< t|d d t dggdd}| }t|tjjk	 t|j	d d|d< t|d d d S )Nr   r   r   r   .r^  T)
rJ   r   squeezer   r}   r&   r
   r   rI   r   )r   r   arrZarr_sqm_arrZm_arr_sqr|   r|   r   test_squeeze  s     
z#TestMaskedArrayMethods.test_squeezec              &   C   s
  t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$g$}t d%d&d%d&d%d%d&d%d&d&d%d&d%d%d%d&d%d&d%d%d%d&d&d&d&d%d%d&d%d%d%d%d&d%d&d%g$}t||d'd(d(}|d)d*d*d)}|d%d&}t|d+ |d d d+f  |d%d*}t|jd, d S )-Nr#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  r   r   r   r   r   r   r   )r   r   r   r   )r}   r&   rj   swapaxesr   rl   )r   r   r	  rL  rM  Z	mXswappedZ
mXXswappedr|   r|   r   test_swapaxes  s                                                      z$TestMaskedArrayMethods.test_swapaxesc                 C   sf  t ddddgddddg}t|dddgt dddgdddg t|dddg|dddg  t|ddgddggt ddgddggddgddgg t|d tjjk t|dtjjk tdddgddd	ggdddgdddggd
}t|jddgddtddgdd	ggddgddggd
 tt|ddgddtddgdd	ggddgddggd
 d S )Nr   r?  rO  rN  r   r   r   r>  rg  r   r   r)  )rJ   r   rt   r
   r}   r   rI   r&   r   r|   r|   r   	test_take  s    (  ,""z TestMaskedArrayMethods.test_takec                 C   s>  t d}t dd d d f t dd d d f  }t||t|kd}t||dd}tddd	gdd	d
gd	d
dgd
ddgdddgg}t|| t||}tddd	gdd	d
gd	d
dgd
ddgdddgg}t |d<  |d< |d< t|| t|j|j tddd}t||}t |d< |d< t|| t|j|j d S )N)rN  r  %   r  rh  r   r   r   rc  moderN  r  r  r  rh  r   )r   r   r   r   )r   r   r   r   r   r_  rk  )r}   r&   r   r   rt   r   rI   r   )r   r   indicesZmindicesr   ctrlr|   r|   r   test_take_masked_indices#  s4    
,






z/TestMaskedArrayMethods.test_take_masked_indicesc                 C   st  t td}t|ddg< | }t|d d k t|d d k d|_| }dd ddgdd	d
dgddd dgg}t|d dd ddg t|d dd	d
dg t|d ddd dg t|| t tt	dddgdddgdddgdt
fdtfdgd}t|d< t| dddg t ddgddgdt
fdt
fgd }| }t|dd gddgg |d }| }t|dd g d S )!Nrj  r   r|  r   r   r   r   r   r   r   rm  r   r     r  r  r]  r[  r\  r^  r   r   rb  r   r   )r   r  s   one)r   r     two)NNNr  r_  r^  r`  )r&   r}   r   rI   tolistr
   rl   r   r   r   r   r   )r   r   Zxlistr  r   r   r|   r|   r   test_tolistA  sB    "
z"TestMaskedArrayMethods.test_tolistc                 C   s~   t ddgdtfdtfgd}|D ]$}| D ]}tt|tj  q,q d|jd< |D ]$}| D ]}tt|tj  q`qTd S )Nr_  r  r   r   r   r   )r&   r   r  r
   rY  r}   Zgenericr   )r   r   entryrt  r|   r|   r   test_tolist_specialcasee  s    
z.TestMaskedArrayMethods.test_tolist_specialcasec                 C   sX  t d}| }t|d |j t|d |j t|ddddg< | }t|d |j t|d |j dtfd	d
tfg}tdd t	t
 ddt
jdD |d}t|ddddg< | }t|d |j t|d |j t
d}tdd t	t
 dt
jdt
jdD |d}t|ddddg< | }t|d |j t|d |j d S )Nr   r   r   r   r   r   r   r~  r  r  c                 S   s   g | ]\}}}|||fqS r|   r|   )r   r~  r   r  r|   r|   r   r     s     z6TestMaskedArrayMethods.test_toflex.<locals>.<listcomp>ZABCDEFGHIJKLMr   r  c                 S   s   g | ]\}}}|||fqS r|   r|   )r   r~  r  ffr|   r|   r   r     s     )r   toflexr   r   r   rI   r   r   r&   r   r}   r   r   r~   r   )r   r   r  r  r|   r|   r   test_toflexs  s<    



z"TestMaskedArrayMethods.test_toflexc                 C   s   t dddg}t| }t|| t|j|j t dddgdddgd}t| }t|| t|j|j t dddgd	d
dgdtfdtfgd}t| }t|| t|j|j d S )Nr   r   r   r   r   r\  r]  )r   r   rk  r^  r_  r   r  r`  )r&   r:   r  r   r   r   r   r   r  r|   r|   r   test_fromflex  s    


z$TestMaskedArrayMethods.test_fromflexc                 C   s   t dddddggdddddgd}t dgdgdgdgdggdddddgd}t|j| t| | tt|jd|d d S )Nr   r   r   r   r   r   r   )rJ   r   r  rw   r   cumsum)r   Zmarrayr  r|   r|   r   test_arraymethod  s    "z'TestMaskedArrayMethods.test_arraymethodc                 C   s4   t jjddd}t|jj|j t|jj|j d S )N*   Tr   )r}   r   r&   r   r  r   r   r   r|   r|   r   test_arraymethod_0d  s    z*TestMaskedArrayMethods.test_arraymethod_0dc                 C   sf   t jdddgdddgg}t jj|d< |j}d|d	< t jj|d< t|j|jj t|j|jj d S )
Nr   r   r   r   r   r   r_  r   rk  )r}   r   r&   rI   r  r   r   r   )r   r   Zxtr|   r|   r   test_transpose_view  s    z*TestMaskedArrayMethods.test_transpose_viewc                 C   s`   t jd}d|d< t jj|d< d|d< | }d|d< t|j| j t|j| j d S )Nr  r   r^  r@  r?  r  r   )r}   r   ry   rI   rT  r   r   r   )r   r   Zxdr|   r|   r   test_diagonal_view  s    z)TestMaskedArrayMethods.test_diagonal_viewN)*r   r   r   r   rV  rX  rY  r[  r^  rb  rd  re  rj  rl  rp  rq  rr  r  rs  rt  ru  rw  rz  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r|   r|   r|   r   r!    sN    	
	
%( $ 
r!  c                   @   s   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d Zdd Zdd Zdd Zdd Zdd Zdd Zedd  Zd!d" Zd#d$ Zd%d& Zed'd(d)d* Zd+S ),TestMaskedArrayMathMethodsc              &   C   s  t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$g$}|d%d%}|d&d'd'd&}t d(d)d(d)d(d(d)d(d)d)d(d)d(d(d(d)d(d)d(d(d(d)d)d)d)d(d(d)d(d(d(d(d)d(d)d(g$}t||d*}t|||jd*}t|||jd*}t d)d)d(d)d(d(d)d)d)d)d(d)d(d(d)d)d(d)d(d(d(d)d)d)d)d(d(d)d)d(d(d(d)d(d)d)g$}t||d*}	t|||jd*}
t|||jd*}||||||||	|
|f
| _d S r"  rH  rI  r|   r|   r   r     s                                                                               z'TestMaskedArrayMathMethods.setup_methodc              
   C   s   | j \
}}}}}}}}}	}
|d}t|j|dd |d}t|j|dd |d}t|j|dd |d}t|j|dd d S Nr   r   )r   r  r   r   r7   cumprod)r   r   rJ  rK  r	  r  rL  rM  rN  rO  rP  ZmXcpr|   r|   r   test_cumsumprod  s    



z*TestMaskedArrayMathMethods.test_cumsumprodc                 C   s   t tjddddd}t |d d df<  |d< |d< dD ]}tt|}t||}tjdtd	}|	d
 ||d|d}t
||k t||d|d tdtd	}|d|d}t
||k q@d S )Nr   r   rj  r   r   r  )r  r  r   r   r   r  r  )r   r   r  r  r  r  r  r|   r|   r   test_cumsumprod_with_output  s     


z6TestMaskedArrayMathMethods.test_cumsumprod_with_outputc              
   C   s   | j \
}}}}}}}}}	}
|j\}}t| |   t|t}t|t}t|D ] }|d d |f   ||< qZt|D ]}||   ||< qt|d| t|d| d S r  )	r   rl   r   r  rk  r}   ry   r   rM  )r   r   rJ  rK  r	  r  rL  rM  rN  rO  rP  r,  Zrowscolskr|   r|   r   test_ptp  s    
z#TestMaskedArrayMathMethods.test_ptpc                 C   s>   t ddgddgtd}|d }t|d d t|jd  d S )Nr   r   r   r   r`  r   Zbx)rJ   r  r   r
   r   r  r|   r|   r   test_add_object  s    z*TestMaskedArrayMathMethods.test_add_objectc                 C   s`   t dddgdddgtd}t| d t dddgdddggtd	}t|jdd
dddg d S )Nr   r   r   r   r`  r   r   r   r   r)  rm  r  )rJ   r  r   rs   rD  r|   r|   r   test_sum_object#  s    z*TestMaskedArrayMathMethods.test_sum_objectc                 C   s`   t dddgdddgtd}t| d t dddgdddggtd	}t|jdd
dddg d S )Nr   r   r   r   r`  r   r   r   r   r)  r   r  )rJ   r  r   r  rD  r|   r|   r   test_prod_object*  s    z+TestMaskedArrayMathMethods.test_prod_objectc                 C   s8   t dddgtd}t| d t| dddg d S )Nr   r   r   r   r   r   )rJ   r  r   r  r   rD  r|   r|   r   test_meananom_object1  s    z/TestMaskedArrayMathMethods.test_meananom_objectc                 C   sP   t dddg}t| j|j d|_t| j|j ttj|  d S )Nr   r   r   T)	rJ   r   r   rl   r   r
   r}   r   Z	is_maskedrD  r|   r|   r   test_anom_shape7  s
    z*TestMaskedArrayMathMethods.test_anom_shapec                 C   s  t tdddd}t| dddgdd	d
gg t|jdddddgd	d	d	gg t|jdddddgdddgg dddgdddgg|_d}t| |dd|gd|dgg t|jdd|dd|gd	|dgg t|jdd|dd|gd|dgg d S )Nr   rm  r   r   g      g      r   r   r  r  r   r)  r   r   r   rx  g      g      g      ?g      @)rJ   r}   r   rj   r   r   r   r7   )r   r   Zmvalr|   r|   r   	test_anom>  s*    z$TestMaskedArrayMathMethods.test_anomc              
   C   s   | j \
}}}}}}}}}	}
| }t| |    t| | t|j|  dd  tt||  t	d
ddd}tj|d}t|jddd|jddd d S )	Nr   r)      r   r   Fr   )Zaxis1Zaxis2)r   rT  r   tracerk  rs   r   r   r}   r   rj   r   rJ   )r   r   rJ  rK  r	  r  rL  rM  rN  rO  rP  ZmXdiagr  r  r|   r|   r   
test_traceO  s    z%TestMaskedArrayMathMethods.test_tracec              
   C   s  | j \
}}}}}}}}}	}
|d}||}t|d|| t|jtk |d}||}t|d|| t|jd  t|}|j||d t|| |dd}|d|d }}||}t|d|| t|}|j||d t|| d S )Nr   r   r\  r   r|  )	r   r7   dotr   r
   r   r_   r3   r  )r   r   rJ  rK  r	  r  rL  rM  rN  rO  rP  ZfxrZfXr%  ZmYYZfXXZfYYr|   r|   r   test_dot^  s&    





z#TestMaskedArrayMathMethods.test_dotc                 C   s   t ddgddggddgddggd}t ddgddggddgddggd}t ddgddgg}|j||d t|dddgdd	gg t|jddgddgg d S )
Nr   r   r   r   r   r   r\  r      )rJ   r  r   r7   r   r  r|   r|   r   test_dot_shape_mismatchv  s    $$z2TestMaskedArrayMathMethods.test_dot_shape_mismatchc                 C   s   t ddddgdd}t ddddgdd}tt| tj tt| tj | | ktdksntt t	d
d	dd}tdd
d}tt|jddt tt|jddt t|jd|d|k t|jd|d|k d S )Nr   r   r   r   rf  r   Tr  r  re  r)  r  )r&   r   r"  r  r}   r  r  rZ  r  r   rj   r2   r   r
   )r   Zfoobarr|   r|   r   test_varmean_nomask  s    z.TestMaskedArrayMathMethods.test_varmean_nomaskc              
   C   s  | j \
}}}}}}}}}	}
t|jd d|   t|jd d|   t|jd dd| jdd t|jd dd| jdd t|jddj|jddj t| j| j |jdd|jdd }}t|jd dd| jdd t|jd dd| jdd tdD ]j}t|| ||    t|| |d d |f    tt	|| |d d |f    q$d S )	Nr)  r   r*  ddofr  r   r   r   r   
r   r   r  rk  r  r   rl   rM  r}   rq   r   r   rJ  rK  r	  r  rL  rM  rN  rO  rP  ZmXvar0ZmXvar1r  r|   r|   r   test_varstd  s0    "z&TestMaskedArrayMathMethods.test_varstdc                 C   sN  t jdtd}tdtd}ttddd}dD ]v}t||}t| tk t|dtk t|dtk ||d t|tk	 t|jd ||d tt 	| q.ttddd}d	|d< dD ]}t||}t|d
dtk t|dd
dtk t|dd
dtk ||d
d t|tk	 t|jd ||d
d tt 	| qd S )Nr   r   r   Tr   )r  r  r   r\  r  r   r  )r  r  )
r}   r&   r   r   r  r
   rI   r   r   rg  )r   r  Zmoutr   
methodnamemethodr|   r|   r   test_varstd_specialcases  s2    



z3TestMaskedArrayMathMethods.test_varstd_specialcasesc                 C   s   t dddgdddggdddgdddggd}|jddd}t|ddddg t|jdddg |jddd}t|ddddg t|jdddg |jddd}t|ddddg t|jdddg d S )Nr   r   r   r  r   )r&   r  r   r7   r   r  r|   r|   r   test_varstd_ddof  s    ,z+TestMaskedArrayMathMethods.test_varstd_ddofc                 C   s   t dd}t|d< t|}t|dddg t|}t|dddg t|jdddg t|}tdddgdddgdddggdddgdddgdddggd}t|| d S )	Nr  r  r@  r   r   r   r   r   )r   rj   rI   r}   r/   r   r   r&   )r   r   r  r  r|   r|   r   	test_diag  s    
z$TestMaskedArrayMathMethods.test_diagc                 C   s  t dddgdddgg}t|dddd	g t|d
ddg t|dddg t|ddddg t|d
ddg t|dddg t|ddddg t|d
ddg t|dddg t|ddddg t|d
ddg t|dddg d S )Nr   r   r   r   r   r   r   rm  r  r   r   r   r  x   )r&   r   rs   r  rY   rV   rD  r|   r|   r   test_axis_methods_nomask  s    z3TestMaskedArrayMathMethods.test_axis_methods_nomaski Zb)Z
free_bytesc                 C   s2   t tjddtjdtdd}t| d d S )N)'  r  i  r   r   g    @)rJ   r}   r  Zuint16ry   r   r  rD  r|   r|   r   test_mean_overflow  s    z-TestMaskedArrayMathMethods.test_mean_overflowN)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r|   r|   r|   r   r    s,    	
"r  c                   @   s   e Zd Zdd Zdd ZdS )!TestMaskedArrayMathMethodsComplexc              &   C   s  t ddddddddd	d
dddddddddddddddddddddd d!d"d#d$g$}|d%d%}|d&d'd'd&}t d(d)d(d)d(d(d)d(d)d)d(d)d(d(d(d)d(d)d(d(d(d)d)d)d)d(d(d)d(d(d(d(d)d(d)d(g$}t||d*}t|||jd*}t|||jd*}t d)d)d(d)d(d(d)d)d)d)d(d)d(d(d)d)d(d)d(d(d(d)d)d)d)d(d(d)d)d(d(d(d)d(d)d)g$}t||d*}	t|||jd*}
t|||jd*}||||||||	|
|f
| _d S )+Ny              @y        Gz.@y        -!@y              !@y        &1?r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  y        "~@y        K7@r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  y        -?r   r   r   r   r   rG  rH  rI  r|   r|   r   r      s                                                                               z.TestMaskedArrayMathMethodsComplex.setup_methodc              
   C   sR  | j \
}}}}}}}}}	}
t|jd d|   t|jd d|   t|jddj|jddj t| j| j |jdd|jdd }}t|jd dd| jdd t|jd dd| jdd tdD ]h}t|| ||    t|| |d d |f    tt	|| |d d |f    qd S )	Nr)  r   r   r   r   r  r  r   r  r  r|   r|   r   r     s$    "z-TestMaskedArrayMathMethodsComplex.test_varstdN)r   r   r   r   r  r|   r|   r|   r   r    s    r  c                   @   s^  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d Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zejjed!d"d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Z ej!d7d8d9gd:d; Z"d<d= Z#d>d? Z$d@dA Z%dBdC Z&dDdE Z'dFdG Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRS )STestMaskedArrayFunctionsc                 C   s   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}t||d}t||d}|d ||f| _d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r}   r&   r   rJ   r   r  )r   r   r   r   r   r   r   r|   r|   r   r   6  s    &"
z%TestMaskedArrayFunctions.setup_methodc                 C   s2   ddg}t d|}t|ddg t|d d d S )Nr   r   F)rU   r   r  r|   r|   r   test_masked_where_bool@  s    
z/TestMaskedArrayFunctions.test_masked_where_boolc                 C   sZ   dddg}t |d}t|| t|jdddg t|d}t|| t|jdddg d S Nr   r   r   r   )rK   r   r   rQ   rI  r|   r|   r   test_masked_equal_wlistF  s    




z0TestMaskedArrayFunctions.test_masked_equal_wlistc                 C   s6   dddg}t |d}t|jdddg t|jd d S r  )rK   r   r   r   rI  r|   r|   r   test_masked_equal_fill_valueO  s    

z5TestMaskedArrayFunctions.test_masked_equal_fill_valuec                 C   s  t dddddg}t|d< ttt|d|t|d ttt|d|t|d ttt|d|t	|d ttt
|d|t|d ttt|d|t|d ttt|d|t|d ttt|d|t|d ttdddddgddd	d
dgddd	d
dg d S )Nr   r   r   r   r   r   r   r   r   r   r   r  )r&   rI   r   rU   r=   rL   r>   rM   rB   rO   rC   rP   r`   rQ   r4   rK   r   r|   r|   r   test_masked_where_conditionU  s     z4TestMaskedArrayFunctions.test_masked_where_conditionc                 C   s0   t dtd}t|jt}t||}t|| d S )N)r   r   r   r   )ra   r   ry   rl   r   rU   r   )r   rv  rw  Zctestr|   r|   r   test_masked_where_odditiese  s    
z3TestMaskedArrayFunctions.test_masked_where_odditiesc                 C   sT   t d}tt td| W 5 Q R X t|d}t|jddddddddddg
 d S )Nr   r   r   )r   r   
IndexErrorrK   r   r   r  r|   r|   r   "test_masked_where_shape_constraintl  s
    

z;TestMaskedArrayFunctions.test_masked_where_shape_constraintc              	   C   s|   t jdddgd}t jdd t j|d dk |}W 5 Q R X t|jjj|jj t|d t j	t dt 
d d S )	Nr   )r   z<f2)r  z<f4r   r  )Zoverr   r   )r}   ry   r  r   rU   r   r   r~   r   rJ   ra   )r   r   r  r|   r|   r   test_masked_where_structureds  s     z5TestMaskedArrayFunctions.test_masked_where_structuredc                 C   s.   t d}t d}ttt jj|dk| d S )Nr   r   r   )r}   r   r   r  r   rU   r  r|   r|   r   test_masked_where_mismatch  s    

z3TestMaskedArrayFunctions.test_masked_where_mismatchc              	   C   s*  t tttddddddddg t tttddddddddg t ttttddddddgdddjdddddg t ttttddddddgdddjdddddg t ttttddddddgddjdddddg t ttdddddgdddddgddjdddddg d S )	Nr   r   r   r      r   r   r   )	r   rN   r   rM  rR   r&   r   rK   rQ   r   r|   r|   r   test_masked_otherfunctions  sD    $  z3TestMaskedArrayFunctions.test_masked_otherfunctionsc                 C   s@  t dddddgdddddgd}t| d	d
dddg t|ddddddg t|ddddddg t|}|j|d t|d	d
dddg t d	d
dddg}t dddddg}t|d< t||| }t|d	d
dddg t|d< t||| }t|d	d
dddg t|d tk t|d tk	 t|d tk d S )Ng82?g	@g,E|@gE@gŏ1@r   r   r   r   r   r   r   r  g333333?gffffff@rf  gffffff@g@r   g(\?gS㥛@g-@gʡE@gK@r\  r   r   r   r   rs  )r&   r   r  r3   rI   rx   r
   )r   r   r   r   rq  r   r|   r|   r   
test_round  s(    z#TestMaskedArrayFunctions.test_roundc                 C   s   t tjddddd}t |d d df<  |d< |d< tjdtd}|d	 tj	|d
|d}t
||k t||j	d
|d tdtd}|j	d
|d}t
||k d S )Nr   r   rj  r   r   r  r   r   r   r   )Zdecimalsr  )r&   r}   r   r  rj   rI   r2   r   r  r  r
   r   )r   r   r  r  r|   r|   r   test_round_with_output  s     
z/TestMaskedArrayFunctions.test_round_with_outputc                 C   s   t ddgd}t| d t ddgd}t| tk t ddgd}tjdtd}|d |j|d t|d t ddgd}t d	dgd}|j|d t|d
 d t ddgd}t d	dgd}|j|d t|d
 tk d S )Nr  Fr   r   Tr   r   r\  g    r|   )	r&   r   r  r
   rI   r}   r2   r   r  )r   r   r  r|   r|   r   test_round_with_scalar  s"    

z/TestMaskedArrayFunctions.test_round_with_scalarc                 C   s*   t d}tt|t t|t d d S Nr   )r?   r
   rY  r   r   r}   rD  r|   r|   r   test_identity  s    z&TestMaskedArrayFunctions.test_identityc                 C   s  d}t t|dd tt|ttk tdddddg}tdddddgddddd	gd
}t||}t |dddddg t|jd	dddd	g t|_t||}t|jd	dddd	g || }t|j|j t || t |j	|j	 ||C }t|j|j t || t |j	|j	 d S )Ngr   g\(\?r  r   r   r   r   r   r   gKTj?)
r   rd   r
   rI   r&   r   r   r_   r   r   )r   r   r   r   r   r|   r|   r   
test_power  s&     



z#TestMaskedArrayFunctions.test_powerc                 C   sl  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}t ||g}t|dddgdddggd	}tdddgdddggdddgdddggd	}|| }t|| t|j|j || }t|| t|j|j || }t|| t|j|j tdddgdddggdddgdddggd	}|| }t|| t|j|j || }t|| t|j|j d S )Nr   r   r   r   r   r  r   r   r   r   r   r   r     iq        )r}   r&   r   r   )r   Za2Za2mb1Zb2Zb2mr  r   r|   r|   r   test_power_with_broadcasting  s4    




z5TestMaskedArrayFunctions.test_power_with_broadcastingzfp errors don't work in wasmreasonc           
      C   s  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}t||d}t||d}|d t|dk|d}t|ddddddddddddg t|j|j t|dkd|}t|dd	ddd
dddddd	dg t|jddddddddddddg t|dk|t}t|ddddddddddddg |j	 }d||dk
d< t|j| t jdd* tjtdd |t}	W 5 Q R X W 5 Q R X t|	dk|	t}t|ddddddddddddg t|j|	j d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ig      "Tr  r  zinvalid valuer   r   r   r   )r}   r&   r   rJ   r   rx   r   r   rI   r   r7   r  r   r   RuntimeWarningr   r   r~   )
r   r   r   r   r   r   r   r   tmpZixmr|   r|   r   
test_where  sZ    &"
          $     
"z#TestMaskedArrayFunctions.test_wherec                 C   sJ   t d }td }| }tt jd||| tt jd||| d S )NT)r}   r&   rJ   r   r   r   rx   )r   r   r   r  r|   r|   r   test_where_object4  s
    
z*TestMaskedArrayFunctions.test_where_objectc                 C   s   t d}t|d< |dk}t||t}t|j|jk t|d tk t|d tk t|d tk t|d tk	 t|d tk	 t|| t|t|}t|j|jk t|d tk t|d tk	 t|d tk	 t|d tk t|d tk d S )Nr   r   r   r   rm  r  )r   rI   rx   r
   r~   r   rt  r|   r|   r   test_where_with_masked_choice;  s$    
z6TestMaskedArrayFunctions.test_where_with_masked_choicec                 C   s  t dddddg}t dddddg}t|d< t||| }t|ddd	d
dg t|d< t||| }t|ddd	d
dg t|d tk t|d tk	 t|d tk tdd}t|d< tddd }t|d< t dddddgdddddgd}|d}t|||}t|||}t|| tt|tk t|dddddg t|td}t|dddddg t|dt}t|dddddg d S )Nr   r   r   r   r   r   r   r   r   r   rs  r   r   r   r   r   rN  r>  r  )	r&   rI   rx   r   r
   r   r7   r;   r_   )r   r   rq  r   r   cmr   r|   r|   r    test_where_with_masked_conditionQ  s4    
 

z9TestMaskedArrayFunctions.test_where_with_masked_conditionc                 C   sX   t jdt jd}t jdt jdd }t|dk||j}t t jt jgg }t|| d S )Nr   r   r  r  )r}   r   r  Zfloat32rx   r~   Zfind_common_typer   )r   r   r   r   r  r|   r|   r   test_where_typen  s
    z(TestMaskedArrayFunctions.test_where_typec                 C   s^   t ddd}t d}t dddg||}tdddg||}t|| t|j|j d S )Nr  r   r   r   )r}   r   rj   ry   rx   r   r~   )r   r   r   r  r   r|   r|   r   test_where_broadcastv  s    

z-TestMaskedArrayFunctions.test_where_broadcastc                 C   s|   t dtfdtfg}t jdddg|d}t jd|d}t dd	d	g||}t dd	d	g||}t|| t|j|j d S )
Nr   r   r  r   r  r   )r   r?  r   r   )r}   r~   r   r&   rx   r   )r   r  r   r   r  r   r|   r|   r   test_where_structured  s    
z.TestMaskedArrayFunctions.test_where_structuredc                 C   sv   t dtfdtfg}t jdddg|d}tdddg|t}tdddg|}t|j|j t|| t|j|j d S )	Nr   r   r  r   r  r   r   r   )	r}   r~   r   r&   rx   rI   rU   r   r   )r   r  r   r   r  r|   r|   r   test_where_structured_masked  s    
z5TestMaskedArrayFunctions.test_where_structured_maskedc              	   C   sL   t jdtd}t j|d< t j|d< tjtdd t j	| W 5 Q R X d S )Nr   r   r   r   z!not supported for the input typesr   )
r}   r   r  ZPINFNaNr   r   r   r   masked_invalidrD  r|   r|   r   test_masked_invalid_error  s    

z2TestMaskedArrayFunctions.test_masked_invalid_errorc                 C   sF   G dd d}t j| }t|jt |  t|jdddg d S )Nc                   @   s   e Zd ZdZdd ZdS )zCTestMaskedArrayFunctions.test_masked_invalid_pandas.<locals>.SeriesZnonsensec                 S   s   t dt jt jgS r  )r}   r&   r  r  r   r|   r|   r   	__array__  s    zMTestMaskedArrayFunctions.test_masked_invalid_pandas.<locals>.Series.__array__N)r   r   r   r   r  r|   r|   r|   r   Series  s   r  FT)r}   r   r  r   r   r&   r   )r   r  r  r|   r|   r   test_masked_invalid_pandas  s    z3TestMaskedArrayFunctions.test_masked_invalid_pandasr   TFc                 C   sj   t jddddg}|jtks"tt jj||d}|jtk	s@t|jtksNtt |j	|j	|ksftd S )Nr   r   r   r   r(  )
r}   r   r&   r   r_   r  r  r   r   r   )r   r   r   r   r|   r|   r   test_masked_invalid_full_mask  s    z6TestMaskedArrayFunctions.test_masked_invalid_full_maskc              	   C   s|  ddddgddddgd	d
ddgddddgg}t ddddg|}t|td	dddg t ddddg|dd}t|td	dddg t ddddg|dd}t|td	dddg tddddgddddgd}t ||dd}t|tddddg t|jddddg t|ddddgddddgddddgddddggd}ddddg}t ||dd}t|td	dddg t|jddddg d S )Nr   r   r   r   r   r  rj  r  r?     rh     rO  ra  r  !   r   rc  r  wrapr   r  )r(   r   r&   r   )r   choiceschosenindices_r|   r|   r   test_choose  s,    
 

 
z$TestMaskedArrayFunctions.test_choosec              	   C   sN  ddddgddddgd	d
ddgddddgg}t dtd}tddddg||d}t|td	dddg t||k t dtd}tddddgddddgd}t||d|d}t|tddddg t|jddddg t|ddddgddddgddddgddddggd}ddddg}t dtdt}t||d|d}t|tddddg d S )Nr   r   r   r   r   r  rj  r  r?  r  rh  r  rO  ra  r  r  r   r   r\  r   r   )r  r  r  r  )	r2   r   r(   r   r&   r
   r   rW  r   )r   r  r]  r  r  r|   r|   r   test_choose_with_out  s*    
 

 
z-TestMaskedArrayFunctions.test_choose_with_outc                 C   s   t d}t|d< |d}t|jd t|jd  |dd}t|jd t|jd  |jddd}t|jd t|jd  |jdddd}t|jd t|jd  t|d	}tt|t	 t|jd	 t|d
 tk t|jd  d S )Nr   r   )r   r   r  r   r   r  r  )r   r   r^  )
r   rI   rj   r   rl   r
   r  r}   rY  r   )r   r   r   rq  r|   r|   r   r{    s&    
z%TestMaskedArrayFunctions.test_reshapec              	   C   s  dt fdt fg}t|}t|dtfdtfg t|t|k t df}t|}t|tdf t|t|k t }t|}t|tt t|t|k dt fddt fdt fgfg}t|}tddddgfg}t|| t|t|k dt dffg}t|}t|tdtdffg t|t|k d	t fg}t|}t|td	tfg t|t|k tdtd
fg}t|}tdtfd|fg}t|}t|tdtfddtd
fgfg t|jd d |k d S )Nr   r   r   r  r  )r   r  )r  r  )r  r  )r   r   r   r   )	r   rG   r   r   r
   r}   r~   r   r~  )r   ntyper   r  Z	base_typeZ
base_mtypeZsub_typer|   r|   r   test_make_mask_descr  s>    

$z-TestMaskedArrayFunctions.test_make_mask_descrc                 C   s  ddg}t |}t|jt t|ddg tjddgtd}t |}t|jt t|ddg dtfdtfg}tjddg|d}t |}t|jt t|ddg dtfdtfg}tjddg|d}t ||jd}t|j| t|| dtfdtfg}dtfdtfg}tjddg|d}t ||jd}t|j| t|tjddg|d tjdd	dd
 }tt	|tj
 t ||jd}t|| t||k	 tjdddd
 }t ||jd}t|| ddg}ttg}d}t|||D ]4\}	}
}t t|	|
|d}t|tk||	|
|f  qd S )Nr   r   r   r   r   r^  r_  rV  z?,?r|   r  TFzcopy=%s, shrink=%s, dtype=%s)r   r   r~   )rF   r   r~   r   r}   r&   r   r   r
   rY  void	itertoolsre   r_   )r   r   r   mdtypeZbdtypeZtest2ZboolsZdtypesZ	msgformatcpyZshrr  r   r|   r|   r   test_make_mask-  sL    


z'TestMaskedArrayFunctions.test_make_maskc                 C   sR  dt fdt fg}tjddddg|d}t|t}t|| tt|}t|| t|d}t|| tjddddg|d}t||}tjddddg|d}t|| d	t fd
t fg}tjddddg|d}zt||}W n tk
r   Y nX dt fddt fdt fgfg}tjddg|d}tjddg|d}	tjddg|d}
tt||	|
 d S )Nr   r   r^  r_  rk  r   Fr@  r   r  r  r  r  r  r   r^  r  )r   r}   r&   rH   r_   r   r   )r   r  r   r   r  r  Z	othertyper~   r  ZbmaskZcntrlr|   r|   r   test_mask_or]  s.    







z%TestMaskedArrayFunctions.test_mask_orc                 C   s   t jdddgtd}tt|| t jddgdtfdtfgd}t|}t jddddgtd}t|| dtfddtfd	tfgfg}d
dg}t j||d}t|}t jddddddgtd}t|| d S )Nr   r   r   r^  r_  r   r   r  r  r  r  )r}   r&   r   r   r6   )r   r   r   r  r
  r   r|   r|   r   test_flatten_mask|  s    
z*TestMaskedArrayFunctions.test_flatten_maskc                 C   sT   t ddddg}t|dd}t|}t||  t|d}t||dd d S )Nr   r   r   r   Fr   r  )r}   r&   r   r   rj   )r   r   r	  r   r|   r|   r   test_on_ndarray  s    
z(TestMaskedArrayFunctions.test_on_ndarrayc                 C   sx   t d}d|_t ddddg}|dddg }t jj||dd}t|| t j|}t jj||dd}t|| d S )	Nr   r  TFr   r   r   r)  )r}   r   rl   r&   r   rS  r   )r   r  Zcondr  r   Zmarrr|   r|   r   rj    s    

z&TestMaskedArrayFunctions.test_compressc                 C   s  t jddg}t j|}tt|t jk G dd dt j}t j|dd}t j|}tt||k t jdgdgg}t|jd t jdggggg}t|jd G dd dt	}t j|g gg gg}t|jd G d	d dt	}t j|g gg gg}t|d
 d S )Nr   r   c                   @   s   e Zd ZdS )z3TestMaskedArrayFunctions.test_compressed.<locals>.ANr   r   r   r|   r|   r|   r   r     s   r   r   r  c                   @   s   e Zd ZdS )3TestMaskedArrayFunctions.test_compressed.<locals>.MNr  r|   r|   r|   r   r    s   r  c                   @   s   e Zd Zdd ZdS )r  c                 S   s   dS )Nr  r|   r   r|   r|   r   rk    s    z>TestMaskedArrayFunctions.test_compressed.<locals>.M.compressedN)r   r   r   rk  r|   r|   r|   r   r    s   r  )
r}   r   r&   rk  r
   r"  r   r   r   r   )r   r   r   r   r  r|   r|   r   rl    s"    z(TestMaskedArrayFunctions.test_compressedc              	   C   s  t tdd}tddg}tj||}t|t ddddddgd tjj||dd	}t|t dddd
ddgd tjddgdddg}t|t ddddgd ddg}t ddddgd}tjj||dd	}t|t dddddgd tjj||dd	}t|t dddddgd d S )Nr   r   r   r   r   rm  r   F)Zpropagate_maskr   T)rK   r}   r   r&   r   Zconvolver   )r   r   r   r   r|   r|   r   test_convolve  s    z&TestMaskedArrayFunctions.test_convolveN).r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r?  skipifr   r  r  r  r  r  r  r  r  r  r  r@  r  r  r  r{  r  r  r  r  r  rj  rl  r  r|   r|   r|   r   r  3  sP   
	 
!

.0	$r  c                   @   sd   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d Zdd Zdd ZdS )TestMaskedFieldsc                 C   s   dddddg}dddd	d
g}dddddg}dt fdtfdg}dtfdtfdtfg}dddddg}ttt|||||d}t||||d| _d S )Nr   r   r   r   r   r  r  r]  r_  r`  r[  r\  ZthreeZfourZfiver   r   rb  rq  r   r`  )baser   ddtyper
  )r   r   r   r&   r   r   r  r   )r   Zilistflistslistr  r
  r   r  r|   r|   r   r     s    zTestMaskedFields.setup_methodc                 C   s   | j d }| j d }t|_t|jtj|j|d t|_t|jtj	|j|d d|_t|jtj|j|d d|_t|jtj	|j|d dddddg|_t|jtj
dd	 d
D |d d S )Nr  r
  r   FTr   r   c                 S   s   g | ]}|||fqS r|   r|   )r   r   r|   r|   r   r     s     z;TestMaskedFields.test_set_records_masks.<locals>.<listcomp>)r   r   r   r   r   )r   r_   r   r   r   r}   ry   rl   rI   ra   r&   )r   r  r
  r|   r|   r   test_set_records_masks  s     

z'TestMaskedFields.test_set_records_masksc                 C   s   | j d }|d |d |d   }}}ttdf|d< t|jt t|jdddd	d
g t|jt t|jtddddg t|jd t|jdddddg d S )Nr  r   r   rq  r   r   r   r   r   r   r  r]  r_  r`  r     pir  s   three   four   fiver   r   r   r~   r   r   r   r   r  Zbase_aZbase_bZbase_cr|   r|   r   test_set_record_element  s    
z(TestMaskedFields.test_set_record_elementc                 C   s   | j d }|d |d |d   }}}ttdf|d d< t|jt t|jdddddg t|jt t|jtttd	d
g t|jd t|jdddddg d S )Nr  r   r   rq  r   r   r   r   r_  r`  r  r  r  r  r  r  r|   r|   r   test_set_record_slice  s    
z&TestMaskedFields.test_set_record_slicec                 C   sP   | j d }t|d< dD ]4}t|| jdddddg t|| j|j|  qdS )zCheck record accessr  r   )r   r   rq  r   N)r   rI   r   r   r   )r   r  r,  r|   r|   r   test_mask_element  s
    
z"TestMaskedFields.test_mask_elementc                 C   sp   dt fdtfg}td|d}tt|tjdddgddgd t|d d < tt|tjdddgddgd d S )	Nr   r   r   r   r^  )r   |b1)r   r#  r@  )r   r   r2   r   r<   r}   r&   rI   )r   r  r   r|   r|   r   test_getmaskarray#  s    z"TestMaskedFields.test_getmaskarrayc                 C   s   t ttdtjd}t|}t|dtfdtfgd}d|jd< tjdgddg  t	d}|
t}t||  t|j| |
td	f}t|| t|j|d
d	 d S )Nr   r   r   r   rk  r   r      r   r   )r   r   r}   r   r   r   r&   r   r   r   rW  r   rh   rj   )r   iteratorr   r   controlmaskr   r|   r|   r   	test_view/  s    



zTestMaskedFields.test_viewc                    s   dt fdt fg}ttttjdtd|d tjttddddddddddg
ddddddddddg
dtfdtfgd _	 fdd}|d |d |d	 d S )
Nr   r   r   r   r   r   c                    s   t t |  t t |  j j|   t |  j j|   t t | df t t | df j j| df  t | df j j| df  d S )N.)r   r"  r^   r   r   r   r   )r~  rd  r|   r   _test_indexF  s    z2TestMaskedFields.test_getitem.<locals>._test_indexr|  )
r   r&   r   r   r}   r   r   r   r   r   )r   r  r)  r|   rd  r   test_getitem?  s    $	zTestMaskedFields.test_getitemc                 C   s`  t dtfdtfg}t jjddg|d}d|d d< t|d t ddg d	|d d< t|d t dd	g t dtfdtfg}t jd
dg|d}t jj	d|d}d|d d< t|j
| t jj	d|d}d|d d< t|j
| t jddg|d}t jj	d|d}|  d|d d< t|j
| t jj	d|d}|  d|d d< t|j
| d S )Nr   r   )r   r   )r   r   r   r   r   r   r   rV  )TTr  r   r   )r}   r~   r   r   r   r   r   r&   r   r{  r   rQ  )r   r  r   r
  r  r   r|   r|   r   test_setitemS  s.    zTestMaskedFields.test_setitemc                 C   s:   t jjddd}t jd}||d< t|jdddg d S )Nr   Tr   r   r   F)r}   r   rJ   r   r   r   )r   Zmask_0dr  r|   r|   r   test_setitem_scalarq  s    z$TestMaskedFields.test_setitem_scalarc                 C   s,   | j d D ]}tt|t| j d  q
d S )Nr  r  )r   r   r   )r   Zrecr|   r|   r   test_element_lenx  s    z!TestMaskedFields.test_element_lenN)r   r   r   r   r  r   r!  r"  r$  r(  r*  r+  r,  r-  r|   r|   r|   r   r    s   
	r  c                   @   s   e Zd Zdd Zdd ZdS )TestMaskedObjectArrayc                 C   sl  t jd d g}ttfD ]L}t d|}t d|}||d< ||d< t|d |k t|d |k tt|d t	 tt|d t	 t|d d |k t|d d |k t jj
|d< t|d |k tt|d t	 tt|d t	 t|d jd t|d d |k t|d j| t|d jd t|d d j| t|d d jd qd S )	Nr   r   r   r   r   .)r   .r|   T)r}   r   r&   r   r  r  r   r
   rY  r   rI   r   r   r   )r   r  r  Za0Za1r|   r|   r   r*    s,    z"TestMaskedObjectArray.test_getitemc                 C   sx   t jd d g}t t jjgtd |d< t|jd t jjk t|d t jjk t jj|d< t|d t jjk d S )Nr/  r   )r}   r   r&   rI   r  r
   r   )r   r  r|   r|   r   test_nested_ma  s    z$TestMaskedObjectArray.test_nested_maN)r   r   r   r*  r0  r|   r|   r|   r   r.  ~  s   r.  c                   @   sD   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S )TestMaskedViewc                 C   sr   t ttdtjd}t|}t|dtfdtfgd}d|jd< tjdgddg  t	d}|||f| _
d S )	Nr   r   r   r   rk  r   r   r%  )r   r   r}   r   r   r   r&   r   r   r   r   )r   r&  r   r   r'  r|   r|   r   r     s    

zTestMaskedView.setup_methodc                 C   sB   | j \}}}| }tt|t t|j|j t|j|j d S r   )r   rW  r
   rY  r   r   r   r   r   r   r   r'  r   r|   r|   r   test_view_to_nothing  s
    z#TestMaskedView.test_view_to_nothingc                 C   sN   | j \}}}|tj}tt|t  t||j t	|||j
  d S r   )r   rW  r}   r   r
   rY  r   r   r   r   r~   r  r2  r|   r|   r   test_view_to_type  s
    z TestMaskedView.test_view_to_typec                 C   sB   | j \}}}|t}tt|t t||  t|j| d S r   )	r   rW  r   r
   rY  r   r   rh   r   r2  r|   r|   r   test_view_to_simple_dtype  s
    
z(TestMaskedView.test_view_to_simple_dtypec                 C   s   | j \}}}|dtfdtfg}t|jjjd t|d |d  t|d |d  |d dtfdtfg}tt|t	 t|jjjd t|d |d d  t|d |d d  |d dtfdtfg}tt|t	 t|jjd t|d |d d  t|d |d d  d S )Nr   r  )r   r  r   r   r   r   )
r   rW  r   r   r   r~   r   r
   rY  r   r2  r|   r|   r   test_view_to_flexible_dtype  s    z*TestMaskedView.test_view_to_flexible_dtypec                 C   s   | j \}}}|tdf}tt|t t|| t|j|dd |d tdf}tt|t t||d  t|jd |d tdf}tt|t t||d  d S )Nr   r   r   rk  )	r   rW  r   r
   rY  r   r   r   rj   r2  r|   r|   r   test_view_to_subdtype  s    
z$TestMaskedView.test_view_to_subdtypec                 C   sL   | j \}}}|tdftj}t|| tt|tj tt|t  d S )Nr   )	r   rW  r   r}   rX  r   r
   rY  r   r2  r|   r|   r   test_view_to_dtype_and_type  s
    
z*TestMaskedView.test_view_to_dtype_and_typeN)
r   r   r   r   r3  r4  r5  r6  r7  r8  r|   r|   r|   r   r1    s   r1  c                   @   s   e Zd Zdd Zdd ZdS )TestOptionalArgsc                 C   s   t dd}t jdtdd}d|d d d d df< t jj||d}dd	 }d
d }dD ]}|||| |||| q^dD ]}|||| qt ddd dk}t jj||d}dD ]}|||| |||| qd S )N      8@r   r   r   r   r   Tr   r   c                 S   s~   t | }tj| }t||dddd df ||dd df dd t||dddd df ||dd df dd d S )Nr   r)  .r   r_  )r  __getattribute__r}   r   r   r  r   r   Znumpy_fZma_fr|   r|   r   testaxis  s    
2z4TestOptionalArgs.test_ndarrayfuncs.<locals>.testaxisc                 S   s   t | }tj| }t||ddj||ddj t||ddj||ddj t||ddddd df ||dd df ddd t||ddddd df ||dd df ddd d S )	NTkeepdimsFr   r*  r@  .r   r_  )r  r<  r}   r   r   rl   r=  r|   r|   r   testkeepdims  s    
z8TestOptionalArgs.test_ndarrayfuncs.<locals>.testkeepdims)rs   r  r  r  r  r  r   r   )r   r   )r}   r   rj   ry   r   r   r&   )r   r   r	  r   r>  rB  r  r|   r|   r   test_ndarrayfuncs  s     	z"TestOptionalArgs.test_ndarrayfuncsc                 C   sB  t dd}t jdtdd}d|d d dd d f< t jj||d}tt|d tt|d	d
dt	d  tt|dd
dt	d  tt|dddt	d  tt|d	dddt	d  tt|ddddt	d  tt|dd
dt	d  t
tt|dd
 t
t jt|dd
 t jj|td}tt|d tt|d	d
dt	d  tt|dd
dt	d  tt|dddt	d  tt t|ddd tt|d	dddt	d  tt|ddddt	d  tt|dd
dt	d  t
tt|dd
 t
t jt|dd
 ttt jjd t
t jtt jd	d	d
 d S )Nr:  r;  r   r   Tr   r   r  r   r)  r   )r   r   r_  r   r  r?  r}  rA  )r   r   r   )r   r   r   r|  r@  r   r   )r}   r   rj   ry   r   r   r&   r   r-   ra   r   r   r  r_   r   rI   )r   r   r	  r   r|   r|   r   
test_count,  s4    zTestOptionalArgs.test_countN)r   r   r   rC  rD  r|   r|   r|   r   r9    s   /r9  c                   @   s   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d Zdd Zdd Zdd Zejjdddd Zejjdddd Zdd  Zd!d" Zd#S )$TestMaskedConstantc                 C   s   t |tjjdtjjk tdddg}|tjj|}t |tjjk	 t t|tjjj  t|j	|j	 ttj
|tj|j	td d S )Nr   r   r   r   )r
   r}   r   rI   r&   rY  r  MaskedConstantr   rl   r;   ra   r   )r   r   Zvectorr  r|   r|   r   _do_add_testT  s    zTestMaskedConstant._do_add_testc                 C   s   |  tj d S r   )rG  r}   r   r   r|   r|   r   
test_ufuncb  s    zTestMaskedConstant.test_ufuncc                 C   s   |  dd  d S )Nc                 S   s   | | S r   r|   r   r   r|   r|   r   r   f  r   z2TestMaskedConstant.test_operator.<locals>.<lambda>)rG  r   r|   r|   r   test_operatore  s    z TestMaskedConstant.test_operatorc                 C   s:   t jt jj}tt|t jjj  t|t jjk	 d S r   )r}   r   r&   rI   r
   rY  r  rF  r  r|   r|   r   	test_ctorh  s    zTestMaskedConstant.test_ctorc                 C   s8   t ttjjd tjjtjjj}t	t|d d S )NrI   )
r   r!  r}   r   rI   r   __new__r  rF  r   )r   Zmasked2r|   r|   r   	test_reprp  s    zTestMaskedConstant.test_reprc              
   C   sp   ddl m} tdtjd D ]N}| .}tjtjj||d |	d t
|}W 5 Q R X t|tjjk qd S )Nr   )BytesIOr   r   rK  )iorN  rM  r{   rN  dumpr}   r   rI   seekloadr
   )r   rN  rR  r  r   r|   r|   r   test_pickley  s    
zTestMaskedConstant.test_picklec                 C   s*   t tjj tjjktj tjk d S r   )r   r}   r   rI   r   ZTrue_r   r|   r|   r   r/    s    zTestMaskedConstant.test_copyc                 C   s&   dd l }t| tjjtjjk d S re  )r   r
   r}   r   rI   r   r   r|   r|   r   
test__copy  s    zTestMaskedConstant.test__copyc                 C   s&   dd l }t|tjjtjjk d S re  )r   r
   r4  r}   r   rI   rT  r|   r|   r   r7    s    z TestMaskedConstant.test_deepcopyc                 C   s   t jj}tt jjjtj|dd tttj|j	dd tttj|j
dd t jjt jj}tttj|dd tttj|j	dd tttj|j
dd d S )Nr|   r   F)r}   r   rI   r   r  r   rC  setitemr   r   r   rW  r   )r   origrW  r|   r|   r   test_immutable  s    z!TestMaskedConstant.test_immutablec                 C   s6   t dt}tttj|dt jj tttt jj d S Nr|   )	r}   ry   r   r   r   rC  rV  r   rI   )r   Za_ir|   r|   r   test_coercion_int  s    z$TestMaskedConstant.test_coercion_intc                 C   s8   t dt}tttj|dt jj t	t 
|d  d S rY  )r}   ry   r   r   r   rC  rV  r   rI   r
   rg  )r   Za_fr|   r|   r   test_coercion_float  s    z&TestMaskedConstant.test_coercion_floatzSee gh-9750r  c                 C   s*   t dd}t jj|d< t|d d d S )Nr|   ZU10r  r}   ry   r   rI   r   )r   Za_ur|   r|   r   test_coercion_unicode  s    z(TestMaskedConstant.test_coercion_unicodec                 C   s*   t dd}t jj|d< t|d d d S )Nr|   ZS10s   --r\  )r   Za_br|   r|   r   test_coercion_bytes  s    z&TestMaskedConstant.test_coercion_bytesc                 C   sN   G dd dt tjj}| }t|| k t|tjjk	 tt|d d S )Nc                   @   s   e Zd ZdS )z-TestMaskedConstant.test_subclass.<locals>.SubNr  r|   r|   r|   r   Sub  s    r_  rI   )r"  r}   r   rI   r
   r   r!  )r   r_  r   r|   r|   r   test_subclass  s
    z TestMaskedConstant.test_subclassc                 C   s.   t tttjjdd t tttjjdtj d S )Nrl   r  r~   )r   r  setattrr}   r   rI   r  r   r|   r|   r   test_attributes_readonly  s    z+TestMaskedConstant.test_attributes_readonlyN)r   r   r   rG  rH  rJ  rK  rM  rS  r/  rU  r7  rX  rZ  r[  r   r?  Zxfailr]  r^  r`  rb  r|   r|   r|   r   rE  S  s$   	


	rE  c                   @   s   e Zd Zdd ZdS )TestMaskedWhereAliasesc                 C   s   t tdgtd}t|jdg t tjtj}t|jd tj tjtj }t|jd tjj ddddgd	dd
}t|jtjj	k tjj ddddgd	dd
}t|jdgd  d S )Ng      i TFr   r   r   r   r   r  )
rT   r}   r&   r  r   r   r  r   r
   r_   )r   r   r|   r|   r   test_masked_values  s    z)TestMaskedWhereAliases.test_masked_valuesN)r   r   r   rd  r|   r|   r|   r   rc    s   rc  c                  C   s<   t jjddddgddddgd} tt | dgdgg d S )Nr   r   r   r   r   )r}   r   r&   r   Zargwhererd  r|   r|   r   test_masked_array  s     re  c                  C   s   t jddddg} t jj| dk| dd}t| jddddg t jjddddgddddgd	} t jj| dk| dd}t| jddddg t jt jddddg} t jj| dd}t| jdddddg d S )
Nr   r   r   r   Fr(  Tr   r   )r}   r   r&   rU   r   r   r  r  )r   r  r|   r|   r   test_masked_array_no_copy  s     rf  c                  C   s  t jjdddgdd} t jjdddgdd}t j| |}ddddddg}ddddddg}t|j| t|j| t jd} t jd	}t j| |}dgd }dgd dgd  }t|jd
 | t|j| t jj| |d d}t|jd
 | t|j| d S )Nr   r   r   r  r   FTr  )r   r   r  r)  )	r}   r   rK   appendr   r   r   r{  ra   )r   r   r  Zexpected_dataZexpected_maskr|   r|   r   test_append_masked_array  s"    
ri  c                  C   s   t jjdddgdd} t jdddgdd	d
ggd}ttt jj| |dd t jj| t jd d f |dd}t jdd}t jj	|ddg< |
d}t|j|j t|j|j d S )Nr   r   r   rg  r   r   r   rm  r   r  r   r)  r   r  )r}   r   rK   rT   r   r   rh  Znewaxisr   rI   rj   r   r   r   )r   r   r  r  r|   r|   r   #test_append_masked_array_along_axis  s     
rj  c                   C   s   t tddk d S )Ny      ?      ?y@xD        )r
   r.   r|   r|   r|   r   test_default_fill_value_complex  s    rk  c                  C   s8   t dddgdddgd} tj| d| d}t|| k d S )Nr   r   r   r   r   r   r\  )r&   r}   r   r
   r   r|   r|   r   test_ufunc_with_output  s    rl  c            
      C   s   t dddgdddgd} t dddgdddgd}t dddgdddgd}t d	d
dgdddgd}| }t| ||}| }tj| ||d}| }tj| ||fd}	t|j|j t|j|j t|	j|j t|	j|j t|j|j t|j|j dS )z0 Test that masked arrays are immune to gh-10459 r   r   r   r   r   r   r?  rO  r  rh  r  r\  N)r&   r   r}   r   r   r   r   )
r   r   r  r  Zout_posZres_posZout_kwZres_kwZout_tupZres_tupr|   r|   r   test_ufunc_with_out_varied  s     rm  c                  C   s  t dtdfddtfgfg} tdddgdfdddgdfgdddgd	fdddgd
fgg| d}t jj|d d d< || }|jjt | jkst	|j
jjt | jkst	t|| t||j|jddk tt|j|jddt j |j|jdd}t|jj t|j
jj t j|| dd}|jjt | jks@t	|j
jjt | jks\t	t|| t|t j|| dddk t j||jddd}t|jj t|j
jj d S )Nr  r   r   r   r   r   r  r  )r   )r   r   r   Fr(  )subokr  r  T)r~   rn  )r~   r   rn  )r~   r  rn  )r}   r~   r   r   r&   r   rI   r   r   r  r   r   r
   r"  r   r  f_contiguous)descrr   Zx_aZx_fZx_a2Zx_f2r|   r|   r   test_astype_mask_ordering6  s2    


rq  r/  r0  r2  zignore::numpy.ComplexWarningc                 C   s   t jjtd| dd}||}t|jdk t|j| k t|jj| k t|jdk t|j|k t|jj|k t|| d S )Nr   r   r  )	r}   r   r&   ra   r   r
   r   r~   r   )r/  r2  srcdstr|   r|   r   test_astype_basicV  s    
rt  c                  C   sn   t g } t d| }t j|}t|j|j t|j|j t jj||d}t|j|j t|j|j d S )Nr   r   )r}   r~   r2   r   r&   r   rl   )r  r   r  r|   r|   r   test_fieldless_voidi  s    
ru  c                  C   s2   t jj} t jjd| jd}d|_t| jjd d S )Nr   r   r  r|   )r}   r   rI   r&   r   rl   r   rI  r|   r|   r   0test_mask_shape_assignment_does_not_break_maskedx  s    rv  r   zHno docstrings present to inspect when PYTHONOPTIMIZE/Py_OptimizeFlag > 1r  c                  C   s(   dd } d}t tjj| jd| d S )Nc                 S   s   dS )zyThis docstring

        Has multiple lines

        And notes

        Notes
        -----
        original note
        Nr|   r   r|   r|   r   r    s    ztest_doc_note.<locals>.methodzNThis docstring

Has multiple lines

And notes

Notes
-----
note

original noteZnote)r   r}   r   r  r1   __doc__)r  Zexpected_docr|   r|   r   test_doc_note~  s    rx  )rw  
__author__sysr  rC  r	  rA  r   	functoolsr   r  r}   Znumpy.ma.coreZnumpy.core.fromnumericr  r  Znumpy.core.umathr  Znumpy.testingr   r   r   r   Znumpy.testing._private.utilsr   r   Znumpy.compatr	   Znumpy.ma.testutilsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r   r  rf  r   ZMaskedArrayFutureWarningrA  rB  r   r  rH  ri  r  r  r!  r  r  r  r  r.  r1  r9  rE  rc  re  rf  ri  rj  rk  rl  rm  rq  r?  r@  r  rt  ru  rv  r  r  optimizerx  r|   r|   r|   r   <module>   s   (        *      o 1  T    s         55     . #0NWp 
