
    IR-euc                        d Z ddlZddlmZ ddlZddlmZ ddl	m
Z
mZmZmZ ddlmZ ddlmZ ddlmZ  G d d          Z G d	 d
e          Z G d d          Z G d de          Z G d de          Z G d de          Z G d d          Z G d d          Z G d d          Z G d d          Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%dS )#z&Test behavior related to masked tables    N)ColumnMaskedColumnQTableTable)
BaseColumn)Time)Maskedc                       e Zd Zd ZdS )	SetupDatac                    t          dg dd          | _        t          dg dd          | _        t          d	g d
d          | _        t	          j        g d          | _        t          dg d| j                  | _        t          | j        | j        gd          | _	        t          dg d          | _        t          dg ddd          | _        d S )Na         r   namedata
fill_valueb         Tr   r   maskc)      	   FFTFd)r   r   r   maskedcar   r   sc))r         ?)r   g       @)r   g      @zi8,f8r   g      )r   r   dtyper   )r   r   r   r   nparrayd_maskr"   r   tr   r%   r'   )selfmethods     ?lib/python3.11/site-packages/astropy/table/tests/test_masked.pysetup_methodzSetupData.setup_method   s    3YYY1EEE3YYYTBBB3YYYUCCCh333443YYYT[III'555d333/// 	
 
 
    N)__name__
__module____qualname__r2    r3   r1   r   r      s#        
 
 
 
 
r3   r   c                       e Zd Zd ZdS )
TestPprintc                 H    | j                                         g dk    sJ d S )N)z a   b z--- ---z  1  --z  2  --z  3  --)r.   pformatr/   s    r1   test_pformatzTestPprint.test_pformat!   s>    v~~ $
 $
 $
 
 
 
 
 
 
r3   N)r4   r5   r6   r=   r7   r3   r1   r9   r9       s#        
 
 
 
 
r3   r9   c                   *    e Zd ZdZd Zd Zd Zd ZdS )
TestFilledz0Test the filled method in MaskedColumn and Tablec                     g d}dddgd| _         t          dg dd|ddi	          | _        t          d
g dd|          | _        t          dg dd|          | _        d S )N)TFFr   r   r   r   r   r   r   
   )r   r   r   r   metar   )g      @      @      @      $@)r   r   r   r   r   )7891)rC   r   r   r   r   )r/   r0   r   s      r1   r2   zTestFilled.setup_method.   s    ###1a&))	999$c1X
 
 
 ???t$
 
 
 3___SWXXXr3   c                    | j                                         }t          j        |g dk              sJ t	          |t
                    sJ t	          |t                    rJ |j        d         dk    sJ d|j        d<   d|d<   | j         d         dk    sJ | j         j        d         dk    sJ | j                             d          }t          j        |g dk              sJ | j                                        }t          j        |g dk              sJ t	          |t
                    sJ | j	                                        }t          j        |g d	k              sJ t	          |t
                    sJ d S )
NrB   r   r   r   r   r   d      )rN   r   r   rF   rD   rE   rJ   rH   rI   )
r   filledr+   all
isinstancer   r   rC   r   r   )r/   fs     r1   test_filled_columnzTestFilled.test_filled_column9   sy   FMMOOva:::o&&&&&!V$$$$$a..... vc{as!vayA~~~~v{31$$$$ FMM"va:::o&&&&&FMMOOva++++,,,,,!V$$$$$FMMOOva???*+++++!V$$$$$$$r3   c                 2    || j         | j        | j        g| j                  }|                                }t          |t                    sJ |j        du sJ t          j	        |d         g dk              sJ t          j
        |d         g d          sJ t          j	        |d         g dk              sJ |j        d         d	d
gk    sJ d|j        d         d<   |j        d         d	d
gk    sJ d|d         d	<   |d         d	         d
k    sJ d S )N)rC   Fr   rL   r   rO   r   rP   r   r   rN   r   rM   )r   r   r   rC   rQ   rS   r   r$   r+   rR   allcloser/   
tableclassr.   rT   s       r1   test_filled_masked_tablez#TestFilled.test_filled_masked_tableR   s1   J/di@@@HHJJ!U#####x5    vaf


