U
    +ifD                     @   s  d dl Z d dlZd dlmZm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mZ d dlmZ d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+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+d, Z4d-d. Z5d/d0 Z6ej,d d!ej-d"ej.d#gd1d2 Z7dAd3d4Z8dBd5d6Z9dCd7d8Z:d9d: Z;d;d< Z<d=d> Z=d?d@ Z>dS )D    N)catch_warningssimplefilter)	Timestamp)is_platform_windows)	DataFrameIndexSeries_testingbdate_rangeread_hdf)_maybe_removeensure_clean_pathensure_clean_store)_test_decoratorsZbloscc              	      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 5 Q R X d S )Nc                    s   |j  | f| t | S )N)to_hdfr   )keyobjkwargspath [/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/io/pytables/test_round_trip.py	roundtrip'   s    z'test_conv_read_write.<locals>.roundtripZseriesZstring_seriesframe   ABtableTappendzindex>2)where   )tmZensure_cleanmakeTimeSeriesassert_series_equalmakeStringSeriesmakeDataFrameassert_frame_equalr   ranger   r   index)
setup_pathr   odfresultr   r   r   test_conv_read_write$   s    
r/   c              	   C   sd   t dtjddditjdddd}t| .}|jd|dgd |d}t|| W 5 Q R X d S )Nad   
   )sizer*   r-   )Zdata_columns)r   r#   Zrands_arrayr   r    selectr(   )r+   r-   storer.   r   r   r   test_long_strings;   s     

r7   c              
   C   sz  t | }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| W 5 Q R X t | }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| W 5 Q R X t | }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| W 5 Q R X 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 5 Q R X t | }t }d
}tjt|d |j|ddd	d W 5 Q R X tjt|d |j|dddd W 5 Q R X d}tjt|d |j|dddd W 5 Q R X tjt|d |j|dddd W 5 Q R X W 5 Q R X d}d| d}tjt|d t|d W 5 Q R X d S )Nr2   r-   Tr   )r    formatFr   ZfixedfzCan only append to Tablesmatchz)invalid HDFStore format specified \[foo\]foo zFile z does not exist)r   r#   r'   Zilocr   r(   r   r   r   r    r5   pytestraises
ValueError	TypeErrorFileNotFoundError)r+   r   r-   r6   msgr   r   r   test_apiI   sx    







&rD   c              
   C   s   t | r}t |d< |d}|d }t|| |d}|d }t|| tjtdd |d W 5 Q R X W 5 Q R X d S )Nr0   z/az'No object named b in the file'r:   b)r   r#   r$   getr%   r>   r?   KeyError)r+   r6   leftrightr   r   r   test_get   s    


