a
    ߙfb0X                     @   s  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	m
Z
mZmZ d dlmZ G dd deZG dd dZG d	d
 d
ZejdG dd deZejdG dd deZejdG dd deZejdG dd deZejdG dd deZG dd deZejdG dd deZejdG dd deZejdG dd deZejdG dd deZejdG d d! d!eZejdG d"d# d#eZ ejdG d$d% d%eZ!ejdG d&d' d'Z"ejd(G d)d* d*Z#ej$d+d,d-gd.d/ Z%ejdd0d1 Z&ejdej$d2d-d,gd3d4 Z'd5d6 Z(ejdd7d8 Z)d9d: Z*ej$d;d<d=gd>d? Z+d@dA Z,dBdC Z-dS )D    )OrderedDictUserDict)MappingN)ColumnTableColumnsTableMaskedColumnc                   @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
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                 O   s   t |i || _d S N)dict_data)selfargskwargs r   Blib/python3.9/site-packages/astropy/table/tests/test_init_table.py__init__   s    zDictLike.__init__c                 C   s
   | j | S r
   r   )r   itemr   r   r   __getitem__   s    zDictLike.__getitem__c                 C   s   || j |< d S r
   r   )r   r   valuer   r   r   __setitem__   s    zDictLike.__setitem__c                 C   s
   t | jS r
   )iterr   r   r   r   r   __iter__   s    zDictLike.__iter__c                 C   s
   t | jS r
   )lenr   r   r   r   r   __len__   s    zDictLike.__len__N)	__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r	      s   r	   c                   @   s   e Zd Zdd ZdS )TestTableColumnsInitc                 C   sX  t d}t d}t d}d|fd|fd|fg}t|}|D ],}|d |v sTJ ||d  |d u s@J q@d|fd|fd|ff}t|}|D ],}|d |v sJ ||d  |d u sJ qtd|fd|fd|fg}	t|	}
|
 D ]$}||
v sJ |
| |	| u sJ qd	d
 |D }t|}|D ]*}|j|v s<J ||j |u s(J q(dS )zoTest initialisation with lists, tuples, dicts of arrays
        rather than Columns [regression test for #2647]      $@g      @g      @x1x2x3r      c                 S   s    g | ]}t |d  |d dqS )r&   r   name)r   ).0colr   r   r   
<listcomp><       z2TestTableColumnsInit.test_init.<locals>.<listcomp>N)nparanger   r   keysr(   )r   r#   r$   r%   Zcol_listZtc_listr*   Z	col_tupleZtc_tuplecol_dictZtc_dictcolumnsZtcr   r   r   	test_init$   s.    


zTestTableColumnsInit.test_initN)r   r   r   r2   r   r   r   r   r!   #   s   r!   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )BaseInitFromc                 C   s   d S r
   r   r   
table_typer   r   r   _setupE   s    zBaseInitFrom._setupc                    s   |  | || jdd  jg dks*J t d tddgksJJ t d tddgksjJ t d	 tdd
gksJ t fdd jD sJ d S )Nabcnamesr8   r&      r9         r:      c                 3   s   | ]} | j |kV  qd S r
   r'   r)   r(   tr   r   	<genexpr>O   r,   z/BaseInitFrom.test_basic_init.<locals>.<genexpr>)r6   datacolnamesr-   allarrayr4   r   rB   r   test_basic_initH   s    
   zBaseInitFrom.test_basic_initc                    s   |  | || jddd  jg dks,J t d tjddgddksPJ t d	 tjd
