U
    MfB4                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	m
ZmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZ ejjZejddd	d
dgdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"ejj#e  dddd Z$ejddd d!d"d#gdd!d"d#gd$d d!d"d#gdd%d!d"d#gd d!d"d#gd%d!d"d#gd&d d!d"d#gej%d d"d#gd&ej%d d"d#gg	ejd'd(e&gd)d* Z'd+d, Z(d-d. Z)dS )/    N)is_platform_little_endian)	DataFrameHDFStoreSeries_testingread_hdf)_maybe_removeensure_clean_pathensure_clean_storetables)pytables)ClosedFileErrorPossibleDataLossErrorTermmoderr+awc                 C   s  t  }d}t| Z}|dkrFtjt|d t||d W 5 Q R X n$t||d}|jj|ksbt	|
  W 5 Q R X t| j}|dkrtjt|d t||d}W 5 Q R X W 5 Q R X n(t||d}|jj|kst	W 5 Q R X W 5 Q R X t| }|dkr<tjt|d |j|d|d W 5 Q R X |j|ddd n|j|d|d |dkrd}tjt|d t|d|d W 5 Q R X nt|d|d}t || W 5 Q R X d S )	Nz[\S]* does not exist)r   r   matchr   dfr   )r   zNmode w is not allowed while performing a read. Allowed modes are r, r\+ and a.)tmmakeTimeDataFramer	   pytestraisesOSErrorr   _handler   AssertionErrorcloseto_hdf
ValueErrorr   assert_frame_equal)
setup_pathr   r   msgpathstoreresult r)   O/tmp/pip-unpacked-wheel-eb6vo0j3/pandas/tests/io/pytables/test_file_handling.py	test_mode    s:    

$


r+   c              	   C   sF   t  }t| ,}|j|ddd t|d}t || W 5 Q R X d S )Nr   r   r   )r   r   r	   r!   r   r#   )r$   r   r&   r(   r)   r)   r*   test_default_modeS   s
    

r,   c              
   C   s  t | }t|dd}t |d< d}tjt|d |d W 5 Q R X |  |j	r^t
|d |j	srt
t|dkst
|  |j	rt
t|dd}t |d< |d |j	st
t|dkst
|jdkst
|  |j	rt
|d |j	st
t|dkst
|jdks(t
|  |j	r<t
|d |j	sRt
t|dksdt
|jdkstt
|  |j	rt
W 5 Q R X d S )	Nr   r   zKRe-opening the file \[[\S]*\] with mode \[a\] will delete the current file!r   r   r   r      )r	   r   r   makeTimeSeriesr   r   r   openr    is_openr   len_mode)r$   r&   r'   r%   r)   r)   r*   test_reopen_handle\   sD    








r3   c              	   C   s~   t | Z}t  }t|dddd}||d< |d| t |d | t |d | |  W 5 Q R X tj	|rzt
d S )Nr   Z	H5FD_COREr   )r   ZdriverZdriver_core_backing_storer   df2)r   ensure_cleanmakeDataFramer   appendr#   r    osr&   existsr   )r$   r&   r   r'   r)   r)   r*   test_open_args   s       r:   c              	   C   s8   t | &}t |d< |  |jdd W 5 Q R X d S )Nr   T)fsync)r
   r   r.   flush)r$   r'   r)   r)   r*   
test_flush   s    
r=   c              
   C   sv  t  }t| z}|j|ddd t|d}t || tj|dd:}|jdddD ]$}|j	j
dksjt|j	jd	ksVtqVW 5 Q R X W 5 Q R X t| z}|j|dd	d
 t|d}t || tj|dd:}|jdddD ]$}|j	j
dkst|j	jd kstqW 5 Q R X W 5 Q R X t| |}||d t|d}t || tj|dd@}|jdddD ]*}|j	j
dksxt|j	jd ksbtqbW 5 Q R X W 5 Q R X t| }t|}|jd|ddd |d| |  tj|ddz}|jdddD ]*}|j	j
dkst|j	jd kstq|jdddD ]*}|j	j
dksHt|j	jdks2tq2W 5 Q R X W 5 Q R X d S )Nr   	   )	complevelr   r   z/dfLeafwhere	classnamezlib)complibr   ZdfcZblosc)r?   rE   z/dfc)r   r6   r	   r!   r   r#   r   	open_file
walk_nodesfiltersr?   r   rE   r   r7   r    )r$   r   tmpfiler(   Zh5filenoder'   r)   r)   r*   test_complibs_default_settings   sJ    

&

&

*
rK   c              
      s  t  }tjj}tds$|d tds8|d tdd  fdd|D }|D ]\}}t| }d}|j	||||d t
