U
    e»{jmX  ã                   @   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
 d dlmZmZmZmZ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.dDdE„ Z/dS )Fé    )ÚOrderedDictÚUserDict)ÚMappingN)ÚColumnÚMaskedColumnÚQTableÚTableÚTableColumnsc                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )ÚDictLikez¤A 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 ||Ž| _d S ©N)ÚdictÚ_data)ÚselfÚargsÚkwargs© r   úb/var/www/html/bwave/python/venv/lib/python3.8/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 |ksTt‚||d  |d ks@t‚q@d|fd|fd|ff}t|ƒ}|D ],}|d |ks¤t‚||d  |d ks�t‚q�td|fd|fd|fgƒ}	t|	ƒ}
|
 ¡ D ]$}||
ksøt‚|
| |	| ksèt‚qèd	d
„ |D ƒ}t|ƒ}|D ]*}|j|k�s<t‚||j |k�s(t‚�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>=   s     z2TestTableColumnsInit.test_init.<locals>.<listcomp>N)ÚnpÚaranger	   ÚAssertionErrorr   Ú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    r3   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   Ú_setupF   s    zBaseInitFrom._setupc                    s¬   |   |¡ || jdd�‰ ˆ jdddgks,t‚t ˆ d t ddg¡k¡sLt‚t ˆ d t dd	g¡k¡slt‚t ˆ d t dd
g¡k¡sŒt‚t‡ fdd„ˆ jD ƒƒs¨t‚d S )N©ÚaÚbÚc©Únamesr9   r:   r;   r'   é   é   é   é   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   ©r*   r)   ©Útr   r   Ú	<genexpr>P   s     z/BaseInitFrom.test_basic_init.<locals>.<genexpr>)r7   ÚdataÚcolnamesr/   r-   ÚallÚarrayr5   r   rC   r   Útest_basic_initI   s    
   zBaseInitFrom.test_basic_initc                    sü   |   |¡ || jddd�‰ ˆ jdddgks.t‚t ˆ d tjddgd	d
�k¡sRt‚t ˆ d tjddgdd
�k¡svt‚t ˆ d tjddgdd
�k¡sšt‚ˆ d jjtj	ks°t‚ˆ d jjtj
ksÆt‚ˆ d jjtjksÜt‚t‡ fdd„ˆ jD ƒƒsøt‚d S )Nr8   )Úi4Úf4Úf8©r=   Údtyper9   r:   r;   r'   r>   rK   ©rO   r?   r@   rL   rA   rM   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   \   s     z.BaseInitFrom.test_set_dtype.<locals>.<genexpr>)r7   rF   rG   r/   r-   rH   rI   rO   ÚtypeÚint32Úfloat32Úfloat64r5   r   rC   r   Útest_set_dtypeR   s    
$$$zBaseInitFrom.test_set_dtypec              	   C   s4   |   |¡ t t¡� || jddd� W 5 Q R X d S )N©r9   )rK   rL   rK   rN   ©r7   ÚpytestÚraisesÚ
ValueErrorrF   r5   r   r   r   Útest_names_dtype_mismatch^   s    
z&BaseInitFrom.test_names_dtype_mismatchc              	   C   s4   |   |¡ t t¡� || jddd� W 5 Q R X d S )NrV   rK   rN   rW   r5   r   r   r   Útest_names_cols_mismatchc   s    
z%BaseInitFrom.test_names_cols_mismatchN)r   r   r    r7   rJ   rU   r[   r\   r   r   r   r   r4   E   s
   	r4   r6   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚBaseInitFromListLikec              	   C   s8   |   |¡ t t¡� || jdgtgd� W 5 Q R X d S )Nr9   rN   ©r7   rX   rY   rZ   rF   Úintr5   r   r   r   r\   k   s    
