o
    %gX                    @   s  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Zddl	m
Z
 ddl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 ddlmZ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/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mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ejZe Zeejjjd 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 ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdS )ZznTests suite for MaskedArray & subclassing.

:author: Pierre Gerard-Marchant
:contact: pierregm_at_uga_dot_edu
zPierre GF Gerard-Marchant    N)reduce)	AxisError)assert_raisesassert_warnssuppress_warningsIS_WASMtemppath)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_likezGsetting an item on a masked array which has a shared mask will not copyc                 C   s   g | ]}t |qS  )npdtype.0dt_r}   r}   W/root/parts/websockify/install/lib/python3.10/site-packages/numpy/ma/tests/test_core.py
<listcomp>@       r   z?bhilqBHILQefdgFDc                 C   s   g | ]}|j qS r}   )charr   r}   r}   r   r   A   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d/d0 Ze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,dSdT Z-edUdV Z.dWdX Z/dYdZ Z0d[d\ Z1d]d^ Z2d_d` Z3dadb Z4dcdd Z5dedf Z6dgdh Z7didj Z8dkdl Z9dmdn Z:dodp Z;dqdr Z<dsdt Z=dudv Z>dwS )xTestMaskedArrayc                 C   s   t ddddtd dddddddg}t g d	}d}g d
}g d}t||d}t||d}t g d}t|g dd}	t |d|}
|d |||||||||	|
f
| _d S )N      ?              @      @      @      $      $@      @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   mask      r         ?g?r   r   r   r   @xD)r~   r(   pirL   rz   set_fill_valuedselfxya10m1m2xmymzzmxfr}   r}   r   setup_methodG   s   &
zTestMaskedArray.setup_methodc                 C   sl   t g d}t g dg dd}t|jd t|jd t|jd t|jd t|jd t|jd d S )Nr         r   r   r   r   r   r   r   )r(   r   ndimsizern   r   abr}   r}   r   test_basicattributesV   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u  d S )Nr   0Tr   Fr   )	rL   r   strrU   r(   r   r9   r   _datar   r   r}   r}   r   test_basic0da   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 Nr}   r   r   r}   r}   r   <lambda>x       z.TestMaskedArray.test_basic1d.<locals>.<lambda>c                 S      | | S r   r}   r   r}   r}   r   r   y   r   r   )r   r   rC   r9   anyr   r   astypeintrn   r   r~   r   r   r   r/   lenr   r   r   r   r   r   r   r   r   r   r   r   sr}   r}   r   test_basic1dl   s    
zTestMaskedArray.test_basic1dc              
   C   s   | j \
}}}}}}}}}	}
dD ]X}||_||_||_||_||
_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   r   r   r}   r   r}   r}   r   r      r   z.TestMaskedArray.test_basic2d.<locals>.<lambda>c                 S   r   r   r}   r   r}   r}   r   r      r   r   )
r   rn   r   rC   r   r   r   r/   r   r9   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|g d t|jg d t||f}t|g d	 t|jg d
 d S )Nr   r   r   r   FTr   )r   r   r   r   )FFFTr   r   r   r   )FTFF)r   rn   r   r   r~   rl   r+   _maskr{   r(   rc   r   )r   r   r   r   r   r   r   r   r   r   r   r   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      )rL   listzipr~   randomrandr!   floatr   r+   r   )r   datatestr}   r}   r   test_concatenate_flexible   s   z)TestMaskedArray.test_concatenate_flexiblec                 C   sJ   t g dg ddd}t|jd t|jg dg t|jg dg d S )Nr   r   r   r   r   r   r   )r   ndminr   r   )r(   r   rn   r   r   r   r}   r}   r   test_creation_ndmin   s   z#TestMaskedArray.test_creation_ndminc                 C   sF   t g d}t|d< t |dtd}t|j|jj t|j|jj d S )Nr   r   )r   r   )r(   rK   r   r   rn   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|g d< t|}t|j|j t|}t|j|j t|g dd d}t|j|j tg ddd}t|jg d	 tg dd
d}t|jg d tg d|jd
d}t	t
|j|j tg d|jdd}t	t
|j|j  tg dd d}t|jg d d S )N   r   )r   r      r   r   r   r   r   r   r   TTTTFFFFr   copy)r!   r   rK   r   r   r   r   r(   r   r   r~   may_share_memory)r   r   dma_1dma_2dma_3r   r   r}   r}   r   test_creation_maskcreation   s$   z*TestMaskedArray.test_creation_maskcreationc                 C   sP   t t jj tt t dt jjg W d    d S 1 s!w   Y  d S )Nr   )r~   r(   marK   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g dd}t ||d d d f}t|g dg dg t|jg dg dg t|_t ||d d d f}t|g dg dg t|jtu  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   ra   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 d    n1 sUw   Y  t j||g}t|jddgddgg d S )Nr   r   TFr   r   U21r   c                   @      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)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       r  r  match)r~   r   rL   r!   r)   r   r   r   raisesr  bool)r   
masked_str
normal_intresr  
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f1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   sH   t jtdd tg dg dd W d    d S 1 sw   Y  d S )Nzunexpected keyword argumentr	  r   r   r   r   )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   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   m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   sv   t jdd+ tt jddgg dd}t|}t|j|jddg t|jg d W d    d S 1 s4w   Y  d S )Nignoreinvalidr   r   r   r   r   r   )r   r   r   )	r~   errstaterL   nanr:   r   r   r"  r   )r   r   
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u  tt|d dd d S )Nr   r   --r   )r!   rK   r   r   r   r9   r   r}   r}   r   test_maskedelement5  s
   z"TestMaskedArray.test_maskedelementc                 C   sd   t dtd}d}||d< t|d | t|d |u  dd l}|j }||d< t|d |u  d S )Nr   r   r   r   r   r   r   r   )r4   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 g d}t|g dd}t|g dd}t|}t| t| tt |t|dd tt|d t|d u  t|d |d k t|d tu  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g d tg dg d|d d < tt	t
|tg d tg dg d|d d < tt	t
|tg d tt	|tg d t d
d }t|d}t|| tt	tg dt|j td|j tg dt}t g dt}|d }|d }tt|t tt|t t|| t|dd jdk d S )N)r   r   r   r   r   r   r   r   r   r   Fendwithr   r   r   r   	   c   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   hellor   r   r   )r~   r(   r   reprr   rr   r   typerK   r   r=   rL   r!   rV   r   r   r"  r>  rn   )r   x1x2x3x4s1s2r}   r}   r   test_indexingJ  sZ   






zTestMaskedArray.test_indexingc                 C   s   t jdd}tdddddgf}t jd}t j|jd< |||< t jj|d< t jjd	t j	d
}t jj
g dg dd}||d< ||g d< d S )N<   )r   r   r   r   r      r   r   .r   r   )gCD pr   r   TFFr   r   r   r   )r~   r   r!   rl   slice
masked_allinfr   rK   float32r(   )r   r   indexvaluer}   r}   r   test_setitem_no_warning|  s   z'TestMaskedArray.test_setitem_no_warningc                 C   s  g d}t |}t |}t||u  t |dd}t||u 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u  d|d< t|d tu 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u  d|	d< t|	d tu t|	j
j|jk tt|	jd t|d |d}
tt|
j|d ju  td}t|d< t|d}tt||g| tt|g d t|ddd}t|g d t|ddd}t|| |jddd}t|| |dd}t|| | }t|j|j t|j
|j
 tg dg d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 )Nr   r   r   r   r   Tr   r   r   r   rF  r   r   r   r   r   )r  )r   r   r   r   r   r   r   r   )r   r   r   r   axis)r   r   r   r   r   r   r   r   r   r  )rH   r   r~   r!   r(   r   r   __array_interface__r   r   r   rK   r   r9   r   rm   r+   r=   rk   r   rL   ctypesr   )r   nr,  r   m3rN  y1y1ay2y2ay3rQ  y4y5y6y7y8y9r   r   r}   r}   r   	test_copy  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   xcr}   r}   r   test_copy_0d  s   zTestMaskedArray.test_copy_0dc                 C   s0   t ttjg d t ttjd d S )Nr   )r   rC   r~   r   r   r   r}   r}   r   test_copy_on_python_builtins  s   z,TestMaskedArray.test_copy_on_python_builtinsc                 C   s@   t jg d}t jg d}|j}|j t| g d d S )Nr   r   r   r   )r~   r   r(   r   r   )r   r   r   a_copy_methodr}   r}   r   test_copy_immutable  s
   z#TestMaskedArray.test_copy_immutablec                 C   s   ddl m} tg dg dd}||}t|j|j tt|jt|j d|d< t|jg d t|jg d ||}t|j|j d	|jd< t|jg d t|jg d d S )
Nr   )deepcopyrY  FTFr   r   r   r   r   r  F)r   r|  r(   r   r   r   idr   )r   r|  r   copiedr}   r}   r   test_deepcopy  s   
zTestMaskedArray.test_deepcopyc                 C   s   t g dg dd}tt|d tttd tttdd tt ttd}W d    n1 s4w   Y  t|d d S )NrY  r}  r   [0 -- 2]r;   z >5)r(   r   formatrK   r   FutureWarning)r   r   with_format_stringr}   r}   r   test_format  s   
zTestMaskedArray.test_formatc                 C   s  t g dg d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 g dg dgtj
d}tjj	|d< tt|tdt dd d tt|d d tdt dd d tt|ttd d S )NrY  r}  r   r  z            masked_array(data=[0, --, 2],
                         mask=[False,  True, False],
                   fill_value=999999)  r   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   ry  r   r   r   z            masked_array(
              data=[[1, 2, 3],
                    [4, --, 6]],
              mask=[[False, False, False],
                    [False,  True, False]],
              fill_value=?B r}   z,
              dtype=int8)z            masked_array(data=[[1, 2, 3]],
                         mask=[[False, False, False]],
                   fill_value=z%,
                        dtype=int8)z            masked_array(
              data=[[1, 2, 3],
                    [4, --, 6]],
              mask=[[False, False, False],
                    [False,  True, False]],
              fill_value=999999))r(   r   r   rL  textwrapdedentr~   r   r!   rK   int8r   r   r   r   r}   r}   r   test_str_repr
  sF   		

zTestMaskedArray.test_str_reprc              
   C   s   t  }t jdd z8tg dg dd}tt|d tt|d t jd}t jj	|d	d
< tt|d W t jdi | d S t jdi | w )Nz1.13)legacyrY  r}  r   r  zcmasked_array(data = [0 -- 2],
             mask = [False  True False],
       fill_value = 999999)
r  r   r  zmasked_array(data = [0 -- -- ..., 1997 1998 1999],
             mask = [False  True  True ..., False False False],
       fill_value = 999999)
r}   )
r~   get_printoptionsset_printoptionsr(   r   r   rL  r   r!   rK   )r   oldoptsr   r}   r}   r   test_str_repr_legacyP  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;  )rM  r~   r   r(   r   )r   uutype
arr_nomask
arr_maskedr}   r}   r   test_0d_unicodee  s   zTestMaskedArray.test_0d_unicodec              	   C   s   t tttfD ]Y}td|}d|_g dddf}tdtj	d D ]=}|D ]8}||_
ttj||d}t|j|j t|j|j |tt fv rOt|jd nt|j|d t|j
| q%q!qd S )	Nr     )
r   r   r   r   r   r   r   r   r   r   TFr   r   protocol)r   r   r   r>  r!   r   r"  rangepickleHIGHEST_PROTOCOLr   loadsdumpsr   r   r   r   )r   r   r   masksprotor   	a_pickledr}   r}   r   test_picklingo  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 ]!}t
tj||d}t|j|j t|| tt|jt j q#d S )N)r   r   )r   r   r   r   r   TFFTr   r   r   r  )r~   r(   r   r   viewrecarrayrL   r  r  r  r  r  r   r   r   
isinstancer   )r   r   r   r  r  r}   r}   r   test_pickling_subbaseclass  s   

z*TestMaskedArray.test_pickling_subbaseclassc                 C   s`   t jj}tdtjd D ]!}ttj||d}t|j	|j	 t|j
|j
 t|j|j qd S )Nr   r   r  )r~   r   rK   r  r  r  r  r  r   
_baseclassr   r   )r   mcr  
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 ]}ttj||d
}t|j	|j	 t|| qd S )N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   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   r  )	r!   rn   r(  r  r  r  r  r  r   )r   r   r   r  r   r}   r}   r   test_pickling_keepalignment  s   z+TestMaskedArray.test_pickling_keepalignmentc                 C   sT   t g d}t g dg dd}t|d jd t|d jd t|d jd d S )Nr   r   r   r   r}   r   )r(   r   rn   r   r}   r}   r   test_single_element_subscript  s
   z-TestMaskedArray.test_single_element_subscriptc              	      s8  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 D}|td t	t
ttdgdgd tg dg dd tt fdd t t d	 d
 t	t
t d  W d    n1 s}w   Y  ttt  t t d	 d tt fdd d S )Nr   r   z$Warning: converting a masked elementr   r   r   c                      s   t  S r   )r   r}   r   r}   r   r     r   z/TestMaskedArray.test_topython.<locals>.<lambda>r   r   r   r   c                      s   t  d S Nr   )r   r}   r  r}   r   r     s    )r   r   r(   r   r   r  r   filterr   r   r~   isnanr   )r   supr}   r  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u  t|d tu  t|d tu t|d tu t|d tu  t|d tu  t|| d S )Nr  r   r      r   r   y              $@r   e   r   .r   r  r   rV  rF  )r!   rl   flatr   r   realimagr,   rK   r   r/   rz   rn   rW   r   )r   r   r   cr}   r}   r   test_oddfeatures_1  s.   