*+++++{1S6#3#3#344444vaf/00000 vc{q!f$$$$sAvc{q!f$$$$#q	vayA~~~~~~r3   c                     |ddgd| j                   }|                                }t          |t                    sJ |j        du sJ t          j        |d         |d         k              sJ t          j        |d         |d         k              sJ |j         d         dd	gk    sJ d
|j         d         d<   |j         d         dd	gk    sJ d|d         d<   |d         d         dk    sJ d S )N)r   r   )34rA   )namesrC   Fr   r   r   r   rN   r   rM   r   )rC   rQ   rS   r   r$   r+   rR   rX   s       r1   test_filled_unmasked_tablez%TestFilled.test_filled_unmasked_tablec   s   J
+:DINNNHHJJ!U#####x5    vaf#&'''''vaf#&''''' vc{q!f$$$$sAvc{q!f$$$$#q	vayA~~~~~~r3   N)r4   r5   r6   __doc__r2   rU   rZ   r_   r7   r3   r1   r?   r?   +   sY        ::	Y 	Y 	Y% % %2  "    r3   r?   c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestFillValuez=Test setting and getting fill value in MaskedColumn and Tablec                 l    | j         j        dk    sJ t          dddgd          }|j        dk    sJ dS )z<Check that setting fill_value in the MaskedColumn init worksr   r   xxxxyyyynoner   N)r   r   r   r/   r   s     r1   test_init_set_fill_valuez&TestFillValue.test_init_set_fill_valuev   sJ    v A%%%%c(8VLLL|v%%%%%%r3   c                     d| j         _        | j         j        dk    sJ t          j        | j                                         g dk              sJ dS )z5Check set and get of fill value works for bare Column)r   rj   r   N)r"   r   r+   rR   rQ   r<   s    r1   'test_set_get_fill_value_for_bare_columnz5TestFillValue.test_set_get_fill_value_for_bare_column|   sQ     v D((((vdfmmoo56666666r3   c                    t          dddgddg          }d|_        |j        dk    sJ t          j        |                                ddgk              sJ t          j        |                    d	          d	dgk              sJ d S )
Nr   rd   re   TFr   ABCDEFABCDXY)r   r   r+   rR   rQ   rg   s     r1   &test_set_get_fill_value_for_str_columnz4TestFillValue.test_set_get_fill_value_for_str_column   s    c(8e}MMM|v%%%%vahhjjVV$4455555vahhtnnv67777777r3   c                    | j         j        t          j        d| j         j                  k    sJ | j                                         }|j                                        dk    sJ dt          j        f|_        |j        t          j        dt          j        f| j         j                  k    sJ t          |dt          j         f          }|j        t          j        dt          j         f|j                  k    sJ d S )Nr)   )r   )	r'   r   r+   r,   r*   copyiteminfr   )r/   r'   sc2s      r1   -test_set_get_fill_value_for_structured_columnz;TestFillValue.test_set_get_fill_value_for_structured_column   s    w!RXi%G%GGGGGW\\^^}!!##y0000RV}"bftw} E EEEEE22w-888~2w-!C!CCCCCCCr3   c                 N    d| j         _        | j        d         j        dk    sJ dS )z4Table column mask is not ref of original column maskrj   r   N)r   r   r.   r<   s    r1   test_table_column_mask_not_refz,TestFillValue.test_table_column_mask_not_ref   s,     vc{%------r3   c                     d| j         d         _        | j         d         j        dk    sJ t          j        | j         d                                         g dk              sJ dS )z;Check set and get of fill value works for Column in a Tabler   r   )r   r   r   N)r.   r   r+   rR   rQ   r<   s    r1   (test_set_get_fill_value_for_table_columnz6TestFillValue.test_set_get_fill_value_for_table_column   sa    !"svc{%****vdfSk((**iii78888888r3   c                     d| j         d         _        g d| j         d         _        | j         d         j        j        dk    sJ t	          j        | j         d         j        j        g dk              sJ dS )z8Check that .data attribute preserves fill_value and maskr   r   )TFTN)r.   r   r   r   r+   rR   r<   s    r1   !test_data_attribute_fill_and_maskz/TestFillValue.test_data_attribute_fill_and_mask   su    !"s...svc{*a////vdfSk&+/B/B/BBCCCCCCCr3   N)r4   r5   r6   r`   rh   rk   rp   rx   rz   r|   r~   r7   r3   r1   rb   rb   s   s        GG& & &7 7 78 8 8D D D. . .
9 9 9D D D D Dr3   rb   c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestMaskedColumnInitz!Initialization of a masked columnc                    t          j        | j        j                   sJ t          j        | j        j                  sJ t          j        | j        j                   sJ t          j        | j        j        | j        k              sJ d| j        j        d<   t          j        | j        j        | j        k              rJ dS )z@Check that mask gets set properly and that it is a copy, not refTr   N)r+   rR   r   r   r   r   r"   r-   r<   s    r1   test_set_mask_and_not_refz.TestMaskedColumnInit.test_set_mask_and_not_ref   s    vtv{l#####vdfk"""""vtv{l#####vdfkT[011111A6$&+45555555r3   c                 t    g d}t          dg d|          }t          j        |j        |k              sJ dS )zSet mask from a listr!   r   r   r   N)r   r+   rR   r   )r/   	mask_listr   s      r1   test_set_mask_from_listz,TestMaskedColumnInit.test_set_mask_from_list   sH    (((	c				BBBvaf	)*******r3   c                 z    g d}t          d| j        |          }t          j        |j        |k              sJ dS )zOverride existing mask valuesr!   r   r   N)r   r   r+   rR   r   )r/   r   r   s      r1   test_override_existing_maskz0TestMaskedColumnInit.test_override_existing_mask   sF    (((	cY???vaf	)*******r3   c                     ddg}t          j        t          j                  5  t	          dd|           ddd           dS # 1 swxY w Y   dS )z.Incomplete mask specification raises MaskErrorFTr   r   )r   lengthr   N)pytestraisesma	MaskErrorr   )r/   r   s     r1   test_incomplete_mask_specz.TestMaskedColumnInit.test_incomplete_mask_spec   s    DM	]2<(( 	= 	=c!)<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   AA
AN)r4   r5   r6   r`   r   r   r   r   r7   r3   r1   r   r      sV        ++6 6 6+ + ++ + += = = = =r3   r   c                   >   e Zd ZdZej                            dd          ej                            dd          d                         Zej                            dd          ej                            dd          d                         Zd Z	d	 Z
d
 Zd ZdS )TestTableInitzInitializing a tabletype_str)?r   i2f4c8SUOshape))r   )r   r   )r   r   r   c                 p   t          t          d                    }t          j        ||                              |          }|                                }t          |g|g          }|d         }|j        |j        k    sJ t          j        ||k              sJ t          |          t          u sJ t          |          dk    rt          j        j        |d<   nNt          |          dk    rt          j        j        |d         d<   n t          j        j        |d         d         d<   t          d |D                       }t          |g|g          }|d         }|j        |j        k    sJ t          j        ||k              sJ |j        |         sJ t          |          t           u sJ dS )	zyTest init from list or list of lists with dtype specified, optionally
        including an np.ma.masked element.
        r   r*   col0r   rr   r   c              3      K   | ]}d V  dS rr   Nr7   .0_s     r1   	<genexpr>zKTestTableInit.test_init_from_sequence_data_numeric_typed.<locals>.<genexpr>   "      ++++++++r3   N)listranger+   r,   reshapetolistr   r*   rR   typer   lenr   r$   tupler   r   )	r/   r   r   r   np_datanp_data_listr.   collast_idxs	            r1   *test_init_from_sequence_data_numeric_typedz8TestTableInit.test_init_from_sequence_data_numeric_typed   s    E!HH~~(4x00088??~~''<.
333iyGM))))vcWn%%%%%CyyF"""" u::??!u|LZZ1__#%5<LR  ')u|LR $++U+++++<.
333iyGM))))vcWn%%%%%x!!!!CyyL((((((r3   c                    t          t          d                    }t          j        ||                              |          }|                                }t          |g          }|d         j        }t          |          dk    rt          j	        j
        |d<   nNt          |          dk    rt          j	        j
        |d         d<   n t          j	        j
        |d         d         d<   t          d |D                       }t          |g          }|d         }	|	j        |k    sJ t          j        |	|k              sJ |	j        |         sJ t          |	          t          u sJ dS )	z}Test init from list or list of lists with dtype NOT specified,
        optionally including an np.ma.masked element.
        r   r   r   r   rr   r   c              3      K   | ]}d V  dS r   r7   r   s     r1   r   zMTestTableInit.test_init_from_sequence_data_numeric_untyped.<locals>.<genexpr>   r   r3   N)r   r   r+   r,   r   r   r   r*   r   r   r$   r   rR   r   r   r   )
