B
    `"                @   st  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m  m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*m+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?@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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*dLdMdN Z+dOdP Z,dQdR Z-ejj.e/  dSdTdUdV Z0e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d`dae3gdbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;drds Z<dtdu Z=e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*ddd ZZdd Z[e"j(ejddej>de"j#dxgdd Z\e"j(dd Z]e"j(ejd`e1j^e1j_e3ddgdd Z`dd Zadd ZbddÄ Zcddń ZdejddydwgddȄ Zeddʄ Zfe"j(ejddej>de"j#dxgdd̄ Zgej*d͡ddτ Zhddф Ziddӄ ZjddՄ Zkddׄ Zlddل Zmddۄ Zndd݄ Zodd߄ Zpej*ddd Zqe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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.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Ze"j(d8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZedLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Ze"d`dadb Zdcdd Zdedf Zejdvdwdygdgdh Zdidj Zdkdl Zejdmdndodpg dqggdrds Zejdtedudvdwdxdyeedzgd{d| Zd}d~ ZdqS (  TestHDFStorec          
   C   s   t dddgi}t|b}t|N}|jd|dd |jd|dd |djdksZt|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:   R/home/dcms/DCMS/lib/python3.7/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 |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 }t||d| t }t||d| t }t||d| ttt	dt	dd}|j
 dd	d
 t ddgd}t||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 |d}t|| 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          
   C   s  t |}t }|jd d j|dddd |jdd  j|dddd tt|d| |jd d j|dddd |jdd  j|dddd tt|d| W d Q R X t |}t }|jd d j|ddd |jdd  j|dddd tt|d| |jd d j|dddd |jdd  j|ddd tt|d| W d Q R X t |}t }|j|dddd tt|d| |j|ddd	d tt|d| |j|ddd tt|d| ||d tt|d| W d Q R X t|d}|j}t }t	|d |j
d|jd d ddd |j
d|jdd  ddd t|d| t	|d |j
d|jd d ddd |j
d|jdd  ddd t|d| t	|d |j
d|jd d ddd |j
d|jdd  ddd t|d| t	|d |j
d|jd d ddd |j
d|jdd  dd d t|d| W d Q R X t |}t }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          
   C   s  t |}t }tdd t|d |d| |djrDt	d}t
jt|d |d| W d Q R X tdd t|d |d| |djst	t|d |d| |djst	tdd  W d Q R X t|}t }tdd ||d t|}|djr"t	W d Q R X t
jt|d |j|ddd	 W d Q R X tdd ||d
 t|}|d
jst	W d Q R X |j|ddd	 t|}|djst	W d Q R X t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 |d< t |d< t |d< t|dks>tdddh}t| |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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 ]}| q*W W d Q R X  S )Nrbc                  s     j S )N)read
block_sizer:   )chunk_num_blocksrc   hr:   r;   <lambda>5      zDTestHDFStore.test_no_track_times.<locals>.checksum.<locals>.<lambda>r~   )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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}|d	d
}||d|d ||d|d ||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 ] }
||
}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 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 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 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}|d| | dgks@t|j|jj	dd | 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| |  t |d< t |d< t |d< t }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dddd	d	|d< tdddd	d	|d< t	j
|j|jdd dgf< | jdd}tdd tdtjj ||d< W d Q R X |j|jjd  |jt|ksRt|jt|ksft|  W d Q R X t |4}t }|d| |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 |d< t |d< t |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 |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 |d< t |d< t }t|d |d|d d  |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 |d| d |dj	_
d}tjt|d |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    fdd} fdd}|d |d |d |d |  d S )	Nc                s  t V}| dkr6tt t|| d W d Q R X n$t|| d}|jj| ksRt|  W d Q R X t f}| dkrt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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|  W d Q R X d S )N)rzr+)r   r7   r   )r   zNmode w is not allowed while performing a read. Allowed modes are r, r\+ and a.)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|  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 |x}t|dd}t |d< tt |d W d Q R X |  |j	rVt
|d |j	sjt
t|dkszt
|  |j	rt
t|dd}t |d< |d |j	st
t|dkst
|jdkst
|  |j	rt
|d |j	st
t|dkst
|jdkst
|  |j	r2t
|d |j	sHt
t|dksZt
|jdksjt
|  |j	r~t
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 |j}t }t|dddd}||d< |d| t|d | t|d | |  tj	|rnt
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 |d< |  |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 |d< |d}|d }t|| |d}|d }t|| tjtdd |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 dddgt dddgt dddgt d	d
dgt d
d	dgt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}|d|d  |d|d  |d|d  |d|d  |d|d  |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'||g}||}d(|krt|||  nt|||  qW qTW W d Q R X d S ))Nr*   r+   rr      rO   r         	   r^      )r*   r+   rr   )r   rO   r   zi,i,i)dtype)r   r   r   )r^   r      )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   )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 }||d< |j}t|| t|d}t|| t }||d< |j}t|| x,dD ]$}t	
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   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 }t }||d< |d d |d< |d d |d< |d d |d< |d d |d< |jd|d d dd	 tt |jd|dd  d
d W d Q R X t|d tt |jd|dd  d
d W d Q R X tt |jd|dd  d
d W d Q R X |jd|d d ddd t	|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d|d}t||d}||d< t|d | ||d< t	|d | tdgd	d tdD  }ttd
|d}t||d}||d< t|d | ||d< t	|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d|ddd t|d | t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  }t|P}tt |jd|ddd W d Q R X |jd|ddd t |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  }t|}|j|ddd t|d}t || 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|d}t || tj|dd>}x6|j	dddD ]$}|j
jdkst|j
jd kstqW W d Q R X W d Q R X t|}||d t|d}t || tj|ddD}x<|j	dddD ]*}|j
jdkst|j
jd ksrtqrW W d Q R X W d Q R X t|}t|}|jd|ddd |d| |  tj|dd}x<|j	dddD ]*}|j
jdks$t|j
jd kstqW x<|j	dddD ]*}|j
jdk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  }tjj}tds$|d tds8|d tdd  fdd|D }x|D ]\}}t|}d}|j	||||d t
||}	t |	| tj|d	d
}
xT|
jd| ddD ]>}|jj|kst|dkr|jjd kstq|jj|kstqW |
  W d Q R X qZW d S )NZlzobzip2r   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dd}| |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  }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ddddd|d< tddddd|d< tj|j|jdd dgf< | j	d
