o
    ŀgAI                     @   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 sw   Y  d S )Nc                    s    |j  fd| i| t | S )Nkey)to_hdfr   )r   objkwargspath \/var/www/html/myenv/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 )N2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   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 sw   Y  tj	t|d |j|dddd W d    n1 sw   Y  d}d| d}tj	t|d t|d W d    d S 1 sw   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sJ 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 sw   Y  d S )%NrN      r>      f8r   df_f8i8df_i8zinvalid 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   gGz?rl   rz   g{Gz?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 sJ W d    n1 sw   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

	