z"TestMaskedArray.test_oddfeatures_1c                 C   s   t g d}t g d}t|d< t||| }t|g d t|d< t||| }t|g d t|d tu  t|d tu t|d tu  d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r(   rK   rz   r   r   r   r   r  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   r[  r   r9   r  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   rK   r   r9   r~   r0   r   )r   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`   r9   r   tupler0   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   rW  r   r  r   r  r  r   r   r  )r   r   r   r   r  r  r   )r  z(2,2)i1,(2,2)i1rW  )r  i1rW  )r  r  rW  rW  )r  ?rW  )r  r  rW  )r   r(   r9   r~   r   r   numpyr   r{   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 )
NrY  ry  Fr0  r6  r   )r   r1  F_CONTIGUOUSr   )r(   r~   r   r)  r9   r  r}   r}   r   test_filled_with_f_order-  s   z(TestMaskedArray.test_filled_with_f_orderc                 C   sP   t g dtd}d|jd< | }t|jd d d|jd< t|jd d d S )Nr   r   ???infoz!!!)r(   r   _optinfor   r   r   r   r   r}   r}   r   test_optinfo_propagation5  s   

z(TestMaskedArray.test_optinfo_propagationc                 C   s  t g d}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 |g d 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 )N)r   r   r   r   r_  keyr   )r   r   r   Trb  )r(   r  r   r~   r7   r   r|   r  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g dg dgdfdg dg d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   r   r   r   F)TFTFFT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   rL   )r   
fancydtyper   r  t_2d0r}   r}   r   test_fancy_printoptionsQ  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g dg dgg dg d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  rW  r   r   r   r  r  r  r   r   babb)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   test_flatten_structured_arraye  s>   



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   r  r  r  )	r   r~   r(   r`   r   r  rL   r   r   )r   r  r   r  r}   r}   r   test_void0d  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u  t|d tu  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  r  r  r   r  r   r   r   TF)r  >i2r   r   r  r  )r   rL   r   r  r`   r   rK   )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  r  r  r   r   r   r   )r   rL   r   r   rK   )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 t| nt| w t d
dgdgd}tt|d d d S )Nr  rW  r   r   r   r   z(1, 1)z-X-z(1, -X-)r   r  )r   r  z(1,))	r(   r   r   r   rK   rU   _displayset_displayrL  )r   mxini_displayr}   r}   r   test_mvoid_print  s   
z TestMaskedArray.test_mvoid_printc                 C   s  t g dfgg dfgg d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  r  r  )r   <i4r   )r   r   r"  r   r   z([1, --, 3],)r   r   r   r   FT)r   r  rW  r   z([[1, --], [--, 4]],)r	  r  )r   r  )r   r  z(--, 2)r   z([[1, --], [--, 4]], 1.0)r  )Tr  )r   i4,i4z(--, (--, 1)))rL   r   r   rL  r   )r   t_mat_2dt_0d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 |u  t|d |u 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   )rL   r>  r   r~   r   r   r   )r   mx1mx2r  r}   r}   r   test_object_with_array  s   z&TestMaskedArray.test_object_with_arrayc              	   C   s   t g dg dd}tdd,}tt t|| W d    n1 s&w   Y  W d    d S W d    d S 1 s>w   Y  d S )Nr   r}  r   z.npy)suffix)rL   r   r   r  NotImplementedErrorr~   save)r   r   pathr}   r}   r   2test_maskedarray_tofile_raises_notimplementederror  s   "zBTestMaskedArray.test_maskedarray_tofile_raises_notimplementederrorN)?r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r%  r.  r2  r:  r<  rB  rT  r`   suppress_copy_mask_on_assignmentrt  rw  rx  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   D   s|    		
2
HF
			
	#
$r   c                
   @   sJ  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ejd+d,ejd-g d.g d/g d0gejd1d2d3gd4d5 Zejd6d7d8g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(dSdT Z)dUdV Z*ejdWdXdYgejdZd2d[gd\d] Z+ejdWdXdYgejdZd2d[gd^d_ Z,ejjd`e-e.daejjdbe-e.daejdZd2dcgddde Z/ejdfe0j1e0j2gdgdh Z3ejdfe0j1e0j4gdidj Z5ejjd`e-e.daejjdbe-e.daejdZd2dcgdkdl Z6ejjd`e-e.daejjdbe-e.daejdZd2dcgejdfe0j7e0j2e0j8e0j4gdmdn Z9ejdfe0j7e0j2e0j8e0j4gejdZd2dogdpdq Z:drds Z;dtdu Z<dvdw Z=dxdy Z>d2S )zTestMaskedArrayArithmeticc                 C   s   t ddddtd dddddddg}t g d	}d}g d
}g d}t||d}t||d}t g d}t|g d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   r3  r2   r5  )
r~   r(   r   rL   rz   r   r   geterr
err_statusseterrr   r}   r}   r   r     s   &

z&TestMaskedArrayArithmetic.setup_methodc                 C      t jdi | j d S Nr}   r~   r)  r(  r   r}   r}   r   teardown_method     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   ))r  r   )r   r         @)r   r(   rL   r   rl   r   r~   r   rt   r_   r2   )r   r   r   r   r   r   r   r   r   r   r   a2da2dmr   r}   r}   r   test_basic_arithmetic  sB   




z/TestMaskedArrayArithmetic.test_basic_arithmeticc                 C   s   t dtd}d|_t dtd}|| }t|g dg dg t|jg dg dg ||d d d f  }t|g dg dg t|jg dg dg t dtd}||d d d f  }t|g d	g d
g t|jg dg dg 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   rn   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   r  r   )r   nar   r}   r}   r   test_mixed_arithmeticO  s   
z/TestMaskedArrayArithmetic.test_mixed_arithmeticc                 C   sN   t tj}t|d| dg}tt|d g d ttd| g d d S )Nr   r   r   r~  r   )r~   finfor   tinyr(   r   r>   )r   r:  r   r}   r}   r   test_limits_arithmeticV  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   rY   r\   )r   r   r}   r}   r    test_masked_singleton_arithmetic\  s   z:TestMaskedArrayArithmetic.test_masked_singleton_arithmeticc                 C   sd   t g dg dd}t|d dktu  t|d dktu  t|d dkd t|d dkd d S )Nr   r   r   r   r   r   r   FT)r(   r   rK   r   r  r}   r}   r   test_masked_singleton_equalityf  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u  |t }t|j|j t|jddg d S )Nr   r   Tr   )rL   rK   r   rn   r   r   r  r}   r}   r   %test_arithmetic_with_masked_singletonn  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)rL   rK   r   rn   r   r  r}   r}   r   5test_arithmetic_with_masked_singleton_on_1d_singletonz  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   r9   rf  r   rn   r   )r   r   r   r}   r}   r   test_scalar_arithmetic  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.   ro   rp   rw   rx   rs   r   rF   rG   r7   r%   r"   r&   r$   r   r   r6   rb   rD   r?   rE   r@   r,   r   r}   r}   r   test_basic_ufuncs  s2   $,z+TestMaskedArrayArithmetic.test_basic_ufuncsc                 C   s   t t jjt jju sJ d S r   )r~   rs   r   rK   r   r}   r}   r   test_basic_ufuncs_masked  s   z2TestMaskedArrayArithmetic.test_basic_ufuncs_maskedc                 C   s  t dtd t dtddgd tg dg dd}t|}t|jjtju  t d| |d}t|}t|jjtju  t d| t|d}tt	|t
 t ddg| tt|tu  tg d}t|d}tt	|t
 t|jjtju  tt|jdd	 d S )
Nr   r   r   )r   r   r   r   r   r   rW  r   rc  )r   r/   r(   r   r   rM  r~   intprl   r  r
   r=   ra   r   r   )r   ottr  r}   r}   r   test_count_func  s&   




z)TestMaskedArrayArithmetic.test_count_funcc                 C   s$   t dtg d 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   s@  | j \
}}}}}}}}}	}
t|}t|}tt|t| tt|t| ttg dg dg d ttg dg dg d 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   rF  r   r   r   )r   r   rF  r   r   r   r   r   r  rc  )r   r~   rj   r   rX   rY   r   r[   r\   r!   rK   rz   rD   r?   r   rl   )r   r   r   r   r   r   r   r   r   r   r   xr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 )NrW  )	r~   rc   r\   r   r  r   r   re   rY   )r   r   aminimumamaximumr}   r}   r   test_minimummaximum_func  s   


z2TestMaskedArrayArithmetic.test_minimummaximum_funcc                 C   s.   t g dg dd}tj|}t|d d S )Nr   r   r   r   )r(   r~   rY   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 ]N}tt |}ttj	j
|}t jdtd}z	||d|d	}W n	 ty@   Y nw t jdtd}||d|d	}t||u  |d
 ||d|d	}t||u  qd S )Nr  r   r   r   r   r[   rX   r   r   rd  outr  )r~   r   r   roundr(   uniformrn   getattrr  r   corer4   r   r   r   r   fill)r   r   r   funcnamenpfuncmafuncnoutresultr}   r}   r   test_minmax_funcs_with_output  s&   

z7TestMaskedArrayArithmetic.test_minmax_funcs_with_outputc              
   C   sR  | j \
}}}}}}}}}}|jf|_t| d t|d  tu  t|d dtu  t|d dtu  t| d t|d  tu  t|d dtu  t|d dtu  t| d t|d  tu  t|d dtu  t|d dtu  t	g ddd}t| tu  t| tu  t| tu  d S )	Nr   r   r   r         4@r   Tr   )
r   r   rn   r   rX   r   rK   r[   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}g d	}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 || q8t| | t| | |d d D ]}tt|||d || tt|||d || qk|dd  D ]}}tg dg d|d}t| |d t| |d tt jd t jd t j d gg d|d}	t|	 |t j d  t|	 |t jd  t jdt t jj  }
t|
 dgddgd
 |
 ksJ t|
dgddgd
 |
ksJ qd S )Nr   r   r   r   r   r   r   r   r   r   r   r  r   )@xD      ?y@xD       @xD      r  rg  rf  y               @y              @rB  r   r   )r~   r(   r   rL   r   float16r]  float64
longdouble	complex64
complex128clongdoubler   rX   r[   r\  r9  )r   r   r   an10r   r   float_dtypesfloat_dtyper   r   cmaxr}   r}   r   test_minmax_dtypes%  sP   &
$$$z,TestMaskedArrayArithmetic.test_minmax_dtypesr   bBiIqQr   )FFFTT)FFFTF)FFFFTrd  Nr   c                 C   s   t |}t ddd|j|jggd |}t |gd }t||d}t||||  | t||||  | d S )Nr   r   r   r   )	r~   iinfor(   r[   rX   r   r)   rL   r   )r   r   r   rd  ru  r   masked_ar}   r}   r   test_minmax_intsO  s   
$ z*TestMaskedArrayArithmetic.test_minmax_ints	time_typezM8[s]zm8[s]c           	      C   sh   dd }t jg d|d}t jg d|d}t jg d|d}|||g}g d}|D ]}||| q*d S )Nc                 S   s\   t | |d}| tj|td   }| tj|td   }t| | t| | d S )Nr   r   )rL   r~   r(   r  r[   rX   r   )arrr   
masked_arrexpected_minexpected_maxr}   r}   r   minmax_with_maskb  s
   zKTestMaskedArrayArithmetic.test_minmax_time_dtypes.<locals>.minmax_with_mask)
r   r   r   r   rt  r   r   r   l r   )
NaTr   r~  r   r   rt  r   r   r   r   )
r  r  r~  r   r   rt  r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   r  )	r   rx  r}  rN  rO  rP  x_testr,  r   r}   r}   r   test_minmax_time_dtypes`  s   	
z1TestMaskedArrayArithmetic.test_minmax_time_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 d S )Nr   r   rc  r   r   )r   r   r~   r   r   
accumulateru   r(   r9   prodrg   rn   r   r+   r   r}   r}   r   test_addsumprodt  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      rV  r(   r   r   r   r   r   r   r   r  r}   r}   r   test_binops_d2D  D   $



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/  rV  r  r  r}   r}   r   test_domained_binops_d2D  r  z2TestMaskedArrayArithmetic.test_domained_binops_d2Dc                 C   sz   t g dg ddd}|d }t|jg d |d7 }t|jg d |d }t|jg d |d }t|jg d d S )Nr   r   r   r   Fr   shrinkr   r~  r   rL   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   rn   r   r,  r}   r}   r   test_ufunc_nomask  s   z+TestMaskedArrayArithmetic.test_ufunc_nomaskc                 C   s*   t jjg dddd}t|jg d d S )N)r   r/  @      ?Fr  r~  )r~   r   rV   r   r   r  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 r  )r   r   r^   r~   r   rJ   )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
g d
t}t|d< t|g d}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   )abcr   defr   r   )r   r   r   r  )r!   r~   rK   rl   r   ry   rv   rB   r9   re   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   r  r9   r   r   r  )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 ]H}tt|}t||}tjdtd}|	d	 ||d|d
}t
||u  t||d|d
 tdtd}|d|d
}t
||u  t
|d tu  q"d S )Nr   r   r  r   r   r  )ru   r  varstdrX   r[   rb  meanr   r!  rT  r(   r~   r   rW  rl   rK   rX  r4   r   rZ  r   r   r   )r   r   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  rW  r  r  r  TFr   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   test_eq_on_structured,  J   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  rW  r  r  r  FTr   r  r  r  r  r  r  r  r  r  r  r  r  r}   r}   r   test_ne_on_structuredW  r  z/TestMaskedArrayArithmetic.test_ne_on_structuredc                 C   s   t g dg ddd}||jk}|j|k}tt| tt|  |jtd|jjk}t	|j| t	|j| t
|jg d t	|j|j  d S )N)r  rW  r   )r  r  r  r  r  r}   TTF)r(   r   r   r~   r   r   r   rc   r   r   r   )r   r   eqneexpected_maskr}   r}   r   %test_eq_ne_structured_with_non_masked  s   

z?TestMaskedArrayArithmetic.test_eq_ne_structured_with_non_maskedc           	   	      s  t d}tdd|dtdd|dtdd|dtdd|dfD ]  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	
 | qDqd S )Nr  r	  r  r  r  r  r  2i4r   r   r   c                    s   g | ]
} | | kqS r}   r}   r   namer   r   r}   r   r         zITestMaskedArrayArithmetic.test_eq_ne_structured_extra.<locals>.<listcomp>c                    s   g | ]
} | | kqS r}   r}   r  r  r}   r   r     r  )r~   r   r`   r  r   r(   r   r   r  r  r   )	r   rA  ma1r1ma2r2eq_expectedel_by_elne_expectedr}   r  r   test_eq_ne_structured_extra  sB   