d}t
|V}t|d td
d  tdtjj |d| W d Q R X |d}t || 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 }t|d |d|d d  |d|dd   t|d | t|d |jd|d d dd |d|dd   t|d | t|d |d	|d d  |d	|dd   t|d | t|d
 |d
|d d  |d
|dd   t|d | tddgddgddgddggd}d|d< t	j
|jd< t|d |d| t|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	dd }t|d! |d!| t|d! | t|d! |jd!|d"d#d$gd% t|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_column)r+   r  r7      rO   )highr_   )r   i  i   @l           l          @l            l            l            )u08u16u32Zu64)rY   Zuintsr   r!  r"  )r`   )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 }t }ttd}|d| |d }t|| |j	d ksXt
|d| |d }t|| |j	d kst
d|_	|d| |d }t|| |j	|j	kst
||dk }|dd}t|| ||dk|jd	k @  }|dd
}t|| ttjdddgd}tt||d< d|d< d|jdddf< |jddgdd | }	|	jd|	_|d|	 t|d |	 W d Q R X d S )Nr]   ssr   rd   ns<   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   r,  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ddtdd}|t||_t d  jd|| d t	
| 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	
|d | |jdgd}|dtdd	d
}t	
|| W d Q R X d S )Nrd   r   )r)   rP   rO   )rY   )r+   r)   )rr   rP   r7   ascii)encodingr)   )r   z	columns=A)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 ||tj}	t	|	| d S )	Nzlatin-1re   r  c                s$   g | ]}t |tr| 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   r=  rF  rI   serr9   ZretrZs_nanr:   )rE  r;   test_latin_encodingT  s    
z TestHDFStore.test_latin_encodingc             C   s  t |}tttjddtjdtjdddtdtdddd	d	d
t	dd}t
|d tj|jd	dddddgf< |d|d d  |d|dd   t|d | | }tj|jd d df< t
|d |d|d d  |d|dd   t|d | | }tj|jd d df< t
|d |d|d d  |d|dd   t|d | | }tj|jd d df< t
|d |d|d d  |d|dd   t|d | W d Q R X d S )Nr   int32rd   r   20010101i  r*   r+   r   )r)   A1A2rP   r*  DE)rY   r      rL  rP   rN  rO  r^   rM  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dtjddt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
|d |d
d   t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | tdd t|d |	d|d d  |	d|dd   t
|d | tdd t|d |	d|d d  |	d|dd   t
|d |d
d   ttjdtjddddt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
|d | t|d |j	d|d d dd	 |j	d|dd  dd	 t
|d | ttjdtjdddtdtddddddt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
|d | t|d |j	d|d d dd	 |j	d|dd  dd	 t
|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
|| W d Q R X d S )Nr   )rL  rM  )rY   r   rP  r7   r^   T)dropnark   Fzio.hdf.dropna_tablerl   rm   rd   r   )rL  rM  rP   r*  rK  i  r*   r+   )rL  rM  rP   r*  rN  rO  )Zcol1Zcol2df_with_missingr0   )r.   )r   r   r   r  r  r  r   r   r   rQ   rC   rV   r1   rn   r   r   r   rH   r$   )r5   r6   r9   r7   rV  r8   Zreloadedr:   r:   r;   test_append_all_nans  sz    













z!TestHDFStore.test_append_all_nansc          
   C   sn   t |\}ttdtdd}||d tjtdd t|d W d Q R X ||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tdtdd}||d t|d8}tjtdd t	|d W d Q R X t	|d W d Q R X W d Q R X d S )Nr+   )r,   r/   rX  r   z 'No object named k2 in the file')r=   rY  )
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d |_t|d |jd|jd d d df dgd |d|jd d dd f  t|d | |	dd}|j
dgd}t|| |	dd}|j
dg|jd	d
 d}t|| tt |	dd W d Q R X W d Q R X d S )Nr   r+   r   )axesz	columns=Ar)   )r   )z	columns=Azindex=df.index[0:4]r   r   )r   rY   zcolumns=A and index>df.index[4])r   rC   r   rY   Z
_with_freqr   rQ   rf   rV   ra   r;  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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|	d}||d< |j
ddd |d| qW W d Q R X t |}ttjddtddd}tdgt| dd|d< tdgt| d	d|d	< |d| tdgt| d	d|d< tt |d| W d Q R X tdgt| dd|d< tt |d| W d Q R X W d Q R X d S )Nr^   r+   r0  )r   rY   r*   int64)r   int16r   rr   r)   T)r+  r7   float64)r   r   Zint16_2g      ?Zfloat_3)r   rX   r   r   r  r  r   r   rE   popr-  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} d	| t d	| |d	d
d tddgddgg} d	| t||g}t d	| |d	d
d tddgddgg} jd|ddid t d| |dd
d  d| tddgddgg}t	t
  d| W d Q R X t d} jd|d ddid t d|d   jd|d dddid t d|d   jd|ddd id! |  jd"d#d} d| t dt||g  jd$|d ddd id!  d$|d  t d$t|d |d g t d% t }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<  d%|  d%}t|| 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  d%jd2gkshtt d%  jd%|dgd2d3id |d%d2d3  d%jdd2gkstt d%  jd%|dgdd3id |d%dd3 |d%d4d3  d%jdgkstt d%  jd%|d d5 d3d  jd%|d5d  d3d t d% | td&d&d&d6d6d6gd2gd7}t d% t	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|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_1rP  |   ZasdqyiZ  ZdggnhefbdfbZdf_big2valuesr  )min_itemsizedf_newZ
abcdefqhijZabcdefghijklmnopqrtsuvwxyzr*  r%  rP   rY   r   Zss2)r`   rj  ss3r0   r   )r.   rj  longer)r*  ss4r7   rd   stringr*   r   string2r   r   Zstring3c                s"   t  | jj|jst|d S )N)r   r3   r0   rc  rd  r4   )rI   r   r_   )r9   r:   r;   re    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@   makeMixedDataFramer-  rT   r2   rR  reset_indexassignr1   r   r   r   r   r   rY   rW   rX   r3   r`   r4   )r5   r6   re  r7   rk   ru   rk  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|d	| W d Q R X d S )Nr   r,   r/   rq   r   erc   re   r7   r*   )rj  )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 d}|j|ddddid |  jddd}|j|dd	dd
 tt	
