U
    +ifB4                     @   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   Z_handler   AssertionErrorcloseto_hdf
ValueErrorr   assert_frame_equal)
setup_pathr   r   msgpathstoreresult r(   ^/home/mars/bis/venv/lib/python3.8/site-packages/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    








r2   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       r9   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>   rD   z/dfc)r   r5   r	   r    r   r"   r   	open_file
walk_nodesfiltersr>   r   rD   r   r6   r   )r#   r   tmpfiler'   Zh5filenoder&   r(   r(   r)   test_complibs_default_settings   sJ    

&

&

*
rJ   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)rD   r>   r   r   /r?   r@   )r   r5   r   rG   all_complibsZwhich_lib_versionremoveranger	   r    r   r"   rE   rF   r>   r   rD   r   )r#   r   rT   Z	all_testsrN   rO   rH   gnamer'   Zh5tablerI   r(   rP   r)   test_complibs   s*    






rX   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 )NrR   bar)AB   )index)   r[   )   r\   r   ascii)encodingr[   )columnsz	columns=A)r
   r   rV   npnanlocr   r6   r   r"   Zreindexselectr   )r#   r&   r   expectedr'   r(   r(   r)   test_encoding
  s    

ri   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)rM   xencr(   r)   rQ   0  s     z'test_latin_encoding.<locals>.<listcomp>)ro   table)formatrb   nan_rep)	r   r	   r    r   replacerd   re   r   Zassert_series_equal)	r#   ro   rj   r{   keyZserr&   ZretrZs_nanr(   rw   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   ry   )r   rz   ZCLOSEDzTThe file [\S]* is already opened\.  Please close it before reopening in write mode\.r   r   r3   z[\S]* file is not open!Zdf3z''HDFStore' object has no attribute 'df')r	   r   r5   r    r   infor   r/   r   r   Z!_table_file_open_policy_is_strictr   r   r!   r6   r   keysr0   rg   getputZ
get_storerrU   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   r4   r   r7   fspathstrr   )r%   r&   r(   r(   r)   test_fspath  s    
r   )*r7   numpyrd   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+   r2   r9   r<   rJ   rX   Zskipifri   re   objectr~   r   r   r(   r(   r(   r)   <module>   sN   
2	56% 



 