z5TestMaskedArrayArithmetic.test_eq_ne_structured_extrarA  SUrZ  r  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   rA  rZ  r   r   r   r}   r}   r   test_eq_for_strings  ,   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  r  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  r  rZ  r   r   r   r}   r}   r   test_eq_for_numeric  ,   z-TestMaskedArrayArithmetic.test_eq_for_numericopc                 C   sb   t ddgddgd}tddd}|||}t|jj|jk t|jt|jt	|jB  d S )Nr   r   r   r   r   r   )
r(   r~   r!   rl   r   r   rn   r   r{   r  )r   r  r   r   r_  r}   r}   r   test_eq_broadcast_with_unmasked  s
   
 z9TestMaskedArrayArithmetic.test_eq_broadcast_with_unmaskedc                 C   sD   t g dg dg dg}||d}t|jj  t|jtu  d S )Nr   ry  rV  r  rF  r   )r(   r   r   rn   ra   )r   r  r   r_  r}   r}   r   test_comp_no_mask_not_broadcast  s   
z9TestMaskedArrayArithmetic.test_comp_no_mask_not_broadcastc                 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  r  r}   r}   r   test_ne_for_numeric'  r  z-TestMaskedArrayArithmetic.test_ne_for_numericc                 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 r  )r(   r   r   r   r   r   r"  )r   r  r  r  rZ  r   r   r   r}   r}   r   test_comparisons_for_numericH  s,   

z6TestMaskedArrayArithmetic.test_comparisons_for_numericzN/Ac                 C   sL   t g dg d|d}t g dg d|d}t|||j||j|j d S )N)r   r   cder  )r   r"  )r  r   r   )rL   r   r   )r   r  rZ  r  r  r}   r}   r   test_comparisons_stringsk  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 d    d S 1 sw   Y  d S )NzComparison to `None`r   r   r   TFr   )r   r  r  r(   r   r   rK   )r   r  r   r}   r}   r   test_eq_with_Nonev  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   rK   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_dimensions  s   z6TestMaskedArrayArithmetic.test_eq_different_dimensionsc                 C   s   t g dg dd}t tjtjdtddgg dd}t|}t|| t|j|j t|jg d t|}t|| t|j|j t|jg d d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rL   r~   r8  rF   r   r   )r   r   r  r   r}   r}   r   test_numpyarithmetic  s   


z.TestMaskedArrayArithmetic.test_numpyarithmetic)?r  r  r  r   r-  r2  r5  r8  r;  r<  r>  r?  r@  rA  rD  rE  rH  rI  rM  rP  rQ  r`  rd  rr  r   markparametrizerw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  num_dtsnum_idsr  operatorr  ltr  gtr  r  leger  r  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 g dg dd}t |}t|j|j t |g ddd}t|jg d t |g ddd}t|jg d t |g dd}t|jg d d S )	Nr   r   r   r  F)r   	keep_maskTr=  r  r   r   r  r}   r}   r   test_keepmask  s   z'TestMaskedArrayAttributes.test_keepmaskc                 C   s  t d}g d}t|}t||dd}t||ddd}ddg|d	d
g< ddg|d	d
g< t|jg d t|jg d t|jg d t|j t|j  g d|d	d
< g d|d	d
< t|jg d t|jg d t|jt t	|d< t	|d< t|jg d t|jg d d	|d d < d	|d d < t|jg d t|jg d t|jg d t|jt |
  t d|d d < t|jg d t|jt |  t	||dk < t|jg d t|jg d d|t|d	kd< t|jg d t|jg d 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   r   r   r   Tr   	hard_maskFr   r  r   r   (   r   r   )r   r   r   r   r   )r   r   r   r   r  rI  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   r  )r!   rH   r(   r   r   r   r   r#  ra   rK   soften_maskharden_maskr   r9   )r   r   rg  r,  xhxsr}   r}   r   test_hardmask  s`   
&z'TestMaskedArrayAttributes.test_hardmaskc                 C   sR   t d}g d}t|}t||dd}d|dd< d|dd< t|jg d	 d S )
Nr   r  Tr  r  r   r   r   )r  r   r   r   r   )r!   rH   r(   r   r   r   r   rg  r,  r  r}   r}   r   test_hardmask_again  s   z-TestMaskedArrayAttributes.test_hardmask_againc                 C   s   t g dg dd}| }t|| d|d< t|| t|t g dg dd | }d|d< t|| t|t g dg dd d S )Nr   r   r   r   r   r   r   r~  )r(   r  r   r  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!   rK   r   r   ra   
_smallmaskr{   r  r}   r}   r   test_smallmask  s   z(TestMaskedArrayAttributes.test_smallmaskc                 C   sp   t g dg d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(   shrink_maskr   r   ra   r~   r   r   r   r   r   r}   r}   r   test_shrink_mask!  s   
z*TestMaskedArrayAttributes.test_shrink_maskc                 C   sL  t g dg d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rd}|d7 }qd S )N))r   r  one)r   r  two)r   ffffff
@thr))r   皙@fou)r         @fiv)r   gffffff@sixr   r   r  r  r   r  r  r  )r   r   r  r   r  r   r   r   r   r  r   r	  r   )r(   r   r   rK   r  r   rn   )r   r   xflatr  jr   r}   r}   r   	test_flat.  s:   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,  r  r}   r   assignW  s   z;TestMaskedArrayAttributes.test_assign_dtype.<locals>.assign)r   rM  )r~   r{   r   r(   r   rL  r   r   r  r  r   r   ra   )r   r,  r  r   r}   r  r   test_assign_dtypeL  s   
z+TestMaskedArrayAttributes.test_assign_dtypeN)r  r  r  r  r  r  r  r  r  r  r  r}   r}   r}   r   r    s    7
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%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   rY  _check_fill_valuer   r   r0   r   r  )r   r  fvalr}   r}   r   test_check_on_scalari  s   






z&TestFillingValues.test_check_on_scalarc                 C   sx  t jjj}dtfdtfdg}|g d|}tt|t t	|
 g d |d |}tt|t t	|
 tdtdttdg t jd|d	}|||}tt|t t	|
 g d t jdd
tfdtfdgd	}|||}tt|t t	|
 g d t jdtd}d|d< ||t}tt|t t	|
 g d dtfg}|d|}tt|t t	|
 d d S )Nr   r   )r  r  )r  )gr  )r  r     ???r   r   r   r   r  r  )r/  r  r  rn   r   6e)r  )r~   r   rY  r  r   r   r   r  r
   r   itemr0   r   r(   r>  )r   r  r  r  fill_valr}   r}   r   test_check_on_fieldsy  s<   







z&TestFillingValues.test_check_on_fieldsc                 C   s   t g d}|jddi t |td}t|jg d t|jtd t |td}t|jg d t|jtd |	t}t|jg d 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   r  r   )
r(   r  updater   r   r   r"  r0   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   )r0   r~   r(   r   r   )r   r  f2f3r}   r}   r   test_default_fill_value  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   r0   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)vV7r-  )r~   r   r0   r   r(   )r   rA  r  r}   r}   r   test_default_fill_value_void  s   &z.TestFillingValues.test_default_fill_value_voidc                 C   s  t g ddd}|g d }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g d}d|_tt	|jj
t t|jd t|jtd d S )Nr   r  r"  )r   r   r   r  r   r  )r   r   )r   r   r   r   r       8@s   999r   )rF  r  )rF  r  rF  r  )r   r   r  )rL   r   _fill_valuer   r(   r   r"  r  r~   r)   r   )r   r   seriesmtyper   r}   r}   r   test_fillvalue  s$   z TestFillingValues.test_fillvaluec                 C   s   t dgdtfddtfgd}t )}|td |ddg }tt|jd |dd  |d d	 k W d    d S 1 s=w   Y  d S )
Nr  r  r  r  r   zNumpy has detected)r  r   r   r   )	r(   r   r   r   r  r  r   r  r"  )r   r*  r  	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  rW  rK  r  zint, float, floatr~  r  )r~   r   rY  r  r   r   r(   r0   r   r   r   rL   r"  r   )r   r  r  r  r   Mr}   r}   r   test_fillvalue_exotic_dtype  sB   





z-TestFillingValues.test_fillvalue_exotic_dtypec                 C   sn   dD ]2}t d|}tt d| d }tj|| t d|}tt d| d }tj|| qd S )N)asfspsnsusmsr   r,  hDWr9  Yr  z<M8[]z<m8[)r  
datetime64r0   r   r~   testingr   timedelta64)r   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   r3  )r   r   r   r  r  r  r  r   r   r   )r(   r   r"  r   r   r0   r]   rZ   r   r   r   r}   r}   r   test_extremum_fill_value*	  s(   z*TestFillingValues.test_extremum_fill_valuec                 C   s   t g d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 )Nr   r   r   r_  r   r   r   )r(   r~   r  r]   r   r   fullrZ   rL  r}   r}   r   !test_extremum_fill_value_subdtypeB	  s   "z3TestFillingValues.test_extremum_fill_value_subdtypec                 C   s   dt fdt fg}tttg dg dd|d}|d }|d t|jtd tt|j	d d	|j	d< tt|j	d
 tttg dg d|d}|d }|d t|jtd tt|j	dt
