
    bMh7                     (   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             Zej        d             Zej        d             Zej        d             Zej        d	             Zej        d
             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Zej                            ej         d           G d d                      Z dS )    N)option_context)	DataFrameIndexSeries)expressionsc                      t          t          j                            d                              d          t          d          d          S )N   i'     ABCDfloat64columnsdtyper   nprandomdefault_rngstandard_normallist     ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/test_expressions.py_framer      sF    
	a  00<<V   r   c                      t          t          j                            d                              d          t          d          d          S )Nr	   )d   r   r   r   r   r   r   r   r   _frame2r      sF    
	a  00::V   r   c                     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   s    r   _mixedr+   #   sp    !!####I..##G,,##G,,		
 	
  r   c                     t          | d                                         | d                             d          | d                             d          | d                             d          d          S r   r'   r   s    r   _mixed2r.   /   sp    ""$$$$Y//$$W--$$W--		
 	
  r   c                      t          t          j                            d                              ddd          t          d          d          S )	Nr	      r   r
   sizer   r$   r   r   r   r   r   integersr   r   r   r   _integerr5   ;   sM    
	a  ))!Sz)BBV   r   c                     | t           j                            d                              ddt          j        |                     z  S )Nr	   r   r1   )r   r   r   r4   shape)r5   s    r   _integer_integersr8   D   s>     bi++A..77128HCUCU7VVVVr   c                      t          t          j                            d                              ddd          t          d          d          S )	Nr	   r0   r   )e   r   r1   r   r$   r   r3   r   r   r   	_integer2r;   J   sM    
	a  ))!Sx)@@V   r   c                 @    | d         j                                         S Nr    valuesr(   r*   s    r   _arrayr@   S       #;""$$$r   c                 @    | d         j                                         S r=   r>   r-   s    r   _array2rC   X       3<##%%%r   c                 @    | d         j                                         S Nr%   r>   )r+   s    r   _array_mixedrG   ]   rA   r   c                 @    | d         j                                         S rF   r>   )r.   s    r   _array_mixed2rI   b   rD   r   znot using numexpr)reasonc                   B   e Zd Zededefd            Zej        	                    dg d          ej        	                    dddg          ej        	                    dg d	          d
                                     Z
ej        	                    dg d          ej        	                    dddg          d                         Zd Zej                            d          ej        	                    dg d          ej        	                    dddg          d                                     Zej        	                    dddg          d             Zej        	                    dddg          ej        	                    dg d          d                         Zej        	                    dg d          d             Zej        	                    dg d          d             Zej        	                    d eg dg dgg d            eddgddggd!d"g           f eg d#g d$g d%gg d            eddgddgddggd!d"g           fg          d&             Zej        	                    dd	          ej        	                    d'd(          d)                         Zej        	                    d*g d+          ej        	                    d,eeeg          ej        	                    d-d.d/g          d0                                     Zd1S )2TestExpressionsflexopnamec                     |rfd}|_         nt          t                    }t          dd          5   || |          }d d d            n# 1 swxY w Y   t	          j                      || |          }||fS )Nc                 6     t          |           |          S )N)getattr)xyrN   s     r   <lambda>z)TestExpressions.call_op.<locals>.<lambda>l   s    0ga0033 r   compute.use_numexprF)__name__rQ   operatorr   exprget_test_result)dfotherrM   rN   opexpectedresults      `   r   call_opzTestExpressions.call_opi   s     	+3333B BKK6**B1599 	% 	%r"e}}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	Bxs   AAAfixture)r5   r;   r8   r   r   r+   r.   TFarith)addsubmulmodtruedivfloordivc                    |                     |          }|                                5 }|                    t          dd           |                     ||||          \  }}	|dk    r%t          d |	j        j        D                       sJ t          j	        |	|           t          t          |j                            D ]h}
|                     |j        d d |
f         |j        d d |
f         ||          \  }}	|dk    r|	j        j        dk    sJ t          j	        |	|           i	 d d d            d S # 1 swxY w Y   d S )N_MIN_ELEMENTSr   rf   c              3   ,   K   | ]}|j         d k    V  dS )fN)kind).0rR   s     r   	<genexpr>z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>   s(      IIQ16S=IIIIIIr   rk   )getfixturevaluecontextsetattrrX   r_   alldtypesr?   tmassert_equalrangelenr   ilocr   rl   )selfrequestr`   rM   ra   monkeypatchrZ   mr^   r]   is              r   test_run_arithmeticz#TestExpressions.test_run_arithmeticy   s   " $$W--  "" 	2aIIdOQ///#||BD%@@FH	!!II(/2HIIIIIIIIOHf---3rz??++ 2 2#'<<GAAAqDM27111a4=$$ $  I%%#>.#5555&11112	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   DD::D>D>c                    |                     |          }|j        }t          dd          5  |                                dz   }ddd           n# 1 swxY w Y   |                                5 }	|	                    t          dd           t          j        d           |                     ||||          \  }
}t          j	                    }|s
J d            t          j        ||
           t          t          |j                            D ]=}|j        dd|f         dz   }|                     |j        dd|f         ||d	           >	 ddd           dS # 1 swxY 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.
        rU   Fr0   Nri   r   Tz Did not use numexpr as expected.rb   )ro   rV   r   r(   rp   rq   rX   set_test_moder_   rY   rt   ru   rv   rw   r   rx   )ry   rz   r`   rM   comparison_opr{   rZ   ra   r[   r|   r^   r]   used_numexprr}   binary_comps                  r   test_run_binaryzTestExpressions.test_run_binary   s   & $$W--&1599 	" 	"GGIIME	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   "" 	FaIIdOQ///t$$$#||BtUCCFH/11LCC!CCCCOHf---3rz??++ F F#jA.2RWQQQT]KuEEEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs$   AAA0CEE!$E!c                    t           j                            d                              d          }t           j                            d                              d          }t	          j        t          j        d ||d          }|rJ t	          j        t          j        d||d          }|rJ t	          j        t          j        d||d          }|sJ d S )Nr	   iAB r   evaluate+)r   r   r   r   rX   _can_use_numexprrW   rb   )ry   arrayarray2r^   s       r   test_invalidzTestExpressions.test_invalid   s    	%%a((88CC&&q))99#>> &x|T5%TT &x|S&&*UU &x|S%TTr   z2ignore:invalid value encountered in:RuntimeWarningzopname,op_str))rb   r   )rc   -)rd   *)rf   /)pow**zleft_fix,right_fix)r@   rC   )rG   rI   c                 R   |                     |          }|                     |          }d }t          dd          5   |||||           d d d            n# 1 swxY w Y   t          j        d            |||||           t          j                      |||||           d S )Nc                 &   |dk    rt          j        |           } t          t          |          }t	          j        || | d          }t	          j        || | d          }t          j        ||           t	          j        ||||d          }|rJ d S )Nr   Tuse_numexprFr   )	r   absrQ   rW   rX   r   rt   assert_numpy_array_equalr   )leftrightrN   op_strr\   r^   r]   s          r   testitz/TestExpressions.test_binary_ops.<locals>.testit   s    vd||6**B ]2tTtDDDF}RtGGGH'999*2vueZPPFr   rU   Fr0   ro   r   rX   set_numexpr_threads)	ry   rz   rN   r   left_fix	right_fixr   r   r   s	            r   test_binary_opszTestExpressions.test_binary_ops   s    &&x00''	22	 	 	 1599 	0 	0F4///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	 ###tUFF+++ """tUFF+++++s   AA Ac                 H   |                     |          |                     |          fd}t          dd          5   |             d d d            n# 1 swxY w Y   t          j        d            |             t          j                      |             d S )Nc                      dz   } dz   }}t          j        || d          }t          j        || d          }t          j        ||           t          j        |||d          }|rJ d S )Nr0   Tr   Fr   )rX   r   rt   r   r   )f12f22r\   r^   r]   r   r   r   s        r   r   z3TestExpressions.test_comparison_ops.<locals>.testit   s    (C!)CB]2tSdCCCF}RsFFFH'999*2r5#zJJFr   rU   Fr0   r   )ry   rz   r   r   r   r   r   r   s     `   @@r   test_comparison_opsz#TestExpressions.test_comparison_ops   s     &&x00''	22	 	 	 	 	 	 	 1599 	 	FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ### """s   AA #A cond)r   r   r+   r.   c                    |                     |          fd}t          dd          5   |             d d d            n# 1 swxY w Y   t          j        d            |             t          j                      |             d S )Nc                  2   t          j        j        t           j                  } |                                t          j        | j        j        dz             }t          j        | j        j        dz             }t          j	        ||           d S )N)r   r0   )
