o
    ҷhA                     @   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 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+ Z.ej*d,ej/ej0e1d-d.gd/d0 Z2d1d2 Z3d3d4 Z4ej*d$d%ej+d&ej,d'gd5d6 Z5dCd7d8Z6dCd9d:Z7d;d< Z8d=d> Z9d?d@ Z:dAdB Z;dS )D    N)	Timestamp)is_platform_windows)	DataFrameIndexSeries_testingbdate_rangeread_hdf)_maybe_removeensure_clean_store)_test_decoratorsc                     s   t  \  fdd} t  }t || d| t  }t || d| t  }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 scw   Y  d S )Nc                    s   |j  | fi | t | S )N)to_hdfr	   )keyobjkwargspath [/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/io/pytables/test_round_trip.py	roundtrip   s   
z'test_conv_read_write.<locals>.roundtripseriesstring_seriesframe   ABtableTappendzindex>2)where   )tmensure_cleanmakeTimeSeriesassert_series_equalmakeStringSeriesmakeDataFrameassert_frame_equalr   ranger   r	   index)r   odfresultr   r   r   test_conv_read_write   s   
"r.   c                 C   sr   t dtditdd}t| }|jd|dgd |d}t|| W d    d S 1 s2w   Y  d S )Na
   r*   r,   )data_columns)r   r"   makeStringIndexr   r   selectr(   )
setup_pathr,   storer-   r   r   r   test_long_strings3   s   

"r7   c                 C   s   | | }t  }|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 )Nr0   r,   Tr   r   formatFr"   r'   ilocr   r(   r	   tmp_pathr5   r   r,   r   r   r   test_api>   s   r>   c                 C   s   | | }t  }|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 )Nr0   r,   Tr   r   r8   Fr:   r<   r   r   r   test_api_appendN   s   r?   c                 C   s   | | }t  }|j|dddd t t|d| |j|dddd t t|d| |j|ddd t t|d| ||d t t|d| t|}t  }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 )
Nr,   Ffixedr8   fr   r0   Tr   )
r"   r'   r   r(   r	   r   r
   r   r;   r4   )r=   r5   r   r,   r6   r   r   r   
test_api_2\   s:   




$rB   c                 C   sf  | | }t  }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 sEw   Y  d}tjt|d |j|ddd	d W d    n1 sgw   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 )NzCan only append to Tablesmatchr,   TrA   r8   r@   z)invalid HDFStore format specified \[foo\]fooF zFile z does not exist)	r"   r'   pytestraises
ValueErrorr   	TypeErrorFileNotFoundErrorr	   )r=   r5   r   r,   msgr   r   r   test_api_invalid   s*   "rM   c              	   C   s   t | Q}t |d< |d}|d }t|| |d}|d }t|| tjtdd |d W d    n1 s@w   Y  W d    d S W d    d S 1 sXw   Y  d S )Nr/   z/az'No object named b in the file'rC   b)r   r"   r$   getr%   rG   rH   KeyError)r5   r6   leftrightr   r   r   test_get   s   



"rS   c                 C   s(   t tjdd}t|tj|  d S )Nr!   )2   d   )r   nprandomdefault_rngstandard_normal_check_roundtripr"   r(   )r5   r,   r   r   r   test_put_integer   s   r[   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 )%Nr/      r!      f8dtype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]rC   r]   r!   r^   f4r   columnsdf_f4r   float32c                 S   s(   i | ]}|t tjd d|dqS )r!   r   r`   )r   rV   rW   rX   integers).0cr   r   r   
<dictcomp>   s    z6test_table_values_dtypes_roundtrip.<locals>.<dictcomp>)ri   float64int32int64int16int8rE   string      ?float322bool20130101time120130102time2df_mixed_dtypes1c                 S   s   g | ]}t |qS r   )str)rk   ir   r   r   
<listcomp>       z6test_table_values_dtypes_roundtrip.<locals>.<listcomp>)	ri   rn   ro   rv   rq   rr   rp   objectzdatetime64[ns]count)name)r   r   r   r"   r%   dtypesreescaperG   rH   rI   rV   arrayr;   astyper   r4   value_countsr*   r   
sort_index)r5   r6   df1df2rL   r-   expectedr   r   r   "test_table_values_dtypes_roundtrip   s`   
$"r   z(ignore::pandas.errors.PerformanceWarningc                 C   s   t  }t|t j| d t  }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`   F)r   check_index_type)r"   r&   rZ   r%   r$   r   r*   r   r   valuesrV   asarray)r5   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!   r0   r1   r   )rV   rW   rX   rY   r   rZ   r"   r%   )r5   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 )Nr0   ))g        rt   )       @      @)g      @g      @r!      )r^   r0   )r*   rg   r   )rV   arangerW   rX   rY   reshaper   r"   assert_produces_warningpderrorsPerformanceWarningrZ   r(   )r5   colidxdata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|tdd
d
tdd
dg}t||| d d S )Nr!   c                 S   s   t j| |ddS )NT)r   )r"   r%   )lhsrhsr   r   r   <lambda>   s    z"test_index_types.<locals>.<lambda>r   yr   r/   gGz?rN   r]   g{Gz?r   i  )	rV   rW   rX   rY   r   rZ   datetimetodaydate)r5   r   funcserr   r   r   test_index_types  s4   "r   c                 C   sj   t dd}ttjdt||d}zt|tj	| d W d S  t
y4   t r3|jtjd  w )Nz1/1/1940z1/1/1960r!   r1   r   z'known failure on some windows platforms)r   r   rV   rW   rX   rY   lenrZ   r"   r%   OverflowErrorr   node
add_markerrG   markxfail)r5   requestdrr   r   r   r   test_timeseries_preepochG  s   

