
    Owg7                     R   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:                  j=                  ej>                   d       G d d             Z y)    N)option_context)	DataFrameIndexSeries)expressionsc                      t        t        j                  j                  d      j	                  d      t        d      d      S )N   i'     ABCDfloat64columnsdtyper   nprandomdefault_rngstandard_normallist     T/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/test_expressions.py_framer      s6    
		a 00<V r   c                      t        t        j                  j                  d      j	                  d      t        d      d      S )Nr	   )d   r   r   r   r   r   r   r   r   _frame2r      s6    
		a 00:V r   c                     t        | d   j                         | d   j                  d      | d   j                  d      | d   j                  d      d      S 	NABfloat32Cint64Dint32)r    r!   r#   r%   r   copyastyper   s    r   _mixedr+   #   sZ    !!###I.##G,##G,		
 r   c                     t        | d   j                         | d   j                  d      | d   j                  d      | d   j                  d      d      S r   r'   r   s    r   _mixed2r.   /   sZ    ""$$$Y/$$W-$$W-		
 r   c                      t        t        j                  j                  d      j	                  ddd      t        d      d      S )	Nr	      r   r
   sizer   r$   r   r   r   r   r   integersr   r   r   r   _integerr5   ;   s=    
		a ))!Sz)BV r   c                     | t         j                  j                  d      j                  ddt        j                  |             z  S )Nr	   r   r1   )r   r   r   r4   shape)r5   s    r   _integer_integersr8   D   s9     bii++A.771288HCU7VVVr   c                      t        t        j                  j                  d      j	                  ddd      t        d      d      S )	Nr	   r0   r   )e   r   r1   r   r$   r   r3   r   r   r   	_integer2r;   J   s=    
		a ))!Sx)@V r   c                 <    | d   j                   j                         S Nr    valuesr(   r*   s    r   _arrayr@   S       #;""$$r   c                 <    | d   j                   j                         S r=   r>   r-   s    r   _array2rC   X       3<##%%r   c                 <    | d   j                   j                         S Nr%   r>   )r+   s    r   _array_mixedrG   ]   rA   r   c                 <    | d   j                   j                         S rF   r>   )r.   s    r   _array_mixed2rI   b   rD   r   znot using numexpr)reasonc                      e Zd Zededefd       Zej                  j                  dg d      ej                  j                  dddg      ej                  j                  dg d	      d
                      Z
ej                  j                  dg d      ej                  j                  dddg      d               Zd Zej                  j                  d      ej                  j                  dg d      ej                  j                  dddg      d                      Zej                  j                  dddg      d        Zej                  j                  dddg      ej                  j                  dg d      d               Zej                  j                  dg d      d        Zej                  j                  dg d      d        Zej                  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                  j                  dd	      ej                  j                  d'd(      d)               Zej                  j                  d*g d+      ej                  j                  d,eeeg      ej                  j                  d-d.d/g      d0                      Zy1)2TestExpressionsflexopnamec                     |rfd}|_         nt        t              }t        dd      5   || |      }d d d        t	        j
                           || |      }|fS # 1 sw Y   *xY w)Nc                 (     t        |       |      S )N)getattr)xyrN   s     r   <lambda>z)TestExpressions.call_op.<locals>.<lambda>l   s    0ga03 r   compute.use_numexprF)__name__rQ   operatorr   exprget_test_result)dfotherrM   rN   opexpectedresults      `   r   call_opzTestExpressions.call_opi   sm    3B BK6*B159 	%"e}H	% 	Bx	% 	%s   
