a
    ߙfb?z                     @   s  d dl Z d dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
l m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z' e'rd dl(Z(ej)ej*ej+ej,ej-ej.ej/ej0ej1ej2ej3dgZ4dd Z5e j67ddd Z8e j67ddd Z9e j67ddd Z:e j67ddd Z;e j67ddd Z<e j67ddd Z=e j67ddd Z>e j67dd d! Z?e j67dd"d# Z@e j67dd$d% ZAe j67dd&d' ZBe j67dd(d) ZCe j67dd*d+ ZDe j67dd,d- ZEe j67dd.d/ ZFe j67dd0d1 ZGe j67dd2d3 ZHe j67dd4d5 ZIe j67dd6d7 ZJe j67dd8d9 ZKe j67dd:d; ZLe j67dd<d= ZMe j67dd>d? ZNe j67dd@dA ZOe j67ddBdC ZPe j67ddDdE ZQe j67de j6RdFe4dGdH ZSe j67ddIdJ ZTe j67ddKdL ZUe j67ddMdN ZVe j67ddOdP ZWe j67ddQdR ZXe j67ddSdT ZYe j67ddUdV ZZe j67ddWdX Z[e j67ddYdZ Z\e j67dd[d\ Z]dd^d_Z^ed`ej_ daej_ dbej_ dcZ`ed`ddgej_ dadegej_ dbdfgej_ dcZaed d`gejb dddagejb d`ejc Zded d`geje dedbgeje dgdfgeje Zfed d`gejg ejh d d`gejg ejh dhej_ eji ZjeedejdiZked`ddgdadegdjdkdldmZled`ddgdadegdbdfgdndkdldogdmZmemn Zodpeo_ped`ddgdadegdbdfgdqdrdggejg ejh dsdhgejg ejh dtZqed`ddgdadegdbdfgdqdrdggejg ejh dsdhgejg ejh dudvgej_ eji dwZred`ddgdadegdbdfgdqdudvgej_ eji dxZsedydzgd{d|e`d}Zteted`ddgeju elemeoeqeresd`ddgejv dhd~gewejx ddgeyejzejidd   ddgej{ ed`ddgejb ed`ddgejb dejb ded`ddgejb eaedefejekdZ|g dZ}dgdge}g dg dg dg dg dg dg dddgddgddgddgg dddgddgg dg dcg dg dcg dg ddZ~e j67ddd Ze j67de j6Rdeefdd Ze j67de j6Rdee| e j6Rdeefdd Ze j67ddd Ze j67ddd ZdS )    N)TableQTableNdarrayMixinColumn)simple_table)units)SkyCoordLatitude	LongitudeAngleEarthLocationSphericalRepresentationCartesianRepresentationSphericalCosLatDifferential)Time	TimeDelta)allclose)QuantityInfo)AstropyUserWarning)get_pkg_data_filename)_NOT_OVERWRITING_MSG_MATCH)	meta_path)HAS_H5PY|S3c                 C   s.   | t jkrg dS | dkr"g dS g dS d S )N)r      r   r   )s   abcs   defs   ghir         )npbool_dtype r"   >lib/python3.9/site-packages/astropy/io/misc/tests/test_hdf5.py_default_values   s
    
r$   znot HAS_H5PYc                 C   st   t | d}t }|tdg dd tjtdd || W d    n1 sX0    Y  tj	|dd}d S )	N	test.hdf5ar   namedataz-table path was not set via the path= argumentmatchZ__astropy_table__path)
strjoinr   
add_columnr   pytestwarnsUserWarningwritereadtmpdir	test_filet1r"   r"   r#   test_write_nopath'   s    (r:   c                 C   s   t | d}t }|tdg dd |j|dd tt}|j|dd W d    n1 sf0    Y  d	|j	j
d
 v sJ d S )Nr%   r&   r   r'   Zbubur,   T)appendz-table path should always be set via the path=r   )r.   r/   r   r0   r   r4   r1   raises
