U
    `»{jÙ‚  ã                   @   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 5 Q R X t
tj d¡|dd�}t| ƒ�,}|jd|dd� t |j	ddd�|¡ W 5 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,   © r7   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/io/pytables/test_select.pyÚtest_select_columns_in_where!   s    .ý

 
r9   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 5 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 5 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 5 Q R X d S )Nr   é   r   r   r(   z20130101 9:30ÚT)ÚperiodsÚfreqr$   T)Z	by_blocksr   é   )Úsizer   r    r   ©Zaxis)r   r-   r.   r/   r   r"   r   Úappendr3   r1   r2   r#   Úlocr   ÚrandintZreshape)r4   r$   r5   Úresultr6   r7   r7   r8   Útest_select_with_dups>   sX    

 ÿþù	


rE   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 5 Q R X W 5 Q R X d S )NT)Úrecordr$   r   r   r(   zcolumns=['A', 'B']©Údata_columnszA > 0r   r    ÚD)
r   r   r1   ÚmakeTimeDataFramer   rA   r3   Úreindexr2   r   )r4   r5   r$   rD   r6   r7   r7   r8   Útest_select}   s4    



rL   c              	   C   sô  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�}dD ]*}|jdd|› �ddgd�}t ||¡ qî||jdk jddgd�}dD ],}|jdd|› �ddgd�}t ||¡ �q8t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 5 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 5 Q R X t | ƒ�T}t ¡ }||d dk }|jd|dd� t d¡}|jdd2gd+�}t ||¡ W 5 Q R X d S )3Nú
2012-01-01é,  ©r<   )Útsr   r$   rP   r   rG   úts>=Timestamp('2012-02-01')ú
2012-02-01é   r   r   r(   r   Úobjectr   r:   r   ÚboolvT)TÚtruer   z	boolv == F)FÚfalser   r>   )r   r   Zdf_intzindex<10 and columns=['A']r   r!   Zf8©Zdtype)r   r   r"   Zdf_floatzindex<10.0 and columns=['A']é   ©ÚcolsÚvaluesÚfloat64r[   Údf1ú
values>2.0r)   r\   g       @Údf2©rH   r"   r   Údf4z	A>np_zero)r   r   r
   r-   r.   r/   r   rA   r3   rP   r   r1   r2   rB   rU   rK   ZrandÚlistr"   ZarangeÚrangeÚapplyÚstrÚnanÚilocZmakeDataFramer]   )r4   r5   r$   rD   r6   ÚvZnp_zeror7   r7   r8   Útest_select_dtypes¦   sˆ    

þÿ




ýÿ



rj   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�sÌt‚W 5 Q R X d S )NrM   rN   rO   Úaé2   ÚbÚcéd   c                 S   s   g | ]}d |d›�‘qS ©rk   Z03dr7   ©Ú.0Úir7   r7   r8   Ú
<listcomp>  s     z0test_select_with_many_inputs.<locals>.<listcomp>)rP   r   r   Úusersr$   rP   r   r   ru   rG   rQ   rR   z1ts>=Timestamp('2012-02-01') & users=['a','b','c']c                 S   s   g | ]}d |d›�‘qS rp   r7   rq   r7   r7   r8   rt   0  s     é<   z.ts>=Timestamp('2012-02-01') and users=selectoréÈ   z
B=selectorr   zts=selector)r   r   r
   r-   r.   r/   rd   r   rA   r3   rP   r   r1   r2   ru   Úisinr   ÚlenÚAssertionErrorr   r\   )r4   r5   r$   rD   r6   Úselectorr7   r7   r8   Útest_select_with_many_inputs  sL    

ÿþýüÿ
ÿ
r|   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 5 Q R X t| ƒ�p}t d¡}| |d	¡ d
}tjt|d�� t|d	dd� W 5 Q R X tjt|d�� t|d	dd� W 5 Q R X W 5 Q R X t| ƒ�j}t d¡}|j|ddd� tt|ddd�ƒ}t|ƒ}t	|ƒdk�sŽt
‚t ||¡ t |t|dƒ¡ W 5 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 5 Q R X d S )Niô  r$   T)Úiteratorro   ©Ú	chunksizerS   é–   Zdf_non_tablez0can only use an iterator or chunksize on a table©Úmatchr%   r&   r^   rG   ú{}_2r(   r   r   r`   r   r@   )r{   )r{   r   )r   r1   rJ   r   rA   r3   rc   r   r2   ry   rz   r   Úto_hdfÚpytestÚraisesÚ	TypeErrorr   Úrenamer'   Úselect_as_multiple)
r4   r5   r$   r6   ÚresultsrD   ÚpathÚmsgr^   r`   r7   r7   r8   Útest_select_iteratorC  sX    





"



ÿ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 5 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 5 Q R X d S )Nç     ˆÃ@éà† ÚSr$   r   éÿÿÿÿú
index >= 'ú'r)   ú
index <= 'ú' & index <= 'r~   ©r*   r   )
r   r1   rJ   r   rA   r"   r3   r2   rc   r   )	r4   r   r5   r6   Úbeg_dtÚend_dtrD   r*   rŠ   r7   r7   r8   Ú"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 5 Q R X t | ƒ�d}t dd¡}t|dƒ | d|¡ |jd }d|› d�}t|jd||d	�ƒ}dt
|ƒk�sŽt‚W 5 Q R X d S )NrŽ   r�   r�   r$   r   éþÿÿÿr’   r“   r–   r”   r•   r‘   z	index > 'r   ©r   r1   rJ   r   rA   r"   rc   r3   r   r2   ry   rz   ©
r4   r   r5   r6   r—   r˜   r*   rŠ   rD   Z	rexpectedr7   r7   r8   Ú&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s¼t‚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 5 Q R X d S )Ni'  i † r�   r$   r   r   r’   r“   r–   r”   r•   z' & index >= 'r›   rœ   r7   r7   r8   Ú&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 5 Q R X W 5 Q R X d S )NÚframer%   r&   r   zindex>=dateÚdatezcolumns=['A', 'D']z	columns=Ar   rI   Zdf_timez%could not convert string to Timestampr�   zindex>0)r1   rJ   r   r0   r"   ry   r   ÚenvÚscoperz   r3   rB   r2   rA   r…   r†   Ú
ValueError)
r4   r$   r5   r    Zcrit1Zcrit2Zcrit3rD   r6   rŒ   r7   r7   r8   Ú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 5 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 5 Q R X d S )Nr   Ústringr   r   r:   r$   r%   ©r'   rH   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 numexprr�   z~(string="bar")z~(columns=['A','B'])r   r   z(index>df.index[3] & columns in ['A','B']r(   )r1   rJ   rB   r"   r   r0   r3   r¥   r2   r…   r†   ÚNotImplementedErrorr#   Ú
differencerK   )r4   r$   r5   rD   r6   rŒ   r7   r7   r8   Útest_frame_select_complex`  sH        ÿÿÿ"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 5 Q R X d S )Nz
params.hdfzhist.hdfr   r   r   r   r$   Úwr%   )Úmoder'   rH   zA=[2,3]r)   é   Údatac                 S   s"   g | ]}t d ƒD ]}||f‘qqS )rS   )rd   )rr   rs   Újr7   r7   r8   rt   ¥  s     
  z.test_frame_select_complex2.<locals>.<listcomp>rS   Úl1Úl2)r   )r#   r"   )r¬   r'   zl1=[2, 3, 4]zl1=l0zl1=indexzl1=selection.indexzl1=selection.index.tolist()zl1=list(selection.index))r   r   r„   r   r-   r.   r/   r   Úfrom_tuplesrd   r"   Útolistr   r3   r1   r2   Úclose)ÚpathsÚppÚhhÚparamsZ	selectionÚhistr6   Zl0r5   rD   r"   r7   r7   r8   Útest_frame_select_complex2–  sR     ÿý