r/   r   r   r   r   r   r.   dtype_expectedr   r   s
             r1   ,test_init_from_sequence_data_numeric_untypedz:TestTableInit.test_init_from_sequence_data_numeric_untyped   sR    E!HH~~(4x00088??~~''<.!!6 u::??!u|LZZ1__#%5<LR  ')u|LR $++U+++++<.!!i yN****vcWn%%%%%x!!!!CyyL((((((r3   c           	         t          | j        | j        | j        | j        | j        | j        g          j        g dk    sJ fdD             }t          |          }j        D ]}|         j        ||         j        k    sJ t          j
        |         ||         k              dt          j        j        fv sJ t          j
        t          |         dd          t          ||         dd          k              sJ d S )N)r   r   r   r"   r%   r'   c                 8    g | ]fd j         D             S )c                 "    i | ]}||         S r7   r7   )r   krows     r1   
<dictcomp>zQTestTableInit.test_initialization_with_all_columns.<locals>.<listcomp>.<dictcomp>  s    000qCF000r3   )colnames)r   r   t1s    @r1   
<listcomp>zFTestTableInit.test_initialization_with_all_columns.<locals>.<listcomp>  s1    ???S0000BK000???r3   Tr   F)r   r   r   r   r"   r%   r'   r   r*   r+   rR   r   r$   getattr)r/   lofdt2r   r   s       @r1   $test_initialization_with_all_columnsz2TestTableInit.test_initialization_with_all_columns  s   DFDFDFDFDGTWEFF{>>>>>>> @???B???4[[ 	 	Aa5;"Q%+----6"Q%2a5.))dBEL-AAAAA61vu--A1N1NN     	 	r3   c                     t          | j        | j        g          }|j        du sJ t          | j        g          }|j        du sJ t          | j        t	          j        g d          g          }|j        du sJ dS )z9Masking is always False if initial masked arg is not TrueFr   N)r   r%   r   r$   r   r,   r/   r.   s     r1   &test_mask_false_if_input_mask_not_truez4TestTableInit.test_mask_false_if_input_mask_not_true  s    47DF#$$x5    47)x5    47BHYYY//011x5      r3   c                     t          ddggd          }t          |d          }t          |d          }|j        rJ |j        sJ |j        rJ dS )z:Masking not true if not (requested or input requires mask)r   r   Fr#   TN)r   r$   )r/   t0r   r   s       r1   "test_mask_false_if_no_input_maskedz0TestTableInit.test_mask_false_if_no_input_masked  sn    QF8E***2d###2e$$$9y9r3   c                 R   | j         }t          j        |j        d         t          j        g d          k              sJ t          j        |j        d         t          j        g d          k              sJ t          j        g d          |j        d<   t          j        |d         j        t          j        g d          k              sJ t          | j        gd          }|j        J dD ]3}||_        d	D ]'}t          j        ||         j        |k              sJ (4d S )
Nr   )FFFr   )TTTr!   Fr#   )TFrA   )r.   r+   rR   r   r,   r   r%   )r/   r.   r   r   r   s        r1   test_mask_propertyz TestTableInit.test_mask_property&  s4   FvafSkRX.C.C.C%D%DDEEEEEvafSkRX.@.@.@%A%AABBBBBh33344svafkRX.B.B.B%C%CCDDDDDDG9U+++w! 	4 	4DAF" 4 4vagld23333334	4 	4r3   N)r4   r5   r6   r`   r   markparametrizer   r   r   r   r   r   r7   r3   r1   r   r      s        [Z)TUU[W&?@@) ) A@ VU)< [Z)TUU[W&?@@) ) A@ VU)8  ! ! !  4 4 4 4 4r3   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestAddColumnc                 @   t          d          }|j        sJ |                    t          dg dg d                     |j        sJ |                    t          dg dg d	                     |j        sJ t	          |d         t                    sJ t	          |d         t                    sJ t          j        |d         t          j        g d          k              sJ t          j        |d         j        t          j        g dt                    k              sJ t          j        |d         t          j        g d          k              sJ t          j        |d         j        t          j        g d	t                    k              sJ d S )
NTr#   r   r   r   r   r   r   r   r   r   r   r   )
r   r$   
add_columnr   rS   r+   rR   r,   r   boolr   s     r1   &test_add_masked_column_to_masked_tablez4TestAddColumn.test_add_masked_column_to_masked_table9  s{   x	\sKKKLLLx	\sKKKLLLx!C&,/////!C&,/////vaf 3 3344444vafkRXiii%>%>>?????vaf 3 3344444vafkRXiii%>%>>???????r3   c                    t          d          }|j        rJ |                    t          dg d                     |j        rJ |                    t	          dg dg d	                     |j        rJ t          |d         t                    sJ t          |d         t                    sJ t          j        |d         t          j        g d          k              sJ t          |d         d
          rJ t          j        |d         t          j        g d          k              sJ t          j        |d         j
        t          j        g dt                    k              sJ d S )NFr#   r   r   r&   r   r   r   r   r   )r   r$   r   r   r   rS   r+   rR   r,   hasattrr   r   r   s     r1   *test_add_masked_column_to_non_masked_tablez8TestAddColumn.test_add_masked_column_to_non_masked_tableG  sg   8	V9995556668	\sKKKLLL8!C&&)))))!C&,/////vaf 3 33444441S66*****vaf 3 3344444vafkRXiii%>%>>???????r3   c                 :   t          d          }|j        sJ |                    t          dg d                     |j        sJ |                    t	          dg dg d	                     |j        sJ t          |d         t                    sJ t          |d         t                    sJ t          j        |d         t          j        g d          k              sJ t          j        |d         j	        t          j        g d
