o
    �¨ÊhAI  ã                   @   sÜ  d dl 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mZ d dlmZ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!dd„ Z"dd„ Z#dd„ Z$dd„ Z%ej &d¡dd„ ƒZ'dd„ Z(dd„ Z)ej &d¡d d!„ ƒZ*d"d#„ Z+ej ,d$d%ej-d&ej.d'�g¡d(d)„ ƒZ/d*d+„ Z0ej ,d,ej1ej2e3d-d.g¡d/d0„ ƒZ4d1d2„ Z5d3d4„ Z6ej ,d$d%ej-d&ej.d'�g¡d5d6„ ƒZ7dEd7d8„Z8dEd9d:„Z9d;d<„ Z:d=d>„ Z;d?d@„ Z<dAdB„ Z=dCdD„ Z>dS )Fé    N)Ú	Timestamp)Úis_platform_windows)Ú	DataFrameÚDatetimeIndexÚIndexÚSeriesÚ_testingÚbdate_rangeÚ
date_rangeÚread_hdf)Ú_maybe_removeÚensure_clean_store)Ú_test_decoratorsc                     s<  t  ¡ ��‰ ‡ fdd„} ttjdtjd�tddd�d�}t  || d|ƒ¡ ttdƒd	d
d„ tdƒD ƒd�}t  || d|ƒ¡ t	dt d¡ 
d¡ ttdƒtd�tdd„ tdƒD ƒtd�d�}t  || d|ƒ¡ t	tdƒtdƒdœƒ}|jˆ ddd� tˆ ddgd�}t  ||jdk |¡ W d   ƒ d S 1 s—w   Y  d S )Nc                    s    |j ˆ fd| i|¤Ž tˆ | ƒS )NÚkey)Úto_hdfr   )r   ÚobjÚkwargs©Úpath© úZ/var/www/html/env/lib/python3.10/site-packages/pandas/tests/io/pytables/test_round_trip.pyÚ	roundtrip!   s   
z'test_conv_read_write.<locals>.roundtripé
   ©Údtypeú
2020-01-01©Úperiods©ÚindexÚseriesÚfloat64c                 S   ó   g | ]}d |› �‘qS ©Úi_r   ©Ú.0Úir   r   r   Ú
<listcomp>*   ó    z(test_conv_read_write.<locals>.<listcomp>©r   r   Ústring_seriesçš™™™™™ñ?éx   ©é   é   ÚABCDc                 S   r"   ©zi-r   r%   r   r   r   r(   0   r)   r/   ©Úcolumnsr   Úframeé   ©ÚAÚBÚtableT©r   Úappendzindex>2)Úwhereé   )ÚtmÚensure_cleanr   ÚnpÚaranger!   r
   Úassert_series_equalÚranger   Úreshaper   ÚlistÚobjectÚassert_frame_equalr   r   r   )r   ÚoÚdfÚresultr   r   r   Útest_conv_read_write   s&   
ÿ ý"çrL   c                 C   sp   dgd }t d|i|d�}t| ƒ�}|jd|dgd� | d¡}t ||¡ W d   ƒ d S 1 s1w   Y  d S )NÚ2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   Úar   rJ   )Údata_columns)r   r   r<   Úselectr?   rH   )Ú
setup_pathÚdatarJ   ÚstorerK   r   r   r   Útest_long_strings;   s   


