3
Ud"                @   sl  d dl Z d dl mZ d dlmZ d dlZd dlmZ d dlZd dlm	Z	 d dl
Z
d dlZd dlmZmZ d dlZd dlZd dlmZmZ d dljjZd dlZd dlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*j+Z,d d	l-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4 d d
l5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z< d dl5m=Z= dZ>ej?j@dZAej?jBG dd dZCdS )    N)	timedelta)LooseVersion)BytesIO)Path)catch_warningssimplefilter)is_platform_little_endianis_platform_windows)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndex
Int64Index
MultiIndex
RangeIndexSeries	Timestampbdate_rangeconcat
date_rangeisnatimedelta_range)_maybe_removecreate_tempfileensure_clean_pathensure_clean_store
safe_closesafe_removetables)ClosedFileErrorHDFStorePossibleDataLossErrorTermread_hdf)pytables)TableIteratorbloscz7ignore:object name:tables.exceptions.NaturalNameWarningc               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zedd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zejjd+d,d-d.he fe d/d0hfd1hd2d3hfe d4hfd5fd6d1hd2d3hfe d4hfd7fgd8d9 Zd:d; Zd<d= Zd>d? Z d@dA Z!e"j#dBdC Z$dDdE Z%dFdG Z&dHdI Z'e"j(dJdK Z)ejj*dLdMdN Z+dOdP Z,dQdR Z-ejj.e/  dSdTdUdV Z0ejjdWdXdYdZd[d\gdXdZd[d\gd]dYdZd[d\gdXd^dZd[d\gdYdZd[d\gd^dZd[d\gd_dYdZd[d\ge1j2dYd[d\gd_e1j2dYd[d\gg	ejjd`dae3gdbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;drds Z<dtdu Z=ejjdvej>dwe"j(dxdygdzd{ Z?d|d} Z@d~d ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHe"j(dd ZIdd ZJdd ZKdd ZLdd ZMdd ZNe"j(ejj.eOe1jPeOdkddTdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXe"j(dd ZYe"j(ejj*ddd ZZdd Z[e"j(ejjddej>de"j#dxgdd Z\e"j(dd Z]e"j(ejjd`e1j^e1j_e3ddgdd Z`dd Zadd ZbddÄ Zcddń ZdejjddydwgddȄ Zeddʄ Zfe"j(ejjddej>de"j#dxgdd̄ Zgejj*d̓ddτ Zhddф Ziddӄ ZjddՄ Zkddׄ Zlddل Zmddۄ Zndd݄ Zodd߄ Zpejj*ddd Zqejj*ddd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{ejj|ddddd Z}dd Z~dd Zejj.eOejPeOdk d dTdd Zdd Zdd Zdd Zd	d
 Zdd Zejjdd}d~dgdd Zdd Zdd Zdd ZdddZdddZdddZd d! Zd"d# Zejj.e d$dTd%d& Ze"j(d'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Ze"j(d9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZedMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Ze"jdadbdc Zddde Zdfdg Zejjdvdwdygdhdi Zdjdk Zdldm Zejjdndof dg dggdpdq Zejjdredsdtdudvdweedxgdydz Zd{d| ZdS (  TestHDFStorec             C   s   t jdddgi}t|b}t|N}|jd|dd |jd|dd |jdjdksZt|jdjdksntW d Q R X W d Q R X d S )	NA      afixed)formatbtable)pdr   r   r!   put
get_storerZformat_typeAssertionError)self
setup_pathdfpathstore r:   W/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/io/pytables/test_store.pytest_format_typeC   s    

zTestHDFStore.test_format_typec             C   sB   d}t |,}tjt|d t|dd W d Q R X W d Q R X d S )Nz-format is not a defined argument for HDFStore)matchr0   )r.   )r   pytestraises
ValueErrorr!   )r5   r6   msgr8   r:   r:   r;    test_format_kwarg_in_constructorM   s    
z-TestHDFStore.test_format_kwarg_in_constructorc          *   C   s   t |}z:y t|}tdW d Q R X W n tk
r>   Y nX W d t| X z\t|}tj |d< W d Q R X t|*}t|dkstt|d t	kstW d Q R X W d t| X d S )NZblahr,   r*   )
r   r!   r@   r   tmmakeDataFramelenr4   typer   )r5   r6   r8   Ztblr:   r:   r;   test_contextV   s    




"zTestHDFStore.test_contextc                s   t | z fdd}tj }tj||d| tj }tj||d| tj }tj||d| ttt	dt	dd}|j
 dd	d
 t ddgd}tj||jdk | W d t  X d S )Nc                s   |j  | f| t | S )N)to_hdfr$   )keyobjkwargs)r8   r:   r;   	roundtripn   s    z4TestHDFStore.test_conv_read_write.<locals>.roundtripseriesZstring_seriesframe   )r)   Br0   T)appendzindex>2)wherer+   )r   rC   makeTimeSeriesassert_series_equalmakeStringSeriesrD   assert_frame_equalr   dictrangerH   r$   indexr   )r5   r6   rL   or7   resultr:   )r8   r;   test_conv_read_writej   s    z!TestHDFStore.test_conv_read_writec             C   sd   t dtjddditjdddd}t|.}|jd|dgd |jd}tj|| W d Q R X d S )Nr,   d   
   )size)rY   r7   )data_columns)r   rC   Zrands_arrayr   rQ   selectrV   )r5   r6   r7   r9   r[   r:   r:   r;   test_long_strings   s    "

zTestHDFStore.test_long_stringsc          I   C   s  t |}tj }|jd d j|dddd |jdd  j|dddd tjt|d| |jd d j|dddd |jdd  j|dddd tjt|d| W d Q R X t |}tj }|jd d j|ddd |jdd  j|dddd tjt|d| |jd d j|dddd |jdd  j|ddd tjt|d| W d Q R X t |}tj }|j|dddd tjt|d| |j|ddd	d tjt|d| |j|ddd tjt|d| |j|d tjt|d| W d Q R X t|d}|j}tj }t	|d |j
d|jd d ddd |j
d|jdd  ddd tj|jd| t	|d |j
d|jd d ddd |j
d|jdd  ddd tj|jd| t	|d |j
d|jd d ddd |j
d|jdd  ddd tj|jd| t	|d |j
d|jd d ddd |j
d|jdd  dd d tj|jd| W d Q R X t |}tj }d
}tjt|d |j|ddd	d W d Q R X tjt|d |j|dddd W d Q R X d}tjt|d |j|dddd W d Q R X tjt|d |j|dddd W d Q R X W d Q R X d}d| d}tjt|d t|d W d Q R X d S )Nr^   r7   Tr0   )rQ   r.   F)rQ   r-   fzCan only append to Tables)r=   z)invalid HDFStore format specified \[foo\]foo zFile z does not exist)r   rC   rD   ilocrH   rV   r$   r   _pathr   rQ   ra   r>   r?   r@   	TypeErrorFileNotFoundError)r5   r6   r8   r7   r9   rA   r:   r:   r;   test_api   sz    







&zTestHDFStore.test_apic          4   C   s  t |}tj }tjdd t|d |jd| |jdj sFt	d}t
jt|d |jd| W d Q R X tjdd t|d |jd| |jdjst	t|d |jd| |jdjst	tjdd  W d Q R X t|}tj }tjdd |j|d t|}|jdj s&t	W d Q R X t
jt|d |j|ddd	 W d Q R X tjdd |j|d
 t|}|jd
jst	W d Q R X |j|ddd	 t|}|jdjst	W d Q R X tjdd  W d Q R X d S )Nzio.hdf.default_formatr-   r7   zCan only append to Tables)r=   df2r0   T)rQ   df3df4)r   rC   rD   r1   
set_optionr   r2   r3   is_tabler4   r>   r?   r@   rQ   r   rH   r!   )r5   r6   r9   r7   rA   r8   r:   r:   r;   test_api_default_format   sB    







z$TestHDFStore.test_api_default_formatc          
   C   sz   t |h}tj |d< tj |d< tj |d< t|dks>tdddh}t|j |ks\tt||ksltW d Q R X d S )Nr,   r/   c   z/az/bz/c)	r   rC   rS   rU   rD   rE   r4   setkeys)r5   r6   r9   expectedr:   r:   r;   	test_keys!  s    

zTestHDFStore.test_keysc                sl   t jdfdd  fdd}|dd}|dd}tjd	 |dd}|dd}||ks\t||kshtd S )
N   c                sN   | t | d0x(t fdddD ]}j| q*W W d Q R X j S )Nrbc                  s   j  j S )N)read
block_sizer:   )chunk_num_blocksrc   hr:   r;   <lambda>5  s    zDTestHDFStore.test_no_track_times.<locals>.checksum.<locals>.<lambda>    )openiterupdatedigest)filenameZhash_factoryr{   chunkr:   )r{   rc   r|   r;   checksum2  s
    z2TestHDFStore.test_no_track_times.<locals>.checksumc                s\   t J}tjddgi}tj|dd}|jd|ddd | d W d Q R X  |S Q R X d S )Nr,   r*   w)moder0   T)r.   r`   rY   track_times)r   r1   r   r!   r2   )r   r8   r7   Zhdf)r   r6   r:   r;   create_h5_and_return_checksum9  s    
zGTestHDFStore.test_no_track_times.<locals>.create_h5_and_return_checksumF)r   Tr*   )hashlibmd5timesleepr4   )r5   r6   r   Zchecksum_0_tt_falseZchecksum_0_tt_trueZchecksum_1_tt_falseZchecksum_1_tt_truer:   )r   r6   r;   test_no_track_times-  s    




z TestHDFStore.test_no_track_timesc             C   s6  G dd dt j}G dd dt j}G dd dt j}t|}t j|ddB}|jd	d
}|j|d|d |j|d|d |j|d|d W d Q R X t|}t|jdddkst	dddh}	t
|jdd|	kst	t
|jddt
 kst	x(|	D ] }
|j|
}t|jdkst	qW W d Q R X W d Q R X d S )Nc               @   s   e Zd Zej ZdS )z1TestHDFStore.test_non_pandas_keys.<locals>.Table1N)__name__
__module____qualname__r   
Float32ColZvalue1r:   r:   r:   r;   Table1Y  s   r   c               @   s   e Zd Zej ZdS )z1TestHDFStore.test_non_pandas_keys.<locals>.Table2N)r   r   r   r   r   Zvalue2r:   r:   r:   r;   Table2\  s   r   c               @   s   e Zd Zej ZdS )z1TestHDFStore.test_non_pandas_keys.<locals>.Table3N)r   r   r   r   r   Zvalue3r:   r:   r:   r;   Table3_  s   r   r   )r   /groupZtable1zTable 1Ztable2zTable 2Ztable3zTable 3Znative)includerr   z/group/table1z/group/table2z/group/table3pandasr*   )r   ZIsDescriptionr   	open_filecreate_groupcreate_tabler!   rE   rt   r4   rs   getcolumns)r5   r6   r   r   r   r8   h5filer   r9   ru   namer7   r:   r:   r;   test_non_pandas_keysX  s"    




z!TestHDFStore.test_non_pandas_keysc             C   s>   t |,}tjtdd |jdd W d Q R X W d Q R X d S )Nz@`include` should be either 'pandas' or 'native' but is 'illegal')r=   illegal)r   )r   r>   r?   r@   rt   )r5   r6   r9   r:   r:   r;   'test_keys_illegal_include_keyword_valueq  s
    

z4TestHDFStore.test_keys_illegal_include_keyword_valuec             C   st   t |b}tttdtdd}|jd| |j dgks@t|jj|jj	dd |j dgksftW d Q R X d S )NrO   )r)   rP   r7   z/dfsymlink)
r   r   rW   rX   r2   rt   r4   _handleZcreate_soft_linkroot)r5   r6   r9   r7   r:   r:   r;   test_keys_ignore_hdf_softlinkz  s    
z*TestHDFStore.test_keys_ignore_hdf_softlinkc          	   C   s(   t |}t|g kstW d Q R X d S )N)r   listr4   )r5   r6   r9   r:   r:   r;   test_iter_empty  s    
zTestHDFStore.test_iter_emptyc             C   s  t |h}t| |j  tj |d< tj |d< tj |d< tj }d|d< d|d< |d d	k|d
< |d d	k|d< d|d< d|d< d|d< td|d< td|d< tjdddd	d	|d< tjdddd	d	|d< t	j
|j|jdd dgf< |j jdd}tdd tdtjj ||d< W d Q R X |jj|jjd  |jt|ksRt|jt|ksft|j  W d Q R X t |4}tj }|jd| |jd}t| t| W d Q R X d S )!Nr,   r/   rq   rd   obj1barobj2r)   r   bool1rP   bool2Tbool3r*   int1r+   int220010102
timestamp120010103
timestamp2i  	datetime1rr   	datetime2   )datetime)recordignorer7   bah)r   reprinforC   rS   rU   rD   r   r   npnanlocrY   _consolidate_convertr   r   r1   errorsPerformanceWarningr   r   r   r   r4   strrQ   r3   )r5   r6   r9   r7   sr:   r:   r;   	test_repr  sB    

zTestHDFStore.test_reprc             C   s   t |}tj |d< tj |d< tj |d< d|ks:td|ksFtd|ksRtd|ks^td|ksjtd|ksvtd|ksttdd	 tj |d
< W d Q R X d
|kstW d Q R X d S )Nr,   r/   zfoo/barrq   z/foo/barz/foo/br   T)r   znode()))r   rC   rS   rD   r4   r   )r5   r6   r9   r:   r:   r;   test_contains  s    
zTestHDFStore.test_containsc             C   s   t |}tj |d< tj |d< tj }t|d |jd|d d  |jd|dd   |jjj	j
dkspt|jjj	j
dkst|jjj	j
dkstt|d |jd| d |jdj	_
d}tjt|d |jd W d Q R X W d Q R X d S )	Nr,   r/   df1r^   z0.15.2rk   z/'NoneType' object has no attribute 'startswith')r=   )r   rC   rS   rD   makeTimeDataFramer   rQ   r   r,   Z_v_attrsZpandas_versionr4   r/   r   Zget_noder>   r?   	Exceptionra   )r5   r6   r9   r7   rA   r:   r:   r;   test_versioning  s     


zTestHDFStore.test_versioningc                sN   t j   fdd} fdd}|d |d |d |d |  d S )	Nc          =      s  t V}| dkr6tjt t|| d W d Q R X n$t|| d}|jj| ksRt|j  W d Q R X t f}| d	krtjt 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r$tjt  j	|d| d W d Q R X  j	|ddd n j	|d| d | dkrld}tjt
|d t|d| d W d Q R X nt|d| d}tj|  W d Q R X d S )Nrr+)r   r7   r   zNmode w is not allowed while performing a read. Allowed modes are r, r\+ and a.)r=   )r   r   )r   r   )r   r   )r   )r   r>   r?   IOErrorr!   r   r   r4   closerH   r@   r$   rC   rV   )r   r8   r9   rA   r[   )r7   r6   r:   r;   check  s4    

$


z%TestHDFStore.test_mode.<locals>.checkc                 s>   t ,}  j| ddd t| d}tj|  W d Q R X d S )Nr7   r   )r   )r   rH   r$   rC   rV   )r8   r[   )r7   r6   r:   r;   check_default_mode  s    

