
    IR-e                    t   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dlZd dlmZ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mZmZmZmZ d d
lm Z  d dl!m"Z"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- ddl.m/Z/m0Z0 ej1        d             Z2 G d d          Z3ej4        5                    d           G d de3                      Z6ej4        5                    d           G d d                      Z7ej4        5                    d           G d d                      Z8ej4        5                    d           G d d                      Z9ej4        5                    d           G d d                       Z:ej4        5                    d           G d! d"                      Z;ej4        5                    d           G d# d$e3                      Z<ej4        5                    d           G d% d&e3                      Z=ej4        5                    d           G d' d(e3                      Z>ej4        5                    d           G d) d*e3                      Z?ej4        5                    d           G d+ d,e3                      Z@ej4        5                    d           G d- d.e3                      ZAej4        5                    d           G d/ d0e3                      ZBej4        5                    d           G d1 d2e3                      ZCej4        5                    d           G d3 d4e3                      ZDej4        5                    d           G d5 d6e3                      ZEej4        5                    d           G d7 d8e3                      ZFej4        5                    d           G d9 d:                      ZGej4        H                    d;i d<d=id<d>ig          d?             ZIej4        5                    d           G d@ dA                      ZJej4        5                    d           G dB dC                      ZKej4        5                    d           G dD dE                      ZLddGZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTej4        jU        dO             ZV G dP dQe-          ZWdR ZXdS ZYej4        H                    dTdUdVg          dW             ZZdX Z[dY Z\dZ Z]ej4        ^                    e' d[\           G d] d^                      Z_ej4        5                    d           G d_ d`e3                      Z` G da db          Za G dc dd          Zb G de df          Zcdg Zddh Zedi Zfdj Zgdk Zhdl Zidm Zjdn Zkdo Zldp Zmdq Zndr Zods Zpdt Zqdu Zr G dv dwe          Zsdx Ztdy Zudz Zvd{ Zwd| Zxd} Zyd~ Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej4        H                    dddg          d             Zd ZdS )    N)OrderedDict)StringIO)assert_allcloseassert_array_equal)tableunits)SkyCoord)fits)ColumnMaskedColumnQTableTableTableAttributeTableReplaceWarning)!assert_follows_unicode_guidelines)Time	TimeDelta)NUMPY_LT_1_25)
HAS_PANDAS)get_pkg_data_filename)AstropyUserWarning)MetaBaseTest   )
MIXIN_COLSMaskedTablec                     |                      dt          |                     |                      dt          |                     dS )z
    Pytest fixture to run a test case with tilde-prefixed paths.

    In the tilde-path case, environment variables are temporarily
    modified so that '~' resolves to the temp directory.
    HOMEUSERPROFILEN)setenvstr)monkeypatchtmp_paths     >lib/python3.11/site-packages/astropy/table/tests/test_table.pyhome_is_tmpdirr%   '   sB     vs8}}---}c(mm44444    c                       e Zd Zd Zed             Zed             Zed             Zed             Zed             Z	ed             Z
dS )		SetupDatac                 6    |j         | _        |j        | _        d S N)r   _table_typer   _column_typeselftable_typess     r$   _setupzSetupData._setup6   s    &,'.r&   c                     | j         ;t          | d          s$|                      g ddddg di          | _        | j        S d S )N_ar         a%daar   r   r4   r5      nameformatmeta)r,   hasattrr2   r.   s    r$   r6   zSetupData.a:   s`    (4&& ++IICD///;R ,   7N )(r&   c                     | j         9t          | d          s"|                      g dddddi          | _        | j        S d S )N_br:         br7   r8   r   r;   r,   r?   rB   r@   s    r$   rF   zSetupData.bC   s[    (4&& ++IICD!9 ,   7N )(r&   c                 |    | j         4t          | d          s|                      g dd          | _        | j        S d S )N_c      	   cr,   r?   rI   r@   s    r$   rN   zSetupData.cL   G    (4&& <++IIIs;;7N )(r&   c                 |    | j         4t          | d          s|                      g dd          | _        | j        S d S )N_d)rK   rL   rK   dr,   r?   rR   r@   s    r$   rS   zSetupData.dS   rP   r&   c                     | j         6t          | d          s|                      g ddd          | _        | j        S d S )N_obj)r   stringr5   objOdtype)r,   r?   rV   r@   s    r$   rX   zSetupData.objZ   sQ    (4(( R --.>.>.>S-QQ	9 )(r&   c                     | j         =t          | d          s&|                      | j        | j        g          | _        | j        S d S N_t)r+   r?   r6   rF   r^   r@   s    r$   tzSetupData.ta   sJ    '4&& =**DFDF+;<<7N ('r&   N)__name__
__module____qualname__r0   propertyr6   rF   rN   rS   rX   r_    r&   r$   r(   r(   5   s        / / /   X   X   X   X   X   X  r&   r(   r/   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestSetTableColumnc                 l   |                      |           |                    | j        | j        g          }d|d<   |d         d         dk    sJ |d         d         dk    sJ |d         d         dk    sJ |d         d         d	k    sJ |d         d         d
k    sJ |d         d         dk    sJ dS )z Set a row from a tuple of values)      r   r6   r   rh   r4   r5   rF   r:   ri   rE   Nr0   r   r6   rF   r.   r/   r_   s      r$   test_set_rowzTestSetTableColumn.test_set_rowk   s    K   tvtv.//!vayA~~~~vayBvayA~~~~vayA~~~~vayBvayA~~~~~~r&   c                     |                      |           |                    | j        | j        g          }|d         |d<   |d         d         dk    sJ |d         d         dk    sJ dS )z#Set a row from another existing rowr   r   r4   rD   Nrj   rk   s      r$   test_set_row_existingz(TestSetTableColumn.test_set_row_existingw   sk    K   tvtv.//t!tAw!||||tAw!||||||r&   c                 L   |                      |           |                    | j        | j        g          }t	          j        t                    5  d|d<   ddd           n# 1 swxY w Y   t	          j        t                    5  d|d<   ddd           dS # 1 swxY w Y   dS )z:Set a row from an incorrectly-sized or typed set of values)rh   ri      r   Nr   r0   r   r6   rF   pytestraises
ValueErrorrk   s      r$   test_set_row_fail_1z&TestSetTableColumn.test_set_row_fail_1   s   K   tvtv.//]:&& 	  	 AaD	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:&& 	 	AaD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   A""A&)A&BB Bc                     |                      |           |                    | j        | j        g          }t	          j        t                    5  d|d<   ddd           dS # 1 swxY w Y   dS )z3Set a row from an incorrectly-typed tuple of values)abcdefr   Nrq   rk   s      r$   test_set_row_fail_2z&TestSetTableColumn.test_set_row_fail_2   s    K   tvtv.//]:&& 	" 	"!AaD	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   A##A'*A'c                     |                      |           |                                }| j        |d<   t          j        |d         | j        k              sJ |j        dgk    sJ dS )z?Create a new column in empty table using the item access syntaxr8   N)r0   r   r6   npallcolnamesrk   s      r$   test_set_new_col_new_tablez-TestSetTableColumn.test_set_new_col_new_table   sl    K   &$vag'(((((zdV######r&   c                    |                      |           |                                }t          j        g d          t          j        z  |d<   t          j        |d         t          j        g d          k              sJ |d         j        t          j        k    sJ dt          j        z  |d<   t          j        |d         dk              sJ |d         j        t          j        k    sJ dS )zQCreate a new column (from a quantity) in empty table using the item access syntaxr3   r8   r5   bbN)r0   r   r{   arrayumr|   unitrk   s      r$   #test_set_new_col_new_table_quantityz6TestSetTableColumn.test_set_new_col_new_table_quantity   s    K   (999%%+$vag)))!4!4455555w|qs""""ac'$vagl#####w|qs""""""r&   c                    |                      |           |                    | j        g          }| j        |d<   t	          j        |d         | j        k              sJ |j        ddgk    sJ |d         j        | j        j        k    sJ |d         j        | j        j        k    sJ |d         |d<   t	          j        |d         |d         k              sJ |j        g dk    sJ |d         j        |d         j        k    sJ |d         j        |d         j        k    sJ |	                    t	          j
        d                              ddd                    |d<   |d         j        d	k    sJ |d         d
         dk    sJ g d|d<   t	          j        |d         t	          j        g d          k              sJ g d|d<   t	          j        |d         t	          j        g d          k              sJ d|d<   t	          j        |d         dk              sJ t	          j        g d          t          j        z  |d<   t	          j        |d         j        t	          j        g d          k              sJ |d         j        t          j        k    sJ dt          j        z  |d<   t	          j        |d         j        dk              sJ |d         j        t          j        k    sJ dS )ECreate a new column in an existing table using the item access syntaxr   r6   rN   )r6   r   rN      r5   r4   rS   )r5   r4   r4   )r   r   r   r   )hellotheworlde)r   r   r   
   fr3   gN)r0   r   r6   rF   r{   r|   r}   r>   r=   r   arangereshapeshaper   r   r   datar   rk   s      r$   test_set_new_col_existing_tablez2TestSetTableColumn.test_set_new_col_existing_table   s   K   tvh'' &$vag'(((((zc4[((((w|tv{****w~.... 3#vaf#&'''''z-------v{afk))))v}#---- ##BIbMM$9$9!Q$B$BCC#v|y((((vg!#### +**#vaf)B)B)B C CCDDDDD +**#vaf)B)B)B C CCDDDDD #vafl##### )))$$qs*#vafkRXiii%8%8899999v{ac!!!! QS#vafkQ&'''''v{ac!!!!!!r&   c                     |                      |           |                    | j        g          }t          j        dg d          }||d<   t          j        |d         |k              sJ dS r   rF   r3   r<   r   N)r0   r   r6   r   r   r{   r|   r.   r/   r_   rF   s       r$   (test_set_new_unmasked_col_existing_tablez;TestSetTableColumn.test_set_new_unmasked_col_existing_table   sp    K   tvh''Lc			222#vafk"""""""r&   c                     |                      |           |                    | j        g          }t          j        dg d          }||d<   t          j        |d         |k              sJ dS r   )r0   r   r6   r   r   r{   r|   r   s       r$   &test_set_new_masked_col_existing_tablez9TestSetTableColumn.test_set_new_masked_col_existing_table   sq    K   tvh''Ciii888#vafk"""""""r&   c                     |                      |           |                    | j        g          }t          j        t
                    5  ddg|d<   ddd           dS # 1 swxY w Y   dS )zHGenerate failure when creating a new column using the item access syntaxr   r4   rF   N)r0   r   r6   rr   rs   rt   rk   s      r$   $test_set_new_col_existing_table_failz7TestSetTableColumn.test_set_new_col_existing_table_fail   s    K   tvh'']:&& 	 	VAcF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
AA#&A#N)r`   ra   rb   rl   rn   ru   ry   r~   r   r   r   r   r   rd   r&   r$   rf   rf   i   s        
 
 
    " " "$ $ $# # #," ," ,"\# # ## # #    r&   rf   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestEmptyDatac                     |                                 }|                    |                    dt          d                     t	          |d                   dk    sJ d S )Nr6   d   )r<   r[   lengthr   
add_columnr   intlenrk   s      r$   test_1zTestEmptyData.test_1   s[    	[''SC'HHIII1S6{{c!!!!!!r&   c                     |                                 }|                    |                    dt          dd                     t	          |d                   dk    sJ d S )Nr6   )r5   r   r<   r[   r   r   r   rk   s      r$   test_2zTestEmptyData.test_2   s^    	[''S4PS'TTUUU1S6{{c!!!!!!r&   c                     |                                 }|                    |                    dt                               t	          |d                   dk    sJ d S )Nr6   r<   r[   r   r   rk   s      r$   test_3zTestEmptyData.test_3   sY    	[''S'<<===1S6{{ar&   c                     |                                 }|                    |                    dt          d                     t	          |d                   dk    sJ d S )Nr6   r5   r:   )r<   r[   r   r   r   rk   s      r$   test_4zTestEmptyData.test_4   s[    	[''S6'JJKKK1S6{{ar&   c                     |                                 }|                    |                    d                     t          |d                   dk    sJ d S )Nr6   r<   r   )r   r   r   r   rk   s      r$   test_5zTestEmptyData.test_5  sW    	[''S'112221S6{{ar&   c                     |                                 }t          j        t          d          5  |                    d           ddd           dS # 1 swxY w Y   dS )zTest related to #3811 where setting empty tables to scalar values
        should raise an error instead of having an error raised when accessing
        the table.z2Empty table cannot have column set to scalar valuematchr   N)r   rr   rs   	TypeErrorr   rk   s      r$   test_scalarzTestEmptyData.test_scalar  s     ]Q
 
 
 	 	 LLOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     |                                 }|                    g d          |d<   |dd         }|j        |j        k    sJ dS )zTest related to #3023 where a MaskedColumn is created with name=None
        and then gets changed to name='a'.  After PR #2790 this test fails
        without the #3023 fix.r3   r6   N)r   r   r}   r.   r/   r_   t2s       r$   test_add_via_setitem_and_slicez,TestEmptyData.test_add_via_setitem_and_slice  sX     ##III..#qqqT{aj((((((r&   N)
r`   ra   rb   r   r   r   r   r   r   r   rd   r&   r$   r   r      s}        " " "
" " "
     
     
     
  ) ) ) ) )r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestNewFromColumnsc                    |                     dg d          |                     dg dt          j                  g}|                    |          }t          j        |d         j        t          j        g d          k              sJ t          j        |d         j        t          j        g dt          j                  k              sJ t          |d         d                   t          j        u sJ d S )	Nr6   r3   r   rF   rC   r<   r   r[   rZ   r   )r   r{   float32r   r|   r   r   typer.   r/   colsr_   s       r$   test_simplezTestNewFromColumns.test_simple  s    Ciii88CiiirzJJ
 d##vafkRXiii%8%8899999vafkRXiiirz%J%J%JJKKKKKAcF1I"*,,,,,,r&   c                    |                     dt          j        g dt          j                  t          j                  |                     dt          j        g dt          j                            g}|                    |          }t          j        |d         t          j        g dt          j                  k              sJ t          j        |d         t          j        g dt          j                  k              sJ t          |d         d                   t          j        u sJ t          |d         d                   t          j        u sJ d S )	Nr6   r3   rZ   r   rF   rC   r   r   )	r   r{   r   int64float64r   r   r|   r   r   s       r$   test_from_np_arrayz%TestNewFromColumns.test_from_np_array'  s1   rx			BBB"*    Cbhyyy
.S.S.STT	
 d##vaf"* E E EEFFFFFvaf"* E E EEFFFFFAcF1I"*,,,,AcF1I"*,,,,,,r&   c                     |                     dg d          |                     dg d          g}t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr6   r3   r   rF   r:   rD   rE   rK   )r   rr   rs   rt   r   )r.   r/   r   s      r$   test_size_mismatchz%TestNewFromColumns.test_size_mismatch4  s    Ciii88Clll;;
 ]:&& 	$ 	$d###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   A//A36A3c                    |                     ddgd          }|                     ddg          }|                    ||gd	          }|j        dd
gk    sJ |                    ||g          }|j        ddgk    sJ dS )zHColumn with name=None can init a table whether or not names are suppliedr   r4   rN   )r   r<   r5   r:   )r   NrS   namesrS   col1N)r   r   r}   )r.   r/   rN   rS   r_   s        r$   test_name_nonez!TestNewFromColumns.test_name_none<  s    QF55QF++q!fK88zc3Z''''q!f%%zc6]******r&   N)r`   ra   rb   r   r   r   r   rd   r&   r$   r   r     sP        - - -- - -$ $ $+ + + + +r&   r   c                        e Zd Zd Zd Zd ZdS )TestReversec                 *   |                     g dg dg          }|                                 t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                     |d          }t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                     |d	          }t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                    d           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ d S )
Nr3   )r6   rF   cccol0r5   r4   r   r   )r   rF   r6   FcopyT)r   reverser{   r|   r   sortr   s       r$   test_reversezTestReverse.test_reverseH  s   		   
 
 	
		vai28III#6#6677777vai28,<,<,<#=#==>>>>>qu--vbjBHYYY$7$7788888vbjBH-=-=-=$>$>>?????qt,,vbjBHYYY$7$7788888vbjBH-=-=-=$>$>>?????
vbjBHYYY$7$7788888vbjBH-=-=-=$>$>>???????r&   c                 6   t          j        d          }|dz   }|                    ||gd          }|                                 t          j        |d         |d d d         k              sJ t          j        |d         |d d d         k              sJ d S )N'  r   xyr   r   r   )r{   r   r   r   r|   )r.   r/   r   r   r_   s        r$   test_reverse_bigzTestReverse.test_reverse_big_  s    IeEq!fJ77			vaf$$B$'(((((vaf$$B$'(((((((r&   c                 :   t          ddgddgd          }t          ddg|gddg	          }|                                 t          j        |d         ddgk              sJ t          j        |d         j                            d          ddg          sJ d
S )z?Test reverse for a mixin with no item assignment, fix for #9836r   r4   r5   r:   degr   r6   scr   N)r
   r   r   r{   r|   allcloserato_value)r.   r   r_   s      r$   test_reverse_mixinzTestReverse.test_reverse_mixing  s    q!fq!f5111Aq62,sDk222			vafA&'''''{1T7:..u551v>>>>>>>r&   N)r`   ra   rb   r   r   r   rd   r&   r$   r   r   F  sD        @ @ @.) ) )? ? ? ? ?r&   r   c                   &    e Zd Zd Zd Zd Zd ZdS )	TestRoundc                 6   |                     g dg dg dg          }|                                 t          j        |d         g dk              sJ t          j        |d         g dk              sJ t          j        |d         g dk              sJ d S )	Nr6   rF   rN   )g(\?gffffff@      @gl?g<,Ԛ@h|?5@r   r         ?       @r   col2)r   r         @r   roundr{   r|   rk   s      r$   test_round_intzTestRound.test_round_intr  s       )))
 
 	
			vai???233333vai???233333vai???23333333r&   c                 >   |                     g dg dg dg          }|                    ddd           t          j        |d         g dk              sJ t          j        |d         g d	k              sJ t          j        |d
         g dk              sJ d S )Nr   )      ?      @gǘ@r   r   r5   )r   r   r   r   )r   r   r   r   )g+?gCl@r   r   rk   s      r$   test_round_dictzTestRound.test_round_dict  s    """)))
 
 	
A&&'''vai???233333vai???233333vai#8#8#889999999r&   c                     |                     g dg          }t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr3   z,'decimals' argument must be an int or a dictr   g      ?)r   rr   rs   rt   r   rk   s      r$   test_round_invalidzTestRound.test_round_invalid  s    yyyk**]L
 
 
 	 	 GGCLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     dD ]v}t          j        ddg|          }t          |g          }|d         }|                    d           t          j        |d         dd	gk              sJ |d         |u sJ wd S )