r   emptyr7   bool_fillrX   wherer?   rt   r   )cr^   r]   r   rZ   s      r   r   z*TestExpressions.test_where.<locals>.testit  sy    222AFF4LLLZ29bi!m<<Fx29bi!m<<H'99999r   rU   Fr0   r   )ry   rz   r   r`   r   rZ   s     `  @r   
test_wherezTestExpressions.test_where  s     $$W--	: 	: 	: 	: 	: 	: 1599 	 	FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ### """s   AA	A	zop_str,opname))r   rf   )z//rg   )r   r   c                 v   t          t          j                            d                              d          dk    t          j                            d                              d          dk    d          }d| d}t	          t
          |          }t          j        |          }t          j	        t          |          5   |||           d d d            n# 1 swxY w Y   t          j	        t          |          5   ||j        |j                   d d d            n# 1 swxY w Y   t          j	        t          |          5   ||j        d           d d d            n# 1 swxY w Y   t          j	        t          |          5   |d	|j                   d d d            n# 1 swxY w Y   t          j	        t          |          5   |d	|           d d d            n# 1 swxY w Y   t          j	        t          |          5   ||d           d d d            d S # 1 swxY w Y   d S )
Nr	   
         ?abz
operator 'z!' not implemented for bool dtypes)matchTF)r   r   r   r   rQ   rW   reescapepytestraisesNotImplementedErrorr   r   )ry   r   rN   rZ   msgrk   err_msgs          r   !test_bool_ops_raise_on_arithmeticz1TestExpressions.test_bool_ops_raise_on_arithmetic#  s    Y**1--44R883>Y**1--44R883> 
 
 E6DDDHf%%)C..].g>>> 	 	Ab"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AbdBDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AbdDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AeRTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AeRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	Ab$KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sl   CC"%C"D''D+.D+E++E/2E/F//F36F3G..G25G2H..H25H2))r   rb   )r   rd   )r   rc   c                 `   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          5  t          j                    5   |||          }	 |||          }