ValueErrorvalueargsr7   r8   r9   excr"   r"   r#   test_write_nopath_nonempty3   s    ,rB   c                 C   s`   t | d}t|d  tjtdd  tj	|ddd W d    n1 sR0    Y  d S )Nr%   wzno table found in HDF5 group /r*   /hdf5r-   format)
r.   r/   h5pyFilecloser1   r<   r=   r   r5   )r7   r8   r"   r"   r#   test_read_notable_nopathA   s    rK   c                 C   s`   t | d}t }|tdg dd |j|dd t|}t|d |d ks\J d S Nr%   r&   r   r'   	the_tabler,   	r.   r/   r   r0   r   r4   r5   r   allr7   r8   r9   t2r"   r"   r#   test_read_nopathI   s    
rR   c                 C   s   t | d}t }|tdg dd |j|dd |j|dddd	 tjtd
d t	|}W d    n1 sx0    Y  t
|d |d ksJ d S )Nr%   r&   r   r'   rM   r,   Zthe_table_but_differentTr-   r;   	overwritez+path= was not specified but multiple tablesr*   )r.   r/   r   r0   r   r4   r1   r2   r   r5   r   rO   rP   r"   r"   r#   test_read_nopath_multi_tablesT   s    
(rU   c                 C   sz   t | d}t }|tdg dd tt}|j|dd W d    n1 sX0    Y  |j	j
d dksvJ d S )	Nr%   r&   r   r'   test/r,   r   z,table path should end with table name, not /)r.   r/   r   r0   r   r1   r<   r=   r4   r>   r?   r@   r"   r"   r#   test_write_invalid_pathc   s    ,rW   c                 C   s   t | d}t }|tdg dd |j|dd tt}tj	|dd W d    n1 sf0    Y  |j
jd d	ksJ d S )
Nr%   r&   r   r'   rM   r,   rV   r   zPath test/ does not exist)r.   r/   r   r0   r   r4   r1   r<   OSErrorr5   r>   r?   r@   r"   r"   r#   test_read_invalid_pathm   s    ,rY   c                 C   sn   t | d}t|d  tt}tj	|dd W d    n1 sL0    Y  |j
jd dksjJ d S Nr%   rC   test/path/tabler,   r   #Path test/path/table does not exist)r.   r/   rH   rI   rJ   r1   r<   rX   r   r5   r>   r?   )r7   r8   rA   r"   r"   r#   test_read_missing_groupx   s
    ,r]   c                 C   s   t | d}t|d }|dd W d    n1 s@0    Y  tt}tj	|dd W d    n1 sx0    Y  |j
jd dksJ d S )	Nr%   rC   testr-   r[   r,   r   r\   )r.   r/   rH   rI   create_groupr1   r<   rX   r   r5   r>   r?   r7   r8   frA   r"   r"   r#   test_read_missing_table   s    .,rb   c              	   C   s   t | d}t|d\}tt}tj|dd W d    n1 sJ0    Y  |j	j
d dkshJ W d    n1 s|0    Y  d S rZ   )r.   r/   rH   rI   r1   r<   rX   r   r5   r>   r?   r`   r"   r"   r#   test_read_missing_group_fileobj   s
    ,rc   c                 C   sd   t | d}t }|tdg dd |j|dd tj|dd}t|d g dks`J d S rL   rN   rP   r"   r"   r#   test_read_write_simple   s    rd   c                 C   s   t | d}t }|tdg dd |j|dd tt }|j|ddd W d    n1 sh0    Y  |j	j