|dt	||g |d j|ddddid |d j|dd	dd
 tt	
|dt	|d |d g W d Q R X d S )Nr*  rl  r0   rY   r   )r.   rj  rm  )r*  T)rQ   r.   rP   rn  )r   rC   rs  r-  rH   rR  rt  ru  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 |d}t|4}|j|d|dd t j|ddd}t|| 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  rH  r8   r[   r:   r:   r;   test_to_hdf_errors  s    
zTestHDFStore.test_to_hdf_errorsc       
   	      s~  t | t }d|jd|jdf< t d  jd|d d dgd  d|dd   t d |  j	j
jjjjjdkst j	j
jjjjjdkst dd}||jdk }t||  dd	}|j|jd
d  d}||jdk }t|| | }d|d< tj|j|jdd
 df< d|j|jdd df< t d  jd|dgd  dd}||jdk }t||  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 | }d|jd|jd"f< d#|jd|jdf< d|d< |jd}tj|jdd
|f< d|jdd|f< d|d< |jd}tj|jdd|f< d|jd$d%|f< t d  jd|d"dddgd  dd&}||jdk|jdk@ |jdk@ |jdk @  }tj||d'd'd(  dd)}||jdk|jd*k@  }tj||d'd'd( W d Q R X t | | }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 d0  jd0|dd1ddd-gd  d0d}||jdk }tj||d'd'd(  d0d2d3d4g}||jdk|jdk@ |jdk@  }tj||d'd'd( W d Q R X t |( tjd5 t d6d%d7}	t!tj"d%d/|	d"dd1gd8}d|d< tj|j|jd
d df< d|j|jd$d+ df< |jd d dd1gf # |jd d dd1gf< d*|d<  jd0|dd1ddgd  d0d}||jdk }t||  d0d2d3d9g}||jdk|jdk@ |jdk@  }t|| 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   ro  r*   r   rO   r   zstring='foo'c                s"   t  | jj|j|kstd S )N)r   r3   r0   rc  rd  r4   )rI   r   r_   )r9   r:   r;   re  $  s    z=TestHDFStore.test_append_with_data_columns.<locals>.check_col   )r`   rj  ri  Z	foobarbahrp  Z
foobarbah1Zstring_block1Z
foobarbah2Zstring_block2(   r  )ro  rp  ri  rg  r)   g      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_dcr*  zB > 0zC > 0zstring == fooi  z1/1/2000)periods)rY   r   zstring == "foo")$r   rC   r   rf   r   Zget_locr   rQ   rV   r   r   r7   r0   colsrY   
is_indexedr4   rP   ra   r;  rR  r   r   r   ro  rp  r)   r   r   r*  r  seedr   r   r  abs)
r5   r6   r7   r[   ru   rk  re  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 }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  d| t	
t  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|S )N)r   r3   r0   r  )tcolumn)r9   r:   r;   col  s    z1TestHDFStore.test_create_table_index.<locals>.colrd   ro  r   rp  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 }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|S )N)r   r3   r0   r  )r  r  )r9   r:   r;   r    s    zGTestHDFStore.test_create_table_index_data_columns_argument.<locals>.colrd   ro  r   rp  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dd|dddgd}t|V}|d| |d}t	|| |jdddgd}|j
ddgd}t	|| W d Q R X tdD}|j|ddd t|dddgd}|j
ddgd}t	|| W d Q R X d S )Nrd   r   bazquxonetwothreer   r*   r+   rr   )levelscodesnamesr^   r)   rP   r*  )rY   r   r,  )r   ztest.hdfr7   r0   )r.   )r   r   r   r  r  r   rQ   ra   rC   rV   r;  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dd	d
|d}| }t|jt	rTt
|j|_t|}|d| tj|d |ddd |jd|dd tj|d |ddd tt |jd|ddgd W d Q R X tt |jd|ddd W d Q R X W d Q R X t|6}|d| |d| t|d t||f W d Q R X ttdd	d
ttdddd}| }t|jt	rt
|j|_t|,}|jd|dd tj|d |ddd W d Q R X d S )N)r)   r,   )r)   r/   )rP   r,   )rP   r/   firstsecond)r  r   rr   r   )r   r7   T)r  Zcheck_column_typer   r0   )r.   rk   r)   )r.   r`   rl   ABCDrd   )r   )r   from_tuplesr   r   r  reshaperR  rB  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dddg| d}|d| t|d| t|d ttdddg|dd d gd}|d| t|d| t|d	 t	td
|dd d gd}|d	| t	td
|dddgd}t
|d	| t|d ttdddg|dddgd}tt |d| W d Q R X t|d ttdddg|dddgd}tt |d| W d Q R X t|d ttdddg|dd	dgd}|d| t|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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   r   )rY   Zlevel_1Zlevel_2r  )N)r   r   r   r   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dd|dddgd}t|N}|jd|dd |dg }t|j	ddgd| t|j	ddd| W d Q R X t
tjd|dd}t|,}|jd|dd t|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   r*  )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
|| 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  }t|^}|d| tt |jddgd W d Q R X t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d|dd |d}t|| |jd|dd |d}t|| W d Q R X  fdd}t }d	|d
< d|d< |d d|d< |d dk|d< td|d< td|d< ||tj t  }tt	dd}|d| t
jtdd |d W d Q R X ttjddt	dd}|d| t|d| |d| t|d| tt	dd}|d| t|d| W d Q R X d S )Nr7   r*   )	chunksizer   r^   )Zexpectedrowsc          
      sN   xHdD ]@}t  dd*}|jd| |d |d}|||  W d Q R X qW d S )N)r^   rq  i  r   )r   rJ   )r  )r   rQ   ra   )rJ   
comparatorrq   r9   r[   )r6   r:   r;   r     s
    

z,TestHDFStore.test_append_misc.<locals>.checkrd   ro  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   rQ  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          
   C   s  t |}t }dggt| |d< |jd tjks<tt	t
 |d| W d Q R X dggt| |d< dggt| |d< t	t
 |d| W d Q R X t }ttddd|jd	}|t}tj|d
d< ||d< |jd tjkstt	t
 |d| W d Q R X t	t
 |dtd W d Q R X t	t
 |dttd W d Q R X t }|d| d|d< t	t |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   rQ  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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}|d| t|j|d j tddddgidd}|d	| t|j|d	 j tt |d	| W d Q R X tt	j
dgdgdggd
ddgd}|d| t|j|d j |jd dksttdd dD }d|d< d|d< |d d|d< |d dk|d< td|d< td|d< |d| |dj }dd |jD |_tdddddddddd	}| }| }t|| 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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>)r  r`  rJ  r^  r_  int8rd   ro  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  r`  rJ  r  r_  r  r^  r  zdatetime64[ns])r   r   rQ   rC   rT   r  r>   r?   r@   r   r   r4   rQ  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  }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ddddd|d< tddddd|d< tj|j|jdd dgf< | j	d
d}t
|$}|d| t |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dddfg}xH|D ]@\}}t }|||< tt |d| | W d Q R X q$W W d Q R X t }d|d< d|d	< tddd|d
< |	 j
dd}t |(}tt |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  dddtdg}tjj||d}t  ddd	}t|d|d
}t|j|	td
 }t|J}|d| |d}	t|	| |d| |d}	t|	| 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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 |
d}t|| |j
ddd}t|| |j
ddd}t||jd	d   |
dd}t||jd	d   |
dd}|jdgd}t||jdd   |
dd}|jdd  }t||jdd   t|d |d| |
d}t|| 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   r*  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   rT  r2   )r5   r6   r7   r9   r[   r:   r:   r;   test_append_with_timedelta  s8    



z'TestHDFStore.test_append_with_timedeltac          
   C   s.  t |}t }t }||d< ||d< t|d t|dksFtt||d  t|d t|dkspttj	t
dd |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 }d|d< d|j|jdd df< |jd|d	d
 tt	 t
  W d Q R X tt |dd W d Q R X tt |dd W d Q R X W d Q R X W d Q R X t|X}tt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ddtdtdddd}|j|dd	d
 tt t|ddd W d Q R X W d Q R X d S )NT)r   rd   ro  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dd|jdddd}|jd|dd	 ||j|	d
k }dd l
}|dd}t|| ddl
m
} |dd}t|| |dd}t|| 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|t j|d t  }| 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  ri  r   Zasarray)r5   r6   r   r   Zts2Zts3r:   r:   r;   test_seriesK	  s     zTestHDFStore.test_seriesc             C   s6   t jd}tt 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 d}dddg}t jdd}t|||d}tdd	& td
tj	j
 | j|tj|d W d Q R X d S )Nr^   )g        g      ?)g       @g      @)g      @g      @r}  )rr   r^   )rY   r   T)r   r   )r8   )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          	   C   s2  t dd t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 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 d	g}| j|||d W d Q R X t dd t|ddg}| j|||d t|tj dg}| j|||d t|ddg}| j|||d t|t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dddt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	  r~   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   ri  funcrH  r:   r:   r;   test_index_typeso	  sB     zTestHDFStore.test_index_typesc             C   s\   t dd}ttjt||d}y| j|tj|d W n t	k
rV   t
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  }tj|jd< tj|jd< | j|t j||d | j|t j||d t  }| j|t j||d t	|8}tj
t||d< ||d< |d }|j stW d Q R X | j|d d t j|d d S )N)r   r   )rO   rr   )r8   r  rd   r7   r   )r8   )rC   rD   r   r   ri  _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   rw  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t|d|d}| j|tj|d d S )Nc             S   s   g | ]}|  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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|| W d Q R X d S )Nrd   r   r  r  r  r  r  r   r*   r+   rr   )r  r  r  r^   r)   rP   r*  )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  }d|j_t|"}||d< |d }t || 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 dddgi}t ddg|_|jd|_d|j_t|*}|jd|d	d
 |d }t	|| 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 tdddtdddgdd}t jt tdddtdddgdd}t jtd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  }|d }t|"}||d< |d }t || 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|d | ||d< t|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  } d| d< d| d< | d dk| d< | d dk| d	< d
| d< d| d< |  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ddddddgd}tdddd|_t|}|d	| |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	
|| W d Q R X tt tjddddddgdt tjjddddddddgdgdd}tdddd|_t|}|d	| |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}|d	| |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+   r*  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 |d< t }||d< t|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 }t|d |d| |jdddgd}|jddgd}t|| |ddg}|jddgd}t|| t|d |jd|dgd |jdd	gddgd}||j	d
k jddgd}t|| t|d |jd|dd |jdd	gddgd}||j	d
k jddgd}t|| t|d |jd|dgd |jdd	gddgd}||j	d
k jddgd}t|| 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   r*  rN  )
r   r   rC   r   r   rQ   ra   r;  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dd}t|d |jd|ddgd |	dd	}||j
td
k }t|| tt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}x2dD ]*}|j	dd| ddgd}t|| qW ||jdk jddgd}x4dD ],}|j	dd| ddgd}t|| q@W tttjdtjdd}t|d |d| |	dd}|jt|jdd dgd}t|| tttjdtjdtjdd d!d"}t|d# |d#| |	d#d$}|jt|jdd dgd}t|| W d Q R X t |2}tttd%td%d&d'd!}|d( d t|d(< |jd)|dd |j	d)d*d+}||d, d-k }t|| tj|jd< ||d, d-k }|jd.|ddd/ |j	d.d*d+}t|| tttd%td%d&d'd!}|d( d t|d(< tj|jd0< ||d, d-k }|jd1|dd |j	d1d*d+}t|| W d Q R X t |T}t }||d dk }|jd|dd td}|j	dd2gd+}t|| W d Q R X d S )3Nz
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)Ttruer*   z	boolv == F)Ffalser   r   )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  ri  r`  r  r   z
values>2.0)rR   ri  g       @rk   )r`   rY   r*   rm   z	A>np_zero)r   r   rW   r   r   r  r  r   rQ   ra   r   r   rC   rV   r   r  r;  r  r   rY   r  rX   applyr   r   rf   rD   r`  )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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 |
dd}||jtdk }t|| |
dd}||jtdk|jdddg@  }t|| dddgdd
 tdD  }|
