
    .i-:                     b   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 d dlmZ d dl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>                  jA                  ejB                   d       G d d             Z"y)    N)import_optional_dependency)option_context)	DataFrame)expressions)Versionc                      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     [/var/www/app/trading-bot/venv/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   | d   j                  d      | d   j                  d      | d   j                  d      d      S 	NABfloat32Cint64Dint32)r    r!   r#   r%   r   astyper   s    r   _mixedr*   "   sQ    ##I.##G,##G,		
 r   c                     t        | d   | d   j                  d      | d   j                  d      | d   j                  d      d      S r   r'   r   s    r   _mixed2r-   .   sQ    $$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   _integerr4   :   s=    
		a ))!Sz)BV r   c                     | t         j                  j                  d      j                  ddt        j                  |             z  S )Nr	   r   r0   )r   r   r   r3   shape)r4   s    r   _integer_integersr7   C   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	   r/   r   )e   r   r0   r   r$   r   r2   r   r   r   	_integer2r:   I   s=    
		a ))!Sx)@V r   c                 (    | d   j                         S Nr    to_numpyr)   s    r   _arrayr?   R       #;!!r   c                 (    | d   j                         S r<   r=   r,   s    r   _array2rB   W       3<  ""r   c                 (    | d   j                         S Nr%   r=   )r*   s    r   _array_mixedrF   \   r@   r   c                 (    | d   j                         S rE   r=   )r-   s    r   _array_mixed2rH   a   rC   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,d-d.g      d/               Zy0)1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yrM   s     r   <lambda>z)TestExpressions.call_op.<locals>.<lambda>k   s    0ga03 r   compute.use_numexprF)__name__rP   operatorr   exprget_test_result)dfotherrL   rM   opexpectedresults      `   r   call_opzTestExpressions.call_oph   sm    3B BK6*B159 	%"e}H	% 	Bx	% 	%s   
A  A)fixture)r4   r:   r7   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   re   c              3   :   K   | ]  }|j                   d k(    yw)fN)kind).0rQ   s     r   	<genexpr>z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>   s     IQ166S=Is   rj   )getfixturevaluecontextsetattrrW   r^   alldtypesvaluestmassert_equalrangelenr   ilocr   rk   )selfrequestr_   rL   r`   monkeypatchrY   mr]   r\   is              r   test_run_arithmeticz#TestExpressions.test_run_arithmeticx   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  |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.
        rT   Fr/   Nrh   r   Tz Did not use numexpr as expected.ra   )rn   rU   r   ro   rp   rW   set_test_moder^   rX   rt   ru   rv   rw   r   rx   )ry   rz   r_   rL   comparison_opr{   rY   r`   rZ   r|   r]   r\   used_numexprr}   binary_comps                  r   test_run_binaryzTestExpressions.test_run_binary   s+   & $$W-&&159 	FE	   " 	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   D'CD3'D03D<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   rW   _can_use_numexprrV   ra   )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))ra   r   )rb   -)rc   *)re   /)pow**zleft_fix,right_fix)r?   rB   )rF   rH   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   absrP   rV   rW   r   rt   assert_numpy_array_equalr   )leftrightrM   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   rT   Fr/   rn   r   rW   set_numexpr_threads)	ry   rz   rM   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 )Nr/   Tr   Fr   )rW   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   rT   Fr/   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   r/   )
r   emptyr6   bool_fillrW   wherers   rt   r   )cr]   r\   r   rY   s      r   r   z*TestExpressions.test_where.<locals>.testit  sr    2AFF4LZZ299bii!m<Fxx299bii!m<H''9r   rT   Fr/   r   )ry   rz   r   r_   r   rY   s     `  @r   
test_wherezTestExpressions.test_where  sg     $$W-	: 159 	H	 	  #  "	 	s   A..A7zop_str,opname))r   re   )z//rf   )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   rP   rV   reescapepytestraisesNotImplementedErrorr   r   )ry   r   rM   rY   msgrj   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   ra   )r   rc   )r   rb   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 d}
t        dd      }|r+|dv r't        |j                        t        d      k  rt        nd }|j                         5 }|j                  t        dd       t        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        d d d        y # 1 sw Y   xY w# 1 sw Y   px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   YxY w# 1 sw Y   ]xY w# 1 sw Y   y xY w)Nr   r	   r   r   |&^)r   r   r   or_and_xor)r   r   r   r   z$operator is not supported by numexprnumexprignore)errors>   r   r   z2.13.1rh      rT   Tr   F)r   r   r   r   rP   rV   r   r   __version__UserWarningro   rp   rW   r   rt   assert_produces_warningassert_frame_equalr   r   assert_series_equal)ry   r   rM   r{   nrY   subs	sub_funcsrj   fer   newarningr|   res                   r    test_bool_ops_warn_on_arithmeticz0TestExpressions.test_bool_ops_warn_on_arithmeticC  s*    YY**1-44Q7#=YY**1-44Q7#=
 s-f59	Hf%Xyf67S=4'	(C *$''(*;;   	   " 	0aIIdOQ/ 5t< 0//sC 0"b	A2r
A))!Q/0
 //sC 1"$$A244A**1a01
 //sC 1"$$A244A**1a01
 //sC 1%A5"$$A**1a01
 //sC 0%A5"A))!Q/0
 //sC 0"dA2tA))!Q/050	0 	00 0
1 1
1 1
1 1
0 0
0 050 0	0 	0s   5$NM61)L+M69AL8
M6)=M&M6=MM6!)M
M6))M*M6N+L50M68M=M6M
M6MM6M'#M6*M3/M66M?	;NNz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                     |j                   d d ddgf   j                  |j                   d d ddgf         }t        j                  ||       y )Nr   r   )locr   rt   r   )ry   
test_inputr\   r]   s       r   test_bool_ops_column_name_dtypez/TestExpressions.test_bool_ops_column_name_dtype  sH    . C> 1255jnnQgEV6WX
fh/r   axis)r   r/   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)Nr/   r   rh   rT   F)r   )rx   ro   rp   rW   rP   r   rt   r   )ry   r   r`   r   r{   rY   rZ   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__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)Nrh   r   i2   rT   F)ro   rp   rW   r   arangerP   r   rt   ru   	enumerater   rx   intZeroDivisionError)ry   r[   box_with_arrayr   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 &CS"%FF^F   5u= *!&>* OOFH- %T? 
54!Y.$*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)rU   
__module____qualname__staticmethodboolstrr^   r   markparametrizer~   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   rK   rK   f   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;0z [[ $o6@X E5>E5>:S'NS	 $oG4 U^eU^eU^D 'N		
*0+*0
 [[D [[VV,4 -4( [[	
 [[XAw/5 05r   rK   )#rV   r   numpyr   r   pandas.compat._optionalr   pandasr   pandas._testing_testingrt   pandas.core.apir   pandas.core.computationr   rW   pandas.util.versionr   r_   r   r   r*   r-   r4   r7   r:   r?   rB   rF   rH   r   skipifUSE_NUMEXPRrK   r   r   r   <module>r     sh    	   > !  % 7 '           W W
   " " # # " " # # (((1DEt5 t5 Ft5r   