d	 d
ksJ d S )Nr%   r&   r   r'   rM   r,   Tr-   r;   r   zTable the_table already exists)r.   r/   r   r0   r   r4   r1   r<   rX   r>   r?   r@   r"   r"   r#   test_read_write_existing_table   s    .rf   c                 C   s   t jdddddb}t }|tdg dd |j|d	d
 tj|d	d
}t|d g dksfJ W d    n1 sz0    Y  d S )Nr^   rC   coreFZdriverZbacking_storer&   r   r'   rM   r,   )	rH   rI   r   r0   r   r4   r5   r   rO   )r7   output_filer9   rQ   r"   r"   r#   test_read_write_memory   s    rj   c                 C   sz   t | d}t|d  t }|tdg dd tj	t
td |j|dd W d    n1 sl0    Y  d S )	Nr%   rC   r&   r   r'   r*   rM   r,   )r.   r/   rH   rI   rJ   r   r0   r   r1   r<   rX   r   r4   r6   r"   r"   r#   test_read_write_existing   s    rk   c                 C   sv   t | d}t|d  t }|tdg dd |j|ddd tj	|dd	}t
|d g dksrJ d S )
Nr%   rC   r&   r   r'   rM   Tr-   rT   r,   r.   r/   rH   rI   rJ   r   r0   r   r4   r5   r   rO   rP   r"   r"   r#   "test_read_write_existing_overwrite   s    rn   c                 C   s   t | d}t|d  t }|tdg dd |j|ddd |j|d	dd tj	|dd
}t
|d g dksJ tj	|d	d
}t
|d g dksJ d S )Nr%   rC   r&   r   r'   Zthe_table_1Tre   Zthe_table_2r,   rm   )r7   r8   r9   rQ   t3r"   r"   r#   test_read_write_existing_append   s    rp   c                 C   s   t | d}t|d}|d W d    n1 s:0    Y  t }|tdg dd |j|ddd	 |j|d
dd	 tj	|dd}t
|d g dksJ tj	|d
d}t
|d g dksJ d S )Nr%   rC   Ztest_1r&   r   r'   ztest_1/the_table_1Tre   ztest_2/the_table_2r,   )r.   r/   rH   rI   r_   r   r0   r   r4   r5   r   rO   )r7   r8   ra   r9   rQ   ro   r"   r"   r#   &test_read_write_existing_append_groups   s    (rq   c                 C   s  t | d}t }|tdg dd |j|dd |j|ddd	 t }|tdg d
d tt }|j|ddd	 W d    n1 s0    Y  |j	j
d dksJ |j|dddd tj|dd}t|d g d
ksJ tj|dd}t|d g dksJ d S )Nr%   r&   r   r'   Ztable1r,   Ztable2Tre   )         r   zTable table1 already existsrS   )r.   r/   r   r0   r   r4   r1   r<   rX   r>   r?   r5   r   rO   )r7   r8   r9   Zt1v2rA   rQ   ro   r"   r"   r#   )test_read_write_existing_append_overwrite   s    .ru   c                 C   s   t | d}t }|tdg dd |j|dd dd l}||d8}tj|dd}t	
|d g dksvJ W d    n1 s0    Y  d S )	Nr%   r&   r   r'   rM   r,   r   rr.   r/   r   r0   r   r4   rH   rI   r5   r   rO   r7   r8   r9   rH   Z
input_filerQ   r"   r"   r#   test_read_fileobj   s    ry   c                 C   s   t | d}t }|tdg dd |j|dd dd l}||d8}tj|dd}t	
|d g dksvJ W d    n1 s0    Y  d S )	Nr%   r&   r   r'   path/to/data/the_tabler,   r   rv   rw   rx   r"   r"   r#   test_read_filobj_path  s    r{   c                 C   s   t | d}t }|tdg dd |j|dd dd l}||d<}tj|d	 d
d}t	
|d g dkszJ W d    n1 s0    Y  d S )Nr%   r&   r   r'   rz   r,   r   rv   zpath/tozdata/the_tablerw   rx   r"   r"   r#   test_read_filobj_group_path  s    r|   c                  C   sT   G dd d} |  }t jtdd tj|dd W d    n1 sF0    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z)test_read_wrong_fileobj.<locals>.FakeFilec                 S   s   d S Nr"   )selfr"   r"   r#   r5   )  s    z.test_read_wrong_fileobj.<locals>.FakeFile.readN)__name__
__module____qualname__r5   r"   r"   r"   r#   FakeFile(  s   r   z h5py can only open regular filesr*   rE   )rG   )r1   r<   	TypeErrorr   r5   )r   ra   r"   r"   r#   test_read_wrong_fileobj%  s    r   c                 C   s   t | d}dd l}||d:}t }|tdg dd |j|dd W d    n1 sb0    Y  tj|dd}t	
|d g dksJ d S )	Nr%   r   rC   r&   r   r'   rM   r,   r.   r/   rH   rI   r   r0   r   r4   r5   r   rO   r7   r8   rH   ri   r9   rQ   r"   r"   r#   test_write_fileobj2  s    ,r   c                 C   s  t | d}d}dd l}||d<}t }|tdg dd |j||dd	 W d    n1 sh0    Y  t }|tdd
dgd ||dD}|| t	|t	| f |
 || t	|d < W d    n1 s0    Y  tj|dd}t|d g dksJ d S )Nr%   rM   r   rC   r&   r   r'   r}   )r-   Zmaxshaperr   rs   r,   )r   r   r   rr   rs   )r.   r/   rH   rI   r   r0   r   r4   ZresizelenZas_arrayr5   r   rO   )r7   r8   Zthe_pathrH   ri   r9   rQ   ro   r"   r"   r#    test_write_create_dataset_kwargsA  s     $6r   c                 C   s   t | d}dd l}||d:}t }|tdg dd |j|dd W d    n1 sb0    Y  tj|dd}t	