rJ   c                 C   s$   t tjdd}t|tj|  d S )N2   r1   )r   nprandomrandn_check_roundtripr#   r(   )r+   r-   r   r   r   test_put_integer   s    rP   c                 C   s  t | }tddddgidd}|d| t|j|d j tddddgidd}|d	| t|j|d	 j td
}tj	t
|d |d	| W 5 Q R X ttjdgdgdggdddgd}|d| t|j|d j |jd dkst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!	}| }| }t|| W 5 Q R X d S )"Nr0      r"      Zf8dtypeZ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]r:   Zf4r   columnsZdf_f4r   float32c                 S   s"   i | ]}|t tjd |dqS )r   rS   )r   rL   rM   randint).0cr   r   r   
<dictcomp>   s    z6test_table_values_dtypes_roundtrip.<locals>.<dictcomp>)rX   float64int32int64int16int8r<   string      ?Zfloat322boolZ20130101Ztime1Z20130102Ztime2Zdf_mixed_dtypes1c                 S   s   g | ]}t |qS r   )str)rZ   ir   r   r   
<listcomp>   s     z6test_table_values_dtypes_roundtrip.<locals>.<listcomp>)	rX   r]   r^   rd   r`   ra   r_   objectzdatetime64[ns])r   r   r    r#   r%   Zdtypesreescaper>   r?   r@   rL   arrayAssertionErrorZastyper   r5   Zvalue_countsr*   r   Z
sort_index)r+   r6   df1df2rC   r.   expectedr   r   r   "test_table_values_dtypes_roundtrip   sZ    $rp   c                 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   rS   F)r   check_index_type)r#   r&   rO   r%   r$   r   r*   r   rh   valuesrL   Zasarray)r+   stsZts2Zts3r   r   r   test_series  s        ru   c                 C   s4   t jd}tt jd|d}t|tj| d d S )Nr2   r4   r   )rL   rM   rN   r   rO   r#   r%   )r+   r*   rs   r   r   r   test_float_index  s    rv   c              	   C   sl   t d}dddg}t jdd}t|||d}tdd	$ td
tj	j
 t|tj| d W 5 Q R X d S )Nr2   )g        rc   )       @      @)g      @g      @   )rR   r2   )r*   rW   Trecordignorer   )rL   ZarangerM   rN   Zreshaper   r   r   pderrorsPerformanceWarningrO   r#   r(   )r+   colidxdataZDFr   r   r   test_tuple_index  s    

r   z(ignore::pandas.errors.PerformanceWarningc              	   C   s  t dd tjd}dd }W 5 Q R X t dd" t|ddg}t||| d W 5 Q R X t dd( t|tj dg}t||| d W 5 Q R X t dd" t|ddg}t||| d W 5 Q R X t dd( t|tj d	g}t||| d W 5 Q R X t 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|ddg}t||| d t|ddg}t||| d t|tdddtdddg}t||| d W 5 Q R X d S )NTrz   r"   c                 S   s   t j| |ddS )NT)rq   )r#   r%   )lrr   r   r   <lambda>,      z"test_index_types.<locals>.<lambda>r   yr   r0   gGz?rE   rQ   g{Gz?r   i  )	r   rL   rM   rN   r   rO   datetimetodaydate)r+   rr   funcZserr   r   r   test_index_types'  sF     r   c                 C   sd   t dd}ttjt||d}zt|tj| d W n( t	k
r^   t
 rXtd n Y nX d S )Nz1/1/1940z1/1/1960r4   r   z'known failure on some windows platforms)r
   r   rL   rM   rN   lenrO   r#   r%   OverflowErrorr   r>   Zxfail)r+   Zdrrt   r   r   r   test_timeseries_preepochZ  s    
r   compressionFT)Z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	|8}tj
t||d< ||d< |d }|j stW 5 Q R X t|d d t j|d d S )N)r   r   )r   rR   r   r   r<   r-   r   r   )r#   r'   rL   nanrr   _check_roundtrip_tabler(   rO   ZmakeTimeDataFramer   rM   rN   r   Z_mgrZis_consolidatedrl   )r   r+   r-   Ztdfr6   reconsr   r   r   
test_frameg  s8             
r   c                 C   s   t td}t dtd}t }tdddgd}tdd	d
gd}t|tj| d t|tj| d t|tj| d t|tj| d t|tj| d d S )NrS   Zmyseries)namerT   r0   rE   r[   r4   der9   rV   r   )r   rh   r   rO   r#   r%   r(   )r+   s0s1Zdf0rm   rn   r   r   r   test_empty_series_frame  s    
r   rT   zm8[ns]zM8[ns]c                 C   s   t | d}t|tj|d d S )NrS   r   )r   rO   r#   r%   )rT   r+   rs   r   r   r   test_empty_series  s    
r   c                 C   sB   dd t ddD }ttjt|d|d}t|tj| d d S )Nc                 S   s   g | ]}|  qS r   )r   )rZ   xr   r   r   rg     s     z,test_can_serialize_dates.<locals>.<listcomp>z1/1/2000z	1/30/2000   r4   r   )	r
   r   rL   rM   rN   r   rO   r#   r(   )r+   rngr   r   r   r   test_can_serialize_dates  s    r   c              	   C   sn   |}t |tj| d t |jtj| d t |d tj| d t| "}||d< |d }t|| W 5 Q R X d S )Nr   r   r   )rO   r#   r(   Tr%   r   )r+   Z 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|6}||d< t|d | ||d< t|d | W 5 Q R X 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 )Nr<   obj1barobj2r   r   bool1r   Zbool2rQ   int1r"   Zint2)r#   r'   Z_consolidate)r-   r   r   r   	_make_one  s    z#test_store_mixed.<locals>._make_oner   r   r   r   r   r   )rO   r#   r(   r   r%   )r   r+   r   rm   rn   r6   r   r   r   test_store_mixed  s8    

r   c              	   K   sL   i }|rt |d< t|df|$}| |d< |d }||| f| W 5 Q R X d S Ncomplibwr   _default_compressorr   )r   
comparatorr   r   r   optionsr6   	retrievedr   r   r   rO     s    rO   c           
   	   K   sn   i }|r|pt |d< t|df|B}||d< |d }|||f| ||d< |d }	||	|f| W 5 Q R X d S r   r   )
selfr   r   r   r   r   r   r6   r   Zagainr   r   r   _check_double_roundtrip  s    r   c              	   C   sP   i }|rt |d< t|df|(}|jd| dd |d }|||  W 5 Q R X d S )Nr   r   r   r   r8   )r   r   put)r   r   r   r   r   r6   r   r   r   r   r     s    r   c              	   C   sV   ddg}t dd: tdtjj ttjt	||}t
|tj| d W 5 Q R X d S )Nu   σu   σσTrz   r|   r   )r   r   r}   r~   r   r   rL   rM   rN   r   rO   r#   r%   )r+   Zunicode_valuesrs   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 5 Q R X t d|gddgd	}t| .}|jd|ddd |d}t|| W 5 Q R X d S )
Nu   Δr   r-   r   zutf-8)r8   encodingr0   rE   r   )r   r   r   rF   r#   r(   )r+   charr-   r6   r.   r   r   r   test_unicode_longer_encoded  s    



r   c                 C   sP   t dddgdddgddd	gd
}t }|jd d |d< t|tj| d d S )NrQ   r"   rR   rc   rw   rx   r0   rE   r[   )r0   rE   r[   r   r   )r   r#   r$   r*   rO   r(   )r+   r-   rt   r   r   r   test_store_datetime_mixed#  s    "r   c              	   C   sp   t ddgddgd}t| H}|j|ddd t|d}t|| ||sTt||sbtW 5 Q R X d S )	NrQ   r"   r   r   )r   r   r-   r   r   )r   r   r   r   r#   r(   equalsrl   )r+   r-   r   otherr   r   r   test_round_trip_equals+  s    

r   )F)F)F)?r   ri   warningsr   r   numpyrL   r>   Zpandas._libs.tslibsr   Zpandas.compatr   Zpandasr}   r   r   r   r	   r#   r
   r   Zpandas.tests.io.pytables.commonr   r   r   Zpandas.utilr   tdr   markZ
single_cpuZ
pytestmarkr/   r7   rD   rJ   rP   rp   ru   rv   r   filterwarningsr   r   ZparametrizeparamZskip_if_windowsr   r   r_   r]   rh   r   r   r   r   rO   r   r   r   r   r   r   r   r   r   r   <module>   s\    aA

2 

 
,


