a
    PfAI                     @   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Z8dFd9d:Z9d;d< Z:d=d> Z;d?d@ Z<dAdB Z=dCdD Z>dS )G    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    n1 s00    Y  d S )Nc                    s    |j  fd| i| t | S )Nkey)to_hdfr   )r   objkwargspath a/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/io/pytables/test_round_trip.py	roundtrip!   s    z'test_conv_read_write.<locals>.roundtrip
   dtype
2020-01-01periodsindexZseriesfloat64c                 S   s   g | ]}d | qS Zi_r   .0ir   r   r   
<listcomp>*       z(test_conv_read_write.<locals>.<listcomp>r   r   Zstring_series皙?x         ABCDc                 S   s   g | ]}d | qS zi-r   r"   r   r   r   r%   0   r&   r+   columnsr   frame   ABtableTr   appendzindex>2)where   )tmZ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$     rG   c                 C   sn   dgd }t d|i|d}t| 8}|jd|dgd |d}t|| W d    n1 s`0    Y  d S )NZ2aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   ar   rE   )Zdata_columns)r   r   r8   selectr;   rC   )
setup_pathdatarE   storerF   r   r   r   test_long_strings;   s    


rM   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   rE   Tr6   r   r8   formatFr   r?   ilocr   r;   rC   r   tmp_pathrJ   r   rE   r   r   r   test_apiG   s    rU   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 )	NrN   r   rE   Tr7   r6   rO   FrQ   rS   r   r   r   test_api_appendW   s    rV   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|l}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    n1 s0    Y  d S )NrN   rE   FfixedrO   fr7   )r   r   Tr6   )r8   rP   )r   r?   r   r;   rC   r   r   r   r8   rR   rI   )rT   rJ   r   rE   rL   r   r   r   
test_api_2e   s8    



rY   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 s0    Y  tj	t
|d" |j|dddd W d    n1 s0    Y  d}tj	t|d" |j|dddd W d    n1 s0    Y  tj	t|d" |j|dddd W d    n1 sJ0    Y  d}d| d}tj	t|d t|d W d    n1 s0    Y  d S )Nr(   r)   r*   r-   r   c                 S   s   g | ]}d | qS r.   r   r"   r   r   r   r%      r&   z$test_api_invalid.<locals>.<listcomp>r+   r/   zCan only append to TablesmatchrE   TrX   rO   rW   z)invalid HDFStore format specified \[foo\]fooF zFile z does not exist)r   r<   r=   r@   r   rA   rB   r?   pytestraises
ValueErrorr   	TypeErrorFileNotFoundErrorr   )rT   rJ   r   rE   msgr   r   r   test_api_invalid   s(    0022rd   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 s0    Y  W d    n1 s0    Y  d S )Nr   r   r   r   r   rH   z/az'No object named b in the file'rZ   b)r   r   r<   r=   r    r
   getr;   r>   r^   r_   KeyError)rJ   rL   leftrightr   r   r   test_get   s    



rj   c                 C   s(   t tjdd}t|tj|  d S )Nr:   )2   d   )r   r<   randomdefault_rngstandard_normal_check_roundtripr;   rC   )rJ   rE   r   r   r   test_put_integer   s    rq   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 s0    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    n1 s0    Y  d S )%NrH      r:      Zf8r   Zdf_f8i8Z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]rZ   rs   r:   rt   Zf4r4   r0   Zdf_f4r   float32c                 S   s(   i | ] }|t tjd d|dqS )r:   r2   r   )r   r<   rm   rn   Zintegers)r#   cr   r   r   
<dictcomp>   s   z6test_table_values_dtypes_roundtrip.<locals>.<dictcomp>)rw   r    int32int64int16int8r\   string      ?Zfloat322boolZ20130101Ztime1Z20130102Ztime2Zdf_mixed_dtypes1c                 S   s   g | ]}t |qS r   )strr"   r   r   r   r%      r&   z6test_table_values_dtypes_roundtrip.<locals>.<listcomp>)	rw   r    rz   r   r|   r}   r{   rB   zdatetime64[ns]count)name)r   r   r8   r;   r>   Zdtypesreescaper^   r_   r`   r<   arrayrR   Zastyper   rI   Zvalue_countsr   r   Z
sort_index)rJ   rL   df1df2rc   rF   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   s   g | ]}d | qS 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   r?   rp   r;   r>   r<   r=   r    r
   r   r   rB   valuesZasarray)rJ   stsZts2Z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   )r<   rm   rn   ro   r   rp   r;   r>   )rJ   r   r   r   r   r   test_float_index  s    r   c                 C   sz   t d}g d}t jddd}t|||d}tt	j