z2TestHDFStore.test_mode.<locals>.check_default_moder   zr+r,   r   )rC   r   )r5   r6   r   r   r:   )r7   r6   r;   	test_mode  s    /zTestHDFStore.test_modec             C   s  t |}t|dd}tj |d< tjt |jd W d Q R X |j  |j	 sXt
|jd |j	slt
t|dks|t
|j  |j	 st
t|dd}tj |d< |jd |j	st
t|dkst
|jdkst
|j  |j	 st
|jd |j	st
t|dkst
|jdks&t
|j  |j	 s<t
|jd |j	sRt
t|dksdt
|jdkstt
|j  |j	 st
W d Q R X d S )Nr,   )r   r   r   r   r*   )r   r!   rC   rS   r>   r?   r"   r   r   is_openr4   rE   _mode)r5   r6   r8   r9   r:   r:   r;   test_reopen_handle-  s@    





zTestHDFStore.test_reopen_handlec             C   s~   t |l}tj }t|dddd}||d< |jd| tj|d | tj|d | |j  tjj	| spt
W d Q R X d S )Nr,   Z	H5FD_COREr   )r   ZdriverZdriver_core_backing_storer7   rk   )r   rC   rD   r!   rQ   rV   r   osr8   existsr4   )r5   r6   r8   r7   r9   r:   r:   r;   test_open_args]  s    
zTestHDFStore.test_open_argsc          
   C   s8   t |&}tj |d< |j  |jdd W d Q R X d S )Nr,   T)fsync)r   rC   rS   flush)r5   r6   r9   r:   r:   r;   
test_flushr  s    
zTestHDFStore.test_flushc             C   s   t |r}tj |d< |jd}|d }tj|| |jd}|d }tj|| tjtdd |jd W d Q R X W d Q R X d S )Nr,   z/az'No object named b in the file')r=   r/   )r   rC   rS   r   rT   r>   r?   KeyError)r5   r6   r9   leftrightr:   r:   r;   test_gety  s    


zTestHDFStore.test_getzwhere, expectedr   Zfirst_groupZsecond_groupr   rk   Zthird_grouprl   s1rm   )re   z/first_groupz/second_groupz/second_group/third_groupz/second_group)z/second_groupz/second_group/third_groupc             C   s  t jdddgt jdddgt jdddgt jd	d
dgt jd
d	dgtjdddgdddggtjd&d'gddtjd(d)gddd}tdddh}|jd|d  |jd|d  |jd|d  |jd|d  |jd|d  |jjdd|d  |jj	dd|d d  |jj	d!d"|d" d  t
t|j|d#t
|ksFtx|j|d#D ]\}}}||kslt|| \}	}
|	t|kst|
t|kstxR|D ]J}d$j||g}|j|}d%|krtj|||  ntj|||  qW qTW W d Q R X d S )*Nr*   r+   rr      rO   r         	   r^      zi,i,i)dtype   )r   rk   rl   rm   r   a1tb1tb2zwalk_groups.hdfr   )r   z/first_group/df1r   z/first_group/df2rk   z/second_group/df3rl   z/second_group/s1r   z/second_group/third_group/df4rm   z/first_groupr   r   )rJ   z/second_groupr   )rR   r   r7   )r*   r+   rr   )r   rO   r   )r   r   r   )r^   r   r   )r1   r   r   r   arrayr   r2   r   Zcreate_arrayr   rE   r   walkr4   rs   joinr   rC   rV   rT   )r5   rR   ru   r6   objsr9   r8   groupsZleavesZexpected_groupsZexpected_framesZleafZ
frame_pathrJ   r:   r:   r;   	test_walk  s:    "


zTestHDFStore.test_walkc             C   s   t |}tj }||d< |j}tj|| t|d}tj|| tj }||d< |j}tj|| x,d	D ]$}t	j
t t|| W d Q R X qjW xd
D ]}t|d|  qW W d Q R X d S )Nr,   r7   dr   r8   handlecomplib_)r   r   r8   r   r   )r   r8   r   r   )r   rC   rS   r,   rT   getattrr   r7   rV   r>   r?   AttributeError)r5   r6   r9   r   r[   r7   xr:   r:   r;   test_getattr  s     



zTestHDFStore.test_getattrc          "   C   sP  t |<}tj }tj }||d< |d d |d< |d d |d< |d d |d< |d d |d< |jd|d d dd	 tjt |jd|dd  d
d W d Q R X t|d tjt |jd|dd  d
d W d Q R X tjt |jd|dd  d
d W d Q R X |jd|d d ddd tj	|d d |d  W d Q R X d S )Nr,   r^   r/   zfoo/bar/bahrd   z/foorq   r0   )r.   T)rQ   rc   F)r.   rQ   )
r   rC   rS   r   r2   r>   r?   r@   r   rV   )r5   r6   r9   tsr7   r:   r:   r;   test_put  s$    "
""zTestHDFStore.test_putc             C   s   t |}tdd tdD }ttjd|d}t||d}||d< tj|d | ||d< tj	|d | tdgd	d tdD  }ttjd
|d}t||d}||d< tj|d | ||d< tj	|d | W d Q R X d S )Nc             S   s   g | ]}d | qS )zI am a very long string index: r:   ).0ir:   r:   r;   
<listcomp>  s    z6TestHDFStore.test_put_string_index.<locals>.<listcomp>   )rY   )r)   rP   r,   r/   Z$abcdefghijklmnopqrstuvwxyz1234567890c             S   s   g | ]}d | qS )zI am a very long string index: r:   )r   r   r:   r:   r;   r     s       )
r   r   rX   r   r   aranger   rC   rT   rV   )r5   r6   r9   rY   r   r7   r:   r:   r;   test_put_string_index  s"    
z"TestHDFStore.test_put_string_indexc             C   sj   t |X}tj }|jd|ddd tj|d | tjt |jd|ddd W d Q R X W d Q R X d S )Nrq   r0   zlib)r.   r   r/   r-   )r   rC   r   r2   rV   r>   r?   r@   )r5   r6   r9   r7   r:   r:   r;   test_put_compression  s    
z!TestHDFStore.test_put_compressionc             C   sj   t j }t|P}tjt |jd|ddd W d Q R X |jd|ddd t j|d | W d Q R X d S )Nr/   r-   r'   )r.   r   rq   r0   )rC   r   r   r>   r?   r@   r2   rV   )r5   r6   r7   r9   r:   r:   r;   test_put_compression_blosc%  s    
z'TestHDFStore.test_put_compression_bloscc          <   C   s  t j }t|}|j|ddd tj|d}t j|| tj|dd>}x6|j	dddD ]$}|j
jdksnt|j
jd	ksZtqZW W d Q R X W d Q R X t|}|j|dd	d
 tj|d}t j|| 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|}|j|d tj|d}t j|| tj|ddD}x<|j	dddD ]*}|j
jdkst|j
jd ksrtqrW W d Q R X W d Q R X t|}tj|}|jd|ddd |jd| |j  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sbt|j
jdksLtqLW W d Q R X W d Q R X d S )Nr7   r   )	complevelr   )r   z/dfLeaf)rR   	classnamer  )r   r   Zdfcr'   )r  r   z/dfc)rC   rD   r   rH   r1   r$   rV   r   r   
walk_nodesfiltersr  r4   r   r!   rQ   r   )r5   r6   r7   tmpfiler[   r   noder9   r:   r:   r;   test_complibs_default_settings2  sJ    
(
(
,

z+TestHDFStore.test_complibs_default_settingsc                s  t j }tjj}tjds$|jd tjds8|jd tdd  fdd|D }x|D ]\}}t|}d}|j	||||d t
j||}	t j|	| 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 |
j  W d Q R X qZW d S )NZlzobzip2r   r^   c                s   g | ]} D ]}||fqqS r:   r:   )r   liblvl)
all_levelsr:   r;   r   u  s    z.TestHDFStore.test_complibs.<locals>.<listcomp>rd   )r   r  r   )r   r   r  )rR   r	  )rC   rD   r   r  all_complibsZwhich_lib_versionremoverX   r   rH   r1   r$   rV   r   r
  r  r4   r   r   )r5   r6   r7   r  Z	all_testsr  r  r  gnamer[   Zh5tabler  r:   )r  r;   test_complibsg  s*    





zTestHDFStore.test_complibsc             C   s&   t tjjdd}| j|tj| d S )N2   r]   )r   r   randomrandn_check_roundtriprC   rV   )r5   r6   r7   r:   r:   r;   test_put_integer  s    zTestHDFStore.test_put_integerc             C   s(  t j }d|d< d|d< |d dk|d< |d dk|d	< d
|d< d|d< d|d< td|d< td|d< tjddddd|d< tjddddd|d< tj|j|jdd dgf< |j j	d
d}t
|V}t|d td
d  tdtjj |jd| W d Q R X |jd}t j|| W d Q R X d S )Nrd   r   r   r   r)   r   r   rP   r   Tr   r*   r   r+   r   r   r   r   r   i  r   rr   r   r   )r   r7   )r   r   )rC   r   r   r   r   r   r   rY   r   r   r   r   r   r   r1   r   r   r2   r   rV   )r5   r6   r7   r9   ru   r:   r:   r;   test_put_mixed_type  s*    


z TestHDFStore.test_put_mixed_typez7ignore:object name:tables.exceptions.NaturalNameWarningc             C   sp  t |\}tddD tj }t|d |jd|d d  |jd|dd   tj|d | t|d |jd|d d dd |jd|dd   tj|d | t|d |jd	|d d  |jd	|dd   tj|d | t|d
 |jd
