U
    NZfC                     @   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 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*d d! Z+ej(dd"d# Z,d$d% Z-ej.d&d'ej/d(ej0d)gd*d+ Z1d,d- Z2ej.d.ej3ej4e5d/d0gd1d2 Z6d3d4 Z7d5d6 Z8ej.d&d'ej/d(ej0d)gd7d8 Z9dEd9d:Z:dFd;d<Z;d=d> Z<d?d@ Z=dAdB Z>dCdD Z?dS )G    N)catch_warningssimplefilter)	Timestamp)is_platform_windows)	DataFrameIndexSeries_testingbdate_rangeread_hdf)_maybe_remove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-nbcvw55c/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     

r6   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_pathr4   r   r+   r   r   r   test_apiG   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   r7   Fr9   r;   r   r   r   test_api_appendW   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 5 Q R X d S )
Nr+   Ffixedr7   fr   r0   Tr   )
r"   r&   r   r'   r   r   r   r   r:   r3   )r<   r4   r   r+   r5   r   r   r   
test_api_2e   s8    



rA   c              	   C   s   | | }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 d}d| d}tjt|d t|d W 5 Q R X d S )NzCan only append to Tablesmatchr+   Tr@   r7   r?   z)invalid HDFStore format specified \[foo\]fooF zFile z does not exist)	r"   r&   pytestraises
ValueErrorr   	TypeErrorFileNotFoundErrorr   )r<   r4   r   r+   msgr   r   r   test_api_invalid   s     rL   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'rB   b)r   r"   r#   getr$   rF   rG   KeyError)r4   r5   leftrightr   r   r   test_get   s    


rR   c                 C   s$   t tjdd}t|tj|  d S )N2   r/   )r   nprandomrandn_check_roundtripr"   r'   )r4   r+   r   r   r   test_put_integer   s    rX   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!	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]rB   Zf4r   columnsZdf_f4r   float32c                 S   s"   i | ]}|t tjd |dqS )r   r[   )r   rT   rU   randint).0cr   r   r   
<dictcomp>   s    z6test_table_values_dtypes_roundtrip.<locals>.<dictcomp>)r`   float64int32int64int16int8rD   string      ?Zfloat322boolZ20130101Ztime1Z20130102Ztime2Zdf_mixed_dtypes1c                 S   s   g | ]}t |qS r   )str)rb   ir   r   r   
<listcomp>   s     z6test_table_values_dtypes_roundtrip.<locals>.<listcomp>)	r`   re   rf   rl   rh   ri   rg   objectzdatetime64[ns]count)name)r   r   r   r"   r$   ZdtypesreescaperF   rG   rH   rT   arrayAssertionErrorZastyper   r3   Zvalue_countsr)   r   Z
sort_index)r4   r5   df1df2rK   r,   expectedr   r   r   "test_table_values_dtypes_roundtrip   s\    $rz   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%   rW   r$   r#   r   r)   r   rp   valuesrT   Zasarray)r4   stsZts2Zts3r   r   r   test_series  s        r   c                 C   s4   t jd}tt jd|d}t|tj| d d S )Nr0   r2   r   )rT   rU   rV   r   rW   r"   r$   )r4   r)   r}   r   r   r   test_float_index  s    r   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 )Nr0   )g        rk   )       @      @)g      @g      @   )rZ   r0   )r)   r_   Trecordignorer   )rT   ZarangerU   rV   Zreshaper   r   r   pderrorsPerformanceWarningrW   r"   r'   )r4   colidxdataZDFr   r   r   test_tuple_index  s    

r   c              	   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 )NTr   r!   c                 S   s   t j| |ddS )NT)r{   )r"   r$   )lhsrhsr   r   r   <lambda>+      z"test_index_types.<locals>.<lambda>r   yr   r.   gGz?rM   rY   g{Gz?r   i  )	r   rT   rU   rV   r   rW   datetimetodaydate)r4   r|   funcZserr   r   r   test_index_types&  sF     r   c                 C   sl   t dd}ttjt||d}zt|tj| d W n0 t	k
rf   t
 r`|jtjd  Y nX d S )Nz1/1/1940z1/1/1960r2   r   z'known failure on some windows platforms)r
   r   rT   rU   rV   lenrW   r"   r$   OverflowErrorr   nodeZ
add_markerrF   markZxfail)r4   requestZdrr~   r   r   r   test_timeseries_preepochY  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   rZ   r   r   rD   r+   r   r   )r"   r&   rT   nanr:   _check_roundtrip_tabler'   rW   ZmakeTimeDataFramer   rU   rV   r   Z_mgrZis_consolidatedrv   )r   r4   r+   Ztdfr5   reconsr   r   r   
test_framef  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 )Nr[   Zmyseries)rr   r\   r.   rM   rc   r2   der@   r^   r   )r   rp   r   rW   r"   r$   r'   )r4   s0s1Zdf0rw   rx   r   r   r   test_empty_series_frame  s    
r   r\   zm8[ns]zM8[ns]c                 C   s   t | d}t|tj|d d S )Nr[   r   )r   rW   r"   r$   )r\   r4   r}   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   )rb   xr   r   r   ro     s     z,test_can_serialize_dates.<locals>.<listcomp>z1/1/2000z	1/30/2000   r2   r   )	r
   r   rT   rU   rV   r   rW   r"   r'   )r4   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   )rW   r"   r'   Tr$   r   )r4   Z multiindex_dataframe_random_datar   r5   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 )NrD   obj1barobj2r   r   bool1r   Zbool2rY   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   )rW   r"   r'   r   r$   )r   r4   r   rw   rx   r5   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   optionsr5   	retrievedr   r   r   rW     s    rW   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   r5   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   σσTr   r   r   )r   r   r   r   r   r   rT   rU   rV   r   rW   r"   r$   )r4   Z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 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.   rM   r   )r   r   r   rN   r"   r'   )r4   charr+   r5   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 )NrY   r!   rZ   rk   r   r   r.   rM   rc   )r.   rM   rc   r   r   )r   r"   r#   r)   rW   r'   )r4   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|| ||sRt||s`td S )	NrY   r!   r   r   )r   r   r+   r   r   )r   r   r   r"   r'   equalsrv   )r<   r4   r+   r   otherr   r   r   test_round_trip_equals  s    
r   )F)F)@r   rs   warningsr   r   ZnumpyrT   rF   Zpandas._libs.tslibsr   Zpandas.compatr   Zpandasr   r   r   r   r	   r"   r
   r   Zpandas.tests.io.pytables.commonr   r   Zpandas.utilr   tdr   r   Z
single_cpuZ
pytestmarkr-   r6   r=   r>   rA   rL   rR   rX   rz   filterwarningsr   r   r   r   r   ZparametrizeparamZskip_if_windowsr   r   rg   re   rp   r   r   r   r   rW   r   r   r   r   r   r   r   r   r   <module>   sb    *A



2 

 
,


