B
    Y0d4                 @   sp  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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Termc                sN   t    fdd} fdd}|d |d |d |d |  d S )	Nc                s  d}t Z}| dkr>tjt|d t|| d W d Q R X n$t|| d}|jj| ksZt|  W d Q R X t j}| dkrtjt|d t|| d}W d Q R X W d Q R X n(t|| d}|jj| kstW d Q R X W d Q R X t }| dkr4tjt|d  j	|d| d W d Q R X  j	|ddd n j	|d| d | dkr|d}tjt
|d t|d| d W d Q R X nt|d| d}t|  W d Q R X d S )	Nz[\S]* does not exist)rzr+)match)modedfw)r   zNmode w is not allowed while performing a read. Allowed modes are r, r\+ and a.)r	   pytestraisesIOErrorr   Z_handler   AssertionErrorcloseto_hdf
ValueErrorr   tmassert_frame_equal)r   msgpathstoreresult)r   
setup_path ]/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/io/pytables/test_file_handling.pycheck$   s6    

$


ztest_mode.<locals>.checkc           	      s>   t ,}  j| ddd t| d}t|  W d Q R X d S )Nr   r   )r   )r	   r   r   r   r   )r   r!   )r   r"   r#   r$   check_default_modeT   s    

z%test_mode.<locals>.check_default_moder   zr+ar   )r   ZmakeTimeDataFrame)r"   r%   r&   r#   )r   r"   r$   	test_mode    s    0r(   c          
   C   s  t | }t|dd}t |d< d}tjt|d |d W d 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 d 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_handlec   sB    








r/   c          	   C   s~   t | Z}t  }t|dddd}||d< |d| t |d | t |d | |  W d 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    r6   c          	   C   s8   t | &}t |d< |  |jdd W d Q R X d S )Nr'   T)fsync)r
   r   r*   flush)r"   r    r#   r#   r$   
test_flush   s    
r9   c          
   C   s  t  }t| ~}|j|ddd t|d}t || tj|dd>}x6|jdddD ]$}|j	j
dkslt|j	jd	ksXtqXW W d Q R X W d Q R X t| ~}|j|dd	d
 t|d}t || tj|dd>}x6|jdddD ]$}|j	j
dkst|j	jd kstqW W d Q R X W d Q R X t| }||d t|d}t || tj|ddD}x<|jdddD ]*}|j	j
dkst|j	jd ksltqlW W d Q R X W d Q R X t| }t|}|jd|ddd |d| |  tj|dd}x<|jdddD ]*}|j	j
dkst|j	jd kstqW x<|jdddD ]*}|j	j
dksZt|j	jdksDtqDW W d Q R X W d Q R X d S )Nr   	   )	complevelr   )r   z/dfLeaf)where	classnamezlib)complibr   ZdfcZblosc)r;   r@   z/dfc)r   r2   r	   r   r   r   r   	open_file
walk_nodesfiltersr;   r   r@   r   r3   r   )r"   r   tmpfiler!   Zh5filenoder    r#   r#   r$   test_complibs_default_settings   sJ    

(

(

,
rF   c          
      s  t  }tjj}tds$|d tds8|d tdd  fdd|D }x|D ]\}}t| }d}|j	||||d t
||}t || tj|d	d
}	xT|	jd| ddD ]>}
|
jj|kst|dkr|
jjd kstq|
jj|kstqW |	  W d Q R X qZW d S )NZlzobzip2r   
   c                s   g | ]} D ]}||fqqS r#   r#   ).0liblvl)
all_levelsr#   r$   
<listcomp>   s    z!test_complibs.<locals>.<listcomp>foo)r@   r;   r   )r   /r<   )r=   r>   )r   r2   r   rC   all_complibsZwhich_lib_versionremoveranger	   r   r   r   rA   rB   r;   r   r@   r   )r"   r   rP   Z	all_testsrJ   rK   rD   gnamer!   Zh5tablerE   r#   )rL   r$   test_complibs   s*    






rT   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 d Q R X d S )NrN   bar)AB   )index)   rW   )   rX   r   ascii)encodingrW   )columnsz	columns=A)r
   r   rR   npnanlocr   r3   r   r   Zreindexselectr   )r"   r    r   expectedr!   r#   r#   r$   test_encoding  s    

re   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 d Q R X ||tj}t|| d S )	Nzlatin-1 datac                s$   g | ]}t |tr| n|qS r#   )
isinstancebytesdecode)rI   x)encr#   r$   rM   7  s    z'test_latin_encoding.<locals>.<listcomp>)rk   table)formatr^   nan_rep)	r   r	   r   r   replacer`   ra   r   Zassert_series_equal)	r"   rk   rf   rv   keyZserr    ZretrZs_nanr#   )rs   r$   test_latin_encoding#  s    
ry   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 d Q R X t | }t	j
rt|}d}tjt|d t| W d 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 d Q R X t | }t }|j|dddd t|}|  d
}tjt|d |  W d Q R X tjt|d d|k W d Q R X tjt|d t| W d Q R X tjt|d |d  W d Q R X tjt|d |d W d Q R X tjt|d |d W d Q R X tjt|d |d	| W d Q R X tjt|d |d| W d Q R X tjt|d |d	 W d Q R X tjt|d |d	 W d Q R X tjt|d |d W d Q R X d}tjt|d |j W d Q R X W d Q R X d S )Nr   r   rt   )r   ru   ZCLOSEDzTThe file [\S]* is already opened\.  Please close it before reopening in write mode\.)r   )r   r0   z[\S]* file is not open!Zdf3z''HDFStore' object has no attribute 'df')r	   r   r2   r   r   infor   r,   r   r   Z!_table_file_open_policy_is_strictr   r   r   r3   r   keysr-   rc   getputZ
get_storerrQ   AttributeErrorr   )r"   r   r   r    Zstore1r   Zstore2r#   r#   r$   test_multiple_open_closeC  s    


r   c           
   C   sD   t d0} t| }t|t| ks,tW d Q R X W d Q R X d S )Nzfoo.h5)r   r1   r   r4   fspathstrr   )r   r    r#   r#   r$   test_fspath  s    
r   ))r4   numpyr`   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singleZ
pytestmarkr(   r/   r6   r9   rF   rT   Zskipifre   Zparametrizera   objectry   r   r   r#   r#   r#   r$   <module>   s>   C56%


 