a
    GbB4                     @   sf  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g d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g dg dg dg dg d g d!g d"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   sp  t  }d}t| x}|dv rZtjt|d t||d W d    q~1 sN0    Y  n$t||d}|jj|ksvJ |	  W d    n1 s0    Y  t| }|dv rtjt|d< t||d}W d    n1 s0    Y  W d    n1 s0    Y  n@t||d"}|jj|ks.J W d    n1 sD0    Y  W d    n1 sd0    Y  t| }|dv rtjt|d  |j
|d|d W d    n1 s0    Y  |j
|ddd n|j
|d|d |dv r2d}tjt|d t|d|d W d    n1 s&0    Y  nt|d|d}t || W d    n1 sb0    Y  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   closeto_hdf
ValueErrorr   assert_frame_equal)
setup_pathr   r   msgpathstoreresult r'   Jlib/python3.9/site-packages/pandas/tests/io/pytables/test_file_handling.py	test_mode    s:    
,&

@R

0
0r)   c                 C   sZ   t  }t| 6}|j|ddd t|d}t || W d    n1 sL0    Y  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 d    n1 sV0    Y  |  |j	rrJ |d |j	sJ t
|dksJ |  |j	rJ t|dd}t |d< |d |j	sJ t
|dksJ |jdksJ |  |j	rJ |d |j	sJ t
|dks.J |jdks>J |  |j	rRJ |d |j	shJ t
|dkszJ |jdksJ |  |j	rJ W d    n1 s0    Y  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_openlen_mode)r"   r$   r%   r#   r'   r'   r(   test_reopen_handle\   sD    (







r1   c                 C   s   t | d}t  }t|dddd}||d< |d| t |d | t |d | |  W d    n1 st0    Y  tj	|rJ d S )Nr   Z	H5FD_COREr   )r   ZdriverZdriver_core_backing_storer   df2)
r   ensure_cleanmakeDataFramer   appendr!   r   osr$   exists)r"   r$   r   r%   r'   r'   r(   test_open_args   s    &r8   c                 C   sL   t | 0}t |d< |  |jdd W d    n1 s>0    Y  d S )Nr   T)fsync)r
   r   r,   flush)r"   r%   r'   r'   r(   
test_flush   s    
r;   c              	   C   s(  t  }t| }|j|ddd t|d}t || tj|ddD}|jdddD ]$}|j	j
dksjJ |j	jd	ksVJ qVW d    n1 s0    Y  W d    n1 s0    Y  t| }|j|dd	d
 t|d}t || tj|ddJ}|jdddD ]*}|j	j
dksJ |j	jd u sJ qW d    n1 sH0    Y  W d    n1 sh0    Y  t| }||d t|d}t || tj|ddJ}|jdddD ]*}|j	j
dksJ |j	jd u sJ qW d    n1 s0    Y  W d    n1 s0    Y  t| }t|}|jd|ddd |d| |  tj|dd}|jdddD ]*}|j	j
dksJ |j	jd u s~J q~|jdddD ]*}|j	j
dksJ |j	jdksJ qW d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   	   )	complevelr   r   z/dfLeafwhereZ	classnamezlib)complibr   ZdfcZblosc)r=   rB   z/dfc)r   r4   r	   r   r   r!   r   	open_file
walk_nodesfiltersr=   rB   r   r5   r   )r"   r   tmpfiler&   Zh5filenoder%   r'   r'   r(   test_complibs_default_settings   sJ    

N

V

V
rH   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sJ |dkr|
jjd u sJ q|
jj|ksJ q|	  W d    qX1 s0    Y  qXd S )NZlzoZbzip2r   
   c                    s   g | ]} D ]}||fqqS r'   r'   ).0liblvlZ
all_levelsr'   r(   
<listcomp>       z!test_complibs.<locals>.<listcomp>foo)rB   r=   r   r   /r>   r?   )r   r4   r   rE   all_complibsZwhich_lib_versionremoveranger	   r   r   r!   rC   rD   r=   rB   r   )r"   r   rR   Z	all_testsrK   rL   rF   Zgnamer&   Zh5tablerG   r'   rM   r(   test_complibs   s*    






