B
    Z0d                 @   sJ  d dl mZ d dlZd dlZd dl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 d dlmZmZmZ d dlmZ ejj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+d#d$ Z,d%d& Z-d'd( Z.d)d* Z/d+d, Z0ej1d-d.d/d0g dggd1d2 Z2dS )3    )catch_warningsN)	Timestamp)	DataFrameHDFStoreIndex
MultiIndexSeries_testingbdate_rangeconcat
date_rangeisnaread_hdf)_maybe_removeensure_clean_pathensure_clean_store)Termc             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 )NfoobarZbazZquxonetwothreer            Zfoo_nameZbar_name)Zlevelscodesnames
   ABC)indexcolumnsdftable)format)r"   zcolumns=['A'])where)r!   names)r   r   nprandomrandnr   puttmassert_frame_equalselectr   Zassert_series_equal)
setup_pathr!   r#   storeexpectedr(    r3   V/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/io/pytables/test_select.pytest_select_columns_in_where!   s    .

 
r5   c          	   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   )r"   z20130101 9:30T)periodsfreqr#   T)Z	by_blocksr      )sizer   r    r   )axis)r   r)   r*   r+   r   r!   r   appendr/   r-   r.   r"   locr   randintZreshape)r0   r#   r1   resultr2   r3   r3   r4   test_select_with_dups>   sP    

$


rA   c          
   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)recordr#   r   r   )r"   zcolumns=['A', 'B'])data_columnszA > 0r   r    D)
r   r   r-   makeTimeDataFramer   r=   r/   reindexr.   r   )r0   r1   r#   r@   r2   r3   r3   r4   test_select}   s4    



rG   c          	   C   s  t | H}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jdtjdd}t|d |d| |dd}|jt|jdd dgd}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 | .}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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,  )r8   )tsr   r#   rH   r   )rC   zts>=Timestamp('2012-02-01')z
2012-02-01   r   r   )r"   r   objectr   r6   r   boolvT)Ttruer   z	boolv == F)Ffalser   r:   )r   r   Zdf_intzindex<10 and columns=['A']r   )r!   r"   Zf8)dtype)r   r   r!   Zdf_floatzindex<10.0 and columns=['A']   )colsvaluesfloat64rP   df1z
values>2.0)r&   rQ   g       @df2)rC   r!   r   df4z	A>np_zero)r   r   r
   r)   r*   r+   r   r=   r/   rH   r   r-   r.   r>   rK   rF   Zrandlistr!   ZarangerangeapplystrnanilocZmakeDataFramerR   )r0   r1   r#   r@   r2   vZnp_zeror3   r3   r4   test_select_dtypes   s    











r]   c          	   C   s  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,  )r8   a2   bcd   c             S   s   g | ]}d |dqS )r^   03dr3   ).0ir3   r3   r4   
<listcomp>  s    z0test_select_with_many_inputs.<locals>.<listcomp>)rH   r   r   usersr#   rH   r   r   rg   )rC   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^   rc   r3   )rd   re   r3   r3   r4   rf   0  s    <   z.ts>=Timestamp('2012-02-01') and users=selector   z
B=selectorr   zts=selector)r   r   r
   r)   r*   r+   rW   r   r=   r/   rH   r   r-   r.   rg   isinr   lenAssertionErrorr   rQ   )r0   r1   r#   r@   r2   selectorr3   r3   r4   test_select_with_many_inputs  s:    

6
"
rn   c       
   
   C   s^  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| p}td}||d	 d
}tjt|d t|d	dd W d Q R X tjt|d 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  r#   T)iteratorrb   )	chunksizerI      Zdf_non_tablez0can only use an iterator or chunksize on a table)matchr$   )r%   rS   )rC   z{}_2)r"   r   r   rT   r   )r<   )rm   )rm   rp   )r   r-   rE   r   r=   r/   rV   r   r.   rk   rl   r   to_hdfpytestraises	TypeErrorr   renamer%   select_as_multiple)
r0   r1   r#   r2   resultsr@   pathmsgrS   rT   r3   r3   r4   test_select_iteratorC  sV    





