
    IR-e                     2   d Z ddlZddlZddlZddlmZ ddlmZ	 ddl
mZ ddlmZ ddlmZ ddlmZmZ d	 Zd
 edd          ddgZ G d d          Z G d de          Z G d de          Z G d de          Zd Zd Zd Z G d d          Z G d d          Z G d dee          Z G d de          Z  G d  d!e          Z! G d" d#e!          Z" G d$ d%e!          Z# G d& d'e#e          Z$ G d( d)e#e          Z% G d* d+e!          Z& G d, d-e!          Z' G d. d/e'          Z( G d0 d1e'e          Z) G d2 d3e'e          Z* G d4 d5e!          Z+ G d6 d7e+          Z, G d8 d9e+e          Z- G d: d;e+e          Z. G d< d=e!          Z/ G d> d?e/e          Z0 G d@ dAe/e          Z1 G dB dCe!          Z2dD Z3dE Z4dF Z5dG Z6 G dH dIe!          Z7 G dJ dKe7e          Z8 G dL dMe!          Z9 G dN dOe!          Z: G dP dQe:e          Z;dS )RzxTest masked class initialization, methods, and operators.

Functions, including ufuncs, are tested in test_functions.py
    N)assert_array_equal)units)	Longitude)Quantity)NUMPY_LT_1_22)MaskedMaskedNDArrayc                 n    t          | j        |j                   t          | j        |j                   d S N)r   unmaskedmaskabs     Flib/python3.11/site-packages/astropy/utils/masked/tests/test_masked.pyassert_masked_equalr      s0    qz1:...qvqv&&&&&    )   r   r    c                   2    e Zd Zej        Zed             ZdS )
ArraySetupc                 N   t          j        d                              dd          | _        t          j        g dg dg          | _        t          j        g d          | _        t          j        g d          | _        t          j        dgdgg          | _        t          j        d	gd
gg          | _	        t          j
        ddg          | _        t          j
        ddg          | _        t          j        ddgddgg| j                  | _        t          j        ddgddgg| j                  | _        t          j        ddg| j                  | _        t          j        ddg| j                  | _        t          j
        ddg          | _        t          j        ddgddgddggfdd gd!d"gd#d$ggfg| j                  | _        t          j
        d%d&g          | _        t          j        d
