U
    NZf1                     @   s  d dl Z d dlZd dlZd dlmZmZmZmZ d dl	m
Z
mZ d dlmZmZmZmZmZ d dlmZmZmZ d dlmZ d dl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de&dejdej'j(ej)dejj*e o"e o"e dd 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/d0e.gd1d2 Z/d3d4 Z0d5d6 Z1dS )7    N)PY311is_ci_environmentis_platform_linuxis_platform_little_endian)ClosedFileErrorPossibleDataLossError)	DataFrameHDFStoreSeries_testingread_hdf)_maybe_removeensure_clean_storetables)pytables)Termmoderr+awc              
   C   s  t  }d}||  }|dkrDtjt|d t||d W 5 Q R X n(t||d}|jj|ksbtW 5 Q R X ||  }|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 ||  }|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rnd}tjt
|d t|d|d W 5 Q R X nt|d|d}t || 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makeTimeDataFramepytestraisesOSErrorr	   _handler   AssertionErrorto_hdf
ValueErrorr   assert_frame_equal)
setup_pathtmp_pathr   r   msgpathstoreresult r+   O/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/io/pytables/test_file_handling.py	test_mode$   s8    

r-   c                 C   s:   t  }| | }|j|ddd t|d}t || d S )Nr   r   r   )r   r   r"   r   r$   )r&   r%   r   r(   r*   r+   r+   r,   test_default_modeU   s
    
r.   c              	   C   s  | | }t |dd}t |d< d}tjt|d |d W 5 Q R X |  |jrZt	|d |jsnt	t
|dks~t	|  |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r8t	|d |jsNt	t
|dks`t	|jdkspt	|  |jrt	d S )	Nr   r   zKRe-opening the file \[[\S]*\] with mode \[a\] will delete the current file!r   r   r   r      )r	   r   makeTimeSeriesr   r   r   opencloseis_openr!   len_mode)r&   r%   r(   r)   r'   r+   r+   r,   test_reopen_handle^   sD    








r6   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$   r2   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   r0   flush)r%   r)   r+   r+   r,   
test_flush   s    
r@   c              	   C   s  t  }| | }|j|ddd t|d}t || tj|dd:}|jdddD ]$}|jj	dksht
|jjd	ksTt
qTW 5 Q R X | | }|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 | | }||d t|d}t || tj|dd@}|jdddD ]*}|jj	dks^t
|jjd ksHt
qHW 5 Q R X d S )Nr   	   )	complevelr   r   /dfLeafwhere	classnamezlib)complibr   )r   r9   r"   r   r$   r   	open_file
walk_nodesfiltersrB   r!   rI   )r&   r%   r   tmpfiler*   h5filenoder+   r+   r,   test_complibs_default_settings   s2    


rP   c              	   C   s   t  }| | }t|}|jd|ddd |d| |  tj|ddn}|jdd	d
D ]$}|jj	dkspt
|jjd ks\t
q\|jdd	d
D ]$}|jj	dkst
|jjdkst
qW 5 Q R X d S )NZdfcrA   Zblosc)rB   rI   r   r   r   rC   rD   rE   r   z/dfc)r   r9   r	   r:   r2   r   rJ   rK   rL   rB   r!   rI   )r&   r%   r   rM   r)   rN   rO   r+   r+   r,   'test_complibs_default_settings_override   s    rQ   lvl
   libz!ignore:object name is not a validzSegfaulting in a CI environment)reasonc           	   	   C   s  t tdtdtdtjd}tds:t	
d tdsNt	
d | | d	| d
 }| d	| }|j||||d t||}t|| tj|ddX}|jd| ddD ]>}|jj|kst|dkr|jjd kstq|jj|kstqW 5 Q R X d S )N)      ABCDrV   )columnsindexZlzozlzo not availablebzip2zbzip2 not available_z.h5)rI   rB   r   r   /rD   rE   r   )r   npZoneslistZarangeZastypeZstr_r   Zwhich_lib_versionr   skipr"   r   r   r$   rJ   rK   rL   rB   r!   rI   )	r&   rR   rT   r   rM   gnamer*   Zh5tablerO   r+   r+   r,   test_complibs   s(      




rb   z$reason platform is not little endianc              	   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 )NZfoobar)AB   )rZ   )   rd   )   re   r   ascii)encodingrd   )rY   z	columns=A)r   r   ranger^   nanlocr   r:   r   r$   Zreindexselectr   )r%   r)   r   expectedr*   r+   r+   r,   test_encoding  s    

rp   vals   E, 17       a   b   cs   EE, 17s   s   Adtypecategoryc           
         sn   d d}d} fdd|D }t ||d}| | }|j||d |d t||}||tj}	t|	| d S )	Nzlatin-1 datac                    s$   g | ]}t |tr| n|qS r+   )
isinstancebytesdecode).0xencr+   r,   
<listcomp>3  s     z'test_latin_encoding.<locals>.<listcomp>)rv   table)formatrj   nan_rep)r
   r"   r   replacer^   rl   r   Zassert_series_equal)
r&   r%   rv   rq   r   keyZserr)   ZretrZs_nanr+   r   r,   test_latin_encoding  s    
r   c              	   C   sD  | | }t  }|j|dddd t|}d| ks:t|jsDt|  d| ks\t|jrft| | }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st|  d| kst|jrtd| ks*t|js6t|  d| ksPtd| ksbt|jrnt|jrztt|dd}|d| t|}|d	| |  d| kst|jrt|  d| kst|jrtt|dd}|d| t|}|  d| ks,t|jr8t|  d| ksRt|jr^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 d S )Nr   r   r   )r   r   ZCLOSEDzTThe file [\S]* is already opened\.  Please close it before reopening in write mode\.r   r   r7   z[\S]* file is not open!Zdf3z''HDFStore' object has no attribute 'df')r   r9   r"   r	   infor!   r3   r2   r   Z!_table_file_open_policy_is_strictr   r   r#   r:   r   keysr4   rn   getputZ
get_storerremoveAttributeErrorr   )r&   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   r8   r	   r;   fspathstrr!   )r(   r)   r+   r+   r,   test_fspath  s    
r   )2r;   Znumpyr^   r   Zpandas.compatr   r   r   r   Zpandas.errorsr   r   Zpandasr   r	   r
   r   r   r   Zpandas.tests.io.pytables.commonr   r   r   Z	pandas.ior   Zpandas.io.pytablesr   markZ
single_cpuZ
pytestmarkZparametrizer-   r.   r6   r=   r@   rP   rQ   rk   rL   Zall_complibsfilterwarningsZskipifrb   rp   rl   objectr   r   r   r+   r+   r+   r,   <module>   s^   
0	4'
 