dgddkstJ t d tjddgddksJ  d jjtjksJ  d	 jjtj	ksJ  d jjtj
ksJ t fdd jD sJ d S )Nr7   )i4f4f8r<   dtyper8   r&   r=   rJ   rN   r9   r>   r?   rK   r:   r@   rL   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD   [   r,   z.BaseInitFrom.test_set_dtype.<locals>.<genexpr>)r6   rE   rF   r-   rG   rH   rN   typeint32float32float64r4   r   rB   r   test_set_dtypeQ   s    
$$$zBaseInitFrom.test_set_dtypec                 C   sH   |  | tt  || jddd W d    n1 s:0    Y  d S )Nr8   )rJ   rK   rJ   rM   r6   pytestraises
ValueErrorrE   r4   r   r   r   test_names_dtype_mismatch]   s    
z&BaseInitFrom.test_names_dtype_mismatchc                 C   sH   |  | tt  || jddd W d    n1 s:0    Y  d S )NrU   rJ   rM   rV   r4   r   r   r   test_names_cols_mismatchb   s    
z%BaseInitFrom.test_names_cols_mismatchN)r   r   r   r6   rI   rT   rZ   r[   r   r   r   r   r3   D   s
   	r3   r5   c                   @   s   e Zd Zdd Zdd ZdS )BaseInitFromListLikec                 C   sL   |  | tt$ || jdgtgd W d    n1 s>0    Y  d S )Nr8   rM   r6   rW   rX   rY   rE   intr4   r   r   r   r[   k   s    
z-BaseInitFromListLike.test_names_cols_mismatchc                 C   sN   |  | tt& || jdgtgdd W d    n1 s@0    Y  d S )Nr8   F)r<   rN   copyr]   r4   r   r   r   test_names_copy_falsep   s    
z*BaseInitFromListLike.test_names_copy_falseN)r   r   r   r[   r`   r   r   r   r   r\   h   s   r\   c                   @   s   e Zd ZdS )BaseInitFromDictLikeN)r   r   r   r   r   r   r   ra   v   s   ra   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestInitFromNdarrayHomoc                 C   s   t jddgdd| _d S )Nr&   r>   r=   r=   r?   r@   rJ   rO   r-   rH   rE   )r   methodr   r   r   setup_method~   s
    z$TestInitFromNdarrayHomo.setup_methodc                 C   s*   |  | || j}|jg dks&J d S )Ncol0col1col2r6   rE   rF   r   r5   rC   r   r   r   test_default_names   s    

z*TestInitFromNdarrayHomo.test_default_namesc                 C   sj   |  | || jdd}d|d d< | d d dks<J |d d dksPJ | jd d dksfJ dS )z[Init with ndarray and copy=False and show that this is a reference
        to input ndarrayFr_   r   rj   r&   N)r6   rE   as_arrayrm   r   r   r   test_ndarray_ref   s    
z(TestInitFromNdarrayHomo.test_ndarray_refc                    s   |  | || jg dg dd  jg dks4J  d jjtjksJJ  d jjtjks`J  d jjtjksvJ t fdd	 jD sJ d S )
Nr8   Nr:   )NNrL   rM   r8   rj   r:   r8   rj   r:   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD      r,   zCTestInitFromNdarrayHomo.test_partial_names_dtype.<locals>.<genexpr>)	r6   rE   rF   rN   rP   r-   rQ   rS   rG   r4   r   rB   r   test_partial_names_dtype   s    
z0TestInitFromNdarrayHomo.test_partial_names_dtypec                    s   |  | || jg dd  jg dks.J  d jjtjksDJ  d jjtjksZJ  d jjtjkspJ t fdd jD sJ d S )	Nrr   r;   rs   r8   rj   r:   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD      r,   zATestInitFromNdarrayHomo.test_partial_names_ref.<locals>.<genexpr>)r6   rE   rF   rN   rP   r-   rQ   rG   r4   r   rB   r   test_partial_names_ref   s    
z.TestInitFromNdarrayHomo.test_partial_names_refN)r   r   r   rg   rn   rq   rt   ru   r   r   r   r   rb   {   s
   
	rb   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestInitFromListOfListsc                 C   sJ   |  | tdtdftdddgtjdtjddgtjdg| _d S )	Nr&   r=   rj   r>   r?   )r(   rE   rN   r@   rO   )r6   r-   rQ   r   rH   rE   r4   r   r   r   rg      s
    
z$TestInitFromListOfLists.setup_methodc                    sF   |  | || j  jg dks&J t fdd jD sBJ d S )Nrh   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD      r,   z=TestInitFromListOfLists.test_default_names.<locals>.<genexpr>r6   rE   rF   rG   r4   r   rB   r   rn      s    