|d d  |jd
|dd   tj|d | tddgddgddgddggd}d|d< t	j
|jd%< t|d |jd| tj|d | ttt	jjddddt	jdtt	jjddddt	jdtt	jjdd&ddt	jdtd'd(d)d*d+gt	jddt	jdd}t|d  |jd | tj|d  | t|d  |jd |d!d"d#gd$ tj|d  | W d Q R X W d Q R X d S ),NT)r   r   r^   rk   r0   )r.   rl   z/df3z/df3 foozdf3 foor*   r+   r   )dataZtestingmixed_columnr7      rO   )highr_   )r   i     :   ;   <   =   >   )u08u16u32Zu64)rY   Zuintsr'  r(  r)  )r`   )r+   r  i   @l           l          @l            l            l            )r   r   rC   r   r   rQ   rV   r2   r   r   r   r   r   r  randintZuint8Zuint16Zuint32Zuint64r  )r5   r6   r9   r7   Z	uint_datar:   r:   r;   test_append  sT    



"


zTestHDFStore.test_appendc       
      C   s  t |}tj }tj }ttjd}|jd| |d }tj|| |j	d ksXt
|jd| |d }tj|| |j	d kst
d|_	|jd| |d }tj|| |j	|j	kst
||dk }|jdd}tj|| ||dk|jd	k @  }|jdd
}tj|| ttjjdddgd}tjt||d< d|d< d|jdddf< |jddgdd |j }	|	jjd|	_|jd|	 tj|d |	 W d Q R X d S )Nr]   ssr   rd   nsr$  zfoo>60F   Z   zfoo>70 and index<90rO   r*   r)   )r   rP   Cr   rr   T)inplacer+   mi)r   rC   rU   rS   r   r   r  rQ   rT   r   r4   ra   rY   r   r  r  rE   r   	set_indexstackZ	droplevel)
r5   r6   r9   r,  r   r-  r[   ru   r2  r   r:   r:   r;   test_append_series  s@    zTestHDFStore.test_append_seriesc                s|   t |j  fdd}x0tjtjtjtjgD ]}|d| |d| q,W |dtj tj}|d| |d| W d Q R X d S )Nc                sV   t tjjddtdd}|t||_t d  jd|| d t	j
| d  d S )Nr^   r+   AB)r   r7   )r.   )r   r   r  r  r   rE   rY   r   r2   rC   rV   )r.   rY   r7   )r9   r:   r;   r   '  s
    
z2TestHDFStore.test_store_index_types.<locals>.checkr0   r-   )r   rC   makeFloatIndexmakeStringIndexmakeIntIndexmakeDateIndexmakePeriodIndexmakeUnicodeIndex)r5   r6   r   rY   r:   )r9   r;   test_store_index_types!  s    


z#TestHDFStore.test_store_index_typesz$reason platform is not little endian)reasonc             C   s   t |}ttdddtdd}tj|jd< tj|jd< t|d
 |jd
|dd t	j
|d
 | |jdgd}|jd
tddd}t	j
|| W d Q R X d S )Nrd   r   )r)   rP   rO   )rY   r+   r)   rr   rP   r7   ascii)encoding)r   z	columns=A)r+   r)   )rr   rP   )r   r   rW   rX   r   r   r   r   rQ   rC   rV   reindexra   r#   )r5   r6   r9   r7   ru   r[   r:   r:   r;   test_encodingC  s    

zTestHDFStore.test_encodingvals   E, 17r~      a   b   cs   EE, 17s   s   Ar   categoryc       
         s|   d d}d} fdd|D }t j||d}t|$}|j||d |d t||}W d Q R X |j|tj}	tj	|	| d S )	Nzlatin-1re   r  c                s$   g | ]}t |tr|j n|qS r:   )
isinstancebytesdecode)r   r   )encr:   r;   r   h  s    z4TestHDFStore.test_latin_encoding.<locals>.<listcomp>)r   r0   )r.   r@  nan_rep)
r1   r   r   rH   r$   replacer   r   rC   rT   )
r5   r6   r   rC  rL  rI   serr9   ZretrZs_nanr:   )rK  r;   test_latin_encodingT  s    
z TestHDFStore.test_latin_encodingc             C   s  t |}tttjjdjdtjjdtjjdddtdtjdddd	d	d
tj	dd}t
|d tj|jd	dddddgf< |jd|d d  |jd|dd   tj|d | |j }tj|jd d df< t
|d |jd|d d  |jd|dd   tj|d | |j }tj|jd d df< t
|d |jd|d d  |jd|dd   tj|d | |j }tj|jd d df< t
|d |jd|d d  |jd|dd   tj|d | W d Q R X d S )Nr   int32rd   r   20010101i  r*   r+   r   )r)   A1A2rP   r0  DE)rY   r      rR  rP   rT  rU  r^   rS  rk   rl   )r   r   r   r   r  r  astyper   r   r  r   r   r   rQ   rC   rV   copy)r5   r6   r9   r7   r   rk   rl   r:   r:   r;   test_append_some_nanss  sB    





z"TestHDFStore.test_append_some_nansc             C   s  t |L}ttjjdtjjddtjdd}tj|jddd d f< t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d |dd   t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d | tjdd t|d |j	d|d d  |j	d|dd   t
j|d | tjdd t|d |j	d|d d  |j	d|dd   t
j|d |dd   ttjjdtjjddddtjdd}tj|jddd d f< t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d | t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d | ttjjdtjjdddtdtjddddddtjdd}tj|jddd d f< t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d | t|d |j	d|d d dd	 |j	d|dd  dd	 t
j|d | W d Q R X tdtjdgdtjtjgd}t|,}|j|ddd t|d}t
j|| W d Q R X d S )Nr   )rR  rS  )rY   r   rV  r7   r^   T)dropnar   rk   Fzio.hdf.dropna_tablerl   rm   rd   r   )rR  rS  rP   r0  rQ  i  r*   r+   )rR  rS  rP   r0  rT  rU  )Zcol1Zcol2df_with_missingr0   )r.   r\  )r   r   r   r  r  r  r   r   r   rQ   rC   rV   r1   rn   r   r   r   rH   r$   )r5   r6   r9   r7   r[  r8   Zreloadedr:   r:   r;   test_append_all_nans  sz    













z!TestHDFStore.test_append_all_nansc             C   sn   t |\}tjtdtdd}|j|d tjtdd tj|d W d Q R X |j|d W d Q R X d S )Nr+   )r,   r/   k1z 'No object named k2 in the file')r=   k2)	r   r1   r   rX   rH   r>   r?   r   r$   )r5   r6   r8   r7   r:   r:   r;   !test_read_missing_key_close_store   s    
z.TestHDFStore.test_read_missing_key_close_storec             C   s   t |t}tjtdtdd}|j|d tj|d8}tjtdd tj	|d W d Q R X tj	|d W d Q R X W d Q R X d S )Nr+   )r,   r/   r^  r   z 'No object named k2 in the file')r=   r_  )
r   r1   r   rX   rH   r!   r>   r?   r   r$   )r5   r6   r8   r7   r9   r:   r:   r;   "test_read_missing_key_opened_store  s    
z/TestHDFStore.test_read_missing_key_opened_storec             C   s  t |}tj }|jjd |_t|d |jd|jd d d df dgd |jd|jd d dd f  tj|d | |j	dd}|j
dgd}tj|| |j	dd}|j
dg|jd	d
 d}tj|| tjt |j	dd W d Q R X W d Q R X d S )Nr   r+   r   )axes	columns=Ar)   )r   index=df.index[0:4]r   r   )r   rY   zcolumns=A and index>df.index[4])rc  rd  )r   rC   r   rY   Z
_with_freqr   rQ   rf   rV   ra   rA  r>   r?   rh   )r5   r6   r9   r7   r[   ru   r:   r:   r;   !test_append_frame_column_oriented  s    

$z.TestHDFStore.test_append_frame_column_orientedc             C   s  t |}xtdD ]}ttjjddtdd}td|d< |d  |d 7  < tdgt| dd|d< tdgt| d	d|d	< |d d
kr|d= tdgt| dd|d< |d d
kr|j	d}||d< |j
ddd |jd| qW W d Q R X t |}ttjjddtddd}tdgt| dd|d< tdgt| d	d|d	< |jd| tdgt| d	d|d< tjt |jd| W d Q R X tdgt| dd|d< tjt |jd| W d Q R X W d Q R X d S )Nr^   r+   r6  )r   rY   r*   int64)r   int16r   rr   r)   T)r1  r7   float64)r   r   Zint16_2g      ?Zfloat_3)r   rX   r   r   r  r  r   r   rE   popr3  rQ   r>   r?   r@   )r5   r6   r9   r   r7   r,   r:   r:   r;   )test_append_with_different_block_ordering5  s4    


z6TestHDFStore.test_append_with_different_block_orderingc          )      s  t | tdd  fdd}tddgddgg} jd	| tj jd	| |d	d
d tddgddgg} jd	| t||g}tj jd	| |d	d
d tddgddgg} jd|ddid tj jd| |dd
d  jd| tddgddgg}tj	t
  jd| W d Q R X tj jd} jd|d ddid tj jd|d   jd|d dddid tj jd|d   jd|ddd id! |j j jd"d#jd} jd| tj jdtj||g  jd$|d ddd id!  jd$|d  tj jd$tj|d |d g t d% tj }d&|d'< tj|j|jd(d d'f< d)|d*< tj|j|jdd+ d*f< d,|d-< tj|j|jd(d  d-f<  jd%|  jd%}tj|| W d Q R X W d Q R X t |  fd.d}ttd&d)d/td0d1}t d%  jd%|d2d3id |d%d2d3  jd%jd2gkshtt d%  jd%|dgd2d3id |d%d2d3  jd%jdd2gkstt d%  jd%|dgdd3id |d%dd3 |d%d4d3  jd%jdgkstt d%  jd%|d d5 d3d  jd%|d5d  d3d tj d% | td&d&d&d6d6d6gd2gd7}t d% tj	t
  jd%|d8d8d9d W d Q R X W d Q R X d S ):NT)r   c                s"   t  j| jj|j|kstd S )N)r   r3   r0   descriptionitemsizer4   )rI   r   r_   )r9   r:   r;   	check_cole  s    z8TestHDFStore.test_append_with_strings.<locals>.check_col{   Z	asdqwertyiY  ZdggnhebbsdfbdfbZdf_bigvalues_block_1rV  |   ZasdqyiZ  ZdggnhefbdfbZdf_big2valuesr  )min_itemsizedf_newZ
abcdefqhijZabcdefghijklmnopqrtsuvwxyzr0  r,  rP   rY   r   Zss2)r`   rr  ss3r0   r   )r.   rr  longer)r0  ss4r7   rd   stringr*   r   string2r   r   Zstring3c                s"   t  j| jj|jst|d S )N)r   r3   r0   rk  rl  r4   )rI   r   r_   )r9   r:   r;   rm    s    )r)   rP   r^   )rY   r)      values_block_0rO   Zbarh)r   r   )rd   Zfoobar)r   r   r   rQ   rC   rV   ra   r   r>   r?   r@   makeMixedDataFramer3  rT   r2   rX  reset_indexassignr1   r   r   r   r   r   rY   rW   rX   r3   r`   r4   )r5   r6   rm  r7   rk   ru   rs  r[   r:   )r9   r;   test_append_with_strings`  s     

 




z%TestHDFStore.test_append_with_stringsc             C   s|   t |j}tddddddddgi}|jd	|d d dd
id |jd	|dd  dd
id tj|jd	| W d Q R X d S )Nr   r,   r/   rq   r   erc   re   r7   r*   )rr  r  )r   r   rQ   rC   rV   ra   )r5   r6   r9   r7   r:   r:   r;   test_append_with_empty_string  s
    
z*TestHDFStore.test_append_with_empty_stringc             C   s   t |}tj jd}|j|ddddid |j j jddjd}|j|dd	dd
 tjt	j
|dt	j||g |d j|ddddid |d j|dd	dd
 tjt	j
|dt	j|d |d g W d Q R X d S )Nr0  rt  r0   rY   r   )r.   rr  ru  )r0  T)rQ   r.   rP   rv  )r   rC   r{  r3  rH   rX  r|  r}  rV   r1   r$   r   rT   )r5   r6   r8   r7   rk   r:   r:   r;   test_to_hdf_with_min_itemsize  s    
z*TestHDFStore.test_to_hdf_with_min_itemsizer.   r-   )Zmarksr0   c             C   s`   dg}t j|t j|d}t|4}|j|d|dd t j|ddd}tj|| W d Q R X d S )Nu   foo)rY   r0   surrogatepass)r.   r   )r   )r1   r   r   r   rH   r$   rC   rT   )r5   r.   r6   r  rN  r8   r[   r:   r:   r;   test_to_hdf_errors  s    
zTestHDFStore.test_to_hdf_errorsc       
   1      s~  t | tj }d|jd|jjdf< t d  jd|d d dgd  jd|dd   tj d |  j	j
jjjjjdkst j	j
jjjjjdkst jdd}||jdk }tj||  jdd	}|j|jd
d  d}||jdk }tj|| |j }d|d< tj|j|jdd
 df< d|j|jdd df< t d  jd|dgd  jdd}||jdk }tj||  fdd}W d Q R X t | t d  jd|dgddid |ddd t d  jd|dgdd |ddd t d  jd|dgddid |ddd W d Q R X t |j d|d< d|d< d|d< t d  jd|ddgdddd d |ddd |ddd |dd!d W d Q R X t |P |j }d|jd|jjd"f< d9|jd|jjdf< d|d< |jjd}tj|jdd
|f< d|jdd|f< d|d< |jjd}tj|jdd|f< d|jd#d$|f< t d  jd|d"dddgd  jdd%}||jdk|jdk@ |jdk@ |jdk @  }tj||d&d&d'  jdd(}||jdk|jd)k@  }tj||d&d&d' W d Q R X t | |j }d|d< tj|j|jd
d df< d|j|jd#d* df< d)|d< td+|d,< |jdd-}tj|j|jd.d d"dd,gf< t d/  jd/|dd0ddd,gd  jd/d}||jdk }tj||d&d&d'  jd/d1d2d3g}||jdk|jdk@ |jdk@  }tj||d&d&d' W d Q R X t |( tjjd4 t d5d$d6}	t!tjj"d$d.|	d"dd0gd7}d|d< tj|j|jd
d df< d|j|jd#d* df< |jd d dd0gf j# |jd d dd0gf< d)|d<  jd/|dd0ddgd  jd/d}||jdk }tj||  jd/d1d2d8g}||jdk|jdk@ |jdk@  }tj|| W d Q R X d S ):Ng      ?r   rP   r7   r+   )r`   TzB>0zB>0 and index>df.index[3]r   )rY   rd   rw  r*   r   rO   r   zstring='foo'c                s"   t  j| jj|j|kstd S )N)r   r3   r0   rk  rl  r4   )rI   r   r_   )r9   r:   r;   rm  $  s    z=TestHDFStore.test_append_with_data_columns.<locals>.check_colr!  )r`   rr  rq  Z	foobarbahrx  Z
foobarbah1Zstring_block1Z
foobarbah2Zstring_block2(   r  )rw  rx  rq  ro  r)   r   r   z.string='foo' and string2='foo' and A>0 and B<0F)check_index_typeZ
check_freqzstring='foo' and string2='cool'Zcoolr   r   r   )r   rr   df_dcr0  zB > 0zC > 0zstring == fooi  z1/1/2000)periods)rY   r   zstring == "foo"g      )$r   rC   r   rf   r   Zget_locr   rQ   rV   r   r   r7   r0   colsrY   
is_indexedr4   rP   ra   rA  rX  r   r   r   rw  rx  r)   r   r   r0  r  seedr   r   r  abs)
r5   r6   r7   r[   ru   rs  rm  slr  rY   r:   )r9   r;   test_append_with_data_columns  s    








* 
","z*TestHDFStore.test_append_with_data_columnsc                s0  t | tdd  fdd}tj }d|d< d|d<  jd	|ddgd
 |d	djdksft|d	djdkszt|d	djdkst jd|dgddgd |ddjdkst|ddjdkst|ddjdkstt d  jd| t	j
t  jd W d Q R X W d Q R X W d Q R X d S )NT)r   c                s   t  j| jj|S )N)r   r3   r0   r  )tcolumn)r9   r:   r;   col  s    z1TestHDFStore.test_create_table_index.<locals>.colrd   rw  r   rx  rc   )r`   rY   f2)rY   r`   F)r   r   rC   r   rQ   r  r4   r   r2   r>   r?   rh   create_table_index)r5   r6   r  r7   r:   )r9   r;   test_create_table_index  s&    
z$TestHDFStore.test_create_table_indexc                 s   t |҉ tdd  fdd}tj }d|d< d|d<  jd	|dgd
 |d	djdks`t|d	djdksttd}tjt	|d |d	dj W d Q R X d}tjt	|d  j
d	dgd W d Q R X W d Q R X W d Q R X d S )NT)r   c                s   t  j| jj|S )N)r   r3   r0   r  )r  r  )r9   r:   r;   r    s    zGTestHDFStore.test_create_table_index_data_columns_argument.<locals>.colrd   rw  r   rx  rc   )r`   rY   z('Cols' object has no attribute 'string2')r=   zcolumn string2 is not a data_column.
In order to read column string2 you must reload the dataframe 
into HDFStore and include string2 with the data_columns argument.)r   )r   r   rC   r   rQ   r  r4   r>   r?   r   r  )r5   r6   r  r7   rA   r:   )r9   r;   -test_create_table_index_data_columns_argument  s    
z:TestHDFStore.test_create_table_index_data_columns_argumentc             C   s(  t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjjdd|dddgd}t|V}|jd| |jd}tj	|| |jdddgd}|j
ddgd}tj	|| W d Q R X tdD}|j|ddd t|dddgd}|j
ddgd}tj	|| W d Q R X d S )Nrd   r   bazquxonetwothreer   r*   r+   rr   )levelscodesnamesr^   r)   rP   r0  )rY   r   r2  )r   ztest.hdfr7   r0   )r.   )r   r   r   r  r  r   rQ   ra   rC   rV   rA  r   rH   r$   )r5   r6   rY   r7   r9   r[   ru   r8   r:   r:   r;   test_append_hierarchical  s"    .


z%TestHDFStore.test_append_hierarchicalc          )   C   s  t jddddgddgd}ttjdjd	d
|d}|j }t|jt	rTt
|j|_t|}|jd| tj|d |ddd |jd|dd tj|d |ddd tjt |jd|ddgd W d Q R X tjt |jd|ddd W d Q R X W d Q R X t|6}|jd| |jd| tj|d t||f W d Q R X ttjdjd	d
ttdddd}|j }t|jt	rt
|j|_t|,}|jd|dd tj|d |ddd W d Q R X d S )Nr)   r,   r/   rP   firstsecond)r  r   rr   r   )r   r7   T)r  Zcheck_column_typer   r0   )r.   rk   )r.   r`   rl   ABCDrd   )r   )r)   r,   )r)   r/   )rP   r,   )rP   r/   )r   from_tuplesr   r   r  reshaperX  rH  rY   r   r   r   r2   rC   rV   r>   r?   r@   rQ   r   r   r   )r5   r6   rY   r7   ru   r9   r:   r:   r;   test_column_multiindex  s<    
&
"$
z#TestHDFStore.test_column_multiindexc             C   s  t |}ddd}t|d ttjdddg| d}|jd| tj|jd| t|d ttjdddg|d	d d gd}|jd| tj|jd| t|d
 t	tjd|d	d d gd}|jd
| t	tjd|d	ddgd}tj
|jd
| t|d ttjdddg|d	ddgd}tjt |jd| W d Q R X t|d ttjdddg|d	d	d	gd}tjt |jd| W d Q R X t|d ttjdddg|d	d
dgd}|jd| tj|jd| W d Q R X d S )Nc             S   s   t jdd tddD | dS )Nc             S   s<   g | ]4}t d D ]&}t dD ]}tjdd|||fqqqS )r+   rr   i  r   )rX   r   )r   r   r   r  r:   r:   r;   r   5  s   zJTestHDFStore.test_store_multiindex.<locals>.make_index.<locals>.<listcomp>r*   rr   )r  )r   r  rX   )r  r:   r:   r;   
make_index2  s    z6TestHDFStore.test_store_multiindex.<locals>.make_indexr7   r   r+   r,   r/   )r   rY   dater   )rY   Zlevel_1Zlevel_2r  )N)r   r+   )r   r+   )r   r+   )r   r+   )r   r+   )r   r   r   r   ZzerosrQ   rC   rV   ra   r   rT   r>   r?   r@   )r5   r6   r9   r  r7   r   Zxpr:   r:   r;   test_store_multiindex,  sN    






z"TestHDFStore.test_store_multiindexc             C   s  t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjjdd|dddgd}t|N}|jd|dd |dg }tj|j	ddgd| tj|j	ddd| W d Q R X t
tjjd|dd}t|,}|jd|dd tj|j	ddd| W d Q R X d S )Nrd   r   r  r  r  r  r  r   r*   r+   rr   Zfoo_nameZbar_name)r  r  r  r^   r)   rP   r0  )rY   r   r7   r0   )r.   )r   zcolumns=['A'])rR   )rY   r   r   )r   r   r   r  r  r   r2   rC   rV   ra   r   rT   )r5   r6   rY   r7   r9   ru   r   r:   r:   r;   test_select_columns_in_wherer  s    .

 
z)TestHDFStore.test_select_columns_in_wherec             C   s   t jjtdddtdgddgd}t jddd	d
ddgi|d}t|D}|jd|dd |jddd}|j	dgd d f }t
j|| W d Q R X d S )Nz
2000-01-01rO   )r  r  id)r  r,   g?g333333?g?gffffff?g      ?)rY   r7   T)r`   zid == 1)rR   r*   )r1   r   from_arraysr   rX   r   r   rQ   ra   rf   rC   rV   )r5   r6   idxr7   r9   actualru   r:   r:   r;   test_mi_data_columns  s    
z!TestHDFStore.test_mi_data_columnsc             C   sx   t j }t|^}|jd| tjt |jddgd W d Q R X tjt |jddgd W d Q R X W d Q R X d S )Nr7   r)   )r   z	columns=A)rR   )rC   rD   r   r2   r>   r?   rh   ra   )r5   r6   r7   r9   r:   r:   r;   test_pass_spec_to_storer  s    
z%TestHDFStore.test_pass_spec_to_storerc                s  t  Z}tj }|jd|dd |jd}tj|| |jd|dd |jd}tj|| W d Q R X  fdd}tj }d	|d
< d|d< |d jd|d< |d dk|d< td|d< td|d< ||tj t  }tt	dd}|jd| t
jtdd |jd W d Q R X ttjjddt	dd}|jd| tj|jd| |jd| tj|jd| tt	dd}|jd| tj|jd| W d Q R X d S )Nr7   r*   )	chunksizer   r^   )Zexpectedrowsc                sN   xHdD ]@}t  dd*}|jd| |d |jd}|||  W d Q R X qW d S )	Nr^   ry    r   )r   rJ   )r  )r^   ry  r  )r   rQ   ra   )rJ   
comparatorrq   r9   r[   )r6   r:   r;   r     s
    

