
    IR-emX                        d dl mZmZ d dlmZ d dlZd dlZd dlm	Z
 d dlmZmZmZmZmZ  G d de          Z G d d          Z G d	 d
          Zej                            d           G d de                      Zej                            d           G d de                      Zej                            d           G d de                      Zej                            d           G d de                      Zej                            d           G d de                      Z G d de          Zej                            d           G d de                      Zej                            d           G d de                      Zej                            d           G d de                      Zej                            d           G d de                      Zej                            d           G d  d!e                      Z ej                            d           G d" d#e                      Z!ej                            d           G d$ d%e                      Z"ej                            d           G d& d'                      Z#ej                            d(           G d) d*                      Z$ej        %                    d+d,d-g          d.             Z&ej                            d          d/             Z'ej                            d          ej        %                    d0d-d,g          d1                         Z(d2 Z)ej                            d          d3             Z*d4 Z+ej        %                    d5d6d7g          d8             Z,d9 Z-d: Z.d; Z/dS )<    )OrderedDictUserDict)MappingN)ColumnMaskedColumnQTableTableTableColumnsc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )DictLikezA minimal mapping-like object that does not subclass dict.

    This is used to test code that expects dict-like but without actually
    inheriting from dict.
    c                 (    t          |i || _        d S N)dict_data)selfargskwargss      Clib/python3.11/site-packages/astropy/table/tests/test_init_table.py__init__zDictLike.__init__   s    4*6**


    c                     | j         |         S r   r   )r   items     r   __getitem__zDictLike.__getitem__   s    z$r   c                     || j         |<   d S r   r   )r   r   values      r   __setitem__zDictLike.__setitem__   s     
4r   c                 *    t          | j                  S r   )iterr   r   s    r   __iter__zDictLike.__iter__   s    DJr   c                 *    t          | j                  S r   )lenr   r    s    r   __len__zDictLike.__len__    s    4:r   N)	__name__
__module____qualname____doc__r   r   r   r!   r$    r   r   r   r      si         + + +     ! ! !         r   r   c                       e Zd Zd ZdS )TestTableColumnsInitc                    t          j        d          }t          j        d          }t          j        d          }d|fd|fd|fg}t          |          }|D ]&}|d         |v sJ ||d                  |d         u sJ 'd|fd|fd|ff}t          |          }|D ]&}|d         |v sJ ||d                  |d         u sJ 't          d|fd|fd|fg          }	t          |	          }
|
                                D ]}||
v sJ |
|         |	|         u sJ d	 |D             }t          |          }|D ]}|j        |v sJ ||j                 |u sJ d
S )zoTest initialisation with lists, tuples, dicts of arrays
        rather than Columns [regression test for #2647]      $@g      @g      @x1x2x3r      c                 H    g | ]}t          |d          |d                    S )r1   r   name)r   ).0cols     r   
<listcomp>z2TestTableColumnsInit.test_init.<locals>.<listcomp>=   s-    CCC36#a&s1v...CCCr   N)nparanger
   r   keysr4   )r   r.   r/   r0   col_listtc_listr6   	col_tupletc_tuplecol_dicttc_dictcolumnstcs                r   	test_initzTestTableColumnsInit.test_init%   s    Yt__Ys^^Ys^^2Jr