t                    k              sJ t          j        |d         t          j        g d          k              sJ t          j        |d         j	        t          j        g dt                    k              sJ d S )NTr#   r   r   r&   r   r   r   r   r   r   r   )r   r$   r   r   r   rS   r+   rR   r,   r   r   r   s     r1   *test_add_non_masked_column_to_masked_tablez8TestAddColumn.test_add_non_masked_column_to_masked_tableU  su   x	V999555666x	\sKKKLLLx!C&,/////!C&,/////vaf 3 3344444vafkRXiii%>%>>?????vaf 3 3344444vafkRXiii%>%>>???????r3   c                    t          d          }|j        rJ |                    t          dg d                     |j        rJ |                    t	          dg dg d	                     |j        rJ t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ d S )
NFr#   r   r   r&   r   r   r   r   )r   r$   r   r   r   r+   rR   r,   r   s     r1   .test_convert_to_masked_table_only_if_necessaryz<TestAddColumn.test_convert_to_masked_table_only_if_necessaryc  s     8	V9995556668	\sKKKLLL8vaf 3 3344444vaf 3 334444444r3   N)r4   r5   r6   r   r   r   r   r7   r3   r1   r   r   8  sY        @ @ @@ @ @@ @ @
5 
5 
5 
5 
5r3   r   c                       e Zd Zd ZdS )TestRenameColumnc                    t          d          }|                    t          dg dg d                     d|d         _        |                    dd           |j        sJ t          j        |d         t          j        g d          k              sJ t          j        |d         j	        t          j        g dt                    k              sJ |d         j        dk    sJ |j        dgk    sJ d S )	NTr#   r   r   r   r   *   r   )r   r   r   r   rename_columnr$   r+   rR   r,   r   r   r   r   s     r1   test_rename_masked_columnz*TestRenameColumn.test_rename_masked_columnq  s    	\sKKKLLL#	S!!!xvaf 3 3344444vafkRXiii%>%>>?????v B&&&&zcU""""""r3   N)r4   r5   r6   r   r7   r3   r1   r   r   p  s#        	# 	# 	# 	# 	#r3   r   c                       e Zd Zd ZdS )TestRemoveColumnc                 H   t          d          }|                    t          dg dg d                     d|d         _        |                    t          dg d	g d
                     |                    d           |j        sJ t          j        |d         t          j        g d          k              sJ t          j        |d         j	        t          j        g dt                    k              sJ |d         j        dk    sJ |j        dgk    sJ d S )NTr#   r   r   r   r   r   r   r   r   )r   r   r   r   remove_columnr$   r+   rR   r,   r   r   r   r   s     r1   test_remove_masked_columnz*TestRemoveColumn.test_remove_masked_column~  s   	\sKKKLLL#	\sKKKLLL	xvaf 3 3344444vafkRXiii%>%>>?????v B&&&&zcU""""""r3   N)r4   r5   r6   r   r7   r3   r1   r   r   }  s#        