z,TestHDFStore.test_append_misc.<locals>.checkrd   rw  g      ?float322float32r   bool20130101time120130102time2ABC)r   z 'No object named df in the file')r=   rr   rk   )r   rC   rD   rQ   ra   rV   rW  r   r   r   r>   r?   r   r   r  randr2   )r5   r6   r9   r7   r[   r   Zdf_emptyr:   )r6   r;   test_append_misc  s<    



zTestHDFStore.test_append_miscc          4   C   s  t |}tj }dggt| |d< |jd tjks<ttj	t
 |jd| W d Q R X dggt| |d< dggt| |d< tj	t
 |jd| W d Q R X tj }ttjddd|jd	}|jt}tj|d
d< ||d< |jd tjksttj	t
 |jd| W d Q R X tj	t
 |jdtjd W d Q R X tj	t
 |jdttjd W d Q R X tj }|jd| d|d< tj	t |jd| W d Q R X W d Q R X d S )Nr,   invalidr7   Zinvalid2Zinvalid3i  r*   r+   )rY   r   rO   r^   rd   )r   rC   rD   rE   dtypesr   Zobject_r4   r>   r?   rh   rQ   r   r   rY   rW  objectr   r  r@   )r5   r6   r9   r7   r   r:   r:   r;   test_append_raise  s6    
 zTestHDFStore.test_append_raisec             C   s   t ddddgi}t ddddgitddd	d
}t|>}|jd|dd tjt |jd|ddd W d Q R X W d Q R X d S )Nr,   r*   r+   rr   r   rO   r   z1/1/2000)r  )rY   rN   r0   )r.   T)r.   rQ   )r   r   r   r2   r>   r?   rh   )r5   r6   r   rk   r9   r:   r:   r;   $test_table_index_incompatible_dtypes  s    
z1TestHDFStore.test_table_index_incompatible_dtypesc             C   s  t |}tddddgidd}|jd| tj|j|d j tddddgidd}|jd	| tj|j|d	 j tjt |jd	| W d Q R X tt	j
dgdgdggd
ddgd}|jd| tj|j|d j |jd dksttdd d$D }d|d< d|d< |d jd|d< |d dk|d< td|d< td|d< |jd | |jd jj }d!d" |jD |_tdddddddddd#	}|j }|j }tj|| W d Q R X d S )%Nr,   r*   r+   rr   f8)r   Zdf_f8i8Zdf_i8Zf4r)   )r   Zdf_f4r   r  c             S   s"   i | ]}t tjjd |d|qS )rO   )r   )r   r   r  r*  )r   rq   r:   r:   r;   
<dictcomp>(  s   zCTestHDFStore.test_table_values_dtypes_roundtrip.<locals>.<dictcomp>rh  rP  rf  rg  int8rd   rw  g      ?r  r  r  r  r  r  Zdf_mixed_dtypes1c             S   s   g | ]}t |qS r:   )r   )r   r   r:   r:   r;   r   6  s    zCTestHDFStore.test_table_values_dtypes_roundtrip.<locals>.<listcomp>)	r  rh  rP  r  rg  r  rf  r  zdatetime64[ns])r  rh  rP  rf  rg  r  )r   r   rQ   rC   rT   r  r>   r?   r@   r   r   r4   rW  r   ra   Zvalue_countsrY   r   Z
sort_index)r5   r6   r9   r   rk   r[   ru   r:   r:   r;   "test_table_values_dtypes_roundtrip  sL    $

z/TestHDFStore.test_table_values_dtypes_roundtripc          
   C   s   t j }d|d< d|d< |d dk|d< |d dk|d	< d
|d< d|d< d|d< td|d< td|d< tjddddd|d< tjddddd|d< tj|j|jdd dgf< |j j	d
d}t
|$}|jd| t j|jd| W d Q R X d S )Nrd   r   r   r   r)   r   r   rP   r   Tr   r*   r   r+   r   r   r   r   r   i  r   rr   r   r   )r   Z	df1_mixed)rC   rD   r   r   r   r   r   rY   r   r   r   rQ   rV   ra   )r5   r6   r7   r9   r:   r:   r;   test_table_mixed_dtypesH  s"    
z$TestHDFStore.test_table_mixed_dtypesc             C   s   t |d}dtjdddfg}xH|D ]@\}}tj }|||< tjt |jd| | W d Q R X q$W W d Q R X tj }d|d< d|d	< tjddd|d
< |j	 j
dd}t |(}tjt |jd| W d Q R X W d Q R X d S )Nr  i  r*   r+   Zdf1_rd   r   r   r   r   T)r   Zdf_unimplemented)r   r   r  rC   rD   r>   r?   rh   rQ   r   r   )r5   r6   r9   r  nrc   r7   r:   r:   r;   'test_unimplemented_dtypes_table_columns^  s    
*
z4TestHDFStore.test_unimplemented_dtypes_table_columnsz1.15.0zOSkipping  pytables test when numpy version is exactly equal to 1.15.0: gh-22098c       
   
   C   s   d}dt j dddtjdg}tjj||d}t j ddd	}t|d|d
}t|j|j	tdj
 }t|J}|jd| |jd}	tj|	| |jd| |jd}	tj|	| W d Q R X d S )NzSun Mon Tue Wed Thuz
2012-05-01i  rO   r*   z
2014-05-01)holidaysZweekmaskr   r!  )r  freqzMon Tue Wed Thu Fri Sat Sunr-   r0   )r   r   Z
datetime64r1   offsetsZCustomBusinessDayr   r   weekdaymapsplitr   r2   ra   rC   rT   rQ   )
r5   r6   Zweekmask_egyptr  Z
bday_egyptdtZdtsr   r9   r[   r:   r:   r;   test_calendar_roundtrip_issuew  s     



z*TestHDFStore.test_calendar_roundtrip_issuec             C   sp   t jddd}t jdg|gd}t|>}|jd|dd |d }tj|| |jd jd	ksbt	W d Q R X d S )
Nz2000-01-01 01:00:00z
US/Eastern)tzr   )r  rY   rN   r-   )r.   l    @-mi)
r1   r   r   r   r2   rC   rV   rY   valuer4   )r5   r6   r   r7   r9   reconsr:   r:   r;   test_roundtrip_tz_aware_index  s    
z*TestHDFStore.test_roundtrip_tz_aware_indexc             C   s  t ttddd tdD d}|d |d  |d< tj|jd	d
df< t|"}t|d |j	d|dd |j
d}tj|| |j
ddd}tj|| |j
ddd}tj||jd	d   |j
dd}tj||jd	d   |j
dd}|jdgd}tj||jdd   |j
dd}|jdd  }tj||jdd   t|d |jd| |j
d}tj|| W d Q R X d S )Nr  c             S   s    g | ]}t d t|dd qS )r  r^   )daysseconds)r   r   )r   r   r:   r:   r;   r     s   z;TestHDFStore.test_append_with_timedelta.<locals>.<listcomp>r^   )r)   rP   r)   rP   r0  rr   rO   r7   T)r`   zC<100000)rR   zC<pd.Timedelta('-3D')zC<'-3D'zC<'-500000s')Zsubsetr   z	C<'-3.5D'r*   r   rk   )r   rW   r   rX   r   r   r   r   r   rQ   ra   rC   rV   rf   rZ  r2   )r5   r6   r7   r9   r[   r:   r:   r;   test_append_with_timedelta  s8    



z'TestHDFStore.test_append_with_timedeltac             C   s.  t |}tj }tj }||d< ||d< t|d t|dksFttj||d  t|d t|dkspttj	t
dd |jd W d Q R X ||d< ||d< t|d	 t|d t|dkst||d< ||d< t|d t|dkst||d< ||d< |d= |d= t|dks tW d Q R X d S )
Nr,   r/   r*   r   z1'No object named a_nonexistent_store in the file')r=   Za_nonexistent_storezb/foord   )r   rC   rS   rD   r   rE   r4   rV   r>   r?   r   r  )r5   r6   r9   r   r7   r:   r:   r;   test_remove  s6    




zTestHDFStore.test_removec          =   C   s  t |}tdd tj }d|d< d|j|jdd df< |jd|d	d
 tjt	 t
  W d Q R X tjt |jdd W d Q R X tjt |jdd W d Q R X W d Q R X W d Q R X t|X}ttjjddtdtdddd}|j|dd	dd t|ddd t|ddd W d Q R X t|^}ttjjddtdtdddd}|j|dd	d
 tjt t|ddd W d Q R X W d Q R X d S )NT)r   rd   rw  r   r   r   r7   r0   )r.   zdf.index[3]zindex>r^   r  r  )r  )r   rY   dfq)r.   r`   z0index>Timestamp('20130104') & columns=['A', 'B'])rR   z
A>0 or C>0)r   r   rC   r   r   rY   r2   r>   r?   rh   r#   r@   ra   SyntaxErrorr   r   r   r  r  r   r   rH   r$   )r5   r6   r9   r7   r8   r  r:   r:   r;   test_invalid_terms  s:    
*

zTestHDFStore.test_invalid_termsc             C   s   t |}dd l}ttjjdd|jdddd}|jd|dd	 ||j|j	d
k }dd l
}|jdd}tj|| ddl
m
} |jdd}tj|| |jdd}tj|| W d Q R X d S )Nr   r   r+   r  )r  )rY   r7   r0   )r.   Z20130105z!index>datetime.datetime(2013,1,5))r   zindex>datetime(2013,1,5))r   r   r   r   r  r  r   r2   rY   r   r   ra   rC   rV   )r5   r6   r9   r1   r7   ru   r   r[   r:   r:   r;   test_same_name_scoping1	  s    
z#TestHDFStore.test_same_name_scopingc             C   s   t j }| j|t j|d t j }| j|t j|d t|jt|jtd}| j|t j|d t|j	tt
j|jtdtd}| j|t j|dd d S )N)r8   )r   F)r8   r  )rC   rU   r  rT   rS   r   rY   r   r  rq  r   Zasarray)r5   r6   r   r   Zts2Zts3r:   r:   r;   test_seriesK	  s     zTestHDFStore.test_seriesc             C   s6   t jjd}tt jjd|d}| j|tj|d d S )Nr^   )rY   )r8   )r   r  r  r   r  rC   rT   )r5   r6   rY   r   r:   r:   r;   test_float_index[	  s    zTestHDFStore.test_float_indexc             C   sn   t jd}dddg}t jjdjd}t|||d
}tdd& tdtj	j
 | j|tj|d W d Q R X d S )Nr^                 ?       @      @      @      @r!  rr   )rY   r   T)r   r   )r8   )r  r  )r  r  )r  r  )rr   r^   )r   r  r  r  r  r   r   r   r1   r   r   r  rC   rV   )r5   r6   r  r  r  ZDFr:   r:   r;   test_tuple_indexb	  s    

