o
    _~#g7                     @   s  d dl Z d dlZd dlZd dlZd dlmZ d dlmZ	 d dl
mZmZmZ d dlmZ ejdd Zejdd Zejd	d
 Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd Zejjej ddG dd dZ dS )    N)option_context)	DataFrameIndexSeries)expressionsc                   C       t tjddtdddS )N   i'     ABCDfloat64columnsdtyper   nprandomdefault_rngstandard_normallist r   r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/test_expressions.py_frame   
   r   c                   C   r   )Nr   )d   r
   r   r   r   r   r   r   r   r   _frame2   r   r   c                 C   8   t | d  | d d| d d| d ddS 	NABfloat32Cint64Dint32)r   r   r!   r#   r   copyastyper   r   r   r   _mixed#      
r)   c                 C   r   r   r%   r   r   r   r   _mixed2/   r*   r,   c                   C   &   t tjdjddddtdddS )	Nr      r   r	   sizer   r"   r   r   r   r   r   integersr   r   r   r   r   _integer;   
   r3   c                 C   s"   | t jdjddt | d S )Nr   r   r/   )r   r   r   r2   shape)r3   r   r   r   _integer_integersD   s   "r6   c                   C   r-   )	Nr   r.   r   )e   r
   r/   r   r"   r   r1   r   r   r   r   	_integer2J   r4   r8   c                 C      | d j  S Nr   valuesr&   r(   r   r   r   _arrayS      r=   c                 C   r9   r:   r;   r+   r   r   r   _array2X   r>   r?   c                 C   r9   Nr#   r;   )r)   r   r   r   _array_mixed]   r>   rA   c                 C   r9   r@   r;   )r,   r   r   r   _array_mixed2b   r>   rB   znot using numexpr)reasonc                
   @   s8  e Zd ZededefddZej	dg dej	dddgej	d	g d
dd Z
ej	dg dej	dddgdd Zdd Zejdej	dg dej	dddgdd Zej	dddgdd Zej	dddgej	dg ddd Zej	dg d d!d" Zej	dg d#d$d% Zej	d&eg d'g d'gg d(d)eddgddggd*d+gd)feg d,g d-g d.gg d(d)eddgddgddggd*d+gd)fgd/d0 Zej	d	d
ej	d1d2d3d4 Zej	d5g d6ej	d7eeegej	d8d9d:gd;d< Zd=S )>TestExpressionsflexopnamec                    sp   |r fdd} |_ ntt }tdd || |}W d    n1 s&w   Y  t  || |}||fS )Nc                    s   t |  |S )N)getattr)xyrF   r   r   <lambda>l   s    z)TestExpressions.call_op.<locals>.<lambda>compute.use_numexprF)__name__rG   operatorr   exprget_test_result)dfotherrE   rF   opexpectedresultr   rJ   r   call_opi   s   

zTestExpressions.call_opfixture)r3   r8   r6   r   r   r)   r,   TFarith)addsubmulmodtruedivfloordivc                 C   s   | |}| e}|tdd | ||||\}}	|dkr,tdd |	jjD s,J t	|	| t
t|jD ],}
| |jd d |
f |jd d |
f ||\}}	|dkr_|	jjdks_J t	|	| q9W d    d S 1 sqw   Y  d S )N_MIN_ELEMENTSr   r]   c                 s   s    | ]}|j d kV  qdS )fN)kind).0rH   r   r   r   	<genexpr>   s    z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>r`   )getfixturevaluecontextsetattrrO   rV   alldtypesr<   tmassert_equalrangelenr   ilocr   ra   )selfrequestrW   rE   rX   monkeypatchrQ   mrU   rT   ir   r   r   test_run_arithmeticy   s    

$"z#TestExpressions.test_run_arithmeticc                 C   s  | |}|j}tdd | d }W d   n1 sw   Y  | S}	|	tdd td | ||||\}
}t	 }|sHJ dt
||
 tt|jD ]}|jdd|f d }| |jdd|f ||d	 qUW d   dS 1 s}w   Y  dS )
z
        tests solely that the result is the same whether or not numexpr is
        enabled.  Need to test whether the function does the correct thing
        elsewhere.
        rL   Fr.   Nr_   r   Tz Did not use numexpr as expected.rY   )rd   rM   r   r&   re   rf   rO   set_test_moderV   rP   ri   rj   rk   rl   r   rm   )rn   ro   rW   rE   comparison_oprp   rQ   rX   rR   rq   rU   rT   used_numexprrr   binary_compr   r   r   test_run_binary   s"   


 "zTestExpressions.test_run_binaryc                 C   s|   t jdd}t jdd}ttjd ||d}|r J ttjd||d}|r.J ttjd||d}|s<J d S )Nr   iAB r   evaluate+)r   r   r   r   rO   _can_use_numexprrN   rY   )rn   arrayarray2rU   r   r   r   test_invalid   s   zTestExpressions.test_invalidz2ignore:invalid value encountered in:RuntimeWarningzopname,op_str))rY   rz   )rZ   -)r[   *)r]   /)pow**zleft_fix,right_fix)r=   r?   )rA   rB   c           	      C   s   | |}| |}dd }tdd ||||| W d    n1 s%w   Y  td ||||| t  ||||| d S )Nc                 S   sj   |dkr	t | } tt|}tj|| | dd}tj|| | dd}t|| t||||d}|r3J d S )Nr   Tuse_numexprFry   )	r   absrG   rN   rO   ry   ri   assert_numpy_array_equalr{   )leftrightrF   op_strrS   rU   rT   r   r   r   testit   s   

z/TestExpressions.test_binary_ops.<locals>.testitrL   Fr.   rd   r   rO   set_numexpr_threads)	rn   ro   rF   r   left_fix	right_fixr   r   r   r   r   r   test_binary_ops   s   
	

zTestExpressions.test_binary_opsc                    sv   | || | fdd}tdd |  W d    n1 s%w   Y  td |  t  |  d S )Nc                     sb   d } d } }t j|| dd}t j|| dd}t|| t |||d}|r/J d S )Nr.   Tr   Fry   )rO   ry   ri   r   r{   )f12f22rS   rU   rT   ru   r   r   r   r   r      s   z3TestExpressions.test_comparison_ops.<locals>.testitrL   Fr.   r   )rn   ro   ru   r   r   r   r   r   r   test_comparison_ops   s   



z#TestExpressions.test_comparison_opscond)r   r   r)   r,   c                    sj   | | fdd}tdd |  W d    n1 sw   Y  td |  t  |  d S )Nc                     sX   t jjt jd} |   t| jjd }t | jjd }t	|| d S )N)r   r.   )
r   emptyr5   bool_fillrO   wherer<   ri   r   )crU   rT   r   rQ   r   r   r     s
   
z*TestExpressions.test_where.<locals>.testitrL   Fr.   r   )rn   ro   r   rW   r   r   r   r   
test_where  s   


zTestExpressions.test_wherezop_str,opname))r   r]   )z//r^   )r   r   c                 C   s  t tjdddktjdddkd}d| d}tt|}t|}tj	t
|d ||| W d    n1 s@w   Y  tj	t
|d ||j|j W d    n1 s^w   Y  tj	t
|d ||jd W d    n1 s{w   Y  tj	t
|d |d	|j W d    n1 sw   Y  tj	t
|d |d	| W d    n1 sw   Y  tj	t
|d ||d W d    d S 1 sw   Y  d S )
Nr   
         ?abz
operator 'z!' not implemented for bool dtypes)matchTF)r   r   r   r   rG   rN   reescapepytestraisesNotImplementedErrorr   r   )rn   r   rF   rQ   msgr`   err_msgr   r   r   !test_bool_ops_raise_on_arithmetic#  s4   