NbBhHiIlLqQpPefdgFDGr:      rZ   r   r   )decimalsr   rh   )r{   r   r   r   r|   )r.   r/   typecodearrr_   r   s         r$   test_round_kindzTestRound.test_round_kind  s    - 	% 	%H(Ar7(333CseAV9DGGRG   6!F)2w./////V9$$$$$	% 	%r&   N)r`   ra   rb   r   r   r  r  rd   r&   r$   r   r   p  sP        4 4 4: : :  % % % % %r&   r   c                        e Zd Zd Zd Zd ZdS )TestColumnAccessc                     |                                 }t          j        t                    5  |d          d d d            d S # 1 swxY w Y   d S )Nr6   )r   rr   rs   KeyErrorrk   s      r$   r   zTestColumnAccess.test_1  s    ]8$$ 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	AAAc                 b   |                                 }|                    |                    dg d                     t          j        |d         t          j        g d          k              sJ t          j        t                    5  |d          d d d            d S # 1 swxY w Y   d S )Nr6   r3   r   rF   )	r   r   r   r{   r|   r   rr   rs   r  rk   s      r$   r   zTestColumnAccess.test_2  s    	[''Syyy'AABBBvaf 3 3344444]8$$ 	 	cFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	B$$B(+B(c                     g d}|                     dgdgdgg|          }t          ||                                          D ])\  }}||j        k    sJ t	          ||j                  sJ *d S )Nr   r   r4   r5   r   )r   zipitercolsr<   
isinstancer   )r.   r/   r   r_   r<   cols         r$   test_itercolszTestColumnAccess.test_itercols  s    sQC!oU;;UAJJLL11 	7 	7ID#38####c;#5666666	7 	7r&   N)r`   ra   rb   r   r   r  rd   r&   r$   r
  r
    sA          
  7 7 7 7 7r&   r
  c                        e Zd Zd Zd Zd ZdS )TestAddLengthc                     |                      |           |                    | j        g          }|                    | j                   d S r*   )r0   r   r6   r   rF   rk   s      r$   test_right_lengthzTestAddLength.test_right_length  sE    K   tvh''	TVr&   c                 "   |                      |           |                    | j        g          }t          j        t
                    5  |                    |                    dg d                     d d d            d S # 1 swxY w Y   d S )NrF   r   r   r0   r   r6   rr   rs   rt   r   r   rk   s      r$   test_too_longzTestAddLength.test_too_long  s    K   tvh'']:&& 	 	LL"",,,"??  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   
-BBBc                 "   |                      |           |                    | j        g          }t          j        t
                    5  |                    |                    dddg                     d d d            d S # 1 swxY w Y   d S )NrF   r:   rD   r   r  rk   s      r$   test_too_shortzTestAddLength.test_too_short  s    K   tvh'']:&& 	D 	DLL++Aq6+BBCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dr  N)r`   ra   rb   r  r  r  rd   r&   r$   r  r    sF          
  D D D D Dr&   r  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestAddPositionc                     |                      |           |                                }|                    | j        d           d S Nr   r0   r   r   r6   rk   s      r$   r   zTestAddPosition.test_1  A    K   	TVQr&   c                     |                      |           |                                }|                    | j        d           d S Nr   r"  rk   s      r$   r   zTestAddPosition.test_2  r#  r&   c                     |                      |           |                                }|                    | j        d           d S )Nr   r"  rk   s      r$   r   zTestAddPosition.test_3  sA    K   	TVR     r&   c                     |                      |           |                                }t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )NrF   )r0   r   rr   rs   rt   index_columnrk   s      r$   r   zTestAddPosition.test_5  s    K   ]:&& 	  	 NN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   A&&A*-A*c                     |                      |           |                                }|                    | j                   |                    | j                   |j        ddgk    sJ d S Nr6   rF   )r0   r   r   r6   rF   r}   rk   s      r$   test_6zTestAddPosition.test_6  sj    K   	TV	TVzc3Z''''''r&   c                     |                      |           |                    | j        g          }|                    | j        |                    d                     |j        ddgk    sJ d S r*  r0   r   r6   r   rF   r(  r}   rk   s      r$   test_7zTestAddPosition.test_7  sj    K   tvh''	TVQ^^C00111zc3Z''''''r&   c                     |                      |           |                    | j        g          }|                    | j        |                    d          dz              |j        ddgk    sJ d S )Nr6   r   rF   r-  rk   s      r$   test_8zTestAddPosition.test_8  so    K   tvh''	TVQ^^C0014555zc3Z''''''r&   c                 h   |                      |           |                                }|                    | j                   |                    | j        |                    d          dz              |                    | j        |                    d                     |j        g dk    sJ d S )Nr6   r   rF   )r6   rN   rF   )r0   r   r   r6   rF   r(  rN   r}   rk   s      r$   test_9zTestAddPosition.test_9  s    K   	TV	TVQ^^C0014555	TVQ^^C00111z___,,,,,,r&   c                 F   |                      |           |                                }|                    | j                   |                    d          }|                    | j        |dz              |                    | j        |           |j        g dk    sJ d S )Nr6   r   )rN   r6   rF   )r0   r   r   r6   r(  rF   rN   r}   )r.   r/   r_   ias       r$   test_10zTestAddPosition.test_10  s    K   	TV^^C  	TVR!V$$$	TVR   z___,,,,,,r&   N)r`   ra   rb   r   r   r   r   r+  r.  r0  r2  r5  rd   r&   r$   r  r    s             
     
! ! !
     ( ( (( ( (( ( (- - -- - - - -r&   r  c                       e Zd Zd Zd ZdS )TestAddNamec                 X   |                      |           |                                }|                    | j        d           |                    | j        d           |j        ddgk    sJ | j        j        j        dk    sJ | j        j        j        dk    sJ |                                }|                    |d         d           |j        dgk    sJ |j        ddgk    sJ |                    g d          }|                    |d           |j        g dk    sJ d S )NrF   r   r6   rN   r3   )rF   r6   rN   )	r0   r   r   r6   rF   r}   infor<   r   )r.   r/   r_   r   r  s        r$   test_override_namezTestAddName.test_override_name  sC   K    	
TV#&&&	TV#&&&zc3Z''''v{3&&&&v{3&&&&   
af3'''{se####zc3Z''''   ++	Ss###z___,,,,,,r&   c                     |                                 }|                    g d          }|                    |           |j        dgk    sJ d S )Nr3   r   )r   r   r   r}   )r.   r/   r_   r  s       r$   test_default_namezTestAddName.test_default_name   sW      ++	SzfX%%%%%%r&   N)r`   ra   rb   r:  r<  rd   r&   r$   r7  r7    s2        - - -0& & & & &r&   r7  c                       e Zd Zd ZdS )TestInitFromTablec                    |                      |           | j        }|j        }|                    |d         |d         | j        g          }|                                }|                    |d                    |                    |d                    |                    | j                   d|d         d<   d|d         d<   ||fD ]}d|d         d<   d|d         d<   d	|d
         d<   d|j        d         j        d         d<   t          j        |d         t          j	        g d          k              sJ t          j        |d         t          j	        g d          k              sJ t          j        |d         t          j	        g d          k              sJ t          j        |d         t          j	        g d          k              sJ t          j        |d
         t          j	        g d          k              sJ |d         j
        dk    sJ |j        d         j        d         d         dk    sJ |j        d         j        d         d         dk    sJ dS )zREnsure that using cols from an existing table gives
        a clean copy.
        r6   rF   rh   r   ri   r   r4      r   rN   r8   r5   )r   rh   r5   )r:   ri   rE   )r   r4   r   )r:   rD   r@  )rK   rL   r   N)r0   r_   columnsr   rN   r   r>   r{   r|   r   r<   )r.   r/   r_   r   t2at2br   s          r$   test_from_table_colsz&TestInitFromTable.test_from_table_cols)  sT    	K   FycDItv >?? !!tCy!!!tCy!!!tv#q	#q	* 	5 	5BBsGAJBsGAJBsGAJ,.BJsO &q)6!C&BHZZZ$8$88999996!C&BHZZZ$8$88999996"S'RXjjj%9%99:::::6"S'RXjjj%9%99:::::6"S'RXjjj%9%99:::::c7<3&&&&:c?'-a0B66669S>&t,Q/144444	5 	5r&   N)r`   ra   rb   rD  rd   r&   r$   r>  r>  '  s#        5 5 5 5 5r&   r>  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestAddColumnsc                     |                      |           |                                }|                    | j        | j        | j        g           |j        g dk    sJ d S )Nr   r0   r   add_columnsr6   rF   rN   r}   rk   s      r$   test_add_columns1z TestAddColumns.test_add_columns1L  sa    K   	tvtvtv.///z___,,,,,,r&   c                 :   |                      |           |                    | j        | j        g          }|                    | j        | j        g           |j        g dk    sJ t          j	        |d         t          j
        g d          k              sJ d S )Nr6   rF   rN   rS   rN   rJ   )r0   r   r6   rF   rI  rN   rS   r}   r{   r|   r   rk   s      r$   test_add_columns2z TestAddColumns.test_add_columns2R  s    K   tvtv.//	tvtv&'''z1111111vaf 3 334444444r&   c                     |                      |           |                    | j        | j        g          }|                    | j        | j        gddg           |j        g dk    sJ d S )Nr   r   indexes)rS   r6   rN   rF   r0   r   r6   rF   rI  rN   rS   r}   rk   s      r$   test_add_columns3z TestAddColumns.test_add_columns3Y  s    K   tvtv.//	tvtv&A777z111111111r&   c                     |                      |           |                    | j        | j        g          }|                    | j        | j        gddg           |j        g dk    sJ d S )Nr   rO  )rN   rS   r6   rF   rQ  rk   s      r$   test_add_columns4z TestAddColumns.test_add_columns4_  rS  r&   c                     |                      |           |                    | j        | j        g          }|                    | j        | j        gddg           |j        g dk    sJ d S )Nr4   rO  rL  rQ  rk   s      r$   test_add_columns5z TestAddColumns.test_add_columns5e  rS  r&   c                     |                      |           |                                }|                    | j        | j        | j        gg d           |j        g dk    sJ dS )z(Check that we can override column names.)rF   rN   r6   r   NrH  rk   s      r$   test_add_columns6z TestAddColumns.test_add_columns6k  si    K   	tvtvtv.oooFFFz___,,,,,,r&   c                     |                                 }|                    g d          }|                    g d          }|                    ||g           |j        ddgk    sJ dS )z3Check that default names are used when appropriate.r3   )r:   rD   r5   r   r   N)r   r   rI  r}   )r.   r/   r_   r   r   s        r$   test_add_columns7z TestAddColumns.test_add_columns7r  su    !!))),,!!))),,	tTl###zff-------r&   c                    |                      |           |                                }|                    | j                   t	          j        t                    5  |                    |                    dg d                     d d d            n# 1 swxY w Y   |                    |                    dg d          d           |                    | j                   |                    | j	                   |j
        g dk    sJ |                    |                    dg d          d           |j
        g dk    sJ |                                }|                    | j                   t	          j        t                    5  |                    |d                    d d d            n# 1 swxY w Y   |                    |d         d           d|d         d	<   |j
        g d
k    sJ |j
        dgk    sJ |d         d	         | j        d	         k    sJ |                    |                    dg d          d           |j
        g dk    sJ d S )Nr6   r   r   r4   r   Trename_duplicate)r6   a_1rF   rN   )r6   r`  rF   rN   a_2r   r   )r6   r`  rF   rN   ra  a_3rb  q)r6   r`  rF   rN   ra  rb  rc  )r0   r   r   r6   rr   rs   rt   r   rF   rN   r}   )r.   r/   r_   t1s       r$   test_add_duplicate_columnz(TestAddColumns.test_add_duplicate_columnz  s   K   	TV]:&& 	G 	GLL++999+EEFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G	Ciii884 	 	
 	
 	
 	
TV	TVz3333333	Ciii884 	 	
 	
 	
 z:::::::   
df]:&& 	" 	"LLC!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	RWt4443
zAAAAAAA{se#### x{dfQi'''' 	
Ciii884 	 	
 	
 	
 zFFFFFFFFFs$   -BBBF>>GGc           	      J   |                      |           |                    | j        | j        | j        g          }t          j        t                    5  |                    |	                    dg d          |	                    dg d          g           d d d            n# 1 swxY w Y   |                    |	                    dg d          |	                    dg d          gd           |
                    | j                   |j        g dk    sJ d S )Nr6   r]  r   rF   Tr^  )r6   rF   rN   r`  b_1rS   )r0   r   r6   rF   rN   rr   rs   rt   rI  r   r   rS   r}   rk   s      r$   test_add_duplicate_columnsz)TestAddColumns.test_add_duplicate_columns  sy   K   tvtvtv677]:&& 	 	MM&&Ciii&@@&&Ciii&@@  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
"")))"<<"")))"<< " 	 	
 	
 	
 	