zTestHDFStore.test_tuple_indexz(ignore::pandas.errors.PerformanceWarningc          1   C   s2  t dd tjjd}dd }W d Q R X t dd$ t|ddg}| j|||d W d Q R X t dd* t|tjj dg}| j|||d W d Q R X t dd$ t|ddg}| j|||d W d Q R X t dd* t|tjj d	g}| j|||d W d Q R X t dd t|ddg}| j|||d t|tjj dg}| j|||d t|ddg}| j|||d t|tjj d	g}| j|||d t|d
dg}| j|||d t|ddg}| j|||d t|ddg}| j|||d t|tjdddtjdddg}| j|||d W d Q R X d S )NT)r   r+   c             S   s   t j| |ddS )NT)r  )rC   rT   )lr   r:   r:   r;   r}   v	  s    z/TestHDFStore.test_index_types.<locals>.<lambda>r   y)r8   r,   gGz?r/   r*   g{Gz?rO   i  )	r   r   r  r  r   r  r   todayr  )r5   r6   rq  funcrN  r:   r:   r;   test_index_typeso	  sB     zTestHDFStore.test_index_typesc             C   s\   t dd}ttjjt||d}y| j|tj|d W n t	k
rV   t
jd Y nX d S )Nz1/1/1940z1/1/1960)rY   )r8   z&known failer on some windows platforms)r   r   r   r  r  rE   r  rC   rT   OverflowErrorr>   skip)r5   r6   Zdrr   r:   r:   r;   test_timeseries_preepoch	  s    
z%TestHDFStore.test_timeseries_preepochcompressionFTc             C   s   t j }tj|jd< tj|jd	< | j|t j||d | j|t j||d t j }| j|t j||d t	|8}tj
jt||d< ||d< |d }|jj stW d Q R X | j|d d t j|d d S )
Nr   rO   rr   )r8   r  rd   r7   )r8   )r   r   )rO   rr   )rC   rD   r   r   rq  _check_roundtrip_tablerV   r  r   r   r  r  rE   Z_mgrZis_consolidatedr4   )r5   r  r6   r7   Ztdfr9   r  r:   r:   r;   
test_frame	  s     
zTestHDFStore.test_framec             C   s   t td}t dtd}t }tdddgd}tdd	d
gd}| j|tj|d | j|tj|d | j|tj|d | j|tj|d | j|tj|d d S )N)r   Zmyseries)r   r   r,   r/   rq   )rY   r   r  rc   )r   )r8   )r   r  r   r  rC   rT   rV   )r5   r6   s0r   Zdf0r   rk   r:   r:   r;   test_empty_series_frame	  s    
z$TestHDFStore.test_empty_series_framezm8[ns]zM8[ns]c             C   s    t |d}| j|tj|d d S )N)r   )r8   )r   r  rC   rT   )r5   r   r6   r   r:   r:   r;   test_empty_series	  s    
zTestHDFStore.test_empty_seriesc             C   sD   dd t ddD }ttjjt|d|d}| j|tj|d d S )Nc             S   s   g | ]}|j  qS r:   )r  )r   r   r:   r:   r;   r   	  s    z9TestHDFStore.test_can_serialize_dates.<locals>.<listcomp>z1/1/2000z	1/30/2000r   )rY   )r8   )	r   r   r   r  r  rE   r  rC   rV   )r5   r6   rngrN   r:   r:   r;   test_can_serialize_dates	  s    z%TestHDFStore.test_can_serialize_datesc             C   s   t ddddgdddggdddd	d	d
d
dddg
dd	d
dd	d	d
dd	d
g
gddgd}ttjjdd|dddgd}| j|tj|d | j|jtj|d | j|d tj	|d t
|"}||d< |d }tj|| W d Q R X d S )Nrd   r   r  r  r  r  r  r   r*   r+   rr   )r  r  r  r^   r)   rP   r0  )rY   r   )r8   rN   )r   r   r   r  r  r  rC   rV   TrT   r   )r5   r6   rY   rN   r9   r  r:   r:   r;   test_store_hierarchical	  s    .
z$TestHDFStore.test_store_hierarchicalc          
   C   sD   t j }d|j_t|"}||d< |d }t j|| W d Q R X d S )Nrd   rN   )rC   rD   rY   r   r   rV   )r5   r6   r7   r9   r  r:   r:   r;   test_store_index_name	  s    
z"TestHDFStore.test_store_index_namec             C   st   t jdddgi}t jddg|_|jjd|_d|j_t|*}|jd|d	d
 |d }tj	|| W d Q R X d S )Nr)   r*   r+   l   {C	 l   {C	 UTCrd   rN   r0   )r.   )
r1   r   r   rY   Ztz_localizer   r   r2   rC   rV   )r5   r6   r7   r9   r  r:   r:   r;   test_store_index_name_with_tz
  s    
z*TestHDFStore.test_store_index_name_with_tztable_formatc             C   s   t jt jtjdddtjdddgdd}t jt jtjdddtjdddgdd}t jtjdjdd||d	}t	|X}|j
|d
|d t|d
}tj||dd t|jjtkstt|jjtkstW d Q R X d S )Ni  r*   r+   u   colsג)r   i  u   rowsאr   )r   rY   r7   )r.   T)Zcheck_names)r1   r   to_datetimer   r  r   r   r  r  r   rH   r$   rC   rV   rF   rY   r   r   r4   r   )r5   r  r6   r  Zidx1r7   r8   rk   r:   r:   r;   test_store_index_name_numpy_str
  s      

z,TestHDFStore.test_store_index_name_numpy_strc          
   C   sD   t j }|d }t|"}||d< |d }t j|| W d Q R X d S )Nr)   rM   )rC   rD   r   rT   )r5   r6   r7   rM   r9   r  r:   r:   r;   test_store_series_name*
  s    
z#TestHDFStore.test_store_series_namec             C   s   dd }| }| }| j |tj|d | j |tj|d t|6}||d< tj|d | ||d< tj|d | W d Q R X | j |d tj||d | j |d tj||d | j |d tj||d d S )	Nc              S   sP   t j } d| d< d| d< | d dk| d< | d dk| d	< d
| d< d| d< | j S )Nrd   r   r   r   r)   r   r   rP   r   r*   r   r+   r   )rC   rD   r   )r7   r:   r:   r;   	_make_one8
  s    z0TestHDFStore.test_store_mixed.<locals>._make_one)r8   rJ   r   )r8   r  r   r   )r  rC   rV   r   rT   )r5   r  r6   r  r   rk   r9   r:   r:   r;   test_store_mixed3
  s2    

zTestHDFStore.test_store_mixedz6ignore:\nduplicate:pandas.io.pytables.DuplicateWarningc             C   s^  t tjjddddddgd}tdddd|_t|}|jd	| |jd	}|}t	j
||d
d |jd	|jd}|}t	j
||d
d |jd	dgd}|jd d dgf }t	j
|| W d Q R X tt tjjddddddgdt tjjddddjddddgdgdd}tdddd|_t|}|jd	| |jd	}|}t	j
||d
d |jd	|jd}|}t	j
||d
d |jd d dgf }|jd	dgd}t	j
||d
d |jd d ddgf }|jd	ddgd}t	j
||d
d W d Q R X t|b}|jd	| |jd	| |jd d ddgf }t||g}|jd	ddgd}t	j
||d
d W d Q R X d S )Nr^   r   r)   rP   )r   z20130101 9:30r  )r  r  r7   T)Z	by_blocksr   r   )r_   r+   r0  r*   )axis)r   r   r  r  r   rY   r   rQ   ra   rC   rV   r   r   r   r*  r  )r5   r6   r7   r9   r[   ru   r:   r:   r;   test_select_with_dupsb
  sP    

$


z"TestHDFStore.test_select_with_dupsc          
   C   sD   t |2}tj |d< tj }||d< tj|d | W d Q R X d S )Nr,   )r   rC   r   rS   rT   )r5   r6   r9   r   r:   r:   r;   test_overwrite_node
  s
    
z TestHDFStore.test_overwrite_nodec             C   s  t |}tdd tj }t|d |jd| |jdddgd}|jddgd}tj|| |jddg}|jddgd}tj|| t|d |jd|dgd |jdd	gddgd}||j	d
k jddgd}tj|| t|d |jd|dd |jdd	gddgd}||j	d
k jddgd}tj|| t|d |jd|dgd |jdd	gddgd}||j	d
k jddgd}tj|| W d Q R X W d Q R X d S )NT)r   r7   r)   rP   )r   zcolumns=['A', 'B'])r`   zA > 0r   r0  rT  )
r   r   rC   r   r   rQ   ra   rA  rV   r)   )r5   r6   r9   r7   r[   ru   r:   r:   r;   test_select
  s4    



zTestHDFStore.test_selectc             C   s  t |N}tttdddtjjdd}t|d |jd|ddgd |j	dd	}||j
td
k }tj|| ttjjddddgd}d|d< d|jdddf< |d dk|d< t|d |jd|dd ||jdk jddgd}x2d3D ]*}|j	dd| ddgd}tj|| qW ||jdk jddgd}x4d4D ],}|j	dd| ddgd}tj|| q@W tttjjdtjjdd}t|d |jd| |j	dd}|jt|jdd dgd }tj|| tttjjdtjjdtjdd!d"d#}t|d$ |jd$| |j	d$d%}|jt|jdd dgd }tj|| W d Q R X t |2}tttd&td&d'd(d"}|d) d jt|d)< |jd*|dd |j	d*d+d,}||d- d.k }tj|| tj|jd< ||d- d.k }|jd/|ddd0 |j	d/d+d,}tj|| tttd&td&d'd(d"}|d) d jt|d)< tj|jd< ||d- d.k }|jd1|dd |j	d1d+d,}tj|| W d Q R X t |T}tj }||d dk }|jd|dd tjd}|j	dd2gd,}tj|| W d Q R X d S )5Nz
2012-01-01i,  )r  )r   r)   r7   r   r)   )r`   zts>=Timestamp('2012-02-01')z
2012-02-01rO   r+   rP   )r   rd   r  r   r   r   boolvTtruer*   z	boolv == Ffalser   )r)   rP   Zdf_intzindex<10 and columns=['A']r^   )rY   r   r  )r   )r)   rP   rY   Zdf_floatzindex<10.0 and columns=['A']r   )r  rq  rh  r  r   z
values>2.0)rR   rq  g       @rk   )r`   rY   rm   z	A>np_zero)Tr  r*   )Fr  r   )r   r   rW   r   r   r  r  r   rQ   ra   r   r   rC   rV   r   r  rA  r  r   rY   r  rX   applyr   r   rf   rD   rh  )r5   r6   r9   r7   r[   ru   vZnp_zeror:   r:   r;   test_select_dtypes
  s    



 






zTestHDFStore.test_select_dtypesc             C   s  t |}tttdddtjjdtddgd dgd  dgd  d	d
 tdD  d}t|d |j	d|ddddgd |j
dd}||jtdk }tj|| |j
dd}||jtdk|jjdddg@  }tj|| dddgdd
 tdD  }|j
dd}||jtdk|jj|@  }tj|| tdd}|j
dd}||jj| }tj|| t|dks~tt|jdd j}|j
dd}||jj|j }tj|| t|dkstW d Q R X d S )Nz
2012-01-01i,  )r  r,   r  r/   rq   r]   c             S   s   g | ]}d |dqS )r,   03dr:   )r   r   r:   r:   r;   r   G  s    z=TestHDFStore.test_select_with_many_inputs.<locals>.<listcomp>)r   r)   rP   usersr7   r   r)   rP   r  )r`   zts>=Timestamp('2012-02-01')z
2012-02-01z1ts>=Timestamp('2012-02-01') & users=['a','b','c']c             S   s   g | ]}d |dqS )r,   r  r:   )r   r   r:   r:   r;   r   \  s    r$  z.ts>=Timestamp('2012-02-01') and users=selectorry  z
B=selectorr   zts=selector)r   r   rW   r   r   r  r  rX   r   rQ   ra   r   r   rC   rV   r  isinrP   rE   r4   r   rq  )r5   r6   r9   r7   r[   ru   selectorr:   r:   r;   test_select_with_many_inputs;  s@    

6
"
z)TestHDFStore.test_select_with_many_inputsc       
   0   C   sR  t |}tjd}t|d |jd| |jd}t|jddd}t|}tj|| t|jddd}t	|dks|t
t|}tj|| t|jddd}t|}tj|| W d Q R X t|d}tjd}|j|d	 tjt t|d	dd W d Q R X tjt t|d	dd W d Q R X W d Q R X t|j}tjd}|j|dd
d tt|ddd}t|}t	|dkst
tj|| tj|t|d W d Q R X t |}tjd}|jd|dd tjdjdjd}	d|	d< |jd|	 t||	gdd}|jddgdd}t|jddgddd}t|}tj|| W d Q R X d S )Ni  r7   T)iteratorr]   )r  rO      Zdf_non_tabler0   )r.   r   )r`   z{}_2)r   r   rd   rk   r*   )r  )r  )r  r  )r   rC   r   r   rQ   ra   r   r   rV   rE   r4   r   rH   r>   r?   rh   r$   renamer.   select_as_multiple)
r5   r6   r9   r7   ru   resultsr[   r8   r   rk   r:   r:   r;   test_select_iteratorp  sT    





"



z!TestHDFStore.test_select_iteratorc       
      C   s  d}t |}tjdd}t|d |jd| |jd }|jd }|jd}tj|| d| d}|jd|d	}tj|| d
| d}|jd|d	}tj|| d| d| d}|jd|d	}tj|| W d Q R X t |}tjdd}t|d |jd| |jd }|jd }t|jd|d}	t	|	}tj|| d| d}t|jd||d}	t	|	}tj|| d
| d}t|jd||d}	t	|	}tj|| d| d| d}t|jd||d}	t	|	}tj|| W d Q R X d S )Ng     @i Sr7   r   r*   z
index >= '')rR   z
index <= 'z' & index <= ')r  )rR   r  r  r  )
r   rC   r   r   rQ   rY   ra   rV   r   r   )
r5   r6   r  r9   ru   beg_dtend_dtr[   rR   r  r:   r:   r;   "test_select_iterator_complete_8014  sN    







z/TestHDFStore.test_select_iterator_complete_8014c             C   s  d}t |}tjdd}t|d |jd| |jd }|jd }d| d}t|jd||d	}t|}	||j|k }
tj	|
|	 d
| d}t|jd||d	}t|}	||j|k }
tj	|
|	 d| d| d}t|jd||d	}t|}	||j|k|j|k@  }
tj	|
|	 W d Q R X t |d}tjdd}t|d |jd| |jd }d| d}t|jd||d	}dt
|kstW d Q R X d S )Ng     @i r  r7   r*   r+   z
index >= 'r  )rR   r  z
index <= 'z' & index <= 'z	index > 'r   r  )r   rC   r   r   rQ   rY   r   ra   r   rV   rE   r4   )r5   r6   r  r9   ru   r  r  rR   r  r[   	rexpectedr:   r:   r;   &test_select_iterator_non_complete_8014  s>    





z3TestHDFStore.test_select_iterator_non_complete_8014c             C   s  t d}t|p}tjdd}t|d |jd| |jd }|j|d  }d| d}t|jd||d	}t	|}	||j|k }
tj
|
|	 d
| d}t|jd||d	}t|dkstt	|}	||j|k }
tj
|
|	 d| d| d}t|jd||d	}t|dkstt	|}	||j|k|j|k@  }
tj
|
|	 d
| d| d}t|jd||d	}t|dks~tW d Q R X d S )Ng     @i r  r7   r   r*   z
index >= 'r  )rR   r  z
index <= 'z' & index <= 'z' & index >= ')intr   rC   r   r   rQ   rY   r   ra   r   rV   rE   r4   )r5   r6   r  r9   ru   r  r  rR   r  r[   r  r:   r:   r;   &test_select_iterator_many_empty_frames/  s8    

	z3TestHDFStore.test_select_iterator_many_empty_framesz9ignore:\nthe :pandas.io.pytables.AttributeConflictWarningc       	      C   s  t tttdtdddddd}t|P}t|d |jd|dd	 |jd}t	j
|| xBdD ]:}x4dD ],}tt|||d tt|||d ksptqpW qfW tdd6 t tttdtdddddd}|jd| W d Q R X |jdjd d
 d kstt|d t tttdtdtdtdgdd}|jd| t tttdtdddddd}|jd| W d Q R X d S )Nrr   z2000-1-1H)r  r  )rY   )r)   r  r0   )r.   r  r  r   rY   r   T)r   z2002-1-1rT  rk   rQ  r   Z20020101)r  r  r   )rY   r   )r   rW   r   rX   r   r   r   r2   r   rC   rV   r   r4   r   rQ   r3   r   r   )	r5   r6   r7   r9   r[   attrr  rk   rl   r:   r:   r;   test_retain_index_attributesi  s@    "




z)TestHDFStore.test_retain_index_attributesc             C   s\  t |H}tdd ttttdtdddddd}|j|d	d
dd ttttdtdddddd}|j|d	dd tdddd}d|_ttttd|dd}|j|d	d
dd W d Q R X t	|d	j
jdksttddD tdddd}d|_ttttd|dd}|j|d	dd W d Q R X t	|d	j
jd ksNtW d Q R X d S )NT)r   rr   z2000-1-1r   )r  r  )rY   )r)   r  r   )r   rQ   z2002-1-1rT  )rQ   rd   z2001-1-1r   )r   r   r   rW   r   rX   r   rH   r   r$   rY   r4   )r5   r6   r8   r7   rk   r  Zidx2r:   r:   r;   test_retain_index_attributes2  s.    z*TestHDFStore.test_retain_index_attributes2c       
      C   s   t j }t|}|jd|dd |jt|d  }td}|jjd |ksPt	d}d}|j
d||g}|j|d d	d
gf }	t j||	 |j
d|g}|jd d d	gf }	t j||	 t j }|jd| tjt |j
dd W d Q R X W d Q R X d S )NrN   r0   )r.   r+   zindex>=dater  zcolumns=['A', 'D']z	columns=Ar)   rT  Zdf_timezindex>0)rC   r   r   r2   rY   rE   r#   envZscoper4   ra   r   rV   rQ   r>   r?   r@   )
r5   r6   r7   r9   r  Zcrit1Zcrit2Zcrit3r[   ru   r:   r:   r;   test_frame_select  s$    
zTestHDFStore.test_frame_selectc             C   s   t j }d|d< d|j|jdd df< t|}|jd|ddgd |jdd	}|j|j|jd
 k|jdk@  }t j|| |jdd}|j|j|jd
 k|jdk@  }t j|| |jdd}|j|j|jd
 k|jdkB  }t j|| |jdd}|j|j|jd
 k|j|jd k@ |jdkB  }t j|| |jdd}|j|jdk }t j|| t	j
t |jdd W d Q R X |jdd}|jd d |jjddgf }t j|| |jdd}|j|j|jd
 k jddgd}t j|| W d Q R X d S )Nrd   rw  r   r   r   r7   r0   )r.   r`   z index>df.index[3] & string="bar"rr   z index>df.index[3] & string="foo"z index>df.index[3] | string="bar"z7(index>df.index[3] & index<=df.index[6]) | string="bar"r   zstring!="bar"z~(string="bar")z~(columns=['A','B'])r)   rP   z(index>df.index[3] & columns in ['A','B'])r   )rC   r   r   rY   r   r2   ra   rw  rV   r>   r?   NotImplementedErrorr   