|d g dksJ d S )	Nr%   r   rC   r&   r   r'   rz   r,   r   r   r"   r"   r#   test_write_filobj_groupZ  s    ,r   c                  C   sn   t  } | tdg dd tt }| jdddd W d    n1 sL0    Y  |jjd d	ksjJ d S )
Nr&   r   r'   i  rz   rE   rF   r   z9output should be a string or an h5py File or Group object)	r   r0   r   r1   r<   r   r4   r>   r?   )r9   rA   r"   r"   r#   test_write_wrong_typei  s
    .r   r!   c                 C   s   t | d}t|}t }|tdtj||dd |j|dd tj	|dd}t
|d |ksjJ |d j|ks|J d S )Nr%   r&   r    r'   rM   r,   )r.   r/   r$   r   r0   r   r   arrayr4   r5   rO   r!   )r7   r!   r8   valuesr9   rQ   r"   r"   r#   test_preserve_single_dtypest  s    r   c              	   C   s   t | d}t }tD ],}t|}|tt |tj||dd q|j	|dd tj
|dd}tD ]<}t|}t|t | |ksJ |t | j|ksfJ qfd S )Nr%   r    r'   rM   r,   )r.   r/   r   
ALL_DTYPESr$   r0   r   r   r   r4   r5   rO   r!   )r7   r8   r9   r!   r   rQ   r"   r"   r#   test_preserve_all_dtypes  s    "r   c                 C   s   t | d}t }|tdg dd d|jd< d|jd< d|jd	< d
|jd< tg d|jd< |j|dd tj	|dd}|jD ]"}t
|j| |j| ksJ qd S )Nr%   r&   r   r'   r   hellobn!	@cTderM   r,   )r.   r/   r   r0   r   metar   r   r4   r5   rO   )r7   r8   r9   rQ   keyr"   r"   r#   test_preserve_meta  s    




r   c                 C   s<  t | d}t }tg ddd|d< d|d jd< dd	d
gi|d jd< d|d _d|d _d
|jd< dd	d
gi|jd< |j|dddd tj|dd}|d j	|d j	ksJ |d j|d jksJ |d j|d jksJ |d j|d jksJ |j|jksJ t
|d}|td }|jjdks8J d S )Nr%   r   sr)   unitr&   A0a0a1r   r   7.3fA columnr   c0r   rM   Tr-   serialize_metarT   r,   rv   S)r.   r/   r   r   r   rG   descriptionr4   r5   r   rH   rI   r   r!   kind)r7   r8   r9   rQ   h5Z
meta_linesr"   r"   r#   test_preserve_serialized  s&    