t          j	        |	|
           d d d            n# 1 swxY w Y   t          j                    5   ||j
        |j                  }	 ||j
        |j                  }
t          j        |	|
           d d d            n# 1 swxY w Y   t          j                    5   ||j
        d          }	 ||j
        d          }
t          j        |	|
           d d d            n# 1 swxY w Y   t          j                    5   |d|j
                  }	 |d|j
                  }
t          j        |	|
           d d d            n# 1 swxY w Y   t          j                    5   |d|          }	 |d|          }
t          j	        |	|
           d d d            n# 1 swxY w Y   t          j                    5   ||d          }	 ||d          }
t          j	        |	|
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r	   r   r   |&^)r   r   r   or_and_xor)r   r   r   r   T   )min_elementsF)r   r   r   r   rQ   rW   rt   r   assert_produces_warningassert_frame_equalr   r   assert_series_equal)ry   r   rN   nrZ   subs	sub_funcsrk   feres              r    test_bool_ops_warn_on_arithmeticz0TestExpressions.test_bool_ops_warn_on_arithmeticD  s    Y**1--44Q77#=Y**1--44Q77#= 
 
 s--f599	Hf%%Xyf677S==F^Dq111 	, 	,+-- , ,Ab"IIBr2JJ%a+++, , , , , , , , , , , , , , ,
 +-- - -AbdBDMMBrtRTNN&q!,,,- - - - - - - - - - - - - - -
 +-- - -AbdDMMBrtTNN&q!,,,- - - - - - - - - - - - - - -
 +-- - -AeRTNNBubdOO&q!,,,- - - - - - - - - - - - - - -
 +-- , ,AeRLLBubMM%a+++, , , , , , , , , , , , , , ,
 +-- , ,Ab$KKBr4LL%a+++, , , , , , , , , , , , , , ,5	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   L#1.D+L#+D/	/L#2D/	3L#	AFL#F	L#F	L#58G9-L#9G=	=L# G=	L#8IL#I	L#"I	#L#9.J3'L#3J7	7L#:J7	;L#.L?L#L	L#L	L##L'*L'ztest_input,expected)r   r0   r	   aa)r   r   r   r   )r   r   r   )r      r	   r   )r   r   r	   r   )r   r0   r0   bbc                     |j         d d ddgf                             |j         d d ddgf                   }t          j        ||           d S )Nr   r   )locnert   r   )ry   