d	gd	d	gd
d
ggfd	d
gd
d	gd	d
ggfg| j                  | _        d S )'Ng      @      TFFFTF)                   g      ?g      ?FT)r   f8)r   r    )r   ?)r   r!         ?       @      @      @)g      &@g      (@)g      *@g      ,@dtypeTTFFFT)TF)r   r'   )sa2f8)sbi8r   r   r#   r$   r      r   r   )r-   z2?)r/   r!   r1   )nparangereshaper   arraymask_ar   mask_bcmask_cr)   sdtmask_sdtr-   mask_sar/   mask_sbscdtsc	mask_scdtmask_scselfs    r   setup_classzArraySetup.setup_class   sZ   3''1--h 4 4 46J6J6JKLL,,,--h33344D6C5/**h$0118[+677*j!9::(Z(|, (
 
 
 x~.. -
 
 
 (J4DHEEEx ?t}UUUHm-ABCC	(sq!fq!f-.R2r(34 )
 
 
 <1D"EFFx%$ >?$ >? .
 
 
r   N)__name__
__module____qualname__r7   ndarray	_data_clsclassmethodrI   r   r   r   r   r      s4        
I(
 (
 [(
 (
 (
r   r   c                   2     e Zd ZeZe fd            Z xZS )QuantitySetupc                    t                                                       t          | j        t          j                  | _        t          | j        t          j                  | _        t          | j        t          j	                  | _        t          | j
        t          j        | j                  | _
        t          | j        t          j        | j                  | _        d S Nr(   )superrI   r   r   umr   cmr=   kmr-   r?   r/   rH   	__class__s    r   rI   zQuantitySetup.setup_classM   s    $&!#&&$&!$''$&!$''47ACtx88847AD999r   )rJ   rK   rL   r   rN   rO   rI   __classcell__rZ   s   @r   rQ   rQ   J   sG        I: : : : [: : : : :r   rQ   c                   2     e Zd ZeZe fd            Z xZS )LongitudeSetupc                     t                                                       t          | j        t          j                  | _        t          | j        t          j                  | _        t          | j        t          j                  | _        d S r   )rT   rI   r   r   rU   degr   r=   rY   s    r   rI   zLongitudeSetup.setup_classZ   s\    4615))4615))4615))r   )rJ   rK   rL   r   rN   rO   rI   r[   r\   s   @r   r^   r^   W   sG        I* * * * [* * * * *r   r^   c                       e Zd Zd Zd ZdS )TestMaskedArrayInitializationc                    t          | j        | j                  }t          |t          j                  sJ t          |t          | j                            sJ t          |t                     sJ t          |j        | j                   t          |j	        | j                   |j	        | j        usJ t	          j
        |j	        | j                  sJ d S Nr   )r   r   r;   
isinstancer7   rM   typer   r   r   may_share_memoryrH   mas     r   test_simplez)TestMaskedArrayInitialization.test_simplee   s    DF---"bj)))))"d46ll+++++"f%%%%%2;///27DK000wdk))))"27DK8888888r   c                    t          | j        | j                  }t          |t          j                  sJ t          |t          | j                            sJ t          |t                     sJ t          |j        | j                   t          |j	        | j                   |j	        | j        usJ t	          j
        |j	        | j                  sJ d S rd   )r   r-   rA   rf   r7   rM   rg   r   r   r   rh   ri   s     r   test_structuredz-TestMaskedArrayInitialization.test_structuredo   s    DG$,///"bj)))))"d47mm,,,,,"f%%%%%2;00027DL111wdl****"27DL9999999r   N)rJ   rK   rL   rk   rm   r   r   r   rb   rb   d   s2        9 9 9: : : : :r   rb   c                     t          j        dt                    } t          j        g d          }|                                 }t          j        dt          |          }t          ||            t          dt          ||          }t          |j        |            t          |j	        |           t          dt          |          }t          |j        |            t          |j	        t          j
        dt                               d S )Nr   r(   r   )r   )shaper)   buffer)r)   r   rp   )r)   rp   )r7   r8   intr:   tobytesrM   r   r	   r   r   zerosbool)a_inm_inbuffr   rj   s        r   test_masked_ndarray_initrx   z   s     9Qc"""D8((())D<<>>D

S666Aq$	t3T$	?	?	?Br{D)))rw%%%	t3t	4	4	4Br{D)))rwD 1 122222r   c                      t          j        t          d          5  t          t          j        j                   d d d            d S # 1 swxY w Y   d S )Nzcannot handle np.ma.maskedmatch)pytestraises
ValueErrorr   r7   rj   maskedr   r   r   "test_cannot_initialize_with_maskedr      s    	z)E	F	F	F  ru|                 s   AAAc                      G d dt           j                  } t          j        ddg                              |           }t	          j        t          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Nc                       e Zd ZdZdS )Etest_cannot_just_use_anything_with_a_mask_attribute.<locals>.my_arrayTN)rJ   rK   rL   r   r   r   r   my_arrayr      s        r   r   r#   r$   r   rz   )r7   rM   r:   viewr|   r}   AttributeErrorr   )r   r   s     r   3test_cannot_just_use_anything_with_a_mask_attributer      s        2:    	#s!!(++A	~Z	8	8	8  q			                 s   A::A>A>c                   F    e Zd ZdZed             Zd Zd Zd Zd Z	d Z
dS )	TestMaskedClassCreationzTry creating a MaskedList and subclasses.

    By no means meant to be realistic, just to check that the basic
    machinery allows it.
    c                     t           j                                        | _        t           j                                        | _         G d dt           t          t          t                    }|| _        d S )Nc                   <     e Zd Zddd fd
Zed             Z xZS )7TestMaskedClassCreation.setup_class.<locals>.MaskedListNF)r   copyc                |    t                                          |           } |j        |i ||_        ||_        |S r   )rT   __new__rN   	_unmaskedr   )clsr   r   argskwargsrH   rZ   s         r   r   z?TestMaskedClassCreation.setup_class.<locals>.MaskedList.__new__   s<    wws++!/!@!@!@ 	r   c                 ,    t          | j                  fS r   )lenr   rG   s    r   ro   z=TestMaskedClassCreation.setup_class.<locals>.MaskedList.shape   s    DN++--r   )rJ   rK   rL   r   propertyro   r[   r\   s   @r   
MaskedListr      sb        )-E        . . X. . . . .r   r   )base_clsdata_cls)r   _base_classesr   _base_classes_orig_masked_classes_masked_classes_origlistr   )rH   r   s     r   rI   z#TestMaskedClassCreation.setup_class   sr    "("6";";"="=$*$:$?$?$A$A!
	. 
	. 
	. 
	. 
	.t 
	. 
	. 
	. 
	. %r   c                 J    | j         t          _        | j        t          _        d S r   )r   r   r   r   r   rG   s    r   teardown_classz&TestMaskedClassCreation.teardown_class   s    #6!%!:r   c                     t          | j        t                    sJ t          | j        t                    sJ t          t                    | j        u sJ d S r   )
issubclassr   r   r   rG   s    r   
test_setupz"TestMaskedClassCreation.test_setup   sQ    $/622222$/400000d||t......r   c                 F   |                      t          d          g d          }|j        g dk    sJ t          |j        t          j        g d                     |d d         }|j        ddgk    sJ t          |j        t          j        dd	g                     d S )
Nr   r   re   r   r   r   r   r   r   TF)r   ranger   r   r   r7   r:   )rH   mlml01s      r   test_masked_listz(TestMaskedClassCreation.test_masked_list   s    __U1XX,@,@,@_AA{iii''''27BH-A-A-A$B$BCCC"1"v}A&&&&49bhe}&=&=>>>>>r   c                     t          g dg d          }|j        g dk    sJ t          |j        t	          j        g d                     d S )N)r   r   r   r   re   )r   r   r   r   r7   r:   )rH   r   s     r   test_from_listz&TestMaskedClassCreation.test_from_list   s_    III$8$8$8999{iii''''27BH-A-A-A$B$BCCCCCr   c                     G d dt                     } |t          d                    }t          |g d          }t          |t                    sJ t          ||          sJ t          |j        |          sJ |j        g dk    sJ t          |j        t          j        g d                     t          |          t          |          u sJ d S )Nc                       e Zd ZdS )ATestMaskedClassCreation.test_masked_list_subclass.<locals>.MyListNrJ   rK   rL   r   r   r   MyListr      s        Dr   r   r   r   re   r   )
r   r   r   rf   r   r   r   r7   r:   rg   )rH   r   r   mmls       r   test_masked_list_subclassz1TestMaskedClassCreation.test_masked_list_subclass   s    	 	 	 	 	T 	 	 	 VE!HHR222333#v&&&&&#v&&&&&#,/////|yyy((((38RX.B.B.B%C%CDDDf~~c******r   N)rJ   rK   rL   __doc__rO   rI   r   r   r   r   r   r   r   r   r   r      s          % % [%$; ; ;/ / /
? ? ?D D D
+ + + + +r   r   c                       e Zd ZdZed             Zd Zd Zd Ze	j
                            deej        j        g          d             Zd Zd	 Zd
 ZdS )!TestMaskedNDArraySubclassCreationzCTest that masked subclasses can be created directly and indirectly.c                      G d dt           j                  }|| _        t          j        ddg                              | j                  | _        t          j        ddgt                    | _        d S )Nc                       e Zd Zd ZdS )>TestMaskedNDArraySubclassCreation.setup_class.<locals>.MyArrayc                 J    t          j        |i |                    |           S r   )r7   
asanyarrayr   )r   r   r   s      r   r   zFTestMaskedNDArraySubclassCreation.setup_class.<locals>.MyArray.__new__   s%    }d5f55::3???r   N)rJ   rK   rL   r   r   r   r   MyArrayr      s(        @ @ @ @ @r   r   r#   r$   TFr(   )r7   rM   r   r:   r   r   rt   rV   )rH   r   s     r   rI   z-TestMaskedNDArraySubclassCreation.setup_class   s    	@ 	@ 	@ 	@ 	@bj 	@ 	@ 	@ 3*%%**4<884-t444r   c                 P    t           j                            | j        d            d S r   )r   r   popr   )rH   methods     r   teardown_methodz1TestMaskedNDArraySubclassCreation.teardown_method   s#    ""4<66666r   c                    | j         t          j        vsJ t          | j                   }t          |t                    sJ t          || j                   sJ |j        dk    sJ |j                            d          sJ  || j        | j                  }t          ||          sJ t          |j        | j                   t          |j        | j                   d S )NMaskedMyArrayzMasked version of MyArrayre   )r   r   r   r   rJ   r   
startswithr   rV   rf   r   r   r   rH   mclsmmss      r   test_direct_creationz6TestMaskedNDArraySubclassCreation.test_direct_creation   s    |6#99999dl##$'''''$-----}////|&&'BCCCCCd46'''#t$$$$$3<00038TV,,,,,r   c                 
   t          | j                  } || j                  }t          ||          sJ t	          |j        | j                   t	          |j        t          j        |j	        t                               d S r   )r   r   r   rf   r   r   r   r7   rs   ro   rt   r   s      r    test_initialization_without_maskzBTestMaskedNDArraySubclassCreation.test_initialization_without_mask   sp    dl##d46ll#t$$$$$3<00038RXci%>%>?????r   masked_arrayc                 Z   t          | j                  } |t          j        | j                  | j                  } ||          }t          |t                     sJ t          || j                  sJ t          |j        | j                   t          |j	        | j                   d S rd   
r   r   r7   asarrayr   rV   rf   r   r   r   )rH   r   r   rj   r   s        r   &test_initialization_with_masked_valueszHTestMaskedNDArraySubclassCreation.test_initialization_with_masked_values   s    dl##\"*TV,,46:::d2hh#v&&&&&#t|,,,,,3<00038TV,,,,,r   c                    | j         t          j        vsJ t          | j        | j                  }t          |t                    sJ t          || j                   sJ t          |j        | j                   t          |j        | j                   | j         t          j        v sJ t          | j                   t          |          u sJ d S rd   )
r   r   r   r   rV   rf   r   r   r   rg   )rH   r   s     r   test_indirect_creationz8TestMaskedNDArraySubclassCreation.test_indirect_creation  s    |6#99999TV$&)))#v&&&&&#t|,,,,,3<00038TV,,,|v55555dl##tCyy000000r   c                 ^   t          | j                  } |t          t          j        | j                  | j                            }t          |t                     sJ t          || j                  sJ t          |j        | j                   t          |j	        | j                   d S rd   r   r   s      r   &test_can_initialize_with_masked_valueszHTestMaskedNDArraySubclassCreation.test_can_initialize_with_masked_values  s    dl##d6"*TV,,46:::;;#v&&&&&#t|,,,,,3<00038TV,,,,,r   c                    t          | j        | j                  }|                                }t	          |          |j        u sJ t          ||           |                    t          j                  }t	          |          t          u sJ t          |j        | j                            t          j                             t          |j        | j                   d S rd   )r   r   rV   r   rg   rZ   r   r7   rM   r	   r   r   r   )rH   r   mms2rj   s       r   test_viewingz.TestMaskedNDArraySubclassCreation.test_viewing  s    TV$&)))xxzzDzzS]****D#&&&XXbj!!Bxx=((((2;BJ(?(?@@@27DF+++++r   N)rJ   rK   rL   r   rO   rI   r   r   r   r|   markparametrizer   r7   rj   MaskedArrayr   r   r   r   r   r   r   r   r      s        MM5 5 [57 7 7
- 
- 
-@ @ @ [^fbe6G-HII- - JI-1 1 1- - -	, 	, 	, 	, 	,r   r   c                        e Zd Ze fd            Zd Zd Zd Zej	        
                    deej        j        g          d             Z xZS ) TestMaskedQuantityInitializationc                 p    t                                                       t          t                     d S r   )rT   rI   r   r   rY   s    r   rI   z,TestMaskedQuantityInitialization.setup_class&  s/     	xr   c                 ~   t           j        | j        j                 } |ddgddgt          j                  }|j        t          j        k    sJ t          j        |j	        j
        ddgk              sJ t          j        |j	        j        ddgk              sJ t          j        |j        ddgk              sJ d S )Nr#   r$   TF)r   unit)r   r   r   rZ   rU   sr   r7   allvaluer   r   )rH   r   mqs      r   test_masked_quantity_class_initz@TestMaskedQuantityInitialization.test_masked_quantity_class_init-  s    %df&67T3*D%=qs;;;w!#~~~~vbh'C:566666vbhme}455555vbg$.///////r   c                 r    t           j        | j        j                 }t          t                    }||u sJ d S r   )r   r   r   rZ   r   )rH   r   MQs      r   test_masked_quantity_gettingz=TestMaskedQuantityInitialization.test_masked_quantity_getting7  s2    %df&67HTzzzzzzr   c                    t          t                    } |ddgt          j                  }|j        t          j        k    sJ t          j        |j        j        ddgk              sJ t          j        |j	        ddgk              sJ d S )Nr#   r$   F)
r   r   rU   r   r   r7   r   r   r   r   )rH   r   r   s      r   r   zATestMaskedQuantityInitialization.test_initialization_without_mask<  s    HRc
AC  w!#~~~~vbh'C:566666vbg%/0000000r   r   c                 n   t          t                    }t          j        ddg          }t          j        ddg          } |||          } ||          }t	          |t                     sJ t	          |t                    sJ t          |j        j        |           t          |j        |           d S )Nr#   r$   TF)	r   r   r7   r:   rf   r   r   r   r   )rH   r   r   r   rV   rj   r   s          r   r   zGTestMaskedQuantityInitialization.test_initialization_with_masked_valuesD  s    HHc3Z  HdE]##\!QRVV"f%%%%%"h'''''28,a00027A&&&&&r   )rJ   rK   rL   rO   rI   r   r   r   r|   r   r   r   r7   rj   r   r   r[   r\   s   @r   r   r   %  s            [0 0 0  
1 1 1 [^fbe6G-HII	' 	' JI	' 	' 	' 	' 	'r   r   c                       e Zd Zd Zd Zej                            de          d             Z	ej                            ddgez             d             Z
dS )TestMaskSettingc                    t          | j                  }|j        j        |j        k    sJ |j                                        rJ d|_        |j        j        |j        k    sJ |j                                        sJ dgdgg|_        |j        j        |j        k    sJ t          |j        t          j        dgdz  dgdz  g                     | j	        |_        |j        j        |j        k    sJ t          |j        | j	                   |j        | j	        usJ t          j
        |j        | j	                  sJ d S )NTFr   )r   r   r   ro   anyr   r   r7   r:   r;   rh   ri   s     r   test_whole_mask_setting_simplez.TestMaskSetting.test_whole_mask_setting_simpleR  s0   DF^^w}((((7;;==   w}((((w{{}}6E7#w}((((27BHtfqj5'A+-F$G$GHHH+w}((((27DK000wdk))))"27DK8888888r   c                 (   t          | j                  }|j        j        |j        k    sJ |j        d                                         s|j        d                                         rJ d|_        |j        j        |j        k    sJ |j        d                                         r|j        d                                         sJ dgdgg|_        |j        j        |j        k    sJ t          |j        t          j        dgdz  dgdz  g| j	                             | j
        |_        |j        j        |j        k    sJ t          |j        | j
                   |j        | j
        usJ t          j        |j        | j
                  sJ d S )	Nr   r   TFr*   r   r+   r(   )r   r-   r   ro   r   r   r   r7   r:   r@   rA   rh   ri   s     r   "test_whole_mask_setting_structuredz2TestMaskSetting.test_whole_mask_setting_structuredb  s   DG__w}((((73<##%%@bgcl.>.>.@.@@@@w}((((ws|!!8bgcl&6&6&8&88886E7#w}((((GH|nq(>*:Q*>?t}UUU	
 	
 	
 ,w}((((27DL111wdl****"27DL9999999r   itemc                    t          | j                  }d|j        |<   t          j        |j        t                    }d||<   t          |j        |           d|j        |<   t          |j        t          j        |j        t                               t          j        | j        j        t                    }t          | j        |          }d|j        |<   t          j        |j        |          sJ t          |j        |           d S NTF)	r   r   r   r7   rs   ro   rt   r   rh   rH   r   rj   expectedr   s        r   test_part_mask_settingz&TestMaskSetting.test_part_mask_settingu  s    DF^^8BHd++27H---27BHRXt$<$<===xd++DFD!!"27D1111127D)))))r   r   c                    t          | j                  }d|j        |<   t          j        |j        | j                  }d||<   t          |j        |           d|j        |<   t          |j        t          j        |j        | j                             t          j        | j        j        | j                  }t          | j        |          }d|j        |<   t          j        |j        |          sJ t          |j        |           d S r   )	r   r-   r   r7   rs   ro   r@   r   rh   r   s        r   !test_part_mask_setting_structuredz1TestMaskSetting.test_part_mask_setting_structured  s    DG__8BHdm4427H---27BHRXt}$E$EFFFxt}55DGT"""27D1111127D)))))r   N)rJ   rK   rL   r   r   r|   r   r   VARIOUS_ITEMSr   r   r   r   r   r   r   Q  s        9 9 9 : : :& [V]33* * 43* [VcU]%:;;* * <;* * *r   r   c                   .     e Zd Ze fd            Z xZS )MaskedArraySetupc                    t                                                       t          | j        | j                  | _        t          | j        | j                  | _        t          | j	        | j
                  | _        t          | j        | j                  | _        t          | j        | j                  | _        t          | j        | j                  | _        d S rd   )rT   rI   r   r   r;   rj   r   r<   mbr=   r>   mcr-   rA   msar/   rB   msbrD   rF   mscrY   s    r   rI   zMaskedArraySetup.setup_class  s    dk222dk222dk222$'555$'555$'555r   )rJ   rK   rL   rO   rI   r[   r\   s   @r   r   r     sB        6 6 6 6 [6 6 6 6 6r   r   c                   l    e Zd Zd Zd Zej                            dddg          d             Zd Z	dS )	TestViewingc                     | j                             t          | j                             }t          || j                    | j                                         }t          || j                    d S r   )rj   r   rg   r   )rH   ma2ma3s      r   test_viewing_as_new_typez$TestViewing.test_viewing_as_new_type  sV    gll4==))C)))gllnnC)))))r   c                     | j                             d          }t          |j        | j                            d                     t          |j        | j                   d S )Nc8)rj   r   r   r   r   r   r;   )rH   r  s     r   test_viewing_as_new_dtypez%TestViewing.test_viewing_as_new_dtype  sO    gll4  3<T):):;;;38T[11111r   	new_dtype2f4zf8,f8,f8c                     | j                             |          }t          j        t          d          5  | j                            |j                   d d d            d S # 1 swxY w Y   d S )Nzdifferent.*sizerz   )r   r   r|   r}   NotImplementedErrorrj   r)   )rH   r  checks      r   )test_viewing_as_new_dtype_not_implementedz5TestViewing.test_viewing_as_new_dtype_not_implemented  s     I&&].6GHHH 	& 	&GLL%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s    A##A'*A'c                     t          j        t                    5  t          t	          j        ddgt          j                                                t                     d d d            d S # 1 swxY w Y   d S )Nr   r   r(   )r|   r}   	TypeErrorr   r7   r:   intpr   rG   s    r   $test_viewing_as_something_impossiblez0TestViewing.test_viewing_as_something_impossible  s    ]9%% 	A 	A 28QF"'2223388@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   AA//A36A3N)