z*TestInitFromListOfLists.test_default_namesc                    s   |  | || jg dg dd  jg dks4J  d jjtjksJJ  d jjtjks`J  d jjtjksvJ t	 fdd	 jD sJ d S )
Nr9   Nr:   rK   NrL   rM   r9   rj   r:   r9   rj   r:   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD      r,   zCTestInitFromListOfLists.test_partial_names_dtype.<locals>.<genexpr>
r6   rE   rF   rN   rP   r-   rR   rQ   rS   rG   r4   r   rB   r   rt      s    
z0TestInitFromListOfLists.test_partial_names_dtypec                 C   sL   |  | tt$ |ddgg dg W d    n1 s>0    Y  d S )Nr&   r>   rd   )r6   rW   rX   rY   r4   r   r   r   test_bad_data   s
    
z%TestInitFromListOfLists.test_bad_dataN)r   r   r   rg   rn   rt   r|   r   r   r   r   rv      s   
rv   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestInitFromListOfDictsc                 C   s4   ddddddddg| _ ddddddg| _d S )	Nr&   r>   r=   r7   r?   r@   r8   r9   r8   r:   )rE   data_raggedr4   r   r   r   r6      s    

zTestInitFromListOfDicts._setupc                 C   s0   |  | || j}tdd |jD s,J d S )Nc                 s   s   | ]}|t g d v V  qdS )r7   N)set)r)   Zcolnamer   r   r   rD      r,   z5TestInitFromListOfDicts.test_names.<locals>.<genexpr>)r6   rE   rG   rF   rm   r   r   r   
test_names   s    

z"TestInitFromListOfDicts.test_namesc                 C   s.   |  | || jdd}|jg dks*J d S )N)r:   r9   r8   r;   rl   rm   r   r   r   test_names_ordered   s    
z*TestInitFromListOfDicts.test_names_orderedc                 C   s  |  | | j}dD ]}|r&||dn||}t|d ddgksHJ t|d jddgksdJ t|d jddgksJ t|d	 jddgksJ t|d	 jd
d
gksJ t|d |jrtnt	u sJ t|d tu sJ t|d	 tu sJ qd S )NFTrowsr8   r&   r>   r9   FTr:   r?   )
r6   r   r-   rG   maskrE   rP   Zmaskedr   r   )r   r5   Zdatr   rC   r   r   r    test_missing_data_init_from_dict   s    
z8TestInitFromListOfDicts.test_missing_data_init_from_dictN)r   r   r   r6   r   r   r   r   r   r   r   r}      s   r}   c                   @   s   e Zd ZdZdd ZdS )TestInitFromListOfMappingz?Test that init from a Mapping that is not a dict subclass worksc                 C   sP   t ddddt ddddg| _t dddt dddg| _t| jd	 trLJ d S )
Nr&   r>   r=   r7   r?   r@   r~   r   r   )r	   rE   r   
isinstancer   r4   r   r   r   r6      s    

z TestInitFromListOfMapping._setupN)r   r   r   r    r6   r   r   r   r   r      s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestInitFromColsListc                 C   s>   t ddgdtjdtjddgtjdtjddgd	dg| _d S )
Nr&   r=   x)r(   rN   r>   r?   rO   r@   i8)r   r-   rQ   rH   rE   r4   r   r   r   r6      s    zTestInitFromColsList._setupc                    sF   |  | || j  jg dks&J t fdd jD sBJ d S )N)r   rj   rk   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD      r,   z:TestInitFromColsList.test_default_names.<locals>.<genexpr>rw   r4   r   rB   r   rn      s    

z'TestInitFromColsList.test_default_namesc                    s   |  | || jg dg dd  jg dks4J  d jjtjksJJ  d jjtjks`J  d jjtjksvJ t	 fdd	 jD sJ d S )
Nrx   ry   rM   rz   r9   rj   r:   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD   	  r,   z@TestInitFromColsList.test_partial_names_dtype.<locals>.<genexpr>r{   r4   r   rB   r   rt     s    
z-TestInitFromColsList.test_partial_names_dtypec                 C   s>   |  | || jd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 referenceFro   d   r   r   N)r6   rE   rm   r   r   r   test_ref  s    
zTestInitFromColsList.test_refN)r   r   r   r6   rn   rt   r   r   r   r   r   r      s   	r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestInitFromNdarrayStructc                 C   s   t jddgg dd| _d S )Nrc   rd   )r   r   )yrJ   )zr   rO   re   r4   r   r   r   r6     s
    z TestInitFromNdarrayStruct._setupc                    s   |  | || jdd d d d< d d d< | jd d dksFJ | jd d dks\J tt | jksvJ t fdd jD sJ d	S )
z\Init with ndarray and copy=False and show that table uses reference
        to input ndarrayFro   r   r   r&   r   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD   &  r,   z=TestInitFromNdarrayStruct.test_ndarray_ref.<locals>.<genexpr>N)r6   rE   r-   rG   rH   rF   r4   r   rB   r   rq     s    
