U
    sVcl,                     @   sR  d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Zd dl
mZmZmZmZmZmZ d dlmZmZmZ d dlmZ d dlmZ ejjZd	d
 Zdd Z dd Z!dd Z"ejj#e	 dd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#d$ Z,d%d& Z-e.d'd(d) Z/ej0d*d+d,gd-d. Z1d/d0 Z2dS )1    )PathN)	Timestamp)is_platform_windows)	DataFrameHDFStoreIndexSeries_testingread_hdf)_maybe_removeensure_clean_pathensure_clean_store)_test_decorators)TableIteratorc              
   C   sj   t | X}ttdtdd}||d tjtdd t|d W 5 Q R X ||d W 5 Q R X d S )N   abk1 'No object named k2 in the file'matchk2)r   r   rangeto_hdfpytestraisesKeyErrorr
   )
setup_pathpathdf r!   F/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/io/pytables/test_read.py!test_read_missing_key_close_store   s    
r#   c                 C   s~   t | l}ttdtdd}||d t|d4}tjtdd t|d W 5 Q R X t|d W 5 Q R X W 5 Q R X d S )Nr   r   r   rr   r   r   )	r   r   r   r   r   r   r   r   r
   )r   r   r    storer!   r!   r"   "test_read_missing_key_opened_store-   s    
r&   c           	   
   C   s  t  }t| }t|d tjtdd |dd W 5 Q R X |d| tjtt	
dd |dd W 5 Q R X t	
d}tjt|d |jdddgd	 W 5 Q R X |dd}t |jt|jj t|tstt	
d
}tjt|d |dd W 5 Q R X | }d|d< |jd|dgd |dd}t |j|d j | }d|d< tj|j|jdd df< |jd|dgd |dd}t |j|d j |jdddd}t |j|d jdd   |jdddd}t |j|d jdd   |jdddd}t |j|d jd d  |jdddd}t |j|d jd d  |jddddd}t |j|d jdd  |jddddd}t |j|d jdd  ttjddd}|jd|dd |d }|dd}t || W 5 Q R X d S )Nr    zNo object named df in the filer   indexz%'column [foo] not found in the table'Zfooz:select_column() got an unexpected keyword argument 'where'zindex>5)wherezScolumn [values_block_0] can not be extracted individually; it is not data indexableZvalues_block_0stringdf2)Zdata_columns      df3r   )start)stop)r.   r0   
   )ABdf4Tr3   )tmZmakeTimeDataFramer   r   r   r   r   Zselect_columnappendreescape	TypeErrorZassert_almost_equalvaluesr   r'   
isinstanceAssertionError
ValueErrorcopynpnanlocr   randomZrandnassert_series_equal)	r   r    r%   msgresultr*   r-   r4   expectedr!   r!   r"   test_read_column=   sd    
 
rG   c              	   C   s:   t | ddddd}|d }t|ts,tW 5 Q R X d S )Niodatazlegacy_hdf/pytables_native.h5r$   modezdetector/readout)r   r;   r   r<   )datapathr%   Zd2r!   r!   r"   test_pytables_native_read   s    
 rM   z#native2 read fails oddly on windows)reasonc              	   C   sD   t | dddddd$}t| |d }t|ts6tW 5 Q R X d S )NrH   rI   
legacy_hdfzpytables_native2.h5r$   rJ   detector)r   strr;   r   r<   )rL   r%   d1r!   r!   r"   test_pytables_native2_read   s     rS   c              	   C   sf   t | ddddddF}|d}tdd	d
dggddddgtdgddd}t|| W 5 Q R X d S )NrH   rI   rO   zlegacy_table_fixed_py2.h5r$   rJ   r       r      Dr2   r3   CABCZ
INDEX_NAME)namecolumnsr'   )r   selectr   r   r5   assert_frame_equalrL   r%   rE   rF   r!   r!   r"   'test_legacy_table_fixed_format_read_py2   s     

r_   c              	   C   sZ   t | dddddd:}|d}ttdggd	gtd
gd}t|| W 5 Q R X d S )NrH   rI   rO   z"legacy_table_fixed_datetime_py2.h5r$   rJ   r    z2020-02-06T18:00r2   daterZ   )r   r\   r   r   r   r5   r]   r^   r!   r!   r"   0test_legacy_table_fixed_format_read_datetime_py2   s    