test_inputr]   r^   s       r   test_bool_ops_column_name_dtypez/TestExpressions.test_bool_ops_column_name_dtypey  sX    . C> 1255jnQQQgEV6WXX
fh/////r   axis)r   r0   c                    |}|dk    r|j         dd d f         }n|j         d d df         }|                                5 }|                    t          dd           t	          ||          }t          dd          5   |||          }	d d d            n# 1 swxY w Y    |||          }
t          j        |	|
           d d d            d S # 1 swxY w Y   d S )Nr0   r   ri   rU   F)r   )rx   rp   rq   rX   rQ   r   rt   r   )ry   r   ra   r   r{   rZ   r[   r|   op_funcr]   r^   s              r   test_frame_series_axisz&TestExpressions.test_frame_series_axis  su    199GAqqqDMEEGAAAqDME  "" 		4aIIdOQ///b%((G 5u== 5 5"75t4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 WU...F!(F333		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4 		4s6    =C=BCB	CB	%CCCr\   )__mod____rmod____floordiv____rfloordiv__boxscalarr   c                    |                                 5 }|                    t          dd           t          j        dd          } ||          }t          ||          } ||          }	t          dd          5   ||          }
d d d            n# 1 swxY w Y   t          j        |	|
           t          |          D ]g\  }}|t          k    r|	j        |df         }n|	|         }	  t          t          |          |          |          }
||
k    sJ X# t          $ r Y dw xY w	 d d d            d S # 1 swxY w Y   d S )Nri   r   i2   rU   F)rp   rq   rX   r   arangerQ   r   rt   ru   	enumerater   rx   intZeroDivisionError)ry   r\   r   r   r{   r|   dataobjmethodr^   r]   r}   elemscalar_results                 r   ,test_python_semantics_with_numexpr_installedz<TestExpressions.test_python_semantics_with_numexpr_installed  s      "" 	5aIIdOQ///9S"%%D#d))CS"%%FVF^^F   5u== * *!6&>>* * * * * * * * * * * * * * * OFH--- %T?? 
5 
54)##$*K1$5MM$*1IM55ws4yy"55f==H )H44444 )   D
5	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s[   A(D:=B	D:B	D:B	AD:-&D	D:
D)&D:(D))D::D>D>N)rV   
__module____qualname__staticmethodboolstrr_   r   markparametrizer~   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rL   g   s          s       \  [	
 	
 	
  [VdE]33[DDD 2 2  43  2$ [	
 	
 	
  [VdE]33F F 43 F2    [ TUU[SSS  [46WX , , 	  VU,4 [46WX   2 [VdE]33[Y(R(R(RSS  TS 43$ [NNN   < [CCC 0, 0, 0,d [ 	$__ooo6@X@X@X   	E5>E5>:S'NSSS	 	$__oooG444   	U^eU^eU^D 'N  		
 *0 0+ *0
 [D  [VV,,4 4 -, 4( [	
 	
 	
  [UY$>??[XAw//5 5 0/ @? 5 5 5r   rL   )!rW   r   numpyr   r   pandasr   pandas._testing_testingrt   pandas.core.apir   r   r   pandas.core.computationr   rX   r`   r   r   r+   r.   r5   r8   r;   r@   rC   rG   rI   r   skipifUSE_NUMEXPRrL   r   r   r   <module>r      s>    				      ! ! ! ! ! !               
 8 7 7 7 7 7                W W W
    % % % & & & % % % & & & ((1DEEj5 j5 j5 j5 j5 j5 j5 FEj5 j5 j5r   