# 
# 
# 
# 
#r3   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestAddRowc                 T   t          d          }|                    t          ddgdg                     |                    t          ddgdg                     |                    d	d
gddg           |                    ddgddg           |j        sJ t          j        t          j        |d                   t          j        g d          k              sJ t          j        |d         j        t          j        g dt                    k              sJ t          j        t          j        |d                   t          j        g d          k              sJ t          j        |d         j        t          j        g dt                    k              sJ d S )NTr#   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   
r   r   r   add_rowr$   r+   rR   r,   r   r   r   s     r1   ,test_add_masked_row_to_masked_table_iterablez7TestAddRow.test_add_masked_row_to_masked_table_iterable  sy   	\s!A3???@@@	\s!A3???@@@			1a&1v	&&&			1a&1v	&&&xvbhqv&&"(999*=*==>>>>>vafkRXiii%>%>>?????vbhqv&&"(999*=*==>>>>>vafkRXiii%>%>>???????r3   c                 \   t          d          }|                    t          ddgdg                     |                    t          ddgdg                     |                    d	d
dddd           |                    dddddd           |j        sJ t          j        t          j        |d                   t          j        g d          k              sJ t          j        |d         j        t          j        g dt                    k              sJ t          j        t          j        |d                   t          j        g d          k              sJ t          j        |d         j        t          j        g dt                    k              sJ d S )NTr#   r   r   r   r   r   r   r   r   r   r   rA   r   r   r   r   r   r   r   r   r   s     r1   ,test_add_masked_row_to_masked_table_mapping1z7TestAddRow.test_add_masked_row_to_masked_table_mapping1  s   	\s!A3???@@@	\s!A3???@@@			""qq)9)9	:::			""qq)9)9	:::xvbhqv&&"(999*=*==>>>>>vafkRXiii%>%>>?????vbhqv&&"(999*=*==>>>>>vafkRXiii%>%>>???????r3   c                    t          d          }|                    t          ddgdg                     |                    t          ddgdg                     |                    dd	iddi
           |                    ddiddi
           |j        sJ |d         d         dk    r|d         d         dk    sJ t          j        |d         j        t          j        g dt                    k              sJ |d         d         d	k    sJ t          j        |d         j        t          j        g dt                    k              sJ d S )NTr#   r   r   r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r$   r+   rR   r   r,   r   r   s     r1   ,test_add_masked_row_to_masked_table_mapping2z7TestAddRow.test_add_masked_row_to_masked_table_mapping2  sG    	\s!A3???@@@	\s!A3???@@@			3(#q	***			3(#q	***xvayA~~!C&)q....vafkRXiii%>%>>?????vayA~~~~vafkRXiii%>%>>???????r3   c                    t          d          }|                    t          ddgdg                     |                    t          ddgdg                     |                    dd	i           |                    dd