r   compressionFT)marksc                 C   s   t  }tj|jd< tj|jd< t|t j|| d t|t j|| d t  }t|t j|| d t	|$}tj
dt||d< ||d< |d }|j sPJ W d    n1 sZw   Y  t|d d t j|d d S )	N)r   r   )r   r^   r   r   r!   rE   r,   r   r   )r"   r'   rV   nanr;   _check_roundtrip_tabler(   rZ   makeTimeDataFramer   rW   rX   rY   r   _mgris_consolidated)r   r5   r,   tdfr6   reconsr   r   r   
test_frameT  s(   



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   ra   r/   rN   rl   r1   )derA   rf   r   )r   r   r   rZ   r"   r%   r(   )r5   s0s1df0r   r   r   r   r   test_empty_series_frameu  s   
r   ra   zm8[ns]zM8[ns]c                 C   s   t | d}t|tj|d d S )Nr`   r   )r   rZ   r"   r%   )ra   r5   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   )rk   xr   r   r   r~     r   z,test_can_serialize_dates.<locals>.<listcomp>z1/1/2000z	1/30/2000r!      r1   r   )
r   r   rV   rW   rX   rY   r   rZ   r"   r(   )r5   rngr   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   r   r   )rZ   r"   r(   Tr%   r   )r5    multiindex_dataframe_random_datar   r6   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   sP   t  } d| d< d| d< | d dk| d< | d dk| d	< d
| d< d| d< |  S )NrE   obj1barobj2r   r   bool1r   bool2r]   int1r!   int2)r"   r'   _consolidate)r,   r   r   r   	_make_one  s   z#test_store_mixed.<locals>._make_oner   r   r   r   r   r   )rZ   r"   r(   r   r%   )r   r5   r   r   r   r6   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   optionsr6   	retrievedr   r   r   rZ     s   "rZ   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   r9   )r   put)r   r   r   r   r   r6   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   rV   rW   rX   rY   r   rZ   r"   r%   )r5   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   Δr   r,   r   zutf-8)r9   encodingr/   rN   r   )r   r   r   rO   r"   r(   )r5   charr,   r6   r-   r   r   r   test_unicode_longer_encoded  s   



"r   c                 C   sJ   t g dg dg dd}t }|jd d |d< t|tj| d d S )Nr\   )rt   r   r   r   r^   r   r   )r   r"   r$   r*   rZ   r(   )r5   r,   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 )	Nr]   r!   r   r   )r   r   r,   r   r   )r   r   r	   r"   r(   equals)r=   r5   r,   r   otherr   r   r   test_round_trip_equals  s   
r   )F)<r   r   numpyrV   rG   pandas._libs.tslibsr   pandas.compatr   pandasr   r   r   r   r   r"   r   r	   pandas.tests.io.pytables.commonr
   r   pandas.utilr   tdr   
single_cpu
pytestmarkr.   r7   r>   r?   rB   rM   rS   r[   r   filterwarningsr   r   r   r   r   parametrizeparamskip_if_windowsr   r   rp   rn   r   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   <module>   s\     *
A


*

	

,