"z1TestExpressions.test_bool_ops_raise_on_arithmetic))rz   rY   )r   r[   )r   rZ   c              	   C   s~  d}t tjd|dktjd|dkd}dddd}d	d
dd}tt|}tt|||  }|dkr;d S tjddd t  |||}	|||}
t	|	|
 W d    n1 sbw   Y  t  ||j
|j}	||j
|j}
t|	|
 W d    n1 sw   Y  t  ||j
d}	||j
d}
t|	|
 W d    n1 sw   Y  t  |d|j
}	|d|j
}
t|	|
 W d    n1 sw   Y  t  |d|}	|d|}
t	|	|
 W d    n1 sw   Y  t  ||d}	||d}
t	|	|
 W d    n1 sw   Y  W d    d S W d    d S 1 s8w   Y  d S )Nr   r   r   r   |&^)rz   r   r   or_and_xor)r   r   r   r   T   )min_elementsF)r   r   r   r   rG   rN   ri   r   assert_produces_warningassert_frame_equalr   r   assert_series_equal)rn   r   rF   nrQ   subs	sub_funcsr`   ferer   r   r    test_bool_ops_warn_on_arithmeticD  s\   












 $z0TestExpressions.test_bool_ops_warn_on_arithmeticztest_input,expected)r   r.   r   aa)r   r   r   r   )r   r   r   )r      r   r   )r   r
   r   r   )r   r.   r.   bbc                 C   s>   |j d d ddgf |j d d ddgf }t|| d S )Nr   r   )locneri   r   )rn   
test_inputrT   rU   r   r   r   test_bool_ops_column_name_dtypey  s   .z/TestExpressions.test_bool_ops_column_name_dtypeaxis)r   r.   c              	   C   s   |}|dkr|j dd d f }n	|j d d df }| <}|tdd t||}tdd |||d}	W d    n1 s@w   Y  |||d}
t|	|
 W d    d S 1 s\w   Y  d S )Nr.   r   r_   rL   F)r   )rm   re   rf   rO   rG   r   ri   r   )rn   r   rX   r   rp   rQ   rR   rq   op_funcrT   rU   r   r   r   test_frame_series_axis  s   

"z&TestExpressions.test_frame_series_axisrS   )__mod____rmod____floordiv____rfloordiv__boxscalarr   c              
   C   s  |  v}|tdd tdd}||}t||}||}	tdd ||}
W d    n1 s3w   Y  t|	|
 t	|D ]/\}}|t
krR|	j|df }n|	| }ztt|||}
W n	 tyj   Y qBw ||
ksqJ qBW d    d S 1 s}w   Y  d S )Nr_   r   i2   rL   F)re   rf   rO   r   arangerG   r   ri   rj   	enumerater   rm   intZeroDivisionError)rn   rS   r   r   rp   rq   dataobjmethodrU   rT   rr   elemscalar_resultr   r   r   ,test_python_semantics_with_numexpr_installed  s,   


"z<TestExpressions.test_python_semantics_with_numexpr_installedN)rM   
__module____qualname__staticmethodboolstrrV   r   markparametrizers   rx   r~   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   g   s    



2
	rD   )!rN   r   numpyr   r   pandasr   pandas._testing_testingri   pandas.core.apir   r   r   pandas.core.computationr   rO   rW   r   r   r)   r,   r3   r6   r8   r=   r?   rA   rB   r   skipifUSE_NUMEXPRrD   r   r   r   r   <module>   s@    