rJ   rK   rL   r  r  r|   r   r   r  r  r   r   r   r   r     sy        * * *2 2 2 [[5**=>>& & ?>&A A A A Ar   r   c                       e Zd Zd Zej                            dd          d             Zd Zej                            dddg          d             Z	d Z
d	S )
TestMaskedArrayCopyFilledc                    | j                                         }t          |          t          | j                   u sJ t          |j        | j         j                   t          |j        | j         j                   t          j        |j        | j         j                  rJ t          j        |j        | j         j                  rJ d S r   )rj   r   rg   r   r   r   r7   rh   )rH   ma_copys     r   	test_copyz#TestMaskedArrayCopyFilled.test_copy  s    ',,..G}}TW----7+TW-=>>>7<666&w'79IJJJJJ&w|TW\BBBBBBBr   
fill_valuer   r   c                     |t          | j        dd          z  }| j                                        }||| j        j        <   | j                            |          }t          ||           d S )Nr   r   )getattrr   r   rj   r   filledr   rH   r  r   results       r   test_filledz%TestMaskedArrayCopyFilled.test_filled  s`    '$&&!"<"<<
6;;==!+
++8V,,,,,r   c                     t          j        t          d          5  | j                                         d d d            d S # 1 swxY w Y   d S )Nzmissing 1 requiredrz   )r|   r}   r  rj   r  rG   s    r   test_filled_no_fill_valuez3TestMaskedArrayCopyFilled.test_filled_no_fill_value  s    ]9,@AAA 	 	GNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
A)r3   r3   c                    t          j        || j                  }t          | j        d          r|| j        j        z  }| j                                        }|d         |d         | j        j        d         <   |d         |d         | j        j        d         <   | j        	                    |          }t          ||           d S )Nr(   r   r   r   )r7   r:   r?   hasattrr-   r   r   r   r   r  r   r  s       r   test_filled_structuredz0TestMaskedArrayCopyFilled.test_filled_structured  s    Xj999
47F## 	4#tw|3J7<<>>,6sOdhmC(),6sOdhmC(),,8V,,,,,r   c                    | j                                         }|j        }|d         }|j        | j        j        d         k    sJ |j        | j        j        d         k    sJ t          d t          | j         j        | j        j        | j        j                  D                       sJ | j	        d         |d<   |d         | j	        d         k    sJ |d         | j	        d         k    sJ d S )Nr   c              3   J   K   | ]\  }}}|j         |k    o
|j        |k    V  d S r   )r   r   ).0rj   r   rV   s       r   	<genexpr>z6TestMaskedArrayCopyFilled.test_flat.<locals>.<genexpr>  sN       
 
Q [A."'Q,
 
 
 
 
 
r   r  )
rj   r   flatr   r   r   r;   r   zipr   )rH   r  ma_flatma_flat1s       r   	test_flatz#TestMaskedArrayCopyFilled.test_flat  s    ',,..,1: DFKN2222} 0 33333 
 
!$',T[=MNN
 
 
 
 
 	
 	
 	
 VAY
qzTVAY&&&&t}q	))))))r   N)rJ   rK   rL   r  r|   r   r   r  r   r#  r,  r   r   r   r  r    s        C C C [\622- - 32-   [\FH+=>>- - ?>-* * * * *r   r  c                       e Zd ZdS )TestMaskedQuantityCopyFilledNr   r   r   r   r.  r.            Dr   r.  c                       e Zd ZdS )TestMaskedLongitudeCopyFilledNr   r   r   r   r1  r1    r/  r   r1  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestMaskedArrayShapingc                    | j                             d          }| j                            d          }| j                            d          }|j        |j        k    sJ t          |j        |           t          |j        |           d S N   )rj   r9   r   r;   ro   r   r   r   rH   
ma_reshapeexpected_dataexpected_masks       r   test_reshapez#TestMaskedArrayShaping.test_reshape  s    W__T**
t,,++D11=#66666:.>>>:?M:::::r   c                 &   | j                                         }d|_        | j                            d          }| j                            d          }|j        |j        k    sJ t          |j        |           t          |j        |           d S r5  )	rj   r   ro   r   r9   r;   r   r   r   r8  s       r   test_shape_settingz)TestMaskedArrayShaping.test_shape_setting  s    W\\^^

t,,++D11=#66666:.>>>:?M:::::r   c                    | j                                         }t          j        t          d          5  d|_        d d d            n# 1 swxY w Y   |j        | j         j        k    sJ |j        j        | j         j        k    sJ t          t          j	        dgdgg| j
        j                  | j                  }t          j        t          d          5  d|_        d d d            n# 1 swxY w Y   |j        | j         j        k    sJ |j        j        | j         j        k    sJ t          | j
                                        t          j	        d	gd
gg| j        j                            }t          j        t          d          5  d|_        d d d            n# 1 swxY w Y   |j        | j         j        k    sJ |j        j        | j         j        k    sJ d S )Nzcannot reshaperz   )   r#   r$   re   zncompatible shaper6  TF)rj   r   r|   r}   r~   ro   r   r   r7   broadcast_tor   r;   r   )rH   rj   r  r  s       r   test_shape_setting_failurez1TestMaskedArrayShaping.test_shape_setting_failure  sr   W\\^^]:-=>>> 	 	BH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 x47=((((w}---- R_secU^TV\BBUUU]>1DEEE 	 	CI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 yDGM))))x~.... FKKMM$%0A4;CT U U
 
 
 ]>1DEEE 	 	CI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 yDGM))))x~......s5   A		AAC--C14C1F##F'*F'c                    | j                                         }| j                                        }| j                                        }|j        |j        k    sJ t          |j        |           t          |j        |           d S r   )rj   ravelr   r;   ro   r   r   r   )rH   ma_ravelr:  r;  s       r   
test_ravelz!TestMaskedArrayShaping.test_ravel)  st    7==??))++~!444448,m<<<8=-88888r   c                    | j                                         }| j                                        }| j                                        }|j        |j        k    sJ t          |j        |           t          |j        |           d S r   )rj   	transposer   r;   ro   r   r   r   )rH   ma_transposer:  r;  s       r   test_transposez%TestMaskedArrayShaping.test_transpose1  s~    w((**((**--//!]%88888<0-@@@<,m<<<<<r   c                     t          | j        | j        | j                  D ]0\  }}}t	          |j        |           t	          |j        |           1d S r   )r)  rj   r   r;   r   r   r   )rH   rj   drV   s       r   	test_iterz TestMaskedArrayShaping.test_iter9  sZ    DGTVT[99 	+ 	+HB1r{A...rw****	+ 	+r   N)	rJ   rK   rL   r<  r>  rB  rF  rJ  rM  r   r   r   r3  r3    sn        ; ; ;; ; ;/ / /49 9 9= = =+ + + + +r   r3  c            	          e Zd Zej                            de          d             Zej                            ddgez             d             Zej                            dddgdfddgdfddgdfddgd	d
ggdfg          d             Z	ej                            de          ej                            dg d          d                         Z
ej                            ddgez             ej                            dg d          d                         Zej                            de          d             ZdS )MaskedItemTestsr   c                     | j         |         }| j        |         }| j        |         }t          |j        |           t          |j        |           d S r   )rj   r   r;   r   r   r   rH   r   ma_partr:  r;  s        r   test_getitemzMaskedItemTests.test_getitem@  sO    '$-tD)7+];;;7<77777r   r   c                     | j         |         }| j        |         }| j        |         }t          |j        |           t          |j        |           d S r   )r   r-   rA   r   r   r   rQ  s        r   test_getitem_structuredz'MaskedItemTests.test_getitem_structuredH  sO    (4.T*7+];;;7<77777r   zindices,axisr   r   Nr   r   c                 Z   | j                             ||          }| j                            ||          }| j                            ||          }t	          |j        |           t	          |j        |           t          j        | j         ||          }t          ||           d S Naxis)	rj   taker   r;   r   r   r   r7   r   )rH   indicesrY  ma_taker:  r;  ma_take2s          r   	test_takezMaskedItemTests.test_takeP  s    
 ',,wT,22G$77((t(<<7+];;;7<777747G$777Hg.....r   r   r   c                    | j                                         }| j                                        }| j                                        }|| j        d         nt	          | j        d         |          }|||<   ||n|j        ||<   |dn|j        ||<   t          |j        |           t          |j        |           d S )Nr   r   F)rj   r   r   r;   r   r   r   r   rH   r   r   baser:  r;  r   s          r   test_setitemzMaskedItemTests.test_setitem]  s     w||~~((** $t&t2L2LT
'+|eed'+|eed4=-88849m44444r   c                    | j                                         }| j                                        }| j                                        }|dk    r| j        d         n| j        d         }|t	          ||          }|||<   ||n|j        ||<   |dn|j        ||<   t          |j        |           t          |j        |           d S )Nr   r   r`  F)r   r   r-   rA   r   r   r   r   ra  s          r   test_setitem_structuredz'MaskedItemTests.test_setitem_structuredj  s     x}}))++ $5$''ET
'+|eed'+|eed4=-88849m44444r   c                     | j                                         }| j                                        }t          j         j        ||<   d||<   t          |j        | j                   t          |j        |           d S )NT)	rj   r   r;   r7   r   r   r   r   r   )rH   r   rb  r;  s       r   test_setitem_np_ma_maskedz)MaskedItemTests.test_setitem_np_ma_maskedy  sg    w||~~((**U\T
"d4=$&11149m44444r   )rJ   rK   rL   r|   r   r   r   rS  rU  r^  rc  re  rg  r   r   r   rO  rO  ?  s       [V]338 8 438 [VcU]%:;;8 8 <;8 [a&!1vqkQFD>aVaV4Dd3KL / /	 / [V]33[V%8%8%899	5 	5 :9 43	5 [VcU]%:;;[V%8%8%8995 5 :9 <;5 [V]335 5 435 5 5r   rO  c                   :     e Zd Ze fd            Zd Zd Z xZS )TestMaskedArrayItemsc                     t                                                       t          j        ddg          | _        t          j        ddg          | _        t          | j        | j                  | _        d S )NaabbTF)rT   rI   r7   r:   rL  mask_dr   mdrY   s    r   rI   z TestMaskedArrayItems.setup_class  s\    4,''he}----r   c                     | j                                         }|d         }|j        | j        d         k    sJ |j        sJ |d d          }t          ||           d S Nr   )rn  r   r   rL  r   r   )rH   rn  md0md_alls       r   test_getitem_stringsz)TestMaskedArrayItems.test_getitem_strings  sa    W\\^^e|tvay((((xAAAFB'''''r   c                     | j                                         }t          j        j        |d<   t          |j        | j                   t          |j        t          j	        dt                               d S )Nr   r   )rn  r   r7   rj   r   r   r   rL  r   onesrt   )rH   rn  s     r   !test_setitem_strings_np_ma_maskedz6TestMaskedArrayItems.test_setitem_strings_np_ma_masked  sV    W\\^^12;///27BGAt$4$455555r   )rJ   rK   rL   rO   rI   rs  rv  r[   r\   s   @r   ri  ri    s`        . . . . [.( ( (6 6 6 6 6 6 6r   ri  c                       e Zd ZdS )TestMaskedQuantityItemsNr   r   r   r   rx  rx    r/  r   rx  c                       e Zd ZdS )TestMaskedLongitudeItemsNr   r   r   r   rz  rz    r/  r   rz  c                      e Zd Zej                            dej        ej        f          d             Z	ej                            dej
        ej        f          d             Zd Zej                            dddg          ej                            dej
        ej        f          d                         Zd	 Zd
 Zd Zd ZdS )MaskedOperatorTestsopc                      || j         | j                  } || j        | j                  }| j         j        | j        j        z  }t          |j        |           t          |j        |           d S r   rj   r   r   r   r   r   r   rH   r}  mapmbr:  r;  s        r   test_add_subtractz%MaskedOperatorTests.test_add_subtract  j    47DG$$4646**tw|3 	5>=9995:}55555r   c                      || j         | j                  } || j        | j                  }| j         j        | j        j        z  }t          |j        |           t          |j        |           d S r   r  r  s        r   test_equalityz!MaskedOperatorTests.test_equality  r  r   c                     t          j        t                    5  | j        dk     d d d            d S # 1 swxY w Y   d S )Nabc)r|   r}   r  rj   rG   s    r   test_not_implementedz(MaskedOperatorTests.test_not_implemented  s    ]9%% 	 	GeOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   377different_namesFTc                 b   | j         }|r;|                    d |j        j                                        D                       } || j        | j                   }t          j        |j        t                    }t          j        |j        t                    }| j
        j        D ]N}| j        |         | j        |         }	}| j        |         | j        |         }}