ra   c              	   C   sR   t | dddddd}|d}W 5 Q R X tdd	gd
dgd}t|| d S )NrH   rI   rO   zlegacy_table_py2.h5r$   rJ   tabler   r   r   rU   r   )r   r\   r   r5   r]   r^   r!   r!   r"   test_legacy_table_read_py2   s     rc   c              	   C   s   t tjddtdtdd}d|j_|jddd	}t| T}|j	|d
dd t
|d
}t|dd}t
|d
}t|| |jst|  W 5 Q R X d S )Nr+      abcdABCDEr'   r[   lettersETkeysr6   r    wrJ   r$   )r   r?   rB   randlistr'   rY   	set_indexr   r   r
   r   r5   r]   Zis_openr<   close)r   r    r   directr%   indirectr!   r!   r"   test_read_hdf_open_store   s     



rs   c              	   C   s   t tjddtdtdd}d|j_|jddd	}t| `}|j	|d
ddd t
|d
}t
|d
dd}t|tsxtt| }t|| |j  W 5 Q R X d S )Nr+   rd   re   rf   rg   rh   ri   Trj   r    rl   trK   format)iterator)r   r?   rB   rm   rn   r'   rY   ro   r   r   r
   r;   r   r<   next__iter__r5   r]   r%   rp   )r   r    r   rq   rw   rr   r!   r!   r"   test_read_hdf_iterator   s     

rz   c              
   C   s   t tjddtdtdd}t| `}|j|ddd t|}t	|| |j|d	dd d
}t
jt|d t| W 5 Q R X W 5 Q R X d S )Nr+   rd   re   rf   rg   r    r   rJ   r*   ?key must be provided when HDF5 file contains multiple datasets.r   )r   r?   rB   rm   rn   r   r   r
   r5   r]   r   r   r=   r   r    r   ZrereadrD   r!   r!   r"   test_read_nokey   s     
r}   c              
   C   s   t tdttdddd}t| d}|j|dddd	 t|}t|| |j|d
ddd	 d}t	j
t|d t| W 5 Q R X W 5 Q R X d S )Nrd   Zabacdcategory)Zdtype)icr    r   rb   ru   r*   r{   r   )r   r   r   rn   r   r   r
   r5   r]   r   r   r=   r|   r!   r!   r"   test_read_nokey_table   s    
r   c              
   C   sT   t | B}t|}|  td}tjt|d t| W 5 Q R X W 5 Q R X d S )Nz]Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.r   )	r   r   rp   r7   r8   r   r   r=   r
   )r   r   r%   rD   r!   r!   r"   test_read_nokey_empty	  s    
r   c              	   C   sf   t tjddtdtdd}t| (}t|}|j|ddd t|d}W 5 Q R X t	
|| d S )	Nr+   rd   re   rf   rg   r    r   rJ   )r   r?   rB   rm   rn   r   r   r   r
   r5   r]   )r   rF   filenamepath_objactualr!   r!   r"   test_read_from_pathlib_path  s      
r   zpy.pathc              	   C   sr   ddl m} ttjddtdtdd}t| (}||}|j|dd	d
 t	|d}W 5 Q R X t
|| d S )Nr   )localr+   rd   re   rf   rg   r    r   rJ   )Zpy.pathr   r   r?   rB   rm   rn   r   r   r
   r5   r]   )r   Z	LocalPathrF   r   r   r   r!   r!   r"   test_read_from_py_localpath$  s      
r   rv   Zfixedrb   c              	   C   sJ   t  }t|$}|j|d| d t|ddd}W 5 Q R X t || d S )NrI   )keyrv   r$   )r   rK   )r5   ZmakeFloatSeriesr   r   r
   rC   )rv   r   Zseriesr   rE   r!   r!   r"   test_read_hdf_series_mode_r6  s
    
r   c              	   C   s\   t dddgtjdddgddd	}t| d
ddddd}|d }t|| W 5 Q R X d S )Ng      ?r   rU   z
2015-01-01z
2015-01-02z
2015-01-05r3   )freq)r'   rH   rI   rO   z*periodindex_0.20.1_x86_64_darwin_2.7.13.h5r$   rJ   p)r   pdZPeriodIndexr   r5   r]   )rL   rF   r%   rE   r!   r!   r"   test_read_py2_hdf_file_in_py3B  s        r   )3pathlibr   r7   Znumpyr?   r   Zpandas._libs.tslibsr   Zpandas.compatr   Zpandasr   r   r   r   r   r	   r5   r
   Zpandas.tests.io.pytables.commonr   r   r   Zpandas.utilr   tdZpandas.io.pytablesr   markZ
single_cpuZ
pytestmarkr#   r&   rG   rM   ZskipifrS   r_   ra   rc   rs   rz   r}   r   r   r   Z
skip_if_nor   Zparametrizer   r   r!   r!   r!   r"   <module>   s>    O
	