i           |j        sJ |d         d         dk    r|d         d         d
k    sJ t          j        |d         j        t          j        g dt                    k              sJ |d         d         d	k    sJ t          j        |d         j        t          j        g dt                    k              sJ d S )NTr#   r   r   r   r   r   r   r   r   r   r   r   r   r   s     r1   ,test_add_masked_row_to_masked_table_mapping3z7TestAddRow.test_add_masked_row_to_masked_table_mapping3  s7    	\s!A3???@@@	\s!A3???@@@			3(			3(xvayA~~!C&)q....vafkRXiii%>%>>?????vayA~~~~vafkRXiii%>%>>???????r3   c                    t          d          }|                    t          ddgdg                     |                    t          ddgdg                     t          j        t
                    5 }|                    dd	iddi
           d d d            n# 1 swxY w Y   |j        j        d         dk    sJ d S )NTr#   r   r   r   r   r   r   r   r   z&keys in mask should match keys in vals)	r   r   r   r   r   
ValueErrorr   valueargsr/   r.   excs      r1   ,test_add_masked_row_to_masked_table_mapping4z7TestAddRow.test_add_masked_row_to_masked_table_mapping4  s     	\s!A3???@@@	\s!A3???@@@]:&& 	2#IIsAhc4[I111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2y~a $LLLLLLLs   8B  B$'B$c                 V   t          d          }|                    t          ddgdg                     |                    t          ddgdg                     t          j        t
                    5 }|                    d	d
gddd           d d d            n# 1 swxY w Y   |j        j        d         dk    sJ t          j        t
                    5 }|                    d
d	dddg           d d d            n# 1 swxY w Y   |j        j        d         dk    sJ d S )NTr#   r   r   r   r   r   r   r   r   rA   r   z&Mismatch between type of vals and maskr   )	r   r   r   r   r   	TypeErrorr   r   r   r   s      r1   ,test_add_masked_row_to_masked_table_mismatchz7TestAddRow.test_add_masked_row_to_masked_table_mismatch  s   	\s!A3???@@@	\s!A3???@@@]9%% 	5IIq!f#3#3I444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5y~a $LLLLL]9%% 	5IIAA&&aVI444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5y~a $LLLLLLLs$   8B!!B%(B%DD
D
c                 |   t          d          }dg|d<   dg|d<   t          dgd          |d	<   t          d
d          }|j        rJ |                    d
d|g           |j        rJ |                    dd|gg d           |j        rJ t	          |d                   t
          u sJ t	          |d                   t          u sJ t	          |d	                   t          u sJ t          j        |d         g dk              sJ t          j        |d         j	        g dk              sJ t          j        |d         j
        g dk              sJ t          j        |d	         d d
         t          dd