differencerA  )r5   r6   r7   r9   r[   ru   r:   r:   r;   test_frame_select_complex  s>       "z&TestHDFStore.test_frame_select_complexc             C   s  t ddg}|\}}tddddddgi}|j|ddd	dgd
 t|ddd}ttjjdddgtjdd t	dD ddgdd}|j|ddd	d t|ddd}|j
j }	t|}
|
jddd}tj|| |
j  t|ddd}tj|| |j
}t|ddd}tj|| t|ddd}tj|| t|ddd}tj|| t|ddd}tj|| t|}
|
jddd}tj|| |
jddd}tj|| |
jddd}tj|| |
jddd}tj|| |
j  W d Q R X d S )Nz	parms.hdfzhist.hdfr)   r*   r+   rr   r7   r   r0   )r   r.   r`   zA=[2,3])rR      r  c             S   s"   g | ]}t d D ]}||fqqS )rO   )rX   )r   r   jr:   r:   r;   r   2  s    z;TestHDFStore.test_frame_select_complex2.<locals>.<listcomp>rO   l1l2)r  )r   rY   )r   r.   zl1=[2, 3, 4]zl1=lzl1=indexzl1=selection.indexzl1=selection.index.tolist()zl1=list(selection.index))r   r   rH   r$   r   r  r  r   r  rX   rY   tolistr!   ra   rC   rV   r   )r5   r6   pathspphhZparms	selectionhistru   r  r9   r[   rY   r:   r:   r;   test_frame_select_complex2#  sL     
z'TestHDFStore.test_frame_select_complex2c             C   st   t j }t|Z}|jd|dd tjt |jdd W d Q R X tjt |jdd W d Q R X W d Q R X d S )Nr7   r0   )r.   zcolumns=['A'] | columns=['B']z!columns=['A','B'] & columns=['C'])rC   r   r   r2   r>   r?   r&  ra   )r5   r6   r7   r9   r:   r:   r;   test_invalid_filteringc  s    
z#TestHDFStore.test_invalid_filteringc             C   st  t |`}tj }d|d< d|j|jdd df< |jd|dgd |jdd}||jdk }tj|| |jdd	}||jdk }tj|| |j	 }t
j|j|jdkdf< |jd
|dgd |jd
d	}|t|j }tj|| d|d< d|j|jdd df< |jd|dgd |jdd}||jdk }tj|| |jdd}||jdk }tj|| W d Q R X d S )Nnoner   re   r+   r   r7   )r`   zx=nonezx!=nonerk   r*   r  rl   zint=2zint!=2)r   rC   r   r   rY   rQ   ra   r   rV   rX  r   r   r   r  )r5   r6   r9   r7   r[   ru   rk   r:   r:   r;   test_string_selectt  s4    zTestHDFStore.test_string_selectc       	   )   C   s  t j }t|}t|d tjtdd |jdd W d Q R X |jd| tjtt	j
dd |jdd W d Q R X tjt |jdddgd W d Q R X |jdd}t j|jt|jj t|tsttjt |jdd	 W d Q R X |j }d|d
< |jd|d
gd |jdd
}t j|j|d
 j |j }d|d
< tj|j|jdd d
f< |jd|d
gd |jdd
}t j|j|d
 j |jdd
dd}t j|j|d
 jdd   |jdd
dd}t j|j|d
 jdd   |jdd
dd}t j|j|d
 jd d  |jdd
dd}t j|j|d
 jd d  |jdd
ddd}t j|j|d
 jdd  |jdd
ddd}t j|j|d
 jd d  ttjjddd}|jd|dd |d }|jdd}t j|| W d Q R X d S )!Nr7   zNo object named df in the file)r=   rY   z%'column [foo] not found in the table'rd   zindex>5)rR   rz  rw  rk   )r`   r   r   rl   r+   )start)stop)r7  r8  r^   )r)   rP   rm   TrP   r  r  r  r  r  r  r  r  )rC   r   r   r   r>   r?   r   select_columnrQ   reescaper   Zassert_almost_equalrq  r   rY   rH  r4   r@   rX  r   r   r   r   r  r  rT   )	r5   r6   r7   r9   r[   rk   rl   rm   ru   r:   r:   r;   test_read_column  sX    
zTestHDFStore.test_read_columnc          0   C   sR  t j }t|}t|d |jd| |jd}|jtjt	|j
kj sRtt|d tttdtdd}|jd| |jddg}|jtjdkj st|jd|d}|jddd d f }t j|| |jdd	d
g}|jtjdd kj st|jd|d}|jddd d f }t j|| t|tsDtt|d t|d t j }t j jdjd}|jd|ddgd |jd| |jdddg}|jd|}	|jd|}
t|	|
gdd}t||gdd}||jdk|jdk@  }t j|| W d Q R X t|6}ttjjddtdddd}|jd| |jdd}|t|jdk j
}|j | }|jd|d}t j|| |jd|d}t j|| t!j"t#" |jdtjt	|ddd W d Q R X t!j"t#" |jdtjt	|d d W d Q R X t!j"t#  |jdtjt	|dd W d Q R X t!j"t#" |jdtjt	|ddd  W d Q R X tdd!d}|jdd"d}||j
j$| }t j|| ttjjdd}|jd| |jddddgd}|j dddg }t j|| d#gd }d$|d&< |jd|d}|j| }t j|| |jdddd%}|dd }t j|| W d Q R X d S )'Nr7   rO   )r)   rP   zindex<3rr   )rR   r   r+   zindex>=3zindex<=4r   r   rk   z{}_2)r   r)   rP   )r`   zA>0zB>0r*   )r  i  Z20000101)r  )rY   rY   rh  )r   )rR   r7  r^   )rR   r7  r8  i  zindex in selectionTF)r7  r8  r  )%rC   r   r   r   rQ   Zselect_as_coordinatesrq  r   r  rE   rY   allr4   r   rW   rX   ra   r   rV   rH  r   r  r.   r   r)   rP   r  r  r   r9  r   monthrf   r>   r?   r@   r  )r5   r6   r7   r9   rq   r[   ru   r   rk   Z
df1_resultZ
df2_resultrR   r1  r:   r:   r;   test_coordinates  s    





&&$&

zTestHDFStore.test_coordinatesc          !   C   s   t j }t j jdjd}d|d< t||gdd}t|}tjt  |j	ddgd d	|d
d W d Q R X tjt |j	d d d	|d
d W d Q R X tjt |j	d|d W d Q R X |j	ddgd d	|dd |j
ddgddgdd}||jdk|jdk@  }t j|| W d Q R X d S )Nz{}_2)r   r   rd   r*   )r  r)   rP   )r   rk   rl   )r  r   rk   zA>0zB>0)rR   r  r   )rC   r   r  r.   r   r   r>   r?   r@   append_to_multipler  r)   rP   rV   )r5   r6   r   rk   r7   r9   r[   ru   r:   r:   r;   test_append_to_multipleO  s$    
  z$TestHDFStore.test_append_to_multiplec             C   s   t j }t j jdjd}tj|jd|jjddgf< t	||gdd}t
|`}|jddgd d|dd	d
 |jddg}|j }t j|| t j|jdj|jdj W d Q R X d S )Nz{}_2)r   r*   r)   rP   )r  )r   rk   r   T)r  rZ  rk   )rC   r   r  r.   r   r   rf   r   get_indexerr   r   r@  r  rZ  rV   Zassert_index_equalra   rY   )r5   r6   r   rk   r7   r9   r[   ru   r:   r:   r;   test_append_to_multiple_dropnam  s    
z+TestHDFStore.test_append_to_multiple_dropnaz8append_to_multiple_dropna_false is not raising as failed)runr>  c             C   s   t j }t j jdjd}tj|jd|jjddgf< t	||gdd}t
|f}|jddgd d|dd	d
 tjt |jddg W d Q R X |jdjj|jdj stW d Q R X d S )Nz{}_2)r   r*   r)   rP   )r  )df1adf2arE  F)r  rZ  rF  )rC   r   r  r.   r   r   rf   r   rB  r   r   r@  r>   r?   r@   r  ra   rY   equalsr4   )r5   r6   r   rk   r7   r9   r:   r:   r;   $test_append_to_multiple_dropna_false~  s    
z1TestHDFStore.test_append_to_multiple_dropna_falsec             C   s   t jtjddtjddtjddd dd tdD dd tdD d}|jd	g }t|V}|jd
gddgddgd|jd	g dddddd |jdddg}t	j
|| W d Q R X d S )Nr*   r  X   c             S   s   g | ]}d qS )r,   r:   )r   r   r:   r:   r;   r     s    zETestHDFStore.test_append_to_multiple_min_itemsize.<locals>.<listcomp>r   c             S   s   g | ]}d qS )Zabcder:   )r   r   r:   r:   r;   r     s    )IXNumBigNumStrLongStrr   rJ  rK  rL  rM  rN  )rY   numsstrsrY   r^   r]   r+   )rM  rN  rK  )rr  rO  rP  )r1   r   r   r  rX   rf   r   r@  r  rC   rV   )r5   r6   r7   ru   r9   r[   r:   r:   r;   $test_append_to_multiple_min_itemsize  s"    




z1TestHDFStore.test_append_to_multiple_min_itemsizec          =   C   s  t j }t j jdjd}d|d< t|Z}tjt |jd ddgdd W d Q R X |j	d|d	d
gd |j	d| tjt |jd ddgdd W d Q R X tjt |jd gddgdd W d Q R X d}tjt
|d |jddgddgdd W d Q R X tjt
|d |jdgddgdd W d Q R X tjt
dd |jddgddgdd W d Q R X |jdddg}|jdgddgdd}t j|| |jdddgdd}t j|| |jddgddgdd}t||gdd}||jdk|jdk@  }t j|| |jddgddd}t||gdd}|dd  }t j|| |j	dt jdd tjt |jddgddgdd W d Q R X W d Q R X d S )Nz{}_2)r   r   rd   zA>0zB>0r   )rR   r  r)   rP   )r`   rk   z!'No object named df3 in the file')r=   rl   z!'No object named df4 in the file'rm   r*   )r  r   zindex>df2.index[4]rO   r  )Znper)rC   r   r  r.   r   r>   r?   r   r  rQ   r   ra   rV   r   r)   rP   r@   )r5   r6   r   rk   r9   rA   r[   ru   r:   r:   r;   test_select_as_multiple  sT      z$TestHDFStore.test_select_as_multiplez3.1.0zBtables version does not support fix for nan selection bug: GH 4858c             C   s   t |}tttdtdddd}|d d jt|d< tj|jd< ttdd	d
gdddgddddgd}|j	d|ddgd |j
ddd}tj|| W d Q R X d S )Nr   )r  rq  rh  )r   r  r^   r   z13.0z14.0z15.0g      @g      @g      @rr   r   rO   )rY   r7   T)r`   rY   z
values>2.0)rR   )r   r   rW   rX   r  r   r   r   rf   rQ   ra   rC   rV   )r5   r6   r9   r7   ru   r[   r:   r:   r;   test_nan_selection_bug_4858  s    
z(TestHDFStore.test_nan_selection_bug_4858c             C   s   t |}tttjjdtjjdd}|jd| |jddddd}|jddd	gf }t	j
|| |jddd
dd}t|dkst|jd
dd	gf }t	j
|| W d Q R X d S )Nr   )r)   rP   r7   zcolumns=['A']r   rO   )r7  r8  r   r)   r!  r  )r   r   rW   r   r  r  rQ   ra   r   rC   rV   rE   r4   )r5   r6   r9   r7   r[   ru   r:   r:   r;   test_start_stop_table
  s    
 z"TestHDFStore.test_start_stop_tablec             C   s|   t |j}tddgddgd}|jdgd d|dd |jddgdd	dd
}|jd	gddgf }tj|| W d Q R X d S )Nr*   r+   )rd   r   rd   )r  r  r  )r  r  r   )r  r7  r8  r   )r   r   r@  r  r   rC   rV   )r5   r6   r9   r7   r[   ru   r:   r:   r;   test_start_stop_multiple  s    
z%TestHDFStore.test_start_stop_multiplec             C   s  t |p}tttjjdtjjddtjdddd}|jd| |j	dddd	}|j
ddd d f }tj|| |j	ddd
d	}|j
dd
d d f }tj|| |j	dddd	}|j
ddd d f }tj|| |j}|jd| |j	dddd	}|j
dd }tj|| |j	ddd
d	}|j
dd
 }tj|| tj }tj|j
ddddf< tj|j
dd
df< W d Q R X d S )Nr   )r)   rP   r  )r  )rY   r7   r   rO   )r7  r8  r^   r!  r  r   rr   r*   r   r+   r  )r   r   rW   r   r  r  r1   r   r2   ra   rf   rC   rV   r)   rT   rD   r   )r5   r6   r9   r7   r[   ru   r   r:   r:   r;   test_start_stop_fixed,  s2    z"TestHDFStore.test_start_stop_fixedc             C   s   t tjjdd}dd |jD |_dd |jD |_t|}|jd|dd d	}|jd|g}t	j
||jd d |jd d
 f  d}|jd|g}t	j
||jd d |jd d
d f  W d Q R X d S )Nr  r]   c             S   s   g | ]}|d qS )3dr:   )r   rq   r:   r:   r;   r   W  s    z:TestHDFStore.test_select_filter_corner.<locals>.<listcomp>c             S   s   g | ]}|d qS )rW  r:   )r   rq   r:   r:   r;   r   X  s    rN   r0   )r.   zcolumns=df.columns[:75]K   zcolumns=df.columns[:75:2]r+   )r   r   r  r  rY   r   r   r2   ra   rC   rV   r   )r5   r6   r7   r9   critr[   r:   r:   r;   test_select_filter_cornerT  s    
$z&TestHDFStore.test_select_filter_cornerc                s0   t j  t j fdddd }t j | d S )Nc                s    j | dS )Nr7   )rH   )p)r7   r:   r;   r}   i  s    z0TestHDFStore.test_path_pathlib.<locals>.<lambda>c             S   s   t j| dS )Nr7   )r1   r$   )r[  r:   r:   r;   r}   i  s    )rC   rD   round_trip_pathlibrV   )r5   r6   r[   r:   )r7   r;   test_path_pathlibe  s    zTestHDFStore.test_path_pathlibzstart, stopr   r+   r*   Nc             C   sj   t tdddgtdddgd}t|6}|jd| |jd||d}tj||| | W d Q R X d S )	Ni2i2i2abZcd)r,   r/   Ztest_dataset)r7  r8  )r   r   r   rQ   ra   rC   rV   )r5   r7  r8  r6   r7   r9   r[   r:   r:   r;    test_contiguous_mixed_data_tablem  s    
z-TestHDFStore.test_contiguous_mixed_data_tablec                s8   t j   fdd}dd }t j||}t j | d S )Nc          
      s&   t j| } j|d W d Q R X d S )Nr7   )r1   r!   rH   )r8   r9   )r7   r:   r;   writer  s    z7TestHDFStore.test_path_pathlib_hdfstore.<locals>.writerc          
   S   s"   t j| }t j|dS Q R X d S )Nr7   )r1   r!   r$   )r8   r9   r:   r:   r;   reader  s    z7TestHDFStore.test_path_pathlib_hdfstore.<locals>.reader)rC   rD   r\  rV   )r5   r6   r`  ra  r[   r:   )r7   r;   test_path_pathlib_hdfstore~  s
    z'TestHDFStore.test_path_pathlib_hdfstorec                s0   t j  t j fdddd }t j | d S )Nc                s    j | dS )Nr7   )rH   )r[  )r7   r:   r;   r}     s    z9TestHDFStore.test_pickle_path_localpath.<locals>.<lambda>c             S   s   t j| dS )Nr7   )r1   r$   )r[  r:   r:   r;   r}     s    )rC   rD   r\  rV   )r5   r6   r[   r:   )r7   r;   test_pickle_path_localpath  s    z'TestHDFStore.test_pickle_path_localpathc                s8   t j   fdd}dd }t j||}t j | d S )Nc          
      s&   t j| } j|d W d Q R X d S )Nr7   )r1   r!   rH   )r8   r9   )r7   r:   r;   r`    s    z9TestHDFStore.test_path_localpath_hdfstore.<locals>.writerc          
   S   s"   t j| }t j|dS Q R X d S )Nr7   )r1   r!   r$   )r8   r9   r:   r:   r;   ra    s    z9TestHDFStore.test_path_localpath_hdfstore.<locals>.reader)rC   rD   Zround_trip_localpathrV   )r5   r6   r`  ra  r[   r:   )r7   r;   test_path_localpath_hdfstore  s
    z)TestHDFStore.test_path_localpath_hdfstorec       	   
   K   sL   i }|rt |d< t|df|$}||d< |d }|||f| W d Q R X d S )Nr   r   rJ   )_default_compressorr   )	r5   rJ   r  r8   r  rK   optionsr9   	retrievedr:   r:   r;   r    s    zTestHDFStore._check_roundtripc       
   
   K   sn   i }|r|pt |d< t|df|B}||d< |d }|||f| ||d< |d }	||	|f| W d Q R X d S )Nr   r   rJ   )re  r   )
