o
    5cق                     @   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 g dg dgg dg dgddgd}ttjdd	|g d
d}t| ,}|jd|dd |dg }t|j	ddgd| t|j	ddd| W d    n1 sVw   Y  t
tjd|dd}t| }|jd|dd t|j	ddd| W d    d S 1 sw   Y  d S )N)foobarbazqux)onetwothree)
r   r   r      r      r      r   r   )
r   r   r   r   r   r   r   r   r   r   foo_namebar_name)levelscodesnames
   r   )ABCindexcolumnsdftableformatr#   r(   zcolumns=['A']where)r'   names)r   r   nprandomrandnr   puttmassert_frame_equalselectr   assert_series_equal)
setup_pathr'   r)   storeexpectedr1    r=   Z/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/io/pytables/test_select.pytest_select_columns_in_where!   s"   

	
"r?   c                 C   s  t tjddg dd}tdddd|_t| G}|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    n1 scw   Y  tt tjddg ddt tjjddddddddgdgdd}tdddd|_t| e}|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    n	1 sw   Y  t| 7}|d| |d| |jd d ddgf }t||g}|jdddgd}t	j
||d	d
 W d    d S 1 sEw   Y  d S )Nr"      )r#   r#   r$   r$   r-   z20130101 9:30T)periodsfreqr)   T)	by_blocksr#   r      )sizer   r%   r   axisr$   )r   r2   r3   r4   r   r'   r   appendr8   r6   r7   r(   locr   randintreshape)r:   r)   r;   resultr<   r=   r=   r>   test_select_with_dups>   s\   

	


$rN   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    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NT)recordr)   r#   r$   r-   zcolumns=['A', 'B']data_columnszA > 0r   r%   D)
r   r   r6   makeTimeDataFramer   rI   r8   reindexr7   r#   )r:   r;   r)   rM   r<   r=   r=   r>   test_select}   s<   




"rU   c                 C   s4  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|| qw||jdk jddgd}dD ]}|jdd| ddgd}t|| qt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    n	1 s-w   Y  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    n	1 sw   Y  t | 0}t }||d dk }|jd|dd td}|jdd2gd+}t|| W d    d S 1 sw   Y  d S )3N
2012-01-01,  rB   )tsr#   r)   rY   r#   rP   ts>=Timestamp('2012-02-01')
2012-02-01   r   r$   r-   r   objectr   r@   r   boolvT)Ttruer   z	boolv == F)Ffalser   rE   )r#   r$   df_intzindex<10 and columns=['A']r"   r&   f8dtype)r#   r$   r'   df_floatzindex<10.0 and columns=['A']   colsvaluesfloat64rh   df1
values>2.0r.   ri   g       @df2rQ   r'   r   df4z	A>np_zero)r   r   r
   r2   r3   r4   r   rI   r8   rY   r   r6   r7   rJ   r^   rT   randlistr'   arangerangeapplystrnanilocmakeDataFramerj   )r:   r;   r)   rM   r<   vnp_zeror=   r=   r>   test_select_dtypes   s   








7

'
$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|g dd |	dd}||j
tdk }t|| |	dd}||j
tdk|jg d@  }t|| g ddd
 tdD  }|	dd}||j
tdk|j|@  }t|| tdd}|	dd}||j| }t|| t|dksJ t|j
dd j}|	dd}||j
|j }t|| t|dksJ W d    d S 1 sw   Y  d S )NrV   rW   rX   a2   bcd   c                 S      g | ]}d |dqS r|   03dr=   .0ir=   r=   r>   
<listcomp>      z0test_select_with_many_inputs.<locals>.<listcomp>)rY   r#   r$   usersr)   rP   rZ   r[   z1ts>=Timestamp('2012-02-01') & users=['a','b','c'])r|   r~   r   c                 S   r   r   r=   r   r=   r=   r>   r   0  r   <   z.ts>=Timestamp('2012-02-01') and users=selector   z
B=selectorr   zts=selector)r   r   r
   r2   r3   r4   rs   r   rI   r8   rY   r   r6   r7   r   isinr$   lenr   ri   )r:   r;   r)   rM   r<   selectorr=   r=   r>   test_select_with_many_inputs  sN   