r   c                 C   s   t d}t }tg ddd|d< d|d jd< dd	d
gi|d jd< d|d _d|d _d
|jd< dd	d
gi|jd< tj|dd}|d j|d jksJ |d j|d jksJ |d j|d jksJ |d j|d jksJ |j|jksJ dS )zdTest the old meta format

    Only for some files created prior to v4.0, in compatibility mode.
    zdata/old_meta_example.hdf5r   r   r   r&   r   r   r   r   r   r   r   r   r   r   rM   r,   N)r   r   r   r   rG   r   r5   r   rP   r"   r"   r#   (test_preserve_serialized_old_meta_format  s    


r   c                 C   s  t | d}t }tg ddd|d< d|d jd< dd	d
gi|d jd< d|d _d|d _d
|jd< dd	d
gi|jd< |j|dddd tj|dd}|d j|d jksJ |d j	|d j	ksJ |d j|d jksJ |d j|d jksJ |j|jksJ d S )Nr%   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   zthe_table/complicated/pathTr   r,   
r.   r/   r   r   r   rG   r   r4   r5   r   rP   r"   r"   r#   ,test_preserve_serialized_in_complicated_path  s$    



r   c                 C   s2  t | d}t }tg ddd|d< d|d jd< dd	d
gi|d jd< d|d _d|d _d
|jd< dd	d
gi|jd< dd |jd< dd |jd< |j|dddd tj|dd}|d j	|d j	ksJ |d j|d jksJ |d j|d jksJ |d j|d jksJ |j|jks.J dS )z(Test that very large datasets work, now!r%   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   0i  Zmeta_bigi   Zmeta_biggerstillrM   Tr   r,   Nr   rP   r"   r"   r#   test_metadata_very_large  s$    


r   c                 C   s   t | d}t }|tdg dd d|jd< d|jd< d|jd	< d
|jd< tg d|jd< t |jd< dt|jd  d}t	j
t|d}|j|dd W d    n1 s0    Y  t|dksJ d S )Nr%   r&   r   r'   r   r   r   r   r   Tr   r   ra   zAttribute `f` of type z+ cannot be written to HDF5 files - skippingr*   rM   r,   )r.   r/   r   r0   r   r   r   r   typer1   r2   r   r4   r   )r7   r8   r9   ZwtextrC   r"   r"   r#   test_skip_meta  s    




,r   c                 C   s   t | d}t }|tdg dd t |jd< tt }|j	|ddd W d    n1 sd0    Y  d	t |j
v sJ d
t |j
v sJ d S )Nr%   r&   r   r'   ra   rM   Tr-   r   zcannot represent an objectz<class 'str'>)r.   r/   r   r0   r   r   r1   r<   	Exceptionr4   r>   )r7   r8   r9   errr"   r"   r#   test_fail_meta_serialize1  s    
.r   c           	      C   s  t | d}dd l}||d:}t }|tdg dd |j|dd W d    n1 sb0    Y  |j|d	d
}tj|dd}t	
|d g dksJ tj|d dd}t	
|d g dksJ t|d }t	
|d g dksJ |  d S )Nr%   r   rC   r&   r   r'   rM   r,   rv   )moderD   )r.   r/   rH   rI   r   r0   r   r4   r5   r   rO   rJ   )	r7   r8   rH   ri   r9   ra   rQ   ro   Zt4r"   r"   r#   test_read_h5py_objects@  s    ,r   c                 C   s  t | d}t }g d|d< g d|d< g d|d< g d|d	< |j|d
dd tj|d
dd}t| | D ]\}}t||ksvJ qvt|d j	j
jdksJ t|d j	j
jdksJ t|d j	j
jdksJ t|d	 j	j
jdksJ tj|d
d}t| | D ]\}}t||ks$J q$t|d j	j
jdksbJ t|d j	j
jdksJ t|d j	j
jdksJ t|d	 j	j
jdksJ d S )Nr%   )r&   r   r   pr   q)   a   b   crv   )u   ℙu   ƴu   ☂r   rM   Trl   F)r-   Zcharacter_as_bytesUir,   r   )r.   r/   r   r4   r5   zipZitercolsr   rO   infor!   r   )r7   r8   tr9   colZcol1rQ   r"   r"   r#   test_read_write_unicode_to_hdf5[  s*    r   Tc           	   
   C   s   |r| j |j u sJ g d}|| D ]}| }|}|dD ]@}zt||}t||}W q: tyx   || }|| }Y q:0 q:|dkr|d u ri }|d u ri }t|tjr|jjdkrt	||ddsJ q$t