r5   rJ   r  r8   r  rK   rf  r9   rg  Zagainr:   r:   r;   _check_double_roundtrip  s    z$TestHDFStore._check_double_roundtripc             C   sP   i }|rt |d< t|df|(}|jd|dd |d }||| W d Q R X d S )Nr   r   rJ   r0   )r.   )re  r   r2   )r5   rJ   r  r8   r  rf  r9   rg  r:   r:   r;   r    s    z#TestHDFStore._check_roundtrip_tablec          r   C   s@  t |f}tj }|j|dddd t|}d|j ks<t|jsFt|j  d|j ks^t|j sjtW d Q R X t |}t	j
rt|}tjt t| W d Q R X |j  nt|}t|}d|j kstd|j kst|jst|jst|j  d|j kst|j s$td|j ks6t|jsBt|j  d|j ks\td|j ksnt|j s|t|j stt|dd}|jd| t|}|jd| |j  d|j kst|j st|j  d|j kst|j stt|dd}|jd| t|}|j  d|j ks@t|j sNt|j  d|j ksht|j svtW d Q R X t |}tj }|j|dddd t|}|j  tjt |j  W d Q R X tjt d|k W d Q R X tjt t| W d Q R X tjt |d  W d Q R X tjt |j W d Q R X tjt |jd W d Q R X tjt |jd W d Q R X tjt |jd| W d Q R X tjt |jd| W d Q R X tjt |jd W d Q R X tjt |jd W d Q R X tjtd	d
 |jd W d Q R X W d Q R X d S )Nr7   r   r0   )r   r.   ZCLOSED)r   rk   rl   zfile is not open)r=   )r   rC   rD   rH   r!   r   r4   r   r   r%   Z!_table_file_open_policy_is_strictr>   r?   r@   rQ   r    rt   rE   r   r7   ra   r   r2   r3   r  )r5   r6   r8   r7   r9   Zstore1Zstore2r:   r:   r;   test_multiple_open_close  s    



z%TestHDFStore.test_multiple_open_closec          
   C   s:   t |ddddd}|d }t|ts,tW d Q R X d S )Nior  zlegacy_hdf/pytables_native.h5r   )r   zdetector/readout)r   rH  r   r4   )r5   datapathr6   r9   Zd2r:   r:   r;   test_pytables_native_readA  s
    z&TestHDFStore.test_pytables_native_readz#native2 read fails oddly on windowsc          
   C   sD   t |dddddd$}t| |d }t|ts6tW d Q R X d S )Nrj  r  
legacy_hdfzpytables_native2.h5r   )r   detector)r   r   rH  r   r4   )r5   rk  r6   r9   Zd1r:   r:   r;   test_pytables_native2_readH  s    z'TestHDFStore.test_pytables_native2_readc             C   sj   t |ddddddJ}|jd}tjdd	d
dggddddgtjdgddd}tj|| W d Q R X d S )Nrj  r  rm  zlegacy_table_fixed_py2.h5r   )r   r7   r*   r+   rr   rT  r)   rP   r0  r  Z
INDEX_NAME)r   )r   rY   )r   ra   r1   r   r   rC   rV   )r5   rk  r6   r9   r[   ru   r:   r:   r;   'test_legacy_table_fixed_format_read_py2S  s    

z4TestHDFStore.test_legacy_table_fixed_format_read_py2c             C   s`   t |dddddd@}|jd}tjtjdggd	gtjd
gd}tj|| W d Q R X d S )Nrj  r  rm  z"legacy_table_fixed_datetime_py2.h5r   )r   r7   z2020-02-06T18:00r)   r  )r   rY   )r   ra   r1   r   r   r   rC   rV   )r5   rk  r6   r9   r[   ru   r:   r:   r;   0test_legacy_table_fixed_format_read_datetime_py2b  s    
z=TestHDFStore.test_legacy_table_fixed_format_read_datetime_py2c             C   sT   t |dddddd}|jd}W d Q R X tjdd	gd
dgd}tj|| d S )Nrj  r  rm  zlegacy_table_py2.h5r   )r   r0   r,   r/   r+   rr   )r,   r/   )r   ra   r1   r   rC   rV   )r5   rk  r6   r9   r[   ru   r:   r:   r;   test_legacy_table_read_py2q  s    z'TestHDFStore.test_legacy_table_read_py2c             C   s|   t ddh ddd}tj }zDt|}t|}|jd|dgd |j  ||d ||d	d
 W d t| X W d Q R X d S )NT)r   c             [   s   zt | d}|d kr(dd l}|j \}}|j|f||d|}|d krP|j }t|t|j kshtxj|j D ]^}	|j|	jrr|j|	}
|j|	}|j	|
j	kst|rrx$|j
D ]}|jr|
|j jstqW qrW W d t| t| ytj| W n ttfk
r   Y nX t| X d S )Nr   r   )rt   propindexes)r!   tempfilemkstemprX  rt   rs   r4   r3   ro   Znrowsrb  r  r   r   r   r   OSErrorr@   r   )rc   new_frt   rs  rK   r9   rt  fdZtstorekZnew_tZorig_tr,   r:   r:   r;   do_copy  s4    


z'TestHDFStore.test_copy.<locals>.do_copyr7   r)   )r`   )rc   F)rc   rs  )NNT)r   rC   rD   r   r!   rQ   r   r   )r5   r6   rz  r7   r8   str:   r:   r;   	test_copy|  s    
*
zTestHDFStore.test_copyc             C   sZ   t |H}tjddddddd}tdg|g}||d	< |d	 jd |ksLtW d Q R X d S )
Ni  r*   r+   rr   r   rO   i@ r   r,   )r   r   r   rY   r4   )r5   r6   r9   r  rM   r:   r:   r;   #test_store_datetime_fractional_secs  s
    
z0TestHDFStore.test_store_datetime_fractional_secsc             C   s   t |}tjd}ttjjt||}||d< |d }tj|| |j	j
|j	j
ksZttj|j	|j	dd tjd}ttjjt||}||d< |d }tj|| |j	j
|j	j
ksttj|j	|j	dd W d Q R X d S )Nr^   r,   zseries index)rJ   )r   rC   r:  r   r   r  r  rE   rT   rY   r  r4   assert_class_equalr;  )r5   r6   r9   r  rN  r[   r:   r:   r;   test_tseries_indices_series  s    


z(TestHDFStore.test_tseries_indices_seriesc             C   s   t |}tjd}ttjjt|d|d}||d< |d }tj|| |j	j
|j	j
ks^ttj|j	|j	dd tjd}ttjjt|d|}||d< |d }tj|| |j	j
|j	j
ksttj|j	|j	dd W d Q R X d S )Nr^   rr   )rY   r,   zdataframe index)rJ   )r   rC   r:  r   r   r  r  rE   rV   rY   r  r4   r~  r;  )r5   r6   r9   r  r7   r[   r:   r:   r;   test_tseries_indices_frame  s    


z'TestHDFStore.test_tseries_indices_framec             C   sX   ddg}t dd< tdtjj ttjjt	||}| j
|tj|d W d Q R X d S )Nu   σu   σσT)r   r   )r8   )r   r   r1   r   r   r   r   r  r  rE   r  rC   rT   )r5   r6   Zunicode_valuesr   r:   r:   r;   test_unicode_index  s
    zTestHDFStore.test_unicode_indexc             C   s   d}t jd|gi}t|.}|jd|ddd |jd}tj|| W d Q R X t jd|gddgd	}t|.}|jd|ddd |jd}tj|| W d Q R X d S )
Nu   Δr)   r7   r0   zutf-8)r.   r@  r,   r/   )r)   rP   )r1   r   r   r2   r   rC   rV   )r5   r6   charr7   r9   r[   r:   r:   r;   test_unicode_longer_encoded  s    



z(TestHDFStore.test_unicode_longer_encodedc             C   sR   t dddgdddgddd	gd
}tj }|jd d |d< | j|tj|d d S )Nr*   r+   rr   g      ?g       @g      @r,   r/   rq   )r,   r/   rq   r   )r8   )r   rC   rS   rY   r  rV   )r5   r6   r7   r   r:   r:   r;   test_store_datetime_mixed  s    "z&TestHDFStore.test_store_datetime_mixedc       
      C   s   t tjjdd}t dtjjdi}t dtjjdi}t dtjjdi}t ddtftjjdi}t|Z}dtjd }|j|| x6||||fD ]&}	t	j
t |j||	 W d Q R X qW W d Q R X d S )	Nr^   r*   r,   r+   1Zdf_)r*   r+   )r  r+   )r   r   r  r  r  r   rC   ZrandsrQ   r>   r?   r@   )
r5   r6   r7   rk   rl   rm   Zdf5r9   r   r   r:   r:   r;   7test_append_with_diff_col_name_types_raises_value_error  s    
zDTestHDFStore.test_append_with_diff_col_name_types_raises_value_errorc             C   s~   t ddddddddgdddd	d
dddgd}||jdk }t|$}|jd|ddd |jdd}W d Q R X tj|| d S )Nr,   rq   r/   ztest & testr  r*   r+   rr   r   rO   r   r   r   )r,   r/   testr0   T)r.   r`   za = "test & test")r   r,   r   rQ   ra   rC   rV   )r5   r6   r7   ru   r9   r[   r:   r:   r;   (test_query_with_nested_special_character"  s    
z5TestHDFStore.test_query_with_nested_special_characterc       
      C   s  t |}t|d ttddddddgddddgdd}|jd|dd	 |jd}tj|| t|d
 ttddddddgddddgdd}|jd
|dd	 |jd
}tj|| t|d t|ddddddgd}|jd|dd	 |jd}tj	|| t|d tdddddddgj
d}|jd| |jd}tj|| t|d tddtjddddgj
d}|jd| |jd}tj|| t|d |j }ttdj
d|d< |jd| |jd}tj	|| |j }d|kstd|kstt|d ttddddddgddddgdd}|jd|dd	 |jd}tj|| t|d |jd|dgd ||jjddg }|jddgd}tj	|| ||jjddg }|jdd gd}tj	|| ||jjdg }|jdd!gd}tj	|| ||jjd"g }|jdd#gd}tj	|| |jd| t||g}||jjddg }|jddgd}tj	|| |j }	|	d jj |	d< tjt |jd|	 W d Q R X |jd$}|d k	st|jd tjtd%d& |jd$ W d Q R X W d Q R X d S )'Nr   r,   r/   rq   r   F)
categoriesZorderedr0   )r.   Z	s_orderedTr7   r*   r+   rr   r   rO   r   )r   valssirG  Zsi2rk   Zabcdefgs2z/df2   z/df2/meta/values_block_1/metarl   )r`   zs in ["b","c"])rR   zs = ["b","c"]z
s in ["d"]rc   z
s in ["f"]zdf3/meta/s/metaz-'No object named df3/meta/s/meta in the file')r=   )r   r   r   r
   rQ   ra   rC   rT   r   rV   rW  r   r   rX  r   r   r4   r   r  r   catZremove_unused_categoriesr>   r?   r@   r  r   )