TVz?????????s   AB((B,/B,N)r`   ra   rb   rJ  rM  rR  rU  rW  rY  r[  re  rh  rd   r&   r$   rF  rF  J  s        - - -5 5 52 2 22 2 22 2 2- - -. . .#G #G #GJ@ @ @ @ @r&   rF  c                       e Zd Zed             Zed             Zed             Zed             Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
TestAddRowc                 ~    | j         5t          | d          s|                      dg d          | _        | j        S d S )NrB   rF   )r   ffffff@@r   rG   r@   s    r$   rF   zTestAddRow.b  K    (4&& L++???+KK7N )(r&   c                 ~    | j         5t          | d          s|                      dg d          | _        | j        S d S )NrI   rN   )789r   rO   r@   s    r$   rN   zTestAddRow.c  rn  r&   c                     | j         <t          | d          s%|                      dddgddgddgg	          | _        | j        S d S )
NrR   rS   r   r4   r5   r:   rD   rE   r   rT   r@   s    r$   rS   zTestAddRow.d  s[    (4&& U++QFQFQPQF;S+TT7N )(r&   c                     | j         Ct          | d          s,|                      | j        | j        | j        g          | _        | j        S d S r]   )r+   r?   r6   rF   rN   r^   r@   s    r$   r_   zTestAddRow.t  sO    '4&& E**DFDFDF+CDD7N ('r&   c                    |                      |           |                    dd          }|                                 t          j        |d         d         ddgk              sJ |d         d         dk    sJ |d         d         dk    sJ |                                 t          j        |d         d	         ddgk              sJ |d         d	         dk    sJ |d         d	         dk    sJ d S )
Nr   )(2,)iS4rY   r   r[   r6   r   rF    rN   r   r0   r   add_rowr{   r|   rk   s      r$   test_add_none_to_empty_tablez'TestAddRow.test_add_none_to_empty_table  s    K   O;OPP			vafQiAq6)*****vayBvayA~~~~			vafQiAq6)*****vayBvayA~~~~~~r&   c                    |                      |           |                    dd          }|                    ddgddg           t          j        |d         d	         ddgk              sJ |d
         d	         dk    sJ |d         d	         dk    sJ |                                 t          j        |d         d         d	d	gk              sJ |d
         d         dk    sJ |d         d         d	k    sJ d S )N)r6   rF   rX   )rv  S8rY   rx  r   r4   r   r   r6   r   rF   rX   ry  rz  rk   s      r$   test_add_stuff_to_empty_tablez(TestAddRow.test_add_stuff_to_empty_table  s   K   $5=QRR			Aq67G,---vafQiAq6)*****vayG####x{g%%%% 	
		vafQiAq6)*****vayBx{ar&   c           
         |                      |           | j        }| j        |d<   |                    | j        | j        | j        | j        g          }|                    |d                    t          |          dk    sJ t          j
        |d         t          j        g d          k              sJ t          j        |d         t          j        g d                    sJ t          j
        |d         t          j        g d	          k              sJ t          j
        |d         t          j        d
dgddgddgd
dgg          k              sJ d S )NrS   r   r:   r6   r   r4   r5   r   rF   r   rl  rm  r   rN   rp  rq  rr  rp  r   r4   r5   rD   rE   )r0   r_   rS   r   r6   rF   rN   r{  r   r{   r|   r   r   r   s       r$   test_add_table_rowzTestAddRow.test_add_table_row  sE   K   F#?@@			"Q%1vv{{{{vaf 6 6677777{1S628,@,@,@#A#ABBBBBvaf)=)=)= > >>?????vaf1a&1a&1a&1a&)I J JJKKKKKKKr&   c           	         |                      |           |                    | j        | j        | j        g          }|                    dddgg           t          |          dk    sJ t          j        |d         t          j	        g d          k              sJ t          j
        |d         t          j	        g d                    sJ t          j        |d	         t          j	        dd
ddggd          k              sJ d S )Nr   r   r   r:   r6   r  rF   r  rX   rW   r5   rY   rZ   )r0   r   r6   rF   rX   r{  r   r{   r|   r   r   rk   s      r$   test_add_table_row_objz!TestAddRow.test_add_table_row_obj  s    K   tvtvtx899			1cB4.!!!1vv{{{{vaf 6 6677777{1S628,@,@,@#A#ABBBBBvah"(AxRD+A"M"M"MMNNNNNNNr&   c                    ddgddggt           j        z  }t          j        |g          }|                    ddgt           j        z  f           t          j        |d         ddgddgdd	ggt           j        z  k              sJ d S )
Nr   r4   r5   r:   rD   rE   r   i  ip  )r   r   r   r   r{  kmr{   r|   )r.   rc  qts      r$   $test_add_qtable_row_multidimensionalz/TestAddRow.test_add_qtable_row_multidimensional  s    VaVqs"\1#


QFQTM#$$$vbjaVaVdD\$BQS$HHIIIIIIIr&   c                    |                      |           | j        }|                    d           t          |          dk    sJ t	          j        |d         t	          j        g d          k              sJ t	          j        |d         t	          j        g d                    sJ t	          j        |d         t	          j        g d          k              sJ d S )	N)r:   @1r:   r6   r   r4   r5   r:   rF   r   rl  rm  r  rN   )rp  rq  rr  r  r0   r_   r{  r   r{   r|   r   r   rk   s      r$   test_add_with_tuplezTestAddRow.test_add_with_tuple  s    K   F			-   1vv{{{{vaf 6 6677777{1S628,@,@,@#A#ABBBBBvaf)=)=)= > >>???????r&   c                    |                      |           | j        }|                    g d           t          |          dk    sJ t	          j        |d         t	          j        g d          k              sJ t	          j        |d         t	          j        g d                    sJ t	          j        |d         t	          j        g d          k              sJ d S )	N)r:   r  10r:   r6   r  rF   r  rN   )rp  rq  rr  r  r  rk   s      r$   test_add_with_listzTestAddRow.test_add_with_list  s    K   F			...!!!1vv{{{{vaf 6 6677777{1S628,@,@,@#A#ABBBBBvaf)>)>)> ? ??@@@@@@@r&   c                 D   |                      |           | j        }|                    ddd           t          |          dk    sJ t	          j        |d         t	          j        g d          k              sJ t	          j        |d         t	          j        g d                    sJ |j        r6t	          j        |d         t	          j        g d	          k              sJ d S t	          j        |d         t	          j        g d
          k              sJ d S )Nr:   r  r6   rF   r6   r  rF   r  rN   r  rp  rq  rr  ry  )	r0   r_   r{  r   r{   r|   r   r   maskedrk   s      r$   test_add_with_dictzTestAddRow.test_add_with_dict  s   K   F			$$%%%1vv{{{{vaf 6 6677777{1S628,@,@,@#A#ABBBBB8 	C6!C&BH-A-A-A$B$BBCCCCCCC6!C&BH-@-@-@$A$AABBBBBBBr&   c                    |                      |           | j        }|                                 t          |          dk    sJ t	          j        |d         j        t	          j        g d          k              sJ t	          j        |d         t	          j        g d                    sJ t	          j        |d         j        t	          j        g d          k              sJ d S )Nr:   r6   )r   r4   r5   r   rF   )r   rl  rm          rN   r  )	r0   r_   r{  r   r{   r|   r   r   r   rk   s      r$   test_add_with_nonezTestAddRow.test_add_with_none%  s    K   F			1vv{{{{vafkRXlll%;%;;<<<<<{1S628,@,@,@#A#ABBBBBvafkRX.A.A.A%B%BBCCCCCCCr&   c                     |                      |           | j        }t          j        t                    5  |                    ddi           d d d            d S # 1 swxY w Y   d S )N
bad_columnr   r0   r_   rr   rs   rt   r{  rk   s      r$   test_add_missing_columnz"TestAddRow.test_add_missing_column.  s    K   F]:&& 	) 	)II|Q'(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AA"Ac                     |                      |           | j        }t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r4   r  rk   s      r$   test_wrong_size_tuplez TestAddRow.test_wrong_size_tuple4  s    K   F]:&& 	 	IIf	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   AA Ac                     |                      |           | j        }t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S r%  )r0   r_   rr   rs   r   r{  rk   s      r$   test_wrong_vals_typezTestAddRow.test_wrong_vals_type:  s    K   F]9%% 	 	IIaLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 \   |                      |           | j        }|                    |d          }	 |                    g d           n# t          $ r Y nw xY wt          |          dk    sJ t          j        |                                |                                k              sJ 	 |                    g d           n# t          $ r Y nw xY wt          |          dk    sJ t          j        |                                |                                k              sJ d S )NTr   r  r5   )oner4   r5   )	r0   r_   r   r{  rt   r   r{   r|   as_array)r.   r/   r_   t_copys       r$   test_add_row_failuresz TestAddRow.test_add_row_failures@  s5   K   F""14"00	IIlll#### 	 	 	D	1vv{{{{vajjllfoo&7&7788888	IImmm$$$$ 	 	 	D	1vv{{{{vajjllfoo&7&778888888s#   A 
AA1C	 	
CCc                 p   |                      |           dddddgf}t          dd          D ]}t          j        t          j        d          |d          }|                    | j        | j        | j        | j	        g          }|
                                }|                    |           |                    ||           |j        D ]n}||         j        j        dk    r*t          j        ||         |         ||                   sJ Bt          j        ||         |         ||         k              sJ od	D ]v}|                    | j        | j        | j        | j	        g          }t%          j        t(                    5  |                    ||           d
d
d
           n# 1 swxY w Y   wd
S )z
        Light testing of Table.insert_row() method.  The deep testing is done via
        the add_row() tests which calls insert_row(index=len(self), ...), so
        here just test that the added index parameter is handled correctly.
        r   g      D@r   rh   r:   r5   r   )r:   N)r0   ranger{   insertr   r   r6   rF   rN   rS   r   r{  
insert_rowr}   r[   kindr   r|   rr   rs   
IndexError)r.   r/   rowindexindicesr_   r   r<   s           r$   test_insert_table_rowz TestAddRow.test_insert_table_rowS  s    	K   4r2h'2q\\ 
	@ 
	@Ei	!eQ77G!!46464646"BCCABIIcNNNMM%%%%
 @ @T7=%,,;qww'7DBBBBBB6!D''"2bh">??????	@  	) 	)E!!46464646"BCCAz** ) )UC((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	) 	)s   F**F.	1F.	N)r`   ra   rb   rc   rF   rN   rS   r_   r|  r  r  r  r  r  r  r  r  r  r  r  r  r  rd   r&   r$   rj  rj    se         X   X   X   X
 
 
     
L 
L 
LO O OJ J J@ @ @A A A
C 
C 
CD D D) ) )    9 9 9&) ) ) ) )r&   rj  c                       e Zd Zd ZdS )TestTableColumnc                     |                      |           | j        }|j        d         }d|d<   |d         d         dk    sJ d S )Nr6   r   r4   )r0   r_   rA  )r.   r/   r_   r6   s       r$   test_column_viewz TestTableColumn.test_column_viewo  sH    K   FIcN!vayBr&   N)r`   ra   rb   r  rd   r&   r$   r  r  m  s#            r&   r  c                        e Zd Zd Zd Zd ZdS )TestArrayColumnsc                 $   |                      |           |                    dt          dd          }|                    | j        g          }|                    |           |d         j        dk    sJ |d         d         j        dk    sJ d S )NrF   r4   r5   r   r5   r4   r   r0   r   r   r   r6   r   r   r.   r/   rF   r_   s       r$   test_1dzTestArrayColumns.test_1dy  s    K   Cs$qIItvh''	Qv|v%%%%vay$&&&&&&r&   c                 $   |                      |           |                    dt          dd          }|                    | j        g          }|                    |           |d         j        dk    sJ |d         d         j        dk    sJ d S )NrF   )r4   r:   r5   r   )r5   r4   r:   r   r  r  s       r$   test_2dzTestArrayColumns.test_2d  s    K   Cs&KKtvh''	Qv|y((((vay&((((((r&   c                 $   |                      |           |                    | j        g          }|                    dt          dd          }|                    |           |d         j        dk    sJ |d         d         j        dk    sJ d S )NrF   )r4   r:   rE   r5   r   )r5   r4   r:   rE   r   )r0   r   r6   r   r   r   r   r   s       r$   test_3dzTestArrayColumns.test_3d  s    K   tvh''Cs)ANN	Qv||++++vay)++++++r&   N)r`   ra   rb   r  r  r  rd   r&   r$   r  r  w  sA        ' ' ') ) ), , , , ,r&   r  c                      e Zd Zed             Zed             Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zej                            dddg ej        ddg          g          d             Zd Zd Zd Zd Zd Zd Zd ZdS )
TestRemovec                     | j         7t          | d          s |                      | j        g          | _        | j        S d S r]   )r+   r?   r6   r^   r@   s    r$   r_   zTestRemove.t  sE    '4&& 5**DF8447N ('r&   c                     | j         Ct          | d          s,|                      | j        | j        | j        g          | _        | j        S d S )N_t2)r+   r?   r6   rF   rN   r  r@   s    r$   r   zTestRemove.t2  sO    '4'' F++TVTVTV,DEE8O ('r&   c                 X   |                      |           | j                            d           | j        j        g k    sJ | j                                        j        dk    sJ | j        rJ t          | j        d k    t          j                  sJ | j        d k    j        dk    sJ d S Nr6   r   )	r0   r_   remove_columnsr}   r  sizer  r{   ndarrayr-   s     r$   r   zTestRemove.test_1  s    K   c"""v"$$$$v  %****6$&D."*55555$$))))))r&   c                 h   |                      |           | j                            | j                   | j                            d           | j        j        dgk    sJ | j        j        j        dk    sJ t          j	        | j        d         t          j
        g d          k              sJ d S )Nr6   rF   rF   rC   )r0   r_   r   rF   r  r}   r[   r   r{   r|   r   r-   s     r$   r   zTestRemove.test_2  s    K   $&!!!c"""v3%''''v|!V++++vdfSkRXiii%8%889999999r&   c                    |                      |           | j        d         | j        d<   d| j        j                                        v sJ | j                            d           d| j        j                                        vsJ dS )z}Check remove_columns works for a single column with a name of
        more than one character.  Regression test against #2699r6   
new_columnN)r0   r_   rA  keysr  r-   s     r$   r   zTestRemove.test_3  s     	K   #vc{|tv~22444444l+++46>#6#6#8#8888888r&   c                     |                      |           t          j        t                    5  | j                            d           d d d            d S # 1 swxY w Y   d S Nr:   )r0   rr   rs   r  r_   
remove_rowr-   s     r$   test_remove_nonexistent_rowz&TestRemove.test_remove_nonexistent_row  s    K   ]:&& 	! 	!Fa   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAc                 z   |                      |           | j                            | j                   | j                            | j                   | j                            d           | j        j        g dk    sJ t          j        | j        d         t          j	        ddg          k              sJ d S )Nr   r   rF   rD   rE   
r0   r_   r   rF   rN   r  r}   r{   r|   r   r-   s     r$   test_remove_row_0zTestRemove.test_remove_row_0      K   $&!!!$&!!!!v///1111vdfSkRXq!f%5%556666666r&   c                 z   |                      |           | j                            | j                   | j                            | j                   | j                            d           | j        j        g dk    sJ t          j        | j        d         t          j	        ddg          k              sJ d S Nr   r   r6   r5   r  r-   s     r$   test_remove_row_1zTestRemove.test_remove_row_1  r  r&   c                 z   |                      |           | j                            | j                   | j                            | j                   | j                            d           | j        j        g dk    sJ t          j        | j        d         t          j	        ddg          k              sJ d S )Nr4   r   rN   rK   rL   r  r-   s     r$   test_remove_row_2zTestRemove.test_remove_row_2  r  r&   c                    |                      |           | j                            | j                   | j                            | j                   | j                            t          ddd                     | j        j        g dk    sJ t          j	        | j        d         t          j
        dg          k              sJ d S )Nr   r4   r   r   rN   rM   )r0   r_   r   rF   rN   remove_rowsslicer}   r{   r|   r   r-   s     r$   test_remove_row_slicez TestRemove.test_remove_row_slice  s    K   $&!!!$&!!!5Aq>>***v///1111vdfSkRXqc]]23333333r&   c                 |   |                      |           | j                            | j                   | j                            | j                   | j                            ddg           | j        j        g dk    sJ t          j        | j        d         t          j	        dg          k              sJ d S )Nr   r4   r   rN   rL   )
r0   r_   r   rF   rN   r  r}   r{   r|   r   r-   s     r$   test_remove_row_listzTestRemove.test_remove_row_list  s    K   $&!!!$&!!!Aq6"""v///1111vdfSkRXqc]]23333333r&   c                 *   |                      |           | j                            | j                   | j                            ddg           | j        d         j        dg dik    sJ | j        j        t          j        ddg          k    sJ d S )Nr   r4   r6   r8   r9   )r6   r   )rF   r   )r0   r_   r   rF   r  r>   r[   r{   r-   s     r$   test_remove_row_preserves_metaz)TestRemove.test_remove_row_preserves_meta  s    K   $&!!!Aq6"""vc{D///#:::::v|rx|(DEEEEEEEEr&   c                 V   |                      |           | j                            | j                   | j                            | j                   | j        d= | j        j        g dk    sJ t          j        | j        d         t          j        ddg          k              sJ d S r  	r0   r_   r   rF   rN   r}   r{   r|   r   r-   s     r$   test_delitem_rowzTestRemove.test_delitem_row  s    K   $&!!!$&!!!F1Iv///1111vdfSkRXq!f%5%556666666r&   idxr   r4   c                 T   |                      |           | j                            | j                   | j                            | j                   | j        |= | j        j        g dk    sJ t          j        | j        d         t          j        dg          k              sJ d S )Nr   rN   rL   r  )r.   r/   r  s      r$   test_delitem_row_listz TestRemove.test_delitem_row_list  s    K   $&!!!$&!!!F3Kv///1111vdfSkRXqc]]23333333r&   c                 X   |                      |           | j                            | j                   | j                            | j                   | j        dd= | j        j        g dk    sJ t          j        | j        d         t          j        dg          k              sJ d S )Nr   r4   r   rN   rM   r  r-   s     r$   test_delitem_row_slicez!TestRemove.test_delitem_row_slice  s    K   $&!!!$&!!!F1Q3Kv///1111vdfSkRXqc]]23333333r&   c                     |                      |           t          j        t                    5  | j        d= d d d            d S # 1 swxY w Y   d S r  r0   rr   rs   r  r_   r-   s     r$   test_delitem_row_failz TestRemove.test_delitem_row_fail
  s    K   ]:&& 	 	q		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   	AA	A	c                     |                      |           t          j        t                    5  | j        d= d d d            d S # 1 swxY w Y   d S )Nr   r  r-   s     r$   test_delitem_row_floatz!TestRemove.test_delitem_row_float  s    K   ]:&& 	 	s	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  c                 4   |                      |           | j        d= | j        j        g k    sJ | j                                        j        dk    sJ | j        rJ t          | j        d k    t          j                  sJ | j        d k    j        dk    sJ d S r  )r0   r_   r}   r  r  r  r{   r  r-   s     r$   test_delitem1zTestRemove.test_delitem1  s    K   F3Kv"$$$$v  %****6$&D."*55555$$))))))r&   c                 h    |                      |           | j        d= | j        j        ddgk    sJ d S )NrF   r6   rN   r0   r   r}   r-   s     r$   test_delitem2zTestRemove.test_delitem2  s=    K   GCLwC:------r&   c                 f    |                      |           | j        d= | j        j        dgk    sJ d S )Nr  rN   r  r-   s     r$   test_delitemszTestRemove.test_delitems#  s<    K   GHwC5((((((r&   c                     |                      |           t          j        t                    5  | j        d= d d d            d S # 1 swxY w Y   d S r   )r0   rr   rs   r  r_   r-   s     r$   test_delitem_failzTestRemove.test_delitem_fail(  s    K   ]8$$ 	 	s	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r  N)r`   ra   rb   rc   r_   r   r   r   r   r  r  r  r  r  r  r  r  rr   markparametrizer{   r   r  r  r  r  r  r  r   r  rd   r&   r$   r  r    s         X   X* * *: : :9 9 9! ! !
7 7 77 7 77 7 74 4 44 4 4F F F7 7 7 [UaVXRXq!f-=-=$>??4 4 @?44 4 4  
  
* * *. . .
) ) )
    r&   r  c                       e Zd Zd Zd ZdS )TestKeepc                 ^   |                      |           |                    | j        | j        g          }|                    g            |j        g k    sJ |                                j        dk    sJ |rJ t          |d k    t          j
                  sJ |d k    j        dk    sJ d S r!  )r0   r   r6   rF   keep_columnsr}   r  r  r  r{   r  rk   s      r$   r   zTestKeep.test_10  s    K   tvtv.//	rzRzz|| A%%%%!t)RZ00000T	1$$$$$$r&   c                 D   |                      |           |                    | j        | j        g          }|                    d           |j        dgk    sJ |j        j        dk    sJ t          j	        |d         t          j
        g d          k              sJ d S )NrF   r  rC   )r0   r   r6   rF   r  r}   r[   r   r{   r|   r   rk   s      r$   r   zTestKeep.test_2;  s    K   tvtv.//	szcU""""w}&&&&vaf 3 334444444r&   N)r`   ra   rb   r   r   rd   r&   r$   r  r  .  s2        	% 	% 	%5 5 5 5 5r&   r  c                   &    e Zd Zd Zd Zd Zd ZdS )
TestRenamec                 :   |                      |           |                    | j        g          }|                    dd           |j        dgk    sJ |j        j        dk    sJ t          j        |d         t          j	        g d          k              sJ d S )Nr6   rF   r  r3   )
r0   r   r6   rename_columnr}   r[   r   r{   r|   r   rk   s      r$   r   zTestRename.test_1F  s    K   tvh''	S!!!zcU""""w}&&&&vaf 3 334444444r&   c                    |                      |           |                    | j        | j        g          }|                    dd           |                    dd           |j        ddgk    sJ |j        j        dk    sJ |j        r|j	        j        j        dk    sJ t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ d S )Nr6   rN   rF   rN   r6   r3   rC   )r0   r   r6   rF   r  r}   r[   r   r  maskr{   r|   r   rk   s      r$   r   zTestRename.test_2N  s   K   tvtv.//	S!!!	S!!!zc3Z''''w}
****8 	46<%3333vaf 3 3344444vaf 3 334444444r&   c                    |                      |           |                    | j        | j        g          }d|d         _        d|d         _        |j        ddgk    sJ |j        j        dk    sJ t          j	        |d         t          j
        g d          k              sJ t          j	        |d         t          j
        g d          k              sJ d S )NrN   r6   rF   r  r3   rC   )r0   r   r6   rF   r<   r}   r[   r   r{   r|   r   rk   s      r$   test_rename_by_attrzTestRename.test_rename_by_attrZ  s    K   tvtv.//##zc3Z''''w}
****vaf 3 3344444vaf 3 334444444r&   c                 @   |                      |           |                    | j        | j        | j        g          }|                    dd           |j        g dk    sJ |                    ddgddg           |j        g dk    sJ t          j        t                    5  |                    dd	g           d d d            n# 1 swxY w Y   t          j        t                    5  |                    d	gddg           d d d            d S # 1 swxY w Y   d S )
Nr   )r8   r   r   r   r   rF   rN   )r8   rF   rN   r8   r6   )r0   r   r6   rF   rN   rename_columnsr}   rr   rs   r   rt   rk   s      r$   test_rename_columnszTestRename.test_rename_columnsd  s   K   tvtvtv677	*<===z///////	$Sz222z-------]9%% 	* 	*TC5)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:&& 	0 	0cUS#J///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s$   $CCC,DDDN)r`   ra   rb   r   r   r  r  rd   r&   r$   r  r  D  sP        5 5 5
5 
5 
55 5 5
0 
0 
0 
0 
0r&   r  c                   .   e Zd Zd Zej                            dddg          d             Zd Zej                            dddg          d             Z	d	 Z
d
 Zd Zd Zd Zej                            dddg          d             Zd Zd Zd ZdS )TestSortc           	         |                                 }|                    |                    dg d                     |                    |                    dg d                     |                    |                    dg d                     t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                    d           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d	          k              sJ t          j        |d         t          j        d
