U
    sVc,                     @   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
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 d dlmZ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&ej'dd Z(dd Z)ej*ddej+gdej,gdej-gdej.gdej+gdej,gdej-gdej.gdej/gdej/gg
dd Z0dd Z1dd  Z2dS )!    N)catch_warningssimplefilter)	Timestamp)	DataFrameHDFStoreIndex
MultiIndex
RangeIndexSeries_testingconcat)
Int64Index)_maybe_removeensure_clean_pathensure_clean_store)_test_decoratorsc              
   C   s   t dddgi}t| b}t|N}|jd|dd |jd|dd |djdksXt|djdksltW 5 Q R X W 5 Q R X d S )	NA      afixedformatbtable)r   r   r   put
get_storerZformat_typeAssertionError)
setup_pathdfpathstore r"   E/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/io/pytables/test_put.pytest_format_type#   s    

r$   c              
   C   sD   d}t | ,}tjt|d t|dd W 5 Q R X W 5 Q R X d S )Nz-format is not a defined argument for HDFStorematchr   r   )tmZensure_cleanpytestraises
ValueErrorr   )r   msgr    r"   r"   r#    test_format_kwarg_in_constructor.   s    r,   c                 C   s  t | }t }tddV t|d |d| |djrFt	d}t
jt|d |d| W 5 Q R X W 5 Q R X tddR t|d |d| |djst	t|d |d| |djst	W 5 Q R X W 5 Q R X t| }t }tddb ||d t|}|djr2t	W 5 Q R X t
jt|d |j|ddd	 W 5 Q R X W 5 Q R X tddn ||d
 t|}|d
jst	W 5 Q R X |j|ddd	 t|}|djst	W 5 Q R X W 5 Q R X W 5 Q R X d S )Nzio.hdf.default_formatr   r   Can only append to Tablesr%   df2r   Tappenddf3Zdf4)r   r'   ZmakeDataFramepdZoption_contextr   r   r   Zis_tabler   r(   r)   r*   r0   r   Zto_hdfr   )r   r!   r   r+   r    r"   r"   r#   test_api_default_format8   s>    

 

$
$

r3   c              
   C   s`  t | L}t }t }||d< |d d |d< |d d |d< |d d |d< |d d |d< |jd|d d dd	 d
}tjt|d |jd|dd  dd W 5 Q R X t|d tjt|d |jd|dd  dd W 5 Q R X tjt|d |jd|dd  dd W 5 Q R X |jd|d d ddd t	|d d |d  W 5 Q R X d S )Nr   
   r   zfoo/bar/bahfooz/foocr   r   r-   r%   Tr/   fF)r   r0   )
r   r'   ZmakeTimeSeriesmakeTimeDataFramer   r(   r)   r*   r   assert_frame_equal)r   r!   tsr   r+   r"   r"   r#   test_putc   s&    "
""r;   c              	   C   s   t | }tdd tdD }ttd|d}t||d}||d< t|d | ||d< t	|d | tdgd	d tdD  }ttd
|d}t||d}||d< t|d | ||d< t	|d | W 5 Q R X d S )Nc                 S   s   g | ]}d | qS zI am a very long string index: r"   .0ir"   r"   r#   
<listcomp>   s     z)test_put_string_index.<locals>.<listcomp>   index)r   Br   r   Z$abcdefghijklmnopqrstuvwxyz1234567890c                 S   s   g | ]}d | qS r<   r"   r=   r"   r"   r#   r@      s        )
r   r   ranger
   nparanger   r'   assert_series_equalr9   )r   r!   rC   sr   r"   r"   r#   test_put_string_index   s&    
rK   c              
   C   sr   t | `}t }|jd|ddd t|d | d}tjt|d |jd|ddd W 5 Q R X W 5 Q R X d S )	Nr6   r   zlibr   Zcomplib0Compression not supported on Fixed format storesr%   r   r   )r   r'   r8   r   r9   r(   r)   r*   )r   r!   r   r+   r"   r"   r#   test_put_compression   s    
rO   c              
   C   sr   t  }t| X}d}tjt|d |jd|ddd W 5 Q R X |jd|ddd t |d | W 5 Q R X d S )	NrN   r%   r   r   ZbloscrM   r6   r   )r'   r8   r   r(   r)   r*   r   r9   )r   r   r!   r+   r"   r"   r#   test_put_compression_blosc   s    