z-BaseInitFromListLike.test_names_cols_mismatchc              	   C   s:   |   |¡ t t¡� || jdgtgdd� W 5 Q R X d S )Nr9   F)r=   rO   Úcopyr^   r5   r   r   r   Útest_names_copy_falsep   s    
z*BaseInitFromListLike.test_names_copy_falseN)r   r   r    r\   ra   r   r   r   r   r]   i   s   r]   c                   @   s   e Zd ZdS )ÚBaseInitFromDictLikeN)r   r   r    r   r   r   r   rb   v   s   rb   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@   rA   rK   rP   ©r-   rI   rF   )r   Úmethodr   r   r   Úsetup_method}   s    z$TestInitFromNdarrayHomo.setup_methodc                 C   s,   |   |¡ || jƒ}|jdddgks(t‚d S )NÚcol0Úcol1Úcol2©r7   rF   rG   r/   ©r   r6   rD   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<t‚|d d dksPt‚| jd d dksft‚dS )z[Init with ndarray and copy=False and show that this is a reference
        to input ndarrayF©r`   r   rj   r'   N)r7   rF   Úas_arrayr/   rm   r   r   r   Útest_ndarray_ref…   s    
z(TestInitFromNdarrayHomo.test_ndarray_refc                    sœ   |   |¡ || jdd dgd d dgd�‰ ˆ jdddgks:t‚ˆ d jjtjksPt‚ˆ d jjtjksft‚ˆ d jjtjks|t‚t	‡ fdd„ˆ jD ƒƒs˜t‚d S )Nr9   r;   rM   rN   rj   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   –   s     zCTestInitFromNdarrayHomo.test_partial_names_dtype.<locals>.<genexpr>)
r7   rF   rG   r/   rO   rQ   r-   rR   rT   rH   r5   r   rC   r   Útest_partial_names_dtype�   s    
z0TestInitFromNdarrayHomo.test_partial_names_dtypec                    s”   |   |¡ || jdd dgd�‰ ˆ jdddgks2t‚ˆ d jjtjksHt‚ˆ d jjtjks^t‚ˆ d jjtjkstt‚t‡ fdd„ˆ jD ƒƒs�t‚d S )Nr9   r;   r<   rj   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   Ÿ   s     zATestInitFromNdarrayHomo.test_partial_names_ref.<locals>.<genexpr>)	r7   rF   rG   r/   rO   rQ   r-   rR   rH   r5   r   rC   r   Útest_partial_names_ref˜   s    
z.TestInitFromNdarrayHomo.test_partial_names_refN)r   r   r    rh   rn   rq   rr   rs   r   r   r   r   rc   {   s
   
	rc   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)   rF   rO   rA   rP   )r7   r-   rR   r   rI   rF   r5   r   r   r   rh   ¤   s
    
ýz$TestInitFromListOfLists.setup_methodc                    sH   |   |¡ || jƒ‰ ˆ jdddgks(t‚t‡ fdd„ˆ jD ƒƒsDt‚d S )Nri   rj   rk   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   °   s     z=TestInitFromListOfLists.test_default_names.<locals>.<genexpr>©r7   rF   rG   r/   rH   r5   r   rC   r   rn   ¬   s    

z*TestInitFromListOfLists.test_default_namesc                    sœ   |   |¡ || jdd dgdd dgd�‰ ˆ jdddgks:t‚ˆ d jjtjksPt‚ˆ d jjtjksft‚ˆ d jjtj	ks|t‚t
‡ fdd„ˆ jD ƒƒs˜t‚d S )	Nr:   r;   rL   rM   rN   rj   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   ¹   s     zCTestInitFromListOfLists.test_partial_names_dtype.<locals>.<genexpr>©r7   rF   rG   r/   rO   rQ   r-   rS   rR   rT   rH   r5   r   rC   r   rr   ²   s    
z0TestInitFromListOfLists.test_partial_names_dtypec              	   C   s:   |   |¡ t t¡� |ddgdddggƒ W 5 Q R X d S )Nr'   r?   r>   r@   rA   )r7   rX   rY   rZ   r5   r   r   r   Útest_bad_data»   s    
z%TestInitFromListOfLists.test_bad_dataN)r   r   r    rh   rn   rr   rw   r   r   r   r   rt   ¢   s   	rt   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>   r8   r@   rA   ©r9   r:   ©r9   r;   )rF   Údata_raggedr5   r   r   r   r7   Ã   s    zTestInitFromListOfDicts._setupc                 C   s0   |   |¡ || jƒ}tdd„ |jD ƒƒs,t‚d S )Nc                 s   s   | ]}|d kV  qdS )>   r:   r;   r9   Nr   )r*   Zcolnamer   r   r   rE   Ê   s     z5TestInitFromListOfDicts.test_names.<locals>.<genexpr>)r7   rF   rH   rG   r/   rm   r   r   r   Ú
test_namesÇ   s    

z"TestInitFromListOfDicts.test_namesc                 C   s0   |   |¡ || jdd�}|jdddgks,t‚d S )N)r;   r:   r9   r<   r;   r:   r9   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¡sHt‚t |d jddgk¡sdt‚t |d jddgk¡s€t‚t |d	 jddgk¡sœt‚t |d	 jd
d
gk¡s¸t‚t|d ƒ|jrÌt	nt
ksÖt‚t|d ƒt	ksêt‚t|d	 ƒt	kst‚qd S )N©FT©Úrowsr9   r'   r?   r:   FTr;   r@   )r7   r{   r-   rH   r/   ÚmaskrF   rQ   Zmaskedr   r   )r   r6   Zdatr€   rD   r   r   r   Ú test_missing_data_init_from_dictÑ   s    
z8TestInitFromListOfDicts.test_missing_data_init_from_dictN)r   r   r    r7   r|   r}   r‚   r   r   r   r   rx   Á   s   rx   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ƒrLt‚d S )
Nr'   r?   r>   r8   r@   rA   ry   rz   r   )r
   rF   r{   Ú
isinstancer   r/   r5   r   r   r   r7   å   s    z TestInitFromListOfMapping._setupN)r   r   r    r!   r7   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)   rO   r?   r@   rP   rA   Úi8)r   r-   rR   rI   rF   r5   r   r   r   r7   î   s    ýzTestInitFromColsList._setupc                    sH   |   |¡ || jƒ‰ ˆ jdddgks(t‚t‡ fdd„ˆ jD ƒƒsDt‚d S )Nr†   rj   rk   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   ù   s     z:TestInitFromColsList.test_default_names.<locals>.<genexpr>ru   r5   r   rC   r   rn   õ   s    

z'TestInitFromColsList.test_default_namesc                    sœ   |   |¡ || jdd dgdd dgd�‰ ˆ jdddgks:t‚ˆ d jjtjksPt‚ˆ d jjtjksft‚ˆ d jjtj	ks|t‚t
‡ fdd„ˆ jD ƒƒs˜t‚d S )	Nr:   r;   rL   rM   rN   rj   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE     s     z@TestInitFromColsList.test_partial_names_dtype.<locals>.<genexpr>rv   r5   r   rC   r   rr   û   s    
z-TestInitFromColsList.test_partial_names_dtypec                 C   s>   |   |¡ || jdd�}d|d d< | jd d dks:t‚dS )zFTest that initializing from a list of columns can be done by referenceFro   éd   r†   r   N)r7   rF   r/   rm   r   r   r   Útest_ref  s    
zTestInitFromColsList.test_refN)r   r   r    r7   rn   rr   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dddgd�| _d S )Nrd   re   ©r†   r‡   )ÚyrK   )Úzr‡   rP   rf   r5   r   r   r   r7     s     ÿz TestInitFromNdarrayStruct._setupc                    s–   |   |¡ || jdd�‰ dˆ d d< dˆ d d< | jd d dksFt‚| jd d dks\t‚t t ˆ ¡| jk¡svt‚t‡ fdd„ˆ jD ƒƒs’t‚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(   rB   rC   r   r   rE     s     z=TestInitFromNdarrayStruct.test_ndarray_ref.<locals>.<genexpr>N)r7   rF   r/   r-   rH   rI   rG   r5   r   rC   r   rq     s    
z*TestInitFromNdarrayStruct.test_ndarray_refc                    sœ   |   |¡ || jdd dgdd dgd�‰ ˆ jdddgks:t‚ˆ d jjtjksPt‚ˆ d jjtjksft‚ˆ d jjtj	ks|t‚t
‡ fdd„ˆ jD ƒƒs˜t‚d S )	NÚeÚdrL   rM   rN   rŒ   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   '  s     zETestInitFromNdarrayStruct.test_partial_names_dtype.<locals>.<genexpr>rv   r5   r   rC   r   rr      s    
z2TestInitFromNdarrayStruct.test_partial_names_dtypec                    s–   |   |¡ || jdd dgdd�‰ ˆ jdddgks4t‚ˆ d jjtjksJt‚ˆ d jjtjks`t‚ˆ d jjtjksvt‚t	‡ fdd„ˆ jD ƒƒs’t‚d S )NrŽ   r�   F©r=   r`   rŒ   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   0  s     zCTestInitFromNdarrayStruct.test_partial_names_ref.<locals>.<genexpr>)
r7   rF   rG   r/   rO   rQ   r-   Úint64rR   rH   r5   r   rC   r   rs   )  s    
z0TestInitFromNdarrayStruct.test_partial_names_refN)r   r   r    r7   rq   rr   rs   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 ©Nr9   r'   r>   r†   r(   r:   r?   r@   r;   rA   r‡   rP   )r   r   r-   rI   rF   r5   r   r   r   r7   5  s    
ýÿzTestInitFromDict._setupN©r   r   r    r7   r   r   r   r   r’   3  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ƒsJt‚t| jtƒrZt‚d S r“   )	r   r   r-   rI   rF   r„   r   r/   r   r5   r   r   r   r7   A  s    
ýÿzTestInitFromMapping._setupNr”   r   r   r   r   r•   ?  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 )Nr9   r†   r'   r>   )r)   rF   r:   r?   r@   r;   rA   r‡   rP   )r   r   r-   rI   rF   r5   r   r   r   r7   O  s    
ýÿzTestInitFromOrderedDict._setupc                 C   s,   |   |¡ || jƒ}|jdddgks(t‚d S )Nr9   r:   r;   rl   rm   r   r   r   Útest_col_orderX  s    

z&TestInitFromOrderedDict.test_col_orderN)r   r   r    r7   r—   r   r   r   r   r–   M  s   	r–   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestInitFromRowc                 C   s2   t jddgdddgd�}||ddd	gid
�| _d S ©Nrd   re   r‹   )rŒ   r‡   )r�   rM   rP   ÚcommentsÚcomment1Úcomment2)Úmetarf   ©r   r6   Úarrr   r   r   r7   `  s
     ÿzTestInitFromRow._setupc                    sð   |   |¡ || jd ƒ‰ ˆ jd d dks.t‚ˆ jD ](}t ˆ | | j| dd… k¡s4t‚q4t‡ fdd„ˆ jD ƒƒszt‚dˆ d d< d	ˆ jd d< t ˆ d t dg¡k¡s²t‚t | jd t dd