dgddgddgg          k              sJ |                    d           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        ddgd
dgddgg          k              sJ d S )Nr6   r4   r   r5   r   rF   rE   rD   r:   rN   r  r   r:   rD   r3   )rD   rE   r:   r5   r:   r   r4   rD   )r5   r   r4   rC   r   r   r   r{   r|   r   r   rk   s      r$   test_singlezTestSort.test_singles  s   	[''Syyy'AABBB	[''Syyy'AABBB	     		
 		
 		
 vaf 3 3344444vaf 3 3344444	svaf 3 3344444vaf 3 3344444vcFxFFF 	
 	
 		
 		
 		
 	
svaf 3 3344444vaf 3 3344444vcFxFFF 	
 	
 		
 		
 		
 		
 		
r&   create_indexFTc           	         |                                 }|                    |                    dg d                     |                    |                    dg d                     |                    |                    dg d                     t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                    dd	           t          j        |d         t          j        g d
          k              sJ t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        ddgddgddgg          k              sJ |                    dd	           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        ddgddgddgg          k              sJ d S )Nr6   r  r   rF   r  rN   r  Tr   r   )r:   rE   rD   r:   rD   r   r4   r5   r  )r.   r/   r  r_   s       r$   test_single_reversezTestSort.test_single_reverse  sI   	[''Syyy'AABBB	[''Syyy'AABBB	[''S7O7O7O'PPQQQvaf 3 3344444vaf 3 3344444	sD!!!vaf 3 3344444vaf 3 3344444vaf1a&1a&1a&)A B BBCCCCC	sD!!!vaf 3 3344444vaf 3 3344444vaf1a&1a&1a&)A B BBCCCCCCCr&   c                 r   t          j        d          }t          j        |          }|                    ||gd          }|                    d           t          j        |          }t          j        |d         ||         k              sJ t          j        |d         ||         k              sJ dS )z2Sort a big-ish table with a non-trivial sort orderr   r   r   r   r   N)r{   r   sinr   r   argsortr|   )r.   r/   r   r   r_   r  s         r$   test_single_bigzTestSort.test_single_big  s    IeF1IIq!fJ77	sjmmvaf#&'''''vaf#&'''''''r&   r   c                 j    |                     g g gddg          }|                    d|           d S )Nf4U1rZ   r   r!  )r   r   )r.   r/   r   r_   s       r$   test_empty_reversezTestSort.test_empty_reverse  s>    r2htTl;;	vw'''''r&   c                    |                                 }|                    |                    dg d                     |                    |                    dg d                     t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                    ddg           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                    ddg           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d	          k              sJ |                    d
           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ d S )Nr6   r4   r   r5   r4   r5   r   r   rF   rE   rD   r:   r5   rD   r:   )r   r   r4   r4   r5   r5   )r:   rD   r5   rE   r:   rD   )r4   r   r5   r   r5   r4   )r5   r:   r:   rD   rD   rE   r  r  rk   s      r$   test_multiplezTestSort.test_multiple  s/   	[''S7I7I7I'JJKKK	[''S7I7I7I'JJKKKvaf););); < <<=====vaf););); < <<=====	Szvaf););); < <<=====vaf););); < <<=====	Szvaf););); < <<=====vaf););); < <<=====	zvaf););); < <<=====vaf););); < <<=======r&   c                    |                                 }|                    |                    dg d                     |                    |                    dg d                     t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d          k              sJ |                    ddgd           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d	          k              sJ |                    ddgd           t          j        |d         t          j        g d
          k              sJ t          j        |d         t          j        g d          k              sJ |                    dd           t          j        |d         t          j        g d          k              sJ t          j        |d         t          j        g d	          k              sJ d S )Nr6   r,  r   rF   r-  Tr!  )r5   r5   r4   r4   r   r   )rD   r:   rE   r5   rD   r:   )r4   r5   r   r5   r   r4   )rE   rD   rD   r:   r:   r5   r  r  rk   s      r$   test_multiple_reversezTestSort.test_multiple_reverse  s;   	[''S7I7I7I'JJKKK	[''S7I7I7I'JJKKKvaf););); < <<=====vaf););); < <<=====	Sz4(((vaf););); < <<=====vaf););); < <<=====	Sz4(((vaf););); < <<=====vaf););); < <<=====	z4(((vaf););); < <<=====vaf););); < <<=======r&   c                    |                                 }|                    |                    dg d                     |                    |                    dg d                     |                    |                    dg d                     |                    ddg           t	          j        |d         t	          j        g d          k    g          sJ t	          j        |d         t	          j        g d	          k    g          sJ t	          j        |d         t	          j        g d
          k    g          sJ d S )N	firstname   Max   Jo   Johnr   r<      Millerr8     Jacksontelr         )r6  r5  r4  )r9  r8  r8  r=  r<  r   r   r   r   r   r{   r|   r   rk   s      r$   test_multiple_with_bytesz!TestSort.test_multiple_with_bytes  sY   	K6N6N6NOO	
 	
 	
 	
F1S1S1STT	
 	
 	
 	
[''U'FFGGG	$%%%vq~2J2J2J)K)KKLMMMMMvqyBH-O-O-O$P$PPQRRRRRvqx28LLL#9#99:;;;;;;;r&   c                    |                                 }|                    |                    dd dD                                  |                    |                    dd dD                                  |                    |                    dg d	                     |                    ddg           t	          j        |d         t	          j        d
 dD                       k    g          sJ t	          j        |d         t	          j        d dD                       k    g          sJ t	          j        |d         t	          j        g d          k    g          sJ d S )Nr2  c                 ,    g | ]}t          |          S rd   r!   .0r   s     r$   
<listcomp>z7TestSort.test_multiple_with_unicode.<locals>.<listcomp>      'N'N'N1A'N'N'Nr&   MaxJoJohnr   r<   c                 ,    g | ]}t          |          S rd   rC  rD  s     r$   rF  z7TestSort.test_multiple_with_unicode.<locals>.<listcomp>      "S"S"Sa3q66"S"S"Sr&   MillerrO  Jacksonr:  r;  c                 ,    g | ]}t          |          S rd   rC  rD  s     r$   rF  z7TestSort.test_multiple_with_unicode.<locals>.<listcomp>  s    (O(O(OAQ(O(O(Or&   )rK  rJ  rI  c                 ,    g | ]}t          |          S rd   rC  rD  s     r$   rF  z7TestSort.test_multiple_with_unicode.<locals>.<listcomp>   s    #T#T#TqCFF#T#T#Tr&   )rP  rO  rO  r>  r?  rk   s      r$   test_multiple_with_unicodez#TestSort.test_multiple_with_unicode  s    	 'N'N8M'N'N'N   	
 	
 	

 	
"S"S3R"S"S"S   	
 	
 	

 	
[''U'FFGGG	$%%%v{^rx(O(O9N(O(O(OPPPQ
 
 	
 	
 	
 vvY"(#T#T4S#T#T#TUUUV
 
 	
 	
 	
 vqx28LLL#9#99:;;;;;;;r&   c                    |                                 }|                    |                    dg d                     |                    |                    dg d                     t          j        |                                |                                                                k              sJ |                    d          }|                                                    dg          }t          j        |d         |         |d         |         k              sJ |                    ddg          }|                                                    ddg          }t          j        |d         |         |d         |         k              sJ t          j        |d         |         |d         |         k              sJ d S )Nr6   r,  r   rF   r-  )order)r   r   r   r{   r|   r%  r  )r.   r/   r_   i0i1s        r$   test_argsortzTestSort.test_argsort  s   	[''S7I7I7I'JJKKK	[''S7I7I7I'JJKKKvaiikkQZZ\\%9%9%;%;;<<<<<YYs^^ZZ\\!!!..vafRjAcF2J./////YYSz""ZZ\\!!c
!33vafRjAcF2J./////vafRjAcF2J.///////r&   	add_indexc                 t   |                                 }|                    |                    dg d                     |                    |                    dg d                     |r|                    d           t	          j        |                    d          t	          j        g d          k              sJ |                    dd          }t	          j        g d	          }t	          j        |d         |         |d         |         k              sJ |                    ddgd          }t	          j        g d          }t	          j        |d         |         |d         |         k              sJ t	          j        |d         |         |d         |         k              sJ d S )
Nr6   r,  r   rF   r-  Tr!  )r:   r4   r   r5   r   rD   )r:   r4   r5   r   rD   r   )r   r   r   rY  r{   r|   r%  r   )r.   r/   rY  r_   rV  rW  s         r$   test_argsort_reversezTestSort.test_argsort_reverse  s   	[''S7I7I7I'JJKKK	[''S7I7I7I'JJKKK 	KKvaiii--:L:L:L1M1MMNNNNNYYsDY))X((())vafRjAcF2J./////YYSz4Y00X((())vafRjAcF2J./////vafRjAcF2J.///////r&   c                    |                                 }|                    |                    dg d                     |                    |                    dg d                     |                    |                    dg d                     t          j        |                    ddg          t          j        g d          k              sJ d S )	Nr2  r3  r   r<   r7  r:  r;  r4   r   r   r   r   r   r{   r|   r%  r   rk   s      r$   test_argsort_byteszTestSort.test_argsort_bytes!  s    	K6N6N6NOO	
 	
 	
 	
F1S1S1STT	
 	
 	
 	
[''U'FFGGGvaii 566"(999:M:MMNNNNNNNr&   c                    |                                 }|                    |                    dd dD                                  |                    |                    dd dD                                  |                    |                    dg d	                     t          j        |                    ddg          t          j        g d
          k              sJ d S )Nr2  c                 ,    g | ]}t          |          S rd   rC  rD  s     r$   rF  z1TestSort.test_argsort_unicode.<locals>.<listcomp>2  rG  r&   rH  r   r<   c                 ,    g | ]}t          |          S rd   rC  rD  s     r$   rF  z1TestSort.test_argsort_unicode.<locals>.<listcomp>7  rM  r&   rN  r:  r;  r]  r^  rk   s      r$   test_argsort_unicodezTestSort.test_argsort_unicode,  s    	 'N'N8M'N'N'N   	
 	
 	

 	