j  t|tj| d W d    n1 sl0    Y  d S )Nr   ))g        r   )       @      @)g      @g      @r:   r+   )rt   r   )r   r0   r   )r<   r=   rm   rn   ro   r@   r   r;   Zassert_produces_warningpderrorsZPerformanceWarningrp   rC   )rJ   colidxrK   Z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;   r>   )lhsrhsr   r   r   <lambda>1  r&   z"test_index_types.<locals>.<lambda>r   yr   rH   gGz?re   rs   g{Gz?r2   z
2012-01-01z
2012-01-02M8[ns]r   r   r   )r<   rm   rn   ro   r   rp   datetimetodaydater   r   Zas_unit)rJ   r   funcZserZdtir   r   r   test_index_types-  s:    r   c                 C   sn   t dd}ttjdt||d}zt|tj	| d W n, t
yh   t rb|tjd  Y n0 d S )Nz1/1/1940z1/1/1960r:   r   r   z'known failure on some windows platforms)r	   r   r<   rm   rn   ro   lenrp   r;   r>   OverflowErrorr   Zapplymarkerr^   markZxfail)rJ   requestZdrr   r   r   r   test_timeseries_preepoch\  s    

r   compressionFT)Z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|J}tjdt||d< ||d< |d }|j sJ W d    n1 s0    Y  t|d d tj|d d S )Nr(   r)   r*   r-   r   c                 S   s   g | ]}d | qS r.   r   r"   r   r   r   r%   p  r&   ztest_frame.<locals>.<listcomp>r+   r/   )r   r   )r2   rt   r   r   r:   )r   r,   z
2000-01-01r   r5   )r   freqr\   rE   r   r   )r   r<   r=   r@   r   rA   rB   r?   nanrR   _check_roundtrip_tabler;   rC   rp   rm   rn   ro   r
   r   r   Z_mgrZis_consolidated)r   rJ   rE   ZtdfrL   reconsr   r   r   
test_framei  s6    



0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   Zmyseries)r   r   rH   re   rx   r   )derX   rv   r   )r   rB   r   rp   r;   r>   rC   )rJ   s0s1Z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   rp   r;   r>   )r   rJ   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:   r,   r   r   )
r	   r   r<   rm   rn   ro   r   rp   r;   rC   )rJ   rngr1   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    n1 st0    Y  d S )Nr   r4   r1   )rp   r;   rC   Tr>   r   )rJ   Z multiindex_dataframe_random_datar1   rL   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 s0    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*   r-   r   c                 S   s   g | ]}d | qS r.   r   r"   r   r   r   r%     r&   z7test_store_mixed.<locals>._make_one.<locals>.<listcomp>r+   r/   r\   obj1barobj2r4   r   bool1r5   Zbool2rs   int1r:   Zint2)	r   r<   r=   r@   r   rA   rB   r?   Z_consolidate)rE   r   r   r   	_make_one  s    z#test_store_mixed.<locals>._make_oner   r   r   r   r   r   )rp   r;   rC   r   r>   )r   rJ   r   r   r   rL   r   r   r   test_store_mixed  s8    
.r   c                 K   sh   i }|rd|d< t |dfi |2}| |d< |d }||| fi | W d    n1 sZ0    Y  d S )Nblosccomplibwr   )r   )r   
comparatorr   r   r   optionsrL   	retrievedr   r   r   rp     s    rp   c                 C   sh   i }|rd|d< t |dfi |2}|jd| dd |d }|||  W d    n1 sZ0    Y  d S )Nr   r   r   r   r6   )rP   )r   put)r   r   r   r   r   rL   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   r<   rm   rn   ro   r   rp   r;   r>   )rJ   Zunicode_valuesr   r   r   r   test_unicode_index  s    r   c                 C   s   d}t d|gi}t| 8}|jd|ddd |d}t|| W d    n1 sX0    Y  t d|gddgd	}t| 8}|jd|ddd |d}t|| W d    n1 s0    Y  d S )
Nu   Δr4   rE   r6   zutf-8)rP   encodingrH   re   r3   )r   r   r   rf   r;   rC   )rJ   charrE   rL   rF   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 )Nrr   )r   r   r   r   r   r   r   r   r   rt   r   r   )
r   r   r<   r=   r    r
   r   rp   r;   rC   )rJ   rE   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|| ||sRJ ||s`J d S )	Nrs   r:   r   r   )r5   r4   rE   r6   r   rP   )r   r   r   r;   rC   equals)rT   rJ   rE   r   otherr   r   r   test_round_trip_equals*  s    
r   c                 C   s   t d | | }tddb tdtdttdddd	g}| }|j	|d
dd t
|d
}t|| W d    n1 s0    Y  d S )NZpyarrowzfuture.infer_stringTrs   r-   r   r/   r4   r5   rE   r6   r   )r^   Zimportorskipr   Zoption_contextr   rA   r?   Z	set_indexcopyr   r   r;   rC   )rT   rJ   r   rE   r   rF   r   r   r   test_infer_string_columns6  s    

r   )F)F)?r   r   numpyr<   r^   Zpandas._libs.tslibsr   Zpandas.compatr   Zpandasr   r   r   r   r   r   r;   r	   r
   r   Zpandas.tests.io.pytables.commonr   r   Zpandas.utilr   tdr   Z
single_cpuZ
pytestmarkrG   rM   rU   rV   rY   rd   rj   rq   r   filterwarningsr   r   r   r   r   ZparametrizeparamZskip_if_windowsr   r   r{   r    rB   r   r   r   r   rp   r   r   r   r   r   r   r   r   r   r   <module>   s\   (
*!A



.
&
	
0


	