g¡k¡sÔt‚| jjd d dksìt‚d S )Nr   rš   r›   r'   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   n  s     z5TestInitFromRow.test_init_from_row.<locals>.<genexpr>é   r†   únew comment2r>   rœ   )r7   rF   r�   r/   rG   r-   rH   rI   )r   r6   r)   r   rC   r   Útest_init_from_rowf  s    

&"z"TestInitFromRow.test_init_from_rowN)r   r   r    r7   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   s2   t jddgdddgd�}||ddd	gid
�| _d S r™   rf   rž   r   r   r   r7   z  s
     ÿzTestInitFromTable._setupc                    sÐ   |   |¡ || jƒ‰ ˆ jd d dks*t‚dˆ d d< dˆ jd d< | jjd d dks\t‚t ˆ d t ddg¡k¡s|t‚t | jd t dd	g¡k¡sžt‚ˆ d
 jd
ks°t‚t‡ fdd„ˆ jD ƒƒsÌt‚d S )Nrš   r   r›   r    r†   r'   r¡   rœ   r>   r�   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   Š  s     z8TestInitFromTable.test_data_meta_copy.<locals>.<genexpr>)	r7   rF   r�   r/   r-   rH   rI   r)   rG   r5   r   rC   r   Útest_data_meta_copy€  s    

 "z%TestInitFromTable.test_data_meta_copyc                    sŠ   |   |¡ || jdd�‰ dˆ d d< ˆ d d dks8t‚| jd d dksNt‚t ˆ  ¡ | j ¡ k¡sjt‚t‡ fdd„ˆ jD ƒƒs†t‚d S )NFro   r   r†   r'   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   “  s     z3TestInitFromTable.test_table_ref.<locals>.<genexpr>)r7   rF   r/   r-   rH   rp   rG   r5   r   rC   r   Útest_table_refŒ  s    