||ks$J q$d S )N)z	info.namezinfo.formatz	info.unitzinfo.description	info.meta.r   ra   gV瞯<)Zrtol)	__class__splitgetattrAttributeError
isinstancer   ndarrayr!   r   quantity_allcloserO   )	Zobj1Zobj2attrscompare_classZ
info_attrsattrr   Za2Zsubattrr"   r"   r#   assert_objects_equalx  s*    
r   r   r   rs   )xyzr   rr   rt      
   )Zdifferentialszdeg,degZfk4zJ1990.5)r   frameZobstimez	deg,deg,mzJ1991.5Z	cartesianz
deg,deg,pc   	   )r   pm_ra_cosdecpm_dec      )r   r   r   radial_velocity)r   r   g   @BAg   BAZjdZtai)rG   scalelocation   g      @g      @      g     f@)
wrap_angle)tmdtscscdscdcscpmscpmrvscrvr   qdbqdexqmaglatlonangel2srcrsdsrd)r>   shaperG   r   r   r)   )r   r>   rG   r   )radecrepresentation_type
frame.name)r   r   distancer   r   )r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r>   r   )r>   r   r   )r   r   r   Z	ellipsoid)r   r   r   )Zd_lon_coslatZd_latZ
d_distance)r   r   r   zdifferentials.s.d_lon_coslatzdifferentials.s.d_latzdifferentials.s.d_distance)c1c2r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zndr   r   r   r   c           
      C   s   t | d}tt}tdd |D |d}|j|dddd tj|ddd	}|j|jks^J |j	
 D ]v\}}|| }t|tr|j|_t| }d}	t|jtrt|tu sJ d
g}d}	t|j|ksJ t||||	 qhdS )zWTest writing as QTable and reading as Table.  Ensure correct classes
    come out.
    test_simple.hdf5c                 S   s   g | ]}t | qS r"   
mixin_cols.0r(   r"   r"   r#   
<listcomp>      z4test_hdf5_mixins_qtable_to_table.<locals>.<listcomp>namesrE   rootTrG   r-   r   rG   r-   r   FN)r.   r/   sortedr   r   r4   r   r5   colnamescolumnsitemsr   r   rG   compare_attrsr   r   r   r   r   rO   r>   r   )
r7   filenamer  r   rQ   r(   r   Zcol2r   r   r"   r"   r#    test_hdf5_mixins_qtable_to_table  s$    
r  	table_clsc                 C   s   t |d}tt}g d}| dd |D |d}d|jd< g d|jd	< g d
|jd< |j|dddd | j|ddd}|jd dksJ |jd	 g dksJ |jd g d
ksJ |j|jksJ t	|d}t
|d jj|ksJ |  dS )zGTest write/read all cols at once and validate intermediate column namesr   )8r   zcr.xzcr.yzcr.zzdt.jd1zdt.jd2zel2.xzel2.yzel2.zr   r   r   r   r   zsc.razsc.deczscd.razscd.deczscd.distancezscd.obstime.jd1zscd.obstime.jd2zscdc.xzscdc.yzscdc.zzscdc.obstime.jd1zscdc.obstime.jd2zscpm.razscpm.deczscpm.distancezscpm.pm_ra_cosdeczscpm.pm_decz	scpmrv.raz
scpmrv.deczscpmrv.distancezscpmrv.pm_ra_cosdeczscpmrv.pm_deczscpmrv.radial_velocityzscrv.razscrv.deczscrv.distancezscrv.radial_velocityzsd.d_lon_coslatzsd.d_latzsd.d_distancezsr.lonzsr.latzsr.distancezsrd.lonzsrd.latzsrd.distancez srd.differentials.s.d_lon_coslatzsrd.differentials.s.d_latzsrd.differentials.s.d_distanceztm.jd1ztm.jd2r   c                 S   s   g | ]}t | qS r"   r   r  r"   r"   r#   r  8  r  z+test_hdf5_mixins_as_one.<locals>.<listcomp>r  ZspamC)thisisr&   ZcommentZcomments)firstsecondZthirdhistoryrE   r  Tr  r	  rv   N)r.   r/   r
  r   r   r4   r5   r  rH   rI   listr!   r  rJ   )r  r7   r  r  Zserialized_namesr   rQ   r   r"   r"   r#   test_hdf5_mixins_as_one  s     