"ürT   c                 C   s¬   | | }t tdƒƒ}|jd d… j|dddd� |jdd … j|dddd� t t|dƒ|¡ |jd d… j|dddd� |jdd … j|dddd� t t|dƒ|¡ d S )Né   r   rJ   Tr:   ©r   r<   ÚformatF©r   rD   Úilocr   r?   rH   r   ©Útmp_pathrQ   r   rJ   r   r   r   Útest_apiG   s   r\   c                 C   s¨   | | }t tdƒƒ}|jd d… j|ddd� |jdd … j|dddd� t t|dƒ|¡ |jd d… j|dddd� |jdd … j|ddd� t t|dƒ|¡ d S )	NrU   r   rJ   Tr;   r:   rV   FrX   rZ   r   r   r   Útest_api_appendW   s   r]   c                 C   s*  | | }t tdƒƒ}|j|dddd� t t|dƒ|¡ |j|dddd� t t|dƒ|¡ |j|ddd� t t|dƒ|¡ |j|dd� t t|dƒ|¡ t|ƒ�·}t tdƒƒ}t|dƒ |jd|j	d d	… d
dd� |jd|j	d	d … d
dd� t | 
d¡|¡ t|dƒ |jd|j	d d	… ddd� |jd|j	d	d … d
dd� t | 
d¡|¡ t|dƒ |jd|j	d d	… ddd� |jd|j	d	d … d
dd� t | 
d¡|¡ t|dƒ |jd|j	d d	… ddd� |jd|j	d	d … d
d d� t | 
d¡|¡ W d   ƒ d S 1 �sw   Y  d S )NrU   rJ   FÚfixedrV   Úfr;   )r   r   Tr:   )r<   rW   )r   rD   r   r?   rH   r   r   r   r<   rY   rP   )r[   rQ   r   rJ   rS   r   r   r   Ú
test_api_2e   s:   




$ér`   c                 C   sž  | | }t dt d¡ d¡ ttdƒtd�tdd„ tdƒD ƒtd�d	�}d
}tj	t
|d�� |j|dddd� W d   ƒ n1 sAw   Y  tj	t
|d�� |j|dddd� W d   ƒ n1 saw   Y  d}tj	t|d�� |j|dddd� W d   ƒ n1 sƒw   Y  tj	t|d�� |j|dddd� W d   ƒ n1 s£w   Y  d}d|› d�}tj	t|d�� t|dƒ W d   ƒ d S 1 sÈw   Y  d S )Nr,   r-   r.   r1   r   c                 S   r"   r2   r   r%   r   r   r   r(   •   r)   z$test_api_invalid.<locals>.<listcomp>r/   r3   zCan only append to Tables©ÚmatchrJ   Tr_   rV   r^   z)invalid HDFStore format specified \[foo\]ÚfooFÚ zFile z does not exist)r   rA   rB   rE   r   rF   rG   rD   ÚpytestÚraisesÚ
ValueErrorr   Ú	TypeErrorÚFileNotFoundErrorr   )r[   rQ   r   rJ   Úmsgr   r   r   Útest_api_invalid�   s2   ýÿÿÿÿ"ÿrk   c              	   C   sÖ   t | ƒ�]}ttjdtjd�tddd�d�|d< | d¡}|d }t ||¡ | d¡}|d }t ||¡ t	j
tdd	�� | d
¡ W d   ƒ n1 sLw   Y  W d   ƒ d S W d   ƒ d S 1 sdw   Y  d S )Nr   r   r   r   r   rN   z/az'No object named b in the file'ra   Úb)r   r   rA   rB   r!   r
   Úgetr?   rC   re   rf   ÚKeyError)rQ   rS   ÚleftÚrightr   r   r   Útest_get°   s    

ÿ

ÿô"ôrq   c                 C   s(   t tj d¡ d¡ƒ}t|tj| ƒ d S )Nr>   )é2   éd   )r   rA   ÚrandomÚdefault_rngÚstandard_normalÚ_check_roundtripr?   rH   )rQ   rJ   r   r   r   Útest_put_integerÁ   s   rx   c                 C   sø  t | ƒ�î}tdg d¢idd�}| d|¡ t |j|d j¡ tdg d¢idd�}| d|¡ t |j|d j¡ t d¡}tj	t
|d	�� | d|¡ W d   ƒ n1 sVw   Y  ttjd
gdgdggdd�dgd�}| d|¡ t |j|d j¡ |jjd dks‡J ‚tdd„ dD ƒƒ}d|d< d|d< |d  d¡|d< |d dk|d< tdƒ|d< tdƒ|d< | d|¡ | d¡j ¡ }d d!„ |jD ƒ|_tdd
d
d
d
d
d
d
dd"œ	d#d$�}| ¡ }| ¡ }t ||¡ W d   ƒ d S 1 sõw   Y  d S )%NrN   ©é   r>   é   Úf8r   Údf_f8Úi8Údf_i8zñinvalid combination of [values_axes] on appending data [name->values_block_0,cname->values_block_0,dtype->float64,kind->float,shape->(1, 3)] vs current table [name->values_block_0,cname->values_block_0,dtype->int64,kind->integer,shape->None]ra   rz   r>   r{   Úf4r8   ©r4   Údf_f4r   Úfloat32c                 S   s(   i | ]}|t tj d ¡ d¡|d�“qS )r>   r6   r   )r   rA   rt   ru   Úintegers)r&   Úcr   r   r   Ú
<dictcomp>æ   s    ÿÿz6test_table_values_dtypes_roundtrip.<locals>.<dictcomp>)rƒ   r!   Úint32Úint64Úint16Úint8rc   Ústringç      ð?Úfloat322ÚboolÚ20130101Útime1Ú20130102Útime2Údf_mixed_dtypes1c                 S   s   g | ]}t |ƒ‘qS r   )Ústrr%   r   r   r   r(   ô   ó    z6test_table_values_dtypes_roundtrip.<locals>.<listcomp>)	rƒ   r!   r‡   rŽ   r‰   rŠ   rˆ   rG   zdatetime64[ns]Úcount)Úname)r   r   r<   r?   rC   ÚdtypesÚreÚescapere   rf   rg   rA   ÚarrayrY   Úastyper   rP   Úvalue_countsr   r   Ú
sort_index)rQ   rS   Údf1Údf2rj   rK   Úexpectedr   r   r   Ú"test_table_values_dtypes_roundtripÇ   s`   
ÿÿ$þÿ÷ô"Ãr¢   z(ignore::pandas.errors.PerformanceWarningc                 C   s¼   t tdƒddd„ tdƒD ƒd�}t|tj| d� t tjdtjd�tddd	�d
�}t|tj| d� t |j	t
|j	td�ƒ}t|tj| d� t |jt
tj|j	td�td�ƒ}t|tj| dd� d S )Nr   r!   c                 S   r"   r#   r   r%   r   r   r   r(   
  r)   ztest_series.<locals>.<listcomp>r*   r   r   r   r   r   F)r   Úcheck_index_type)r   rD   rw   r?   rC   rA   rB   r!   r
   r   r   rG   ÚvaluesÚasarray)rQ   ÚsÚtsÚts2Úts3r   r   r   Útest_series  s    ÿ 