gd          k              sJ t          j        |d	         j
        g dk              sJ d S )NFr#   r   r   r   r   cxcsecformatr   r   r   r   r   )r   r   r   r   r   r   )FFT)r   r   r$   r   r   r   r   r+   rR   r   r   )r/   r.   tms      r1   0test_add_masked_row_to_non_masked_table_iterablez;TestAddRow.test_add_masked_row_to_non_masked_table_iterable  s   ##qc(+++#!H%%%8			1a*8			1a*999	---8AcF||v%%%%AcF|||++++AcF||t####vaf			)*****vafkYYY./////vafk%9%9%99:::::vafRaRjD!Q$A$A$AABBBBBvafk%9%9%99:::::::r3   c                    t                      }ddgt          j        z  |d<   |                    dt          j        z  f           t	          j        t                    5 }|                    dt          j        z  fd           d d d            n# 1 swxY w Y   |j        j        d         	                                dd	gk    sJ d S )
Nr   r   r   r   )Tr   r   z8Unable to insert row because of exception in column 'a':zFmask was supplied for column 'a' but it does not support masked values)
r   umr   r   r   r   r   r   
splitlinesr   s      r1   0test_add_row_cannot_mask_column_raises_typeerrorz;TestAddRow.test_add_row_cannot_mask_column_raises_typeerror  s    HHQ!##			1qs7*]:&& 	0#IIq13wjwI///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0y~a ++--FT2
 
 
 
 
 
 
s   &BBBN)r4   r5   r6   r   r   r   r   r   r   r  r	  r7   r3   r1   r   r     s        
@ 
@ 
@
@ 
@ 
@@ @ @@ @ @M M M	M 	M 	M; ; ;.	
 	
 	
 	
 	
r3   r   c                  \   t          j        g d          } | t          dd          fD ]}t          d          }t	          g d          |d<   t          g d| 	          |d
<   t          g dg d	          |d<   |d         |         |d
         |<   |d
         d         |d         d
         k    sJ |d
         d         t           j        j        u sJ |d
         d         dk    sJ |d
         d         dk    sJ |d
         d         dk    sJ t          j        |d
         j	        |j	        d
         k              sJ |j	        
                                }t          j        t          |                    |d<   t          j        |j	        d
         |d
         k              sJ dS )zTest issue in #2997)TTFFr   r   Tr#   )r   r   r   r   r   )      !   ,   r   r   )o      iM  i  )TFTFr   r   r  r  r   r  r"   N)r+   r,   slicer   r   r   r   r$   rR   r   rt   aranger   )mask_bselectr.   mask_before_adds       r1   test_setting_from_masked_columnr    s   X00011F5A;;' ; ;%%#...V<<<#2229S9S9STTT#3#vvayAaDI%%%%vayBEL((((vayCvayBvayBvcFK16#;&
 
 	
 	
 	
 &++--3q66""#vafSk_S%99::::::%; ;r3   c                     t          ddgid          } | d                             d           t          | dgt          j        g          }t	          |d         j        t          j                  sJ t          dg          }|                    d           t          |t          j                  }t	          |j        t          j                  sJ dS )	zU
    Test that masked column fill_value is coerced into the correct column type.
    r   rJ   Tr#   0)r^   r*   r   N)r   set_fill_valuer+   int32rS   r   r   )r.   r   r   c2s       r1   test_coercing_fill_value_typer    s    
 	sSEl4(((AcF#	qbhZ	0	0	0Bbg("(33333 	cUAS	arx	(	(	(BbmRX.......r3   c                      t          ddgddg          } t          | d          }d|j        d<   t          j        | j        ddgk              sJ t          j        |j        ddgk              sJ dS )	z@Test that the mask is copied when copying a table (issue #7362).r   r   FTr   )rt   r   N)r   r   r+   rR   )r   r  s     r1   test_mask_copyr  "  s     	aV5$-000A	ad	#	#	#BBGAJ6!&UDM)*****6"'dD\)*******r3   c                     t                      } t          ddgd          | d<   ddg| d<   d	d
gt          j        z  | d<   |                                 }t          |t          j                  rt          |t          j        j	                  rJ t          j        j
        | d         d<   |                                 }t          |t          j        j	                  sJ t          j        |d         j        ddgk              sJ t          j        |d         d         j        d          sJ t          j        |d         j                  rJ t          j        |d         j                  rJ | j        }t          j        |d         ddgk              sJ t          j        |d                   rJ t          j        |d                   rJ dS )zGTest that as_array() and Table.mask attr work with masked mixin columnsr   r   r   r  r   r   r   r   r   r   r   FTr   r(   N)r   r   r  r  as_arrayrS   r+   ndarrayr   MaskedArrayr$   rR   r   iscloser   any)r.   tar  s      r1   test_masked_as_array_with_mixinr&  ,  s   A1a&***AcFVAcFVac\AcF 