A  A)fixture)r5   r;   r8   r   r   r+   r.   TFarith)addsubmulmodtruedivfloordivc                 x   |j                  |      }|j                         5 }|j                  t        dd       | j	                  ||||      \  }}	|dk(  r(t        d |	j                  j                  D              sJ t        j                  |	|       t        t        |j                              D ]q  }
| j	                  |j                  d d |
f   |j                  d d |
f   ||      \  }}	|dk(  r|	j                  j                  dk(  sJ t        j                  |	|       s 	 d d d        y # 1 sw Y   y xY w)N_MIN_ELEMENTSr   rf   c              3   :   K   | ]  }|j                   d k(    yw)fN)kind).0rR   s     r   	<genexpr>z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>   s     IQ166S=Is   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(//2H2HIIIIOOHf-3rzz?+ 2#'<<GGAqDM2771a4=$$  I%#>>..#555&12	2 	2 	2s   DD00D9c                    |j                  |      }|j                  }t        dd      5  |j                         dz   }ddd       |j	                         5 }	|	j                  t        dd       t        j                  d       | j                  |||      \  }
}t        j                         }|sJ d       t        j                  ||
       t        t        |j                              D ]=  }|j                  dd|f   dz   }| j                  |j                  dd|f   ||d	       ? 	 ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)
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   s1   & $$W-&&159 	"GGIME	"   " 	FaIIdOQ/t$#||BtUCFH//1LC!CC<OOHf-3rzz?+ F#jjA.2RWWQT]KuEF	F 	F	" 	"	F 	Fs   D5CE5D>E
c                    t         j                  j                  d      j                  d      }t         j                  j                  d      j                  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 y )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&&q)99#> &&x||T5%Tz &&x||S&&*Uz &&x||S%Tvr   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                 $   |j                  |      }|j                  |      }d }t        dd      5   |||||       d d d        t        j                  d        |||||       t        j                           |||||       y # 1 sw Y   IxY w)Nc                 "   |dk(  rt        j                  |       } t        t        |      }t	        j
                  || | d      }t	        j
                  || | d      }t        j                  ||       t	        j                  ||||d      }|rJ y )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~    vvd|6*B ]]2tTtDF}}RtGH''9**2vueZPF:vr   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''	2	 159 	04/	0 	  #tUFF+  "tUFF+	0 	0s   BBc                    |j                  |      |j                  |      fd}t        dd      5   |        d d d        t        j                  d        |        t        j                           |        y # 1 sw Y   AxY w)Nc                      dz   } dz   }}t        j                  || d      }t        j                  || d      }t        j                  ||       t        j                  |||d      }|rJ y )Nr0   Tr   Fr   )rX   r   rt   r   r   )f12f22r\   r^   r]   r   r   r   s        r   r   z3TestExpressions.test_comparison_ops.<locals>.testit   st    (C!)CB]]2tSdCF}}RsFH''9**2r5#zJF:vr   rU   Fr0   r   )ry   rz   r   r   r   r   r   r   s     `   @@r   test_comparison_opsz#TestExpressions.test_comparison_ops   sw     &&x0''	2	 159 	H	 	  #  "	 	s   BB
cond)r   r   r+   r.   c                     |j                  |      fd}t        dd      5   |        d d d        t        j                  d        |        t        j                           |        y # 1 sw Y   AxY w)Nc                  j   t        j                  j                  t         j                        } | j	                         t        j                  | j                  j                  dz         }t        j                  | j                  j                  dz         }t        j                  ||       y )N)r   r0   )
r   emptyr7   bool_fillrX   wherer?   rt   r   )cr^   r]   r   rZ   s      r   r   z*TestExpressions.test_where.<locals>.testit  sr    2AFF4LZZ299bii!m<Fxx299bii!m<H''9r   rU   Fr0   r   )ry   rz   r   r`   r   rZ   s     `  @r   
test_wherezTestExpressions.test_where  sg     $$W-	: 159 	H	 	  #  "	 	s   A..A7zop_str,opname))r   rf   )z//rg   )r   r   c                 0   t        t        j                  j                  d      j                  d      dkD  t        j                  j                  d      j                  d      dkD  d      }d| d}t	        t
        |      }t        j                  |      }t        j                  t        |      5   |||       d d d        t        j                  t        |      5   ||j                  |j                         d d d        t        j                  t        |      5   ||j                  d       d d d        t        j                  t        |      5   |d	|j                         d d d        t        j                  t        |      5   |d	|       d d d        t        j                  t        |      5   ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   y xY w)
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    YY**1-44R83>YY**1-44R83>
 6("CDHf%))C.]].g> 	b"I	 ]].g> 	bddBDDM	 ]].g> 	bddDM	 ]].g> 	eRTTN	 ]].g> 	eRL	 ]].g> 	b$K	 		 		 		 		 		 		 	sH   3