T2J7x(( 	- 	-Cq6W$$$$3q6?c!f,,,,,BZ$dBZ8		** 	. 	.Cq6X%%%%CF#s1v-----$dBZ$<==x((<<>> 	1 	1C'>>>>3<8C=00000CC(CCC'"" 	' 	'C8r>>>>ch<3&&&&&	' 	'r   N)r%   r&   r'   rC   r)   r   r   r+   r+   $   s#        ' ' ' ' 'r   r+   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )BaseInitFromc                     d S r   r)   r   
table_types     r   _setupzBaseInitFrom._setupF   s    r   c                    |                      |            || j        d          j        g dk    sJ t          j        d         t          j        ddg          k              sJ t          j        d         t          j        ddg          k              sJ t          j        d	         t          j        dd
g          k              sJ t	          fdj        D                       sJ d S )NabcnamesrL   r1      rM         rN      c              3   :   K   | ]}|         j         |k    V  d S r   r3   r5   r4   ts     r   	<genexpr>z/BaseInitFrom.test_basic_init.<locals>.<genexpr>P   .      ??D1T7<4'??????r   )rI   datacolnamesr8   allarrayr   rH   rW   s     @r   test_basic_initzBaseInitFrom.test_basic_initI   s    JJty888z___,,,,vaf!Q 0 0011111vaf!Q 0 0011111vaf!Q 0 0011111????AJ??????????r   c                    |                      |            || j        dd          j        g dk    sJ t          j        d         t          j        ddgd          k              sJ t          j        d	         t          j        d
dgd          k              sJ t          j        d         t          j        ddgd          k              sJ d         j        j        t          j        k    sJ d	         j        j        t          j	        k    sJ d         j        j        t          j
        k    sJ t	          fdj        D                       sJ d S )NrK   )i4f4f8rP   dtyperL   r1   rQ   ra   re   rM   rR   rS   rb   rN   rT   rc   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z.BaseInitFrom.test_set_dtype.<locals>.<genexpr>\   rY   r   )rI   rZ   r[   r8   r\   r]   re   typeint32float32float64r^   s     @r   test_set_dtypezBaseInitFrom.test_set_dtypeR   s`   JJty?QRRRz___,,,,vaf!Qt < < <<=====vaf!Qt < < <<=====vaf!Qt < < <<=====v| BH,,,,v| BJ....v| BJ....????AJ??????????r   c                     |                      |           t          j        t                    5   || j        dd           d d d            d S # 1 swxY w Y   d S )NrL   )ra   rb   ra   rd   rI   pytestraises
ValueErrorrZ   rG   s     r   test_names_dtype_mismatchz&BaseInitFrom.test_names_dtype_mismatch^   s    J]:&& 	J 	JJty6HIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J   AAAc                     |                      |           t          j        t                    5   || j        dd           d d d            d S # 1 swxY w Y   d S )Nrn   ra   rd   ro   rG   s     r   test_names_cols_mismatchz%BaseInitFrom.test_names_cols_mismatchc   s    J]:&& 	< 	<Jtyd;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<rt   N)r%   r&   r'   rI   r_   rl   rs   rv   r)   r   r   rE   rE   E   sh          @ @ @
@ 
@ 
@J J J
< < < < <r   rE   rH   c                       e Zd Zd Zd ZdS )BaseInitFromListLikec                     |                      |           t          j        t                    5   || j        dgt
          g           d d d            d S # 1 swxY w Y   d S )NrL   rd   rI   rp   rq   rr   rZ   intrG   s     r   rv   z-BaseInitFromListLike.test_names_cols_mismatchk   s    J]:&& 	< 	<JtycU;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   AAAc                     |                      |           t          j        t                    5   || j        dgt
          gd           d d d            d S # 1 swxY w Y   d S )NrL   F)rP   re   copyrz   rG   s     r   test_names_copy_falsez*BaseInitFromListLike.test_names_copy_falsep   s    J]:&& 	H 	HJtycUGGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   AAAN)r%   r&   r'   rv   r~   r)   r   r   rx   rx   i   s7        < < <
H H H H Hr   rx   c                       e Zd ZdS )BaseInitFromDictLikeN)r%   r&   r'   r)   r   r   r   r   v   s        Dr   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestInitFromNdarrayHomoc                 @    t          j        ddgd          | _        d S )Nr1   rR   rQ   rQ   rS   rT   ra   rf   r8   r]   rZ   )r   methods     r   setup_methodz$TestInitFromNdarrayHomo.setup_method}   s!    Hi34@@@			r   c                 n    |                      |            || j                  }|j        g dk    sJ d S )Ncol0col1col2rI   rZ   r[   r^   s      r   test_default_namesz*TestInitFromNdarrayHomo.test_default_names   sE    JJty!!z555555555r   c                    |                      |            || j        d          }d|d         d<   |                                d         d         dk    sJ |d         d         dk    sJ | j        d         d         dk    sJ dS )z[Init with ndarray and copy=False and show that this is a reference
        to input ndarrayFr}   r   r   r1   N)rI   rZ   as_arrayr^   s      r   test_ndarray_refz(TestInitFromNdarrayHomo.test_ndarray_ref   s     	JJtyu---&	!zz||F#A&!++++y|q    y|A!######r   c                    |                      |            || j        g dg d          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	NrL   NrN   )NNrc   rd   rL   r   rN   rL   r   rN   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   zCTestInitFromNdarrayHomo.test_partial_names_dtype.<locals>.<genexpr>   rY   r   )	rI   rZ   r[   re   rh   r8   ri   rk   r\   r^   s     @r   test_partial_names_dtypez0TestInitFromNdarrayHomo.test_partial_names_dtype   s    JJty(8(8(8@R@R@RSSSz///////v| BH,,,,y#rx////v| BJ....????AJ??????????r   c                    |                      |            || j        g d          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )Nr   rO   r   rL   r   rN   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   zATestInitFromNdarrayHomo.test_partial_names_ref.<locals>.<genexpr>   rY   r   )rI   rZ   r[   re   rh   r8   ri   r\   r^   s     @r   test_partial_names_refz.TestInitFromNdarrayHomo.test_partial_names_ref   s    JJty(8(8(8999z///////v| BH,,,,y#rx////v| BH,,,,????AJ??????????r   N)r%   r&   r'   r   r   r   r   r   r)   r   r   r   r   {   sj        A A A6 6 6
$ $ $@ @ @@ @ @ @ @r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestInitFromListOfListsc                    |                      |           t          j        d          t          j        d          ft          dddgt          j                  t          j        ddgt          j                  g| _        d S )	Nr1   rQ   r   rR   rS   )r4   rZ   re   rT   rf   )rI   r8   ri   r   r]   rZ   rG   s     r   r   z$TestInitFromListOfLists.setup_method   si    JXa[["(1++&aV28<<<HaV28,,,
			r   c                     |                      |            || j                  j        g dk    sJ t          fdj        D                       sJ d S )Nr   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z=TestInitFromListOfLists.test_default_names.<locals>.<genexpr>   rY   r   rI   rZ   r[   r\   r^   s     @r   r   z*TestInitFromListOfLists.test_default_names   sq    JJty!!z5555555????AJ??????????r   c                    |                      |            || j        g dg d          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	NrM   NrN   rb   Nrc   rd   rM   r   rN   rM   r   rN   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   zCTestInitFromListOfLists.test_partial_names_dtype.<locals>.<genexpr>   rY   r   
rI   rZ   r[   re   rh   r8   rj   ri   rk   r\   r^   s     @r   r   z0TestInitFromListOfLists.test_partial_names_dtype       JJty(8(8(8@R@R@RSSSz///////v| BJ....y#rx////v| BJ....????AJ??????????r   c                     |                      |           t          j        t                    5   |ddgg dg           d d d            d S # 1 swxY w Y   d S )Nr1   rR   r   )rI   rp   rq   rr   rG   s     r   test_bad_dataz%TestInitFromListOfLists.test_bad_data   s    J]:&& 	, 	,JA			*+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AAAN)r%   r&   r'   r   r   r   r   r)   r   r   r   r      sV        
 
 
@ @ @@ @ @, , , , ,r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestInitFromListOfDictsc                 F    ddddddddg| _         ddddddg| _        d S )	Nr1   rR   rQ   rK   rS   rT   rL   rM   rL   rN   )rZ   data_raggedrG   s     r   rI   zTestInitFromListOfDicts._setup   sE    11--QQQ/G/GH	"#!,,AA.>.>?r   c                     |                      |            || j                  }t          d |j        D                       sJ d S )Nc              3      K   | ]}|d v V  	dS )>   rL   rM   rN   Nr)   )r5   colnames     r   rX   z5TestInitFromListOfDicts.test_names.<locals>.<genexpr>   s'      HH'7o-HHHHHHr   )rI   rZ   r\   r[   r^   s      r   
test_namesz"TestInitFromListOfDicts.test_names   sP    JJty!!HHQZHHHHHHHHHHr   c                 r    |                      |            || j        d          }|j        g dk    sJ d S )N)rN   rM   rL   rO   r   r^   s      r   test_names_orderedz*TestInitFromListOfDicts.test_names_ordered   sG    JJty888z___,,,,,,r   c                    |                      |           | j        }dD ]B}|r ||          n
 ||          }t          j        |d         ddgk              sJ t          j        |d         j        ddgk              sJ t          j        |d         j        ddgk              sJ t          j        |d	         j        ddgk              sJ t          j        |d	         j        d
d
gk              sJ t          |d                   |j        rt          nt          u sJ t          |d                   t          u sJ t          |d	                   t          u sJ Dd S )NFTrowsrL   r1   rR   rM   FTrN   rS   )
rI   r   r8   r\   maskrZ   rh   maskedr   r   )r   rH   datr   rW   s        r    test_missing_data_init_from_dictz8TestInitFromListOfDicts.test_missing_data_init_from_dict   so   J! 	0 	0D(,A

$$$$**S//A6!C&QF*+++++6!C&+%6777776!C&+!Q/000006!C&+$6777776!C&+!Q/00000#<<AH$HLL&IIII#<<<////#<<</////	0 	0r   N)r%   r&   r'   rI   r   r   r   r)   r   r   r   r      sV        @ @ @I I I
- - -
0 0 0 0 0r   r   c                       e Zd ZdZd ZdS )TestInitFromListOfMappingz?Test that init from a Mapping that is not a dict subclass worksc                     t          ddd          t          ddd          g| _        t          dd          t          dd          g| _        t          | j        d	         t                    rJ d S )
Nr1   rR   rQ   rK   rS   rT   r   r   r   )r   rZ   r   
isinstancer   rG   s     r   rI   z TestInitFromListOfMapping._setup   su    Q!,,,ha1.E.E.EF	$qA...10B0B0BCdilD1111111r   N)r%   r&   r'   r(   rI   r)   r   r   r   r      s)        II2 2 2 2 2r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestInitFromColsListc                     t          ddgdt          j                  t          j        ddgt          j                  t          j        ddgd	          g| _        d S )
Nr1   rQ   x)r4   re   rR   rS   rf   rT   i8)r   r8   ri   r]   rZ   rG   s     r   rI   zTestInitFromColsList._setup   sU    Aq628444HaV28,,,HaV4(((
			r   c                     |                      |            || j                  j        g dk    sJ t          fdj        D                       sJ d S )N)r   r   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z:TestInitFromColsList.test_default_names.<locals>.<genexpr>   rY   r   r   r^   s     @r   r   z'TestInitFromColsList.test_default_names   sq    JJty!!z2222222????AJ??????????r   c                    |                      |            || j        g dg d          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	Nr   r   rd   r   rM   r   rN   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z@TestInitFromColsList.test_partial_names_dtype.<locals>.<genexpr>  rY   r   r   r^   s     @r   r   z-TestInitFromColsList.test_partial_names_dtype   r   r   c                     |                      |            || j        d          }d|d         d<   | j        d         d         dk    sJ dS )zFTest that initializing from a list of columns can be done by referenceFr   d   r   r   N)rI   rZ   r^   s      r   test_refzTestInitFromColsList.test_ref  sX    JJtyu---#q	y|A#%%%%%%r   N)r%   r&   r'   rI   r   r   r   r)   r   r   r   r      sV        
 
 
@ @ @@ @ @& & & & &r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestInitFromNdarrayStructc                 D    t          j        ddgg d          | _        d S )Nr   r   )r   r   )yra   )zr   rf   r   rG   s     r   rI   z TestInitFromNdarrayStruct._setup  s/    H	"*Q*Q*Q
 
 
			r   c                    |                      |            || j        d          dd         d<   dd         d<   | j        d         d         dk    sJ | j        d         d         dk    sJ t          j        t          j                  | j        k              sJ t          fdj        D                       sJ dS )	z\Init with ndarray and copy=False and show that table uses reference
        to input ndarrayFr   r   r   r1   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z=TestInitFromNdarrayStruct.test_ndarray_ref.<locals>.<genexpr>  rY   r   N)rI   rZ   r8   r\   r]   r[   r^   s     @r   r   z*TestInitFromNdarrayStruct.test_ndarray_ref  s     	JJtyu---#q	!S	y~a A%%%%y~a A%%%%vbhqkkTY./////????AJ??????????r   c                    |                      |            || j        g dg d          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	NeNdr   rd   r   r   r   r   r   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   zETestInitFromNdarrayStruct.test_partial_names_dtype.<locals>.<genexpr>'  rY   r   r   r^   s     @r   r   z2TestInitFromNdarrayStruct.test_partial_names_dtype   s    JJty(8(8(8@R@R@RSSSz___,,,,v| BJ....v| BH,,,,v| BJ....????AJ??????????r   c                    |                      |            || j        g dd          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	Nr   FrP   r}   r   r   r   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   zCTestInitFromNdarrayStruct.test_partial_names_ref.<locals>.<genexpr>0  rY   r   )	rI   rZ   r[   re   rh   r8   int64ri   r\   r^   s     @r   r   z0TestInitFromNdarrayStruct.test_partial_names_ref)  s    JJty(8(8(8uEEEz___,,,,v| BH,,,,v| BH,,,,v| BH,,,,????AJ??????????r   N)r%   r&   r'   rI   r   r   r   r)   r   r   r   r     s[        
 
 

@ @ @@ @ @@ @ @ @ @r   r   c                       e Zd Zd ZdS )TestInitFromDictc           	          t          dt          ddgd          fdddgfd	t          j        dd
gd          fg          | _        d S NrL   r1   rQ   r   r3   rM   rR   rS   rN   rT   r   rf   )r   r   r8   r]   rZ   rG   s     r   rI   zTestInitFromDict._setup5  s[    faV#.../q!fbh1vT2223
 
			r   Nr%   r&   r'   rI   r)   r   r   r   r   3  s#        
 
 
 
 
r   r   c                       e Zd Zd ZdS )TestInitFromMappingc           	         t          dt          ddgd          fdddgfd	t          j        dd
gd          fg          | _        t          | j        t                    sJ t          | j        t                    rJ d S r   )r   r   r8   r]   rZ   r   r   r   rG   s     r   rI   zTestInitFromMapping._setupA  s    faV#.../q!fbh1vT2223
 
	 $)W-----di.......r   Nr   r)   r   r   r   r   ?  s#        	/ 	/ 	/ 	/ 	/r   r   c                       e Zd Zd Zd ZdS )TestInitFromOrderedDictc           	          t          dt          dddg          fdddgfd	t          j        dd
gd          fg          | _        d S )NrL   r   r1   rQ   )r4   rZ   rM   rR   rS   rN   rT   r   rf   )r   r   r8   r]   rZ   rG   s     r   rI   zTestInitFromOrderedDict._setupO  s[    f#QF3334q!fbh1vT2223
 
			r   c                 n    |                      |            || j                  }|j        g dk    sJ d S )NrK   r   r^   s      r   test_col_orderz&TestInitFromOrderedDict.test_col_orderX  sB    JJty!!z___,,,,,,r   N)r%   r&   r'   rI   r   r)   r   r   r   r   M  s2        
 
 
- - - - -r   r   c                       e Zd Zd Zd ZdS )TestInitFromRowc                 f    t          j        ddgg d          } ||dddgi          | _        d S 	Nr   r   )r   )r   r   )r   rc   rf   commentscomment1comment2)metar   r   rH   arrs      r   rI   zTestInitFromRow._setup`  O    h	"*Q*Q*Q
 
 
 Js*z:6N)OPPP			r   c                    |                      |            || j        d                   j        d         d         dk    sJ j        D ]5}t	          j        |         | j        |         dd         k              sJ 6t          fdj        D                       sJ dd         d<   dj        d         d<   t	          j        d         t	          j        dg          k              sJ t	          j        | j        d         t	          j        dd	g          k              sJ | j        j        d         d         d
