U
    ¾mœd7-  ã                   @   sb  d dl mZ 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 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.d(d)„ Z/e 0d*¡d+d,„ ƒZ1ej 2d-d.d/g¡d0d1„ ƒZ3d2d3„ Z4dS )4é    )Úclosing)ÚPathN)Ú	Timestamp)Úis_platform_windows)Ú	DataFrameÚHDFStoreÚIndexÚSeriesÚ_testingÚread_hdf)Ú_maybe_removeÚensure_clean_store)Ú_test_decorators)ÚTableIteratorc              	   C   s^   | | }t tdƒtdƒdœƒ}| |d¡ tjtdd�� t|dƒ W 5 Q R X | |d¡ d S )Né   ©ÚaÚbÚk1ú 'No object named k2 in the file'©ÚmatchÚk2)r   ÚrangeÚto_hdfÚpytestÚraisesÚKeyErrorr   )Útmp_pathÚ
setup_pathÚpathÚdf© r"   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/io/pytables/test_read.pyÚ!test_read_missing_key_close_store   s    r$   c              
   C   sr   | | }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 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ƒsât‚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/   r1   é
   )ÚAÚBÚdf4Tr4   )Ú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.   r5   Úexpectedr"   r"   r#   Útest_read_column<   sd    
 ÿ
ÿrH   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    
 ÿrN   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 )NrI   rJ   Ú
legacy_hdfzpytables_native2.h5r%   rK   Údetector)r   Ústrr<   r   r=   )rM   r&   Z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 )NrI   rJ   rP   zlegacy_table_fixed_py2.h5r%   rK   r!   é   r   é   ÚDr3   r4   ÚCÚABCZ
INDEX_NAME)Úname©Úcolumnsr(   )r   Úselectr   r   r6   Úassert_frame_equal©rM   r&   rF   rG   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 )NrI   rJ   rP   z"legacy_table_fixed_datetime_py2.h5r%   rK   r!   z2020-02-06T18:00r3   ÚdaterZ   )r   r\   r   r   r   r6   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 )NrI   rJ   rP   zlegacy_table_py2.h5r%   rK   Útabler   r   r   rU   r   )r   r\   r   r6   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	�}| | }|j|d
dd� t	|d
ƒ}t
|dd��&}t	|d
ƒ}t ||¡ |js†t‚W 5 Q R X d S )Nr,   é   ÚabcdÚABCDE©r(   r[   ÚlettersÚET©Úkeysr7   r!   ÚwrK   r%   )r   r@   rC   ÚrandÚlistr(   rY   Ú	set_indexr   r   r   r6   r]   Zis_openr=   )r   r   r!   r    Údirectr&   Úindirectr"   r"   r#   Útest_read_hdf_open_storeÇ   s     

rr   c                 C   sj   t tj dd¡ddddgtdƒd�}| | }|j|d	d
dd� t|d	ƒ}|jjj	d ksZt
‚t ||¡ d S )Nr,   rd   r   rT   r   rU   rf   rg   r!   rl   rb   ©rL   Úformat)r   r@   rC   rm   rn   r   r   r(   Ú_dataÚbaser=   r6   r]   )r   r   r!   r    r+   r"   r"   r#   Útest_read_hdf_index_not_view×   s    $
rw   c              	   C   s¨   t tj dd¡tdƒtdƒd�}d|j_|jddd	�}| | }|j|d
ddd� t	|d
ƒ}t	|d
dd�}t
|jƒ�, t|tƒs‚t‚t| ¡ ƒ}t ||¡ W 5 Q R X d S )Nr,   rd   re   rf   rg   rh   ri   Trj   r!   rl   Útrs   )Úiterator)r   r@   rC   rm   rn   r(   rY   ro   r   r   r   r&   r<   r   r=   ÚnextÚ__iter__r6   r]   )r   r   r!   r    rp   ry   rq   r"   r"   r#   Útest_read_hdf_iteratorå   s     
r|   c              	   C   s†   t tj dd¡tdƒtdƒd�}| | }|j|ddd� t|ƒ}t ||¡ |j|d	dd� d
}t	j
t|d�� t|ƒ W 5 Q R X d S )Nr,   rd   re   rf   rg   r!   r   rK   r+   ú?key must be provided when HDF5 file contains multiple datasets.r   )r   r@   rC   rm   rn   r   r   r6   r]   r   r   r>   ©r   r   r!   r    ZrereadrE   r"   r"   r#   Útest_read_nokeyô   s     r   c              	   C   sˆ   t tdƒttdƒdd�dœƒ}| | }|j|dddd	� t|ƒ}t ||¡ |j|d
ddd	� d}tj	t
|d�� t|ƒ W 5 Q R X d S )Nrd   ZabacdÚcategory)Zdtype)ÚiÚcr!   r   rb   rs   r+   r}   r   )r   r   r	   rn   r   r   r6   r]   r   r   r>   r~   r"   r"   r#   Útest_read_nokey_table  s    rƒ   c              	   C   sH   | | }t |ƒ}| ¡  t d¡}tjt|d�� t|ƒ 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   Úcloser8   r9   r   r   r>   r   )r   r   r    r&   rE   r"   r"   r#   Útest_read_nokey_empty  s    ÿr…   c                 C   sZ   t tj dd¡tdƒtdƒd�}| | }t|ƒ}|j|ddd� t|dƒ}t 	||¡ d S )	Nr,   rd   re   rf   rg   r!   r   rK   )
r   r@   rC   rm   rn   r   r   r   r6   r]   )r   r   rG   ÚfilenameÚpath_objÚactualr"   r"   r#   Útest_read_from_pathlib_path   s      ÿ
r‰   zpy.pathc                 C   sf   ddl m} ttj dd¡tdƒtdƒd�}| | }||ƒ}|j|dd	d
� t|dƒ}t	 
||¡ d S )Nr   )Úlocalr,   rd   re   rf   rg   r!   r   rK   )Zpy.pathrŠ   r   r@   rC   rm   rn   r   r   r6   r]   )r   r   Z	LocalPathrG   r†   r‡   rˆ   r"   r"   r#   Útest_read_from_py_localpath.  s      ÿ
r‹   rt   Zfixedrb   c                 C   s>   t  ¡ }| | }|j|d|d� t|ddd�}t  ||¡ d S )NrJ   )Úkeyrt   r%   )rŒ   rL   )r6   ZmakeFloatSeriesr   r   rD   )r   rt   r   Zseriesr    rF   r"   r"   r#   Útest_read_hdf_series_mode_r?  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-05r4   )Úfreq)r(   rI   rJ   rP   z*periodindex_0.20.1_x86_64_darwin_2.7.13.h5r%   rK   Úp)r   ÚpdZPeriodIndexr   r6   r]   )rM   rG   r&   rF   r"   r"   r#   Útest_read_py2_hdf_file_in_py3K  s     þ   ÿür‘   )5Ú
contextlibr   Úpathlibr   r8   Únumpyr@   r   Zpandas._libs.tslibsr   Zpandas.compatr   Zpandasr�   r   r   r   r	   r
   r6   r   Zpandas.tests.io.pytables.commonr   r   Zpandas.utilr   ÚtdZpandas.io.pytablesr   ÚmarkZ
single_cpuZ
pytestmarkr$   r'   rH   rN   ZskipifrS   r_   ra   rc   rr   rw   r|   r   rƒ   r…   r‰   Z
skip_if_nor‹   Zparametrizer�   r‘   r"   r"   r"   r#   Ú<module>   sB    N
	

