o
    �¨Êhº3  ã                   @   sŽ  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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$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)„ Z0d*d+„ Z1e 2d,¡d-d.„ ƒZ3ej 4d/d0d1g¡d2d3„ ƒZ5ej 6d4¡ej 6d5¡d6d7„ ƒƒZ7d8d9„ Z8dS ):é    )Úclosing)ÚPathN)Ú	Timestamp)Úis_platform_windows)Ú	DataFrameÚHDFStoreÚIndexÚSeriesÚ_testingÚ
date_rangeÚread_hdf)Ú_maybe_removeÚensure_clean_store)Ú_test_decorators)ÚTableIteratorc                 C   sv   | | }t tdƒtdƒdœƒ}|j|dd� tjtdd�� t|dƒ W d   ƒ n1 s-w   Y  |j|dd� d S )Né   ©ÚaÚbÚk1©Úkeyú 'No object named k2 in the file'©ÚmatchÚk2)r   ÚrangeÚto_hdfÚpytestÚraisesÚKeyErrorr   ©Útmp_pathÚ
setup_pathÚpathÚdf© r&   úT/var/www/html/env/lib/python3.10/site-packages/pandas/tests/io/pytables/test_read.pyÚ!test_read_missing_key_close_store    s   ÿr(   c                 C   sv   | | }t g g dœg d�}|j|dd� tjtdd�� t|ddd� W d   ƒ n1 s-w   Y  |j|dd� d S )	N©ÚAÚB©Úindexr   r   zlist index out of ranger   r   ©Ústop)r   r   r   r   Ú
IndexErrorr   r!   r&   r&   r'   Ú!test_read_index_error_close_store.   s   ÿr1   c              	   C   sž   | | }t tdƒtdƒdœƒ}|j|dd� t|dƒ�*}tjtdd�� t|dƒ W d   ƒ n1 s3w   Y  t|dƒ W d   ƒ d S 1 sHw   Y  d S )	Nr   r   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   ÿ"úr4   c           	   	   C   s¨  t tj d¡ d¡ttdƒtd�tdddd�d	�}t	| ƒ��«}t
|d
ƒ tjtdd�� | d
d¡ W d   ƒ n1 s<w   Y  | d
|¡ tjtt d¡d�� | d
d¡ W d   ƒ n1 sbw   Y  t d¡}tjt|d�� |jd
ddgd� W d   ƒ n1 s‡w   Y  | d
d¡}t |jt|jƒj¡ t|tƒs¤J ‚t d¡}tjt|d�� | d
d¡ W d   ƒ n1 sÁw   Y  | ¡ }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dœƒ}|jd |d!d� |d }| d d¡}t ||¡ W d   ƒ d S 1 �sÍw   Y  d S )"Nr   )é
   é   ÚABCD©Údtypez