rº   c              
   C   s€   t  ¡ }t| ƒ�f}|jd|dd� d}tjt|d�� | dd¡ W 5 Q R X tjt|d�� | dd¡ W 5 Q R X W 5 Q R X d S )Nr$   r%   r&   z unable to collapse Joint Filtersr�   zcolumns=['A'] | columns=['B']z!columns=['A','B'] & columns=['C'])r1   rJ   r   r0   r…   r†   r¨   r3   )r4   r$   r5   rŒ   r7   r7   r8   Ú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 5 Q R X d S )NÚnoneÚxÚ r   é   r$   rG   zx=nonezx!=noner`   r   ÚintÚdf3zint=2zint!=2)r   r1   rJ   rB   r"   rA   r3   r½   r2   Úcopyr-   rg   r   rÀ   )r4   r5   r$   rD   r6   r`   r7   r7   r8   Ú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 5 Q R X |j	d	|ddgd� | 	d|¡ tjt|d�� |jd ddgd	d
� W 5 Q R X tjt|d�� |jd gddgd	d
� W 5 Q R X d}tjt
|d�� |jd	dgddgd	d
� W 5 Q R X tjt
|d�� |jdgddgd	d
� W 5 Q R X tjt
dd�� |jd	dgddgdd
� W 5 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 5 Q R X W 5 Q R X d S )Nrƒ   r(   r   r   zkeys must be a list/tupler�   zA>0zB>0r^   )r*   r{   r   r   rG   r`   z!'No object named df3 in the file'rÁ   z!'No object named df4 in the file'rb   r   r@   r   F)Z
check_freqzindex>df2.index[4]rS   rl   )Znperz,all tables must have exactly the same nrows!)r1   rJ   rˆ   r'   r   r…   r†   r‡   r‰   rA   ÚKeyErrorr3   r2   r   r   r   r£   )r4   r^   r`   r5   rŒ   rD   r6   r7   r7   r8   Útest_select_as_multiple  sz       ÿ   ÿ  ÿ  ÿ  ÿ  ÿ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 5 Q R X d S )Nr§   rZ   r]   rX   r[   r   r   z13.0z14.0z15.0g      @g      @g      @r   r:   rS   )r"   r$   Tra   r_   r)   )r   r   rd   re   rf   r-   rg   rh   rA   r3   r1   r2   )r4   r5   r$   r6   rD   r7   r7   r8   Ú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 5 Q R X t ||¡ d S )Nrk   rn   rm   ztest & testÚer   r   r   r:   rS   r§   r¿   é   )rk   rm   Útestr%   Tr¦   za = "test & test")r   rk   r   rA   r3   r1   r2   )r4   r$   r6   r5   rD   r7   r7   r8   Ú(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 5 Q R X d S )Nr   g~  eÍÍAg$  eÍÍAg'1  eÍÍArÉ   r%   Tr¦   g©  eÍÍAzA < z.4fgÅ   eÍÍAzA > r   r   zA == )	r   r   rA   r3   Úemptyrz   rB   r1   r2   )r4   r$   r5   ÚcutoffrD   r6   Úexactr7   r7   r8   Ú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 ||¡ dD �]V}ddtdƒt	 
dd¡fD ]N}d|› d�}d|› dt|ƒ› d�}	tjt|	d�� |jd|d� W 5 Q R X q¨d}dD ]B}
|
› d|› d�}d }	tjt|	d�� |jd|d� W 5 Q R X �q t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 ||¡ �qZqŠW 5 Q R X d S )&Nz
2014-01-01z
2014-01-02r   rO   gš™™™™™ñ?g333333ó?r   )r    Ú	real_dateÚfloatrÀ   r    rÏ   rÐ   rÀ   r(   rÉ   r%   Tr¦   zreal_date > tsr)   )ú<ú>ú==gÍÌÌÌÌÌ @r,   zdate z vzCannot compare z	 of type z to string columnr�   rk   )rÀ   rÐ   rÏ   ú zcould not convert string to Ú1z1.1rÓ   r   rÒ   )r   r   r   rA   r   r3   rB   r1   r2   ÚpdZ	TimedeltaÚtyper…   r†   r‡   r£   Úzip)r4   r$   r5   rP   rD   r6   Úopri   ÚqueryrŒ   Úcolr7   r7   r8   Útest_query_compare_column_type”  sL    
ü
ù

 ÿ

rÜ   r*   r¾   r7   )Nc              
   C   sb   t dddgƒ}tdƒ�B}t|ƒ�.}| d|d¡ t|d| d�}t ||¡ W 5 Q R X W 5 Q R X d S )Nr   r   r   zempty_where.h5r$   Útr)   )r   r   r   r0   r   r1   r2   )r*   r$   r‹   r5   rD   r7   r7   r8   Útest_select_empty_whereÇ  s    

rÞ   )3Úwarningsr   Únumpyr-   r…   Zpandas._libs.tslibsr   ZpandasrÖ   r   r   r   r   r   r	   r1   r
   r   r   r   r   Zpandas.tests.io.pytables.commonr   r   r   Zpandas.io.pytablesr   ÚmarkZ
single_cpuZ
pytestmarkr9   rE   rL   rj   r|   r�   r™   r�   rž   r¤   rª   rº   r»   rÃ   rÅ   rÆ   rÊ   rÎ   rÜ   ZparametrizerÞ   r7   r7   r7   r8   Ú<module>   s:   4?)k2EH49#6A+H3