df d S )Nr   r   r   ry  r  r"  r   r   )r   r  rt  )r   rt  r   r   )r   r(   r   r   r   r   r3  r~   r  r"  r0   )r   r  r   aar  ttr}   r}   r    test_fillvalue_individual_fieldsM	  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~   r8  r   r4   rn   r   r"  r3  r   r  r   r0   )r   r  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   r2  r0  rQ  r   )r4   r   r"  rc   r   r{   complexrA   r  r}   r}   r   test_fillvalue_as_argumentsm	  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   rn   r  )r4   r   rn   rc   r   r{   rY  r  r}   r}   r   test_shape_argument{	  s   
z%TestFillingValues.test_shape_argumentc                 C   s   t g d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   rQ  )rM  r   r0  )rM  r"  r   r  )	r(   r~   int64r  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,)3Ur  r  s   spamr  eggs)r4   r   r"  r0   r  r}   r}   r   test_fillvalue_bytes_or_str	  s   z-TestFillingValues.test_fillvalue_bytes_or_strN)r  r  r  r  r   r&  r)  r,  r/  r6  r8  r:  rJ  rM  rP  rT  rX  rZ  r\  r_  ra  r}   r}   r}   r   r  g  s&    /*r  c                   @   sT   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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   r3  r&  )r(   r   r   r~   r'  r(  r)  r   r}   r}   r   r   	  s
   ((
zTestUfuncs.setup_methodc                 C   r*  r+  r,  r   r}   r}   r   r-  	  r.  zTestUfuncs.teardown_methodc              	   C   s   dD ]D}zt t|}W n ty   t t|}Y nw t tjj|}| jd |j }|| }|| }t	|
d|
d| t|j|j|d qd S )N)*rs   rF   rG   r7   r,   ro   r-   rw   r%   r"   r&   rp   r.   rx   arcsinhr#   arctanhr   fabsnegativefloorceillogical_notr   rt   r_   r2   r  floor_divide	remainderfmodhypotr$   r6   rb   rE   r@   rD   r?   logical_and
logical_orlogical_xorr   )err_msg)rX  umathAttributeErrorfromnumericr  r   rY  r   ninr   r9   r   r   )r   r  uf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   rc  r   )
r   r   r   rq   r   ru   rg   r   r   r   r  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g d t|dd j t|dd j d S )Nr      r   r   r   r   )r   r   rV  r  )r!   rl   rW   r   rX   r[   r   r   )r   r   amaskr}   r}   r   test_minmax	  s   zTestUfuncs.test_minmaxc                 C   sl   t g dg dd}t|}t dddtddgg dd}t|| t|j|j tt|jt  d S )	Nr  r   r   r   r   r   r   r   r   r   r   r   )rL   r~   rs   r   r   r   r  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u  tt	t
 |dk t |tu  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      dS )NMy mulr}   r   otherr}   r}   r   __mul__
     zDTestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass.__mul__c                 S   r  )NMy rmulr}   r  r}   r}   r   __rmul__
  r  zETestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass.__rmul__N)r  r  r  __array_priority__r  r  r}   r  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   r  )NMe2mulr}   r  r}   r}   r   r  
  r  zETestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass2.__mul__c                 S   r  )NMe2rmulr}   r  r}   r}   r   r  
  r  zFTestUfuncs.test_treatment_of_NotImplemented.<locals>.MyClass2.__rmul__c                 S   r  )NMe2rdivr}   r  r}   r}   r   __rdiv__ 
  r  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  )rL   r   r  r  multruedivr   r  NotImplementedr   r_   re   __truediv__)r   r  mer  me_toor}   r  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 = td t| t|d |dk t	| t
| t| t| t| t| t|d t|d W d    d S 1 sQw   Y  d S )Nr   r   r   r   errorr   )r~   r   r(   r8  warningscatch_warningsfilterwarningsr7   r   rs   rF   rw   r%   r"   r#   r2   r   r  r}   r}   r   test_no_masked_nan_warnings-
  s   



"z&TestUfuncs.test_no_masked_nan_warningsc                 C   sf   t ddd}t j|}t jdd |d }t j||d  W d    d S 1 s,w   Y  d S )Nr   r   皙?raise)underr   r   )r~   r!   r   r(   r7  rG  r   )r   r   XX2r}   r}   r   test_masked_array_underflowI
  s   "z&TestUfuncs.test_masked_array_underflowN)r  r  r  r   r-  r{  r|  r  r  r  r  r  r}   r}   r}   r   rb  	  s    	
+rb  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   
AllIntegerAllFloatc                 S   s   g | ]}t |jqS r}   r~   r   rM  r   rc  r}   r}   r   r   [
      zATestMaskedArrayInPlaceArithmetic.setup_method.<locals>.<listcomp>)r!   rK   intdatar   r   	floatdatar~   	typecodes
othertypesuint8	uint8datar   r   r   r   r}   r}   r   r   S
  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  rK   r   r  r   rf  r   )r   r   r   r   rc  id1r}   r}   r   test_inplace_addition_scalarb
  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~   int16rK   r   rJ   r   r   r   r   r,  r   r}   r}   r   test_inplace_addition_arrayq
  s   z<TestMaskedArrayInPlaceArithmetic.test_inplace_addition_arrayc                 C   s<   | j \}}}|d8 }t||d  |d8 }t||d  d S r6  )r  r   r  r}   r}   r   test_inplace_subtraction_scalar}
  
   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   rK   r   rJ   r  r}   r}   r   test_inplace_subtraction_array
     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
  r  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
  r  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!   rK   r   r  r}   r}   r    test_inplace_division_scalar_int
  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!   rc   r  r}   r}   r   "test_inplace_division_scalar_float
  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_float
  s   "zBTestMaskedArrayInPlaceArithmetic.test_inplace_division_array_floatc                 C   s   ddddt d dddddddg}g d	}g d
}g d}t||d}t||d}|| }t|jg d t|jddddt  d dddddddg | }|| }t|jg d 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   r   r   r   r   r   r   r   r   r   r   )r   rL   r   r   r   r   )r   r   r   r   r   r   r   r   r}   r}   r   test_inplace_division_misc
  s"      z;TestMaskedArrayInPlaceArithmetic.test_inplace_division_miscc                 C   s   t g dg dd}|d }t|jg d t|jg d |d7 }t|jg d t|jg d t g dg dd}|t g dg dd }t|jg d t|jg d t g dg dd}|t g dg dd7 }t|jg d t|jg d d S )	Nr   r6  r   r   )r   r   r   r   r   r   r   r   r  r   r}   r}   r   test_datafriendly_add
  s   z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_addc                 C   s  t g dg dd}|d }t|jg d t|jg d t g dg dd}|d8 }t|jg d t|jg d t g dg dd}|t g dg dd }t|jg d t|jg d t g dg dd}|t g dg dd8 }t|jg d t|jg d d S )	Nr   r6  r   r   )r   r   r   r   rJ  r   r  r   r}   r}   r   test_datafriendly_sub
      z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_subc                 C   s  t g dg dd}|d }t|jg d t|jg d t g dg dd}|d9 }t|jg d t|jg d t g dg dd}|t g dg dd }t|jg d t|jg d	 t g dg dd}|t g dg dd9 }t|jg d t|jg d	 d S )
Nr   r6  r   r   r   r   r   r  r   )r   r  r   r   r  r   r}   r}   r   test_datafriendly_mul  r  z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_mulc                 C   s  t g dg dd}|d }t|jg d t|jg d t g dg dd}|d }t|jg d t|jg d t g dg dd}|t g dg dd }t|jg d	 t|jg d
 t g dg dd}|t g dg dd }t|jg d	 t|jg d
 d S )Nr   r6  r   r   )r   r   r   r  )r   ra  g      >@r   )r   r  r   r   r  r   r}   r}   r   test_datafriendly_div  r  z6TestMaskedArrayInPlaceArithmetic.test_datafriendly_divc                 C   sh   t g dg dd}|d }t|jg d t|jg d |dC }t|jg d t|jg d d S )Nr  r6  r   r/  )r   ;f@r   )r   r  r   r  r   r}   r}   r   test_datafriendly_pow3  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ur4t|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   ra   r   r}   r}   r   test_datafriendly_add_arrays?     
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ur4t|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_arraysM  r  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ur4t|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[  r  z=TestMaskedArrayInPlaceArithmetic.test_datafriendly_mul_arraysc              	      s   | j D ]J t < td  fdd| jD \}}}t|d< | d7 }t|| d  | d7 }t|| d  W d    n1 sHw   Y  qd S )Nr  c                 3       | ]}|  V  qd S r   r   r  r  r}   r   	<genexpr>n      zUTestMaskedArrayInPlaceArithmetic.test_inplace_addition_scalar_type.<locals>.<genexpr>r   r   )r  r  r  r  r  rK   r   r  r}   r  r   !test_inplace_addition_scalar_typei  s   


zBTestMaskedArrayInPlaceArithmetic.test_inplace_addition_scalar_typec              	      s   | j D ]U t G td  fdd| jD \}}}|j}td d}t|d< ||7 }||7 }t|||  t|||  t|jt	||j W d    n1 sSw   Y  qd S )Nr  c                 3   r  r   r  r  r  r}   r   r  z  r  zTTestMaskedArrayInPlaceArithmetic.test_inplace_addition_array_type.<locals>.<genexpr>r   r   r   
r  r  r  r  r  r   r!   rK   r   rJ   r  r}   r  r    test_inplace_addition_array_typeu     


zATestMaskedArrayInPlaceArithmetic.test_inplace_addition_array_typec              	      s   | j D ]F t 8 td  fdd| jD \}}}| d8 }t|| d  | d8 }t|| d  W d    n1 sDw   Y  qd S )Nr  c                 3   r  r   r  r  r  r}   r   r    r  zXTestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_scalar_type.<locals>.<genexpr>r   r  r  r  r  r  r   r  r}   r  r   $test_inplace_subtraction_scalar_type     


zETestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_scalar_typec              	      s   | j D ]U t G td  fdd| jD \}}}|j}td d}t|d< ||8 }||8 }t|||  t|||  t|jt	||j W d    n1 sSw   Y  qd S )Nr  c                 3   r  r   r  r  r  r}   r   r    r  zWTestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_array_type.<locals>.<genexpr>r   r   r   r  r  r}   r  r   #test_inplace_subtraction_array_type  r  zDTestMaskedArrayInPlaceArithmetic.test_inplace_subtraction_array_typec              	      s   | j D ]F t 8 td  fdd| jD \}}}| d9 }t|| d  | d9 }t|| d  W d    n1 sDw   Y  qd S )Nr  c                 3   r  r   r  r  r  r}   r   r    r  z[TestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_scalar_type.<locals>.<genexpr>r   r  r  r}   r  r   'test_inplace_multiplication_scalar_type  r  zHTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_scalar_typec              	      s   | j D ]U t G td  fdd| jD \}}}|j}td d}t|d< ||9 }||9 }t|||  t|||  t|jt	||j W d    n1 sSw   Y  qd S )Nr  c                 3   r  r   r  r  r  r}   r   r    r  zZTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_array_type.<locals>.<genexpr>r   r   r   r  r  r}   r  r   &test_inplace_multiplication_array_type  r  zGTestMaskedArrayInPlaceArithmetic.test_inplace_multiplication_array_typec              
      s   dd t jd D }| jD ]p t b td  fdd| jD \}}}td d d	 }td d d	 }t|d	< z| d	 }| d	 }t	|| t	|| W n t
ym   d
  d} |v skJ |Y nw W d    n1 sxw   Y  qd S )Nc                 S      h | ]}t |jqS r}   r  r   r  r}   r}   r   	<setcomp>  r  z[TestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_scalar_type.<locals>.<setcomp>Complexr  c                 3   r  r   r  r  r  r}   r   r    r  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!   rK   r   r  )r   unsupportedr   r   r   msgr}   r  r   'test_inplace_floor_division_scalar_type  s*   



zHTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_scalar_typec              
      s  dd t jd D }| jD ]v t h td  fdd| jD \}}}|j}td d}t	|d	< z)|| }|| }t
|||  t
|||  t
|jtt||j| d
k W n tys   d  d} |v sqJ |Y nw W d    n1 s~w   Y  qd S )Nc                 S   r  r}   r  r  r}   r}   r   r    r  zZTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_array_type.<locals>.<setcomp>r  r  c                 3   r  r   r  r  r  r}   r   r    r  zZTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_array_type.<locals>.<genexpr>r   r   r   r   r  r  )r~   r  r  r  r  r  r  r   r!   rK   r   rJ   r  )r   r  r   r   r   r,  r   r  r}   r  r   &test_inplace_floor_division_array_type  s2   


zGTestMaskedArrayInPlaceArithmetic.test_inplace_floor_division_array_typec                    sx  | j D ] t }|t  fdd| jD \}}}td d d }td d d }t|d< z| d }t|| W n tt	fy] } zt
jt|dd W Y d }~nd }~ww z| d }t|| W n tt	fy } zt
jt|dd W Y d }~nd }~ww t tjrtt|jdd  d	 ntt|jd
d  d	 W d    n1 sw   Y  qd S )Nc                 3   r  r   r  r  r  r}   r   r    r  zUTestMaskedArrayInPlaceArithmetic.test_inplace_division_scalar_type.<locals>.<genexpr>r   r   r   r   
stacklevelFailed on type=.r   )r  r   recordr   r  r!   rK   r   DeprecationWarningr  r  warnr   
issubclassr~   integerr   rF   )r   r  r   r   r   er}   r  r   !test_inplace_division_scalar_type  s8   

zBTestMaskedArrayInPlaceArithmetic.test_inplace_division_scalar_typec                    s  | j D ] t }|t  fdd| jD \}}}|j}td d}t|d< z|| }t|||  W n t	t
fyR } ztjt|dd W Y d }~nd }~ww z|| }t|||  t|jtt||j| dk W n t	t
fy } ztjt|dd W Y d }~nd }~ww t tjrtt|jd	d
  d ntt|jdd
  d W d    n1 sw   Y  qd S )Nc                 3   r  r   r  r  r  r}   r   r    r  zTTestMaskedArrayInPlaceArithmetic.test_inplace_division_array_type.<locals>.<genexpr>r   r   r   r   r  r   r   r  r  )r  r   r  r   r  r   r!   rK   r   r  r  r  r  r   rJ   r  r~   r  r   rF   )r   r  r   r   r   r,  r   r  r}   r  r    test_inplace_division_array_type  s@   

zATestMaskedArrayInPlaceArithmetic.test_inplace_division_array_typec              	   C   s   | j D ]Y}t K td tg dg d|d}||d }tg dg d|d}t|j|j t|j|j ||dC }t|j|j t|j|j W d    n1 sWw   Y  qd S )Nr  r   r6  r  r   r  )r  r  r  r  r(   r   r   r   )r   r  r   r   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  P
  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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ejd'd(ejd)d*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*dMdN Z+dOdP Z,dQdR Z-dSS )TTestMaskedArrayMethodsc              
   C      t g d}|dd}|dddd}t g d}t||d}t|||jd}t|||jd}t g d}t||d}	t|||jd}
t|||jd}||||||||	|
|f
| _d S N$g      @gGz.@g-!@g      !@g&1?ʡE@\( @Q@{G#@Pn@h|?!@!rh@jt@J+@zGa@!rh@ʡE@-@)\(@(\B#@+@uV@~j@g"~@gK7@
ףp=J#@Gz@Mb@}?5^#@羟/$@!rhm@-#@J+@Mb@ʡ@g-?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   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   r   r~   r(   rl   rn   r   r   r   r  XXr,  r  mXmXXr   m2xm2Xm2XXr}   r}   r   r   B     z#TestMaskedArrayMethods.setup_methodc              	   C   s@  t g d}t| |j  t| |j  t| |j  t| |j  t|ddddd|jddddd t|g d|jg d 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   r   r   argmaxargminr*   compressconjr,   diagonalru   rv   ry   r   r   r,  r}   r}   r   test_generic_methodsb  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)rM   Fr   )r~   r   r   r   r   r\  rL   rK   ru  int_r[   r   r}   r}   r   test_allcloset  s    

z$TestMaskedArrayMethods.test_allclosec                 C   sD   t jg dgdd}t||ddsJ t||t ddds J d S )NrH  zm8[ns]r   r   )atolr   r>  )r~   r(   r   rH  r  r}   r}   r   test_allclose_timedelta  s   z.TestMaskedArrayMethods.test_allclose_timedeltac                 C   s2  t g dg dg dg}t jg dg dg dgt jd}t||d}|d	k}|d	k }t|   t|  t|d
g d t|dg d t|d
g d t|dg d t|   t|  t|d
g d t|dg d t|d
g d t|dg d d S )N)gp=
ף?gp=
ף?g?)gQ?gQ?g)\(?)gףp=
?gףp=
?gffffff?rX  r   r  r   r   r   r   r  r   r   )r~   r(   r  rL   r   r   r   r   )r   r   r,  r  mxbigmxsmallr}   r}   r   test_allany  s2   

z"TestMaskedArrayMethods.test_allanyc                 C   s   t dtd}tg ddd}t| tu  |j|d t| t|jd t|tu t dtd}t| tu  |j|d t|  t|jd t|tu d S )Nr}   r   r   Tr   rU  )r4   r  r(   r   r   rK   r   r   )r   storerO  r}   r}   r   test_allany_oddities  s   
z+TestMaskedArrayMethods.test_allany_odditiesc              
   C   s.  | j \
}}}}}}}}}	}
t| d t| d t| d t|	 d t| d t| d t| d t|	 d t|dg d t|	dg d t|dg d t|	dg d	 t|d
g d t|	d
g d t|d
g d t|	d
g d d S )N#   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   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   test_argmax_argmin  s"   z)TestMaskedArrayMethods.test_argmax_argminc                 C   sp   t g d}t g d}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(   clipr   r   r   )r   r   r,  r  clippedr}   r}   r   	test_clip  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   r2  )r~   r!   r   r   r9  r   r   r)  r}   r}   r   test_clip_out  s   
z$TestMaskedArrayMethods.test_clip_outc                 C   sz  t g d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g d t|jg d t|jd t|||  t g dg dgg dg dgd}|| dk}t|jg d t|jg d t	g d}|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  i'  r0  r        @r   r   r   r   r   r   r   r  r6  r  r  r  rU  r   r      )r  r  r  rU  r   )r   r   r   rc  r   r  r  rU  )
rL   r   r&  rK   r   r   r"  rj   r~   r(   )r   r   	conditionr   r   r}   r}   r   test_compress  s2   

z$TestMaskedArrayMethods.test_compressc                 C   sH   t g dg dd}| }t|| t|d< | }t|g d d S )NrH  r   r   r   r   r   r   rN  )r(   
compressedr   rK   r   r}   r}   r   test_compressed  s   
z&TestMaskedArrayMethods.test_compressedc                 C   s   dt fdtfdg}tg d|d}tt|j t| t|}t|j|j t|j|j t	t||d}t|j|j t|j|j tg dg dd}t|}t
t|j|j  |t}t
t|j|j d S 	Nr   r   r  ))r   r  z1.1)r   r  z2.2)r   r  z3.3r   r   r}  r   )r   r   rL   r   r   r"  r  r5   rn   r4   r   r~   r   r   r  r   datatyper   r   r}   r}   r   
test_empty  s    
z!TestMaskedArrayMethods.test_emptyc                 C      dt fdtfdg}tg d|d}tt|j t| tt||d}t|j|j t|j|j t	|}t|j|j t|j|j tg dg dd}t	|}t
t|j|j  | }t
t|j|j d S rE  )r   r   rL   r   r   r"  r  r{   rn   r|   r   r~   r   r   r  rF  r}   r}   r   
test_zeros,      z!TestMaskedArrayMethods.test_zerosc                 C   rI  rE  )r   r   rL   r   r   r"  r  rc   rn   rd   r   r~   r   r   r  rF  r}   r}   r   	test_onesB  rK  z TestMaskedArrayMethods.test_onesc                 C   s  t d}g d}t|}t||d}t|d tu  t|d tu  ddg|ddg< t|d tu  t|d tu t|g d	 tt dg d
d d}g d}||g d t|tg d t|j	g d ||tg dg d t
|g d t|j	g d tt dg d
d d}t||g d t|tg d t|j	g d t||tg dg d t
|g d t|j	g d 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   rV  r  rF  )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )
r   r   r   r   r   r   r   rV  r  rF  )
r   r   r   r   r   r   r   r   r   r   )r!   rH   r(   r   rK   r   rL   rh   r)   r   r   )r   r   rg  r,  r   r  r}   r}   r   test_putX  s2   zTestMaskedArrayMethods.test_putc                 C   s   t d}tddgddgd}|ddg| t|d	 tu t|d	 d	 t|d tu t|d d
 t|d tu  t|d
 tu t|d
 d	 d S )Nr   r   r   FTr   r   r   r   r   )r{   r(   rh   r   rK   r   )r   r   r   r}   r}   r   test_put_nomaskw  s   z&TestMaskedArrayMethods.test_put_nomaskc                 C   sT   t d}g d}t|}t|d |ddd}|g dg d t|jg d d S )	Nr   r  r   Tr  )r   r   r   r   r   r=  )r   r   r   r   r   )r!   rH   r(   rh   r   r   r  r}   r}   r   test_put_hardmask  s   z(TestMaskedArrayMethods.test_put_hardmaskc                 C   s$  t dd }t|g dd}g d}| }t||d t|g d | }t||d t|jg d t|jg d tg d	g d
d}| }t||| t|jg d t|jg d | }t||| t|jg d t|jg d | }|  t||| t|g d d S )Nr   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   rG  )r   r   rG  r   r   rG  )r   r   r   r   r   r   )r   r  r  r  r  rU  )r   r   r   r   r   r   )r   r   r  r   r   rU  )r   r   r   r   r   r   )r   r   r   r   r   r   )r!   r(   r   ri   r   r   r   r  )r   r   r  r   r   mxxvaluesr}   r}   r   test_putmask  s.   z#TestMaskedArrayMethods.test_putmaskc                 C   s   t g dgg dgd}| }t|jj|j t ddgddgd}| }t|jj|j t g dg ddd	}t| jg d d
|_d|_| }t|jg d t|jg d t|jd
 t|jddg d t|jddg d d S )Nr=  r   r   r   r   r   r   r   r   rH  rB  Fr  rW  r/  r0  r  )r   r   r   r   )r(   rj   r   r   rn   r"  r   )r   r   aravelarr}   r}   r   
test_ravel  s    z!TestMaskedArrayMethods.test_ravelr1  AKCF
data_orderCFc                 C   s   t jd|d}d|dd d f< t jdt|dj}d|dd d f< t||d}|jjj|jjjks2J |	ddk
 s=J ||}|	ddk
 sMJ t||||j d S )N)r   r   r0  r   )r   r   )r   r1  Fr   )r~   rc   r  r(  r(   r   r)  fncr   r9   r   rj   r   )r   r1  rY  ry  r   r   raveledr}   r}   r   test_ravel_order  s   
z'TestMaskedArrayMethods.test_ravel_orderc                 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   rW  rS  )r!   rK   rl   r   rn   r   r  r}   r}   r   test_reshape  s   z#TestMaskedArrayMethods.test_reshapec                 C   s  t g dg dtjd}t|}t|jg d t|jg d t|dd}t|jg d t|jg d	 |  t|jg d t|jg d t g dg dtjd}|jdd t|jg d t|jg d	 g d}t|}ttt	t
  t g d
ttjd}t|dd}t|jg d t g d
g dtjd}t|dd}t|jg d t|jg d t ddgtjd}t|dd}t|t ddgtjd d S )Nr   r   r   r   r   r  rH  r   r   r   r   FrD  )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   stablekind)r(   r~   r  rr   r   r   r   r   r  sortedr   ra   r  )r   r   sortedxr}   r}   r   	test_sort  s6   z TestMaskedArrayMethods.test_sortc                 C   s8   t g dtjd}t g d}t|dd}t|| d S )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   rc  rd  )r(   r~   r  r'   r   )r   r   r+  computedr}   r}   r   test_stable_sort  s   z'TestMaskedArrayMethods.test_stable_sortc              	   C   s   t g dg d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i |}|t|fi | }t|j|j t|j|j q&d S )
Nr_  r   r  TrD  Fr   r0  )r"  rE  )	r(   r~   r  dictrr   r'   r   r   r   )r   r   kwargsrg  
argsortedxr}   r}   r   test_argsort_matches_sort	  s   

z0TestMaskedArrayMethods.test_argsort_matches_sortc                 C   s  t g dg dg}|d t|g dg dg t g dg dg}|d t|g dg dg t g dg dgg d	g d
gd}|d t|g dg dg t|jg dg dg t g dg dgg d	g d
gd}|d t|g dg dg t|jg d
g d
g t g dg dg dgg dg dg dgg dg dg dgg dg dg dgg}t||d dk< | }|d}|d |d t|| | }|d}|d |d t|| | }|d}|d |d t|| d S )N)r  r   r   )r   r   rF  r   r  )r  r   rF  r   )r   r   r  )r   r   rF  r   r6  r   r~  r   r  ry  r   r   rG  r   )rL   rr   r   r   rK   r   r9   )r   r   amanr}   r}   r   test_sort_2d  sF   

$
$











z#TestMaskedArrayMethods.test_sort_2dc                 C   s   t g dg ddtfdtfgd}t g dg ddtfdtfgd}t g dg d	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 )N)r  r  rW  r   r   r  r  r	  )r  r  r  r  r  r  r  r  r  r   )r  r	  rr  rW  r  r  r  )r  r  r  r  r  r  r  )r  r  r	  rr  rW  r  r  )r  r  r  r  r  r  r  FrD  r-  r   )r(   r   rr   r   r   r~   r   r  )r   r   	mask_last
mask_firstr   rA  r}   r}   r   test_sort_flexible?  s2   


z)TestMaskedArrayMethods.test_sort_flexiblec                 C   s,   t g dg dd}tt|t| d S )N)r   r   r   r   r   )r   r   r   r   r   r   )r(   r   r~   r'   r  r}   r}   r   test_argsort_  s   z#TestMaskedArrayMethods.test_argsortc                 C   s   t g dg}t| g d t g dgg dgd}t| g d t| jg d tdgg}| }t|d d|d< t|d d t dggdd}| }t|tjju t|j	d d|d< t|d d d S )	Nr   r  r   r   r   .r  T)
rL   r   squeezer   r~   r(   r   r   rK   r   )r   r   ry  arr_sqm_arrm_arr_sqr}   r}   r   test_squeezed  s    
z#TestMaskedArrayMethods.test_squeezec                 C   s   t g d}t g d}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   )r~   r(   rl   swapaxesr   rn   )r   r   r,  r  r  	mXswapped
mXXswappedr}   r}   r   test_swapaxes{  s   z$TestMaskedArrayMethods.test_swapaxesc                 C   sL  t g dg d}t|g dt g dg d t|g d|g d  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u  t|dtjju  tg d
g dgg dg d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 )N)r   r  r  r  rC  )r   r   r   )r   r   r  r6  r   r   r   r  r  r>  r   r   r   rc  r  r  rU  )rL   r   rv   r   r~   r   rK   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g dg dg d	g d
g dg}t|| t||}tg dg dg d	g dg dg}t |d<  |d< |d< t|| t|j|j tddd}t||}t |d< |d< t|| t|j|j d S )N)r  r  %   rF  r?  r   r   r   r9  mode)r  r  r  )r  r  rF  )r  rF  r?  )rF  r?  r?  )r?  r?  r?  )rF  r?  r  )r?  r  r  r  )r   r   r   r   rS  r  r  )r~   r(   r!   r   rv   r   rK   r   )r   r   indices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 u  t|d d u  d|_| }g dg dg dg}t|d g d t|d g d t|d	 g d t|| t tt	g d
g dg ddt
fdtfdgd}t|d< t| g d 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 )Nr  r   r~  r   )r   Nr   r   )r   r   r   rV  )r  rF  N   r   r   r   )r  r  r  )r  r  r  r   r   r  r   r   ))r   r  s   one)r   r     two)NNNr	  r  r  r  r   r   )r(   r~   r!   rK   tolistr   rn   r   r   r   r   r   )r   r   xlistr  r   r   r}   r}   r   test_tolist  s<   
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  q0q*d S )Nr  r3  r   r   r   r   )r(   r   r  r   r  r~   genericr   )r   r   entryr  r}   r}   r   test_tolist_specialcase  s   
z.TestMaskedArrayMethods.test_tolist_specialcasec                 C   s@  t d}| }t|d |j t|d |j t|g d< | }t|d |j t|d |j dtfddtfg}tt	t
t ddtjd|d	}t|g d< | }t|d |j t|d |j td
}tt	t
t dtjdtjd|d	}t|g d< | }t|d |j t|d |j d S )Nr   r   r   )r   r   r   r   r  r1  r  ABCDEFGHIJKLMr   r  )r!   toflexr   r   r   rK   r   r   r(   r   r   r~   r   r   r   r   )r   r   r  r  r}   r}   r   test_toflex  s<   



z"TestMaskedArrayMethods.test_toflexc                 C   s   t g d}t| }t|| t|j|j t g dg dd}t| }t|| t|j|j t g dg ddtfdtfgd}t| }t|| t|j|j d S )	Nr   r6  r   )r  r  )r   r   )r  r  r  r  r  r  )r(   r<   r  r   r   r   r   r   rL  r}   r}   r   test_fromflex  s   


z$TestMaskedArrayMethods.test_fromflexc                 C   sr   t g dgg dd}t dgdgdgdgdggg dd}t|j| t| | tt|jd	|d	 d S )
Nr=  ra  r   r   r   r   r   r   r   )rL   r   r(  ry   r   cumsum)r   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_0d0  s   z*TestMaskedArrayMethods.test_arraymethod_0dc                 C   sb   t jg dg dg}t jj|d< |j}d|d< t jj|d< t|j|jj t|j|jj d S )Nr   ry  r  r   r  )r~   r   r(   rK   r(  r   r   r   )r   r   xtr}   r}   r   test_transpose_view6  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  rW  r   )r~   r   r{   rK   r(  r   r   r   )r   r   xdr}   r}   r   test_diagonal_viewA  s   z)TestMaskedArrayMethods.test_diagonal_viewN).r  r  r  r   r*  r,  r.  r1  r4  r8  r;  r<  rA  rD  rH  rJ  rL  r$  rM  rN  rO  rR  rW  r   r  r  r]  r^  rh  rj  rn  rq  ru  rv  r{  r  r  r  r  r  r  r  r  r  r  r  r}   r}   r}   r   r  @  sV     	
	
%( $ 
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+d, Zd-d. Zd/d0 Zd1d2 Zd3S )4TestMaskedArrayMathMethodsc              
   C   r  r  r  r  r}   r}   r   r   N  r#  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   r9   cumprod)r   r   r  r  r,  r  r  r  r   r!  r"  mXcpr}   r}   r   test_cumsumprodn  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
||u  t||d|d tdtd	}|d|d}t
||u  q d S )Nr   r   r  r   r   r  )r  r  r   r   r!  rT  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}t|D ]}t|d d |f  ||< q.t|D ]}t||  ||< qDt|d| t|d| d S r  )	r   rn   r   rb  r~   rC  r{   r   r  )r   r   r  r  r,  r  r  r  r   r!  r"  rg  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   bx)rL   r>  r   r   r   r  r}   r}   r   test_add_object  s   z*TestMaskedArrayMathMethods.test_add_objectc                 C   V   t g dg dtd}t| d t g dg dgtd}t|jddg d	 d S )
Nr   r   r  r   ry  r   r   rc  r   rV  rF  )rL   r>  r   ru   r  r}   r}   r   test_sum_object     z*TestMaskedArrayMathMethods.test_sum_objectc                 C   r  )
Nr   r   r  r   ry  r   r   rc  r   r   r  )rL   r>  r   r  r  r}   r}   r   test_prod_object  r  z+TestMaskedArrayMathMethods.test_prod_objectc                 C   s4   t g dtd}t| d t| g d d S )Nr   r   r   )r   r   r   )rL   r>  r   r  r    r  r}   r}   r   test_meananom_object  s   z/TestMaskedArrayMathMethods.test_meananom_objectc                 C   sN   t g d}t| j|j d|_t| j|j ttj|  d S )Nr   T)	rL   r   r    rn   r   r   r~   r   	is_maskedr  r}   r}   r   test_anom_shape  s
   z*TestMaskedArrayMathMethods.test_anom_shapec                 C   s   t tdddd}t| g dg dg t|jddg d	g d
g t|jddg dg dg g dg d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   rV  r   r   )g            r   )r   r  r/  r   rc  )r  r  r  )r  r  r  )r   r   r   r6  r  rT  g      g      g      ?g      @r  r   r  r   r   r   r   )rL   r~   r!   rl   r   r    r   r9   )r   r   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   rc      r   r   Fr   )axis1axis2)r   r(  r   tracerC  ru   r   r   r~   r!   rl   r   rL   )r   r   r  r  r,  r  r  r  r   r!  r"  mXdiagry  ry  r}   r}   r   
test_trace  s   "z%TestMaskedArrayMathMethods.test_tracec              
   C   s  | j \
}}}}}}}}}	}
|d}||}t|d|| t|jtu  |d}||}t|d|| t|jd  t|}|j||d t|| |dd}|d|d}}||}t|d|| t|}|j||d t|| d S )Nr   r   r2  r   r~  )	r   r9   dotr   r   r   ra   r5   r|  )r   r   r  r  r,  r  r  r  r   r!  r"  fxrfXr  mYYfXX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   r2  r      )rL   r  r   r9   r   r4  r}   r}   r   test_dot_shape_mismatch  s   $$z2TestMaskedArrayMathMethods.test_dot_shape_mismatchc                 C   s   t g ddd}t g ddd}tt| tj tt| tj | | ktdu s3J 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|u  t|jd	|d|u  d S )NrH  r  r   Tr  r  r   r  r   rc  rT  )r(   r   rM  r  r~   ri  r  r  r!   rl   r4   r   r   )r   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 ]4}t|| ||    t|| |d d |f    tt	|| |d d |f    qd S )	Nrc  r   rd  ddofr  r   r   r   r   
r   r   r  rC  r  r   rn   r  r~   rs   r   r   r  r  r,  r  r  r  r   r!  r"  mXvar0mXvar1r  r}   r}   r   test_varstd  s2   "z&TestMaskedArrayMathMethods.test_varstdc                 C   sN  t jdtd}tdtd}ttddd}dD ];}t||}t| tu  t|dtu  t|dtu  ||d t|tu t|jd ||d tt 	| qttddd}d	|d< dD ]C}t||}t|d
dtu  t|dd
dtu  t|dd
dtu  ||d
d t|tu t|jd ||d
d tt 	| qad S )Nr   r   r   Tr   )r  r  r   r2  rF  r   r  )rU  r  )
r~   r(   r   r!   rX  r   rK   r   r   r  )r   r^  moutr   
methodnamemethodr}   r}   r   test_varstd_specialcases&  s4   



z3TestMaskedArrayMathMethods.test_varstd_specialcasesc                 C   s   t g dg dgg dg dgd}|jddd}t|dg d t|jg d |jddd}t|dg d t|jg d |jddd}t|dg d t|jg d	 d S )
Nr=  r6  r   r   r  r~  r   r   r  )r(   r  r   r9   r   rL  r}   r}   r   test_varstd_ddofI  s   $z+TestMaskedArrayMathMethods.test_varstd_ddofc                 C   s   t dd}t|d< t|}t|g d t|}t|g d t|jg d t|}tg dg dg dgg dg dg dgd	}t|| d S )
NrF  r  r  )r   r   r  r  r~  )r   r   r   )r   r   r  r   )r!   rl   rK   r~   r1   r   r   r(   )r   r   rU  r  r}   r}   r   	test_diagU  s   
z$TestMaskedArrayMathMethods.test_diagc                 C   s  t g dg dg}t|dg d t|dddg t|dddg t|dg d	 t|ddd
g t|ddd
g t|dg d t|dddg t|dddg t|dg d t|dddg t|dddg d S )Nr   ry  r   r  r   r   r   r   r  x   r   r   )r(   r   ru   r  r[   rX   r  r}   r}   r   test_axis_methods_nomaskc  s   z3TestMaskedArrayMathMethods.test_axis_methods_nomaski Zb)
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    @)rL   r~   rO  uint16r{   r   r  r  r}   r}   r   test_mean_overfloww  s   z-TestMaskedArrayMathMethods.test_mean_overflowc                 C   s   t g d}t jj|dd  dd}t jj|d d dd}t jj||dd}t jj|dd}t jj|dd}tt j|| d S )Nr   r   r   r   r   r   r   r   r   r   r_  r   )prependrd  rc  r~   r(   r   rM   diffr   r   )r   r   r   a_prepdiff1r   diff2r}   r}   r   test_diff_with_prepend     z1TestMaskedArrayMathMethods.test_diff_with_prependc                 C   s   t g d}t jj|d d dd}t jj|dd  dd}t jj||dd}t jj|dd}t jj|dd}tt j|| d S )Nr  r   r   r  r   )appendrd  rc  r  )r   r   r   a_appr  r   r  r}   r}   r   test_diff_with_append  r  z0TestMaskedArrayMathMethods.test_diff_with_appendc                 C   sF   t jtdd tjtd W d    d S 1 sw   Y  d S )Nz4diff requires input that is at least one dimensionalr	  r   )r   r  r  r~   r   r  r(   r   r}   r}   r   test_diff_with_dim_0  s   "z/TestMaskedArrayMathMethods.test_diff_with_dim_0c                 C   s<   t jjg ddd}t jj|ddd}tt j|| d S )Nr  r   r  r   )rg  rd  )r~   r   rM   r  r   r   )r   r   r  r}   r}   r   test_diff_with_n_0  s   z-TestMaskedArrayMathMethods.test_diff_with_n_0N)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  L  s6     	
"
r  c                   @      e Zd Zdd Zdd ZdS )!TestMaskedArrayMathMethodsComplexc              
   C   r  )N)$y              @y        Gz.@y        -!@y              !@y        &1?r  r  r  r  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  y        "~@y        K7@r  r  r  r  r  r  r  r  r  r  y        -?r   r   r   r  r  r  r  r  r}   r}   r   r     r#  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 ]4}t|| ||    t|| |d d |f    tt	|| |d d |f    qrd S )	Nrc  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                   @   sf  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-dRdS Z.dTS )UTestMaskedArrayFunctionsc                 C   st   t ddddtd dddddddg}t g d	}g d
}g d}t||d}t||d}|d ||f| _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   r}   r}   r   r     s   &
z%TestMaskedArrayFunctions.setup_methodc                 C   s2   ddg}t d|}t|ddg t|d d d S )Nr   r   F)rW   r   r  r}   r}   r   test_masked_where_bool  s   
z/TestMaskedArrayFunctions.test_masked_where_boolc                 C   sT   g d}t |d}t|| t|jg d t|d}t|| t|jg d d S )Nr   r   r6  r=  )rM   r   r   rS   r  r}   r}   r   test_masked_equal_wlist  s   



z0TestMaskedArrayFunctions.test_masked_equal_wlistc                 C   s2   g d}t |d}t|jg d t|jd d S )Nr   r   r6  )rM   r   r   r"  r  r}   r}   r   test_masked_equal_fill_value  s   
z5TestMaskedArrayFunctions.test_masked_equal_fill_valuec                 C   s   t g 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t|d|t|d ttg dg dg d d S )Nr  r   rb  r=  )rG  rG  r   r   r   )r(   rK   r   rW   r?   rN   r@   rO   rD   rQ   rE   rR   rb   rS   r6   rM   r   r}   r}   r   test_masked_where_condition  s    z4TestMaskedArrayFunctions.test_masked_where_conditionc                 C   s0   t dtd}t|jt}t||}t|| d S )N)r   r   r   r   )rc   r   r{   rn   r   rW   r   )r   r  r  ctestr}   r}   r   test_masked_where_oddities  s   
z3TestMaskedArrayFunctions.test_masked_where_odditiesc                 C   sX   t d}tt td| W d    n1 sw   Y  t|d}t|jg d d S )Nr   r   )
r   r   r   r   r   r   r   r   r   r   )r!   r   
IndexErrorrM   r   r   rL  r}   r}   r   "test_masked_where_shape_constraint  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 d    n1 s%w   Y  t|jjj|jj t|d t j	t dt 
d d S )	Nr   )r  z<f2)r  z<f4r   r3  )overr  r   )r~   r{   r7  r   rW   r   r   r   r  rL   rc   )r   r   ro  r}   r}   r   test_masked_where_structured  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   rW   r  r}   r}   r   test_masked_where_mismatch)  s   

z3TestMaskedArrayFunctions.test_masked_where_mismatchc                 C   s   t tttdddg d t tttdddg d t ttttdg ddddjg d t ttttdg d	dddjg d
 t ttttdg dddjg d t ttg dg dddjg d d S )Nr   r   r   )r      r  r  r   )r  r   r   r   r  r   r   )r   r   r   r   r   rS  r  r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )	r   rP   r   r  rT   r(   r   rM   rS   r   r}   r}   r   test_masked_otherfunctions/  sH   z3TestMaskedArrayFunctions.test_masked_otherfunctionsc                 C   s  t g dg dd}t| g d t|dg d t|dg d t|}|j|d	 t|g d t g d
}t g d}t|d< t||| }t|g d t|d< t||| }t|g d t|d tu  t|d tu t|d tu  d S )N)g82?g	@g,E|@gE@gŏ1@rS  r   )r   r   r   r   r  r   )g333333?gffffff@r=  gffffff@g@r   )g(\?gS㥛@g-@gʡE@gK@r2  r  r  r   r  r   )r(   r   rV  r5   rK   rz   r   )r   r   r   r   r  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
||u  t||j	d
|d tdtd}|j	d
|d}t
||u  d S )Nr   r   r  r   r   r  r   r   r!  r   )decimalsrU  )r(   r~   r   rW  rl   rK   r4   r   rZ  rV  r   r   )r   r   r  r_  r}   r}   r   test_round_with_outputV  s    
z/TestMaskedArrayFunctions.test_round_with_outputc                 C   s   t ddgd}t| d t ddgd}t| tu  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u  d S )Nr  Fr   r   Tr   r!  r2  g    r}   )	r(   r   rV  r   rK   r~   r4   r   rZ  )r   r   r  r}   r}   r   test_round_with_scalarh  s"   

z/TestMaskedArrayFunctions.test_round_with_scalarc                 C   s*   t d}tt|t t|t d d S Nr   )rA   r   r  r   r   r~   r  r}   r}   r   test_identity  s   z&TestMaskedArrayFunctions.test_identityc                 C   s   d}t t|dd tt|ttu  tg d}tg dg dd}t||}t |g d t|jg d	 t|_t||}t|jg d	 || }t|j|j t || t |j	|j	 ||C }t|j|j t || t |j	|j	 d S )
N皙r   \(\?)r  r  r  r  r   )r   r   r   r   r   r   r   )r   r  gKTj?r  r   r  )
r   rf   r   rK   r(   r   r   ra   r   r   )r   r   r   r   r   r}   r}   r   
test_power  s&   



z#TestMaskedArrayFunctions.test_powerc                 C   sN  t g dg dg}t|g dg dgd}t g d}t ||g}t|g dg dgd}tg dg d	gg d
g dgd}|| }t|| t|j|j || }t|| t|j|j || }t|| t|j|j tg dg dgg dg dgd}|| }t|| t|j|j || }t|| t|j|j d S )Nr  )r   r   r  r   r6  r   r  r  )r   r     )r  iq     r=  r   r   r   )r      r  )r~   r(   r   r   )r   a2a2mb1b2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 g d	}g d
}g d}t||d}t||d}|d t|dk|d}t|g d t|j|j t|dkd|}t|g d t|jg d t|dk|t}t|g d |j	 }d||dk
d< t|j| t jdd$ tjtdd |t}	W d    n1 sw   Y  W d    n1 sw   Y  t|	dk|	t}t|g d t|j|	j 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  r   r  r   r   r  )r   r   r   r   r   r   r   r   r   r   r   r   Tr  r4  zinvalid valuer	  )r  r  r  r  r  r   r  r  r   r  r  r   )r~   r(   r   rL   r   rz   r   r   rK   r   r9   r7  r   r   RuntimeWarningr   r   r   )
r   r   r   r   r   r   r   r   tmpixmr}   r}   r   
test_where  s6   &

z#TestMaskedArrayFunctions.test_wherec                 C   sJ   t d }td }| }tt jd||| tt jd||| d S )NT)r~   r(   rL   r   r   r   rz   )r   r   r   r  r}   r}   r   test_where_object  s
   
z*TestMaskedArrayFunctions.test_where_objectc                 C   s   t d}t|d< |dk}t||t}t|j|ju  t|d tu  t|d tu  t|d tu  t|d tu t|d tu t|| t|t|}t|j|ju  t|d tu  t|d tu t|d tu t|d tu  t|d tu  d S )Nr   r   r  r   rV  rF  )r!   rK   rz   r   r   r   r  r}   r}   r   test_where_with_masked_choice  s$   
z6TestMaskedArrayFunctions.test_where_with_masked_choicec                 C   sN  t g d}t g d}t|d< t||| }t|g d t|d< t||| }t|g d t|d tu  t|d tu t|d tu  tdd}t|d< tddd	 }t|d< t g dg d
d}|d}t|||}t|||}t|| tt|tu  t|g d t|td}t|g d t|dt}t|g d d S )Nr  r  r   r  r   r   r   r   r   r   r   )r   r   r   r  r  )rG  rG  rG  r   r   )rG  r   r   rG  rG  )	r(   rK   rz   r   r   r!   r9   r=   ra   )r   r   r  r   r   cmr   r}   r}   r    test_where_with_masked_condition  s4   


z9TestMaskedArrayFunctions.test_where_with_masked_conditionc                 C   sT   t jdt jd}t jdt jdd }t|dk||j}t t jt j}t|| d S )Nr   r   r  r  )r~   r!   r^  r]  rz   r   result_typer   )r   r   r   r   r  r}   r}   r   test_where_type  s
   z(TestMaskedArrayFunctions.test_where_typec                 C   sZ   t ddd}t d}t g d||}tg d||}t|| t|j|j d S )NrF  r   r   )r~   r!   rl   r{   rz   r   r   )r   r   r   rY  r   r}   r}   r   test_where_broadcast  s   

z-TestMaskedArrayFunctions.test_where_broadcastc                 C   sv   t dtfdtfg}t jg d|d}t jd|d}t g d||}t g d||}t|| t|j|j d S )Nr   r   r	  r   rK  r   )r   r  r  )r~   r   r   r(   rz   r   )r   rA  r   r   rY  r   r}   r}   r   test_where_structured)  s   
z.TestMaskedArrayFunctions.test_where_structuredc                 C   sp   t dtfdtfg}t jg d|d}tg d|t}tg d|}t|j|j t|| t|j|j d S )Nr   r   r  r   r  r   )	r~   r   r   r(   rz   rK   rW   r   r   )r   rA  r   r   r+  r}   r}   r   test_where_structured_masked4  s   
z5TestMaskedArrayFunctions.test_where_structured_maskedc                 C   sb   t jdtd}t j|d< t j|d< tjtdd t j	| W d    d S 1 s*w   Y  d S )Nr   r   r   r   z!not supported for the input typesr	  )
r~   r!   r>  r\  r8  r   r  r  r   masked_invalidr  r}   r}   r   test_masked_invalid_error?  s   

"z2TestMaskedArrayFunctions.test_masked_invalid_errorc                 C   sD   G dd d}t j| }t|jt |  t|jg d d S )Nc                   @   s   e Zd ZdZdddZdS )zCTestMaskedArrayFunctions.test_masked_invalid_pandas.<locals>.SeriesnonsenseNc                 S   s   t dt jt jgS r   )r~   r(   r8  r\  )r   r   r   r}   r}   r   	__array__N  s   zMTestMaskedArrayFunctions.test_masked_invalid_pandas.<locals>.Series.__array__)NN)r  r  r  r   r$  r}   r}   r}   r   SeriesK  s    r%  )FTT)r~   r   r!  r   r   r(   r   )r   r%  ry  r}   r}   r   test_masked_invalid_pandasG  s   z3TestMaskedArrayFunctions.test_masked_invalid_pandasr   TFc                 C   sf   t jg d}|jtu sJ t jj||d}|jtusJ |jtu s%J t |j|j|ks1J d S )NrH  rb  )	r~   r   r(   r   ra   r!  r   r   r   )r   r   r   r  r}   r}   r   test_masked_invalid_full_maskU  s   z6TestMaskedArrayFunctions.test_masked_invalid_full_maskc                 C   s(  g dg dg dg dg}t g d|}t|tg d t g d|dd	}t|tg d t g d|d
d	}t|tg d tg dg dd}t ||d
d	}t|tg d t|jg d t|g dg dg dg dgd}g d}t ||d
d	}t|tg d t|jg d d S )Nr   r   r   r   r   r  r  r}  r     r?     r  r7  r  !   r   r   r   r   r  r7  r  r   )r   r   r   r   r9  r  wrap)r  r   r  r   r   r   r   r   r   )rG  r   r  rG  r`  r   r   r   r   r   rB  )r*   r   r(   r   )r   choiceschosenindices_r}   r}   r   test_choosea  s(   z$TestMaskedArrayFunctions.test_choosec                 C   s  g dg dg dg dg}t dtd}tg d||d}t|tg d	 t||u  t dtd}tg dg d
d}t||d|d}t|tg d t|jg d
 t|g dg dg dg dgd}g d}t dtdt}t||d|d}t|tg d d S )Nr(  r)  r*  r-  r   r   r/  r2  r0  r2  r   r1  )r  rU  )rG  r7  r  rG  r`  r3  r   rB  )r  r7  r  r  )	r4   r   r*   r   r(   r   r   r  r
   )r   r4  r3  r5  r6  r}   r}   r   test_choose_with_outx  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u  t|jd  d S )Nr   r   )r   r   r/  r   r   r  r0  )r   r   r  )
r!   rK   rl   r   rn   r   r)  r~   r  r   )r   r   r   r  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|u  t df}t|}t|tdf t|t|u  t }t|}t|tt t|t|u  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|u  dt dffg}t|}t|tdtdffg t|t|u  d	t fg}t|}t|td	tfg t|t|u  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 |u  d S )Nr   r   r   r  r  )r   r  )r  r  )r  r  )r  r   r   r   )	r   rI   r   r  r   r~   r   r   r*  )r   ntyper   r  	base_type
base_mtype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||u tjdddd
 }t ||jd}t|| ddg}ttg}d}t|||D ]\}	}
}t t|	|
|d}t|tu ||	|
|f  qd S )Nr   r   r   r   r   r  r  r  z?,?r}   r  TFzcopy=%s, shrink=%s, dtype=%s)r   r  r   )rH   r   r   r   r~   r(   r  r   r   r  void	itertoolsrg   ra   )r   r   r   mdtypebdtypetest2boolsdtypes	msgformatcpyshrrA  r  r}   r}   r   test_make_mask  sN   


z'TestMaskedArrayFunctions.test_make_maskc                 C   s`  dt fdt fg}tjg d|d}t|t}t|| tt|}t|| t|d}t|| tjg d|d}t||}tjg d|d}t|| dt fd	t fg}tjg d|d}zt||}W n	 tyl   Y nw 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||	|
 tddg}t||tu sJ d S )Nr   r   )r  r  r  r  r   F)r  r  r  r  )r  r  r  r  r  r  r  r  r  r  r   r  r  )r  r~   r(   rJ   ra   r   r  )r   r5  r   r   r  r  	othertyper   r~  bmaskcntrlr   r}   r}   r   test_mask_or  s4   







z%TestMaskedArrayFunctions.test_mask_orc                 C   s   t g dg dd}t g dg dd}t g dg dgg dg dgd}t||s-J t||ddr6J t||s=J t||sDJ t||ddsMJ t||sTJ t||ddr]J d S )	Nr   r~  r   r   ry  r  Fr0  )r(   r   r4  r}   r}   r   test_allequal(  s   $z&TestMaskedArrayFunctions.test_allequalc                 C   s   t jg dtd}tt|| t jddgdtfdtfgd}t|}t jg d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g dtd}t|| d S )Nr6  r   r  r  r   r   r`  r  r  rI  r  )r   r   r   r   r   r   )r~   r(   r  r   r8   )r   r   r   r  r@  r   r}   r}   r   test_flatten_mask9  s   
z*TestMaskedArrayFunctions.test_flatten_maskc                 C   sP   t g d}t|dd}t|}t||  t|d}t||dd d S )NrH  Fr   rW  r   )r~   r(   r    r   rl   )r   r   r,  r   r}   r}   r   test_on_ndarrayK  s   
z(TestMaskedArrayFunctions.test_on_ndarrayc                 C   sr   t d}d|_t g d}|g d }t jj||dd}t|| t j|}t jj||dd}t|| d S )Nr  r  )TFTTr  r   rc  )r~   r!   rn   r(   r   r&  r   )r   ry  condr  r   marrr}   r}   r   rA  T  s   

z&TestMaskedArrayFunctions.test_compressc                 C   s  t jddg}t j|}tt|t ju  G dd dt j}t j|dd}t j|}tt||u  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                   @      e Zd ZdS )z3TestMaskedArrayFunctions.test_compressed.<locals>.ANr  r  r  r}   r}   r}   r   r  i      r  r   r[  c                   @   rS  )3TestMaskedArrayFunctions.test_compressed.<locals>.MNrT  r}   r}   r}   r   r9  w  rU  r9  c                   @   r   )rV  c                 S   r  )Nr  r}   r   r}   r}   r   rC    r  z>TestMaskedArrayFunctions.test_compressed.<locals>.M.compressedN)r  r  r  rC  r}   r}   r}   r   r9  ~  r  r  )
r~   r   r(   rC  r   rM  r
   r   r   r   )r   r   r   r  r9  r}   r}   r   rD  a  s"   z(TestMaskedArrayFunctions.test_compressedc                 C   s  t tdd}tddg}t g dd}tjj||dd}t|| tjj||dd}t||d d  tjj||d	d}t||dd  t g d
d}tjj||ddd}t|| tjj||ddd}t||d d  tjj||d	dd}t||dd  tjddgg d}t|t g dd ddg}t g dd}tjj||dd}t|t g dd tjj||dd}t|t g dd d S )Nr   r   r   )r   r   r   r   rV  r   r   rO  r  samevalid)r   r   r   r   rV  r   F)r  propagate_maskr  )r   r   r   r   )r   r   r   r   )rY  )r   r   r   r   r   T)r   r   r   r   r   )rM   r~   r!   r(   r   convolver   )r   r   r   r_  r   r}   r}   r   test_convolve  s0   

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'  r7  r8  r^  r=  rH  rM  rN  rO  rP  rA  rD  r[  r}   r}   r}   r   r    sT    
	 
!

.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   sx   g d}g d}g d}dt fdtfdg}dtfdtfdtfg}g d}ttt|||||d	}t||||d
| _d S )Nr=  )r  r  r  r  r  )r  r  threefourfiver   r   r  r  ra  r  )baser   ddtyper@  )r   r   r  r(   r   r   rk  r   )r   ilistflistslistrb  r@  r   ra  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 g d|_t|jtj
dd dD |d d S )	Nra  r@  r   FTr  c                 S   s   g | ]}|||fqS r}   r}   )r   r   r}   r}   r   r     r   z;TestMaskedFields.test_set_records_masks.<locals>.<listcomp>)r   ra   r   r   r   r~   r{   rn   rK   rc   r(   )r   ra  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g d t|jt t|jtdd	d
dg t|jd t|jg d d S )Nra  r   r   r  r   r   )r   r   r   r   r   r  r  r  r  r  )   pir  s   three   four   fiver   r   r   r   r   r   r   r   ra  base_abase_b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g d t|jt t|jtttdd	g t|jd
 t|jg d d S )Nra  r   r   r  r   r   )r   r   r   r   r   r  r  r  )rg  rg  rg  rh  ri  rj  rk  r}   r}   r   test_set_record_slice  s   
z&TestMaskedFields.test_set_record_slicec                 C   sJ   | j d }t|d< dD ]}t|| jg d t|| j|j|  qdS )zCheck record accessra  r   )r   r   r  r  N)r   rK   r   r   r   )r   ra  rg  r}   r}   r   test_mask_element  s   
z"TestMaskedFields.test_mask_elementc                 C   sl   dt fdtfg}td|d}tt|tjg dddgd t|d d < tt|tjg dddgd d S )	Nr   r   r   r   )r  r  r  )r   |b1)r   rr  )r  r  r  )r   r   r4   r   r>   r~   r(   rK   )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   r  r   r      r   r   )r   r   r~   r!   r   r   r(   r   r   r  r  r   rj   rl   )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g dg ddtfdtfgd _	 fdd}|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   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   rM  r`   r   r   r   r   )r  r  r}   r   _test_index  s   "z2TestMaskedFields.test_getitem.<locals>._test_indexr   r   r~  )
r   r(   r   r   r~   r   r   r!   r  r   )r   r  rx  r}   r  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   r  )TTr  r   r   )r~   r   r   r   r   r   r   r(   r  r[  r   r  )r   r  r   r@  r  r   r}   r}   r   test_setitem  s.   zTestMaskedFields.test_setitemc                 C   s8   t jjddd}t jd}||d< t|jg d d S )Nr   Tr   r   r   rX  )r~   r   rL   r!   r   r   )r   mask_0dry  r}   r}   r   test_setitem_scalar=  s   z$TestMaskedFields.test_setitem_scalarc                 C   s,   | j d D ]}tt|t| j d  qd S )Nra  rb  )r   r   r   )r   recr}   r}   r   test_element_lenD  s   z!TestMaskedFields.test_element_lenN)r  r  r  r   rf  ro  rp  rq  rs  rw  ry  rz  r|  r~  r}   r}   r}   r   r]    s    
	r]  c                   @   r  )TestMaskedObjectArrayc                 C   sj  t jd d g}ttfD ]}t d|}t d|}||d< ||d< t|d |u  t|d |u  tt|d t	 tt|d t	 t|d d |u  t|d d |u  t jj
|d< t|d |u  tt|d t	 tt|d t	 t|d jd t|d d |u  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   r  r   rK   r   r   r   )r   ry  rA  a0a1r}   r}   r   ry  L  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u  t|d t jju  t jj|d< t|d t jju  d S )Nr  r   )r~   r   r(   rK   r>  r   r   )r   ry  r}   r}   r   test_nested_mai  s   z$TestMaskedObjectArray.test_nested_maN)r  r  r  ry  r  r}   r}   r}   r   r  J  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   r  r   r   rt  )r   r   r~   r!   r   r   r(   r   r   r  r   )r   ru  r   r   rv  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   r  r   r  r   r   r   r   r   r   r   rv  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   r  r~   r
   r   r  r   r   r   r   r   rw  r  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   r  r   r   r  r   r   rj   r   r  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   r  r   r   r   r   r  r   r  r   r  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   r  )	r   r  r   r   r  r   r   r   rl   r  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   r  r   r~   r  r   r   r  r   r  r}   r}   r   test_view_to_dtype_and_type  s
   
z*TestMaskedView.test_view_to_dtype_and_typeN)
r  r  r  r   r  r  r  r  r  r  r}   r}   r}   r   r  z  s    r  c                   @   r  )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 ]}|||| q@t ddd dk}t jj||d}dD ]}|||| |||| q_d S )N      8@rN  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   rc  .r   r  )r  __getattribute__r~   r   r   r  r   r   numpy_f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   rd  r  .r   r  )r  r  r~   r   r   rn   r  r}   r}   r   testkeepdims  s   
z8TestOptionalArgs.test_ndarrayfuncs.<locals>.testkeepdims)ru   r  r  r  r  rR  r   r   )r   r   )r~   r!   rl   r{   r  r   r(   )r   r   r,  r   r  r  r  r}   r}   r   test_ndarrayfuncs  s"   	z"TestOptionalArgs.test_ndarrayfuncsc                 C   s<  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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t|dd
 ttt jjd t
ttt jd	d	d
 d S )Nr  rN  r   r   Tr   r   r  r   rc  r   )r   r   r  r   rS  r  r  r  )r   r   r   )r   r   r   r~  r  r   r   )r~   r!   rl   r{   r  r   r(   r   r/   rc   r   r  r   ra   r   rK   )r   r   r,  r   r}   r}   r   
test_count  s4   zTestOptionalArgs.test_countN)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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u  tg d}|tjj|}t |tjju 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   rK   r(   r  rY  MaskedConstantr   rn   r=   rc   r  )r   r   vectorr_  r}   r}   r   _do_add_test   s   "zTestMaskedConstant._do_add_testc                 C   s   |  tj d S r   )r  r~   r   r   r}   r}   r   
test_ufunc.  s   zTestMaskedConstant.test_ufuncc                 C   s   |  dd  d S )Nc                 S   r   r   r}   r   r   r}   r}   r   r   2  r   z2TestMaskedConstant.test_operator.<locals>.<lambda>)r  r   r}   r}   r   test_operator1  s   z TestMaskedConstant.test_operatorc                 C   s:   t jt jj}tt|t jjj  t|t jju d S r   )r~   r   r(   rK   r   r  rY  r  r  r}   r}   r   	test_ctor4  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 )NrK   )
r   rL  r~   r   rK   r   __new__rY  r  r   )r   masked2r}   r}   r   	test_repr<  s   zTestMaskedConstant.test_reprc              	   C   s   ddl m} tdtjd D ]1}| }tjtjj||d |	d t
|}W d    n1 s2w   Y  t|tjju  qd S )Nr   )BytesIOr   r   r  )ior  r  r  r  dumpr~   r   rK   seekloadr   )r   r  r  r  r  r}   r}   r   test_pickleE  s   
zTestMaskedConstant.test_picklec                 C   s*   t tjj tjju tj tju  d S r   )r   r~   r   rK   r   True_r   r}   r}   r   rt  O  s   zTestMaskedConstant.test_copyc                 C   s&   dd l }t| tjjtjju  d S r  )r   r   r~   r   rK   r   r   r}   r}   r   
test__copyV     zTestMaskedConstant.test__copyc                 C   s&   dd l }t|tjjtjju  d S r  )r   r   r|  r~   r   rK   r  r}   r}   r   r  [  r  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   rK   r   rY  r   r  setitemr  r   r   r  r   )r   origr  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 r+  )	r~   r{   r   r   r   r  r  r   rK   )r   a_ir}   r}   r   test_coercion_intk  s   z$TestMaskedConstant.test_coercion_intc                 C   s8   t dt}tttj|dt jj t	t 
|d  d S r+  )r~   r{   r   r   r   r  r  r   rK   r   r  )r   a_fr}   r}   r   test_coercion_floatp  s   z&TestMaskedConstant.test_coercion_floatzSee gh-9750r  c                 C   *   t dd}t jj|d< t|d d d S )Nr}   U10r;  r~   r{   r   rK   r   )r   a_ur}   r}   r   test_coercion_unicodeu     z(TestMaskedConstant.test_coercion_unicodec                 C   r  )Nr}   S10s   --r  )r   a_br}   r}   r   test_coercion_bytes{  r  z&TestMaskedConstant.test_coercion_bytesc                 C   sN   G dd dt tjj}| }t|| u  t|tjju tt|d d S )Nc                   @   rS  )z-TestMaskedConstant.test_subclass.<locals>.SubNrT  r}   r}   r}   r   Sub  rU  r  rK   )rM  r~   r   rK   r   r   rL  )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 )Nrn   r  r   )r   rs  setattrr~   r   rK   r]  r   r}   r}   r   test_attributes_readonly  s   z+TestMaskedConstant.test_attributes_readonlyN)r  r  r  r  r  r  r  r  r  rt  r  r  r  r  r  r   r  xfailr  r  r  r  r}   r}   r}   r   r    s&    	



r  c                   @   r   )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 g dddd}t|jtjj	u  tjj g dddd}t|jdgd  d S )	Ng      i TFrH  r   r  r   )
rV   r~   r(   r  r   r   r\  r   r   ra   )r   r  r}   r}   r   test_masked_values  s   z)TestMaskedWhereAliases.test_masked_valuesN)r  r  r  r  r}   r}   r}   r   r    s    r  c                  C   s4   t jjg dg dd} tt | dgdgg d S )Nr(  )r   r   r   r   r   r   r   )r~   r   r(   r   argwherer  r}   r}   r   test_masked_array  s   r  c                  C   s   t jg d} t jj| dk| dd}t| jg d t jjg dg dd} t jj| dk| dd}t| jg d t jt jd	d
ddg} t jj| dd}t| jg d d S )NrH  r   Frb  )FFTFr   r   )TFTFr   r   r   )TFFFF)r~   r   r(   rW   r   r   r\  r!  )r   rc  r}   r}   r   test_masked_array_no_copy  s   r  c                  C   s   t jjg ddd} t jjg ddd}t j| |}g d}g d}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   r   )r   r   r   r   r   r   )FTFFFTrW  )r   r   r   r   Tr   Fre  rc  )	r~   r   rM   r  r   r   r   r[  rc   )r   r   r_  expected_datar  r}   r}   r   test_append_masked_array  s"   
r  c                  C   s   t jjg ddd} t jg dg d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  ry  r  rV  r   rc  r   r   r   r  )r~   r   rM   rV   r   r  r  newaxisr!   rK   rl   r   r   r   )r   r   r_  r+  r}   r}   r   #test_append_masked_array_along_axis  s    
r  c                   C   s   t tddk d S )Ny      ?      ?y@xD        )r   r0   r}   r}   r}   r   test_default_fill_value_complex  s   r  c                  C   s4   t g dg dd} tj| d| d}t|| u  d S )Nr  r6  r   r   r2  )r(   r~   r   r   r   r}   r}   r   test_ufunc_with_output  s   r  c            
      C   s   t g dg dd} t g dg dd}t g dg dd}t g dg d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~  r6  )r  r?  r.  r2  N)r(   r   r~   r   r   r   r   )
r   r   rU  r+  out_posres_posout_kwres_kwout_tupres_tupr}   r}   r   test_ufunc_with_out_varied  s    r  c                  C   s  t dtdfddtfgfg} tg ddfg ddfgg ddfg dd	fgg| d
}t jj|d d d< || }|jjt | jksFJ |j	jjt | jksSJ t
|| t||j|jddu  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sJ |j	jjt | jksJ t
|| t|t j|| d ddu  t j||jddd}t|jj t|j	jj d S )Nr-  r   r   r   r   rU  rV  )r   )r   r   r   Frb  )subokr  r0  T)r   r  )r   r   r  )r   r1  r  )r~   r   r   r   r(   r   rK   r   r  r   r   r   rM  r
   r)  f_contiguous)descrr   x_ax_fx_a2x_f2r}   r}   r   test_astype_mask_ordering  s2   


r  r  r  r  z'ignore::numpy.exceptions.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   r0  )	r~   r   r(   rc   r   r   r"  r   r   )r  r  srcdstr}   r}   r   test_astype_basic#  s   
r  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   r4   r   r(   r   rn   )rA  r   r  r}   r}   r   test_fieldless_void6  s   
r  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   rK   r(   r   rn   r   r  r}   r}   r   0test_mask_shape_assignment_does_not_break_maskedE  s   r  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   r  )zyThis docstring

        Has multiple lines

        And notes

        Notes
        -----
        original note
        Nr}   r   r}   r}   r   r  N  s   ztest_doc_note.<locals>.methodzNThis docstring

Has multiple lines

And notes

Notes
-----
note

original notenote)r   r~   r   rY  r3   __doc__)r  expected_docr}   r}   r   test_doc_noteK  s   r  c                  C   sH   t jjdg dgtd} t| }|d d t| d dks"J d S )Nr   rY  r   r    this should not appear in sourcer   )r~   r   r(   r>  r   r|  r  r   sourcer|  r}   r}   r   test_gh_22556j  s   
r  c                  C   s|   t jjddgdt jd} t d}t j| |dd}t jj|t j|jt jdd}t jjddt jd}t	
| t	
| d S )	Nr   Tr   r   Fr  r   r   )r~   r   rL   ri  r(   r  rc   rn   r  r   r|  )r  rd  r_  r(   r}   r}   r   test_gh_21022q  s   

r  c                  C   s   t jjddgddgddgdggddgddgddggtd} t| }|d dd	g t| d dks5J t|d d
ks?J t|j	| j	 d|j	d< | j	d dksTJ d S )Nr   dogr   r   catr  r  r  r   r   r  )
r~   r   r(   r>  r   r|  extendr   r   r   r  r}   r}   r   test_deepcopy_2d_obj}  s"   


r  c                  C   s>   t jjddgtd} t| }d|d< t| d t|d d S )Nr   r     .)r~   r   r(   r>  r   r|  r   r  r}   r}   r   test_deepcopy_0d_obj  s
   

r  c                  C   sd   t jjddgddgdd} | jdksJ | jjjdksJ t jj|  t 	ddg
ddd d S )	Nr   TFr  r   r  r  )strict)r~   r   r   r"  r   re  rG  r   r9   r(   r   r  r}   r}   r   test_uint_fill_value_and_filled  s   
r  )r  
__author__sysr  r   r  r?  r  r  	functoolsr   r   r  r~   numpy.ma.corenumpy._core.fromnumeric_corert  numpy._core.umathrr  numpy.exceptionsr   numpy.testingr   r   r   r   r   numpy.testing._private.utilsr	   r
   numpy._utilsr   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/   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   r$  r  r   rY  MaskedArrayFutureWarningr  r  r   r%  r  r  rb  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)  optimizer  r  r  r  r  r  r}   r}   r}   r   <module>   s   (        F       ; 1  T    s        ]5     Q #0NWq 