k    sJ d S )Nr   r   r   r1   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z5TestInitFromRow.test_init_from_row.<locals>.<genexpr>n  rY   r      r   new comment2rQ   r   )rI   rZ   r   r[   r8   r\   r]   )r   rH   r4   rW   s      @r   test_init_from_rowz"TestInitFromRow.test_init_from_rowf  sS   JJty|$$ vj!!$
2222J 	; 	;D6!D'TYt_QqS%99::::::????AJ???????? #q	 .z1vaf!-.....vdin!Q(8(8899999y~j)!,
::::::r   N)r%   r&   r'   rI   r   r)   r   r   r   r   ^  s5        Q Q Q; ; ; ; ;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 )
TestInitFromTablec                 f    t          j        ddgg d          } ||dddgi          | _        d S r   r   r   s      r   rI   zTestInitFromTable._setupz  r   r   c                 :   |                      |            || j                  j        d         d         dk    sJ dd         d<   dj        d         d<   | j        j        d         d         dk    sJ t          j        d         t          j        ddg          k              sJ t          j        | j        d         t          j        dd	g          k              sJ d
         j        d
k    sJ t	          fdj        D                       sJ d S )Nr   r   r   r   r   r1   r   r   rQ   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z8TestInitFromTable.test_data_meta_copy.<locals>.<genexpr>  rY   r   )rI   rZ   r   r8   r\   r]   r4   r[   r^   s     @r   test_data_meta_copyz%TestInitFromTable.test_data_meta_copy  s$   JJty!!vj!!$
2222#q	 .z1y~j)!,
::::vaf!Q 0 0011111vdin!Q(8(8899999v{c!!!!????AJ??????????r   c                    |                      |            || j        d          dd         d<   d         d         dk    sJ | j        d         d         dk    sJ t          j                                        | j                                        k              sJ t          fdj        D                       sJ d S )NFr   r   r   r1   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z3TestInitFromTable.test_table_ref.<locals>.<genexpr>  rY   r   )rI   rZ   r8   r\   r   r[   r^   s     @r   test_table_refz TestInitFromTable.test_table_ref  s    JJtyu---#q	vayA~~~~y~a A%%%%vajjlldi&8&8&:&::;;;;;????AJ??????????r   c                    |                      |            || j        g dg d          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	Nr   )rb   Nr   rd   r   r   r   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z=TestInitFromTable.test_partial_names_dtype.<locals>.<genexpr>  rY   r   )	rI   rZ   r[   re   rh   r8   rj   r   r\   r^   s     @r   r   z*TestInitFromTable.test_partial_names_dtype  s    JJty(8(8(8@R@R@RSSSz___,,,,v| BJ....v| BH,,,,v| BH,,,,????AJ??????????r   c                    |                      |            || j        g dd          j        g dk    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ d         j        j        t
          j        k    sJ t          fdj        D                       sJ d S )	Nr   Fr   r   r   r   r   c              3   :   K   | ]}|         j         |k    V  d S r   r3   rV   s     r   rX   z;TestInitFromTable.test_partial_names_ref.<locals>.<genexpr>  rY   r   )	rI   rZ   r[   re   rh   r8   r   rk   r\   r^   s     @r   r   z(TestInitFromTable.test_partial_names_ref  s    JJty(8(8(8uEEEz___,,,,v| BH,,,,v| BH,,,,v| BJ....????AJ??????????r   c                     |                      |            || j                  } ||j        d                   }|j        g dk    sJ |j        j        dk    sJ d S )N)r   r   r   rI   rZ   rA   r[   re   rP   r   rH   rW   t2s       r   test_init_from_columnsz(TestInitFromTable.test_init_from_columns  sm    JJty!!Z	-011{ooo----x~000000r   c                     |                      |            || j                  } ||j        dd                   }|j        ddgk    sJ |j        j        dk    sJ d S )Nr   rR   r   r   r   r   r  r  s       r   test_init_from_columns_slicez.TestInitFromTable.test_init_from_columns_slice  sp    JJty!!Z	!A#''{sCj((((x~++++++r   c                     |                      |            || j                  } ||j        d         |j        d         g          }|j        ddgk    sJ |j        j        dk    sJ d S )Nr   r   r   )r   r   r  r  s       r   test_init_from_columns_mixz,TestInitFromTable.test_init_from_columns_mix  sw    JJty!!Z1qy~677{sCj((((x~++++++r   N)r%   r&   r'   rI   r  r  r   r   r  r  r  r)   r   r   r   r   x  s        Q Q Q
@ 
@ 
@@ @ @@ @ @@ @ @1 1 1, , ,, , , , ,r   r   c                       e Zd Zd ZdS )TestInitFromNonec                    t          j        dddg          }ddidddd	ddgid	|j        ifD ]} |di |}|j        d
dgk    sJ t	          |d
                   dk    sJ t	          |d                   dk    sJ d	|v r_|d
         j        j        t           j        k    sJ |d         j        j        t           j        k    sJ |d
         j        dd         dk    sJ dS )z?
        Test different ways of initing an empty table
        r   )rL   rb   rR   )rM   ra   rf   rP   r   ))rb   r  ra   rd   re   rL   rM   r1   Nr  r)   )	r8   emptyre   r[   r#   rh   rj   ri   shape)r   rH   np_tr   rW   s        r   test_data_none_with_colsz)TestInitFromNone.test_data_none_with_cols  s-    x"3[!ABBBj! +?@@(+67dj!	
 	0 	0F 
$$V$$A:#s++++qv;;!####qv;;!####&  v|(BJ6666v|(BH4444v|ABB'4////	0 	0r   N)r%   r&   r'   r  r)   r   r   r  r    s#        
0 0 0 0 0r   r  table_typesc                       e Zd Zd Zd ZdS )TestInitFromRowsc                    ddgddggddgdfD ]} ||d	          }t          j        |d         ddgk              sJ t          j        |d         ddgk              sJ |j        ddgk    sJ |d         j        j        d
k    sJ |d         j        j        dv sJ |d         j        j                            d          sJ t          j        d                              dd          } ||dg d          }t          j        |d         ddgk              sJ t          j        |d         ddgk              sJ t          j        |d         ddgk              sJ |j        g dk    sJ |d         j        j                            d          sJ |d         j        j                            d          sJ |d         j        j                            d          sJ d S )Nr1   rL   rR   rM   r1   rL   rR   rM   )r!  r"  r   )r   rP   i)SU1   rQ   rK   )rc   rb   r   )r   rP   re   r   rS   rN   rT   rc   rb   r   )	r8   r\   r[   re   kindstrendswithr9   reshape)r   rH   r   rW   s       r   test_init_with_rowsz$TestInitFromRows.test_init_with_rows  s!   #hC)Hh+?AUV 		2 		2D
J777A6!C&QF*+++++6!C&S#J./////:#s++++S6<$++++S6<$
2222 S6<#,,S111111y||##Aq))JD?Q?Q?QRRRvafA&'''''vafA&'''''vafA&'''''z___,,,,v|((.....v|((.....v|((.......r   c                     t          j        t                    5 } |dggdgg           d d d            n# 1 swxY w Y   dt          |j                  v sJ d S )Nr1   )rZ   r   z+Cannot supply both `data` and `rows` values)rp   rq   rr   r)  r   )r   rH   errs      r   test_init_with_rows_and_dataz-TestInitFromRows.test_init_with_rows_and_data  s    ]:&& 	/#JaSE!....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/<CINNNNNNs   8<<N)r%   r&   r'   r,  r/  r)   r   r   r  r    s7        / / /,O O O O Or   r  has_dataTFc                 `   t          j        dt          j        ddg                    }| r|gng }t          |ddg|j        d}|j        ddgk    sJ t          |d         j                  dk    sJ t          |d         j                  d	k    sJ t          |          | rdnd
k    sJ dS )zTest fix for #10393rR   )rL   ra   )rM   rb   rf   r   r   rd   ri   rj   r   N)r8   onesre   r	   r[   r)  r#   )r0  r   	data_argsrW   s       r   /test_init_table_with_names_and_structured_dtyper4    s     '!28[+$>??
@
@
@C!)rIyc
#)<<<A:#s####qv|''''qv|	))))q668*aa++++++r   c                    dD ]}t          j        dddgfdddgfgdd	g
          } | ||          }|j        ddgk    sJ |d         j        dk    sJ |d         j        dk    sJ d|d         d<   d|d         d         d<   |r/|d         d         dk    sJ |d         d         d         dk    sJ |d         d         dk    sJ |d         d         d         dk    sJ dS )z
    Test that initializing from an ndarray structured array with
    a multi-dim column works for both copy=False and True and that
    the referencing is as expected.
    r   r1   
      rQ      (   )rL   r   )rM   r   r  rf   r   rL   rM   r  )rR   rR   8r   N)r8   r]   r[   r  )rH   r}   ndrW   s       r   'test_init_and_ref_from_multidim_ndarrayr=    sB     ) )X"b]QRM*;@Q2R
 
 
 Jr%%%zc3Z''''v|t####v|v%%%%#q	#q	! 	)c71:????c71:a=B&&&&&c71:%%%%c71:a=D((((() )r   r}   c                    t          j        d          }t          j        d          }t          d|fd|fg          } | ||          }t	          |j                  ddhk    sJ |d         j        dk    sJ |d         j        dk    sJ d|d         d<   d	|d         d
<   |r|d         dk    sJ |d
         dk    sJ dS |d         dk    sJ |d
         d	k    sJ dS )z|
    Test that initializing from a dict works for both copy=False and True and that
    the referencing is as expected.
    r-   r6  r.   r/   r   )r6  r:  r   r;  r1   g        N)r8   r9   zerosr   setr[   r  )rH   r}   r.   r/   r?   rW   s         r   test_init_and_ref_from_dictrA    s    
4B	"BdBZ$,--H
8$'''Aqz??tTl****T7=E!!!!T7=E!!!!AdGAJAdGAJ !u||||!u||||||!u}}}}!u}}}}}}r   c                      t          dg di          } d| d<   t          d | d         D                       sJ | d         j        j        dk    sJ dS )zTest fix for a problem introduced in #10636 (see
    https://github.com/astropy/astropy/pull/10636#issuecomment-676847515)
    rL   r   )rZ   NrM   c              3      K   | ]}|d u V  	d S r   r)   )r5   vals     r   rX   z.test_add_none_object_column.<locals>.<genexpr>8  s&      --ssd{------r   O)r	   r\   re   r(  rW   s    r   test_add_none_object_columnrG  2  sm     	C#$$$AAcF--af--------S6<######r   c                 D   t          ddg          }ddd}||g}t          ddg          }t          ddg          }||g} | |          } | |          }|t          |j                           }	|j        d	d
gk    sJ |j        d	d
gk    sJ |	j        d
d	gk    sJ d S )N)rM   r1   )rL   r   r6  r7  r   )rM      )rL   r6  r   rM   rL   )r   r   sortedr[   )
rH   row1row2rows12row3row4rows34t1r  t3s
             r   test_init_from_row_OrderedDictrS  <  s    (+,,D"DD\F8$%%DI&''DD\F		 	 	 B		 	 	 B	F2;	 B;3*$$$$;3*$$$$;3*$$$$$$r   c                      d t          d          D             } t          |           }t          j        |d         ddgk              sJ t          j        |d         ddgk              sJ d S )Nc              3   *   K   | ]}d |z   d|z   fV  dS )r1   rR   Nr)   )r5   iis     r   rX   z3test_init_from_rows_as_generator.<locals>.<genexpr>M  s/      00QVQV000000r   rR   r   r   r1   r   rQ   )ranger	   r8   r\   )r   rW   s     r    test_init_from_rows_as_generatorrX  L  sw    00uQxx000D4A6!F)1v%&&&&&6!F)1v%&&&&&&&r   re   failra   c                     t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nz;type was specified but could not be parsed for column namesmatchrf   rp   rq   rr   r	   rf   s    r   "test_init_bad_dtype_in_empty_tabler^  S  s    	W
 
 
   	E                 s   :>>c                      t          j        t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nz1Data type <class 'str'> not allowed to init Tabler[  hellor]  r)   r   r   -test_init_data_type_not_allowed_to_init_tablera  [  s    	M
 
 
   	g                 s   9= =c                     dt           j        z  dt           j        z  ddt           j        z  ddg} t          |           }|d         j        t           j        u sJ |d         j        J |d         j        j        d	k    sJ |d         j        j        d