2000-01-01r5   r+   )ÚperiodsÚfreq©Úcolumnsr-   r%   zNo object named df in the filer   r-   z%'column [foo] not found in the table'Ú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 indexableÚvalues_block_0ÚstringÚdf2)Údata_columnsr6   é   Údf3)Ústartéþÿÿÿr.   )rF   r/   r)   Údf4T)r   ÚnpÚrandomÚdefault_rngÚstandard_normalr   ÚlistÚobjectr   r   r   r   r   r    Úselect_columnÚappendÚreÚescapeÚ	TypeErrorÚtmÚassert_almost_equalÚvaluesr	   r-   Ú
isinstanceÚ
ValueErrorÚcopyÚnanÚlocÚassert_series_equal)	r#   r%   r3   ÚmsgÚresultrB   rE   rH   Úexpectedr&   r&   r'   Útest_read_columnK   st   ý
ÿ
ÿý
ÿÿÿ$¸r`   c                 C   sN   t | dddƒdd��}|d }W d   ƒ n1 sw   Y  t|tƒs%J ‚d S )NÚioÚdatazlegacy_hdf/pytables_native.h5r2   ©Úmodezdetector/readout)r   rW   r   )Údatapathr3   Úd2r&   r&   r'   Útest_pytables_native_read�   s   ÿ
ýrg   z#native2 read fails oddly on windows)Úreasonc                 C   sX   t | ddddƒdd��}t|ƒ |d }W d   ƒ n1 sw   Y  t|tƒs*J ‚d S )Nra   rb   Ú
legacy_hdfzpytables_native2.h5r2   rc   Údetector)r   ÚstrrW   r   )re   r3   Úd1r&   r&   r'   Útest_pytables_native2_read¥   s   ÿ
ürm   c                 C   sr   t | ddddƒdd��}| d¡}W d   ƒ n1 sw   Y  tg d¢gg d	¢td
gdd�d�}t ||¡ d S )Nra   rb   ri   zlegacy_table_fixed_py2.h5r2   rc   r%   )é   r   é   ÚD)r*   r+   ÚCrp   ÚABCÚ
INDEX_NAME)Únamer<   )r   Úselectr   r   rT   Úassert_frame_equal©re   r3   r^   r_   r&   r&   r'   Ú'test_legacy_table_fixed_format_read_py2¯   s   ÿýýrx   c                 C   sp   t tdƒggdgtdgƒdd�}t| dddd	ƒd
d��}| d¡}W d   ƒ n1 s+w   Y  t ||¡ d S )Nz2020-02-06T18:00r*   ÚdatezM8[ns])r=   r-   r9   ra   rb   ri   z"legacy_table_fixed_datetime_py2.h5r2   rc   r%   )r   r   r   r   ru   rT   rv   ©re   r_   r3   r^   r&   r&   r'   Ú0test_legacy_table_fixed_format_read_datetime_py2¾   s   
üþür{   c                 C   sf   t | ddddƒdd��}| d¡}W d   ƒ n1 sw   Y  tdd	gd
dgdœƒ}t ||¡ d S )Nra   rb   ri   zlegacy_table_py2.h5r2   rc   Útabler   r   r   ro   r   )r   ru   r   rT   rv   rw   r&   r&   r'   Útest_legacy_table_read_py2Ï   s   ÿýr}   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sEJ ‚W d   ƒ d S 1 sPw   Y  d S )Nr   ©r6   é   ÚabcdÚABCDE©r-   r=   ÚlettersÚET©ÚkeysrP   r%   Úw©r   rd   r2   rc   )r   rI   rJ   rK   rM   r-   rt   Ú	set_indexr   r   r   rT   rv   Úis_open)r"   r#   r%   r$   Údirectr3   Úindirectr&   r&   r'   Útest_read_hdf_open_storeÛ   s   ý

"ýr�   c                 C   sj   t tj d¡ d¡g d¢tdƒd�}| | }|j|dddd	� t|dƒ}|jjj	d u s-J ‚t
 ||¡ d S )
Nr   r~   )r   rn   r   ro   r�   r‚   r%   r‡   r|   ©r   rd   Úformat)r   rI   rJ   rK   rM   r   r   r-   Ú_dataÚbaserT   rv   )r"   r#   r%   r$   rB   r&   r&   r'   Útest_read_hdf_index_not_viewï   s   ý
r’   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ƒsCJ ‚t| ¡ ƒ}W d   ƒ n1 sSw   Y  t ||¡ d S )Nr   r~   r€   r�   r‚   rƒ   r„   Tr…   r%   r‡   ÚtrŽ   )Úiterator)r   rI   rJ   rK   rM   r-   rt   r‰   r   r   r   r3   rW   r   ÚnextÚ__iter__rT   rv   )r"   r#   r%   r$   r‹   r”   rŒ   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 d   ƒ d S 1 sIw   Y  d S )Nr   r~   r€   r�   r‚   r%   r   rˆ   rB   ú?key must be provided when HDF5 file contains multiple datasets.r   )r   rI   rJ   rK   rM   r   r   rT   rv   r   r   rX   ©r"   r#   r%   r$   Úrereadr]   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 d   ƒ d S 1 sHw   Y  d S )Nr   ÚabacdÚcategoryr8   )ÚiÚcr%   r   r|   rŽ   rB   r˜   r   )r   r   r	   rM   r   r   rT   rv   r   r   rX   r™   r&   r&   r'   Útest_read_nokey_table)  s   
"ÿr    c                 C   s^   | | }t |ƒ}| ¡  t d¡}tjt|d�� t|ƒ W d   ƒ d S 1 s(w   Y  d S )Nz]Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.r   )r   ÚcloserQ   rR   r   r   rX   r   )r"   r#   r$   r3   r]   r&   r&   r'   Útest_read_nokey_empty8  s   ÿ
"ÿr¢   c                 C   s`   t tj d¡ d¡tdƒtdƒd�}| | }t|ƒ}|j|ddd� t|dd	�}t 	||¡ d S )
Nr   r~   r€   r�   r‚   r%   r   rˆ   r   )
r   rI   rJ   rK   rM   r   r   r   rT   rv   )r"   r#   r_   ÚfilenameÚpath_objÚactualr&   r&   r'   Útest_read_from_pathlib_pathD  s   ýr¦   zpy.pathc                 C   sl   ddl m} ttj d¡ d¡tdƒtdƒd�}| | }||ƒ}|j|dd	d
� t|dd�}t	 
||¡ d S )Nr   )Úlocalr   r~   r€   r�   r‚   r%   r   rˆ   r   )Úpy.pathr§   r   rI   rJ   rK   rM   r   r   rT   rv   )r"   r#   Ú	LocalPathr_   r£   r¤   r¥   r&   r&   r'   Útest_read_from_py_localpathT  s   ýrª   r�   Úfixedr|   c                 C   sH   t tdƒtjd�}| | }|j|d|d� t|ddd�}t ||¡ d S )Nr5   r8   rb   ©r   r�   r2   rˆ   )r	   r   rI   Úfloat64r   r   rT   r\   )r"   r�   r#   Úseriesr$   r^   r&   r&   r'   Útest_read_hdf_series_mode_rg  s
   r¯   z8ignore:Period with BDay freq is deprecated:FutureWarningz3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   sl   t g d¢tjg d¢dd�d�}t| dddd	ƒd