"



r|   c       	   	   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 Sr#   r   z
index >= '')r&   z
index <= 'z' & index <= ')rp   )r&   rp   )
r   r-   rE   r   r=   r!   r/   r.   rV   r   )	r0   rp   r1   r2   beg_dtend_dtr@   r&   ry   r3   r3   r4   "test_select_iterator_complete_8014  sN    







r   c       
   	   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}   r#   r   z
index >= 'r   )r&   rp   z
index <= 'z' & index <= 'r~   z	index > 'r   )r   r-   rE   r   r=   r!   rV   r/   r   r.   rk   rl   )
r0   rp   r1   r2   r   r   r&   ry   r@   	rexpectedr3   r3   r4   &test_select_iterator_non_complete_8014  s<    





r   c       
   	   C   s  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sztW d Q R X d S )Ni'  i r}   r#   r   r   z
index >= 'r   )r&   rp   z
index <= 'z' & index <= 'z' & index >= ')r   r-   rE   r   r=   r!   rV   r/   r   r.   rk   rl   )
r0   rp   r1   r2   r   r   r&   ry   r@   r   r3   r3   r4   &test_select_iterator_many_empty_frames  s6    

	r   c       
   
   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| d}	tjt|	d |
dd W d Q R X W d Q R X d S )Nframer$   )r%   r   zindex>=datedatezcolumns=['A', 'D']z	columns=Ar   rD   Zdf_timez%could not convert string to Timestamp)rr   zindex>0)r-   rE   r   r,   r!   rk   r   envscoperl   r/   r>   r.   r=   rt   ru   
ValueError)
r0   r#   r1   r   Zcrit1Zcrit2Zcrit3r@   r2   r{   r3   r3   r4   test_frame_select=  s&    
r   c          
   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 || d}t	j
t|d |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 )Nr   stringr   r   r6   r#   r$   )r%   rC   z index>df.index[3] & string="bar"r   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"   zstring!="bar"z6cannot use an invert condition when passing to numexpr)rr   z~(string="bar")z~(columns=['A','B'])r   r   z(index>df.index[3] & columns in ['A','B'])r"   )r-   rE   r>   r!   r   r,   r/   r   r.   rt   ru   NotImplementedErrorr"   
differencerF   )r0   r#   r1   r@   r2   r{   r3   r3   r4   test_frame_select_complex`  s@       "r   c          	   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
params.hdfzhist.hdfr   r   r   r   r#   wr$   )moder%   rC   zA=[2,3])r&      datac             S   s"   g | ]}t d D ]}||fqqS )rI   )rW   )rd   re   jr3   r3   r4   rf     s    z.test_frame_select_complex2.<locals>.<listcomp>rI   l1l2)r   )r"   r!   )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   rs   r   r)   r*   r+   r   from_tuplesrW   r!   tolistr   r/   r-   r.   close)r0   pathspphhparamsZ	selectionhistr2   lr1   r@   r!   r3   r3   r4   test_frame_select_complex2  sL     
r   c          
   C   s   t  }t| f}|jd|dd d}tjt|d |dd W d Q R X tjt|d |dd W d Q R X W d Q R X d S )Nr#   r$   )r%   z unable to collapse Joint Filters)rr   zcolumns=['A'] | columns=['B']z!columns=['A','B'] & columns=['C'])r-   rE   r   r,   rt   ru   r   r/   )r0   r#   r1   r{   r3   r3   r4   test_invalid_filtering  s    