rP   c              
   C   s(  t  }d|d< d|d< |d dk|d< |d dk|d	< d
|d< d|d< d|d< td|d< td|d< tddddd|d< tddddd|d< tj|j|jdd dgf< | j	d
d}t
| V}t|d td
d  tdtjj |d| W 5 Q R X |d}t || W 5 Q R X d S )Nr5   Zobj1barobj2r   r   Zbool1rD   Zbool2TZbool3r   Zint1r   Zint2Z20010102Z
timestamp1Z20010103Z
timestamp2i  Z	datetime1   Z	datetime2   )datetimer   )recordignore)r'   r8   r   rU   rG   nanlocrC   Z_consolidate_convertr   r   r   r   r2   errorsZPerformanceWarningr   getr9   )r   r   r!   expectedr"   r"   r#   test_put_mixed_type   s*    


r^   zformat, indexr   r   c              	   C   sj   t | X}ttjddtdd}|t||_t|d |j	d||d t
||d  W 5 Q R X d S )Nr4   r   ZABcolumnsr   r   )r   r   rG   randomZrandnlistlenrC   r   r   r'   r9   )r   r   rC   r!   r   r"   r"   r#   test_store_index_types   s    

rd   c              
   C   s  t jddddgddgd}ttdd	d
|d}| }t|jt	rTt
|j|_t| }|d| tj|d |ddd |jd|dd tj|d |ddd td}tjt|d |jd|ddgd W 5 Q R X td}tjt|d |jd|ddd W 5 Q R X W 5 Q R X t| 6}|d| |d| t|d t||f W 5 Q R X ttdd	d
ttdddd}| }t|jt	rt
|j|_t| ,}|jd|dd tj|d |ddd W 5 Q R X d S )N)r   r   )r   r   )rD   r   )rD   r   firstsecondnames   rS      r_   r   T)Zcheck_index_typeZcheck_column_typeZdf1r   r   z<cannot use a multi-index on axis [1] with data_columns ['A']r%   r.   r   )r   Zdata_columnsz;cannot use a multi-index on axis [1] with data_columns Truer1   ABCDr5   )name)r   from_tuplesr   rG   rH   Zreshapecopy
isinstancerC   r	   r   r   r   r'   r9   reescaper(   r)   r*   r0   r   r   rb   )r   rC   r   r]   r!   r+   r"   r"   r#   test_column_multiindex   sZ    
 
      

&
"&
   rr   c              
   C   s  t | }ddd}t|d ttdddg| d}|d| t|d| t|d ttdddg|dd d gd}|d| t|d| t|d	 t	td
|dd d gd}|d	| t	td
|dddgd}t
|d	| t|d ttdddg|dddgd}d}tjt|d |d| W 5 Q R X t|d ttdddg|dddgd}tjt|d |d| W 5 Q R X t|d ttdddg|dd	dgd}|d| t|d| W 5 Q R X d S )Nc                 S   s   t jdd tddD | dS )Nc              	   S   s<   g | ]4}t d D ]&}t dD ]}tdd|||fqqqS )r   rS   i  ri   )rF   rU   )r>   drJ   tr"   r"   r#   r@   2  s   
 
 z=test_store_multiindex.<locals>.make_index.<locals>.<listcomp>r   rS   rg   )r   rm   rF   rg   r"   r"   r#   
make_index0  s    z)test_store_multiindex.<locals>.make_indexr   )ri   r   r   r   )r`   rC   daterJ   ri   rB   Zlevel_1Zlevel_2rt   zBduplicate names/columns in the multi-index when storing as a tabler%   )N)r   r   r   rG   zerosr0   r'   r9   selectr
   rI   r(   r)   r*   )r   r!   ru   r   rJ   Zxpr+   r"   r"   r#   test_store_multiindex*  sX    






ry   )3rU   rp   warningsr   r   ZnumpyrG   r(   Zpandas._libs.tslibsr   Zpandasr2   r   r   r   r   r	   r
   r   r'   r   Zpandas.core.apir   Zpandas.tests.io.pytables.commonr   r   r   Zpandas.utilr   tdmarkZ
single_cpuZ
pytestmarkr$   r,   r3   r;   rK   rO   Zskip_if_windowsrP   r^   ZparametrizeZmakeFloatIndexZmakeStringIndexZmakeIntIndexZmakeDateIndexZmakePeriodIndexrd   rr   ry   r"   r"   r"   r#   <module>   sJ   (

+!

4