
    d5                     0   d dl Z 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'     ABCDfloat64columnsdtyper   nprandomrandnlist     Y/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/test_expressions.py_framer      s-    RY__UA..VIVVVVr   c                  |    t          t          j                            dd          t	          d          d          S )Nd   r
   r   r   r   r   r   r   r   _frame2r      s-    RY__S!,,d6ll)TTTTr   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          t	          d          d          S )N   r   )r	   r
   sizer   r"   r   r   r   r   randintr   r   r   r   _integerr3   4   s>    
	!Sz22DLLPW   r   c                 p    | t           j                            ddt          j        |                     z  S )Nr      r/   )r   r   r2   shape)r3   s    r   _integer_randintr7   ;   s0     bi''128H3E3E'FFFFr   c                      t          t          j                            ddd          t	          d          d          S )Nr.   r   )e   r
   r/   r   r"   r   r1   r   r   r   	_integer2r:   A   s=    
	!Sx00$v,,g   r   c                 @    | d         j                                         S Nr   valuesr&   r(   s    r   _arrayr?   H       #;""$$$r   c                 @    | d         j                                         S r<   r=   r+   s    r   _array2rB   M       3<##%%%r   c                 @    | d         j                                         S Nr#   r=   )r)   s    r   _array_mixedrF   R   r@   r   c                 @    | d         j                                         S rE   r=   )r,   s    r   _array_mixed2rH   W   rC   r   znot using numexpr)reasonc                   v   e Zd Z ej        d          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/d0d1g          d2                                     Zd3S )4TestExpressionsT)autousec              #   B   K   t           j        }d V  |t           _        d S N)expr_MIN_ELEMENTS)selfmin_elementss     r   save_min_elementsz!TestExpressions.save_min_elements^   s%      ))r   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 rN   )getattr)xyrU   s     r   <lambda>z)TestExpressions.call_op.<locals>.<lambda>g   s    0ga0033 r   compute.use_numexprF)__name__rX   operatorr   rO   get_test_result)dfotherrT   rU   opexpectedresults      `   r   call_opzTestExpressions.call_opd   s     	+3333B BKK6**B1599 	% 	%r"e}}H	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	Bxs   AAAfixture)r3   r:   r7   r   r   r)   r,   Farith)addsubmulmodtruedivfloordivc                    |                     |          }dt          _        |                     ||||          \  }}|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        ||           id S )Nr   rl   c              3   ,   K   | ]}|j         d k    V  dS )fN)kind).0rY   s     r   	<genexpr>z6TestExpressions.test_run_arithmetic.<locals>.<genexpr>   s(      EEqv}EEEEEEr   rp   )getfixturevaluerO   rP   re   alldtypesr>   tmassert_equalrangelenr   ilocr   rq   )	rQ   requestrf   rT   rg   r`   rd   rc   is	            r   test_run_arithmeticz#TestExpressions.test_run_arithmetict   s   " $$W--<<Be<<IEEho.DEEEEEEEE
&)))s2:'' 	. 	.A#||BGAAAqDM27111a4=$PUVVFH	!!~*c1111OHf----		. 	.r   c                    |                     |          }|j        }t          dd          5  |                                dz   }ddd           n# 1 swxY w Y   dt          _        t	          j        d           |                     ||||          \  }}	t	          j                    }
|
s
J d            t          j
        |	|           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.
        r\   Fr.   Nr   Tz Did not use numexpr as expected.)rt   r]   r   r&   rO   rP   set_test_modere   r_   rw   rx   )rQ   r|   rf   rT   comparison_opr`   rg   ra   rd   rc   used_numexprs              r   test_run_binaryzTestExpressions.test_run_binary   s   & $$W--&1599 	" 	"GGIIME	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 4   <<E4??+--??????
&)))))s   AAAc                 f   t           j                            d          }t           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 d S )NiAB r   evaluate+)r   r   r   rO   _can_use_numexprr^   rh   )rQ   arrayarray2rd   s       r   test_invalidzTestExpressions.test_invalid   s    		**%% &x|T5%TT &x|S&&*UU &x|S%TTr   z>ignore:invalid value encountered in true_divide:RuntimeWarningzopname,op_str))rh   r   )ri   -)rj   *)rl   /)pow**zleft_fix,right_fix)r?   rB   )rF   rH   c                 L   |                     |          |                     |          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k    rd S t          t                    } t          j                    5  d}t          j        d|t
                     t          j        | d          }t          j        | d          }d d d            n# 1 swxY w Y   t          j	        ||           t          j
        | d          }|rJ d S )Nr   z/invalid value encountered in divide|true_divideignoreTuse_numexprFr   )rX   r^   warningscatch_warningsfilterwarningsRuntimeWarningrO   r   rw   assert_numpy_array_equalr   )rb   msgrd   rc   leftop_strrU   rights       r   testitz/TestExpressions.test_binary_ops.<locals>.testit   s   6**B(** L LG'#~FFFr44HHH=T4UKKKL L L L L L L L L L L L L L L '999*2vueZPPFs   ABBBr\   Fr.   rt   r   rO   set_numexpr_threads)	rQ   r|   rU   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 	 	FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ### """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 )Nr.   Tr   Fr   )rO   r   rw   r   r   )f12f22rb   rd   rc   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   r\   Fr.   r   )rQ   r|   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   r.   )
r   emptyr6   bool_fillrO   wherer>   rw   r   )crd   rc   r   r`   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   r\   Fr.   r   )rQ   r|   r   rf   r   r`   s     `  @r   
test_wherezTestExpressions.test_where  s     $$W--	: 	: 	: 	: 	: 	: 1599 	 	FHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ### """s   AA	A	zop_str,opname))r   rl   )z//rm   )r   r   c                 *   t          t          j                            d          dk    t          j                            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 )	N
         ?abz