"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>J t|}t|| t|jddd}t|}t|| W d    n1 sew   Y  t
| Q}td}||d	 d
}tjt|d t|d	dd W d    n1 sw   Y  tjt|d t|d	dd W d    n1 sw   Y  W d    n1 sw   Y  t
| 9}td}|j|ddd tt|ddd}t|}t	|dksJ t|| t|t|d W d    n	1 sw   Y  t | Q}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    d S 1 sfw   Y  d S )Ni  r)   T)iteratorr   	chunksizer\      df_non_tablez0can only use an iterator or chunksize on a tablematchr*   r+   rk   rP   {}_2r-   r   r   rm   r   rG   )r   )r   r   )r   r6   rS   r   rI   r8   rq   r   r7   r   r   to_hdfpytestraises	TypeErrorr   renamer,   select_as_multiple)
r:   r;   r)   r<   resultsrM   pathmsgrk   rm   r=   r=   r>   test_select_iteratorC  sf   









$r   c           	      C   s  d}t | j}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    n1 ssw   Y  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    d S 1 sw   Y  d S )N     @ Sr)   r   
index >= ''r.   
index <= '' & index <= 'r   r/   r   )
r   r6   rS   r   rI   r'   r8   r7   rq   r   )	r:   r   r;   r<   beg_dtend_dtrM   r/   r   r=   r=   r>   "test_select_iterator_complete_8014  sR   





 


$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    n1 sw   Y  t | 7}tdd}t|d |d| |jd }d| d}t|jd||d	}dt
|ksJ W d    d S 1 sw   Y  d S )Nr   r   r   r)   r   r   r   r   r   r   r   z	index > 'r   r   r6   rS   r   rI   r'   rq   r8   r   r7   r   
r:   r   r;   r<   r   r   r/   r   rM   	rexpectedr=   r=   r>   &test_select_iterator_non_complete_8014  s@   






"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
|dks]J t|}||j|k }	t	|	| d| d| d}t|jd||d	}t
|dksJ t|}||j|k|j|k@  }	t	|	| d
| d| d}t|jd||d	}t
|dksJ W d    d S 1 sw   Y  d S )Ni'  i r   r)   r   r   r   r   r   r   r   z' & index >= 'r   r   r=   r=   r>   &test_select_iterator_many_empty_frames  s8   


	"r   c           
   	   C   s>  t  }t| }|jd|dd |jt|d  }td}|jjd |ks(J 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    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nframer*   r+   r   zindex>=datedatezcolumns=['A', 'D']z	columns=Ar#   rR   df_timez%could not convert string to Timestampr   zindex>0)r6   rS   r   r5   r'   r   r   envscoper8   rJ   r7   rI   r   r   
ValueError)
r:   r)   r;   r   crit1crit2crit3rM   r<   r   r=   r=   r>   test_frame_select=  s.   
"r   c              	   C   s2  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    n1 sw   Y  |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    d S 1 sw   Y  d S )Nr   stringr   r   r@   r)   r*   r,   rQ   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-   )r6   rS   rJ   r'   r   r5   r8   r   r7   r   r   NotImplementedErrorr(   
differencerT   )r:   r)   r;   rM   r<   r   r=   r=   r>   test_frame_select_complex`  sJ   
   "$r   c                  C   s  t ddg} | \}}tdg d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    d S 1 sw   Y  d S )Nz
params.hdfzhist.hdfr#   )r   r   r   r   r   r)   wr*   )moder,   rQ   zA=[2,3]r.      r   datac                 S   s"   g | ]}t d D ]}||fqqS )r\   )rs   )r   r   jr=   r=   r>   r     s   " z.test_frame_select_complex2.<locals>.<listcomp>r\   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   r2   r3   r4   r   from_tuplesrs   r'   tolistr   r8   r6   r7   close)pathspphhparams	selectionhistr<   l0r;   rM   r'   r=   r=   r>   test_frame_select_complex2  sR   

"r   c              	   C   s   t  }t| U}|jd|dd d}tjt|d |dd W d    n1 s+w   Y  tjt|d |dd W d    n1 sHw   Y  W d    d S W d    d S 1 s`w   Y  d S )Nr)   r*   r+   z unable to collapse Joint Filtersr   zcolumns=['A'] | columns=['B']z!columns=['A','B'] & columns=['C'])r6   rS   r   r5   r   r   r   r8   )r:   r)   r;   r   r=   r=   r>   test_invalid_filtering  s   
	"r   c                 C   s  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    d S 1 sw   Y  d S )Nnonex r      r)   rP   zx=nonezx!=nonerm   r   intdf3zint=2zint!=2)r   r6   rS   rJ   r'   rI   r8   r   r7   copyr2   rv   r   r   )r:   r;   r)   rM   r<   rm   r=   r=   r>   test_string_select  s6   