z TestInitFromTable.test_table_refc                    sœ   |   |¡ || jdd dgdd dgd�‰ ˆ jdddgks:t‚ˆ d jjtjksPt‚ˆ d jjtjksft‚ˆ d jjtjks|t‚t	‡ fdd„ˆ jD ƒƒs˜t‚d S )	NrŽ   r�   rL   r‡   rN   rŒ   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   œ  s     z=TestInitFromTable.test_partial_names_dtype.<locals>.<genexpr>)
r7   rF   rG   r/   rO   rQ   r-   rS   r‘   rH   r5   r   rC   r   rr   •  s    
z*TestInitFromTable.test_partial_names_dtypec                    s–   |   |¡ || jdd dgdd�‰ ˆ jdddgks4t‚ˆ d jjtjksJt‚ˆ d jjtjks`t‚ˆ d jjtjksvt‚t	‡ fdd„ˆ jD ƒƒs’t‚d S )NrŽ   r�   Fr�   rŒ   c                 3   s   | ]}ˆ | j |kV  qd S r   r(   rB   rC   r   r   rE   ¥  s     z;TestInitFromTable.test_partial_names_ref.<locals>.<genexpr>)
r7   rF   rG   r/   rO   rQ   r-   r‘   rT   rH   r5   r   rC   r   rs   ž  s    
z(TestInitFromTable.test_partial_names_refc                 C   sJ   |   |¡ || jƒ}||jd ƒ}|jdddgks6t‚|jjdksFt‚d S )N)r�   r†   rŒ   r�   r†   rŒ   ©r7   rF   r2   rG   r/   rO   r=   ©r   r6   rD   Ú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s8t‚|jjdksHt‚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>t‚|jjdksNt‚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    r7   r¤   r¥   rr   rs   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 |Ž}|jd
dgksVt‚t|d
 ƒdksjt‚t|d ƒdks~t‚d	|kr6|d
 jjt jksœt‚|d jjt jks²t‚|d
 j	dd… dks6t‚q6dS )z?
        Test different ways of initing an empty table
        r   )r9   rL   ©r?   )r:   rK   rP   r=   ry   ))rL   r®   rK   rN   rO   r9   r:   r'   Nr®   )
r-   ÚemptyrO   rG   r/   r   rQ   rS   rR   Úshape)r   r6   Znp_tr   rD   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¡sDt‚t  |d ddgk¡s^t‚|jddgkspt‚|d jjd
ks„t‚|d jjdks˜t‚|d jj d¡st‚qt  d¡ 	dd¡}||ddddgd�}t  |d ddgk¡sðt‚t  |d ddgk¡�st‚t  |d ddgk¡�s(t‚|jdddgk�s>t‚|d jj d¡�sVt‚|d jj d¡�snt‚|d jj d¡�s†t‚d S )Nr'   r9   r?   r:   ©r'   r9   ©r?   r:   )r³   r´   ry   )r€   r=   Úi)ÚSÚUÚ1é   r>   r8   rM   rL   r‡   )r€   r=   rO   r   r@   r;   rA   )
r-   rH   r/   rG   rO   ÚkindÚstrÚendswithr.   Zreshape)r   r6   r€   rD   r   r   r   Útest_init_with_rowsÙ  s"    z$TestInitFromRows.test_init_with_rowsc              	   C   s@   t  t¡�}|dggdggd� W 5 Q R X dt|jƒks<t‚d S )Nr'   )rF   r€   z+Cannot supply both `data` and `rows` values)rX   rY   rZ   r»   r   r/   )r   r6   Úerrr   r   r   Útest_init_with_rows_and_dataï  s    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sNt‚t|d jƒdksdt‚t|d jƒd	kszt‚t|ƒ| rˆdnd
ks’t‚dS )zTest fix for #10393r?   )r9   rK   )r:   rL   rP   r†   rŒ   rN   rR   rS   r   N)r-   ZonesrO   r   rG   r/   r»   r   )rÀ   rŸ   Z	data_argsrD   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sLt‚|d jdks^t‚|d jdkspt‚d|d d< d|d d d< |r¾|d d dks¤t‚|d d d dksêt‚q|d d dksÒt‚|d d d dkst‚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>   é   é(   )r9   r‡   )r:   r‡   r®   rP   ro   r9   r:   r®   )r?   r?   é8ÿÿÿr   éœÿÿÿN)r-   rI   rG   r/   r°   )r6   r`   ÚndrD   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ƒddhksJt‚|d jdks\t‚|d jdksnt‚d|d d< d	|d d
< |r¬|d dksšt‚|d
 dksÌt‚n |d dks¼t‚|d
 d	ksÌt‚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   ÚsetrG   r/   r°   )r6   r`   r$   r%   r1   rD   r   r   r   Útest_init_and_ref_from_dict  s    

rË   c                  C   sN   t ddddgid�} d| d< tdd	„ | d D ƒƒs6t‚| d jjd
ksJt‚dS )zTest fix for a problem introduced in #10636 (see
    https://github.com/astropy/astropy/pull/10636#issuecomment-676847515)
    r9   r'   r?   r>   )rF   Nr:   c                 s   s   | ]}|d kV  qd S r   r   )r*   Úvalr   r   r   rE   8  s     z.test_add_none_object_column.<locals>.<genexpr>ÚO)r   rH   r/   rO   rº   rC   r   r   r   Útest_add_none_object_column2  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srt‚|jd	d
gks„t‚|	jd
d	gks–t‚d S )N)r:   r'   )r9   r   rÂ   rÃ   ry   )r:   é   )r9   rÂ   r   r:   r9   )r   r   ÚsortedrG   r/   )
r6   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¡s6t‚t |d ddgk¡sPt‚d S )	Nc                 s   s   | ]}d | d| fV  qdS )r'   r?   Nr   )r*   Úiir   r   r   rE   M  s     z3test_init_from_rows_as_generator.<locals>.<genexpr>r?   r   ri   r'   rj   r>   )Úranger   r-   rH   r/   )r€   rD   r   r   r   Ú test_init_from_rows_as_generatorL  s    
rÕ   rO   ZfailrK   c              	   C   s(   t jtdd�� t| d� W 5 Q R X d S )Nz;type was specified but could not be parsed for column names©ÚmatchrP   ©rX   rY   rZ   r   rP   r   r   r   Ú"test_init_bad_dtype_in_empty_tableS  s
     ÿrÙ   c                	   C   s&   t jtdd�� tdƒ W 5 Q R X 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ksBt‚|d jdksTt‚|d jjd	ksht‚|d jjd
ks|t‚t |d ddgk¡s–t‚|d d dt j ks°t‚|d d dksÄt‚dS )zTest fix for #11327rA   r'   rª   rÂ   r>   r†   rŒ   NÚfrÍ   r   )	ÚuÚmr   Úunitr/   rO   rº   r-   rH   )rF   rD   r   r   r   Ú%test_init_Table_from_list_of_quantityb  s    &rß   c                  C   sŒ   t ddgtj ddggtjtjdœd�} | d jtjks<t‚t | d j	ddgk¡sXt‚| d jtjkslt‚t | d j	ddgk¡sˆt‚d	S )
zy
    Test fix for #14336 where providing units to QTable init fails.

    This applies when the input is a Quantity.
    r'   r?   )ri   rj   )Úunitsri   iè  iÐ  rj   N)
r   rÜ   ÚkmrÝ   ÚsrÞ   r/   r-   rH   r   rC   r   r   r   Útest_init_QTable_and_set_unitsp  s
    (rã   )0Úcollectionsr   r   Úcollections.abcr   Únumpyr-   rX   Zastropy.unitsrà   rÜ   Zastropy.tabler   r   r   r   r	   r
   r"   r4   ÚmarkZusefixturesr]   rb   rc   rt   rx   rƒ   r…   rŠ   r’   r•   r–   r˜   r£   r­   r²   ZparametrizerÁ   rÉ   rË   rÎ   rÒ   rÕ   rÙ   rÚ   rß   rã   r   r   r   r   Ú<module>   sj   !$


&

 


&




D