|	|z  }||
k    |z  }||z  }||z  }O|t           j        u r| }t%          |j        |           t%          |j        |           d S )Nc                 "    g | ]\  }}d | |fS )
different_r   )r&  namedts      r   
<listcomp>z@MaskedOperatorTests.test_structured_equality.<locals>.<listcomp>  s*    TTTxtR%t%%r*TTTr   )r   astyper)   fieldsitemsr   r7   ru  ro   rt   r?   namesr-   rA   r/   rB   operatorner   r   r   )rH   r}  r  r   r  r:  r;  fieldfamfafbmfbmfequalfequals                 r   test_structured_equalityz,MaskedOperatorTests.test_structured_equality  s1    h 	**TT39;K;Q;Q;S;STTT C 48TX&&T22T22X^ 	% 	%Egendl5&9Bgendl5&9BCiGBh')FV#MW$MM*NM 	5>=9995:}55555r   c                 <   | j         j        | j         z  }t          |j        | j        j        | j        z             t          j        | j        d          }t
          j        	                    ||          }t          |j
        |           | j         j        | j        z  }t          |j        | j        j        | j        z             t
          j        	                    |t          j        dt                              }t          |j
        |           | j        j        | j         z  }t          |j        | j        j        | j        z             t
          j        	                    t          j        dt                    |          }t          |j
        |           d S )Nr   rX  r   )rj   Tr   r   r   r7   r   r;   