||}t || tj|d	d
}	|	jd| ddD ]>}
|
jj|kst|dkr|
jjd kstq|
jj|kstq|	  W 5 Q R X qXd S )NZlzobzip2r   
   c                    s   g | ]} D ]}||fqqS r)   r)   ).0liblvlZ
all_levelsr)   r*   
<listcomp>   s       z!test_complibs.<locals>.<listcomp>foo)rE   r?   r   r   /r@   rA   )r   r6   r   rH   all_complibsZwhich_lib_versionremoveranger	   r!   r   r#   rF   rG   r?   r   rE   r    )r$   r   rU   Z	all_testsrO   rP   rI   gnamer(   Zh5tablerJ   r)   rQ   r*   test_complibs   s*    






rY   z$reason platform is not little endian)reasonc              	   C   s   t | }tdddtdd}tj|jd< tj|jd< t|d |jd|d	d
 t	|d | |j
dgd}|dtdd	d
}t	|| W 5 Q R X d S )NrS   bar)AB   )index)   r\   )   r]   r   ascii)encodingr\   )columnsz	columns=A)r
   r   rW   npnanlocr   r7   r   r#   Zreindexselectr   )r$   r'   r   expectedr(   r)   r)   r*   test_encoding
  s    

rj   vals   E, 17       a   b   cs   EE, 17s   s   Adtypecategoryc           	   	      sz   d d}d} fdd|D }t ||d}t| $}|j||d |d t||}W 5 Q R X ||tj}t|| d S )	Nzlatin-1 datac                    s$   g | ]}t |tr| n|qS r)   )
isinstancebytesdecode)rN   xencr)   r*   rR   0  s     z'test_latin_encoding.<locals>.<listcomp>)rp   table)formatrc   nan_rep)	r   r	   r!   r   replacere   rf   r   Zassert_series_equal)	r$   rp   rk   r|   keyZserr'   ZretrZs_nanr)   rx   r*   test_latin_encoding  s    
r   c              
   C   sn  t | d}t }|j|dddd t|}d| ks<t|jsFt|  d| ks^t|jrhtW 5 Q R X t | }t	j
rt|}d}tjt|d t| W 5 Q R X |  nt|}t|}d| kstd| kst|jst|jst|  d| kst|jr*td| ks<t|jsHt|  d| ksbtd| kstt|jrt|jrtt|dd}|d| t|}|d	| |  d| kst|jrt|  d| kst|jrtt|dd}|d| t|}|  d| ks>t|jrJt|  d| ksdt|jrptW 5 Q R X t | }t }|j|dddd t|}|  d
}tjt|d |  W 5 Q R X tjt|d d|k W 5 Q R X tjt|d t| W 5 Q R X tjt|d |d  W 5 Q R X tjt|d |d W 5 Q R X tjt|d |d W 5 Q R X tjt|d |d	| W 5 Q R X tjt|d |d| W 5 Q R X tjt|d |d	 W 5 Q R X tjt|d |d	 W 5 Q R X tjt|d |d W 5 Q R X d}tjt|d |j W 5 Q R X W 5 Q R X d S )Nr   r   rz   )r   r{   ZCLOSEDzTThe file [\S]* is already opened\.  Please close it before reopening in write mode\.r   r   r4   z[\S]* file is not open!Zdf3z''HDFStore' object has no attribute 'df')r	   r   r6   r!   r   infor   r0   r    r   Z!_table_file_open_policy_is_strictr   r   r"   r7   r   keysr1   rh   getputZ
get_storerrV   AttributeErrorr   )r$   r&   r   r'   Zstore1r%   Zstore2r)   r)   r*   test_multiple_open_close<  s    


r   c               
   C   sD   t d0} t| }t|t| ks,tW 5 Q R X W 5 Q R X d S )Nzfoo.h5)r   r5   r   r8   fspathstrr   )r&   r'   r)   r)   r*   test_fspath  s    
r   )*r8   Znumpyre   r   Zpandas.compatr   Zpandasr   r   r   r   r   r   Zpandas.tests.io.pytables.commonr   r	   r
   r   Z	pandas.ior   Zpandas.io.pytablesr   r   r   markZ
single_cpuZ
pytestmarkZparametrizer+   r,   r3   r:   r=   rK   rY   Zskipifrj   rf   objectr   r   r   r)   r)   r)   r*   <module>   sN   
2	56% 



 