U
    -e                      @   sF  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 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, Z/ej0d-d.d/d0g dggd1d2 Z1dS )3    )catch_warningsN)	Timestamp)	DataFrameHDFStoreIndex
MultiIndexSeries_testingbdate_rangeconcat
date_rangeisnaread_hdf)_maybe_remove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+    r6   e/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pandas/tests/io/pytables/test_select.pytest_select_columns_in_where    s    .

 
r8   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   appendr2   r0   r1   r"   locr   randintZreshape)r3   r#   r4   resultr5   r6   r6   r7   test_select_with_dups<   sX    

 	


rD   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   r0   makeTimeDataFramer   r@   r2   reindexr1   r   )r3   r4   r#   rC   r5   r6   r6   r7   test_selectz   s4    



rK   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#   rO   r   rF   ts>=Timestamp('2012-02-01')
2012-02-01   r   r   r'   r   objectr   r9   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float64rZ   df1
values>2.0r(   r[   g       @df2rG   r!   r   df4z	A>np_zero)r   r   r
   r,   r-   r.   r   r@   r2   rO   r   r0   r1   rA   rT   rJ   Zrandlistr!   ZarangerangeapplystrnanilocZmakeDataFramer\   )r3   r4   r#   rC   r5   vZnp_zeror6   r6   r7   test_select_dtypes   s    










ri   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 5 Q R X d S )NrL   rM   rN   a2   bcd   c                 S   s   g | ]}d |dqS rj   Z03dr6   .0ir6   r6   r7   
<listcomp>  s     z0test_select_with_many_inputs.<locals>.<listcomp>)rO   r   r   usersr#   rO   r   r   rt   rF   rP   rQ   z1ts>=Timestamp('2012-02-01') & users=['a','b','c']c                 S   s   g | ]}d |dqS ro   r6   rp   r6   r6   r7   rs   &  s     <   z.ts>=Timestamp('2012-02-01') and users=selector   z
B=selectorr   zts=selector)r   r   r
   r,   r-   r.   rc   r   r@   r2   rO   r   r0   r1   rt   isinr   lenAssertionErrorr   r[   )r3   r4   r#   rC   r5   selectorr6   r6   r7   test_select_with_many_inputs	  sL    



r{   c              	   C   sF  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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 | | }td}|j|ddd tt|ddd}t|}t	|dkst
t|| t|t|d 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)iteratorrn   	chunksizerR      Zdf_non_tablez0can only use an iterator or chunksize on a tablematchr$   r%   r]   rF   {}_2r'   r   r   r_   r   r?   )rz   )rz   r~   )r   r0   rI   r   r@   r2   rb   r   r1   rx   ry   to_hdfpytestraises	TypeErrorr   renamer&   select_as_multiple)tmp_pathr3   r4   r#   r5   resultsrC   pathmsgr]   r_   r6   r6   r7   test_select_iterator9  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   r0   rI   r   r@   r!   r2   r1   rb   r   )	r3   r~   r4   r5   beg_dtend_dtrC   r)   r   r6   r6   r7   "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stW 5 Q R X d S )Nr   r   r   r#   r   r   r   r   r   r   r   z	index > 'r   r   r0   rI   r   r@   r!   rb   r2   r   r1   rx   ry   
r3   r~   r4   r5   r   r   r)   r   rC   Z	rexpectedr6   r6   r7   &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 5 Q R X d S )Ni'  i r   r#   r   r   r   r   r   r   r   z' & index >= 'r   r   r6   r6   r7   &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   rH   Zdf_timez day is out of range for month: 0r   zindex>0)r0   rI   r   r/   r!   rx   r   envscopery   r2   rA   r1   r@   r   r   
ValueError)
r3   r#   r4   r   Zcrit1Zcrit2Zcrit3rC   r5   r   r6   r6   r7   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   r9   r#   r$   r&   rG   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'   )r0   rI   rA   r!   r   r/   r2   r   r1   r   r   NotImplementedErrorr"   
differencerJ   )r3   r#   r4   rC   r5   r   r6   r6   r7   test_frame_select_complexJ  sH        "r   c              	   C   s  | d }| d }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|	| W 5 Q R X 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|n}|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&   rG   zA=[2,3]r(      datac                 S   s"   g | ]}t d D ]}||fqqS )rR   )rc   )rq   rr   jr6   r6   r7   rs     s     
  z.test_frame_select_complex2.<locals>.<listcomp>rR   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   from_tuplesrc   r!   tolistr   r2   r0   r1   )r   pphhparamsZ	selectionhistr5   Zl0r4   rC   r!   r6   r6   r7   test_frame_select_complex2  sN     


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'])r0   rI   r   r/   r   r   r   r2   )r3   r#   r4   r   r6   r6   r7   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#   rF   zx=nonezx!=noner_   r   intdf3zint=2zint!=2)r   r0   rI   rA   r!   r@   r2   r   r1   copyr,   rf   r   r   )r3   r4   r#   rC   r5   r_   r6   r6   r7   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)   rz   r   r   rF   r_   z!'No object named df3 in the file'r   z!'No object named df4 in the file'ra   r   r?   r   F)Z
check_freqzindex>df2.index[4]rR   rk   )Znperz,all tables must have exactly the same nrows!)r0   rI   r   r&   r   r   r   r   r   r@   KeyErrorr2   r1   r   r   r   r   )r3   r]   r_   r4   r   rC   r5   r6   r6   r7   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   rY   r\   rW   rZ   r   r   z13.0z14.0z15.0g      @g      @g      @r   r9   rR   )r!   r#   Tr`   r^   r(   )r   r   rc   rd   re   r,   rf   rg   r@   r2   r0   r1   )r3   r4   r#   r5   rC   r6   r6   r7   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 )Nrj   rm   rl   ztest & tester   r   r   r9   rR   r   r      )rj   rl   testr$   Tr   za = "test & test")r   rj   r   r@   r2   r0   r1   )r3   r#   r5   r4   rC   r6   r6   r7   (test_query_with_nested_special_characterN  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~  eAg$  eAg'1  eAr   r$   Tr   g  eAzA < z.4fg   eAzA > r   r   zA == )	r   r   r@   r2   emptyry   rA   r0   r1   )r3   r#   r4   cutoffrC   r5   exactr6   r6   r7   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 ]f}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 qd}dD ]R}
|
 d| d}|
d
kr$d }	n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|| qjqW 5 Q R X d S )'Nz
2014-01-01z
2014-01-02r   rN   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   rj   )r   r   r    z+Given date string "a" not likely a datetimezcould not convert string to 1z1.1r   r   r   )r   r   r   r@   r   r2   rA   r0   r1   pdZ	Timedeltatyper   r   r   r   zip)r3   r#   r4   rO   rC   r5   oprh   queryr   colr6   r6   r7   test_query_compare_column_typer  sP    




 

r   r)   r   r6   )Nc              	   C   sV   t dddg}| d }t|.}|d|d t|d|d}t|| W 5 Q R X d S )Nr   r   r   zempty_where.h5r#   tr(   )r   r   r/   r   r0   r1   )r   r)   r#   r   r4   rC   r6   r6   r7   test_select_empty_where  s    
r   )2warningsr   numpyr,   r   Zpandas._libs.tslibsr   Zpandasr   r   r   r   r   r   r	   r0   r
   r   r   r   r   Zpandas.tests.io.pytables.commonr   r   Zpandas.io.pytablesr   markZ
single_cpuZ
pytestmarkr8   rD   rK   ri   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zparametrizer   r6   r6   r6   r7   <module>   s:   4>&i0BE17"6;*F6