ÿrª   c                 C   s@   t j d¡ d¡}tt j d¡ d¡|d�}t|tj| d� d S )Nr>   r   r   r   )rA   rt   ru   rv   r   rw   r?   rC   )rQ   r   r¦   r   r   r   Útest_float_index  s   r«   c                 C   s|   t  d¡}g d¢}t j d¡ d¡ d¡}t|||d�}t t	j
j¡� t|tj| d� W d   ƒ d S 1 s7w   Y  d S )Nr   ))g        rŒ   )ç       @ç      @)g      @g      @r>   r/   )r{   r   )r   r4   r   )rA   rB   rt   ru   rv   rE   r   r?   Úassert_produces_warningÚpdÚerrorsÚPerformanceWarningrw   rH   )rQ   ÚcolÚidxrR   ÚDFr   r   r   Útest_tuple_index"  s   
"ÿrµ   c                 C   s°  t j d¡ d¡}dd„ }t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|ddgƒ}t||| d� t|tj ¡ dgƒ}t||| d� t|dd	gƒ}t||| d� t|d
dgƒ}t||| d� t|d
dgƒ}t||| d� t	ddgdd�}t||d�}t||| d� |j
 d¡|_
t||| d� d S )Nr>   c                 S   s   t j| |dd�S )NT)r£   )r?   rC   )ÚlhsÚrhsr   r   r   Ú<lambda>1  s    z"test_index_types.<locals>.<lambda>r   Úyr   rN   g®Gáz®ó?rl   rz   g{®Gázø?r6   z
2012-01-01z
2012-01-02úM8[ns]r   r   r¦   )rA   rt   ru   rv   r   rw   ÚdatetimeÚtodayÚdater   r   Úas_unit)rQ   r¤   ÚfuncÚserÚdtir   r   r   Útest_index_types-  s:   rÂ   c                 C   sh   t ddƒ}ttj d¡ t|ƒ¡|d�}zt|tj	| d� W d S  t
y3   tƒ r2| tj d¡¡ ‚ w )Nz1/1/1940z1/1/1960r>   r   r   z'known failure on some windows platforms)r	   r   rA   rt   ru   rv   Úlenrw   r?   rC   ÚOverflowErrorr   Úapplymarkerre   ÚmarkÚxfail)rQ   ÚrequestÚdrr§   r   r   r   Útest_timeseries_preepoch\  s   