z*TestInitFromNdarrayStruct.test_ndarray_refc                    s   |  | || jg dg dd  jg dks4J  d jjtjksJJ  d jjtjks`J  d jjtjksvJ t	 fdd	 jD sJ d S )
NeNdry   rM   r   r   r   r   r   r   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD   /  r,   zETestInitFromNdarrayStruct.test_partial_names_dtype.<locals>.<genexpr>r{   r4   r   rB   r   rt   (  s    
z2TestInitFromNdarrayStruct.test_partial_names_dtypec                    s   |  | || jg ddd  jg dks0J  d jjtjksFJ  d jjtjks\J  d jjtjksrJ t fdd	 jD sJ d S )
Nr   Fr<   r_   r   r   r   r   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD   8  r,   zCTestInitFromNdarrayStruct.test_partial_names_ref.<locals>.<genexpr>)	r6   rE   rF   rN   rP   r-   int64rQ   rG   r4   r   rB   r   ru   1  s    
z0TestInitFromNdarrayStruct.test_partial_names_refN)r   r   r   r6   rq   rt   ru   r   r   r   r   r     s   	r   c                   @   s   e Zd Zdd ZdS )TestInitFromDictc                 C   s>   t dtddgddfdddgfd	tjdd
gddfg| _d S Nr8   r&   r=   r   r'   r9   r>   r?   r:   r@   r   rO   )r   r   r-   rH   rE   r4   r   r   r   r6   >  s    
zTestInitFromDict._setupNr   r   r   r6   r   r   r   r   r   ;  s   r   c                   @   s   e Zd Zdd ZdS )TestInitFromMappingc                 C   s^   t dtddgddfdddgfd	tjdd
gddfg| _t| jtsJJ t| jtrZJ d S r   )r   r   r-   rH   rE   r   r   r   r4   r   r   r   r6   G  s    
zTestInitFromMapping._setupNr   r   r   r   r   r   D  s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestInitFromOrderedDictc                 C   s>   t dtdddgdfdddgfd	tjdd
gddfg| _d S )Nr8   r   r&   r=   )r(   rE   r9   r>   r?   r:   r@   r   rO   )r   r   r-   rH   rE   r4   r   r   r   r6   R  s    
zTestInitFromOrderedDict._setupc                 C   s*   |  | || j}|jg dks&J d S )Nr7   rl   rm   r   r   r   test_col_orderW  s    

z&TestInitFromOrderedDict.test_col_orderN)r   r   r   r6   r   r   r   r   r   r   O  s   r   c                   @   s   e Zd Zdd Zdd ZdS )TestInitFromRowc                 C   s0   t jddgg dd}||dddgid| _d S 	Nrc   rd   )r   )r   r   )r   rL   rO   commentscomment1comment2)metare   r   r5   arrr   r   r   r6   `  s    zTestInitFromRow._setupc                    s   |  | || jd   jd d dks.J  jD ](}t | | j| dd ks4J q4t fdd jD szJ d d d< d	 jd d< t d tdgksJ t| jd tdd
gksJ | jjd d dksJ d S )Nr   r   r   r&   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD   n  r,   z5TestInitFromRow.test_init_from_row.<locals>.<genexpr>   r   new comment2r=   r   )r6   rE   r   rF   r-   rG   rH   )r   r5   r(   r   rB   r   test_init_from_rowf  s    

&"z"TestInitFromRow.test_init_from_rowN)r   r   r   r6   r   r   r   r   r   r   ]  s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestInitFromTablec                 C   s0   t jddgg dd}||dddgid| _d S r   re   r   r   r   r   r6   {  s    zTestInitFromTable._setupc                    s   |  | || j  jd d dks*J d d d< d jd d< | jjd d dks\J t d tddgks|J t| jd tdd	gksJ  d
 jd
ksJ t fdd jD sJ d S )Nr   r   r   r   r   r&   r   r   r=   r   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD     r,   z8TestInitFromTable.test_data_meta_copy.<locals>.<genexpr>)r6   rE   r   r-   rG   rH   r(   rF   r4   r   rB   r   test_data_meta_copy  s    

 "z%TestInitFromTable.test_data_meta_copyc                    s   |  | || jdd d d d<  d d dks8J | jd d dksNJ t  | j ksjJ t fdd jD sJ d S )NFro   r   r   r&   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD     r,   z3TestInitFromTable.test_table_ref.<locals>.<genexpr>)r6   rE   r-   rG   rp   rF   r4   r   rB   r   test_table_ref  s    
z TestInitFromTable.test_table_refc                    s   |  | || jg dg dd  jg dks4J  d jjtjksJJ  d jjtjks`J  d jjtjksvJ t fdd	 jD sJ d S )
Nr   )rK   Nr   rM   r   r   r   r   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD     r,   z=TestInitFromTable.test_partial_names_dtype.<locals>.<genexpr>)	r6   rE   rF   rN   rP   r-   rR   r   rG   r4   r   rB   r   rt     s    
z*TestInitFromTable.test_partial_names_dtypec                    s   |  | || jg ddd  jg dks0J  d jjtjksFJ  d jjtjks\J  d jjtjksrJ t fdd	 jD sJ d S )
Nr   Fr   r   r   r   r   c                 3   s   | ]} | j |kV  qd S r
   r'   rA   rB   r   r   rD     r,   z;TestInitFromTable.test_partial_names_ref.<locals>.<genexpr>)	r6   rE   rF   rN   rP   r-   r   rS   rG   r4   r   rB   r   ru     s    
z(TestInitFromTable.test_partial_names_refc                 C   sH   |  | || j}||jd }|jg dks4J |jjdksDJ d S )N)r   r   r   r6   rE   r1   rF   rN   r<   r   r5   rC   t2r   r   r   test_init_from_columns  s
    

z(TestInitFromTable.test_init_from_columnsc                 C   sL   |  | || j}||jdd }|jddgks8J |jjdksHJ d S )Nr   r>   r   r   r   r   r   r   r   r   r   test_init_from_columns_slice  s
    

z.TestInitFromTable.test_init_from_columns_slicec                 C   sR   |  | || j}||jd |jd g}|jddgks>J |jjdksNJ d S )Nr   r   r   )r   r   r   r   r   r   r   test_init_from_columns_mix  s
    

z,TestInitFromTable.test_init_from_columns_mixN)r   r   r   r6   r   r   rt   ru   r   r   r   r   r   r   r   r   x  s   			r   c                   @   s   e Zd Zdd ZdS )TestInitFromNonec                 C   s   t jdddgd}ddidddd	ddgid	|jifD ]}|f i |}|jd
dgksZJ t|d
 dksnJ t|d dksJ d	|v r6|d
 jjt jksJ |d jjt jksJ |d
 jdd dks6J q6dS )z?
        Test different ways of initing an empty table
        r   )r8   rK   r>   )r9   rJ   rO   r<   r~   ))rK   r   rJ   rM   rN   r8   r9   r&   Nr   )	r-   emptyrN   rF   r   rP   rR   rQ   shape)r   r5   Znp_tr   rC   r   r   r   test_data_none_with_cols  s     
z)TestInitFromNone.test_data_none_with_colsN)r   r   r   r   r   r   r   r   r     s   r   Ztable_typesc                   @   s   e Zd Zdd Zdd ZdS )TestInitFromRowsc                 C   s  ddgddggddgdfD ]}||dd	}t |d ddgksDJ t |d ddgks^J |jddgkspJ |d jjd
ksJ |d jjdv sJ |d jjdsJ qt ddd}||dg dd}t |d ddgksJ t |d ddgks
J t |d ddgks&J |jg dks:J |d jjdsRJ |d jjdsjJ |d jjdsJ d S )Nr&   r8   r>   r9   r&   r8   r>   r9   )r   r   r~   )r   r<   i)SU1   r=   r7   )rL   rK   r   )r   r<   rN   r   r?   r:   r@   rL   rK   r   )	r-   rG   rF   rN   kindstrendswithr.   Zreshape)r   r5   r   rC   r   r   r   test_init_with_rows  s(    z$TestInitFromRows.test_init_with_rowsc                 C   sT   t t$}|dggdggd W d    n1 s40    Y  dt|jv sPJ d S )Nr&   )rE   r   z+Cannot supply both `data` and `rows` values)rW   rX   rY   r   r   )r   r5   errr   r   r   test_init_with_rows_and_data  s    2z-TestInitFromRows.test_init_with_rows_and_dataN)r   r   r   r   r   r   r   r   r   r     s   r   has_dataTFc                 C   s   t jdt ddgd}| r"|gng }t|ddg|jd}|jddgksNJ t|d jdksdJ t|d jd	kszJ t|| rdnd
ksJ dS )zTest fix for #10393r>   )r8   rJ   )r9   rK   rO   r   r   rM   rQ   rR   r   N)r-   ZonesrN   r   rF   r   r   )r   r   Z	data_argsrC   r   r   r   /test_init_table_with_names_and_structured_dtype  s    r   c                 C   s   dD ]}t jdddgfdddgfgdd	gd
}| ||d}|jddgksLJ |d jdks^J |d jdkspJ d|d d< d|d d d< |r|d d dksJ |d d d dksJ q|d d dksJ |d d d dksJ q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   r&   
      r=      (   )r8   r   )r9   r   r   rO   ro   r8   r9   r   )r>   r>   8r   N)r-   rH   rF   r   )r5   r_   ZndrC   r   r   r   'test_init_and_ref_from_multidim_ndarray  s"    
r   r_   c                 C   s   t d}t d}td|fd|fg}| ||d}t|jtddgksNJ |d jdks`J |d jdksrJ d|d d< d	|d d
< |r|d dksJ |d
 dksJ n |d dksJ |d
 d	ksJ dS )z|
    Test that initializing from a dict works for both copy=False and True and that
    the referencing is as expected.
    r"   r   r#   r$   ro   )r   r   r   r   r&   g        N)r-   r.   Zzerosr   r   rF   r   )r5   r_   r#   r$   r0   rC   r   r   r   test_init_and_ref_from_dict  s    

