U
    cB                     @   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 Z7d?d3d4Z8d@d5d6Z9d7d8 Z:d9d: Z;d;d< Z<d=d> Z=dS )A    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 L/tmp/pip-unpacked-wheel-g7fro6k3/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)r   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(   )
setup_pathr,   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 )Nr1   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    r4   pytestraises
ValueError	TypeErrorFileNotFoundError)r5   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 )Nr/   z/az'No object named b in the file'r:   b)r   r#   r$   getr%   r>   r?   KeyError)r5   r6   leftrightr   r   r   test_get   s    


rJ   c                 C   s$   t tjdd}t|tj|  d S )N2   r0   )r   nprandomrandn_check_roundtripr#   r(   )r5   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 )"Nr/      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   r4   Zvalue_countsr*   r   Z
sort_index)r5   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)r5   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 )Nr1   r3   r   )rL   rM   rN   r   rO   r#   r%   )r5   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 )Nr1   )g        rc   )       @      @)g      @g      @   )rR   r1   )r*   rW   Trecordignorer   )rL   ZarangerM   rN   Zreshaper   r   r   pderrorsPerformanceWarningrO   r#   r(   )r5   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   r/   gGz?rE   rQ   g{Gz?r   i  )	r   rL   rM   rN   r   rO   datetimetodaydate)r5   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/1960r3   r   z'known failure on some windows platforms)r
   r   rL   rM   rN   lenrO   r#   r%   OverflowErrorr   r>   Zxfail)r5   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   r5   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   r/   rE   r[   r3   der9   rV   r   )r   rh   r   rO   r#   r%   r(   )r5   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   r5   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   r3   r   )	r
   r   rL   rM   rN   r   rO   r#   r(   )r5   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   )r5   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   r5   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              	   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%   )r5   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   encodingr/   rE   r   )r   r   r   rF   r#   r(   )r5   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   r/   rE   r[   )r/   rE   r[   r   r   )r   r#   r$   r*   rO   r(   )r5   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   )r5   r,   r   otherr   r   r   test_round_trip_equals  s    

r   )F)F)>r   ri   warningsr   r   Z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   <module>   sZ    aA

2 

 
,