k    sJ t          j        |d         ddgk              sJ |d         d         dt           j        z  k    sJ |d         d         dk    sJ dS )zTest fix for #11327rT   r1   r  r6  rQ   r   r   NfrE  r   )umr	   unitre   r(  r8   r\   )rZ   rW   s     r   %test_init_Table_from_list_of_quantityrg  b  s     ac'AC((QSq*A*ABDdAS6;!#S6;S6<####S6<####6!C&QG#$$$$$S6!9ACS6!9>>>>>>r   c                     t          ddgt          j        z  ddggt          j        t          j        d          } | d         j        t          j        k    sJ t          j        | d         j        ddgk              sJ | d         j        t          j        k    sJ t          j        | d         j        ddgk              sJ d	S )
zy
    Test fix for #14336 where providing units to QTable init fails.

    This applies when the input is a Quantity.
    r1   rR   )r   r   )unitsr   i  i  r   N)	r   rd  kmre  srf  r8   r\   r   rF  s    r   test_init_QTable_and_set_unitsrl  p  s     	A1v&qsAC.H.HIIIAV9>QS    6!F)/dD\122222V9>QS    6!F)/aV+,,,,,,,r   )0collectionsr   r   collections.abcr   numpyr8   rp   astropy.unitsri  rd  astropy.tabler   r   r   r	   r
   r   r+   rE   markusefixturesrx   r   r   r   r   r   r   r   r   r   r   r   r   r  r  parametrizer4  r=  rA  rG  rS  rX  r^  ra  rg  rl  r)   r   r   <module>ru     s   . - - - - - - - # # # # # #            K K K K K K K K K K K K K K    w   .' ' ' ' ' ' ' 'B!< !< !< !< !< !< !< !<H &&	H 	H 	H 	H 	H< 	H 	H '&	H &&	 	 	 	 	< 	 	 '&	 &&#@ #@ #@ #@ #@2 #@ #@ '&#@L &&, , , , ,2 , , '&,< &&0 0 0 0 02 0 0 '&0@2 2 2 2 2 7 2 2 2 &&& & & & &/ & & '&&> &&#@ #@ #@ #@ #@ 4 #@ #@ '&#@L &&
 
 
 
 
+ 
 
 '&
 &&
/ 
/ 
/ 
/ 
/. 
/ 
/ '&
/ &&- - - - -2 - - '&-  &&; ; ; ; ;* ; ; '&;2 &&A, A, A, A, A,, A, A, '&A,H &&0 0 0 0 0 0 0 '&02 ''O O O O O O O ('O: dE]33, , 43, &&) ) '&)0 &&%//  0/ '&,$ $ $ &&% % '&%' ' ' 64.11  21    
- 
- 
- 
- 
-r   