a
    d_                     @   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| X}|jd|dd |dg }t	|j
ddgd| t	|j
ddd| W d    n1 s0    Y  ttjdd|dd}t| 6}|jd|dd t|j
ddd| W d    n1 s0    Y  d S )N)foobarZbazZqux)ZoneZtwoZthree)
r   r   r      r      r      r   r   )
r   r   r   r   r   r   r   r   r   r   Zfoo_nameZ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   Zassert_series_equal)
setup_pathr   r    storeexpectedr(    r4   m/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/io/pytables/test_select.pytest_select_columns_in_where   s&    

4
r6   c                 C   s  t tjd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gd}|jd d dgf }t
|| W d    n1 s0    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| }|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0    Y  t| l}|d	| |d	| |jd d ddgf }t||g}|j	d	ddgd}t
j||d
d W d    n1 s0    Y  d S )Nr   )r      )r   r   r   r   r$   z20130101 9:30r   T)periodsfreqr    T)Z	by_blocksr   r      )sizer   r   Zaxisr   )r   r)   r*   r+   r,   r   r   r   appendr0   r.   r/   r   locr
   ZintegersZreshape)r1   r    r2   resultr3   r4   r4   r5   test_select_with_dups>   sb    

*


0
rA   c                 C   s  t | }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 s0    Y  d S )Nr    r   r   r$   zcolumns=['A', 'B']data_columnszA > 0r   Tr   D)	r   r.   makeTimeDataFramer   r>   r0   reindexr/   r   )r1   r2   r    r@   r3   r4   r4   r5   test_select   s2    



rG   c                 C   sX  t | l}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|| qBt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~0    Y  t | 8}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 s0    Y  t | ^}t }||d dk }|jd|dd	 td}|j	dd3gd,}t|| W d    n1 sJ0    Y  d S )4N
2012-01-01,  r9   r   )tsr   r    rK   r   rB   ts>=Timestamp('2012-02-01')
2012-02-01)   r   r   r$   r   objectr   r7   rN   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float64rV   df1
values>2.0r%   rW   g       @df2rC   r   r   df4z	A>np_zero)r   r   r	   r)   r*   r+   r,   r   r>   r0   rK   r   r.   r/   r?   rP   rF   listr   ZarangerangeapplystrnanilocZmakeDataFramerX   )r1   r2   r    r@   r3   vZnp_zeror4   r4   r5   test_select_dtypes   s    




,
,

re   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szJ t|jdd	 j}|
dd}||j|j }t|| t|d	ksJ W d    n1 s0    Y  d S )NrH   rI   rJ   r   a2   bcd   c                 S   s   g | ]}d |dqS rf   Z03dr4   .0ir4   r4   r5   
<listcomp>!      z0test_select_with_many_inputs.<locals>.<listcomp>)rK   r   r   usersr    rB   rL   rM   z1ts>=Timestamp('2012-02-01') & users=['a','b','c'])rf   rh   ri   c                 S   s   g | ]}d |dqS rk   r4   rl   r4   r4   r5   ro   4  rp   <   z.ts>=Timestamp('2012-02-01') and users=selector   z
B=selectorr   zts=selector)r   r   r	   r)   r*   r+   r,   r_   r   r>   r0   rK   r   r.   r/   rq   isinr   lenr   rW   )r1   r2   r    r@   r3   selectorr4   r4   r5   test_select_with_many_inputs  sL    


rw   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 s0    Y  | | }td}|
|d	 d
}tjt|d t|d	dd W d    n1 s*0    Y  tjt|d t|d	dd W d    n1 sh0    Y  | | }td}|j
|ddd tt|ddd}t|}t	|dksJ 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 d    n1 s0    Y  d S )Ni  r    T)iteratorrj   	chunksizerN      Zdf_non_tablez0can only use an iterator or chunksize on a tablematchr!   r"   rY   rB   {}_2r$   r   r   r[   r   r=   )rv   )rv   rz   )r   r.   rE   r   r>   r0   r^   r
   r/   ru   to_hdfpytestraises	TypeErrorr   renamer#   select_as_multiple)tmp_pathr1   r2   r    r3   resultsr@   pathmsgrY   r[   r4   r4   r5   test_select_iteratorG  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 d    n1 s0    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    n1 s0    Y  d S )N     @ Sr    r   
index >= ''r%   
index <= '' & index <= 'ry   r&   rz   )
r   r.   rE   r   r>   r   r0   r/   r^   r
   )	r1   rz   r2   r3   beg_dtend_dtr@   r&   r   r4   r4   r5   "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    n1 s20    Y  t | n}tdd}t|d |d| |jd }d| d}t|jd||d	}dt
|ksJ W d    n1 s0    Y  d S )Nr   r   r   r    r   r   r   r   r   r   r   z	index > 'r   r   r.   rE   r   r>   r   r^   r0   r
   r/   ru   
r1   rz   r2   r3   r   r   r&   r   r@   Z	rexpectedr4   r4   r5   &test_select_iterator_non_complete_8014  s<    


,


r   c           
      C   s  d}t | z}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sJ t|}||j|k }	t	|	| d| d| d}t|jd||d	}t