r  name_colc           
      C   s"  t |d}|\}}ddg}| |||gd|dgd}d|| j_ttdd	d
id|| j_|jspt	d t
|| trtd |j|dddd | j|ddd}|j|jksJ |jD ]}	t||	 ||	 t|	  q|dr|| jjjtju sJ || jjjtju sJ dS )z<Test write/read one col at a time and do detailed validationr   g      ?g       @r   r   r  zmy description2   r&   Zbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)r  dictz7column is not a mixin (e.g. Quantity subclass in Table)zNdarrayMixin not supportedrE   r  Tr  r	  r   N)r.   r/   r   r   r  ranger   Zhas_mixin_columnsr1   skipr   r   Zxfailr4   r5   r  r   r  
startswithZ_timeZjd1r   r   r   Zjd2)
r  r  r7   r  r(   r   r   r   rQ   Zcolnamer"   r"   r#   test_hdf5_mixins_per_columnL  s$    


r   c                 C   s   t | d}tdd}g d|d< d|d jd< |j|dddd	 t|}|jd
u s\J |j|jkslJ |jD ]j}t	
|| j|| jksJ t	
|| || ksJ d
|| _d
|| _t	
|| || ksrJ qrdS )aH  Test round-trip of MaskedColumn through HDF5 using default serialization
    that writes a separate mask column.  Note:

    >>> simple_table(masked=True)
    <Table masked=True length=3>
      a      b     c
    int64 float64 str1
    ----- ------- ----
       --     1.0    c
        2     2.0   --
        3      --    e
    ztest.h5T)masked)r      d   er   r   rE   r  r  FN)r.   r/   r   maskr4   r   r5   r!  r  r   rO   )r7   r  r   rQ   r(   r"   r"   r#   $test_round_trip_masked_table_defaultm  s    




r%  c                  C   s  t jddddd} t }|tg ddd |j| d	d
d tj| d	d}t||ks^J |jd d|jd dkszJ t }|tg ddd |j| d	d
d
d
d tj| d	d}t||ksJ |jd d|jd dksJ W d    n1 s0    Y  d S )Nztest_data.h5rC   rg   Frh   )rr   r      cmr   r)   Tr   r,   )out)      *   g)r-   r   r;   rT   )	rH   rI   r   r0   r   r4   r5   rO   r   )r(  r9   rQ   ro   r"   r"   r#   test_overwrite_serialized_meta  s    r-  )T)r1   Znumpyr   Zastropy.tabler   r   r   r   Zastropy.table.table_helpersr   Zastropyr   uZastropy.coordinatesr   r	   r
   r   r   r   r   r   Zastropy.timer   r   Zastropy.unitsr   r   Zastropy.units.quantityr   Zastropy.utils.exceptionsr   Zastropy.utils.datar   Zastropy.utils.miscr   Zastropy.io.misc.hdf5r   Z"astropy.utils.compat.optional_depsr   rH   Zuint8Zuint16Zuint32Zuint64Zint8Zint16Zint32Zint64Zfloat32Zfloat64r   r   r$   ZmarkZskipifr:   rB   rK   rR   rU   rW   rY   r]   rb   rc   rd   rf   rj   rk   rn   rp   rq   ru   ry   r{   r|   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   ZkmZelr   ZdegZkpcr   Zpcr   ZmasZyrr   r   r   r   r   copyr   r   r   r   r   r   ZdaymZdBZmWZdexr'  ZABmagr   Z
time_attrsr  r  r  r  r  r   r%  r-  r"   r"   r"   r#   <module>   st  (	












	






	



	




	

	















































" , $2$$

%
8


!