"S"S3R"S"S"S   	
 	
 	

 	
[''U'FFGGGvaii 566"(999:M:MMNNNNNNNr&   c                 $   |                     dggd          }|j        dgk    sJ |j        j        dk    sJ |                    d           |j        dgk    sJ |j        j        dk    sJ |                    dd           |j        dgk    sJ |j        j        dk    sJ |                    d           |j        dgk    sJ |j        j        dk    sJ |                    dd           |j        dgk    sJ |j        j        d	k    sJ d
S )z
        Issue #2039 where renaming fails after any method that calls
        _rebuild_table_column_view (this includes sort and add_row).
        r   )r6   r   r6   r  rF   r  rN   )rN   N)r   r}   r[   r   r{  r  r   rk   s      r$   $test_rebuild_column_view_then_renamez-TestSort.test_rebuild_column_view_then_rename=  s>   
 se622zcU""""w}&&&&			$zcU""""w}&&&&	S!!!zcU""""w}&&&&	szcU""""w}&&&&	S!!!zcU""""w}&&&&&&r&   N)r`   ra   rb   r  rr   r  r  r"  r&  r*  r.  r0  r@  rS  rX  r[  r_  rc  re  rd   r&   r$   r  r  q  sJ       )
 )
 )
V [^eT];;D D <;D ( ( ( [Yu66( ( 76(> > > > > > < < << < <00 0 0 [[5$-880 0 980	O 	O 	OO O O"' ' ' ' 'r&   r  kwargsr  stable	quicksortc                     t                      }g d|d<   g d|d<   |                                } |j        ddgfi |  t          j        |                                t          j        |fi | k              sJ d S )Nr,  r6   r-  rF   )r   r  r   r{   r|   )rf  r_   t_structs      r$   test_sort_kindrk  W  s    AAcFAcFzz||H
AFC:     6!**,,"'("="=f"="==>>>>>>>r&   c                       e Zd Zd ZdS )TestIteratorc                 ^   t          j        g dddg          }|                    |          }|j        rFt	          j        t                    5  |d         |d         k     d d d            d S # 1 swxY w Y   d S t          ||          D ]\  }}t          j        ||k              sJ  d S )N))r4   r   )r5   rE   r  )r6   i4)rF   ro  rZ   r   )	r{   r   r   r  rr   rs   rt   r  r|   )r.   r/   rS   r_   r  np_rows         r$   test_iteratorzTestIterator.test_iteratord  s   H  
 ,
 
 
 a  8 	-z**  !!                   #1ayy - -VvcVm,,,,,,- -s   A00A47A4N)r`   ra   rb   rq  rd   r&   r$   rm  rm  b  s#        - - - - -r&   rm  c                       e Zd Zd ZdS )TestSetMetac                     |                     d          }d|j        d<   d|j        d<   d|j        d<   d|j        d<   t          |j                                                  g dk    sJ d S )	Nr  r   r   r6   rF   rN   rS   rL  )r   r>   listr  )r.   r/   rS   s      r$   test_set_metazTestSetMeta.test_set_metax  st    J//ssssAFKKMM""&:&:&:::::::r&   N)r`   ra   rb   rv  rd   r&   r$   rs  rs  v  s#        ; ; ; ; ;r&   rs  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestConvertNumpyArrayc                    |                     ddgddggd          }t          j        |          }|j         t          ur,t          j        ||                                k              sJ ||                                usJ |j        t          |j        j	                  k    sJ t          j        |d          }|j         t          ur,t          j        ||                                k              sJ |j        t          |j        j	                  k    sJ t          j        t                    5  t          j        |d	d
g          }d d d            d S # 1 swxY w Y   d S )Nr   r4   r5   r:   r  r   Fr   )rN   i8)rS   rz  rZ   )r   r{   r   r   r|   r  r}   ru  r[   r   rr   rs   rt   )r.   r/   rS   np_datas       r$   test_convert_numpy_arrayz.TestConvertNumpyArray.test_convert_numpy_array  s   1v1v.jAA(1++K//6'QZZ\\122222ajjll****zT'-"5666666(15)))K//6'QZZ\\122222zT'-"5666666]:&& 	D 	Dhqk(BCCCG	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   5EE"Ec                    d}|t           j        dk             }|D ]}|                    ddgd|dz             }|                    |g          }|                                }|d         j        j        |dfv sJ |                    d	
          }||k    r|d         j        j        |dfv sJ |d         j        j        |k    sJ dS )z5Test for https://github.com/astropy/astropy/pull/4080><littler   r   r6   f8r   =Tkeep_byteorderN)sys	byteorderr   r   r  r[   )r.   r/   byte_ordersnative_orderrU  r  r_   r  s           r$   test_as_array_byteswapz,TestConvertNumpyArray.test_as_array_byteswap  s     !"3=H#<=  		9 		9E$$c3Zc$NNC!!3%((A**,,Cs8>+c/BBBBB**D*11C$$3x~/E3<?????3x~/588888		9 		9r&   c                    dt           j        dk             }t          dd          }|j                            |          }|                                }t          t          |j                            D ]}|j        |         j        |k    sJ t          j
        |d          5 }|d         j        }|j        j        D ](}	t          j        ||	         ||	         k              sJ )|                    d          }
|j        j        D ]*}	||	         j        j        |
|	         j        j        k    sJ +	 d	d	d	           d	S # 1 swxY w Y   d	S )
z
        Test for https://github.com/astropy/astropy/pull/4080, demonstrating
        that FITS tables are converted to native byte order.
        r~  r  zdata/tb.fitszastropy.io.fits.testsT)character_as_bytesr   r  N)r  r  r   r   readr  r  r   r[   r   openr   rA  r   r{   r|   )r.   r/   non_native_orderfilenamer_   r  r  hdulr   colnamearr2s              r$   test_byteswap_fits_arrayz.TestConvertNumpyArray.test_byteswap_fits_array  s    &cmx&?@(9PQQ""8,,jjllSY(( 	@ 	@C9S>+/??????YxD999 	VT7<D<- = =vd7ms7|;<<<<<<::T:22D<- V VG}*4W8K8UUUUUUV	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	Vs   'BEE	E	c                     |                     ddgddggd          }t          j        |t                    }t	          |t          j                  sJ |d         |u sJ d S )	Nr   r4   r5   r:   r  r   rZ   rd   )r   r{   r   objectr  r  )r.   r/   rS   np_ds       r$   test_convert_numpy_object_arrayz5TestConvertNumpyArray.test_convert_numpy_object_array  sj    1v1v.jAA x((($
+++++Bx1}}}}}}r&   c                                          ddgddggd          g}t          j        |t                    }t	          fd|D                       sJ t	          fd	|D                       sJ d S )
Nr   r4   r5   r:   r  r   rZ   c              3   B   K   | ]}t          |j                  V  d S r*   )r  r   )rE  r_   r/   s     r$   	<genexpr>zMTestConvertNumpyArray.test_convert_list_numpy_object_array.<locals>.<genexpr>  s0      CC:a!233CCCCCCr&   c              3   B   K   | ]}t          j        |          V  d S r*   )r{   array_equal)rE  r_   rS   s     r$   r  zMTestConvertNumpyArray.test_convert_list_numpy_object_array.<locals>.<genexpr>  s/      77A2>!Q''777777r&   )r   r{   r   r  r|   )r.   r/   dsnp_dsrS   s    `  @r$   $test_convert_list_numpy_object_arrayz:TestConvertNumpyArray.test_convert_list_numpy_object_array  s    1v1v.jAAAY6***CCCCUCCCCCCCC77777777777777r&   N)r`   ra   rb   r|  r  r  r  r  rd   r&   r$   rx  rx    se        D D D"9 9 9"V V V0  8 8 8 8 8r&   rx  Tc                    | j         |j         k    sJ t          j                            |                                 |                                           | j        |j        k    sJ t          | j                                        |j                                                  D ]6\  }}|rt          j	        ||          rJ t          j	        ||          sJ 7d S r*   )
r}   r{   testingr   r  r>   r  rA  valuesmay_share_memory)r_   r   deepr  r   s        r$   _assert_copiesr    s    :$$$$J!!!**,,>>>6RW))++RZ->->-@-@AA 2 2	T 	2*3555555&sD111111	2 2r&   c                      t          j        g dg dgddg          } |                                 }t          | |           d S )Nr3   r4   r5   r:   r   r   r   )r   r   r   r  r_   r   s     r$   	test_copyr    sJ    YYY			*3*===A	
B1br&   c                      t          j        g dg dgddgdddi          } | d         j        g d	k     |                                 }t	          | |           d S )
Nr3   r  r   r   Tr<   test)r   r  r>   TFT)r   r   r  r   r  r  s     r$   test_copy_maskedr    st    	IIIsCjVVDT	 	 	A cFK&&&&&	
B1br&   c                      t          j        g dg dgddg          } t          j        |           }t          j        |           }t	          | |d           t	          | |           d S )Nr3   r  r   r   r   F)r  )r   r   r   deepcopyr  )r_   r   t3s      r$   test_copy_protocolr    sn    YYY			*3*===A	1B	q		B1bu%%%%1br&   c                     t          j                    } t          j        t                    5  | dk     ddd           n# 1 swxY w Y   t          j        t                    5  | dk      ddd           n# 1 swxY w Y   t          j        t                    5  | dk     ddd           n# 1 swxY w Y   t          j        t                    5  | dk     ddd           dS # 1 swxY w Y   dS )zQ
    Regression test for #828 - disallow comparison operators on whole Table
    r4   N皙?g      @g)r   r   rr   rs   r   r_   s    r$   $test_disallow_inequality_comparisonsr    s   
 	A	y	!	!  	A               
y	!	!  	C               
y	!	!  	S               
y	!	!  	T		                 sG   A  AA$A77A;>A;B..B25B2C&&C*-C*c                  	   ddg} ddg}ddg}t          j        | ||gg d          }t          j        | |gddg          }t           j                                        }|                                }t          ddgd	
          |d<   |                                }t          j        j        |d         d<   t           j                                        }g dt          j
        z  |d<   t           j                                        }	t          ddd          |	d<   |	                    |	          }
|
                                D ]}t          j        |          sJ t          j        t"          d          5  |                    |           d d d            n# 1 swxY w Y   t          j        t"          d          5  |                    |           d d d            n# 1 swxY w Y   t$          rt          j        t"          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t"          d          5  |                    ddg           d d d            n# 1 swxY w Y   n|                    d          }|j        D ]$}t          j        ||         ddgk              sJ %|                    ddg          }|j        D ]$}t          j        ||         ddgk              sJ %|                    |          }|j        D ]$}t          j        ||         ddgk              sJ %|                    |          }|j        D ]$}t          j        ||         ddgk              sJ %|                    |          }|j        D ]$}t          j        ||         g dk              sJ %|                    d          }|j        D ]$}t          j        ||         ddgk              sJ %|                    ddg          }|j        D ]$}t          j        ||         ddgk              sJ %t          j        ddg          }|                    |d                   }t          j        |d         ddgk              sJ t          j        |d         ddgk              sJ d S )Nr   r4   r   r   r6   rF   r   r   cxcsecr=   timer   r   quantityr   r   skz1cannot compare tables with different column namesr   zunable to compare column azunable to compare column cFT)TTT)r   r6   )r   rF   rowsr   r   )r   r   table_helperssimple_tabler   r   r{   mar  r   r   r
   values_equalr  r|   rr   rs   rt   r   r}   )r   r   col3rd  r   r  tmtm1tqtskeqskr  eqeq1eq2eq3eq4r_   s                     r$   test_values_equal_part1r    s   q6D:D:D	dD$'	?	?	?B	dD\#s	4	4	4B			)	)	+	+B	Bq!fX...BvJ
''))CU\CKN			)	)	+	+B$__qs*BzN


*
*
,
,CAE***CIC  D}}  vc{{	M
 
 
   	              
 
z)E	F	F	F  
                3]:-IJJJ 	 	OOA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:-IJJJ 	$ 	$OOQF###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ __Q; 	4 	4C6"S'eT]2333333__aV$$; 	3 	3C6"S'dD\1222222			B{ / /vbg$-......


2

C| 0 0vc#h4,.//////
//"

C| 6 6vc#h"4"4"44555555
//!

C| 1 1vc#h5$-/000000
//1a&
!
!C| 0 0vc#h4,.////// 	(H-...A	
!		B6"V*t,-----6"V*u-.......sH   :FF #F G$$G(+G(H33H7:H7I==JJc                     t           j                            g dd          } t          j        | | k              sJ t          j        | | k              rJ t          j        | | d         k    t          j        g dt                    k              sJ t          j        | | d         k    t          j        g dt                    k              sJ t           j                            g dd          }t          j        | |k    t          j        g d	t                    k              sJ t          j        | |k    t          j        g d
t                    k              sJ t          j        | |                                k    t          j        g d	t                    k              sJ t          j        |                                 |k    t          j        g d	t                    k              sJ d S )N	
 a b  c  d
 2 c 7.0 0
 2 b 5.0 1z
 2 b 6.0 2
 2 a 4.0 3z
 0 a 0.0 4
 1 b 3.0 5z
 1 a 2.0 6
 1 a 1.0 7asciir  r5   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r   r   	r  r  r  z
 3 b 6.0 2r  z
 0 a 1.0 4r  z
 1 c 2.0 6r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r  r{   r|   anyr   boolr  r  s     r$   test_rows_equalr  O  s   
	
 
	
 
	
  	 	 	A  6!q&>> va1f~~ 61!9*B*B*B$!O!O!OOPPPPP 61!9*B*B*B$!O!O!OOPPPPP			
	
 
	
 
	
  
 
 
B" 617rx(@(@(@MMMMNNNNN617rx(@(@(@MMMMNNNNN 6	
bkkmm	)A)A)A N N NN     6	
	)A)A)A N N NN      r&   c                     t           j                            g dd          } t          j        | d          } t          j        | | k              sJ t          j        | | k              rJ t          j        | | d         k    t          j        g dt                    k              sJ t          j        | | d         k    t          j        g d	t                    k              sJ t           j                            g d
d          }t          j        | |k    t          j        g dt                    k              sJ t          j        | |k    t          j        g dt                    k              sJ d| j        d         d<   t          j        | |k    t          j        g dt                    k              sJ t          j        | |k    t          j        g dt                    k              sJ t          j        | |	                                k    t          j        g dt                    k              sJ d S )Nr  r  r  Tr  r5   r  rZ   r  r  r  r  r6   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )
r   r   r  r{   r|   r  r   r  r  r  r  s     r$   test_equality_maskedr    s^   
	
 
	
 
	
  	 	 	A  	Ad###A 6!q&>> va1f~~ 61!9*B*B*B$!O!O!OOPPPPP 61!9*B*B*B$!O!O!OOPPPPP			
	
 
	
 
	
  
 
 
B" 617rx(@(@(@MMMMNNNNN617rx(@(@(@MMMMNNNNN AF3KN617rx(@(@(@MMMMNNNNN617rx(@(@(@MMMMNNNNN 6	
bkkmm	)A)A)A N N NN      r&   c                  T   t           j                            g dd          } t          j        | d          } t           j                            g dd          }t          j        |                                 |k    t          j        g dt                    k              sJ d	S )
z
    This highlights a Numpy bug. Once it works, it can be moved into the
    test_equality_masked test. Related Numpy bug report:

      https://github.com/numpy/numpy/issues/3840
    r  r  r  Tr  r  r  rZ   N)r   r   r  r{   r|   r  r   r  r  s     r$   test_equality_masked_bugr    s     	
	
 
	
 
	
  	 	 	A 	Ad###A			
	
 
	
 
	
  
 
 
B 6	
	)A)A)A N N NN      r&   c                        e Zd Zej        ZdZdS )TestMetaTablerd   N)r`   ra   rb   r   r   
test_classargsrd   r&   r$   r  r    s        JDDDr&   r  c                      t          dt                    rd S d} d}t          j        | dg|dggd          }| t	          |          v sJ |                     d          t          |          v sJ d S )	Nry  u+   астрономическая питонаu*   миллиарды световых летr4   r5   r  r   utf-8)r  bytesr   r   r!   encode)string_astring_br6   s      r$   test_unicode_contentr    s    "e  =H;Hh]XqM2*EEEAs1vv ??7##uQxx//////r&   c                  j    t           j                            g dd          } t          |            d S )Nr  r  r  )r   r   r  r   r  s    r$   test_unicode_policyr    sH    
	
 
	
 
	
  	 	 	A &a(((((r&   uniu   питонаr  c                 V   |                     d          }|                     |g|gdggd          }|d         j        j        dk    sJ |d         j        j        dk    sJ |d	         j        j        d
k    sJ d|d         _        d|d         _        d|d         j        d<   d|d         j        d<   |                                }|                                 |d         j        j        dk    sJ |d         j        j        dk    sJ |d	         j        j        d
k    sJ |d         j        dk    sJ |d         j        dk    sJ |d         j        d         dk    sJ |d         j        d         dk    sJ t          j	        |d                   d         |k    sJ t          j	        |d                   d         |k    sJ t          j	        |d	                   d         dk    sJ |                                }|
                                 |d         j        j        dk    sJ |d         j        j        dk    sJ |d	         j        j        d
k    sJ |d         j        dk    sJ |d         j        dk    sJ |d         j        d         dk    sJ |d         j        d         dk    sJ t          j	        |d                   d         |k    sJ t          j	        |d                   d         |k    sJ t          j	        |d	                   d         dk    sJ dS )ap  
    Test converting columns to all unicode or all bytestring.  This
    makes two columns, one which is unicode (str in Py3) and one which
    is bytes (UTF-8 encoded).  There are two code paths in the conversions,
    a faster one where the data are actually ASCII and a slower one where
    UTF-8 conversion is required.  This tests both via the ``uni`` param.
    r  r   )SUirZ   r   r  r   r  r   r  val0valval1r   N)r  r   r[   r  descriptionr>   r   convert_unicode_to_bytestringr{   r   convert_bytestring_to_unicode)r/   r  bytr_   rd  s        r$   "test_unicode_bytestring_conversionr  !  sZ    **W

CC53%!-_EEAV9?3&&&&V9?3&&&&V9?3&&&&"AfI"AfI"AfIN5"AfIN5 
B$$&&&f: C''''f: C''''f: C'''' f:!V++++f:!V++++f:?5!V++++f:?5!V++++ 8BvJ"c))))8BvJ"c))))8BvJ"a'''' 
B$$&&&f: C''''f: C''''f: C'''' f:!V++++f:!V++++f:?5!V++++f:?5!V++++ 8BvJ"c))))8BvJ"c))))8BvJ"a''''''r&   c                      t                       G fddt          j                  }  | dg di          }t          |          }|d         j        |u sJ ~t          j                     |v sJ dS )zq
    Regression test for the reference cycle discussed in
    https://github.com/astropy/astropy/issues/2877
    c                       e Zd Z fdZdS )&test_table_deletion.<locals>.TestTablec                 L                         t          |                      d S r*   )addid)r.   deleteds    r$   __del__z.test_table_deletion.<locals>.TestTable.__del__d  s!    KK4!!!!!r&   N)r`   ra   rb   r  )r  s   r$   	TestTabler  c  s.        	" 	" 	" 	" 	" 	" 	"r&   r  r6   r3   N)setr   r   r  parent_tablegccollect)r  r_   the_idr  s      @r$   test_table_deletionr  Z  s     eeG" " " " " " "EK " " " 		3			"##AUUFS6!####	 JLLLWr&   c                      t          j        ddggdg          } g }| D ]*}| D ]%}|                    |d         |d         f           &+|g dk    sJ dS )zZ
    Regression test for issue 3358 where nested iteration over a single table fails.
    r   r   r6   r   ))r   r   )r   r   )r   r   )r   r   N)r   r   append)r_   outr1r2s       r$   test_nested_iterationr  s  s     	aVHSE***A
C + + 	+ 	+BJJ3C)****	+222222222r&   c                    |                      t          j        g                     }t          |j                  dk    sJ t          j        t                    5  |                      t          j        d                    }d d d            n# 1 swxY w Y   |                      t          j        g d                    }t          |j                  dk    sJ d S )Nr   r3   r5   )r   r{   r   r   rA  rr   rs   rt   )r/   r_   s     r$   &test_table_init_from_degenerate_arraysr    s    "(2,,''Aqy>>Q	z	"	" + +bhqkk**+ + + + + + + + + + + + + + + 	"(999--..Aqy>>Qs   (BBBzrequires pandas)reasonc                   b   e Zd Zd Zej                            dddg          ej                            dg d          d                         Zd Zd	 Z	ej                            d
ddg          d             Z
d Zd Zej                            dddg          d             Zd Zd ZdS )
TestPandasc                    t          j                    }dD ]\}dD ]W}dD ]R}t          j        ||z   |z             }t          j        g d|          }|                    |          |||z   |z   <   SX]g d|d<   g d|d<   |                                }|j        D ]]}|dk    rZt          j        |d         t          j        g d          k              sJ ||         j        t          j        d	          k    sJ c|dk    rZt          j        |d         t          j        g d          k              sJ ||         j        t          j        d	          k    sJ t          j        ||         ||         k              sJ ||         j        j	        r ||         j        ||         j        k    sJ ||         j        ||         
                                                                j        k    sJ _|d
dg          |ddg          t           j                            |          }	|j        D ]}|dv r't          j        ||         |	|         k              sJ nt          ||         |	|                    ||         j        j	        r||         j        |	|         j        k    sJ z||         
                                                                j        |	|         j        k    sJ d S )N)r  r  r  )r   r  )24rq  r3   rZ   r   r   srY   <i4z>i4z<f4z>f4)r   r  )r   r   r{   r[   r   newbyteorder	to_pandasrA  r|   isnativebyteswapfrom_pandasr   )
r.   r_   endianr  byter[   r   rS   columnr   s
             r$   r   zTestPandas.test_simple  s$   KMM% 	E 	EF" E E+ E EDHVd]T%9::E%888A./nnV.D.DAftmd*++EE !# #KKMMi 	X 	XF}}vaf(A(AABBBBBy"(3--777773vaf(A(AABBBBBy"(3--77777 vai1V9455555V9?+ XV9?aio=====V9?ai.@.@.B.B.O.O.Q.Q.WWWWWW 	
5%.	5%.[$$Q''i 	U 	UF##vai2f:5666666&	2f:666y' Uy"V**::::::y))++88::@BvJDTTTTTT	U 	Ur&   unsignedr   ry  bits)rL   r      @   c                    | d| }t          ddgddg|          }t          |g          }|                                }|                    dd                              d	d
          }t	          |d         j                  |k    sJ t          j        |          }t	          |d         j                  |k    sJ t          j        |d         j	        ddgk              sJ t          j        |d         |k              sJ d S )Nr   r   r4   FTr  r[   r  Ir   r  r   )
r   r   r   replacer!   r[   r#  r{   r|   r  )	r.   r'  r(  np_dtyperN   r_   dfpd_dtyper   s	            r$   test_nullable_intzTestPandas.test_nullable_int  s    ))4))!Qudm8DDD1#JJ[[]]##C--55c3??2f:#$$0000r""2f:#$$0000vbjo%677777vbjAo&&&&&&&r&   c                     t          j                    }g d|d<   t          j        d          |d<   t	          j        t          d          5  |                                 d d d            d S # 1 swxY w Y   d S )Nr3   r6   r  rF   z4Cannot convert a table with multidimensional columnsr   )r   r   r{   onesrr   rs   rt   r   r.   r_   s     r$   r  zTestPandas.test_2d  s    KMM##]T
 
 
 	 	 KKMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A//A36A3c                    t          j                    }t          t                    D ]'}|                    d          st          |         ||<   (t          g dd          |d<   |                                }t           j                            |          }t          j
        |d         g d          sJ t          j
        |d         g d	          sJ t          j
        |d
         g d          sJ t          j
        |d         g d          sJ t          j
        |d         g d          sJ t          j
        |d         g d          sJ t          j
        |d         g d          sJ t          j
        |d         g ddd          sJ t          |d         t                    sJ t          j
        |d         j        g d          sJ t          j        |d         j        g dk              sJ |d         j        dk    sJ t          |d         t
                    sJ t          j
        |d         j        g d          sJ |d         j        dk    sJ d S )Nr  )r   r4   r:   rE   secr  dtr  )r   r   r4   r5   	longitude)r  r         @      @latitude)r:  r;  g      $@g      &@zskycoord.razskycoord.dec	arraywrap	arrayswapzearthlocation.y)r   it iZ i	 r   r   rtolatolr  )i  i    i  )z2000-01-01T12:00:00.000z2000-12-31T18:00:00.000z2002-01-01T00:00:00.000z2003-01-01T06:00:00.000isot)r   r   sortedr   
startswithr   r   r   r#  r{   r   r  r   jyearr|   rC  r=   value)r.   r_   r<   tpr   s        r$   test_mixin_pandaszTestPandas.test_mixin_pandas  s   LNN:&& 	+ 	+D??9-- +$T*$LLL777$[[]][$$R(({2j><<<88888{2k?,@,@,@AAAAA{2j>+A+A+ABBBBB{2m,lll;;;;;{2n-|||<<<<<{2k?LLL99999{2k?LLL99999{ !#>#>#>QQ
 
 
 	
 	
 	

 "V*d+++++{2f:+-E-E-EFFFFFvvJO  
 
 	
 	
 	
 &z F**** "T(I.....{2d8><<<88888$x%''''''r&   use_IndexedTableFTc                 0   ddl } G d dt          j                  }|                    ddd          }|                    ddgd	d
d          }t          ddgd          }ddg}|r|nt          j        } |||gd
dg          }	|	                                }
|sit          j        |
j	        |k              sJ |	                    d
          }
t          j        |
j	        |k              sJ |	
                    d
           |	                                }
t          j        |
j	        |k              sJ |	d
         j        j        sJ |	                    d          }
t          j        |
j	        |k              sJ |	                    d          }
t          j        |
j	        |k              sJ t          j        t                    5 }|	                    d           ddd           n# 1 swxY w Y   dt!          |j                  v sJ dS )zTest to_pandas() with different indexing options.

        This also tests the fix for #12014. The exception seen there is
        reproduced here without the fix.
        r   Nc                   "     e Zd ZdZ fdZ xZS )5TestPandas.test_to_pandas_index.<locals>.IndexedTablezAlways index the first columnc                 z     t                      j        |i | |                     | j        d                    d S r!  )super__init__rY  r}   )r.   r  rf  	__class__s      r$   rP  z>TestPandas.test_to_pandas_index.<locals>.IndexedTable.__init__  s>      $1&111t}Q/00000r&   )r`   ra   rb   __doc__rP  __classcell__)rQ  s   @r$   IndexedTablerM  	  s>        //1 1 1 1 1 1 1 1 1r&   rT  r4   r   z
1998-01-01z
2002-01-01zdatetime64[ns]r  )r[   r<   freq  rB  rF  r  r   r   r  TFznot a columnzindex must be None, False)pandasr   r   
RangeIndexDatetimeIndexr   r   r{   r|   r  rY  r9  r  rr   rs   rt   r!   rG  )r.   rJ  pdrT  	row_indextm_indexr  r   	table_clsr_   rH  errs               r$   test_to_pandas_indexzTestPandas.test_to_pandas_index   sr    		1 	1 	1 	1 	15< 	1 	1 	1 MM!Q**	##<(0@tRV $ 
 
 4,w///F$4FLL%,	Ir1gdC[111[[]] 	6"(i/000004((B6"(h./////KK[[]]vbh(*+++++w|####[[t[$$vbh(*+++++[[u[%%vbh)+,,,,,]:&& 	.#KKnK---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.*c#)nn<<<<<<s   G33G7:G7c                    t          g dd          }t          g dd          }t          j        j        |d<   t          j        j        |d<   t          j        ||gddg          }|                                }t          j        |d         	                                g d	k              sJ t          j        |d         	                                g d	k              sJ t
          j
                            |          }t          j        |d         j        |j        k              sJ t          j                            |d         j        |j        d
d
          sJ t          j        |d         j        |j        k              sJ t          j                            |d         j        |j        d
d
          sJ d S )Nr3   r  r  r7  r   r  r8  r   FTFg+=r?  )r   r   r{   r  r  r   r   r   r|   isnullr   r#  r  r   jd)r.   r  r8  r_   rH  r   s         r$   test_mixin_pandas_maskedz#TestPandas.test_mixin_pandas_masked0  s   )))H---yyy///11L"b$666[[]]vbhoo''+?+?+??@@@@@vbhoo''+?+?+??@@@@@[$$R((vbhmrw./////u~~bhk25u5~IIIIIvbhmrw./////u~~bhk25u5~IIIIIIIr&   c                    t          ddgd          }ddg}t          j        ||gddg	          }|                    d
          }t          j                            |          }|j        dgk    sJ t          j                            |d
          }|j        ddgk    sJ t          j        |d         j        |j                  sJ d S )NrV  rB  rF  r  r   r4   r  r   r   rW  T)	r   r   r   r   r#  r}   r{   r   rF  )r.   r  r   r_   rH  r   s         r$   test_from_pandas_indexz!TestPandas.test_from_pandas_indexC  s    4,w///FKQc{333[[t[$$[$$R(({se####[$$Rt$44{tSk)))){2d8>284444444r&   use_nullable_intc                 ^   t          j        d          }g d|d<   g d|d         _        g d|d<   g d|d         _        g d	|d
<   g d|d
         _        g d	|d<   g d|d         _        g d|d<   g d|d         _        |r|                    |          }ndd l}ddlm}  ||j                   |d          k     }|rJt          j	        t          d          5  |                    |          }d d d            n# 1 swxY w Y   nLddlm} t          j        |d          5  |                    |          }d d d            n# 1 swxY w Y   d S t           j                            |          }|j                                        D ]\  }	}
t#          j        |
j        ||	         j        k              sJ t)          ||	         d          r*t#          j        |
j        ||	         j        k              sJ |
j        j        dk    rt#          j        |
j                  r|s||	         j        j        dk    sJ n||	         j        j        dk    sJ t#          j        d          5  t3          |
j        ||	         j                            |
j                             d d d            n# 1 swxY w Y   3|
j        j        dv r|
j        ||	         j        k    sJ [|
                                                                j        ||	         j        k    sJ d S )NTr  r3   r6   r  r   rF   FFTr   r   rb  r  )l    * Dy l   + dx l    i s Source)FFF)rh  r   )Versionz2.0devz/converted column 'a' from int(32|64) to float64r   )IntCastingNaNErrorz9Cannot convert non-finite values \(NA or inf\) to integerr  r  r   ignore)invalid)r  |)r   r   r  r   rX  packaging.versionrl  __version__rr   warnsr   pandas.core.dtypes.castrm  rs   r#  rA  itemsr{   r|   r   r?   r[   r  r  errstater   astyper  r"  r  )r.   rh  r_   rS   rX  rl  PANDAS_LT_2_0rm  r   r<   r&  s              r$   test_maskingzTestPandas.test_maskingP  sg   Kt$$$#)))# #***# #***# #***# VUU(000( 	-=>>AAMMM111111#GF$677''(:K:KKM \'L   G G 5EFFA	G G G G G G G G G G G G G G G GFFFFF]&V   G G 5EFFA	G G G G G G G G G G G G G G G
 [$$Q''IOO-- 	T 	TLD&6&+D677777r$x(( <vfkRX]:;;;;;| C''6&+&& 6/? 6d8>.#55555d8>.#5555 [222 X X&v{BtHM4H4H4V4VWWWX X X X X X X X X X X X X X X <)Z77!<2d8>99999!??,,99;;ARX^SSSSS'	T 	Ts6   !DDD,EEE59J::J>	J>	c                    dd l }dd lm} |                    g dg dd          }t          j                            ||j        |j        d          }|d         j	        |j        k    sJ |d         j	        |j        k    sJ t          j        t                    5  t          j                            ||j        |j        g           d d d            n# 1 swxY w Y   t          j        t                    5 }t          j                            ||j        |j        |j        d           d d d            n# 1 swxY w Y   t          |          d	k    sJ d
|d         j        j        d         v sJ d S )Nr   r3   )g?333333?g?)r   r_   r   r   r_   )r   r_   r   r   z{'y'})rX  astropy.unitsr	   	DataFramer   r   r#  r   r  r   rr   rs   r   rs  UserWarningr   messager  )r.   r[  r   r0  r_   records         r$   
test_unitszTestPandas.test_units  s   !!!!!!\\			@@AAK##BACac.B.B#CCv{ac!!!!v{ac!!!! ]9%% 	: 	:K##BqsACj#999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: \+&& 	N&K##BACac.L.L#MMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N6{{a&)+03333333s$   .CCC<5D==EEc                     g dg dd}t          j        |d          }|                    d           g d|d         _        |                                }|d         j        d	         d
k    sJ d S )Nr]  r   r@  r   )r   r  T)r   r  r  )r   r   r   r   r   r4   )r   r   rY  r  r   iloc)r.   r   r_   r0  s       r$   *test_to_pandas_masked_int_data_with__indexz5TestPandas.test_to_pandas_masked_int_data_with__index  s{    !		LLL99KT$///	G"&	[[]]&zr"a''''''r&   N)r`   ra   rb   r   rr   r  r  r2  r  rI  r`  re  rg  ry  r  r  rd   r&   r$   r  r    sH       1U 1U 1Uf [Z#r33[V___55
' 
' 65 43
'  '( '( '(R [/%??-= -= @?-=^J J J&5 5 5 [/$??@T @T @?@TD4 4 4*	( 	( 	( 	( 	(r&   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestReplaceColumnc                    |                      |           |                    | j        | j        g          }t	          j        t          d          5  g d|j        d<   ddd           n# 1 swxY w Y   t	          j        t          d          5  |                    dg d           ddd           n# 1 swxY w Y   t	          j        t          d          5  |                    dd	d
g           ddd           dS # 1 swxY w Y   dS )zFRaise exception when trying to replace column via table.columns objectz?Cannot replace column 'a'.  Use Table.replace_column.. instead.r   r3   r6   Nz)column name not there is not in the tablez	not therez,length of new column must match table lengthr   r4   )	r0   r   r6   rF   rr   rs   rt   rA  replace_columnrk   s      r$   test_fail_replace_columnz*TestReplaceColumn.test_fail_replace_column  s   K   tvtv.//]W
 
 
 	' 	' 'YYAIcN		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ]J
 
 
 	5 	5 [)))444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 ]M
 
 
 	* 	* S1a&)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s6   A++A/2A/B66B:=B:DD	Dc                    |                      |           |                    | j        | j        g          }|d         }|d         }g d}||                    |          |                    |d          |                    |d          fD ]}|                    d|           t          j        |d         |k              sJ |d         |usJ |d         |u sJ |j        ddgk    sJ |d         j	        i k    sJ |d         j
        J |d= t          |          dk    sJ ddg|d<   t          |          dk    sJ dS )	z)Replace existing column with a new columnr6   rF   )r{  g333333@gffffff@r   Nr5   r   r4   )r0   r   r6   rF   r   r  r{   r|   r}   r>   r=   r   )r.   r/   r_   tatbvalsr  s          r$   test_replace_columnz%TestReplaceColumn.test_replace_column  s{   K   tvtv.//sVsVt$$t#..t#..	
 	) 	)C S#&&&6!C&D.)))))S6####S6R<<<<:#s++++S6;"$$$$S6=(((( cF1vv{{{{Q#1vv{{{{{{r&   c                 ^   |                      |           |                    | j        | j        g          }|                    d           t          j        t                    5 }|                    dg d           ddd           n# 1 swxY w Y   |j	        j
        d         dk    sJ dS )z4Replace index column and generate expected exceptionr6   r3   Nr   z#cannot replace a table index column)r0   r   r6   rF   rY  rr   rs   rt   r  rG  r  )r.   r/   r_   r_  s       r$   test_replace_index_columnz+TestReplaceColumn.test_replace_index_column  s    K   tvtv.//	C]:&& 	-#S))),,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-y~a $IIIIIIIs   %B

BBc                    t          ddgddggddg          }t          j        dd	g          }|                    d|d
           |d         d         |d         k    sJ d|d         d<   |d         d         |d         k    sJ d S )Nr   r4   r5   r:   r6   rF   r   r   r   Fr   r   r   )r   r{   r   r  )r.   r_   r6   s      r$   test_replace_column_no_copyz-TestReplaceColumn.test_replace_column_no_copy  s    Aq6Aq6"3*555Hc3Z  	ae,,,vayAaD    #q	vayAaD      r&   N)r`   ra   rb   r  r  r  r  rd   r&   r$   r  r    sS        * * **  8J J J! ! ! ! !r&   r  c                       e Zd Zd Zd ZdS )%TestQTableColumnConversionCornerCasesc                     t          ddgddggddg          }t          dd	gd
          |d<   t          |d         t          j                  sJ dS )z%This is a small regression from #8902r   r4   r5   r:   r6   rF   r   rD   rE   r   r   N)r   r   r  r   Quantityr5  s     r$   1test_replace_with_masked_col_with_units_in_qtablezWTestQTableColumnConversionCornerCases.test_replace_with_masked_col_with_units_in_qtable  sa    QFQF#C:666q!f3///#!C&!*-------r&   c                     t          dt          j        z  gg          }t          j        t
          d          5  t          dgt          j                  |d<   d d d            n# 1 swxY w Y   t          |d         t                    sJ d S )Nr   zconvert it to Quantity failedr   r6   r   )r   r   r   rr   rs  r   r   r  r5  s     r$   6test_do_not_replace_string_column_with_units_in_qtablez\TestQTableColumnConversionCornerCases.test_do_not_replace_string_column_with_units_in_qtable	  s    QWI;\,4STTT 	- 	-SE,,,AcF	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-!C&&)))))))s    A&&A*-A*N)r`   ra   rb   r  r  rd   r&   r$   r  r    s2        . . .* * * * *r&   r  c                   >    e Zd ZdZ G d d          Zd Zd Zd ZdS )Test__Astropy_Table__z
    Test initializing a Table subclass from a table-like object that
    implements the __astropy_table__ interface method.
    c                       e Zd Zd Zd ZdS )!Test__Astropy_Table__.SimpleTablec                 ~    g dg dg dt           j        z  g| _        g d| _        t	          ddg          | _        d S )Nr3   rC   rJ   r   )r6   r   )rF   r4   )r   r   rA  r   r   r>   r@   s    r$   rP  z*Test__Astropy_Table__.SimpleTable.__init__	  sE    %IIyyy)))ac/BDL(DJ#Xx$899DIIIr&   c                     | j         \  }}}d|j        _        t          j        |d          t          j        |d          |g}d |D             } |||||p| j                  S )NrN   r6   r   rF   c                 &    g | ]}|j         j        S rd   )r9  r<   rE  r  s     r$   rF  zGTest__Astropy_Table__.SimpleTable.__astropy_table__.<locals>.<listcomp>	  s    333sSX]333r&   )r   r   r>   )rA  r9  r<   r   r   r   r>   )	r.   clsr   rf  r6   rF   rN   r   r   s	            r$   __astropy_table__z3Test__Astropy_Table__.SimpleTable.__astropy_table__	  sw    lGAq!AFKL---u/A!#/N/N/NPQRD33d333E3t5t&:MDINNNNr&   N)r`   ra   rb   rP  r  rd   r&   r$   SimpleTabler  	  s7        	: 	: 	:
	O 	O 	O 	O 	Or&   r  c                    t           j        t           j        fD ]}|t           j        u rt          j        nt           j        }dD ]}|                                 } |||d          }|j        g dk    sJ |j        ddik    sJ t          j
        |d         |j        d         k              sJ t          j
        |d         |j        d	         k              sJ |t           j        u r|d
         j        n|d
         }t          j
        |j        d         j        |k              sJ t          |d         t           j                  sJ t          |d         t           j                  sJ t          |d
         |          sJ |d
         j        t          j        u sJ t#          |          |u sJ d|d         d<   |r|j        d         d         d	k    snnJ dS )zEMake a SimpleTable and convert to Table, QTable with copy=False, True)FTextra!)r   
extra_metar   r  r6   r   rF   r   rN   r4   r   N)r   r   r   r   r  r   r  r}   r>   r{   r|   rA  rG  r  r   r   r   r   )r.   r^  col_c_classcpystr_   r  s          r$   test_simple_1z#Test__Astropy_Table__.test_simple_1	  s   +u|4 	< 	<I(1U\(A(A!**u|K$ < <%%''Ibsx@@@z___4444v,!99999vaf
1566666vaf
1566666'0EL'@'@qv||afvbjm1T9:::::!!C&%,77777!!C&%*<=====!!C&+66666v{ac))))Aww)++++ #q	03;rz!}Q'1,,,,,,'<	< 	<r&   c                    |                                  }t          j        t          j        t          j        g}g d}t          dg          }t          j        ||||          }|j        |k    sJ t          d t          |j                                        |          D                       sJ |j        |j        k    sJ |j        |k    sJ dS )zATest converting a SimpleTable and changing column names and typesr   )rN   r5   )r[   r   r>   c              3   8   K   | ]\  }}|j         j        |u V  d S r*   )r[   r   )rE  r  r[   s      r$   r  z6Test__Astropy_Table__.test_simple_2.<locals>.<genexpr><	  s@       
 
(2UCINe#
 
 
 
 
 
r&   N)r  r{   int32r   float16r   r   r   r}   r|   r  rA  r  r>   )r.   r  dtypesr   r>   r_   s         r$   test_simple_2z#Test__Astropy_Table__.test_simple_24	  s    (BJ
3H:&&K&DAAAzU"""" 
 
69!):J:J:L:Lf6U6U
 
 
 
 
 	
 	
 	

 v    v~~~~~~r&   c                     t          j        t                    5 }t          j        dggd           ddd           n# 1 swxY w Y   dt          |j                  v sJ dS )zgIf extra kwargs provided but without initializing with a table-like
        object, exception is raisedr   r  )r  Nz*__init__() got unexpected keyword argument)rr   rs   r   r   r   r!   rG  )r.   r_  s     r$   test_kwargs_exceptionz+Test__Astropy_Table__.test_kwargs_exceptionD	  s     ]9%% 	4K!(3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4;s39~~MMMMMMs   ?AAN)r`   ra   rb   rR  r  r  r  r  rd   r&   r$   r  r  	  s         
O O O O O O O O< < <2   N N N N Nr&   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestUpdatec                     t          dd          | _        t          dd          | _        t          dd          | _        t          dd	          | _        d S )
Nr3   r6   r   rC   rF   rJ   rN   r  rS   )r   r6   rF   rN   rS   r@   s    r$   r0   zTestUpdate._setupM	  sV    	,,,	,,,	,,,3///r&   c                    |                                   t          | j        g          }t          | j        d d         g          }d}t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   |j        dgk    sJ t          j
        |d         | j        k              sJ |j        dgk    sJ t          j
        |d         | j        d d         k              sJ d S )Nr   z Inconsistent data column lengthsr   r6   rF   r0   r   r6   rF   rr   rs   rt   updater}   r{   r|   )r.   rd  r   msgs       r$   test_different_lengthsz!TestUpdate.test_different_lengthsS	  s1   DF8__DF3B3K=!!0]:S111 	 	IIbMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 {se####vbg'((((({se####vbg,-------s   $BB
B
c                    |                                   t          | j        g          }| j        dgd}d}t	          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   |j        dgk    sJ t          j
        |d         | j        k              sJ || j        dgdk    sJ d S )Nr   )rF   rN   z(Inconsistent data column lengths: {1, 3}r   r6   r  )r.   r_   rS   r  s       r$   test_invalid_inputszTestUpdate.test_invalid_inputs`	  s   46(OO&s##8]:S111 	 	HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	zcU""""vaf&'''''$&s++++++++s   A44A8;A8c                 8   |                                   t          | j        gddgdd          }t          | j        gddgd          }t	          j        |j                  }|                    |           |j        dddgddk    sJ |j        |k    sJ d S )Nr   Tr   r>   r   r  )r0   r   r6   rF   r   r  r>   r  )r.   rd  r   t2metas       r$   test_metadata_conflictz!TestUpdate.test_metadata_conflictl	  s    DF8$"?"?@@@DF8"4"4555rw''
		"wAT::::::w&      r&   c                 P   |                                   t          | j        | j        g          }t          | j        | j        g          }|dxx         dz  cc<   |                    |           |j        g dk    sJ t          j        |d         | j        k              sJ t          j        |d         | j        dz   k              sJ t          j        |d         | j        k              sJ |j        ddgk    sJ t          j        |d         | j        dz   k              sJ t          j        |d         | j        k              sJ t          | j                  t          | j
                  d}t          j        |          }|                    |           |j        g dk    sJ t          j        |d         | j        k              sJ t          j        |d         | j        k              sJ t          j        |d         | j
        k              sJ ||k    sJ |j        g dk    sJ t          j        |d         | j        k              sJ t          j        |d         | j        dz   k              sJ t          j        |d         | j        k              sJ d S )	NrF   r   r   r6   rN   rF   rS   rF   rN   rS   rS   )r0   r   r6   rF   rN   r  r}   r{   r|   ru  rS   r   r  )r.   rd  r   rS   dcs        r$   test_updatezTestUpdate.test_updatev	  s   DFDF#$$DFDF#$$