dd}||jtdk|j|@  }t|| tdd}|
dd}||j| }t|| t|dks~tt|jdd j}|
dd}||j|j }t|| 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=selectorrq  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   ri  )r5   r6   r9   r7   r[   ru   selectorr:   r:   r;   test_select_with_many_inputs;  s@    

6
"
z)TestHDFStore.test_select_with_many_inputsc       
   
   C   sR  t |}td}t|d |d| |d}t|jddd}t|}t|| t|jddd}t	|dks|t
t|}t|| t|jddd}t|}t|| W d Q R X t|d}td}||d	 tt t|d	dd W d Q R X tt t|d	dd W d Q R X W d Q R X t|j}td}|j|dd
d tt|ddd}t|}t	|dkst
t|| t|t|d W d Q R X t |}td}|jd|dd tdjdjd}	d|	d< |d|	 t||	gdd}|jddgdd}t|jddgddd}t|}t|| 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dd}t|d |d| |jd }|jd }|d}t|| d| d}|jd|d	}t|| d
| d}|jd|d	}t|| d| d| d}|jd|d	}t|| W d Q R X t |}tdd}t|d |d| |jd }|jd }t|jd|d}	t	|	}t|| d| d}t|jd||d}	t	|	}t|| d
| d}t|jd||d}	t	|	}t|| d| d| d}t|jd||d}	t	|	}t|| W d Q R X d S )Ng     @i Sr7   r   rx  z
index >= '')rR   z
index <= 'z' & index <= ')r  )rR   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dd}t|d |d| |jd }|jd }d| d}t|jd||d	}t|}	||j|k }
t	|
|	 d
| d}t|jd||d	}t|}	||j|k }
t	|
|	 d| d| d}t|jd||d	}t|}	||j|k|j|k@  }
t	|
|	 W d Q R X t |d}tdd}t|d |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*   z
index >= 'r
  )rR   r  z