G G!G(G4
H <
HGG%(G14G= H	H))r   rb   )r   rd   )r   rc   c                    d}t        t        j                  j                  d      j                  |      dkD  t        j                  j                  d      j                  |      dkD  d      }dddd}d	d
dd}t	        t
        |      }t	        t
        |||            }|dk(  ry t        j                  dd      5  t        j                         5   |||      }	 |||      }
t        j                  |	|
       d d d        t        j                         5   ||j                  |j                        }	 ||j                  |j                        }
t        j                  |	|
       d d d        t        j                         5   ||j                  d      }	 ||j                  d      }
t        j                  |	|
       d d d        t        j                         5   |d|j                        }	 |d|j                        }
t        j                  |	|
       d d d        t        j                         5   |d|      }	 |d|      }
t        j                  |	|
       d d d        t        j                         5   ||d      }	 ||d      }
t        j                  |	|
       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   y xY w)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    YY**1-44Q7#=YY**1-44Q7#=
 s-f59	Hf%Xyf67S=^^Dq1 	,++- ,b"Ir2J%%a+,
 ++- -bddBDDMrttRTTN&&q!,-
 ++- -bddDMrttTN&&q!,-
 ++- -eRTTNubddO&&q!,-
 ++- ,eRLubM%%a+,
 ++- ,b$Kr4L%%a+,5	, 	,, ,
- -
- -
- -
, ,
, ,5	, 	,s   >L)J6<LAK)L=KL=KL7)K) L<)K5%L6K 	;LK	LK	LK&	"L)K2	.L5K>	: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                  |j                   d d ddgf         }t        j                  ||       y )Nr   r   )locnert   r   )ry   
test_inputr]   r^   s       r   test_bool_ops_column_name_dtypez/TestExpressions.test_bool_ops_column_name_dtypey  sH    . C> 1255jnnQgEV6WX
fh/r   axis)r   r0   c                    |}|dk(  r|j                   dd d f   }n|j                   d d df   }|j                         5 }|j                  t        dd       t	        ||      }t        dd      5   |||      }	d d d         |||      }
t        j                  	|
       d d d        y # 1 sw Y   2xY w# 1 sw Y   y xY w)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  s     19GGAqDMEGGAqDME  " 		4aIIdOQ/b%(G 5u= 5"5t45 U.F!!(F3		4 		4
5 5		4 		4s#   0B7/B+:(B7+B4	0B77C r\   )__mod____rmod____floordiv____rfloordiv__boxscalarr   c                 *   |j                         5 }|j                  t        dd       t        j                  dd      } ||      }t        ||      } ||      }	t        dd      5   ||      }
d d d        t        j                  |	
       t        |      D ]H  \  }}|t        k(  r|	j                  |df   }n|	|   }	  t        t        |      |      |      }
||
k(  rHJ  	 d d d        y # 1 sw Y   xY w# t        $ r Y lw xY w# 1 sw Y   y xY w)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/99S"%Dd)CS"%FF^F   5u= *!&>* OOFH- %T? 
54)#$*KK1$5M$*1IM55ws4y"5f=H )H444
5	5 	5* * ) +	5 	5sO   AD	'	C.0AD	 C:D	!D	.C7	3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[[D2 4 2$ [[	
 [[VdE]3F 4F2  [[ TU[[S [[46WX,	 V,4 [[46WX2 [[VdE]3[[Y(RS T 4$ [[N< [[C0,0,d [[ $o6@X E5>E5>:S'NS	 $oG4 U^eU^eU^D 'N		
*0+*0
 [[D [[VV,4 -4( [[	
 [[UY$>?[[XAw/5 0 @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      sk    	   !  
 8           W W
   % % & & % % & & (((1DEj5 j5 Fj5r   