31
		"{ooo----vbg'(((((vbg!+,,,,,vbg'((((({sCj((((vbg!+,,,,,vbg'(((((tv,,T$&\\22]1
		!{ooo----vbg'(((((vbg'(((((vbg'(((((Bwwww {ooo----vbg'(((((vbg!+,,,,,vbg'(((((((r&   c                    |                                   t          | j        | j        g          }t          | j        | j        g          }|                    |d           |dxx         dz  cc<   |j        g dk    sJ t          j        |d         | j        k              sJ t          j        |d         | j        dz
  k              sJ t          j        |d         | j        k              sJ t          j	        | j                  t          j	        | j
                  d}|                    |d           |dxx         d	z  cc<   |j        g d
k    sJ t          j        |d         d	| j        z  k              sJ t          j        |d         | j        k              sJ t          j        |d         | j
        k              sJ d S )NFr   rF   r   r   r6   rN   r  r4   r  rS   )r0   r   r6   rF   rN   r  r}   r{   r|   r   rS   )r.   rd  r   rS   s       r$   test_update_without_copyz#TestUpdate.test_update_without_copy	  s   DFDF#$$DFDF#$$
		"5	!!!
31{ooo----vbg'(((((vbg!+,,,,,vbg'((((((46""$&)9)9::
		!%	   	#!{ooo----vbgTV+,,,,,vbg'(((((vbg'(((((((r&   c                    |                                   t          | j        | j        g          }t          | j        | j        g          }t          j        t                    5  d|z  }d d d            n# 1 swxY w Y   t          j        t                    5  |dz  }d d d            n# 1 swxY w Y   |                    d          }||z  }|j	        ddgk    sJ t          j        |d         | j        k              sJ t          j        |d         | j        k              sJ |                    |           |j	        g dk    sJ t          j        |d         |d         k              sJ t          j        |d         |d         k              sJ t          j        |d         |d         k              sJ d S )Nr   Tr6   rF   r   rN   )r0   r   r6   rF   rN   rr   rs   r   r   r}   r{   r|   r  )r.   rd  r   _t1_copyr  s         r$   test_merge_operatorzTestUpdate.test_merge_operator	  s"   DFDF#$$DFDF#$$]9%% 	 	BA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	 	QA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ''$--"W{sCj((((vbg'(((((vbg'(((((r{ooo----vbg-.....vbg-.....vbg-.......s$   $A66A:=A:B,,B03B0c                 f   |                                   t          | j        | j        g          }t          | j        | j        g          }t          j        t                    5  |dz  }d d d            n# 1 swxY w Y   |                    d          }||z  }|	                    |           |j
        g dk    sJ t          j        |d         |d         k              sJ t          j        |d         |d         k              sJ t          j        |d         |d         k              sJ d S )Nr   Tr   r6   rF   rN   )r0   r   r6   rF   rN   rr   rs   rt   r   r  r}   r{   r|   )r.   rd  r   r  s       r$   test_update_operatorzTestUpdate.test_update_operator	  s[   DFDF#$$DFDF#$$]:&& 	 	!GB	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ''$--
br{ooo----vbg-.....vbg-.....vbg-.......s   $A66A:=A:N)r`   ra   rb   r0   r  r  r  r  r  r  r  rd   r&   r$   r  r  L	  s        0 0 0. . .
, 
, 
,! ! !) ) )>) ) )&/ / /*/ / / / /r&   r  c                  B   t          j        dgg          } dddgi}|| _        | j        |u sJ | dd         }|j        | j        usJ |j        | j        k    sJ |j        d         | j        d         u sJ t          j        | d          }|j        | j        usJ |j        | j        k    sJ |j        d         | j        d         u sJ t          j        | d          }|j        | j        usJ |j        | j        k    sJ |j        d         | j        d         usJ dS )zk
    Test no copy vs light (key) copy vs deep copy of table meta for different
    situations.  #8404.
    r   r4   NFr   Tr   r   r>   )r_   r>   r   s      r$   test_table_meta_copyr  	  sR   
 	aSEA1v;D AF6T>>>> 
111B7!&    7af71:"""" 
QU	#	#	#B7!&    7af71:"""" 
QT	"	"	"B7!&    7af71:QVAY&&&&&&r&   c                  &   dddgi} dddgi}t          j        dgg| d          }|j        | u sJ t          j        dgg|           }|j        | usJ |j        | k    sJ t          j        ||d          }|j        |u sJ |j        |j        k    sJ t          j        ||          }|j        |usJ |j        |j        k    sJ t          j        |di 	          }|j        i k    sJ t          j        |dd
	          }|j        |j        k    sJ t          j        | d          }|j        | u sJ |j        d         | d         u sJ t          j        |           }|j        | usJ |j        | k    sJ |j        d         | d         usJ d
S )z
    Test no copy vs light (key) copy vs deep copy of table meta when meta is
    supplied as a table init argument.  #8404.
    r   r4   r5   r:   F)r>   r   r  T)r   r>   Nr  )r>   meta2r_   r   s       r$   "test_table_meta_copy_with_meta_argr  	  s   
 1v;DAKEaSE5111A6T>>>>aSE%%%A66T>>>> 
QU	/	/	/B7e7af 
QU	#	#	#B7%7af 
QT	+	+	+B7b==== 
QT	-	-	-B7af 	E***A6T>>>>6!9Q 	A66T>>>>6!9DG######r&   c                     g dt           j        z  } g d}t          j        | |gddg          }|d         }|d         }dg di|j        _        d|j        _        |                    d|                     d	                     t          j
        |d         |k              sJ |d         |usJ |d         |u sJ |j        ddgk    sJ |d         j        j        J |d         j        j        J d
S )z>Replace existing Quantity column with a new column in a QTabler3   rC   r6   rF   r   r8   r9   z%fcmN)r   r   r   r   r9  r>   r=   r  tor{   r|   r}   )r6   rF   r_   r  r  s        r$   test_replace_column_qtabler  
  s   		ACA		AaVC:...A	
3B	
3B///*BGLBGNS!$$t**%%%6!C&B,S6S6R<<<<:#s####S6;###S6;%%%%%r&   c                      ddgt           j        z  } ddg}t          j        | |gddg          }t	          |d         t           j                  sJ |d         }dt           j        z  |d<   t          j        |d         ddgt           j        z  k              sJ |d         |u sJ dd	g|d<   t          j        |d         dd	gk              sJ t	          |d         t          j                  sJ |d         |usJ d
S )z
    Test table update like ``t['a'] = value``.  This leverages off the
    already well-tested ``replace_column`` and in-place update
    ``t['a'][:] = value``, so this testing is fairly light.
    r   r4   r5   r:   r6   rF   r   rD   rE   N)	r   r   r   r   r  r  r{   r|   r   )r6   rF   r_   r  s       r$   &test_replace_update_column_via_setitemr  /
  s    
AA	
AAaVC:...Aafaj))))) 
3BWAcF6!C&QFQSL()))))S6R<<<< VAcF6!C&QF"#####afel+++++S6r&   c                      t          j        g dg dgddg          } t           j                            dg d          5  d| d<   g d	| d<   d
d
d
           d
S # 1 swxY w Y   d
S )za
    Test warnings related to table replace change in #5556:
    Normal warning-free replace
    r3   rC   r6   rF   r   replace_warningsrefcount
attributesr  r   r   rh      N)r   r   confset_tempr  s    r$   6test_replace_update_column_via_setitem_warnings_normalr  G
  s    
 	YYY			*3*===A			/1T1T1T	U	U  ##                 s   AA"Ac                     t          j        g dg dgddg          } t           j                            dg d          5  | dd	         }d
|d<   t	          j        | d         g dk              sJ t          j        t          d          5 }ddg|d<   ddd           n# 1 swxY w Y   t          |          dk    sJ 	 ddd           dS # 1 swxY w Y   dS )zc
    Test warnings related to table replace change in #5556:
    Replace a slice, one warning.
    r3   rC   r6   rF   r   r  r  Nr4   r   )r   r   r5   z3replaced column 'a' which looks like an array slicer   r   rh   r   )
r   r   r  r  r{   r|   rr   rs  r   r   )r_   r   ws      r$   5test_replace_update_column_via_setitem_warnings_slicer  R
  s|   
 	YYY			*3*===A			/1T1T1T	U	U  rrU3vaf			)*****\G
 
 
 	 2hBsG		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 1vv{{{{{                 s7   ACB"C"B&	&C)B&	*CCCc                  n   t          j        g dg dgddg          } d| d         _        t          j        t
          d          5 }t           j                            d	g d
          5  g d| d<   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          |          dk    sJ dS )zV
    Test warnings related to table replace change in #5556:
    Lost attributes.
    r3   rC   r6   rF   r   r   z4replaced column 'a' and column attributes \['unit'\]r   r  r  r  Nr   )	r   r   r   rr   rs  r   r  r  r   )r_   r  s     r$   :test_replace_update_column_via_setitem_warnings_attributesr  f
  sG   
 	YYY			*3*===AAcFK	I
 
 
 " 
Z   C C C
 
 	" 	" "\\AcF	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"	" " " " " " " " " " " " " " " q66Q;;;;;;s6   #B*A>2B>B	BB	BBBc                  d   t          j        g dg dgddg          } | d         }t          j        t          d          5 }t           j                            dg d	          5  g d
| d<   ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   t          |          dk    sJ dS )z^
    Test warnings related to table replace change in #5556:
    Reference count changes.
    r3   rC   r6   rF   r   z0replaced column 'a' and the number of referencesr   r  r  r  Nr   )r   r   rr   rs  r   r  r  r   )r_   r  r  s      r$   8test_replace_update_column_via_setitem_warnings_refcountr  y
  sC   
 	YYY			*3*===A	
3B	#U
 
 
 "	
Z   C C C
 
 	" 	" "\\AcF	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " " q66Q;;;;;;s6   #B%A9-B9A=	=B A=	BBBc                     ddl m} m} t          j        g dg dgddg          }t          j                            dd	g          5  d|d<   t          j        t          d
          5 } | |                       }g d|d<   ddd           n# 1 swxY w Y   t          |          dk    sJ |d         j        |j        dz   k    sJ d|d         j        v sJ 	 ddd           dS # 1 swxY w Y   dS )z
    Test warnings related to table replace change in #5556:
    Test 'always' setting that raises warning for any replace.
    r   )currentframegetframeinfor3   rC   r6   rF   r   r  alwayszreplaced column 'a'r   r  Nr   
test_table)inspectr  r  r   r   r  r  rr   rs  r   r   linenor  )r  r  r_   r  	frameinfos        r$   6test_replace_update_column_via_setitem_warnings_alwaysr  
  s   
 32222222YYY			*3*===A			/(	<	< 
- 
-#\-5JKKK 	"q$\\^^44I!\\AcF	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 1vv{{{{ t{i.22222qt},,,,,
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-s7   !C*)BC*B	C*B	AC**C.1C.c                     t          j        g dg dgddg          } | d         }d| d         _        t           j                            dd          5  t           j                            d	g d
          5  d| d<   || d         u sJ g d| d<   || d         u sJ t          j        | d         g dk              sJ 	 ddd           n# 1 swxY w Y   ddd           dS # 1 swxY w Y   dS )zh
    Test the replace_inplace config option related to #5556.  In this
    case no replace is done.
    r3   rC   r6   rF   r   r   replace_inplaceTr  )r  r  r  r  r   r  N)r   r   r   r  r  r{   r|   )r_   r  s     r$   6test_replace_update_column_via_setitem_replace_inplacer  
  s   
 	YYY			*3*===A	
3BAcFK			.	5	5 	2 	2Z   M M M
 
 	2 	2 AcF3<<<<!\\AcF3<<<<6!C&LLL0111111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s7   #C#7AC?C#C	C#C	C##C'*C'c                     t          j        ddgd          } |                     d           | j        }|d         dk    sJ | dd         }|                                 }t          j        |           }||j        k    sJ ||j        k    sJ ||j        k    sJ | j        d         |j        d         k    sJ | j        d         |j        d         k    sJ | j        d         |j        d         k    sJ dS )	zbTest whether a new Table inherits the primary_key attribute from
    its parent Table. Issue #4672)r4   r5   r4   r   )rL   rK   rE   rD   r  r   r6   r   Nr   )r   r   rY  primary_keyr   loc)r_   original_keyr   r  t4s        r$   test_primary_key_is_inheritedr  
  s    	\<0
CCCAKK=L ?c!!!!	
111B	
B	QB 2>))))2>))))2>)))) 58rvay    58rvay    58rvay      r&   c                     t          j        dggd          } t                      }|                     |d           t           j                            |                                dd          }|d         j        J dS )	zTest that a char column of a QTable is assigned no unit and not
    a dimensionless unit, otherwise conversion of reader output to
    QTable fails.ABr   z
ascii.ipacr  F)r=   guessN)r   r   r   writer  getvaluer   )rd  r  r   s      r$   1test_qtable_read_for_ipac_table_with_char_columnsr  
  sw     
ugS	)	)	)B
**CHHSH&&&			3<<>>,e		L	LBc7<r&   c                      t          j        dgdg          } | d         }t          j        |          d         }|d         dk    sJ dS )z~Regression test for issue #8422: passing the last row of a table into
    Table should return a new table containing that row.r  r  r   r   r   r4   N)r   r   )rd  r  r   s      r$    test_create_table_from_final_rowr  
  sN     
fXeW	-	-	-B
R&C	S		%	 Ba5A::::::r&   c                  Z   g d} t          j        | dddid          }t          j        g ddd	g
          }t          j        g ddg
          }t          j        ||                    ddg                    sJ t          j        ||                    dg                    sJ d S )N))r   r   r   )r:   r:  r   )rD   ffffff @zr   r<   zfirst table)ro  r  S1)r  r   r>   r[   ))r   r   )r:   r:  )rD   r	  )r6   r  )rF   z<f8rZ   ))   x)   y)   z)rN   r  r6   rF   r   rN   )r   r   r{   r   r  r  )	data_rowsrd  r6   rF   s       r$   test_key_values_in_as_arrayr  
  s    ===I	m$ 	
 
 
B 	///l7STTTA
,,,[MBBBA>!R[[Sz[::;;;;;>!R[[u[556666666r&   c                  *   t          j        g dg dg dgd          } | d                                         g dk    sJ t          | d                                         g d           | d                                         g d	k    sJ t	          | d                                         d
         t
                    sJ t	          | d                                         d
         t                    sJ t	          | d                                         d
         t                    sJ t          j        ddgddggddgddgggd          } | d                                         ddgddggk    sJ | d                                         ddgddggk    sJ t	          | d                                         d
         d
         t
                    sJ t	          | d                                         d
         d
         t                    sJ d S )Nr3   )r  g@gffffff
@)   foo   bar   hellor   r   r6   rF   rN   )foobarr   r   r   r4   r5   r:   r  r  r  s   worldr6   rN   r  r  r   r   )r   r   tolistr   r  r   floatr!   r  s    r$   test_tolistr  
  s    	OOO%?%?%?@	 	 	A S6==??iii''''qv}}888S6==??5555555afmmooa(#.....afmmooa(%00000afmmooa(#.....a&1a&	VV,x.BCDJ	 	 	A S6==??1v1v.....S6==??u~/ABBBBBafmmooa(+S11111afmmooa(+S1111111r&   c                   R    e Zd Z e            Z eg           Z ed          ZdS )MyTable)defaultr   N)r`   ra   rb   r   r  r  bazrd   r&   r$   r  r    s?        
.

C
.
$
$
$C
.
#
#
#CCCr&   r  c                     t          t          j                  dk    sJ t          ddgg          } d| j        vsJ | j        J d| j        vsJ | j        dk    sJ d| j        v sJ | j                            d           | j        dgk    sJ | j        dk    sJ d| _        | j        dk    sJ t          j        t          j	        |                     }|j        J |j        dk    sJ |j        dgk    sJ d ddggfD ]<}t          |ddd	          }|j        dk    sJ |j        dk    sJ |j        dk    sJ =t          |          }|j        dk    sJ |j        dk    sJ |j        dk    sJ t          |d
d          }|j        d
k    sJ |j        dk    sJ |j        dk    sJ | `d| j        d         vsJ | `d| j        vsJ d S )Nz#<TableAttribute name=baz default=1>r   r4   __attributes__r   r  r5   r  )r  r  r  rD   fubar)r  r  )
reprr  r  r>   r  r  r  pickleloadsdumps)r_   rH  r   r   r  s        r$   test_table_attributer&    s1    EEEEE!QA 16))))5===16))))5A::::qv%%%%ELL5SE>>>>5A::::AE5E>>>> 
fl1oo	&	&B6>>>6U????6cU???? 1vh  Tqe777v{{{{vv 
B6Q;;;;6U????6U????		(	(	(B6Q;;;;6W6U???? 	
/00000	16))))))r&   c                      t          ddggdgd          } t                      }|                     |d           t                               |                                d          }|j        J |j        dgk    sJ |j        dk    sJ d S )Nr   r4   r   r  )r  r  z
ascii.ecsvr  )r  r   r  r  r  r  r  r  )r_   r  r   s      r$   test_table_attribute_ecsvr(  D  s    !Qse///A
**CGGCG%%%	cllnn\	:	:B6>>>6cU????6U??????r&   c                  Z   t           j        d d         dk    rt          j        t          d          } nt          j        t
          d          } | 5   G d dt                    }d d d            n# 1 swxY w Y   | 5   G d d	t                    }d d d            d S # 1 swxY w Y   d S )