logical_orouterr   rs   rt   )rH   r  mask1r;  result2expected_mask2result3expected_mask3s           r   test_matmulzMaskedOperatorTests.test_matmul  s:   TW$6?DFHtv,=>>>t{+++++E5996;666')df$7+TVX->???,,UBHQ4E4EFF7<888&(TW$7+TVX->???,,RXa->->FF7<88888r   c                 .   | j         | j        z  }t          j        |j                  sJ t          |j        | j        | j        z             | j        | j        z  }t          j        |j                  sJ t          |j        | j        | j        z             | j         	                                }d|j        d<   || j        z  }t          |j        | j        | j        z             t          |j        |j        
                    d                     d S )NFr`  r3   )rj   r   r7   r   r   r   r   r   r   r   r   rH   r  r  new_mar  s        r   test_matveczMaskedOperatorTests.test_matvec  s    47"vfk"""""6?DFTVO<<<&47"vgl#####7+TVdf_===!D46/7+TVdf_===7<)<)<=====r   c                 j   | j         | j        j        z  }t          j        |j                  sJ t          |j        | j        | j	        j        z             | j        | j        j        z  }t          j        |j                  sJ t          |j        | j        | j	        j        z             | j        j        
                                }d|j        d<   | j        |z  }t          |j        | j        | j	        j        z             t          |j        |j                            d                     d S )NFr`  r   )r   rj   r  r7   r   r   r   r   r   r   r   r   r  s        r   test_vecmatzMaskedOperatorTests.test_vecmat  s    479$vfk"""""6?DFTVX,=>>>&479$vgl#####7+TVdfh->???!!!D&6/7+TVdfh->???7<););<<<<<r   c                     | j         | j         z  }|j        dk    sJ |j        sJ |j        | j        | j        z  k    sJ t          | j        d          }||z  }|j        rJ d S )Nr   F)r   ro   r   r   r   r   )rH   r  
mb_no_maskr  s       r   test_vecveczMaskedOperatorTests.test_vecvec  s{    47"|r!!!!{$&46/1111DFE**
z)<r   N)rJ   rK   rL   r|   r   r   r  addsubr  eqr  r  r  r  r  r  r  r  r   r   r   r|  r|    s%       [THL(,#?@@6 6 A@6 [THK#=>>6 6 ?>6   [.>>[THK#=>>6 6 ?> ?>649 9 9> > >= = =         r   r|  c                   t    e Zd Zej                            dej        ej        f          d             Z	d Z
dS )TestMaskedArrayOperatorsr}  c                    t          t          j        g d          g d          }t          t          j        g d          g d          } |||          }t          |j         ||j        |j                             t          |j        |j        |j        z              |||j                  }t          ||           d S )N)r   r   r=   r   re   )r   r   rL  )FFF)r   r7   r:   r   r   r   r   )rH   r}  m1m2r  r  s         r   test_equality_stringsz.TestMaskedArrayOperators.test_equality_strings  s    BH___--4H4H4HIIIBH___--4I4I4IJJJB6?BBr{BK,H,HIII6;"'(9:::"R%%GV,,,,,r   c                     t          j        t                    5  t          ddg          t	                      k     d d d            d S # 1 swxY w Y   d S )Nr   r   )r|   r}   r  r   objectrG   s    r   r  z-TestMaskedArrayOperators.test_not_implemented  s    ]9%% 	* 	*C:))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   "A		AAN)rJ   rK   rL   r|   r   r   r  r  r  r  r  r   r   r   r  r    sX        [THK#=>>- - ?>-* * * * *r   r  c                       e Zd ZdS )TestMaskedQuantityOperatorsNr   r   r   r   r  r    r/  r   r  c                       e Zd ZdS )TestMaskedLongitudeOperatorsNr   r   r   r   r  r  "  r/  r   r  c                   	   e Zd Zd Zej                            dd          d             Zej                            dd          d             Zej                            dd          d             Z	ej                            dd          d             Z
ej                            dd          d             Zd	 Zd
 Zd Zej                            d          ej                            d          ej                            dd          d                                     Zej                            d          ej                            dd          d                         Zd Zej                            d          ej                            d          ej                            dd          d                                     Zd Zd Zej                            d          ej                            d          ej                            dd          d                                     Zej                            dd          d             Zd Zej                            dd          d             Zej                            dd          d             Zej                            dd          d             Zej                            dd          d             Zd Zesd Zej                            dd          d             Z esd Z!ej                            dd          d              Z"ej                            d!g d"          ej                            dd#d$g          d%                         Z#d& Z$ej                            dd'          d(             Z%ej                            d)d$d*g          d+             Z&ej                            d)d$d*g          d,             Z'd- Z(ej                            d.d/d0g          ej                            d1g d2          d3                         Z)d4 Z*ej                            d.d5          ej                            dd          d6                         Z+ej                            d7d'          d8             Z,ej                            d7d'          d9             Z-d: Z.d; Z/d<S )=TestMaskedArrayMethodsc                     | j                                         }t          | j                                        | j                  }t          ||           d S r   )r   roundr   r=   r>   r   )rH   mrcr   s      r   
test_roundz!TestMaskedArrayMethods.test_round'  sB    gmmoo$&,,..$+66C*****r   rY  r   r   Nc                     | j                             |          }| j                            |          }| j         j                            |          }t          |j        |           t          |j        |           d S r   )rj   sumr   r   r   r   r   rH   rY  ma_sumr:  r;  s        r   test_sumzTestMaskedArrayMethods.test_sum-  si    T""

4((((..6?M:::6;66666r   c                    t          j        g dg dg          }| j        j         |z  }| j                            ||          }| j        j                            ||          }t           j                            | j        j        ||          |                     |          z  }t          |j        |           t          |j        |           d S Nr   TTT)whererY  r  )
r7   r:   rj   r   r  r   r  reducer   r   )rH   rY  r  where_finalr  r:  r;  s          r   test_sum_wherez%TestMaskedArrayMethods.test_sum_where5  s    $$$"""
 
 w|me+T55(,,T,EE,,GLt; - 
 
\t$$% 	6?M:::6;66666r   c                 >   | j                             |          }| j                            |          }| j        }||                                }t
          j                            ||          }t          |j	        |           t          |j
        |           d S rW  )rj   cumsumr   r;   rD  r7   r  
accumulater   r   r   rH   rY  r  r:  r   r;  s         r   test_cumsumz"TestMaskedArrayMethods.test_cumsumF  s    %%d++{<::<<D00D0AA6?M:::6;66666r   c                    | j                             |          }| j                                        }d|| j        <   d| j         j                            t                    z
  }|                    |          |                    |          z  }| j         j        	                    |          }t          |j        |           t          |j        |           d S )N        r   )rj   meanr   r   r;   r   r  rq   r  r   r   r   )rH   rY  ma_meanr  countr:  r;  s          r   	test_meanz TestMaskedArrayMethods.test_meanQ  s    ',,t$$!t{DGL'',,,

4((599T??:((..7+];;;7<77777r   c                 0   t          | j        t          j        | j        j        t
                              }|                    |          }t          j        t          j        |j	                            sJ t          j        |j
                  sJ d S rS   )r   r   r7   ru  ro   rt   r  r   isnanr   r   )rH   rY  rn  md_means       r   test_mean_all_maskedz+TestMaskedArrayMethods.test_mean_all_masked\  sx     DFBGDFL===>>''$--vbhw/0011111vgl#######r   c                     | j                             d          }|                                }|j        dk    sJ |                    d                                          }t	          ||           d S Ni2r    rj   r  r  r)   r   rH   rj   r  r   s       r   test_mean_int16z&TestMaskedArrayMethods.test_mean_int16d  sf    W^^D!!''))}$$$$99T??''))GX.....r   c                     | j                             d          }|                                }|j        dk    sJ | j                                                             d          }t	          ||           d S )Nf2r  r  s       r   test_mean_float16z(TestMaskedArrayMethods.test_mean_float16k  sh    W^^D!!''))}$$$$7<<>>((..GX.....r   c                     | j                             d          }t          t          j        |j                            }| j                             d|          }||u sJ t          ||           d S Nr   )out)rj   r  r   r7   
