o
    _~#g                     @   sB  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.d,d-d.d/g dggd0d1 Z/d2d3 Z0dS )4    N)	Timestamp)	DataFrameHDFStoreIndex
MultiIndexSeries_testingbdate_rangeconcat
date_rangeisnaread_hdf)_maybe_remove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 sXw   Y  ttjd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namesr   )
   r   )ABCindexcolumnsdftableformatr!   r&   zcolumns=['A']wherer    )r%   names)r   r   nprandomdefault_rngstandard_normalr   puttmassert_frame_equalselectr   assert_series_equal)
setup_pathr%   r'   storeexpectedr/    r<   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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 sew   Y  tt tjddg ddt tjd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 sLw   Y  d S )Nr   r       )r!   r!   r"   r"   r+   z20130101 9:30r    minperiodsfreqr'   T)	by_blocksr!   r      )sizer#   r   axisr"   )r   r0   r1   r2   r3   r   r%   r   appendr7   r5   r6   r&   locr
   integersreshape)r9   r'   r:   resultr;   r<   r<   r=   test_select_with_dups>   sh   





$rO   c              	   C   s  t | }ttjddttdtdt	ddddd	}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    d S 1 sw   Y  d S )Nr   r?   ABCDdtype
2000-01-01r    r"   rB   r&   r%   r'   r!   r+   zcolumns=['A', 'B']data_columnszA > 0r   Tr#   D)r   r   r0   r1   r2   r3   r   listobjectr   r   rJ   r7   reindexr5   r6   r!   )r9   r:   r'   rN   r;   r<   r<   r=   test_select   s<   




"r[   c                 C   s  t | 5}ttdddtjd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|| qttjddtjddd}t|d |d| |	dd}|jt|jdd dgd }t|| ttjddtjd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d0 |j	d/d+d,}t|| ttd&td&d'd(d"}|d) d t|d)< tj|jd1< ||d- d.k }|jd2|dd	 |j	d2d+d,}t|| W d    n	1 sw   Y  t | L}td3td4d5 ttd6td"td7d8 td9D td"d:}||d dk }|jd|dd	 td}|j	dd;gd,}t|| W d    d S 1 s@w   Y  d S )<N
2012-01-01,  rC   r   )tsr!   r'   r_   r!   rU   ts>=Timestamp('2012-02-01')
2012-02-01)   r   r"   r+   r   rY   r   r@   rb   r   boolvT)Ttruer   z	boolv == F)Ffalser   rF   )r!   r"   df_intzindex<10 and columns=['A']r    r$   f8rQ   )r!   r"   r%   df_floatzindex<10.0 and columns=['A']   colsvaluesfloat64rk   df1
values>2.0r,   rl   g       @df2rV   r%   r   df4皙?x   )   r@   rP   c                 S   s   g | ]}d | qS )zi-r<   .0ir<   r<   r=   
<listcomp>  s    z&test_select_dtypes.<locals>.<listcomp>ru   rT   z	A>np_zero)r   r   r	   r0   r1   r2   r3   r   rJ   r7   r_   r   r5   r6   rK   rc   rZ   rX   r%   arangerangeapplystrnanilocrM   r   rY   rm   )r9   r:   r'   rN   r;   vnp_zeror<   r<   r=   test_select_dtypes   s   





>

&
$r   c              	   C   s  t | }ttdddtjd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 )Nr\   r]   r^   r   a2   bcd   c                 S      g | ]}d |dqS r   03dr<   rv   r<   r<   r=   ry   )      z0test_select_with_many_inputs.<locals>.<listcomp>)r_   r!   r"   usersr'   rU   r`   ra   z1ts>=Timestamp('2012-02-01') & users=['a','b','c'])r   r   r   c                 S   r   r   r<   rv   r<   r<   r=   ry   <  r   <   z.ts>=Timestamp('2012-02-01') and users=selector   z
B=selectorr   zts=selector)r   r   r	   r0   r1   r2   r3   r{   r   rJ   r7   r_   r   r5   r6   r   isinr"   lenr   rl   )r9   r:   r'   rN   r;   selectorr<   r<   r=   test_select_with_many_inputs  sN   



"r   c              	   C   s:  t |r}ttjddttdtdt	ddddd	}t
|d
 |d
| |d
}t|jd
dd}t|}t|| t|jd
dd}t|dksRJ t|}t|| t|jd
dd}t|}t|| W d    n1 syw   Y  | | }ttjddttdtdt	ddddd	}|j|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  | | }ttjddttdtdt	ddddd	}|j|d
dd tt|d
dd}t|}t|dksJ t|| t|t|d
 t |d}ttjddttdtdt	ddddd	}	|jd|	d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 sw   Y  d S ) Nr   r?   rP   rQ   rS   r    r"   rB   rT   r'   T)iterator	chunksizerb   df_non_table)keyz0can only use an iterator or chunksize on a tablematchr(   )r   r*   rn   rU   {}_2r+   r   r   rp   r   rH   )r   )r   r   )r   r   r0   r1   r2   r3   r   rX   rY   r   r   rJ   r7   r
   r5   r6   r   to_hdfpytestraises	TypeErrorr   copyrenamer*   select_as_multiple)tmp_pathr9   r:   r'   r;   resultsrN   pathmsgrn   rp   r<   r<   r=   test_select_iteratorO  s   