index <= 'z' & index <= 'rx  z	index > '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dd}t|d |d| |jd }|j|d  }d| d}t|jd||d	}t	|}	||j|k }
t
|
|	 d
| d}t|jd||d	}t|dkstt	|}	||j|k }
t
|
|	 d| d| d}t|jd||d	}t|dkstt	|}	||j|k|j|k@  }
t
|
|	 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	 |d}t	
|| 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}|d| W d Q R X |djd d d kstt|d t tttdtdtdtdgdd}|d| t tttdtdddddd}|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-1rN  rY   r  rk   rK  r   Z20020101)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-1rN  )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  }t|}|jd|dd |jt|d  }td}|jjd |ksPt	d}d}|
d||g}|j|d d	d
gf }	t ||	 |
d|g}|jd d d	gf }	t ||	 t  }|d| tt |
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)   rN  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  }d|d< d|j|jdd df< t|}|jd|ddgd |dd	}|j|j|jd
 k|jdk@  }t || |dd}|j|j|jd
 k|jdk@  }t || |dd}|j|j|jd
 k|jdkB  }t || |dd}|j|j|jd
 k|j|jd k@ |jdkB  }t || |dd}|j|jdk }t || t	
t |dd W d Q R X |dd}|jd d |jddgf }t || |dd}|j|j|jd
 k jddgd}t || W d Q R X d S )Nrd   ro  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   ro  rV   r>   r?   NotImplementedErrorr   
differencer;  )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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
 }	t|}
|
jddd}t|| |
  t|ddd}t|| |j
}t|ddd}t|| t|ddd}t|| t|ddd}t|| t|ddd}t|| t|}
|
jddd}t|| |
jddd}t|| |
jddd}t|| |
jddd}t|| |
  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  }t|Z}|jd|dd tt |dd W d Q R X tt |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 }d|d< d|j|jdd df< |jd|dgd |dd}||jdk }t|| |dd	}||jdk }t|| |	 }t