zeros_liker   r   rH   r   r  r  s       r   test_mean_inplacez(TestMaskedArrayMethods.test_mean_inplacer  sg    7<<??R]8#45566aS))}}}}C*****r   zignore:.*encountered in.*dividezignore:Mean of empty slicec                    t          j        g dg dg          }| j        j         |z  }| j                            ||          }| j        j                            ||          }t           j                            | j        j        ||          |                     |          z  }t          |j        |           t          |j        |           d S r  )
r7   r:   rj   r   r  r   r  r  r   r   )rH   rY  r  r  r  r:  r;  s          r   test_mean_wherez&TestMaskedArrayMethods.test_mean_wherey  s     $$$"""
 
 w|me+',,t5,11(--d+-FF,,GLt; - 
 
\t$$% 	7+];;;7<77777r   c                    | j                             |          }| j        | j                             |d          z
  dz  }d|| j        <   d| j         j                            t                    z
                      |          }|                    |          |z  }| j         j        	                    |          }t          |j        |           t          |j        |           | j                             |d          }|                    |          |dz
  z  }| j         j        	                    |          |dk    z  }	t          |j        |           t          |j        |	           | j                             |d          }
t          j	        t          j        |
j                             sJ |
j        	                                sJ d S )NT)keepdimsr   r  r   ddofr@  )rj   varr   r  r;   r   r  rq   r  r   r   r   r7   isfinite)rH   rY  ma_varr  r  r:  r;  ma_var1expected_data1expected_mask1ma_var5s              r   test_varzTestMaskedArrayMethods.test_var  s    T""&47<<t<<<<B!t{TW\((---22488

4((50((..6?M:::6;666'++d+++D))UQY7))$//5A:>7+^<<<7<888'++d+++vr{7#344455555|!!!!!!!r   c                     | j                             d          }|                                }|j        dk    sJ |                    d                                          }t	          ||           d S r  )rj   r  r  r)   r   )rH   rj   r  r   s       r   test_var_int16z%TestMaskedArrayMethods.test_var_int16  sf    W^^D!!|t####99T??&&((FH-----r   z(ignore:Degrees of freedom <= 0 for slicec                    t          j        g dg dg          }| j        j         |z  }| j                            ||          }| j        j                            ||          }t           j                            | j        j        ||          |                     |          z  }t          |j        |           t          |j        |           d S r  )
r7   r:   rj   r   r  r   r  r  r   r   )rH   rY  r  r  r  r:  r;  s          r   test_var_wherez%TestMaskedArrayMethods.test_var_where       $$$"""
 
 w|me+T//(,,T,EE,,GLt; - 
 
\t$$% 	6?M:::6;66666r   c                     | j                             dd          }| j                             dd          }t          j        |          }t          ||           d S )Nr   r  )rj   stdr  r7   sqrtr   )rH   ma_stdr  r   s       r   test_stdzTestMaskedArrayMethods.test_std  sU    QQ'''++aa+((77##FH-----r   c                     | j                             dd          }t          t          j        |j                            }| j                             dd|          }||u sJ t          ||           d S )Nr   r  )r  r  )rj   r  r   r7   r  r   r   r  s       r   test_std_inplacez'TestMaskedArrayMethods.test_std_inplace  so    7;;qq;))R]8#45566QQC00}}}}FH-----r   c                    t          j        g dg dg          }| j        j         |z  }| j                            ||          }| j        j                            ||          }t           j                            | j        j        ||          |                     |          z  }t          |j        |           t          |j        |           d S r  )
r7   r:   rj   r   r  r   r  r  r   r   )rH   rY  r  r  r  r:  r;  s          r   test_std_wherez%TestMaskedArrayMethods.test_std_where  r  r   c                 8   | j                             |          }| j                                        }| j                                        || j        <   |                    |          }t          |j        |           t          j	        |j
                  rJ d S r   )rj   minr   r   maxr;   r   r   r7   r   r   )rH   rY  ma_minr  r:  s        r   test_minzTestMaskedArrayMethods.test_min  {    T"""fjjllt{

4((6?M:::6&+&&&&&&&r   c                     t          dt          j        dgg d          }|                                }t	          |j        t          j        d                     |j        rJ d S )Nr&   r$   r   re   )r   r7   nanr  r   r   r:   r   )rH   rj   r  s      r   test_min_with_masked_nanz/TestMaskedArrayMethods.test_min_with_masked_nan  s_    S"&#&-A-A-ABBB6?BHSMM:::;r   c                    t          j        g dg dg          }| j        j         |z  }| j                            ||t           j                  }| j        j                            ||t           j                  }t           j                            | j        j        ||          | 	                    |          z  }t          |j        |           t          |j        |           d S Nr   r  )r  initialr  )r7   r:   rj   r   r  infr   r  r  r   r   )rH   rY  r  r  r  r:  r;  s          r   test_min_wherez%TestMaskedArrayMethods.test_min_where  s    $$$"""
 
 w|me+TbfEE(,,Tbf,UU,,GLt; - 
 
\t$$% 	6?M:::6;66666r   c                 8   | j                             |          }| j                                        }| j                                        || j        <   |                    |          }t          |j        |           t          j	        |j
                  rJ d S r   )rj   r  r   r   r  r;   r   r   r7   r   r   )rH   rY  ma_maxr  r:  s        r   test_maxzTestMaskedArrayMethods.test_max  r  r   c                    t          j        g dg dg          }| j        j         |z  }| j                            ||t           j                   }| j        j                            ||t           j                   }t           j                            | j        j        ||          | 	                    |          z  }t          |j        |           t          |j        |           d S r  )r7   r:   rj   r   r  r  r   r  r  r   r   )rH   rY  r  r  r  r:  r;  s          r   test_max_wherez%TestMaskedArrayMethods.test_max_where  s    $$$"""
 
 w|me+TrvgFF(,,Trvg,VV,,GLt; - 
 
\t$$% 	6?M:::6;66666r   c                     | j                             |          }| j                                        }| j                                        || j        <   |                    |          }t          ||           d S r   )rj   argminr   r   r  r;   r   )rH   rY  	ma_argminr  r:  s        r   test_argminz"TestMaskedArrayMethods.test_argmin  a    GNN4((	"fjjllt{d++9m44444r   c                 d    t          ddgddg          }|                                dk    sJ d S )Nr   r   TFdatar   )r   r"  ri   s     r   %test_argmin_only_one_unmasked_elementz<TestMaskedArrayMethods.test_argmin_only_one_unmasked_element  s=     !QtUm444yy{{ar   c                     t          ddgddggddgddgg          }t          |                    dd	          t          j        ddgg                     d S )
Nr   r   r   r2   TFr'  r   rY  r  )r   r   r"  r7   r:   ri   s     r   test_argmin_keepdimsz+TestMaskedArrayMethods.test_argmin_keepdims$  sd    q!fq!f-dE]UEN4STTTBryya$y??Aq6(ASASTTTTTr   c                     | j                             |          }| j                                        }| j                                        || j        <   |                    |          }t          ||           d S r   )rj   argmaxr   r   r  r;   r   )rH   rY  	ma_argmaxr  r:  s        r   test_argmaxz"TestMaskedArrayMethods.test_argmax(  r%  r   c                     t          ddgddggddgddgg          }t          |                    dd          t          j        dgdgg                     d S )	Nr   r   r   r2   TFr'  r+  )r   r   r.  r7   r:   ri   s     r   test_argmax_keepdimsz+TestMaskedArrayMethods.test_argmax_keepdims2  sh    q!fq!f-dE]UEN4STTTBryya$y??A3QRPS*AUAUVVVVVr   c                     | j                             |          }| j                                        }| j                                        dz  || j        <   |                    |          }t          ||           d S )Ng?)rj   argsortr   r   r  r;   r   )rH   rY  
ma_argsortr  r:  s        r   test_argsortz#TestMaskedArrayMethods.test_argsort6  sf    W__T**
"fjjllS0t{t,,:}55555r   order)Nr   r   )r   r   r   r   c                     | j                             ||          }| j                             t          j        t          j        t          j        f| j                            }|                    ||          }t          ||           d S )N)r7  r(   )r  )r   r4  r  r7   r:   r  r?   r   )rH   rY  r7  r5  r  r:  s         r   test_structured_argsortz.TestMaskedArrayMethods.test_structured_argsort>  sx     X%%d%%88
BHbfbf5ETX,V,V,VWWt599:}55555r   c                     t          j        t          d          5  | j                            dd           d d d            d S # 1 swxY w Y   d S )Nzwhen the array has no fieldsrz   r   r   )rY  r7  )r|   r}   r~   rj   r4  rG   s    r   test_argsort_errorz)TestMaskedArrayMethods.test_argsort_errorF  s    ]:-KLLL 	/ 	/GOO#O...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA
A
r  c                 j   | j                                         }|                    |           | j                             |          }t	          j        | j         j        ||          }t	          j        | j         j        ||          }t          |j        |           t          |j        |           d S r   )	rj   r   sortr4  r7   take_along_axisr   r   r   )rH   rY  ma_sortr[  r:  r;  s         r   	test_sortz TestMaskedArrayMethods.test_sortJ  s    ',,..T'//$''*47+;WdKK*47<$GG7+];;;7<77777r   kthr   c                    | j                                         }|                    |          }||         }|d |         ||         k                                     sJ ||d          ||         k                                    sJ ||         j        r t          |j        |d                    sJ d S t          |j        d |                   rJ d S r   )rj   rD  argpartitionr   r   r   )rH   rA  rj   ma_argpartitionpartitioneds        r   test_argpartitionz(TestMaskedArrayMethods.test_argpartitionT  s    W]]__//#..)DSD!K$4499;;;;;CDD![%55::<<<<<s  	3{'-.......;+DSD12222222r   c                    | j                                         }|                    |           |d |         ||         k                                     sJ ||d          ||         k                                    sJ ||         j        r t          |j        |d                    sJ d S t          |j        d |                   rJ d S r   )rj   flatten	partitionr   r   r   )rH   rA  rE  s      r   test_partitionz%TestMaskedArrayMethods.test_partition`  s    goo''c"""DSD!K$4499;;;;;CDD![%55::<<<<<s  	3{'-.......;+DSD12222222r   c                 P   t          j        ddgddgg          }t          j        ddgddgg          }| j        t           j        ur@|                     || j        j                  }|                     || j        j                  }t          |ddgddgg          }t          |ddgddgg          }||k    }t          |j        t          j        ddgddgg                     t          |j	        t          j        ddgddgg                     |
                                sJ ||k    
                                rJ |
                    d	          }t          |j	        t          j        ddg                     t          |d
                   du sJ t          |d	                   du sJ |
                    d
          }t          |j	        t          j        ddg                     t          |d
                   du sJ t          |d	                   du sJ d S )Nr#   r$   r&   r'   r  FTre   r   r   )r7   r:   rN   rM   r   r   r   r   r   r   r   rt   )rH   a1a2ma1r  
ma1_eq_ma2ma_eq1ma_eq0s           r   test_all_explicitz(TestMaskedArrayMethods.test_all_explicitk  si   Xc
c

 
 Xc
c

 
 >++DFK00BDFK00Bt
 
 
 
 
 
 CZ
H5M4L 	
 	
 	
 	OHDM4L 	
 	
 	
 ~~3J##%%%%%""6;%(?(?@@@F1I$&&&&F1I%''''""6;%(?(?@@@F1I$&&&&F1I%''''''r   r   r   r   z
array,axis))r   r   )r   r   )r   N)r   N)r=   r   )r=   r   )r=   Nc                    t          | d|z             }||k    } t          ||          |          }|j                                        }|dk    ||j        <    t          ||          |          }|j                            |          }	t          |j        |	           t          |j        |           d |                                D             }
d ||	 z                                  D             }|
|k    sJ d S )NrV   rX  r   c                 ,    g | ]}t          |          S r   rt   r&  r   s     r   r  z;TestMaskedArrayMethods.test_all_and_any.<locals>.<listcomp>  s    :::q477:::r   c                 ,    g | ]}t          |          S r   rU  rV  s     r   r  z;TestMaskedArrayMethods.test_all_and_any.<locals>.<listcomp>  s    JJJDGGJJJr   )r  r   r   r   r   r   rD  )rH   r:   rY  r   rj   ma_eqma_all_or_anyr  a_all_or_any
all_maskedas_boolr   s               r   test_all_and_anyz'TestMaskedArrayMethods.test_all_and_any  s    T3;''b.v..D999$$&&#u_uz.wvv..D999W[[&&
=-z:::=1<@@@::M$7$7$9$9:::JJlj[&@%G%G%I%IJJJ(""""""r   c                     | j         | j         k    }|                    d          }t          t          j        |j                            }|                    d|          }||u sJ t          ||           d S r  )rj   r   r   r7   r  r   r   )rH   rX  r   r  r  s        r   test_any_inplacez'TestMaskedArrayMethods.test_any_inplace  sq    47"99Q<<R]8#455661#&&}}}}FH-----r   )r   r   c                    t          j        g dg dg          }| j        j         |z  }| j        | j        k    } t	          ||          ||          } t	          |j        |          ||          }t           j                            | j        j        ||          |                     |          z  }t          |j        |           t          |j        |           d S r  )
r7   r:   rj   r   r  r   r  r  r   r   )	rH   r   rY  r  r  rX  ma_anyr:  r;  s	            r   test_all_and_any_wherez-TestMaskedArrayMethods.test_all_and_any_where  s     $$$"""
 
 w|me+47"'''E:::777KPPP,,GLt; - 
 
