
    LVf^6                     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     f/var/www/html/software/conda/envs/catlas/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j                  d      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/d0d1g      d2                      Zy3)4TestExpressionsT)autousec              #   J   K   t         j                  }d  |t         _        y wN)expr_MIN_ELEMENTS)selfmin_elementss     r   save_min_elementsz!TestExpressions.save_min_elementsi   s     )))s   !#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 rO   )getattr)xyrV   s     r   <lambda>z)TestExpressions.call_op.<locals>.<lambda>r   s    0ga03 r   compute.use_numexprF)__name__rY   operatorr   rP   get_test_result)dfotherrU   rV   opexpectedresults      `   r   call_opzTestExpressions.call_opo   sm    3B BK6*B159 	%"e}H	% 	Bx	% 	%s   
A  A)fixture)r5   r;   r8   r   r   r+   r.   Farith)addsubmulmodtruedivfloordivc                    |j                  |      }dt        _        | 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 y )Nr   rm   c              3   :   K   | ]  }|j                   d k(    yw)fN)kind).0rZ   s     r   	<genexpr>z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>   s     Eqvv}Es   rq   )getfixturevaluerP   rQ   rf   alldtypesr?   tmassert_equalrangelenr   ilocr   rr   )	rR   requestrg   rU   rh   ra   re   rd   is	            r   test_run_arithmeticz#TestExpressions.test_run_arithmetic   s    " $$W-<<Be<IEhoo.D.DEEEE
&)s2::' 	.A#||BGGAqDM2771a4=$PUVFH	!~~**c111OOHf-		.r   c                 6   |j                  |      }|j                  }t        dd      5  |j                         dz   }ddd       dt        _        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       ? y# 1 sw 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.
        r]   Fr0   Nr   Tz Did not use numexpr as expected.ri   )ru   r^   r   r(   rP   rQ   set_test_moderf   r`   rx   ry   rz   r{   r   r|   )rR   r}   rg   rU   comparison_opra   rh   rb   re   rd   used_numexprr~   binary_comps                r   test_run_binaryzTestExpressions.test_run_binary   s    & $$W-&&159 	"GGIME	" 4 <<E4?++-???|
&)s2::' 	BA**QT*Q.KLLAT5A	B	" 	"s   D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   rP   _can_use_numexprr_   ri   )rR   arrayarray2re   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))ri   r   )rj   -)rk   *)rm   /)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   absrY   r_   rP   r   rx   assert_numpy_array_equalr   )leftrightrV   op_strrc   re   rd   s          r   testitz/TestExpressions.test_binary_ops.<locals>.testit   s~    vvd|6*B ]]2tTtDF}}RtGH''9**2vueZPF:vr   r]   Fr0   ru   r   rP   set_numexpr_threads)	rR   r}   rV   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   )rP   r   rx   r   r   )f12f22rc   re   rd   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   r]   Fr0   r   )rR   r}   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_fillrP   wherer?   rx   r   )cre   rd   r   ra   s      r   r   z*TestExpressions.test_where.<locals>.testit  sr    2AFF4LZZ299bii!m<Fxx299bii!m<H''9r   r]   Fr0   r   )rR   r}   r   rg   r   ra   s     `  @r   
test_wherezTestExpressions.test_where  sg     $$W-	: 159 	H	 	  #  "	 	s   A..A7zop_str,opname))r   rm   )z//rn   )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   rY   r_   reescapepytestraisesNotImplementedErrorr   r   )rR   r   rV   ra   msgrq   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   ri   )r   rk   )r   rj   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   )rS   F)r   r   r   r   rY   r_   rx   r   assert_produces_warningassert_frame_equalr   r   assert_series_equal)rR   r   rV   nra   subs	sub_funcsrq   feres              r    test_bool_ops_warn_on_arithmeticz0TestExpressions.test_bool_ops_warn_on_arithmeticF  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nerx   r   )rR   
test_inputrd   re   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   r0   c                 $   |}|dk(  r|j                   dd d f   }n|j                   d d df   }dt        _        t        ||      }t	        dd      5   |||      }d d d         |||      }t        j                  |       y # 1 sw Y   *xY w)Nr0   r   r]   F)r   )r|   rP   rQ   rY   r   rx   r   )	rR   r   rh   r   ra   rb   op_funcrd   re   s	            r   test_frame_series_axisz&TestExpressions.test_frame_series_axis  s     19GGAqDMEGGAqDME"e$159 	1u40H	1 T*
h/		1 	1s   BBrc   )__mod____rmod____floordiv____rfloordiv__boxscalarr   c                    dt         _        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  y # 1 sw Y   vxY w# t        $ r Y cw xY w)Nr   i2   r]   F)rP   rQ   r   arangerY   r   rx   ry   	enumerater   r|   intZeroDivisionError)rR   rc   r   r   dataobjmethodre   rd   r~   elemscalar_results               r   ,test_python_semantics_with_numexpr_installedz<TestExpressions.test_python_semantics_with_numexpr_installed  s     yyb!$ib! 159 	&f~H	& 	) ! 
	1GAti &AqD 1 &q	1173t9b1&9 %000
	1	& 	& % s   
	C#CC	C C N)r^   
__module____qualname__r   rg   rT   staticmethodboolstrrf   markparametrizer   r   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r   rL   rL   g   sz   V^^D!* "*
    s     [[	
 [[VdE]3[[D. 4 . [[	
 [[VdE]3B 4B0  [[ 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,0 -0& [[	
 [[UY$>?[[XAw/1 0 @1r   rL   )!r_   r   numpyr   r   pandasr   pandas._testing_testingrx   pandas.core.apir   r   r   pandas.core.computationr   rP   rg   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h1 h1 Fh1r   