rU   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    n1 s0    Y  d S )NrP   Zbar)AB   )index)   rW   )   rX   r   ascii)encodingrW   )columnsz	columns=A)r
   r   rT   npnanZlocr   r5   r   r!   Zreindexselectr   )r"   r%   r   Zexpectedr&   r'   r'   r(   test_encoding
  s    

rc   val)   E, 17rO      a   b   c)re   rf   rg   rh   )s   EE, 17rO   rf   rg   rh   )re      rf   rg   rh   )rO   rf   rg   rh   )ri   rf   rg   rh   )   ArO   rf   rg   rh   rO   rg   rh   rj   dtypecategoryc           	         s   d d}d} fdd|D }t ||d}t| .}|j||d |d t||}W d    n1 sf0    Y  ||tj}t|| d S )	Nzlatin-1 datac                    s$   g | ]}t |tr| n|qS r'   )
isinstancebytesdecode)rJ   xencr'   r(   rN   0  rO   z'test_latin_encoding.<locals>.<listcomp>)rk   table)formatr^   nan_rep)	r   r	   r   r   replacer`   ra   r   Zassert_series_equal)	r"   rk   rd   rw   keyZserr%   ZretrZs_nanr'   rs   r(   test_latin_encoding  s    
(rz   c              	   C   s  t | n}t }|j|dddd t|}d| vs<J |jsFJ |  d| v s^J |jrhJ W d    n1 s|0    Y  t | }tj	rt|}d}t
jt|d t| W d    n1 s0    Y  |  nt|}t|}d| vsJ d| vsJ |js&J |js2J |  d| v sLJ |jrXJ d| vsjJ |jsvJ |  d| v sJ d| v sJ |jrJ |jrJ t|dd}|d| t|}|d	| |  d| v s J |jrJ |  d| v s&J |jr2J t|dd}|d| t|}|  d| v slJ |jrxJ |  d| v sJ |jrJ W d    n1 s0    Y  t | }t }|j|dddd t|}|  d
}t
jt|d |  W d    n1 s&0    Y  t
jt|d d|v  W d    n1 s^0    Y  t
jt|d t| W d    n1 s0    Y  t
jt|d |d  W d    n1 s0    Y  t
jt|d |d W d    n1 s0    Y  t
jt|d |d W d    n1 sB0    Y  t
jt|d |d	| W d    n1 s~0    Y  t
jt|d |d| W d    n1 s0    Y  t
jt|d |d	 W d    n1 s0    Y  t
jt|d |d	 W d    n1 s.0    Y  t
jt|d |d W d    n1 sh0    Y  d}t
jt|d |j W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   r   ru   )r   rv   ZCLOSEDzTThe file [\S]* is already opened\.  Please close it before reopening in write mode\.r   r   r2   z[\S]* file is not open!Zdf3z''HDFStore' object has no attribute 'df')r	   r   r4   r   r   infor.   r   r   Z!_table_file_open_policy_is_strictr   r   r    r5   r   keysr/   rb   getZputZ
get_storerrS   AttributeErrorr   )r"   r$   r   r%   Zstore1r#   Zstore2r'   r'   r(   test_multiple_open_close<  s    

(&,((((**,,***r   c               	   C   sl   t dN} t| &}t|t| ks,J W d    n1 s@0    Y  W d    n1 s^0    Y  d S )Nzfoo.h5)r   r3   r   r6   fspathstr)r$   r%   r'   r'   r(   test_fspath  s    
r   )*r6   Z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   ZmarkZ
single_cpuZ
pytestmarkZparametrizer)   r*   r1   r8   r;   rH   rU   Zskipifrc   ra   objectrz   r   r   r'   r'   r'   r(   <module>   sL   
2	56%
 