d��}|d }W d   ƒ n1 s)w   Y  t ||¡ d S )N)g      ð?r   ro   )z
2015-01-01z
2015-01-02z
2015-01-05r+   )r;   r,   ra   rb   ri   z*periodindex_0.20.1_x86_64_darwin_2.7.13.h5r2   rc   Úp)r   ÚpdÚPeriodIndexr   rT   rv   rz   r&   r&   r'   Útest_read_py2_hdf_file_in_py3s  s   þÿü
úr³   c                 C   sœ   t  d¡ tdg d¢iƒ}| | }|j|ddd� t dd¡� t|dd	d
�}W d   ƒ n1 s1w   Y  tdg d¢idtdgdd�d�}t 	||¡ d S )NÚpyarrowr   )r   r   Nrb   r|   r¬   zfuture.infer_stringTr2   rˆ   zstring[pyarrow_numpy]r8   )r9   r=   )
r   Úimportorskipr   r   r±   Úoption_contextr   r   rT   rv   )r"   r#   r%   r$   r^   r_   r&   r&   r'   Útest_read_infer_string�  s   
ÿ
ýr·   )9Ú
contextlibr   Úpathlibr   rQ   ÚnumpyrI   r   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandasr±   r   r   r   r	   r
   rT   r   r   Úpandas.tests.io.pytables.commonr   r   Úpandas.utilr   ÚtdÚpandas.io.pytablesr   ÚmarkÚ
single_cpuÚ
pytestmarkr(   r1   r4   r`   rg   Úskipifrm   rx   r{   r}   r�   r’   r—   r›   r    r¢   r¦   Ú
skip_if_norª   Úparametrizer¯   Úfilterwarningsr³   r·   r&   r&   r&   r'   Ú<module>   sL    $	R
	