operator 'z!' not implemented for bool dtypes)matchTF)r   r   r   randrX   r^   reescapepytestraisesNotImplementedErrorr   r   )rQ   r   rU   r`   r   rp   err_msgs          r   !test_bool_ops_raise_on_arithmeticz1TestExpressions.test_bool_ops_raise_on_arithmetic"  si    RY^^B//#5BINN2<N<NQT<TUUVVD6DDDHf%%)C..].g>>> 	 	Ab"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AbdBDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AbdDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AeRTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	AeRLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ].g>>> 	 	Ab$KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sl   B88B<?B<DDD'EE	E	+F		FF/GGG.HHH))r   rh   )r   rj   )r   ri   c                    d}t          t          j                            |          dk    t          j                            |          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   or_and_xor)r   r   r   r   T   )rR   F)r   r   r   r   rX   r^   rw   r   assert_produces_warningassert_frame_equalr   r   assert_series_equal)rQ   r   rU   nr`   subs	sub_funcsrp   feres              r    test_bool_ops_warn_on_arithmeticz0TestExpressions.test_bool_ops_warn_on_arithmetic>  s    RY^^A..429>>!;L;Ls;RSSTT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   7K=.D9K=D			K=D		K=#AE1%K=1E5	5K=8E5	9K=8GK=G	K=G	K=18H5)K=5H9	9K=<H9	=K=.JK=J	K=J	K=+.K%K=%K)	)K=,K)	-K==LLztest_input,expected)r   r.   r5   aa)r   r   r   r   )r   r   r   )r      r5   r   )r   r
   r5   r   )r   r.   r.   bbc                     |j         d d ddgf                             |j         d d ddgf                   }t          j        ||           d S )Nr   r   )locnerw   r   )rQ   
test_inputrc   rd   s       r   test_bool_ops_column_name_dtypez/TestExpressions.test_bool_ops_column_name_dtypen  sX    . C> 1255jnQQQgEV6WXX
fh/////r   axis)r   r.   c                 B   |}|dk    r|j         dd d f         }n|j         d d df         }dt          _        t          ||          }t	          dd          5   |||          }d d d            n# 1 swxY w Y    |||          }t          j        ||           d S )Nr.   r   r\   F)r   )r{   rO   rP   rX   r   rw   r   )	rQ   r   rg   r   r`   ra   op_funcrc   rd   s	            r   test_frame_series_axisz&TestExpressions.test_frame_series_axis  s     199GAqqqDMEEGAAAqDME"e$$1599 	1 	1wu4000H	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 T***
h/////s   A22A69A6rb   )__mod____rmod____floordiv____rfloordiv__boxscalarr   c                    dt           _        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 S )Nr   i2   r\   F)rO   rP   r   arangerX   r   rw   rx   	enumerater   r{   intZeroDivisionError)rQ   rb   r   r   dataobjmethodrd   rc   r}   elemscalar_results               r   ,test_python_semantics_with_numexpr_installedz<TestExpressions.test_python_semantics_with_numexpr_installed  sv    yb!!c$iib!! 1599 	& 	&vf~~H	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	))) ! 
	1 
	1GAti &AqD 1 &q	1173t99b11&99 %00000 %   
	1 
	1s$   A00A47A4&C77
DDN)r]   
__module____qualname__r   rf   rS   staticmethodboolstrre   markparametrizer~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rK   rK   \   s       V^D!!!* * "!*
    s       \  [	
 	
 	
  [VdE]33[DDD . .  43  . [	
 	
 	
  [VdE]33* * 43 *4    [H  [SSS  [46WX   	  < [46WX   2 [VdE]33[Y(R(R(RSS  TS 43$ [NNN   2 [CCC +, +, +,Z [ 	$__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,,0 0 -, 0& [	
 	
 	
  [UY$>??[XAw//1 1 0/ @? 1 1 1r   rK   )"r^   r   r   numpyr   r   pandasr   pandas._testing_testingrw   pandas.core.apir   r   r   pandas.core.computationr   rO   rf   r   r   r)   r,   r3   r7   r:   r?   rB   rF   rH   r   skipifUSE_NUMEXPRrK   r   r   r   <module>r     sM    				       ! ! ! ! ! !               
 8 7 7 7 7 7 W W W U U U          G G G
    % % % & & & % % % & & & ((1DEEf1 f1 f1 f1 f1 f1 f1 FEf1 f1 f1r   