Nr4   )r5   r   z .* not allowed as TableAttributer   zError calling __set_name__c                   "    e Zd Z e            ZdS )+test_table_attribute_fail.<locals>.MyTable2N)r`   ra   rb   r   descriptionsrd   r&   r$   MyTable2r+  Y  s        )>++LLLr&   r-  c                   "    e Zd Z e            ZdS )+test_table_attribute_fail.<locals>.MyTable3N)r`   ra   rb   r   r}   rd   r&   r$   MyTable3r/  ^  s        %~''HHHr&   r0  )r  version_inforr   rs   rt   RuntimeErrorr   )ctxr-  r0  s      r$   test_table_attribute_failr4  O  sb   
w&&mJ.PQQQ mL0LMMM	 , ,	, 	, 	, 	, 	,u 	, 	, 	,, , , , , , , , , , , , , , ,
 
 ( (	( 	( 	( 	( 	(u 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s$   A22A69A6?B  B$'B$c                  V   ddgddgg} t          j        t          d          5  t          | t          j        g           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | d	t          j        i           d d d            d S # 1 swxY w Y   d S )
Nr   r   r8   r   z4sequence of unit values must match number of columnsr   r   z0invalid column name c for setting unit attributerN   )rr   rs   rt   r   r   r   )dats    r$   test_set_units_failr7  b  s=   :d|
$C	P
 
 
     	c!#                              
L
 
 
 % % 	c#qs$$$$% % % % % % % % % % % % % % % % % %s#   AAA3BB"%B"c                     ddgddgddgg} t           j        d d f}t          t          fD ]}t           j        dd|fD ]} || |g d	
          }|t          u rft	          |d         t           j                  sJ t	          |d         t          j                  sJ t	          |d         t          j                  sJ t          |	                                |          D ]\  }}|j
        j        |u sJ d S )Nr   r   r8   r   r5   r:   ry  r  r   )r	   r   r6   rF   rN   )r   r   r   r   r  r  r   r   r  r  r9  r   )r6  	exp_unitsr  r	   r  r  r   s          r$   test_set_unitsr:  n  s!   :d|aV
,CdD!If} - -Cb))95 	- 	-ES___===Bf}}!"S'1:66666!"S'5<88888!"S'5<88888 	:: - -	Tx},,,,,-	-- -r&   c                      ddgddgg} d}t           t          fD ]U}ddi|fD ]L} || |ddg	          }t          |                                |          D ]\  }}|j        j        |k    sJ MVd S )
Nr   r   r8   r   )my descriptionNr6   r<  rF   )r,  r   )r   r   r  r  r9  r  )r6  exp_descriptionsr  r,  r  r  r  s          r$   test_set_descriptionsr>  |  s    :d|
$C/f} ; ;!#346FG 	; 	;LS|C:FFFB$'7G$H$H ; ; [x+{:::::;	;; ;r&   c                     g d} t          j        | ddd          d         }t          j        | dd|          }t          |t          j                  sJ |d         j        j        J |d	         j        j        t          j        u sJ d S )
N)za,bz,sz1,2z3,4r  r   r4   )r=   
data_startdata_endr   )r=   r@  r	   r6   rF   )	r   r  r  r   Rowr9  r   r   r  )textr	   r_   s      r$   test_set_units_from_rowrD    s    &&&DJtGAFFFqIE
4AUCCCAeUY'''''S6;###S6;qs""""""r&   c                  n   t           t          fD ]} |                     ddgdt          j        t          j        gddg          }|d         j        j        t          j        u sJ |d         j        j        t          j        u sJ |d         j        j        dk    sJ |d         j        j        dk    sJ d	S )
zTest setting units and descriptions via Table.read.  The test here
    is less comprehensive because the implementation is exactly the same
    as for Table.__init__ (calling Table._set_column_attribute)za bz1 2r  hithere)r=   r	   r,  r6   rF   N)	r   r   r  r   r   r  r9  r   r  )r  r_   s     r$    test_set_units_descriptions_readrH    s     f} 
2 
2HHEN3*	  
 
 v{13&&&&v{13&&&&v{&$....v{&'11111
2 
2r&   c                     t          j        ddgg          } ddgg| d<   d| d<   dg| d<   t          j        | d         ddgddggk              sJ t          j        | d         ddgk              sJ t          j        | d         ddgk              sJ d	| d         d<   t          j        | d         dd	gk              sJ d
S )zAExplicitly check re-work of code related to broadcasting in #8933r   r4   r5   r:   r6   rD   rF   rN   r   N)r   r   r{   r|   r  s    r$   test_broadcasting_8933rJ    s    aVHA!fXAcFAcFSAcF6!C&aVaV,,-----6!C&QF"#####6!C&QF"##### AcF1I6!C&QG#$$$$$$$r&   c                      G d dt           j                   G d d          }  G d dt           j                   G d d          } G fd	d
t           j                  }t          j        dg          }t          j        dgdg          } dgdg          } |dg          } | dgdg          } ||||||gg d          } |            }	||	d<   ||	d<   ||	d<   ||	d<   ||	d<   ||	fD ]}
t	          |
d                   u sJ t	          |
d                   u sJ t	          |
d                   u sJ t	          |
d                   |u sJ t	          |
d                   | u sJ dS )zTest the refactor and change in column upgrades introduced
    in 95902650f.  This fixes a regression introduced by #8789
    (Change behavior of Table regarding masked columns).c                       e Zd ZdS )Dtest_custom_masked_column_in_nonmasked_table.<locals>.MyMaskedColumnNr`   ra   rb   rd   r&   r$   MyMaskedColumnrM            r&   rO  c                       e Zd ZdS )Gtest_custom_masked_column_in_nonmasked_table.<locals>.MySubMaskedColumnNrN  rd   r&   r$   MySubMaskedColumnrR    rP  r&   rS  c                       e Zd ZdS )>test_custom_masked_column_in_nonmasked_table.<locals>.MyColumnNrN  rd   r&   r$   MyColumnrU    rP  r&   rV  c                       e Zd ZdS )Atest_custom_masked_column_in_nonmasked_table.<locals>.MySubColumnNrN  rd   r&   r$   MySubColumnrX    rP  r&   rY  c                       e Zd Z ZZdS )=test_custom_masked_column_in_nonmasked_table.<locals>.MyTableN)r`   ra   rb   r   r   )rV  rO  s   r$   r  r[    s        %r&   r  r   r4   Tr  r5   r:   rD   )r6   rF   rN   rS   r   r   r6   rF   rN   rS   r   N)r   r   r   r   r   )rS  rY  r  r6   rF   rN   rS   r   rd  r   r_   rV  rO  s              @@r$   ,test_custom_masked_column_in_nonmasked_tabler]    sa   
    +       N       5<       h   & & & & & & & &%+ & & & 	aSAA3dV,,,As$(((AQCA1#TF+++A 
!Q1a(A(A(A	B	B	BB	BBsGBsGBsGBsGBsG"X 1 1AcF||x''''AcF||~----AcF||~----AcF||{****AcF||0000001 1r&   c                     t          ddgt          ddgddgd          gd	d
g          } d	ddgi}| d	         }| d
         }|| d
         j        _        |                     d	           t          j        | d	         ddgk              sJ t          j        | d
         j        	                    t          j                  ddg          sJ t          j        | d
         j        	                    t          j                  ddg          sJ | d	         |u sJ | d
         |u sJ d| d
         j        j        d	         d<   |d	         d         dk    sJ dS )zqTest sorting a table that has a mutable column such as SkyCoord.

    In this case the sort is done in-place
    r4   r   r:   r5   rE   rD   zdeg,degr   r6   r   r   r   r   N)r   r
   r9  r>   r   r{   r|   r   r   r   r   r   dec)r_   r>   r  tscs       r$   test_sort_with_mutable_skycoordra    sX   
 	1vxAAY???@dTTTA!Q=D	
3B
D'CAdGLFF3KKK6!C&QF"#####;qwz**1511Aq6:::::;qw{++AE22QF;;;;;S6R<<<<T7c>>>> !$AdGLc19Q<3r&   c                      t          ddgddggddg          } | d         }| d         }| d                             d	           dddgi}|| d         j        _        |                     d           t          j        | d         ddgk              sJ t          j        | d         ddgk              sJ || d         u sJ || d         usJ d
| d         j        j        d         d<   |d         d         dk    sJ dS )z3Test sorting a table that has a non-mutable column.r4   r   r5   r:   r6   rF   r   F)r  r   r   N)r   setflagsr9  r>   r   r{   r|   )r_   r  r  r>   s       r$   test_sort_with_non_mutablerd    s   1v1vsCj111A	
3B	
3BcFOO%O   !Q=DAcFKFF3KKK6!C&QF"#####6!C&QF"#####3<<<<QsV  #AcFKS!9Q<1r&   c                     t           j                            g dg d          } t           j                            g dg d          }| |g}t          j        |gdg          }|| g|d<   |d         j        d	k    sJ t          j        |d         d
         | k              sJ t          j        |d         d         |k              sJ t          j        |d         d
         j        | j        k              sJ t          j        |d         d         j        |j        k              sJ |d         j        d	k    sJ t          j        |d         d
         |k              sJ t          j        |d         d         | k              sJ t          j        |d         d
         j        |j        k              sJ t          j        |d         d         j        | j        k              sJ dS )zTest the fix for #8977r]  r  r\  )r5   r:   rD   rb  r6   r   rF   )r4   r5   r   r   N)r{   r  r   r   r   r   r|   r  )m0m1mcr_   s       r$   $test_init_with_list_of_masked_arraysri    s   	YYY%8%8%8	9	9B	YYY%9%9%9	:	:B
bB 	RD&&&A "XAcFS6<6!!!!6!C&)r/"""""6!C&)r/"""""6!C&).BG+,,,,,6!C&).BG+,,,,,S6<6!!!!6!C&)r/"""""6!C&)r/"""""6!C&).BG+,,,,,6!C&).BG+,,,,,,,r&   c                      t          j        ddgg          } d| d<   t          j        d          | d<   t          j        | d         ddgk              sJ t          j        | d         ddgk              sJ dS )zcTest the update to how data_to_col works (#8972), using the regression
    example from #8971.
    r   r   r6   r4   rF   N)r   r   r{   r   r|   r  s    r$   !test_data_to_col_convert_strategyrk    s     	aVHAAcFXa[[AcF6!C&QF"#####6!C&QF"#######r&   c                     t          j        g d          } t                      }t           j                            ddgddg|           |d<   t          j        |d         d         j        d	d	gk              sJ t          j        |d         d
         j        d	dgk              sJ t          j        |d         d         j        dd	gk              sJ t          |d         t                    sJ dS )z?Test that adding a masked ndarray with a structured dtype works))r
  r  )r   r  )r   ro  r3   rC   rj  rb  r,  r6   r
  Fr   Tr   N)	r{   r[   r   r  r   r|   r  r  r   )r[   r_   s     r$   test_structured_masked_columnrm  *  s    H<<<==EAU[[	

 ! 
   
 
AcF 6!C&+"uen4555556!C&+"udm3444446!C&+"tUm344444afl+++++++r&   c                     t          ddgd          } ddgt          j        z  }dt          j        z  dgddt          j        z  gd|d         | d         fd|d         | d         fg}t          j        |          |d         |d         gd<   | d         | d         gd<   d	<   d
<   t          j        d         |k              sJ t          j        d         | k              sJ t          j        d         |k              sJ t          j        d         | k              sJ t          j        fdt          d          D                       sJ t          j        fdt          d          D                       sJ t          d	                   t          j	        u sJ d	         j
        t          j
        t                    u sJ t          d
                   t          j	        u sJ d
         j
        t          j
        t                    u sJ dD ]}                    |           t          dd          g}t          |dggd                              d           dS )zTest for #9165 to allow adding a list of mixin objects.
    Also test for fix to #9357 where group_by() failed due to
    mixin object not having info.indices set to [].
    r   r4   r  r  r   r  r6   rF   rg  m2r   r   c              3   H   K   | ]}d          |         |         k    V  dS )rg  Nrd   )rE  iimixed1r_   s     r$   r  z(test_rows_with_mixins.<locals>.<genexpr>V  4      ??!D'"++??????r&   c              3   H   K   | ]}d          |         |         k    V  dS )ro  Nrd   )rE  rq  mixed2r_   s     r$   r  z(test_rows_with_mixins.<locals>.<genexpr>W  rs  r&   )r   r   r   r6   rF   i  mjdgbt)rv  obsr   rx  N)r   r   r   r   r   r{   r|   r  r   r   r[   r  group_byr   )r  rc  r  r<   mjdsrr  ru  r_   s        @@@r$   test_rows_with_mixinsr{  ?  s   
 
q!fX	&	&	&B	
AA!#gq\FQS\F	
AaD"Q%	
AaD"Q%D 	$AdAaD\AcFeRU^AcFAdGAdG6!F)q.!!!!!6!F)r/"""""6!C&A+6!C&B,6?????eAhh????????6?????eAhh????????$==EL((((T7=BHV,,,,,,$==EL((((T7=BHV,,,,,, 3  	

4 u%%%&DteWo^444AJJur&   c                  ,   g d} t          j        | d          }g }g }|                    dd          D ]/\  }}|                    |           |                    |           0t	          j        |d         |k              sJ t	          j        |d         |k              sJ d |                                D             }|| k    sJ t          j        t          d          5  |                    d	           d d d            d S # 1 swxY w Y   d S )
Nr3   rC   )rK   rL   rE   r   r  r   rN   r6   c                     g | ]}|S rd   rd   )rE  r  s     r$   rF  z!test_iterrows.<locals>.<listcomp>x  s    (((CC(((r&   zd is not a valid column namer   rS   )	r   r   iterrowsr  r{   r|   rr   rs   rt   )r6  r_   c_sa_srN   r6   r  s          r$   test_iterrowsr  i  sa     C
 	O444A
C
C

3$$  1

1

16!C&C-     6!C&C-     ((1::<<(((D3;;;;	z)G	H	H	H  	

3                 s   &D		DDc                     g d} t          j        | d          }t          |                                t	          t                                                                          sJ t          |j                                        t	          t                                                                          sJ t          |j                                        t	          t                                                                          sJ |                                D ]#}t          |t           j        j	                  sJ $d S )Nr}  r   r~  )
r   r   r  r  r   r   rA  r  r&  r   r6  r_   r  s      r$   test_values_and_typesr    s     C
 	O444Aahhjj${}}';';'='=">">?????ai&&((${}}/C/C/E/E*F*FGGGGGainn&&[]]-?-?-A-A(B(BCCCCCXXZZ 2 2!U\01111112 2r&   c                  P   g d} t          j        | d          }t          |                                t	          t          i                                                               sJ t          |                                          D ]}t          |t                    sJ d S )N)r3   rC   rJ   r   r~  )r   r   r  ru  r   r   ru  tupler  s      r$   
test_itemsr    s      C
 	O444Aaggiik"oo&;&;&=&=!>!>?????!''))__ $ $!U######$ $r&   c                     t          j                    } t          j        t                    5  d| _        d d d            n# 1 swxY w Y   t          j        t                    5  d| _        d d d            d S # 1 swxY w Y   d S )N	fake_read
fake_write)r   r   rr   rs   AttributeErrorr  r  r  s    r$   test_read_write_not_replaceabler    s    A	~	&	&                 
~	&	&                   s#   AAA%A::A>A>c                      t           j                            d          } |                     d | j        D                        | j        dgk    sJ d S )Nr   c              3   &   K   | ]}|d k    |V  dS r6   Nrd   r  s     r$   r  z3test_keep_columns_with_generator.<locals>.<genexpr>  s&      ;;3s

3



;;r&   r6   )r   r  r  r  r}   r  s    r$    test_keep_columns_with_generatorr    sV    ((++ANN;;!*;;;;;;:#r&   c                      t           j                            d          } |                     d | j        D                        | j        ddgk    sJ d S )Nr   c              3   &   K   | ]}|d k    |V  dS r  rd   r  s     r$   r  z5test_remove_columns_with_generator.<locals>.<genexpr>  s&      ==S#**S****==r&   rF   rN   )r   r  r  r  r}   r  s    r$   "test_remove_columns_with_generatorr    sZ    ((++A==AJ======:#s######r&   c                  n   t           j                            d          } t          j        t
          d          5  |                     ddg           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     g d           d d d            d S # 1 swxY w Y   d S Nr   zcolumn "d" does not existr   rN   rS   z%columns {'[de]', '[de]'} do not exist)rN   rS   r   )r   r  r  rr   rs   r  r  r  s    r$   (test_keep_columns_invalid_names_messagesr    s)   ((++A	x'B	C	C	C # #	Sz"""# # # # # # # # # # # # # # #	x'N	O	O	O ( (	'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (#   AA#&A#B**B.1B.c                  n   t           j                            d          } t          j        t
          d          5  |                     ddg           d d d            n# 1 swxY w Y   t          j        t
          d          5  |                     g d           d d d            d S # 1 swxY w Y   d S r  )r   r  r  rr   rs   r  r  r  s    r$   *test_remove_columns_invalid_names_messagesr    s-   ((++A	x'B	C	C	C % %	#s$$$% % % % % % % % % % % % % % %	x'N	O	O	O * *	)))* * * * * * * * * * * * * * * * * *r  	path_typer!   Pathc                    | dk    r!t           j                            dd          }nt          j        dd          }t                      }g d|d<   |                    |           t          j        |          }t          j	        |d         g dk              sJ t           j        
                    |          rJ d S )Nr!   ~ztest.csvr3   r6   )ospathjoinpathlibr  r   r  r  r{   r|   exists)r  r%   	test_filerd  r   s        r$   test_read_write_tilde_pathr    s    EGLLj11		Lj11		BiiBsGHHY	I		B6"S'YYY&'''''w~~i(((((((r&   c                      t                      } t          t          t          t	          d                              }t          j        d          }|                     ||           | j        |k    sJ d S )Nrh   )rh   r   r   )	r   ru  mapr!   r  r{   emptyrI  r}   )r_   r   r   s      r$   test_add_list_orderr    sf    AS%))$$%%EHWEMM%uM%%%:r&   )T)r   r  r  r  r#  r  collectionsr   ior   numpyr{   rr   numpy.testingr   r   astropyr   r	   r   astropy.coordinatesr
   
astropy.ior   astropy.tabler   r   r   r   r   r   astropy.tests.helperr   astropy.timer   r   astropy.utils.compatr   "astropy.utils.compat.optional_depsr   astropy.utils.datar   astropy.utils.exceptionsr   !astropy.utils.tests.test_metadatar   conftestr   r   fixturer%   r(   r  usefixturesrf   r   r   r   r   r
  r  r  r7  r>  rF  rj  r  r  r  r  r  r  r  rk  rm  rs  rx  r  r  r  r  r  r  r  r  xfailr  r  r  r  r  r  r  r  skipifr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r(  r4  r7  r:  r>  rD  rH  rJ  r]  ra  rd  ri  rk  rm  r{  r  r  r  r  r  r  r  r  r  r  rd   r&   r$   <module>r     s    				 				   



 # # # # # #            = = = = = = = =             ( ( ( ( ( (                      C B B B B B ( ( ( ( ( ( ( ( . . . . . . 9 9 9 9 9 9 4 4 4 4 4 4 7 7 7 7 7 7 : : : : : : - - - - - - - - 
5 
5 
51 1 1 1 1 1 1 1h ''       ('D ''+) +) +) +) +) +) +) ('+)\ '''+ '+ '+ '+ '+ '+ '+ (''+T ''&? &? &? &? &? &? &? ('&?R ''*% *% *% *% *% *% *% ('*%Z ''7 7 7 7 7 7 7 ('7* ''D D D D DI D D ('D* ''8- 8- 8- 8- 8-i 8- 8- ('8-v ''& & & & &) & & ('&@ ''5 5 5 5 5	 5 5 ('5D ''f@ f@ f@ f@ f@Y f@ f@ ('f@R ''u) u) u) u) u) u) u) ('u)p ''    i   (' '', , , , ,y , , (',4 ''X X X X X X X ('Xv ''5 5 5 5 5y 5 5 ('5* '')0 )0 )0 )0 )0 )0 )0 (')0X ''b' b' b' b' b' b' b' ('b'J B(:V[<Q#RSS? ? TS? ''- - - - - - - ('-& ''; ; ; ; ; ; ; ('; ''H8 H8 H8 H8 H8 H8 H8 ('H8V	2 	2 	2 	2        (F/ F/ F/R6 6 6r; ; ;| * * *d    L   
0 0 0") ) )$  9::5( 5( ;:5(p  2	3 	3 	3   
N+<==f( f( f( f( f( f( f( >=f(R	 ''B! B! B! B! B!	 B! B! ('B!J* * * * * * * *AN AN AN AN AN AN AN ANH~/ ~/ ~/ ~/ ~/ ~/ ~/ ~/B' ' '>,$ ,$ ,$^& & &(  0    (  &  $- - -,2 2 2*! ! !4       7 7 7&2 2 2,$ $ $ $ $e $ $ $.* .* .*b  ( ( (&	% 	% 	%- - -; ; ;# # #2 2 2"% % %)1 )1 )1X  .  (- - -2$ $ $, , ,*' ' 'T  ,2 2 2$ $ $    $ $ $( ( (* * * ufo66) ) 76)    r&   