"r   c              	   C   sb  t  }t  jdjd}d|d< t| }d}tjt|d |jd ddgd	d
 W d    n1 s5w   Y  |j	d	|ddgd |	d| tjt|d |jd ddgd	d
 W d    n1 sfw   Y  tjt|d |jd gddgd	d
 W d    n1 sw   Y  d}tjt
|d |jd	dgddgd	d
 W d    n1 sw   Y  tjt
|d |jdgddgd	d
 W d    n1 sw   Y  tjt
dd |jd	dgddgdd
 W d    n1 sw   Y  |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    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r-   r   r   zkeys must be a list/tupler   zA>0zB>0rk   )r/   r   r#   r$   rP   rm   z!'No object named df3 in the file'r   z!'No object named df4 in the file'ro   r   rG   r   F)
check_freqzindex>df2.index[4]r\   r}   )nperz,all tables must have exactly the same nrows!)r6   rS   r   r,   r   r   r   r   r   rI   KeyErrorr8   r7   r   r#   r$   r   )r:   rk   rm   r;   r   rM   r<   r=   r=   r>   test_select_as_multiple  sv   
 <$r   c                 C   s   t | M}ttdtdddd}|d d t|d< tj|jd< tg dg d	dg d
d}|jd|ddgd |j	ddd}t
|| W d    d S 1 sTw   Y  d S )Nr   rg   rj   rc   rh   r"   r   )z13.0z14.0z15.0)g      @g      @g      @)r   r@   r\   )r'   r)   Trn   rl   r.   )r   r   rs   rt   ru   r2   rv   rw   rI   r8   r6   r7   )r:   r;   r)   r<   rM   r=   r=   r>   test_nan_selection_bug_4858]  s   
"r   c                 C   sz   t g dg dd}||jdk }t| }|jd|ddd |dd	}W d    n1 s0w   Y  t|| d S )
N)r|   r|   r   r~   test & testr   r~   e)r   r   r   r@   r\   r   r      )r|   r~   r   testr*   Tr   za = "test & test")r   r|   r   rI   r8   r6   r7   )r:   r)   r<   r;   rM   r=   r=   r>   (test_query_with_nested_special_characterp  s   
r   c                 C   s   t dg di}t| \}|jd|ddd d}|dd|d	}|js'J 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    d S 1 skw   Y  d S )Nr#   )g~  eA$  eAg'1  eAr   r*   Tr   g  eAzA < z.4fg   eAzA > r   r   r   zA == )r   r   rI   r8   emptyrJ   r6   r7   )r:   r)   r;   cutoffrM   r<   exactr=   r=   r>   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g dd	}t| }|jd
|ddd td}|jd
dd}|jdgd d f }t|| dD ]}ddtdt	
ddfD ]1}d| d}d| dt| d}	tjt|	d |jd
|d W d    n1 s|w   Y  qPd}dD ]*}
|
 d| d}d}	tjt|	d |jd
|d W d    n1 sw   Y  qtg dg dD ]@\}}
|
 d| d}|jd
|d}|dkr|jdgd d f }n|d kr|jdgd d f }n	|jg d d f }t|| qqBW d    d S 1 sw   Y  d S )!N
2014-01-01z
2014-01-02r   rX   g?g333333?r   )r   	real_datefloatr   r-   r   r*   Tr   zreal_date > tsr.   )<>==g @r1   zdate z vzCannot compare z	 of type z to string columnr   r|   )r   r   r    zcould not convert string to )1z1.1r   r   r   r   )r   r   r   rI   r   r8   rJ   r6   r7   pd	Timedeltatyper   r   r   r   zip)r:   r)   r;   rY   rM   r<   opry   queryr   colr=   r=   r>   test_query_compare_column_type  sX   


$r   r/   r   r=   )Nc              	   C   s   t g d}td9}t|}|d|d t|d| d}t|| W d    n1 s.w   Y  W d    d S W d    d S 1 sFw   Y  d S )N)r   r   r   zempty_where.h5r)   tr.   )r   r   r   r5   r   r6   r7   )r/   r)   r   r;   rM   r=   r=   r>   test_select_empty_where  s   

"r   )3warningsr   numpyr2   r   pandas._libs.tslibsr   pandasr   r   r   r   r   r   r	   r6   r
   r   r   r   r   pandas.tests.io.pytables.commonr   r   r   pandas.io.pytablesr   mark
single_cpu
pytestmarkr?   rN   rU   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   parametrizer   r=   r=   r=   r>   <module>   s<    4?)k2EH49#6A+H3