r   c                  C   sL   t dg did} d| d< tdd | d D s4J | d jjdksHJ dS )	zTest fix for a problem introduced in #10636 (see
    https://github.com/astropy/astropy/pull/10636#issuecomment-676847515)
    r8   rc   )rE   Nr9   c                 s   s   | ]}|d u V  qd S r
   r   )r)   valr   r   r   rD   ;  r,   z.test_add_none_object_column.<locals>.<genexpr>O)r   rG   rN   r   rB   r   r   r   test_add_none_object_column5  s    r   c           
      C   s   t ddg}ddd}||g}tddg}tddg}||g}| |d}| |d}|t|j }	|jd	d
gksrJ |jd	d
gksJ |	jd
d	gksJ d S )N)r9   r&   )r8   r   r   r   r~   )r9      )r8   r   r   r9   r8   )r   r   sortedrF   )
r5   Zrow1Zrow2Zrows12Zrow3Zrow4Zrows34t1r   Zt3r   r   r   test_init_from_row_OrderedDict?  s    


r   c                  C   sT   dd t dD } t| d}t|d ddgks6J t|d ddgksPJ d S )	Nc                 s   s   | ]}d | d| fV  qdS )r&   r>   Nr   )r)   Ziir   r   r   rD   P  r,   z3test_init_from_rows_as_generator.<locals>.<genexpr>r>   r   ri   r&   rj   r=   )ranger   r-   rG   )r   rC   r   r   r    test_init_from_rows_as_generatorO  s    
r   rN   ZfailrJ   c                 C   s<   t jtdd t| d W d    n1 s.0    Y  d S )Nz;type was specified but could not be parsed for column namesmatchrO   rW   rX   rY   r   rO   r   r   r   "test_init_bad_dtype_in_empty_tableV  s    r   c                   C   s:   t jtdd td W d    n1 s,0    Y  d S )Nz1Data type <class 'str'> not allowed to init Tabler   Zhellor   r   r   r   r   -test_init_data_type_not_allowed_to_init_table]  s    r   c                  C   s   dt j dt j ddt j ddg} t| }|d jt ju sBJ |d jdu sTJ |d jjd	kshJ |d jjd
ks|J t|d ddgksJ |d d dt j ksJ |d d dksJ dS )zTest fix for #11327r@   r&   r   r   r=   r   r   Nfr   r   )umr   ZunitrN   r   r-   rG   )rE   rC   r   r   r   %test_init_Table_from_list_of_quantityc  s    &r   ).collectionsr   r   collections.abcr   rW   Znumpyr-   Zastropy.tabler   r   r   r   Zastropy.unitsZunitsr   r	   r!   r3   ZmarkZusefixturesr\   ra   rb   rv   r}   r   r   r   r   r   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sh   !$


)

#

'





E

 