j|j|jdkdf< |jd
|dgd |d
d	}|t|j }t|| d|d< d|j|jdd df< |jd|dgd |dd}||jdk }t|| |dd}||jdk }t|| 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   rR  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  }t|}t|d tjtdd |dd W d Q R X |d| tjtt	
dd |dd W d Q R X tt |jdddgd W d Q R X |dd}t |jt|jj t|tsttt |dd	 W d Q R X | }d|d
< |jd|d
gd |dd
}t |j|d
 j | }d|d
< tj|j|jdd d
f< |jd|d
gd |dd
}t |j|d
 j |jdd
dd}t |j|d
 jdd   |jdd
dd}t |j|d
 jdd   |jdd
dd}t |j|d
 jd d  |jdd
dd}t |j|d
 jd d  |jdd
ddd}t |j|d
 jdd  |jdd
ddd}t |j|d
 jdd  ttjddd}|jd|dd |d }|dd}t || 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   rr  ro  rk   )r`   r   r   rl   r+   )startr  )stop)r*  r+  r^   )r)   rP   rm   TrP   )rC   r   r   r   r>   r?   r   select_columnrQ   reescaper   Zassert_almost_equalri  r   rY   rB  r4   r@   rR  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          
   C   sR  t  }t|}t|d |d| |d}|jtt	|j
k sRtt|d tttdtdd}|d| |ddg}|jtdk st|jd|d}|jddd d f }t || |dd	d
g}|jtdd k st|jd|d}|jddd d f }t || t|tsDtt|d t|d t  }t  jdjd}|jd|ddgd |d| |dddg}|d|}	|d|}
t|	|
gdd}t||gdd}||jdk|jdk@  }t || W d Q R X t|6}ttjddtdddd}|d| |dd}|t|jdk j
}|j | }|jd|d}t || |jd|d}t || t!"t#" |jdtjt	|ddd W d Q R X t!"t#" |jdtt	|d d W d Q R X t!"t#  |jdtt	|dd W d Q R X t!"t#" |jdtt	|ddd  W d Q R X tdd!d}|jdd"d}||j
$| }t || ttjdd}|d| |jddddgd}|j dddg }t || d#gd }d$|d%< |jd|d}|j| }t || |jdddd&}|dd }t || 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   r`  )r   )rR   r*  r^   )rR   r*  r+  i  zindex in selectionTFr  )r*  r+  )%rC   r   r   r   rQ   Zselect_as_coordinatesri  r   r  rE   rY   allr4   r   rW   rX   ra   r   rV   rB  r   r  r.   r   r)   rP   r  r  r   r,  r   monthrf   r>   r?   r@   r   )r5   r6   r7   r9   rq   r[   ru   r   rk   Z
df1_resultZ
df2_resultrR   r$  r:   r:   r;   test_coordinates  s    





&&$&

zTestHDFStore.test_coordinatesc          
   C   s   t  }t  jdjd}d|d< t||gdd}t|}tt  |j	ddgd d	|d
d W d Q R X tt |j	d d d	|d
d W d Q R X tt |	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 || 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  }t  jdjd}tj|jd|jddgf< t	||gdd}t
|`}|jddgd d|dd	d
 |ddg}| }t || t |dj|dj W d Q R X d S )Nz{}_2)r   r*   r)   rP   )r  )r   rk   r   T)r  rT  rk   )rC   r   r  r.   r   r   rf   r   get_indexerr   r   r3  r  rT  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)runr8  c          
   C   s   t  }t  jdjd}tj|jd|jddgf< t	||gdd}t
|d}|jddgd d|dd	d
 tt |ddg W d Q R X |dj|djrtW d Q R X d S )Nz{}_2)r   r*   r)   rP   )r  )df1adf2ar8  F)r  rT  r9  )rC   r   r  r.   r   r   rf   r   r5  r   r   r3  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 tddtddt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 |dddg}t	
|| 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   r=  r>  r?  r@  rA  )rY   numsstrsrY   r^   r]   r+   )r@  rA  r>  )rj  rB  rC  )r1   r   r   r  rX   rf   r   r3  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  }t  jdjd}d|d< t|Z}tt |jd ddgdd W d Q R X |j	d|d	d
gd |	d| tt |jd ddgdd W d Q R X t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 |dddg}|jdgddgdd}t || |jdddgdd}t || |jddgddgdd}t||gdd}||jdk|jdk@  }t || |jddgddd}t||gdd}|dd  }t || |	dt jdd t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 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|| W d Q R X d S )Nr   )r  ri  r`  )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dtjdd}|d| |jddddd}|jddd	gf }t	
|| |jddd
dd}t|dkst|jd
dd	gf }t	
|| W d Q R X d S )Nr   )r)   rP   r7   zcolumns=['A']r   rO   )r*  r+  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|| W d Q R X d S )Nr*   r+   )rd   r   rd   )r  r  r  )r  r  r   )r  r*  r+  r   )r   r   r3  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dtjddtjdddd}|d| |j	dddd	}|j
ddd d f }t|| |j	ddd
d	}|j
dd
d d f }t|| |j	dddd	}|j
ddd d f }t|| |j}|d| |j	dddd	}|j
dd }t|| |j	ddd
d	}|j
dd
 }t|| t }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   )r*  r+  r^   r}  r~  r   rr   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dd}dd |jD |_dd |jD |_t|}|jd|dd d	}|d|g}t	
||jd d |jd d
 f  d}|d|g}t	