r5   r6   r9   r   r[   r7   rk   r   ru   rl   r:   r:   r;   test_categorical/  s    






















zTestHDFStore.test_categoricalc       	      C   s   ddg}ddg}ddg}t t|||d}|jg d d f }t|2}|j|dd	d
d t|ddd}tj|| W d Q R X |jj	d|_|j
j	d|_
|jg d d f }t|2}|j|dd	d
d t|ddd}tj|| W d Q R X d S )NZESP_012345_6789ZESP_987654_3210Z
APF00006npZ
APF0001immg333333@g#@)obsidsimgidsr  r7   r0   T)r.   r`   zobsids=B)rR   rG  )r   rW   rf   r   rH   r$   rC   rV   r  rW  r  )	r5   r6   r  r  r  r7   ru   r8   r[   r:   r:   r;   test_categorical_conversion  s     

z(TestHDFStore.test_categorical_conversionc             C   s   t jdddtjgtjtjtjtjgddddgt jd gd tdd	}|jjd
|d< |jjd
|d< |jjd
|d< |}t	|.}|j
|dddd t|d}tj|| W d Q R X d S )Nr,   r/   rq   r*   r+   rr   r   )r   )r,   r/   rq   r   rG  r   r7   r0   T)r.   r`   )r1   r   r   r   r   r  r,   rW  r/   r   rH   r$   rC   rV   )r5   r6   r7   ru   r8   r[   r:   r:   r;   !test_categorical_nan_only_columns  s    


z.TestHDFStore.test_categorical_nan_only_columnsc             C   s   t ddgddggd}t|n}tjt |j|ddd W d Q R X |j|ddd t|d}tj|| |j	|szt
|j	|st
W d Q R X d S )Nr,   r   )r   r  r7   r-   )r.   r0   )r   r   r>   r?   r@   rH   r$   rC   rV   rG  r4   )r5   r6   r7   r8   otherr:   r:   r;   test_duplicate_column_name  s    

z'TestHDFStore.test_duplicate_column_namec             C   sp   t ddgddgd}t|H}|j|ddd t|d}tj|| |j|sTt|j|sbtW d Q R X d S )	Nr*   r+   r   r  )rP   r)   r7   r0   )r.   )r   r   rH   r$   rC   rV   rG  r4   )r5   r6   r7   r8   r  r:   r:   r;   test_round_trip_equals  s    

z#TestHDFStore.test_round_trip_equalsc          
   C   sT   t tjjd	d}tddddd|_t|}||d< tj|d | W d Q R X d S )
Nr^   rO   )r_   Z0sZ1sZexample)r7  r  r  r   r7   )r^   rO   )	r   r   r  normalr   rY   r   rC   rV   )r5   r6   r7   r9   r:   r:   r;   !test_preserve_timedeltaindex_type  s
    
z.TestHDFStore.test_preserve_timedeltaindex_typec             C   s   t tjjddtdtdd}d|j_|jddd	}|jj|j	j
  }t|F}|j|d
dd|dd td}t|}t|d
|d}||kstW d Q R X d S )Nr   rO   abcdABCDE)rY   r   lettersrU  T)rt   rQ   r7   r,   F)r   rQ   r`   rY   ZBCD)r   )r   r   r  r  r   rY   r   r3  r  r   r-  r   rH   r$   r4   )r5   r6   r7   r`   r8   Z	cols2loadZcols2load_originalZ	df_loadedr:   r:   r;    test_columns_multiindex_modified  s      
z-TestHDFStore.test_columns_multiindex_modifiedc       	      C   s>  t jt jt jt jt jg}t jt jt jg}x|D ]x}t	t
jjdd|dd}t|L}tdd6 d}tjt|d |j|dd	dd
 W d Q R X W d Q R X W d Q R X q.W x|D ]}t	t
jjdd|dd}t|Z}tddD |j|dd	dd
 tj|dd|jd  dd}t|s"tW d Q R X W d Q R X qW d S )Nr^   r+   )r   T)r   z-cannot have non-object label DataIndexableCol)r=   r7   r0   )r.   r`   z	index = [r   ])rR   )rC   r9  r7  r:  ZmakeTimedeltaIndexr;  r8  ZmakeCategoricalIndexr<  r   r   r  r  r   r   r>   r?   r@   rH   r1   r$   rY   rE   r4   )	r5   r6   Ztypes_should_failZtypes_should_runrY   r7   r8   rA   r[   r:   r:   r;   $test_to_hdf_with_object_column_names  s,    

4

z1TestHDFStore.test_to_hdf_with_object_column_namesc             C   s   t tjjddtdtdd}d|j_|jddd	}t|T}|j	|d
dd t
|d
}t|dd}t
|d
}tj|| |jst|j  W d Q R X d S )Nr   rO   r  r  )rY   r   r  rU  T)rt   rQ   r7   r   )r   r   )r   r   r  r  r   rY   r   r3  r   rH   r$   r!   rC   rV   r   r4   r   )r5   r6   r7   r8   directr9   indirectr:   r:   r;   test_read_hdf_open_store:  s     



z%TestHDFStore.test_read_hdf_open_storec             C   s   t tjjddtdtdd}d|j_|jddd	}t|`}|j	|d
ddd t
|d
}t
|d
dd}t|tsxtt|j }tj|| |jj  W d Q R X d S )Nr   rO   r  r  )rY   r   r  rU  T)rt   rQ   r7   r   r  )r   r.   )r  )r   r   r  r  r   rY   r   r3  r   rH   r$   rH  r&   r4   next__iter__rC   rV   r9   r   )r5   r6   r7   r8   r  r  r  r:   r:   r;   test_read_hdf_iteratorJ  s     

z#TestHDFStore.test_read_hdf_iteratorc             C   s   t tjjddtdtdd}t|f}tjt t	|d W d Q R X |j
|d t|dd	}|j  tjt t	|d W d Q R X W d Q R X d S )
Nr   rO   r  r  )rY   r   rI   r7   r   )r   )r   r   r  r  r   r   r>   r?   r   r$   rH   r!   r   )r5   r6   r7   r8   r9   r:   r:   r;   test_read_hdf_errorsX  s     
z!TestHDFStore.test_read_hdf_errorsc          
   C   s(   t jt ttdd W d Q R X d S )Nr~   r7   )r>   r?   r&  r$   r   )r5   r:   r:   r;   #test_read_hdf_generic_buffer_errorsf  s    z0TestHDFStore.test_read_hdf_generic_buffer_errorsc             C   s^   t tjjddtdtdd}t|,}tjt |j	|ddd W d Q R X W d Q R X d S )	Nr   rO   r  r  )rY   r   r7   Zfoolib)r   )
r   r   r  r  r   r   r>   r?   r@   rH   )r5   r6   r7   r8   r:   r:   r;   test_invalid_complibj  s     
z!TestHDFStore.test_invalid_complibc             C   s   t tjjddtdtdd}t|X}|j|ddd t|}tj	|| |j|d	dd t
jt t| W d Q R X W d Q R X d S )
Nr   rO   r  r  )rY   r   r7   r,   )r   rk   )r   r   r  r  r   r   rH   r$   rC   rV   r>   r?   r@   )r5   r6   r7   r8   rereadr:   r:   r;   test_read_nokeyr  s     
zTestHDFStore.test_read_nokeyc             C   s   t tdttdddd}t|\}|j|dddd	 t|}tj|| |j|d
ddd	 t	j
t t| W d Q R X W d Q R X d S )NrO   ZabacdrG  )r   )r   rq   r7   r,   r0   )r   r.   rk   )r   rX   r   r   r   rH   r$   rC   rV   r>   r?   r@   )r5   r6   r7   r8   r  r:   r:   r;   test_read_nokey_table  s    
z"TestHDFStore.test_read_nokey_tablec             C   sF   t |4}t|}|j  tjt t| W d Q R X W d Q R X d S )N)r   r!   r   r>   r?   r@   r$   )r5   r6   r8   r9   r:   r:   r;   test_read_nokey_empty  s
    
z"TestHDFStore.test_read_nokey_emptyc             C   sf   t tjjddtdtdd}t|(}t|}|j|ddd t|d}W d Q R X t	j
|| d S )	Nr   rO   r  r  )rY   r   r7   r,   )r   )r   r   r  r  r   r   r   rH   r$   rC   rV   )r5   r6   ru   r   path_objr  r:   r:   r;   test_read_from_pathlib_path  s    
z(TestHDFStore.test_read_from_pathlib_pathzpy.pathc             C   sr   ddl m} ttjjddtdtdd}t|(}||}|j|dd	d
 t	|d}W d Q R X t
j|| d S )Nr   )localr   rO   r  r  )rY   r   r7   r,   )r   )Zpy.pathr  r   r   r  r  r   r   rH   r$   rC   rV   )r5   r6   Z	LocalPathru   r   r  r  r:   r:   r;   test_read_from_py_localpath  s    
z(TestHDFStore.test_read_from_py_localpathc             C   s   t jddddgi}t|}|jd|ddd d	}|jdd
|d}|jsRtd}|jdd|d}|jddgd d f }tj	|| d}|jdd|d}|jdgd d f }tj	|| W d Q R X d S )Nr)   g~  eAg$  eAg'1  eAr  r0   T)r.   r`   g  eAzA < z.4fg   eAzA > r*   r+   zA == )
r1   r   r   rQ   ra   emptyr4   r   rC   rV   )r5   r6   r7   r9   cutoffr[   ru   exactr:   r:   r;   test_query_long_float_literal  s    

z*TestHDFStore.test_query_long_float_literalc             C   s  t jddgtdddddgddgdd	d
ddgd}t|}|jd|ddd t jd}|jddd}|jdgd d f }tj	|| xLd D ]B}xRddt jdt j
ddgD ]4}d| d}	tjt |jd|	d W d Q R X qW d}xBd!D ]:}
|
 d| d}	tjt |jd|	d W d Q R X  qW xtdddgddd
gD ]\}}
|
 d| d}	|jd|	d}|dkr|jdgd d f }n2|dkr|jdgd d f }n|jg d d f }tj	|| qLW qW W d Q R X d S )"Nz
2014-01-01z
2014-01-02r+   )r  g?g333333?r*   )r  	real_datefloatr  r  r  r  r  )r   r  r0   T)r.   r`   zreal_date > ts)rR   <>==g @r   zdate z vr,    r  z1.1r   )r  r  r  )r  r  r  )r1   r   r   r   rQ   r   ra   r   rC   rV   Z	Timedeltar>   r?   rh   r@   zip)r5   r6   r7   r9   r   r[   ru   opr	  queryr  r:   r:   r;   test_query_compare_column_type  s@    


 


z+TestHDFStore.test_query_compare_column_typec             C   sL   t j }t|&}|j|d|d tj|ddd}W d Q R X t j|| d S )Nr  )rI   r.   r   )rI   r   )rC   ZmakeFloatSeriesr   rH   r1   r$   rT   )r5   r.   r6   rM   r8   r[   r:   r:   r;   test_read_hdf_series_mode_r  s
    
z(TestHDFStore.test_read_hdf_series_mode_rc             C   sF   t jd2}tj|}tj|t|ks.tW d Q R X W d Q R X d S )Nzfoo.h5)rC   Zensure_cleanr1   r!   r   fspathr   r4   )r5   r8   r9   r:   r:   r;   test_fspath  s    zTestHDFStore.test_fspathc          
   C   s^   t jdddgt jdddgddd	}t|d
ddddd}|d }tj|| W d Q R X d S )Ng      ?r+   rr   z
2015-01-01z
2015-01-02z
2015-01-05rP   )r  )rY   rj  r  rm  z*periodindex_0.20.1_x86_64_darwin_2.7.13.h5r   )r   r[  )r1   r   ZPeriodIndexr   rC   rV   )r5   rk  ru   r9   r[   r:   r:   r;   test_read_py2_hdf_file_in_py3	  s    
z*TestHDFStore.test_read_py2_hdf_file_in_py3rR   re   c             C   sh   t jdddg}tdF}t j|0}|jd|d t j|d|d}tj|| W d Q R X W d Q R X d S )Nr*   r+   rr   zempty_where.h5r7   r  )rR   )r1   r   r   r!   r2   r$   rC   rV   )r5   rR   r7   r8   r9   r[   r:   r:   r;   test_select_empty_where"  s    
z$TestHDFStore.test_select_empty_wherer  Z2019rT  rr   r  )r  r  r  abcc             C   s^   t j||g}tjd|dgd}t|,}tjtdd |j|d W d Q R X W d Q R X d S )Nr   r,   )rY   r   zSaving a MultiIndex)r=   r7   )	r   r  r1   r   r   r>   r?   r&  rH   )r5   r  r6   r2  r7   r8   r:   r:   r;   &test_to_hdf_multiindex_extension_dtype1  s
    	
z3TestHDFStore.test_to_hdf_multiindex_extension_dtypec          	   C   s8   |ddd}d}t jt|d tj| W d Q R X d S )Nrj  r  z"legacy_hdf/incompatible_dataset.h5z_Dataset\(s\) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.)r=   )r>   r?   r@   r1   r$   )r5   rk  Z	data_pathmessager:   r:   r;   test_unsuppored_hdf_file_error@  s    z+TestHDFStore.test_unsuppored_hdf_file_error)r   r+   )r*   r+   )NN)F)F)F)N)r   r   r   r<   rB   rG   r\   rb   rj   rp   rv   r   r   r   r   r   r   ignore_natural_naming_warningr   r   r   r   r   r   r   r>   markZparametrizers   r   r   r   r  r  tdZskip_if_windows_python_3r  r  r  r  Zxfail_non_writeabler  filterwarningsr+  r5  r=  Zskipifr   rB  r   r   r  rO  rY  r]  r`  ra  re  rj  r~  r  r  paramr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   __version__r  r  r  r  r  r  r  r  r  r  r  r  r  rf  rh  r  r  r  r  r  r  r  r   r  r  r  r
  r  r  r  r  r  r"  r#  r%  r(  r3  r4  r6  r<  r?  rA  rC  ZxfailrH  rQ  rR  r   rS  rT  rU  rV  rZ  r]  r_  rb  rc  rd  r  rh  r  ri  rl  r	   ro  rp  rq  rr  r|  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Z
skip_if_nor  r  r  r  r  r  r  r   r   r   r  r  r:   r:   r:   r;   r(   A   s  
	a/+	-A0,5$F."


._+t
  $ 3F3-	8 1(24	"  		"-@	(g5CG5:;(!4@*IhF(({
:
x#0.r(   )Dr   r   Zdistutils.versionr   r   rj  r   r   pathlibr   r:  r   warningsr   r   Znumpyr   r>   Zpandas.compatr   r	   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  r   r1   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingrC   Zpandas.tests.io.pytables.commonr   r   r   r   r   r   r   Zpandas.io.pytablesr    r!   r"   r#   r$   Z	pandas.ior%   r&   re  r  r  r  Zsingler(   r:   r:   r:   r;   <module>   s0   D
$