ÿûrÊ   ÚcompressionFT)Úmarksc                 C   s<  t dt d¡ d¡ ttdƒtd�tdd„ tdƒD ƒtd�d	�}tj|j	d
< tj|j	d< t
|tj|| d� t|tj|| d� t tj d¡ d¡ttdƒtd�tdddd�d	�}t|tj|| d� t|ƒ�$}tj d¡ t|ƒ¡|d< ||d< |d }|j ¡ s�J ‚W d   ƒ n1 s‹w   Y  t|d d… tj|d� d S )Nr,   r-   r.   r1   r   c                 S   r"   r2   r   r%   r   r   r   r(   p  r)   ztest_frame.<locals>.<listcomp>r/   r3   )r   r   )r6   r{   ©r   rË   r>   )r   r0   z
2000-01-01r   r9   )r   Úfreqrc   rJ   r   r   )r   rA   rB   rE   r   rF   rG   rD   ÚnanrY   Ú_check_roundtrip_tabler?   rH   rw   rt   ru   rv   r
   r   rÃ   Ú_mgrÚis_consolidated)rË   rQ   rJ   ÚtdfrS   Úreconsr   r   r   Ú
test_framei  s8   ý
ÿ
ÿý
ÿ
ûrÕ   c                 C   sŒ   t td�}t dtd�}tƒ }tg d¢d�}tg d¢d�}t|tj| d� t|tj| d� t|tj| d� t|tj| d� t|tj| d� d S )	Nr   Úmyseries)r—   r   ©rN   rl   r…   r   )ÚdÚer_   r�   r   )r   rG   r   rw   r?   rC   rH   )rQ   Ús0Ús1Údf0rŸ   r    r   r   r   Útest_empty_series_frame’  s   
rÝ   r   zm8[ns]rº   c                 C   s   t | d�}t|tj|d� d S )Nr   r   )r   rw   r?   rC   )r   rQ   r¦   r   r   r   Útest_empty_series   s   
rÞ   c                 C   sJ   dd„ t ddƒD ƒ}ttj d¡ t|ƒdf¡|d�}t|tj	| d� d S )	Nc                 S   s   g | ]}|  ¡ ‘qS r   )r½   )r&   Úxr   r   r   r(   §  r•   z,test_can_serialize_dates.<locals>.<listcomp>z1/1/2000z	1/30/2000r>   r0   r   r   )
r	   r   rA   rt   ru   rv   rÃ   rw   r?   rH   )rQ   Úrngr5   r   r   r   Útest_can_serialize_dates¦  s
   ÿrá   c                 C   s„   |}t |tj| d� t |jtj| d� t |d tj| d� t| ƒ�}||d< |d }t ||¡ W d   ƒ d S 1 s;w   Y  d S )Nr   r8   r5   )rw   r?   rH   ÚTrC   r   )rQ   Ú multiindex_dataframe_random_datar5   rS   rÔ   r   r   r   Útest_store_hierarchical¯  s   