||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 )rJ  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   t  fdddd }t  | d S )Nc                s     | dS )Nr7   )rH   )p)r7   r:   r;   r}   i  r~   z0TestHDFStore.test_path_pathlib.<locals>.<lambda>c             S   s   t | dS )Nr7   )r1   r$   )rN  r:   r:   r;   r}   i  r~   )rC   rD   round_trip_pathlibrV   )r5   r6   r[   r:   )r7   r;   test_path_pathlibe  s    zTestHDFStore.test_path_pathlibzstart, stop)r   r+   )r*   r+   )NNc          	   C   sj   t tdddgtdddgd}t|6}|d| |jd||d}t||| | W d Q R X d S )	Ni2i2i2abZcd)r,   r/   Ztest_dataset)r*  r+  )r   r   r   rQ   ra   rC   rV   )r5   r*  r+  r6   r7   r9   r[   r:   r:   r;    test_contiguous_mixed_data_tablem  s    
z-TestHDFStore.test_contiguous_mixed_data_tablec                s8   t    fdd}dd }t ||}t  | d S )Nc          	      s&   t | } |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 | }t |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   rO  rV   )r5   r6   rS  rT  r[   r:   )r7   r;   test_path_pathlib_hdfstore~  s
    z'TestHDFStore.test_path_pathlib_hdfstorec                s0   t   t  fdddd }t  | d S )Nc                s     | dS )Nr7   )rH   )rN  )r7   r:   r;   r}     r~   z9TestHDFStore.test_pickle_path_localpath.<locals>.<lambda>c             S   s   t | dS )Nr7   )r1   r$   )rN  r:   r:   r;   r}     r~   )rC   rD   rO  rV   )r5   r6   r[   r:   )r7   r;   test_pickle_path_localpath  s    z'TestHDFStore.test_pickle_path_localpathc                s8   t    fdd}dd }t ||}t  | d S )Nc          	      s&   t | } |d W d Q R X d S )Nr7   )r1   r!   rH   )r8   r9   )r7   r:   r;   rS    s    z9TestHDFStore.test_path_localpath_hdfstore.<locals>.writerc          	   S   s"   t | }t |dS Q R X d S )Nr7   )r1   r!   r$   )r8   r9   r:   r:   r;   rT    s    z9TestHDFStore.test_path_localpath_hdfstore.<locals>.reader)rC   rD   Zround_trip_localpathrV   )r5   r6   rS  rT  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   )rX  r   )
r5   rJ   r  r8   r  rK   rY  r9   rZ  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.   )rX  r   r2   )r5   rJ   r  r8   r  rY  r9   rZ  r:   r:   r;   r    s    z#TestHDFStore._check_roundtrip_tablec          
   C   s0  t |d}t }|j|dddd t|}d| ks<t|jsFt|  d| ks^t|jrhtW d Q R X t |}t	j
rt|}tt t| W d Q R X |  nt|}t|}d| kstd| kst|jst|jst|  d| kst|jr td| ks2t|js>t|  d| ksXtd| ksjt|jrvt|jrtt|dd}|d| t|}|d| |  d| kst|jrt|  d| kst|jrtt|dd}|d| t|}|  d| ks4t|jr@t|  d| ksZt|jrftW d Q R X t |}t }|j|dddd t|}|  tt |  W d Q R X tt d|k W d Q R X tt t| W d Q R X tt |d  W d Q R X tt |j W d Q R X tt |d W d Q R X tt |d W d Q R X tt |d| W d Q R X tt |d| W d Q R X tt |d W d Q R X tt |d W d Q R X tjtd	d
 |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   rB  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 )Nr]  r  