$r   c           	   	   C   sj  d}t | }}ttjddttdtdt	ddd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 sw   Y  t | }ttjddttdtdt	ddd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     @r    r@   rP   rQ   rS   r   r/   rB   rT   r'   r   
index >= ''r,   
index <= '' & index <= 'r   r-   r   )r   r   r0   r1   r2   r3   r   rX   rY   r   r   rJ   r%   r7   r5   r6   r
   )	r9   r   r:   r;   beg_dtend_dtrN   r-   r   r<   r<   r=   "test_select_iterator_complete_8014  sb   





#


$r   c           
   	   C   s  d}t | }ttjddttdtdt	ddd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 | J}ttjddttdtdt	dddd	d
}t
|d |d| |jd }d| d}t|jd||d}dt|ksJ W d    d S 1 sw   Y  d S )Nr   r   r   rP   rQ   rS   r   r/   rB   rT   r'   r   r   r   r   r   r   r   z	index > 'r   r   r   r0   r1   r2   r3   r   rX   rY   r   r   rJ   r%   r7   r
   r5   r6   r   
r9   r   r:   r;   r   r   r-   r   rN   	rexpectedr<   r<   r=   &test_select_iterator_non_complete_8014  sP   




"

$r   c           
   	   C   s  d}t | }ttjddttdtdt	ddd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spJ 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'  r   r   rP   rQ   rS   r   r/   rB   rT   r'   r   r   r   r   r   r   r   z' & index >= 'r   r   r<   r<   r=   &test_select_iterator_many_empty_frames'  s@   


	"r   c           
   	   C   s  t tjddttdtdtddddd	}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 tjddttdtdtddddd	}|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 )Nr   r?   rP   rQ   rS   r    r"   rB   rT   framer(   r)   zindex>=datedatezcolumns=['A', 'D']z	columns=Ar!   rW   df_timez day is out of range for month: 0r   zindex>0)r   r0   r1   r2   r3   r   rX   rY   r   r   r4   r%   r   r   envscoper7   rK   r5   r6   rJ   r   r   
ValueError)
r9   r'   r:   r   crit1crit2crit3rN   r;   r   r<   r<   r=   test_frame_selectb  s>   
"r   c              	   C   s\  t tjddttdtdtddddd	}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   r?   rP   rQ   rS   r    r"   rB   rT   r   stringr   r   r@   r'   r(   r*   rV   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!   z(index>df.index[3] & columns in ['A','B']r+   )r   r0   r1   r2   r3   r   rX   rY   r   rK   r%   r   r4   r7   r   r5   r6   r   r   NotImplementedErrorr&   
differencerZ   )r9   r'   r:   rN   r;   r   r<   r<   r=   test_frame_select_complex  sR   
   "$r   c                 C   s  | d }| d }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|	| W d    n1 spw   Y  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(   )r   moder*   rV   zA=[2,3]r,   r   )   r   datac                 S   s"   g | ]}t d D ]}||fqqS )rb   )r{   )rw   rx   jr<   r<   r=   ry     s   " z.test_frame_select_complex2.<locals>.<listcomp>rb   l1l2)r   rT   )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   r0   r1   r2   r3   r   from_tuplesr{   r%   tolistr   r7   r5   r6   )r   pphhparams	selectionhistr;   l0r:   rN   r%   r<   r<   r=   test_frame_select_complex2  sP   