|dksJ t|}||j|k|j|k@  }	t	|	| d
| d| d}t|jd||d	}t
|dkszJ W d    n1 s0    Y  d S )Ni'  i r   r    r   r   r   r   r   r   r   z' & index >= 'r   r   r4   r4   r5   &test_select_iterator_many_empty_frames  s6    

	r   c           
   	   C   s2  t  }t| 
}|jd|dd |jt|d  }td}|jjd |ksRJ 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 s0    Y  W d    n1 s$0    Y  d S )Nframer!   r"   r   zindex>=datedatezcolumns=['A', 'D']z	columns=Ar   rD   Zdf_timez day is out of range for month: 0r|   zindex>0)r.   rE   r   r-   r   ru   r   envZscoper0   r?   r/   r>   r   r   
ValueError)
r1   r    r2   r   Zcrit1Zcrit2Zcrit3r@   r3   r   r4   r4   r5   test_frame_select6  s&    r   c              	   C   s4  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 s0    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    n1 s&0    Y  d S )Nr   stringr   r   r7   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 numexprr|   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-   r0   r   r/   r   r   NotImplementedErrorr   
differencerF   )r1   r    r2   r@   r3   r   r4   r4   r5   test_frame_select_complexX  sF       ,"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 s0    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|x}|jddd
}	t|	| |jddd
}	t|	| |jddd
}	t|	| |jddd
}	t|	| W d    n1 s0    Y  d S )Nz
params.hdfzhist.hdfr   )r   r   r   r   r   r    wr!   )moder#   rC   zA=[2,3]r%   r   )   r   datac                 S   s"   g | ]}t d D ]}||fqqS )rN   )r_   )rm   rn   jr4   r4   r5   ro     rp   z.test_frame_select_complex2.<locals>.<listcomp>rN   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_tuplesr_   r   tolistr   r0   r.   r/   )r   pphhparamsZ	selectionhistr3   Zl0r2   r@   r   r4   r4   r5   test_frame_select_complex2  sL    

*
r   c              	   C   s   t  }t| }|jd|dd d}tjt|d |dd W d    n1 sV0    Y  tjt|d |dd W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr    r!   r"   z unable to collapse Joint Filtersr|   zcolumns=['A'] | columns=['B']z!columns=['A','B'] & columns=['C'])r.   rE   r   r-   r   r   r   r0   )r1   r    r2   r   r4   r4   r5   test_invalid_filtering  s    
*r   c                 C   s  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|| |	 }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    n1 s|0    Y  d S )Nnonex r      r    rB   zx=nonezx!=noner[   r   intdf3zint=2zint!=2)r   r.   rE   r?   r   r>   r0   r   r/   copyr)   rb   r   r   )r1   r2   r    r@   r3   r[   r4   r4   r5   test_string_select  s4    r   c              	   C   sX  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 sj0    Y  |j	d	|ddgd |	d| tjt|d$ |jd ddgd	d
 W d    n1 s0    Y  tjt|d& |jd gddgd	d
 W d    n1 s0    Y  d}tjt
|d( |jd	dgddgd	d
 W d    n1 s^0    Y  tjt
|d& |jdgddgd	d
 W d    n1 s0    Y  tjt
dd( |jd	dgddgdd
 W d    n1 s0    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 s*0    Y  W d    n1 sJ0    Y  d S )Nr~   r$   r   r   zkeys must be a list/tupler|   zA>0zB>0rY   )r&   rv   r   r   rB   r[   z!'No object named df3 in the file'r   z!'No object named df4 in the file'r]   r   r=   r   F)Z
check_freqzindex>df2.index[4]rN   rg   )Znperz,all tables must have exactly the same nrows!)r.   rE   r   r#   r   r   r   r   r   r>   KeyErrorr0   r/   r
   r   r   r   )r1   rY   r[   r2   r   r@   r3   r4   r4   r5   test_select_as_multiple  sb    226&6&
r   c                 C   s   t | }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    n1 s0    Y  d S )Nr   rU   rX   rS   rV   r   r   )z13.0z14.0z15.0)g      @g      @g      @)r   r7   rN   )r   r    Tr\   rZ   r%   )r   r   r_   r`   ra   r)   rb   rc   r>   r0   r.   r/   )r1   r2   r    r3   r@   r4   r4   r5   test_nan_selection_bug_4858K  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 s`0    Y  t|| d S )
N)rf   rf   ri   rh   test & testri   rh   e)r   r   r   r7   rN   r   r      )rf   rh   r   testr!   Tr   za = "test & test")r   rf   r   r>   r0   r.   r/   )r1   r    r3   r2   r@   r4   r4   r5   (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sNJ 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    n1 s0    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   r>   r0   emptyr?   r.   r/   )r1   r    r2   cutoffr@   r3   exactr4   r4   r5   test_query_long_float_literalj  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 ]b}d| d}d| dt| d}	tjt|	d |jd
|d W d    q1 s0    Y  qd}dD ]h}
|
 d| d}|
dkr4d}	nd}	tjt|	d |jd
|d W d    n1 sl0    Y  qtg dg d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|| qqW d    n1 s,0    Y  d S )#N
2014-01-01z
2014-01-02r   rJ   g?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|   rf   )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   r>   r   r0   r?   r.   r/   pdZ	Timedeltatyper   r   r   r   zip)r1   r    r2   rK   r@   r3   oprd   queryr   colr4   r4   r5   test_query_compare_column_type  sN    


.
2

r   r&   r   r4   )Nc                 C   sh   t g d}| d }t|8}|d|d t|d|d}t|| W d    n1 sZ0    Y  d S )N)r   r   r   zempty_where.h5r    tr%   )r   r   r-   r   r.   r/   )r   r&   r    r   r2   r@   r4   r4   r5   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 st0    Y  |d d }||ksJ d S )Nzlarge_int.h5)rf   rh   ri   d)l l l {   r   yr$   r   TFr\   zy==-9223372036854775801r%   r   )r   r   r   r>   r0   get)r   r   r    r@   r(   r3   r4   r4   r5   test_select_large_integer  s    
8r   )1numpyr)   r   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   Zpandas.io.pytablesr   markZ
single_cpuZ
pytestmarkr6   rA   rG   re   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zparametrizer   r   r4   r4   r4   r5   <module>   s:   4 D%p0BE17"6;*F6