legacy_hdfzpytables_native2.h5r   )r   detector)r   r   rB  r   r4   )r5   r^  r6   r9   d1r:   r:   r;   test_pytables_native2_readH  s    z'TestHDFStore.test_pytables_native2_readc          	   C   sj   t |ddddddJ}|d}tjdd	d
dggddddgtjdgddd}t|| W d Q R X d S )Nr]  r  r`  zlegacy_table_fixed_py2.h5r   )r   r7   r*   r+   rr   rN  r)   rP   r*  r  Z
INDEX_NAME)r   )r   rY   )r   ra   r1   r   r   rC   rV   )r5   r^  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@}|d}tjtdggd	gtd
gd}t|| W d Q R X d S )Nr]  r  r`  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   r^  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}|d}W d Q R X tdd	gd
dgd}t|| d S )Nr]  r  r`  zlegacy_table_py2.h5r   )r   r0   r,   r/   r+   rr   )r,   r/   )r   ra   r1   r   rC   rV   )r5   r^  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 }zDt|}t|}|jd|dgd |  ||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|f||d|}|d krP| }t|t| kshtxj| D ]^}	||	jrr||	}
||	}|j	|
j	kst|rrx$|j
D ]}|jr|
|j jstqW qrW W d t| t| yt| W n ttfk
r   Y nX t| X d S )Nr   r   )rt   propindexes)r!   tempfilemkstemprR  rt   rs   r4   r3   ro   Znrowsr\  r  r   r   r   r   OSErrorr@   r   )rc   new_frt   rg  rK   r9   rh  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   rg  )NNT)r   rC   rD   r   r!   rQ   r   r   )r5   r6   rn  r7   r8   str:   r:   r;   	test_copy|  s    
*
zTestHDFStore.test_copyc          
   C   sZ   t |H}t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d}ttjt||}||d< |d }t|| |j	j
|j	j
ksZttj|j	|j	dd td}ttjt||}||d< |d }t|| |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   r4  r   r   r  r  rE   rT   rY   r  r4   assert_class_equalr5  )r5   r6   r9   r  rH  r[   r:   r:   r;   test_tseries_indices_series  s    


z(TestHDFStore.test_tseries_indices_seriesc          	   C   s   t |}td}ttjt|d|d}||d< |d }t|| |j	j
|j	j
ks^ttj|j	|j	dd td}ttjt|d|}||d< |d }t|| |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   r4  r   r   r  r  rE   rV   rY   r  r4   rr  r5  )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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 d|gi}t|.}|jd|ddd |d}t|| W d Q R X t d|gddgd	}t|.}|jd|ddd |d}t|| 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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dd}t dtjdi}t dtjdi}t dtjdi}t ddtftjdi}t|Z}dtd }||| x6||||fD ]&}	t	
t |||	 W d Q R X qW W d Q R X d S )	Nr^   r*   r,   )r*   r+   )1r+   ry  r+   Zdf_)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 |dd}W d Q R X t|| d S )Nr,   rq   r/   ztest & testrw  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	 |d}t|| t|d
 ttddddddgddddgdd}|jd
|dd	 |d
}t|| t|d t|ddddddgd}|jd|dd	 |d}t	|| t|d tdddddddg
d}|d| |d}t|| t|d tddtjddddg
d}|d| |d}t|| t|d | }ttd
d|d< |d| |d}t	|| | }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	 |d}t|| t|d |jd|dgd ||jddg }|jddgd}t	|| ||jddg }|jdd gd}t	|| ||jdg }|jdd!gd}t	|| ||jd"g }|jdd#gd}t	|| |d| t||g}||jddg }|jddgd}t	|| | }	|	d j |	d< tt |d|	 W d Q R X |d$}|d k	st|d tjtd%d& |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sirA  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   rQ  r   r   rR  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|| W d Q R X |j	d|_|j
	d|_
|jg d d f }t|2}|j|dd	d
d t|ddd}t|| 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   rA  )r   rW   rf   r   rH   r$   rC   rV   r  rQ  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 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d
|d< |jd
|d< |jd
|d< |}t	|.}|j
|dddd t|d}t|| W d Q R X d S )Nr,   r/   rq   r*   r+   rr   r   )r   )r,   r/   rq   r   rA  r   r7   r0   T)r.   r`   )r1   r   r   r   r   r  r,   rQ  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t |j|ddd W d Q R X |j|ddd t|d}t|| |	|szt
|	|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   r:  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|| ||sTt||sbtW d Q R X d S )	Nr*   r+   r   r  )rP   r)   r7   r0   )r.   )r   r   rH   r$   rC   rV   r:  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|d | W d Q R X d S )	N)r^   rO   )r_   Z0sr^   Z1sZexample)r*  r  r  r   r7   )	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ddtdtdd}d|j_|jddd	}|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   lettersrO  T)rt   rQ   r7   r,   F)r   rQ   r`   rY   ZBCD)r   )r   r   r  r  r   rY   r   r-  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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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   r3  r1  r4  ZmakeTimedeltaIndexr5  r2  ZmakeCategoricalIndexr6  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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st|  W d Q R X d S )Nr   rO   r  r  )rY   r   r  rO  T)rt   rQ   r7   r   )r   r   )r   r   r  r  r   rY   r   r-  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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| }t|| |j  W d Q R X d S )Nr   rO   r  r  )rY   r   r  rO  T)rt   rQ   r7   r   r  )r   r.   )r  )r   r   r  r  r   rY   r   r-  r   rH   r$   rB  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ddtdtdd}t|f}tt t	|d W d Q R X |
|d t|dd	}|  t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 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ddtdtdd}t|,}t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ddtdtdd}t|X}|j|ddd t|}t	|| |j|d	dd t
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|d
ddd	 t	
t t| W d Q R X W d Q R X d S )NrO   ZabacdrA  )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|}|  t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ddtdtdd}t|(}t|}|j|ddd t|d}W d Q R X t	
|| 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ddtdtdd}t|(}||}|j|dd	d
 t	|d}W d Q R X t
|| 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 ddddgi}t|}|jd|ddd d	}|dd
|d}|jsRtd}|dd|d}|jddgd d f }t	|| d}|dd|d}|jdgd d f }t	|| 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 d}|jddd}|jdgd d f }t	|| xJdD ]@}xRddt dt 
ddgD ]4}d| d}	tt |jd|	d W d Q R X qW d}x@dD ]8}
|
 d| d}	t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	|| qJW 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   )<>z==g @r   zdate z vr,   )r  r  r   ry  z1.1z==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  }t|&}|j|d|d tj|ddd}W d Q R X t || 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 d2}t|}t|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|| W d Q R X d S )Ng      ?r+   rr   z
2015-01-01z
2015-01-02z
2015-01-05rP   )r  )rY   r]  r  r`  z*periodindex_0.20.1_x86_64_darwin_2.7.13.h5r   )r   rN  )r1   r   ZPeriodIndexr   rC   rV   )r5   r^  ru   r9   r[   r:   r:   r;   test_read_py2_hdf_file_in_py3	  s    
z*TestHDFStore.test_read_py2_hdf_file_in_py3rR   re   r:   )NNc          
   C   sh   t dddg}tdF}t |0}|d|d t j|d|d}t|| 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2019rN  rr   r  )r  r  r  abcc          
   C   s^   t ||g}tjd|dgd}t|,}tjtdd ||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   r,  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| W d Q R X d S )Nr]  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   r^  Z	data_pathmessager:   r:   r;   test_unsuppored_hdf_file_error@  s    z+TestHDFStore.test_unsuppored_hdf_file_error)F)F)F)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$  r/  r7  Zskipifr   r<  r   r   r  rI  rS  rW  rZ  r[  r]  rb  rv  ry  rz  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  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)  r/  r2  r4  r6  Zxfailr;  rD  rE  r   rF  rG  rH  rI  rM  rP  rR  rU  rV  rW  r  r[  r  r\  r_  r	   rc  rd  re  rf  rp  rq  rs  rt  ru  rw  rx  rz  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0r(   )Dr   r   Zdistutils.versionr   r   r]  r   r   pathlibr   r-  r   warningsr   r   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&   rX  r  r  r  Zsingler(   r:   r:   r:   r;   <module>   s0   D$