\t$$% 	6?M:::6;66666r   offsetc                     | j                             |          }t          | j                            |          | j                            |                    }t          ||           d S )Nrc  )rj   diagonalr   r   r;   r   )rH   rc  mdar   s       r   test_diagonalz$TestMaskedArrayMethods.test_diagonal  si    gf--FOO6O**DK,@,@,@,O,O
 
 	C*****r   c                     | j                             |          }t          | j                            |          | j                            |t
                              }t          ||           d S )Nre  )rc  r)   )rj   tracer   r   r;   rt   r   )rH   rc  mtar   s       r   
test_tracez!TestMaskedArrayMethods.test_trace  si    gmm6m**FLLL''):):&PT):)U)U
 
 	C*****r   c                     | j                             | j        | j                  }t	          | j                            | j        | j                  | j                  }t          ||           d S r   )rj   clipr   r=   r   r   r;   r   )rH   maclipr   s      r   	test_clipz TestMaskedArrayMethods.test_clip  sV    dfdf--$&++dfdf55t{CCFH-----r   c                 R   | j                             | j        | j                  }t	          j        t	          j        | j        | j                  | j                  	                                }t	          j
        t	          j
        | j        | j                  | j                                                  }t          | j                            | j                            |          | j                            |                    | j                  }t          ||           d S rd   )rj   rn  r   r   r7   maximumr   r   r=   r  minimumr  r   r  r;   r   )rH   ro  dmaxdminr   s        r   test_clip_masked_min_maxz/TestMaskedArrayMethods.test_clip_masked_min_max  s    dgtw//z"*TVTV44df==AACCz"*TVTV44df==AACCFKKt,,dgnnT.B.BCC$+
 
 
 	FH-----r   N)0rJ   rK   rL   r  r|   r   r   r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r	  r  r  r  r  r  r  r   r$  r)  r   r,  r0  r2  r6  r9  r;  r@  rF  rJ  rR  r]  r_  rb  rh  rl  rp  rv  r   r   r   r  r  &  s       + + + [V\227 7 327 [V\227 7 327  [V\227 7 327 [V\228 8 328 [V\22$ $ 32$/ / // / /+ + + [ ABB[ <==[V\228 8 32 >= CB8  [ ABB[V\22" " 32 CB"$. . . [ ABB[ JKK[V\227 7 32 LK CB7 . . .. . . [ ABB[ JKK[V\227 7 32 LK CB7  [V\22' ' 32'   [V\227 7 327  [V\22' ' 32' [V\227 7 327  [V\225 5 325       U	U 	U 	U [V\225 5 325  W	W 	W 	W [V\226 6 326 [W&I&I&IJJ[VaV,,6 6 -, KJ6/ / / [VV,,8 8 -,8 [UQF++	3 	3 ,+	3 [UQF++3 3 ,+3:( :( :(x [Xu~66[WWW # #	  76
#. . . [X~66[V\227 7 32 767" [Xv..+ + /.+ [Xv..+ + /.+. . .
. . . . .r   r  c                       e Zd ZdS )TestMaskedQuantityMethodsNr   r   r   r   ry  ry    r/  r   ry  c                       e Zd ZdS )TestMaskedLongitudeMethodsNr   r   r   r   r{  r{    r/  r   r{  c                       e Zd Zej                            dd          d             Zej                            dd          d             ZdS )TestMaskedArrayProductMethodsrY  r  c                     | j                             |          }| j                            |          }| j         j                            |          }t          |j        |           t          |j        |           d S r   )rj   prodr   r   r   r   r   r  s        r   	test_prodz'TestMaskedArrayProductMethods.test_prod   si    d##D))((..6?M:::6;66666r   c                 >   | j                             |          }| j                            |          }| j        }||                                }t
          j                            ||          }t          |j	        |           t          |j
        |           d S rW  )rj   cumprodr   r;   rD  r7   r  r  r   r   r   r  s         r   test_cumprodz*TestMaskedArrayProductMethods.test_cumprod  s    &&t,,{<::<<D00D0AA6?M:::6;66666r   N)rJ   rK   rL   r|   r   r   r  r  r   r   r   r}  r}    sn        [V\227 7 327 [V\227 7 327 7 7r   r}  c                  z   t          j        ddgd          } t          | ddg          }t          |          dk    sJ t          |d                   d	k    sJ t          |d
                   dk    sJ t          j        dd          5  t          |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr"   r%   zf8,f8r(   r,   r+   u   [(1., ——) (3., 4.)]r   u   (1., ——)r   z(3., 4.)r   fixed)	precision	floatmodeu%   [(1.000,   ———) (3.000, 4.000)])r7   r:   r   strprintoptionsr-   r   s     r   test_masked_str_explicitr    s%   	:z*'	:	:	:B