"r   c              	   C   s   t tjddttdtdtddddd	}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 s]w   Y  W d    d S W d    d S 1 suw   Y  d S )Nr   r?   rP   rQ   rS   r    r"   rB   rT   r'   r(   r)   z unable to collapse Joint Filtersr   zcolumns=['A'] | columns=['B']z!columns=['A','B'] & columns=['C'])r   r0   r1   r2   r3   r   rX   rY   r   r   r4   r   r   r   r7   )r9   r'   r:   r   r<   r<   r=   test_invalid_filtering  s"   
	"r   c              	   C   s  t | }ttjddttdtdt	ddddd	}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 )Nr   r?   rP   rQ   rS   r    r"   rB   rT   nonex    r'   rU   zx=nonezx!=nonerp   r   intdf3zint=2zint!=2)r   r   r0   r1   r2   r3   r   rX   rY   r   rK   r%   rJ   r7   r   r5   r6   r   r~   r   r   )r9   r:   r'   rN   r;   rp   r<   r<   r=   test_string_select  s>   
"r   c              	   C   s  t tjddttdtdtddddd	}|	 j
d
jd}d|d< t| }d}tjt|d |jd ddgdd W d    n1 sJw   Y  |jd|ddgd |d| tjt|d |jd ddgdd W d    n1 s{w   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 sw   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}|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?   rP   rQ   rS   r    r"   rB   rT   r   r+   r   r   zkeys must be a list/tupler   zA>0zB>0rn   )r-   r   r!   rU   rp   z!'No object named df3 in the file'r   z!'No object named df4 in the file'rr   r   rH   r   F)
check_freqzindex>df2.index[4]rb   z,all tables must have exactly the same nrows!)r   r0   r1   r2   r3   r   rX   rY   r   r   r   r*   r   r   r   r   r   rJ   KeyErrorr7   r5   r6   r
   r!   r"   headr   )r9   rn   rp   r:   r   rN   r;   r   r<   r<   r=   test_select_as_multipleE  s   
 <$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   rj   rm   rQ   rk   r    r   )z13.0z14.0z15.0)g      @g      @g      @)r   r@   rb   )r%   r'   Trq   ro   r,   )r   r   r{   r|   r}   r0   r~   r   rJ   r7   r5   r6   )r9   r:   r'   r;   rN   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@   rb   r   r      )r   r   r   testr(   Tr   za = "test & test")r   r   r   rJ   r7   r5   r6   )r9   r'   r;   r:   rN   r<   r<   r=   (test_query_with_nested_special_character  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   rJ   r7   emptyrK   r5   r6   )r9   r'   r:   cutoffrN   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 ]1}
|
 d| d}|
dkrd}	n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   r^   rs   g333333?r   )r   	real_datefloatr   r+   r   r(   Tr   zreal_date > tsr,   )<>==g @r/   zdate z vzCannot compare z	 of type z to string columnr   r   )r   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   rJ   r   r7   rK   r5   r6   pd	Timedeltatyper   r   r   r   zip)r9   r'   r:   r_   rN   r;   opr   queryr   colr<   r<   r=   test_query_compare_column_type  s\   


$r   r-   r   r<   )Nc                 C   sj   t g d}| d }t|}|d|d t|d|d}t|| W d    d S 1 s.w   Y  d S )N)r   r   r   zempty_where.h5r'   tr,   )r   r   r4   r   r5   r6   )r   r-   r'   r   r:   rN   r<   r<   r=   test_select_empty_where  s   
"r  c                 C   s   | d }t tg dg dddgd}d }t|}|jd|dd	d
 |jddddd}W d    n1 s:w   Y  |d d }||ksKJ d S )Nzlarge_int.h5)r   r   r   d)l l l {   r   yr+   r   TFrq   zy==-9223372036854775801r,   r   )r   r   r   rJ   r7   get)r   r   r'   rN   r/   r;   r<   r<   r=   test_select_large_integer  s   
r  )1numpyr0   r   pandas._libs.tslibsr   pandasr   r   r   r   r   r   r   r5   r	   r
   r   r   r   pandas.tests.io.pytables.commonr   r   pandas.io.pytablesr   mark
single_cpu
pytestmarkr>   rO   r[   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   parametrizer  r  r<   r<   r<   r=   <module>   s<    4 D)t0RM9;*:;.K6