r   c          	   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nonex r      r#   )rC   zx=nonezx!=nonerT   r   intdf3zint=2zint!=2)r   r-   rE   r>   r!   r=   r/   r   r.   copyr)   rZ   r   r   )r0   r1   r#   r@   r2   rT   r3   r3   r4   test_string_select  s4    r   c          
   C   s  t  }t  jdjd}d|d< t| v}d}tjt|d |jd ddgd	d
 W d Q R X |j	d	|ddgd |	d| tjt|d |jd 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 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 |jd	dgddd
}t||gdd}|dd  }t || |	dt jdd d}tjt|d |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   r   zkeys must be a list/tuple)rr   zA>0zB>0rS   )r&   rm   r   r   )rC   rT   z!'No object named df3 in the file'r   z!'No object named df4 in the file'rU   r   )r<   r   F)Z
check_freqzindex>df2.index[4]rI   r_   )Znperz,all tables must have exactly the same nrows!)r-   rE   rw   r%   r   rt   ru   rv   rx   r=   KeyErrorr/   r.   r   r   r   r   )r0   rS   rT   r1   r{   r@   r2   r3   r3   r4   test_select_as_multiple  sV      r   c          	   C   s   t | }ttdtdddd}|d d t|d< tj|jd< 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   )rP   rQ   rR   )rN   rP   r   r   z13.0z14.0z15.0g      @g      @g      @r   r6   rI   )r!   r#   T)rC   r!   z
values>2.0)r&   )r   r   rW   rX   rY   r)   rZ   r[   r=   r/   r-   r.   )r0   r1   r#   r2   r@   r3   r3   r4   test_nan_selection_bug_4858]  s    
r   c          
   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^   ra   r`   ztest & tester   r   r   r6   rI   r   r      )r^   r`   testr$   T)r%   rC   za = "test & test")r   r^   r   r=   r/   r-   r.   )r0   r#   r2   r1   r@   r3   r3   r4   (test_query_with_nested_special_characterp  s    
r   c          	   C   s   t ddddgi}t| }|jd|ddd d	}|dd
|d}|jsPt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   r$   T)r%   rC   g  eAzA < z.4fg   eAzA > r   r   zA == )	r   r   r=   r/   emptyrl   r>   r-   r.   )r0   r#   r1   cutoffr@   r2   exactr3   r3   r4   test_query_long_float_literal~  s    

r   c             C   s  t 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|| xldD ]b}xjddtdt	
ddgD ]N}d| d}d| dt| d}	tjt|	d |jd|d W d Q R X qW d}xJdD ]B}
|
 d| d}d }	tjt|	d |jd|d W d Q R X q
W 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|| qhW qW W d Q R X d S )&Nz
2014-01-01z
2014-01-02r   )r8   g?g333333?r   )r   	real_datefloatr   r   r   r   r   )r"   r   r$   T)r%   rC   zreal_date > ts)r&   )<>z==g @r(   zdate z vzCannot compare z	 of type z to string column)rr   r^   )r   r   r    zcould not convert string to 1z1.1z==r   r   )r   r   r   r=   r   r/   r>   r-   r.   pdZ	Timedeltatypert   ru   rv   r   zip)r0   r#   r1   rH   r@   r2   opr\   queryr{   colr3   r3   r4   test_query_compare_column_type  sD    




r   r&   r   r3   )Nc          
   C   sb   t dddg}tdB}t|.}|d|d t|d| d}t|| W d Q R X W d Q R X d S )Nr   r   r   zempty_where.h5r#   t)r&   )r   r   r   r,   r   r-   r.   )r&   r#   rz   r1   r@   r3   r3   r4   test_select_empty_where  s    

r   )3warningsr   numpyr)   rt   Zpandas._libs.tslibsr   Zpandasr   r   r   r   r   r   r	   r-   r
   r   r   r   r   Zpandas.tests.io.pytables.commonr   r   r   Zpandas.io.pytablesr   markZsingleZ
pytestmarkr5   rA   rG   r]   rn   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   Zparametrizer   r3   r3   r3   r4   <module>   s8   4?)k2EH49#6A+H3