Bb"*%%OjRU=N.O.OOOO AcF1I	
Bb"%+,,,,,6"S',5$-/00000:bgaj'-----vbgl#####vbgl##### 
B6"S'eT]*+++++vbgvbgr3   c                  ,   t          t          j                  } t                      }t	          ddg          |d<   t          |d         t                    sJ t	          ddgt          j                  |d<   t          |d         |           sJ t          j        |d         j	                  rJ t	          ddgt          j        ddg          |d	<   t          |d	         |           sJ t          j
        |d	         j	        ddgk              sJ d
S )zOTest that adding a MaskedColumn with a unit to QTable creates a MaskedQuantity.r   r   r   unitr   TFr)  r   r   N)r	   r  Quantityr   r   rS   r  r+   r$  r   rR   MaskedQuantityr.   s     r1   &test_masked_column_with_unit_in_qtabler.  G  s   AJ''NA1a&!!AcFafl+++++1a&qs+++AcFafn-----vafk"""""1a&qs$???AcFafn-----6!C&+$.///////r3   c                     t          t          j                  } t                      } | ddgt          j                  |d<   t          |d         t                    sJ t          j        |d         j	                  rJ  | ddgt          j        ddg          |d<   t          |d         t                    sJ t          j
        |d         j	        ddgk              sJ d S )	Nr   r   r(  r   TFr*  r   )r	   r  r+  r   r  rS   r   r+   r$  r   rR   r,  s     r1   test_masked_quantity_in_tabler0  X  s    AJ''NA^QF---AcFafl+++++vafk"""""^QFD%=AAAAcFafl+++++6!C&+$.///////r3   c                      t          ddgddg          } | j        }t          |          t          j        j        u sJ t          |j                  t          j        u sJ d S )Nr   r   FTr   )r   r   r   r+   r   r"  r!  )r   c_datas     r1   7test_masked_column_data_attribute_is_plain_masked_arrayr3  d  sb    aV5$-000AVF<<25,,,,,
******r3   c                      G fddt                      G fddt          t                    }  | ddgddg	          }j        dk    sJ |d
d
         }j        dk    sJ t	          |           j        dk    sJ d
S )z[Check that we don't finalize MaskedColumn too often.

    Regression test for gh-6721.
    c                   &     e Zd ZdZ fdZ xZS )<test_mask_slicing_count_array_finalize.<locals>.MyBaseColumnr   c                 j    t                                          |           xj        dz  c_        d S )Nr   )super__array_finalize__counter)r/   objMyBaseColumn	__class__s     r1   r9  zOtest_mask_slicing_count_array_finalize.<locals>.MyBaseColumn.__array_finalize__v  s5    GG&&s+++  A%    r3   )r4   r5   r6   r:  r9  __classcell__r=  r<  s   @r1   r<  r6  s  sC        	& 	& 	& 	& 	& 	& 	& 	& 	& 	&r3   r<  c                   "     e Zd Z fdZ xZS )>test_mask_slicing_count_array_finalize.<locals>.MyMaskedColumnc                 P     t                      j        | g|R i |}|_        |S )N)r8  __new__
_baseclass)clsr   kwargsr/   r<  r=  s       r1   rC  zFtest_mask_slicing_count_array_finalize.<locals>.MyMaskedColumn.__new__}  s4    "577?3888888D*DOKr3   )r4   r5   r6   rC  r>  r?  s   @r1   MyMaskedColumnrA  |  s>        	 	 	 	 	 	 	 	 	 	r3   rG  r   r   FTr   N)r   r   r   r:  repr)rG  r   c0r<  s      @r1   &test_mask_slicing_count_array_finalizerJ  k  s    & & & & & & &z & & &      v|    	1vUDM222A1$$$$	
111B1$$$$HHH1$$$$$$r3   )&r`   numpyr+   numpy.mar   r   astropy.unitsunitsr  astropy.tabler   r   r   r   astropy.table.columnr   astropy.timer   astropy.utils.maskedr	   r   r9   r?   rb   r   r   r   r   r   r   r  r  r  r&  r.  r0  r3  rJ  r7   r3   r1   <module>rS     s   , ,                  = = = = = = = = = = = = + + + + + +       ' ' ' ' ' '
 
 
 
 
 
 
 
"
 
 
 
 
 
 
 
E E E E E E E EP0D 0D 0D 0D 0DI 0D 0D 0Df= = = = =9 = = =>p4 p4 p4 p4 p4I p4 p4 p4f55 55 55 55 55 55 55 55p
# 
# 
# 
# 
# 
# 
# 
## # # # # # # #k
 k
 k
 k
 k
 k
 k
 k
\; ; ;0/ / /"+ + +  60 0 0"	0 	0 	0+ + +"% "% "% "% "%r3   