m^4
5
5Cs8800000s1v;;.((((s1v;;*$$$$	1	8	8	8 C C3xxBBBBBBC C C C C C C C C C C C C C C C C Cs   B00B47B4c                      t          j        ddgd          } t          | ddg          }t          |          dk    sJ t          |d                   d	k    sJ t          |d
                   dk    sJ d S )Nr"   r%   z>f8,>f8r(   r,   r+   uM   MaskedNDArray([(1., ——), (3., 4.)], dtype=[('f0', '>f8'), ('f1', '>f8')])r   uA   MaskedNDArray((1., ——), dtype=[('f0', '>f8'), ('f1', '>f8')])r   z=MaskedNDArray((3., 4.), dtype=[('f0', '>f8'), ('f1', '>f8')]))r7   r:   r   reprr  s     r   test_masked_repr_explicitr    s    	:z*)	<	<	<B
m^4
5
5CS		Z	[ 	[ 	[ 	[ 	SV[[[[[ 	SVWWWWWWWr   c                      t          t          j        d          dgdgdz  z             } t          j        d          5  t	          |           dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	Ng      .@TF   re   r   )	thresholdu8   MaskedNDArray([———,  1.,  2., ..., 12., 13., 14.]))r   r7   r8   r  r  )rj   s    r   test_masked_repr_summaryr  .  s    		$tfw|&;	<	<	<B	1	%	%	% V VBxxUUUUUUV V V V V V V V V V V V V V V V V Vs   A%%A),A)c                  J    t          t          g                     dk    sJ d S )Nz MaskedNDArray([], dtype=float64))r  r   r   r   r   test_masked_repr_nodatar  4  s(    r

AAAAAAAr   c                   &    e Zd Zd Zd Zd Zd ZdS )TestMaskedArrayReprc                     t          | j                   t          | j                   t          | j                   t          | j                   t          | j                   t          | j                   d S r   )r  rj   r   r   r   r   r   rG   s    r   test_array_strz"TestMaskedArrayRepr.test_array_str9  sT    DGDGDGDHDHDHr   c                 2   | j         d         j        dk    sJ t          | j         d                    | j        d         j        dk    sJ t          | j        d                    | j        d         j        dk    sJ t          | j        d                    d S )Nr   r   )r   ro   r  r   r   rG   s    r   test_scalar_strz#TestMaskedArrayRepr.test_scalar_strB  s    wqz2%%%%DGAJx{ B&&&&DHQKx{ B&&&&DHQKr   c                     t          | j                   t          | j                   t          | j                   t          | j                   t          | j                   t          | j                   d S r   )r  rj   r   r   r   r   r   rG   s    r   test_array_reprz#TestMaskedArrayRepr.test_array_reprJ  sT    TWTWTWTXTXTXr   c                     t          | j        d                    t          | j        d                    t          | j        d                    d S rp  )r  r   r   r   rG   s    r   test_scalar_reprz$TestMaskedArrayRepr.test_scalar_reprR  sD    TWQZTXa[TXa[r   N)rJ   rK   rL   r  r  r  r  r   r   r   r  r  8  sP                  r   r  c                       e Zd ZdS )TestMaskedQuantityReprNr   r   r   r   r  r  X  r/  r   r  c                        e Zd Ze fd            Zd Zd Zej        	                    dddg          d             Z
ej        	                    dddg          d             Z xZS )	TestMaskedRecarrayc                     t                                                       | j                            t          j                  | _        t          | j        | j                  | _	        d S rd   )
rT   rI   r-   r   r7   recarrayrar   rA   mrarY   s    r   rI   zTestMaskedRecarray.setup_class]  sL    ',,r{++$'555r   c                 |   t          | j        t                    sJ t          | j        t          j                  sJ t          j        | j        j        | j        k              sJ t          j        | j        j        | j	        k              sJ t          | j                            t          j                  | j                   t          | j        j        t                    sJ t          | j        j        j        | j        d                    t          | j        j        j        | j	        d                    d S Nr   )rf   r  r   r7   r  r   r   r  r   rA   r   r   rM   r-   r   rG   s    r   test_recarray_setupz&TestMaskedRecarray.test_recarray_setupc  s    $(F+++++$(BK00000vdh'47233333vdhmt|34444448==44dg>>>$(*f-----48:.===48:?DL,=>>>>>r   c                    | j                                         }| j        d         |_        t	          |j        j        | j        d         j                   t	          |j        j        | j        d         j                   d S Nr   )r  r   r   r   r   r   r   )rH   r  s     r   test_recarray_settingz(TestMaskedRecarray.test_recarray_settingm  s^    hmmoo35>48C=+ABBB35:tx}'9:::::r   attrr   r   c                     | j                             |          }t          |t                    sJ t	          |j        | j        d                    t	          |j        | j        d                    d S r  )	r  r  rf   r   r   r   r-   r   rA   )rH   r  mra_as      r   test_recarray_field_gettingz.TestMaskedRecarray.test_recarray_field_gettings  sb    t$$%(((((5>473<8885:t|C'899999r   c                 "   | j                                         }|                    || j        d                    t	          |j        j        | j        d         j                   t	          |j        j        | j        d         j                   d S r  )r  r   r  r   r   r   r   r   )rH   r  r  s      r   test_recarray_field_settingz.TestMaskedRecarray.test_recarray_field_settingz  sk    hmmoo		$&&&35>48C=+ABBB35:tx}'9:::::r   )rJ   rK   rL   rO   rI   r  r  r|   r   r   r  r  r[   r\   s   @r   r  r  \  s        6 6 6 6 [6
? ? ?; ; ; [VaX..: : /.: [VaX..; ; /.; ; ; ; ;r   r  c                       e Zd Zd Zd ZdS )%TestMaskedArrayInteractionWithNumpyMAc                 x   t           j                            | j                  }t          |          t           j        j        u sJ t          |j                  | j        u sJ t          |j                  t           j        u sJ t          |j        | j	                   t          |j        | j
                   dS )z4Check that we can initialize a MaskedArray properly.N)r7   rj   r   rg   r(  rN   r   rM   r   r   r;   rH   np_mas     r   test_masked_array_from_maskedzCTestMaskedArrayInteractionWithNumpyMA.test_masked_array_from_masked  s    !!$'**E{{be/////EJ4>1111EJ2:----5:tv...5:t{33333r   c                    | j                             t          j         j                  }t	          |          t          j         j        u sJ t	          |j                  | j        u sJ t	          |j                  t          j        u sJ t          |j        | j
                   t          |j        | j                   dS )z,Test that we can be viewed as a MaskedArray.N)rj   r   r7   r   rg   r(  rN   r   rM   r   r   r;   r  s     r   test_view_as_masked_arrayz?TestMaskedArrayInteractionWithNumpyMA.test_view_as_masked_array  s    RU.//E{{be/////EJ4>1111EJ2:----5:tv...5:t{33333r   N)rJ   rK   rL   r  r  r   r   r   r  r    s2        4 4 44 4 4 4 4r   r  c                       e Zd ZdS )(TestMaskedQuantityInteractionWithNumpyMANr   r   r   r   r  r    s         	Dr   r  )<r   r  numpyr7   r|   numpy.testingr   astropyr   rU   astropy.coordinatesr   astropy.unitsr   astropy.utils.compatr   astropy.utils.maskedr   r	   r   slicer   r   rQ   r^   rb   rx   r   r   r   r   r   r   r   r   r  r.  r1  r3  rO  ri  rx  rz  r|  r  r  r  r  ry  r{  r}  r  r  r  r  r  r  r  r  r  r   r   r   <module>r     s          , , , , , ,       ) ) ) ) ) ) " " " " " " . . . . . . 6 6 6 6 6 6 6 6' ' '
 tQQ/,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
^
: 
: 
: 
: 
:J 
: 
: 
:* * * * *Z * * *: : : : :J : : :,3 3 3$  
  <+ <+ <+ <+ <+ <+ <+ <+~I, I, I, I, I, I, I, I,X)' )' )' )' )''Dm )' )' )'XB* B* B* B* B*j B* B* B*P	6 	6 	6 	6 	6z 	6 	6 	6A A A A A" A A A:0* 0* 0* 0* 0* 0 0* 0* 0*f	 	 	 	 	#<m 	 	 		 	 	 	 	$=~ 	 	 	?+ ?+ ?+ ?+ ?+- ?+ ?+ ?+DA5 A5 A5 A5 A5& A5 A5 A5H6 6 6 6 6? 6 6 60	 	 	 	 	o} 	 	 		 	 	 	 	 	 	 	f  f  f  f  f * f  f  f R* * * * *2 * * *$	 	 	 	 	"5} 	 	 		 	 	 	 	#6 	 	 	M. M. M. M. M.- M. M. M.`	 	 	 	 	 6 	 	 		 	 	 	 	!7 	 	 	7 7 7 7 7$4 7 7 7,C C C   V V VB B B    *   @	 	 	 	 	0- 	 	 	#; #; #; #; #;) #; #; #;L4 4 4 4 4,< 4 4 4(	 	 	 	 	)=	 	 	 	 	r   