"ýrä   c                 C   sÒ   dd„ }|ƒ }|ƒ }t |tj|d� t |tj|d� t|ƒ� }||d< t |d |¡ ||d< t |d |¡ W d   ƒ n1 sAw   Y  t |d tj|| d� t |d tj|| d� t |d tj|| d� d S )	Nc                  S   sˆ   t dt d¡ d¡ ttdƒtd�tdd„ tdƒD ƒtd�d	�} d
| d< d| d< | d dk| d< | d dk| d< d| d< d| d< |  ¡ S )Nr,   r-   r.   r1   r   c                 S   r"   r2   r   r%   r   r   r   r(   Å  r)   z7test_store_mixed.<locals>._make_one.<locals>.<listcomp>r/   r3   rc   Úobj1ÚbarÚobj2r8   r   Úbool1r9   Úbool2rz   Úint1r>   Úint2)	r   rA   rB   rE   r   rF   rG   rD   Ú_consolidate)rJ   r   r   r   Ú	_make_oneÁ  s   ýz#test_store_mixed.<locals>._make_oner   r   rå   rÍ   rè   rê   )rw   r?   rH   r   rC   )rË   rQ   rí   rŸ   r    rS   r   r   r   Útest_store_mixed½  s:   
üüü
ürî   c                 K   sj   i }|rd|d< t |dfi |¤Ž�}| |d< |d }||| fi |¤Ž W d   ƒ d S 1 s.w   Y  d S )NÚbloscÚcomplibÚwr   )r   )r   Ú
comparatorr   rË   r   ÚoptionsrS   Ú	retrievedr   r   r   rw   ð  s   "ýrw   c                 C   sj   i }|rd|d< t |dfi |¤Ž�}|jd| dd� |d }||| ƒ W d   ƒ d S 1 s.w   Y  d S )Nrï   rð   rñ   r   r:   )rW   )r   Úput)r   rò   r   rË   ró   rS   rô   r   r   r   rÐ   û  s   "ürÐ   c                 C   s8   ddg}t tj d¡ t|ƒ¡|ƒ}t|tj| d� d S )Nu   Ïƒu   ÏƒÏƒr>   r   )	r   rA   rt   ru   rv   rÃ   rw   r?   rC   )rQ   Úunicode_valuesr¦   r   r   r   Útest_unicode_index  s   þr÷   c                 C   sÎ   d}t d|giƒ}t| ƒ�}|jd|ddd� | d¡}t ||¡ W d   ƒ n1 s,w   Y  t d|gddgd	œƒ}t| ƒ�}|jd|ddd� | d¡}t ||¡ W d   ƒ d S 1 s`w   Y  d S )
Nu   Î”r8   rJ   r:   zutf-8)rW   ÚencodingrN   rl   r7   )r   r   rõ   rm   r?   rH   )rQ   ÚcharrJ   rS   rK   r   r   r   Útest_unicode_longer_encoded  s   

ý

"ýrú   c                 C   sb   t g d¢g d¢g d¢dœƒ}ttjdtjd�tddd�d�}|jd d	… |d
< t|tj	| d� d S )Nry   )rŒ   r¬   r­   r×   r   r   r   r   r   r{   rØ   r   )
r   r   rA   rB   r!   r
   r   rw   r?   rH   )rQ   rJ   r§   r   r   r   Útest_store_datetime_mixed!  s   ÿrû   c                 C   sd   t ddgddgdœƒ}| | }|j|ddd� t|dƒ}t ||¡ | |¡s)J ‚| |¡s0J ‚d S )	Nrz   r>   rß   r¹   )r9   r8   rJ   r:   ©r   rW   )r   r   r   r?   rH   Úequals)r[   rQ   rJ   r   Úotherr   r   r   Útest_round_trip_equals*  s   
rÿ   c                 C   s–   t  d¡ | | }t dd¡�2 tdtdƒttdƒƒd� dd	g¡}| ¡ }|j	|d
dd� t
|d
ƒ}t ||¡ W d   ƒ d S 1 sDw   Y  d S )NÚpyarrowzfuture.infer_stringTrz   r1   r   r3   r8   r9   rJ   r:   rü   )re   Úimportorskipr¯   Úoption_contextr   rF   rD   Ú	set_indexÚcopyr   r   r?   rH   )r[   rQ   r   rJ   r¡   rK   r   r   r   Útest_infer_string_columns6  s   
ÿ
"ør  )F)?r»   r™   ÚnumpyrA   re   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandasr¯   r   r   r   r   r   r?   r	   r
   r   Úpandas.tests.io.pytables.commonr   r   Úpandas.utilr   ÚtdrÆ   Ú
single_cpuÚ
pytestmarkrL   rT   r\   r]   r`   rk   rq   rx   r¢   Úfilterwarningsrª   r«   rµ   rÂ   rÊ   ÚparametrizeÚparamÚskip_if_windowsrÕ   rÝ   rˆ   r!   rG   rÞ   rá   rä   rî   rw   rÐ   r÷   rú   rû   rÿ   r  r   r   r   r   Ú<module>   s^    (
*!
A


.ÿ
&
	ÿ

0

	