
    o[we                       U d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ d dlmc mZ d dlmZmZmZmZ d dlZd dlmZmZmZ d dlmZ  d d	l!m"Z"m#Z# d d
l$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4  e	j5        d e%D                       d             Z6 e	j5        e"j7                  d             Z8d Z9 e	j5         e: e;d                    g d          d             Z<e<Z=e<Z> G d d          Z?d Z@ G d d          ZAd ZB G d d          ZC G d  d!          ZD G d" d#          ZEejF        G                    d$          H                    d%          ZI G d& d'          ZJejK        d(             ZLejK        e	jM        N                    d)d*          d+                         ZOejK        d,             ZPejK        d-             ZQe)e#jR        e(d.ZSd/eTd0<   e	jM        N                    d1e%          e	jM        N                    d2eS          d3                         ZUd4 ZVd5 ZWe	jM        N                    d6g d7          d8             ZXd9 ZYd: ZZd; Z[d< Z\e	jM        N                    d=d>          e	jM        N                    d?e]e^f          e	jM        N                    d@e]e^f          dA                                     Z_e	jM        N                    dBdCdDg          dE             Z`dF Zae	jM        N                    dGdHdIg          dJ             ZbdK Zce	jM        N                    dG e4jd                              dL             ZedM Zf G dN dO          ZgdS )P    )annotations)reduce)productN)PY312)NumExprClobberingErrorPerformanceWarningUndefinedVariableError)is_boolis_floatis_list_like	is_scalar)	DataFrameSeries
date_range)exprpytables)ENGINES)BaseExprVisitorPandasExprVisitorPythonExprVisitor)NUMEXPR_INSTALLEDUSE_NUMEXPR)ARITH_OPS_SYMSSPECIAL_CASE_ARITH_OPS_SYMS_binary_math_ops_binary_ops_dict_unary_math_ops)DEFAULT_GLOBALSc              #     K   | ]a}t          j        |t           j                            |d k    ot           dt           dt
                     t          j        g          V  bdS )numexprznumexpr enabled->z, installed->reasonmarksN)pytestparammarkskipifr   r   tdskip_if_no_ne).0engines     Blib/python3.11/site-packages/pandas/tests/computation/test_eval.py	<genexpr>r.   9   s          	""i';O6{ 6 6"36 6 #  
  
	
 
	
 
	
         )paramsc                    | j         S Nr&   requests    r-   r,   r,   8   s    " =r/   c                    | j         S r2   r3   r4   s    r-   parserr7   L   s
    =r/   c                    t           |         }t          |         j        rS	  || |          S # t          $ r9}t	          |                              d          rt          j        cY d }~S  d }~ww xY w || |          S )Nz6negative number cannot be raised to a fractional power)r   r   has_neg_frac
ValueErrorstr
startswithnpnan)lhscmp1rhsr,   ces         r-   _eval_single_binrD   Q   s    Av# 	1S#;; 	 	 	1vv  H   v	 1S#;;s    - 
A0-A+$A0*A++A0   )r   r   	SeriesNaNDataFrameNaNfloat)r0   idsc           	     l   t          t          j                            d                              d                    }t          j        ||dk    <   t          t          j                            d                              d                    t          t          j                            d                              d                    t          ddt          j        t          j        dg          |t          j                            d                                          f}|| j                 S )N   )
   rE         ?rE      )r   r=   randomdefault_rngstandard_normalr>   r   r&   )r5   nan_df1optss      r-   r?   r?   `   s    
 	--a00@@IIJJGVGGcM 	")''**::7CCDDry$$Q''77::;;1bfbfa())
	a  0022D r/   c            
      V   e Zd Zej                            dg dg d          ej                            dddgdd	g          ej                            d
ej                  d                                     Zej                            dej	                  d             Z
ej                            dej	                  d             Zej                            dddg          ej                            dddg          d                         Zej                            d e ee                              e                              d             Zd Zd Zej        d             Zd Zd Zd Zd Zd Zej                            d eej                             d          !                    d                     eej                             d          "                    dd                     eej                             d          !                    d          d k              g          d!             Z#ej                            d e$ej                             d          !                    d                     e$ej                             d          "                    dd                     e$ej                             d          !                    d          d k              g          d"             Z%d# Z&d$ Z'ej                            d%ej(        ej)        g          ej                            d&d'd(g          d)                         Z*d* Z+ej                            d+d,          d-             Z,d. Z-d/ Z.d0 Z/d1 Z0d2 Z1d3 Z2d4S )5TestEvalr@   )z!=z==z<=z>=<>)neeqlegeltgt)rI   cmp2rW   rV   r]   r\   binopc                   |dk    r^|dv rZd}t          j        t          |          5  d| d| d| d}	t          j        |	||	           d d d            n# 1 swxY w Y   d S t          ||||          }
t          ||||          }t          |
|||          }d| d| d| d}	t          j        |	||	          }t          j        ||           d S )
Npythonandor"'BoolOp' nodes are not implementedmatch(lhs z rhs) z (lhs  rhs)r,   r7   )r%   raisesNotImplementedErrorpdevalrD   tmassert_equal)selfr@   r^   r_   r?   rA   r,   r7   msgexlhs_newrhs_newexpectedresults                 r-   test_complex_cmp_opszTestEval.test_complex_cmp_opsw   sN    X%="8"86C2#>>> : :ATAAAAdAAA6&9999: : : : : : : : : : : : : : : F"3c6::"3c6::#GUGVDD9T9999d999F6:::
)))))s   $AAAcmp_opc           	     X   |dk     }|dk     }|dk    rX|dv rTd}t          j        t          |          5  d| d}t          j        |||           d d d            n# 1 swxY w Y   d S d| d}d	                    d
dg          }|dv r`t          |          sQt          j        t          |          5  t          j        |||||d           d d d            d S # 1 swxY w Y   d S t          ||||          }t          j        |||          }	t          j
        |	|           d S )Nr   ra   innot in&'(In|NotIn)' nodes are not implementedrf   lhs  rhsrj   |zvonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')bool(`|')z'argument of type 'bool' is not iterabler?   rA   r,   r7   
local_dict)r%   rk   rl   rm   rn   joinr   	TypeErrorrD   ro   rp   )
rq   ry   r?   rA   r,   r7   rr   rs   rv   rw   s
             r-   test_simple_cmp_opszTestEval.test_simple_cmp_ops   s   AgAgX&,<"<"<:C2#>>> : :(F(((6&9999: : : : : : : : : : : : : : : F F   hh" :	
 
 %%%l3.?.?%y444  !!'*377	                     (VS&AAHWRv>>>FOFH-----s#   AA"%A"6CC#&C#opc           	        |dk    rX|dv rTd}t          j        t          |          5  d| d}t          j        |||           d d d            n# 1 swxY w Y   d S t          |          rYt          |          sJ|dv rF|dk    r@|dk    r:t           j                            d	
          }	|j        	                    |	           ddg}
d| d}d
                    ddg          }t          |          rU||
v rQt          j        t          |          5  t          j        |||||d           d d d            d S # 1 swxY w Y   d S t          |          r t          |          rd ||fD             \  }}t          ||||          }t          |          r| }n| }t          j        |||          }t          j        ||           d S )Nra   r{   r~   rf   z~(lhs ri   rj   pandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectr!   r|   r}   r   zwonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')float(`|')z(argument of type 'float' is not iterabler   r   c              3  @   K   | ]}t          j        |g          V  d S r2   )r=   arrayr+   xs     r-   r.   z3TestEval.test_compound_invert_op.<locals>.<genexpr>   s,      >>aBHaSMM>>>>>>r/   )r%   rk   rl   rm   rn   r   r'   xfailnode
add_markerr   r   r   rD   ro   assert_almost_equal)rq   r   r?   rA   r5   r,   r7   rr   rs   r'   
skip_theserv   rw   s                r-   test_compound_invert_opz TestEval.test_compound_invert_op   s   X"(8"8"8:C2#>>> : :'b'''6&9999: : : : : : : : : : : : : : : F SMM	*SMM	* &&&(""("";$$? %  D L##D)))H%
bhh# ;	
 
 S>> 	5bJ..y444  !!'*377	                     ~~ ?)C.. ?>>C:>>>S'Rf==H"" %'<$9WRv>>>F"8V44444s#   AAAD??EEc                   |}|dk    rWd| d| d}	d}
t          j        t          |
          5  t          j        |	||           d d d            n# 1 swxY w Y   d S t          ||||          }t          ||||          }|c|cd| d| d}	d| d| d}d	| d
| d}t          |d||          }|	||fD ]2}t          j        |||          }t          j        ||           /d S d S d S )Nra   r    mid r   re   rf   rj    mid and mid rh    mid) & (mid ri   &)r%   rk   rl   rm   rn   rD   ro   r   )rq   r@   r^   r?   midhsrA   r,   r7   midex1rr   rt   ru   ex2ex3rv   rs   rw   s                     r-   test_chained_cmp_opzTestEval.test_chained_cmp_op   s    X...D...C6C2#>>> ; ;F6::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;F"3c6::"3c6::7#6...D...C666D666C8$88T888C'gvFFHCo 9 9F6BBB&vx8888 #6#69 9s   AAAarith1c                .   d| d}t          j        |||          }t          ||||          }t          j        ||           d| d| d}t          j        |||          }t          ||||          }		 |	                    |          \  }	}
|dk    r9dd l}|                    d| d          }t          j        |j        |           d S t          d| d          }t          j        ||           d S # t          t          t          f$ r Y d S w xY w)	Nr   r   rj   z rhs r    r   znlhs z ghs)rm   rn   rD   ro   r   alignr    evaluatevaluesr:   r   AttributeError)rq   r   r?   rA   r,   r7   rs   rw   rv   nlhsghsrX   s               r-   test_binary_arith_opszTestEval.test_binary_arith_ops   s]    !F   F6:::#Cf==
vx000-F-----F6:::VS&99	9

3ID# ""$$$$ ;;';v';';';<<
 &v}h????? 4 4 4 455&vx88888# I~6 	 	 	 FF	s   8C9 9DDc                   d}t          j        |||          }||z  }t          j        ||           |dk    rzdd l}|                    d          }t          |t          t          f          rt          j        |j	        |           d S t          j        ||
                                           d S t          |d||          }t          j        ||           d S )Nz	lhs % rhsrj   r    r   zexpected % rhs%)rm   rn   ro   r   r    r   
isinstancer   r   r   itemrD   )	rq   r?   rA   r,   r7   rs   rw   rv   rX   s	            r-   test_moduluszTestEval.test_modulus!  s    F6:::9
vx000Y    {{#455H&9f"566 @&v}h?????&vx}}?????'#sFCCH"6844444r/   c                   d}|dk    r3t          j        |||          }||z  }t          j        ||           d S d}t	          j        t          |          5  t          j        |||d||           d d d            d S # 1 swxY w Y   d S )Nz
lhs // rhsra   rj   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'rf   r   r   r,   r7   )rm   rn   ro   rp   r%   rk   r   )	rq   r?   rA   r,   r7   rs   resrv   rr   s	            r-   test_floor_divisionzTestEval.test_floor_division3  s    X'"VF;;;CczHOC*****!  y444  '*377!!	                    s   BB	Bc                j   d}t          |d||          }t          j        |||          }t          |          rt          |          rt	          |t
          t          j        f          rat          j        |          rMd}t          j
        t          |          5  t          j        ||           d d d            d S # 1 swxY w Y   d S t          j        ||           d}t          j        |||          }t          |d||          }	t          |	d||          }t          j        ||           d S )Nz
lhs ** rhs**rj   z-(DataFrame.columns|numpy array) are differentrf   z(lhs ** rhs) ** rhs)rD   rm   rn   r   r   complexr=   complexfloatingisnanr%   rk   AssertionErrorro   assert_numpy_array_equalr   )
rq   r?   rA   r,   r7   rs   rv   rw   rr   middles
             r-   test_powzTestEval.test_powG  s    #CsF;;F6::: cNN	5#	5 8gr/A%BCC	5   		5 BC~S999 > >+FH===> > > > > > > > > > > > > > > > > > "68444&BWRv>>>F%c4f==F'c6BBH"6844444s   B??CCc                    	 |                     t                    }n2# t          $ r% t          j        t          |          g          }Y nw xY w| }t          j        d||          }t          j        ||           d S )Nz~elbrj   )	astypeboolr   r=   r   rm   rn   ro   r   )rq   r?   r,   r7   elbrv   rw   s          r-   test_check_single_invert_opz$TestEval.test_check_single_invert_opa  s    	(**T""CC 	( 	( 	((DII;''CCC	(4v>>>
x00000s    ,AAc                    d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	d
                    }|dk    rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g dt          j                            d                              d          dk    d          }|dk    rMt          j        t          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )N~lhsrK   rE   rK   r    -couldn't find matching opcode for 'invert_dd'rf   rj   0ufunc 'invert' not supported for the input typesrE   size)couldn't find matching opcode for 'invertrM   arN   g       @   )brB   unknown type object#bad operand type for unary ~: 'str')r   r=   rO   rP   rQ   r%   rk   rl   rm   rn   r   integersro   assert_frame_equalr:   )rq   r,   r7   r   r?   rr   expectrw   s           r-   test_frame_invertzTestEval.test_frame_invertk  s"   
 	--a00@@HHIIYAC2#>>> < <VF;;;;< < < < < < < < < < < < < < < ECy444 < <VF;;;;< < < < < < < < < < < < < < < 	--a0099!&9IIJJY=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F!&&111 	--a00@@HH3NOOfV<<<
ff--- --bi&;&;A&>&>&N&Nq&Q&QTW&WXX
 
 Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCCE))E-0E-?J$$J(+J(K33K7:K7c                   d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||          }d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              dd	                    }|dk    rMd
}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g d          }|dk    rMt          j        t          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )Nr   rK   rE   r    r   rf   rj   r   r   r   rM   r   r   r   )r   r=   rO   rP   rQ   r%   rk   rl   rm   rn   r   r   ro   assert_series_equalr:   )rq   r,   r7   r   r?   rr   rw   r   s           r-   test_series_invertzTestEval.test_series_invert  s    RY**1--==a@@AAYAC2#>>> E EfVDDDE E E E E E E E E E E E E E E ECy444 < <VF;;;;< < < < < < < < < < < < < < < RY**1--66qq6AABBY=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F"66222 RY**1--==a@@3FGGfV<<<
vv... ]]]##Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCCE))E-0E-I--I14I1J<<K K c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd	}t          j        t          |
          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )N-lhsrK   r   rj   rE   r   rM   r    *couldn't find matching opcode for 'neg_bb'rf   )r   r=   rO   rP   rQ   rm   rn   ro   r   r   r%   rk   rl   rq   r,   r7   r   r?   r   rw   rr   s           r-   test_frame_negatezTestEval.test_frame_negate  s    	--a00@@HHIIfV<<<
ff--- 	--a0099!&9IIJJfV<<<
ff--- 	--a00@@HH3NOOY>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F!&&11111   E,,E03E0c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd}t          j        t          |	          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )
Nr   rK   rE   rj   r   rM   r    r   rf   )r   r=   rO   rP   rQ   rm   rn   ro   r   r   r%   rk   rl   r   s           r-   test_series_negatezTestEval.test_series_negate  s    RY**1--==a@@AAfV<<<
vv... RY**1--66qq6AABBfV<<<
vv... RY**1--==a@@3FGGY>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F"6622222r   r?   rK   r   rE   r   rM   c                f    d}|}t          j        |||          }t          j        ||           d S Nz+lhsrj   )rm   rn   ro   r   rq   r?   r,   r7   r   r   rw   s          r-   test_frame_poszTestEval.test_frame_pos  s=     fV<<<
ff-----r/   c                f    d}|}t          j        |||          }t          j        ||           d S r   )rm   rn   ro   r   r   s          r-   test_series_poszTestEval.test_series_pos  s=     fV<<<
vv.....r/   c                   d}d }t           r|dk    r|dk    st          }t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        d||          d	k    sJ t          j        d
||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        |dd          5  t          j        d||          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        |dd          5  t          j        d||          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ d S )Nz%bad operand type for unary ~: 'float'r    r   rf   z~1.0rj   z-1.0r7   r,   g      z+1.0g      ?z~1z-1z+1rN   zBitwise inversionF)rg   check_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   DeprecationWarningr%   rk   r   rm   rn   ro   assert_produces_warning)rq   r,   r7   rr   warns        r-   test_scalar_unaryzTestEval.test_scalar_unary  sF   5 	&&I--&H2D2D%D]9C000 	: 	:GF6&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: wvfV<<<DDDDwvfV<<<DDDDwtF6:::b@@@@wtF6:::b@@@@wtF6:::b@@@@'+e
 
 
 	K 	K 776&AAAUJJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K '+e
 
 
 	M 	M 78F6BBBfLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M wwvf===FFFFwxv>>>&HHHHwwvf===FFFFwxv>>>&HHHHHHs5   AA"%A"D<<E E F		FFc                    t          j        t          j        d          t           j                  }t          j        g dt           j                  }t          j        ||           d S )Nz>[-True, True, +True, -False, False, +False, -37, 37, ~37, +37]dtype)
r   TrN   r   Fr   i%   ir   )r=   r   rm   rn   object_ro   r   )rq   rw   rv   s      r-   test_unary_in_arrayzTestEval.test_unary_in_array9  sv     GTUU*
 
 
 8   *
 
 
 	#FH55555r/   r   r   zx < -0.1z-5 > xc                    t          dt          j        dg|          i          }|                    |          }|j        t          j        dg          k    sJ d S )Nr   r   r   F)r   r=   r   rn   r   )rq   r   r   dfr   s        r-   test_float_comparison_bin_opz%TestEval.test_float_comparison_bin_opR  s[     RXqc777899ggdmmzRXug........r/   c                v   t          dddt          j        gi          }|                    d          }|j                            d          }t          j        ||t                      |                    d          }|j        	                    dd          }t          j        ||t                      d S )	Nr   r   rN   zx.fillna(-1)r   check_nameszx.shift(1, fill_value=-1))
fill_value)
r   r=   r>   rn   r   fillnaro   r   r   shiftrq   r   rw   rv   s       r-   test_unary_in_functionzTestEval.test_unary_in_functionZ  s    aBF^,--((4;;r?? 	vx_MMMM4554::aB://
vx_MMMMMMr/   rs   )z1 or 2z1 and 2za and bza or bz1 or 2 and (3 + 2) > 3z2 * x > 2 or 1 and 2z2 * df > 3 and 1 or ac                   t           j                            d                              d          dd}}}t	          t           j                            d                              d                    }d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )NrK   r   rN   )r   rK   ;cannot evaluate scalar only bool ops|'BoolOp' nodes are notrf   rj   )
r=   rO   rP   rQ   r   r%   rk   rl   rm   rn   )	rq   rs   r,   r7   r   r   r   r   rr   s	            r-   test_disallow_scalar_bool_opsz&TestEval.test_disallow_scalar_bool_opsh  s     )''**::1==q!a1ry,,Q//??GGHHK].c::: 	6 	6GBvf5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   B88B<?B<c                   d}t          j        d||          }|dk    sJ t          |          sJ d}t          j        d||          }|dk    sJ t          |          sJ d}t          j        d||          }|rJ t          |          sJ t          |          sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ d S )NrN   r   rj   g      ?F)rN   )	rm   rn   r   r
   r=   r   ro   r   shape)rq   r,   r7   r   rw   s        r-   test_identicalzTestEval.test_identical|  s   VF;;;{{{{     VF;;;}}}}     VF;;;v     HaSMMVF;;;
#FBHaSMM:::|t####HcUOOVF;;;
#FBHcUOO<<<|t####HeWVF;;;
#FBHeW,=,=>>>|t######r/   c                H    d}t          j        |||          }|dk    sJ d S )Nz1 + 2 *         5 - 1 + 2 rj      )rm   rn   )rq   r,   r7   exprw   s        r-   test_line_continuationzTestEval.test_line_continuation  s0    VF;;;||||||r/   c                   d}t          j        |||          }t          j        |          }||k    sJ t	          dg di          }d}|                    d|d          }|j        sJ d}|                    d	|d          }|j        d
dgd d f         }t          j	        ||           d}|                    d|d          }|j        d
gd d f         }t          j	        ||           d S )Nz1000000000.006rj   A)g~  eA$  eAg'1  eAg  eAzA < z.4fg   eAzA > rN   rK   r	  A == )
rm   rn   r=   float64r   queryemptylocro   r   )	rq   r,   r7   r  rw   rv   r   cutoffexacts	            r-   test_float_truncationzTestEval.test_float_truncation  s!   VF;;;:c??!!!!PPPQRR ----..| ----..61a&!!!)$
h///-%---..61#qqq&>
h/////r/   c                   t          g dgg d          }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t                      }d|j        _        t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )	N)r   r   r   )foobarclasscolumnsz4Python keyword not valid identifier in numexpr queryrf   z
class == 0lambdazlambda == 0)r   r%   rk   SyntaxErrorr  indexnamerq   r   rr   s      r-   test_disallow_python_keywordsz&TestEval.test_disallow_python_keywords  sA   			{,C,C,CDDDD];c222 	# 	#HH\"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# [[ ];c222 	$ 	$HH]###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s#   AAAB99B= B=c                   t          j        t          t          d          5  t	          j        d          dk    sJ t	          j        d          dk    sJ t	          j        d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	NF)r   znot Truer   z	not Falser   zTrue and not Truer   )ro   maybe_produces_warningr   r   rm   rn   )rq   s    r-   test_true_false_logiczTestEval.test_true_false_logic  s     &
 
 
 	5 	5 7:&&",,,,7;''2----7.//144444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AA??BBc                6   t          ddi          }t          j        |j                            d          j                   sJ t          j        |j                            d          j        o|j                            d          j                   sJ d S )Nr   hello)r   rm   rn   r;   rg   r   )rq   events     r-   test_and_logic_string_matchz$TestEval.test_and_logic_string_match  s    W~&&w%)//'224677777w%)//'224S9Q9Q9SUVVVVVVVr/   N)3__name__
__module____qualname__r%   r'   parametrizer   BOOL_OPS_SYMSrx   CMP_OPS_SYMSr   r   r   sortedsetr   
differencer   r   r   r   r)   skip_if_windowsr   r   r   r   r   r   r   r=   rO   rP   rQ   r   r   r   r   r   r   float32r  r   r   r   r  r  r  r  r   r$   r/   r-   rU   rU   v   s       [***000   
 [Vc3ZdD\BB[Wd&899* * :9 CB *  [Xt'899 .  . :9 .D [T4#45515 15 6515f [Vc3Z00[Vc3Z009 9 10 109. [&&^,,778STTUU 9 9 9@5 5 5$  ( 5 5 521 1 1+< +< +<Z-< -< -<^2 2 243 3 34 [ Ibi++A..>>vFFGGIbi++A..777GGHHIbi++A..>>vFFLMM	

 
. .
 
. [ F29((++;;A>>??F29((++44QQ4??@@F29((++;;A>>DEE	

 
/ /
 
/I I I46 6 62 [Wrz2:&>??[Vj(%;<</ / =< @?/N N N [	
 6 6 6$ $ $B  0 0 0,
$ 
$ 
$5 5 5W W W W Wr/   rU   c                 d    t           j                            d                                          S )NrK   )r=   rO   rP   rQ   )argskwargss     r-   <lambda>r4    s"    BI11!44DDFF r/   c                      e Zd Zej                            dg d          ej                            dej        ej        g          ej                            dddg          d                                     Z	dS )	TestTypeCastingr   )+-*r   /dt
left_right)r   3)r=  r   c                   t          j        ddt          |          }|\  }}| d| d| }	t          j        |	||          }
|j        j        |k    sJ |
j        j        |k    sJ t          j        |
t	          |	                     d S )NrE   r   )
data_gen_fr    rj   )ro   makeCustomDataframefrm   rn   r   r   r   )rq   r,   r7   r   r;  r<  r   leftrightsr   s              r-   test_binop_typecastingz&TestTypeCasting.test_binop_typecasting  s     #AqQbAAA e""b""5""gav666y"$$$$z2%%%%
c477+++++r/   N)
r%  r&  r'  r%   r'   r(  r=   r/  r  rF  r0  r/   r-   r6  r6    s        [T#=#=#=>> [TBJ
#;<<[\K+EFF, , GF =< ?>
, , ,r/   r6  c                     t          t          t          j        d          |                      }t	          t          j        d | D                       }|o|S )Nis_monotonic_increasingc              3  ^   K   | ](}t          |j        j        t          j                  V  )d S r2   )
issubclassr   typer=   
datetime64r   s     r-   r.   zshould_warn.<locals>.<genexpr>  s2      MM1z!',>>MMMMMMr/   )anymapoperator
attrgetterr   xor)r2  not_monoonly_one_dts      r-   should_warnrT    sZ    s8./HII4PPQQQHMMMMM K ##r/   c                     e Zd Zg dZedgz   Zd Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          d                                                 Z
ej        	                    d	e          ej        	                    de          d
                         Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zej                            d          ej        	                    dddg          ej        	                    de          ej        	                    d	e          d                                                 Zej        	                    dddg          ej        	                    d e eddgddg                    dgz             ej                            d          d                                     Zej                            d          ej        	                    de          ej        	                    d	e          ej        	                    dddg          ej        	                    dddg          d                                                             Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zd ZdS ) TestAlignment)irE  r;  rE  c                    d}t          j        ddt                    }t          j        |||          }t          j        ||dz             d S )Nzdf * ~2rE   r   )r?  rj   )ro   rA  rB  rm   rn   r   )rq   r,   r7   rE  r   r   s         r-   test_align_nested_unary_opz(TestAlignment.test_align_nested_unary_op  sQ    #AqQ777gav666
c27+++++r/   zalways::RuntimeWarninglr_idx_typerr_idx_type
c_idx_typec                   t          j        ddt          ||          }t          j        ddt          ||          }t          |j        |j                  rIt          j        t                    5  t          j        d||          }d d d            n# 1 swxY w Y   nt          j        d||          }t          j	        |||z              d S )NrL   r?  
r_idx_typer]     zdf + df2rj   
ro   rA  rB  rT  r  r   RuntimeWarningrm   rn   r   )	rq   r,   r7   r[  r\  r]  r   df2r   s	            r-   test_basic_frame_alignmentz(TestAlignment.test_basic_frame_alignment  s&    #q[Z
 
 
 $q[Z
 
 
 rx++ 	D+N;; H HgjGGGH H H H H H H H H H H H H H H '*VFCCCC
c28,,,,,s   0BBBr`  c                   t          j        ddt          ||          }t          j        d||          }t          j        ||dk                t          t          j        	                    d          
                    |j                  |j        |j                  }t          j        d||          }t          j        |||k                d S )NrL   r_  df < 2rj   rK   )r  r  zdf < df3)ro   rA  rB  rm   rn   r   r   r=   rO   rP   rQ   r  r  r  )rq   r,   r7   r`  r]  r   r   df3s           r-   test_frame_comparisonz#TestAlignment.test_frame_comparison  s     #qZJ
 
 
 ghvf===
c26***I!!!$$44RX>>(J
 
 

 gj???
c28,,,,,r/   zignore::RuntimeWarningr1c1r2c2c                   t          j        ddt          ||          }t          j        ddt          ||          }t          j        ddt          ||          }	t          |j        |j        |	j                  rIt          j        t                    5  t          j        d||          }
d d d            n# 1 swxY w Y   nt          j        d||          }
t          j	        |
||z   |	z              d S )Nr   rK   r_     rE   zdf + df2 + df3rj   rb  )rq   r,   r7   rj  rk  rl  rm  r   rd  rh  r   s              r-   #test_medium_complex_frame_alignmentz1TestAlignment.test_medium_complex_frame_alignment*  s<    #AqQ2RTUUU$QaBSUVVV$QaBSUVVVrxCI66 	J+N;; N Ng.vfMMMN N N N N N N N N N N N N N N '*6&IIIC
c28c>22222s   B88B<?B<
index_namer  r  c                t   t          j        ddt          ||          }t          ||          }t	          t
          j                            d                              d          |d d                   }t          |j
        |j
                  rIt          j        t                    5  t          j        d||          }	d d d            n# 1 swxY w Y   nt          j        d||          }	|dk    s|dk    r!|dk    r|                    |          n||z   }
n||z   }
t          j        |	|
           d S )	NrL   r_  rK   rE   df + srj   r;  r    )ro   rA  rB  getattrr   r=   rO   rP   rQ   rT  r  r   rc  rm   rn   addr   )rq   r,   r7   rq  r`  r]  r   r  rE  r   rv   s              r-   !test_basic_frame_series_alignmentz/TestAlignment.test_basic_frame_series_alignment:  s    #qZJ
 
 
 J''29((++;;A>>bqb	JJrx)) 	B+N;; F FghvfEEEF F F F F F F F F F F F F F F '(6&AAACt!3!3$*i$7$7rvvayyyR!VHHAvH
c8,,,,,s   *CCCzr_idx_type, c_idx_typerW  )r;  r;  c           
     @   |dk    r`|dv r\|dk    rV|dk    rP|dk    rJd| d| d| d	| d
| 
}|j                             t          j                            |d                     t          j        ddt          ||          }t          ||          }	t          t          j                            d                              d          |	d d                   }
t          |
j        |j                  rIt          j        t"                    5  t%          j        d||          }d d d            n# 1 swxY w Y   nt%          j        d||          }|dk    s|dk    r!|dk    r|                    |
          n|
|z   }n|
|z   }t          j        ||           d S )Nr    )r   ra   r  rW  rE  z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r"   strictrL      r_  rK   rE   zs + dfrj   r;  )r   r   r%   r'   r   ro   rA  rB  rt  r   r=   rO   rP   rQ   rT  r  r   rc  rm   rn   ru  r   )rq   r5   r,   r7   rq  r`  r]  r"   r   r  rE  r   rv   s                r-   !test_basic_series_frame_alignmentz/TestAlignment.test_basic_series_frame_alignmentS  s=    i...g%%c!!c!!DV D D D D/9D D(D D7AD D 
 L##FK$5$5VE$5$R$RSSS#aJ:
 
 
 J''29((++;;A>>bqb	JJqw)) 	B+N;; F FghvfEEEF F F F F F F F F F F F F F F '(6&AAACt!3!3$*i$7$7rvvayyyQVHH2vH
c8,,,,,s   D44D8;D8r   r7  r9  c                   t          j        ddt          ||          }t          ||          }t	          t
          j                            d                              d          |d d                   }	d| d}
d| d}t          |j
        |	j
                  rt          j        t                    5  t          j        |
||	          }d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |||	          }d d d            n# 1 swxY w Y   n.t          j        |
||	          }t          j        |||	          }|d
k    r#|d
k    r|dk    rt          j        ||           d S d S d S d S )NrL   r_  rK   rE   zs z dfzdf z srj   r;  r    )ro   rA  rB  rt  r   r=   rO   rP   rQ   rT  r  r   rc  rm   rn   r   )rq   r,   r7   rq  r   r`  r]  r   r  rE  r?   rA   r   r   s                 r-   test_series_frame_commutativityz-TestAlignment.test_series_frame_commutativityz  s    #qZJ
 
 
 J''29((++;;A>>bqb	JJ2lllBlllrx)) 	;+N;; ? ?GCv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?+N;; ? ?GCv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? F6:::AF6:::A*"4"4""%a+++++ "4"4""s$   6CC!C>D""D&)D&c                h   d}d}d|z  }	t           j                            d                              ddg          }
t           j                            d                              ddg          }t	          j        ||t          ||          }t	          j        |	|t          ||          }t          t                      	                    |          |
          }t          t           j                            d                              |          |d |                   }|d	k    s|d	k    r"|d
k    r|                    |          }n||z   }n||z   }|d	k    s|d	k    r"|d
k    r|                    |          }n||z   }n||z   }t          |j        |j        |j                  rIt	          j        t                     5  t#          j        d||          }d d d            n# 1 swxY w Y   nt#          j        d||          }|j        |j        k    sJ t	          j        ||           d S )Nr   rE   rK   r  r  r   rd  r_  r;  r    zdf2 + ser + dfrj   )r=   rO   rP   choicero   rA  rB  rt  localsgetr   rQ   ru  rT  r  r   rc  rm   rn   r  r   )rq   r,   r7   rj  rk  rl  rm  nm1m2rq  obj_namer   rd  r  ser	expected2rv   r   s                      r-   #test_complex_series_frame_alignmentz1TestAlignment.test_complex_series_frame_alignment  sg    VY**1--44gy5IJJ
9((++22D%=AA#BaBSUVVV$RqRTVWWWX..
;;RY**1--==a@@%)LL::t""GGCLL		#I		c	I::t""$==,,$r> 2~Hsy#)RX66 	J+N;; N Ng.vfMMMN N N N N N N N N N N N N N N '*6&IIICyHN****
c8,,,,,s   G((G,/G,c                   t          t          j                            d                              d                    }t          t          j                            d                              d                    }|dk    rt          }nd}t          j        |          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d                    }t          j        d          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	                    }t          t          j                            d                              d                    }t          j        d          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d
                    }t          t          j                            d                              d                    }|dk    }|st          }nd}t          j        |          5 }t          j
        d||           |set          |          dk    sJ t          |d         j                  }	t          j        |j        |j        d         z
            }
d|
dd}|	|k    sJ d d d            d S # 1 swxY w Y   d S )NrK   )  rL   '  r    Frs  rj   r  )rL   r  )rL   rL   ra   rN   r   z_Alignment difference on axis 1 is larger than an order of magnitude on term 'df', by more than z.4gz; performance may suffer.)r   r=   rO   rP   rQ   r   r   ro   r   rm   rn   lenr;   messagelog10r   r  )rq   r,   r7   r   rE  seenis_python_enginewrnwrr   loggedrv   s               r-   +test_performance_warning_for_poor_alignmentz9TestAlignment.test_performance_warning_for_poor_alignment  s   ry,,Q//??
KKLL29((++;;EBBCCY%DDD'-- 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 29((++;;DAABB'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??LLMM29((++;;EBBCC'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??IIJJ29((++;;EBBCC!X- 	$CCC',, 	'GHVF;;;;# 	'1vv{{{{!A$,''!&28A;"677J$*IJ J J 
 h	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sI   #CCC%E		EE&H

HH9A?MM	M	N)r%  r&  r'  index_typeslhs_index_typesrZ  r%   r'   filterwarningsr(  re  ri  rp  rv  listr   rz  r|  r  r  r0  r/   r-   rV  rV    s-       """K!SE)O, , , [ 899[]O<<[]K88[\;77- - 87 98 =< :9-" [\?;;[\?;;- - <; <;- [ 899[T?33[T;//[T;//[T;//	3 	3 0/ 0/ 0/ 43 :9
	3 [ 899[\GY+?@@[\;77[\?;;- - <; 87 A@ :9-* [\GY+?@@[ WWc3Z#s,,-->  [ 899- - :9	  A@-B [ 899[\;77[\?;;[\GY+?@@[TC:.., , /. A@ <; 87 :9
,0 [ 899[T?33[T;//[T;//[T;//#- #- 0/ 0/ 0/ 43 :9
#-J*' *' *' *' *'r/   rV  c            
         e Zd Zd Zd Zej                            dddg          ej                            dddg          ej                            dej	                  d                                     Z
ej                            dddg          ej                            dddg          ej                            dej	                  d	                                     Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%ej                            d%d&d'd&d(g e&j'        g           d)g          d*             Z(ej                            d%g d+          d,             Z)ej                            d-d&d'd&d(g e&j'        g           d)d&d(ig          d.             Z*d/ Z+d0 Z,d1 Z-d2 Z.d3 Z/d4 Z0ej                            d5g d6          d7             Z1ej                            d8d9d:g          d;             Z2d<S )=TestOperationsc                \    |                     dd          dz   |d<   t          j        |i |S Nlevelr   rN   poprm   rn   rq   r2  r3  s      r-   rn   zTestOperations.eval  3     **Wa0014ww''''r/   c                   g |dk    rddgfdt           j        t           j        z   D             }d |D             }|D ]}d| d}d| d}d| d	}|d
v rMd}	t          j        t
          |	          5  t          j        |||           d d d            n# 1 swxY w Y   ft          d|d|          }
|                     |||          }||
k    sJ t          ||d|          }
|                     |d|i||          }||
k    sJ t          d||dz   |          }
|                     |d|i||          }||
k    sJ d S )Nra   r|   r}   c                    g | ]}|v|	S r0  r0  )r+   r   exclude_ariths     r-   
<listcomp>z8TestOperations.test_simple_arith_ops.<locals>.<listcomp>  s.     
 
 
&& &&&r/   c              3  &   K   | ]}|d k    |V  dS )z//Nr0  )r+   r   s     r-   r.   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>  s&      44btr44r/   z1 z 1zx z (x + 1)r{   z&argument of type 'int' is not iterablerf   rj   rN   r   r   )	r   r   r*  r%   rk   r   rm   rn   rD   )rq   r,   r7   	arith_opsopsr   rs   r   r   rr   expecr   yr  s                @r-   test_simple_arith_opsz$TestOperations.test_simple_arith_ops  s   X!8,M
 
 
 
)D,==
 
 
	 54I444 	" 	"BbBr+++C#r###C%%%>]9C888 > >GBvf====> > > > > > > > > > > > > > > )B6::IIbI??Ezzzz(B6::IIcsAhvfIUUEzzzz(BAv>>IIcsAhvfIUUEzzzzz)	" 	"s   7BB	"B	rA   TFr?   r   c                (   | d| d| }t           dk    rP|dv rLd}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   d S |                     |          }t	          |          }||k    sJ d S Nr@  ra   rb   re   rf   r7   r%   rk   rl   rn   rq   rA   r?   r   rs   rr   r   r  s           r-   test_simple_bool_opsz#TestOperations.test_simple_bool_ops         b  3  X""5"56C2#>>>  		"              Fiimm2hhczzzzzz   AA Ac                (   | d| d| }t           dk    rP|dv rLd}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   d S |                     |          }t	          |          }||k    sJ d S r  r  r  s           r-   test_bool_ops_with_constantsz+TestOperations.test_bool_ops_with_constants*  r  r  c                   t           j                            d                              d          }t	          t           j                            d                              d                    }d}t          j        t          |          5  |                     d||d           d d d            d S # 1 swxY w Y   d S )	NrK   )r   ro  rE      rL   z?N-dimensional objects, where N > 2, are not supported with evalrf   x + yr   r  r   )	r=   rO   rP   rQ   r   r%   rk   rl   rn   )rq   r   r  rr   s       r-   test_4d_ndarray_failsz$TestOperations.test_4d_ndarray_fails:  s    I!!!$$44\BB29((++;;B??@@O].c::: 	< 	<IIg*:*:I;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   B77B;>B;c                @    |                      d          }|dk    sJ d S )N1rN   )rn   )rq   r   s     r-   test_constantzTestOperations.test_constantA  s"    IIcNNAvvvvvvr/   c                    t          t          j                            d                              d                    }|                     dd|i          }t          j        ||           d S )NrK   rL   rK   r   r  r   r=   rO   rP   rQ   rn   ro   r   )rq   r   rd  s      r-   test_single_variablez#TestOperations.test_single_variableE  s_    ry,,Q//??HHIIii$i44
b#&&&&&r/   c                   t          t          j                            d                              d                    }t          j        t          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )NrK   rE   r   name 'x' is not definedrf   zdf[x > 2] > 2)	r   r=   rO   rP   rQ   r%   rk   	NameErrorrn   rq   r   s     r-   &test_failing_subscript_with_name_errorz5TestOperations.test_failing_subscript_with_name_errorJ  s    ry,,Q//??GGHH]9,EFFF 	' 	'IIo&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A>>BBc                    t          t          j                            d                              d                    }|                     dd|i          }|dz   |dk             }t          j        ||           d S )NrK   r  z(df + 1)[df > 2]r   r  rN   r  r   s       r-   test_lhs_expression_subscriptz,TestOperations.test_lhs_expression_subscriptO  sr    ry,,Q//??GGHH-4*EEFBF#
fh/////r/   c           	        t          t          j                            d                              d          t          d                    }d}|j        |j        k     }d}|j        |j        z   |j        z   }d}|j        |j        z   |j        |j        dk              z   }|||f}|||f}	t          ||	          D ]1\  }
}t          j        ||                     |
d	|i
                     2d S )NrK   r  abcr  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   r   r  )r   r=   rO   rP   rQ   r  r   r   rB   zipro   r   rn   )rq   r   expr1expec1expr2expec2expr3expec3exprsexpecsrC   r  s               r-   test_attr_expressionz#TestOperations.test_attr_expressionU  s    I!!!$$44V<<d5kk
 
 
 $rt#.rtBD1H~-ue#'E6** 	O 	OHAu"5$))A4*)*M*MNNNN	O 	Or/   c                   t          t          j                            d                              d          t          d                    }t          t          j                            d                              d                    }d}d}t          j        t          |          5  | 	                    |||d	           d d d            d S # 1 swxY w Y   d S )
NrK   r  r  r  zdf = df2%cannot assign without a target objectrf   )r   rd  r  )
r   r=   rO   rP   rQ   r  r%   rk   r:   rn   )rq   r   rd  r  rr   s        r-   test_assignment_failsz$TestOperations.test_assignment_failsd  s!   I!!!$$44V<<d5kk
 
 
 	--a00@@HHII5]:S111 	@ 	@IIer#(>(>I???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   -CCCc                4   t          t          j                            d                              d          t          d                    }t          j        t          d          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrK   r   abr  invalid syntaxrf   zd c = a + b
r   r=   rO   rP   rQ   r  r%   rk   r  rn   r  s     r-   %test_assignment_column_multiple_raisez4TestOperations.test_assignment_column_multiple_raisen  s    I!!!$$44V<<d4jj
 
 
 ];.>??? 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   *BBBc                8   t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrK   r   r  r  z5left hand side of an assignment must be a single namerf   zd,c = a + br  r  s      r-   %test_assignment_column_invalid_assignz4TestOperations.test_assignment_column_invalid_assignv  s    I!!!$$44V<<d4jj
 
 
 F];c222 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   ,BBBc                8   t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrK   r   r  r  zcannot assign to function callrf   zTimestamp("20131001") = a + br  r  s      r-   3test_assignment_column_invalid_assign_function_callzBTestOperations.test_assignment_column_invalid_assign_function_call  s    I!!!$$44V<<d4jj
 
 
 /];c222 	5 	5GG3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r  c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	           t          j	        ||           d S )
NrK   r   r  r  r   r   	a = a + bTinplace
r   r=   rO   rP   rQ   r  copyrn   ro   r   rq   r   rv   s      r-   &test_assignment_single_assign_existingz5TestOperations.test_assignment_single_assign_existing      I!!!$$44V<<d4jj
 
 
 7799 5
T***
b(+++++r/   c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	
           t          j	        ||           d S )NrK   r   r  r  r   r   rB   	c = a + bTr  r  r  s      r-   !test_assignment_single_assign_newz0TestOperations.test_assignment_single_assign_new  r  r/   c                j   t          t          j                            d                              d          t          d                    }|                                }d}|                    dd           |                                }d|d	         z   |d
<   t          j	        ||           d S )NrK   r   r  r  rN   z	a = 1 + bTr  r   r   r  )rq   r   r   rv   s       r-   +test_assignment_single_assign_local_overlapz:TestOperations.test_assignment_single_assign_local_overlap  s    I!!!$$44V<<d4jj
 
 
 WWYY
T***7799HSM)
b(+++++r/   c                d   t          t          j                            d                              d          t          d                    }d}|j                                        }|                    dd           ||j	        z   }t          j        ||j        d	
           |j        J d S )NrK   r   r  r  rN   r  Tr  Fr   )r   r=   rO   rP   rQ   r  r   r  rn   r   ro   r   r  )rq   r   r   old_arw   s        r-   "test_assignment_single_assign_namez1TestOperations.test_assignment_single_assign_name  s    I!!!$$44V<<d4jj
 
 
 		
T***
vrt????{"""""r/   c                f   t          t          j                            d                              d          t          d                    }|                    dd           d}t          j        t          |	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )NrK   r   r  r  r  Tr  z#can only assign a single expressionrf   z	c = a = b)
r   r=   rO   rP   rQ   r  rn   r%   rk   r  r  s      r-   test_assignment_multiple_raisesz.TestOperations.test_assignment_multiple_raises  s    I!!!$$44V<<d4jj
 
 
 	T***3];c222 	! 	!GGK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   B&&B*-B*c                R   t          t          j                            d                              d          t          d                    }|                     dd|i|d           |                                }|d	         |d
         z   |d<   t          j	        ||           d S )NrK   r   r  r  zc = df.a + df.br   T)r   targetr  r   r   rB   
r   r=   rO   rP   rQ   r  rn   r  ro   r   r  s      r-   test_assignment_explicitz'TestOperations.test_assignment_explicit  s    I!!!$$44V<<d4jj
 
 
 			#r
2t	TTT7799 5
b(+++++r/   c                    t          dgdgd          }|                    d          }t          dg          }t          j        ||d           d S )N   ir   r   za in [11, -32]TFr   )r   rn   r   ro   r   r   s       r-   test_column_inzTestOperations.test_column_in  sZ    bT..//)**4&>> 	vxUCCCCCCr/   z%Unknown: Omitted test_ in name prior.r!   c                R   t          t          j                            d                              d          t          d                    }|                    dd          }|J |                                }|d         |d	         z   |d
<   t          j	        ||           d S )NrK   r   r  r  r  Fr  r   r   rB   r  )rq   r   actualrv   s       r-   test_assignment_not_inplacez*TestOperations.test_assignment_not_inplace  s     I!!!$$44V<<d4jj
 
 
 e44!!!7799 5
b(+++++r/   c                <   t          g dg dd          }|                                }|d         |d         z   |d<   |d         |d         z   |d<   |                    dd	
          }t          j        ||           |J |d         dz
  |d<   |d         dz   |d<   |                    dd	
          }t          j        ||           |J d}t          j        t          |          5  |                    dd
           d d d            d S # 1 swxY w Y   d S )NrN   rK   r   ro  rE   r  r  r   r   rB   d$
        c = a + b
        d = c + bTr  rN   rK   rC   $
        a = a - 1
        e = a + 2z@Multi-line expressions are only valid if all expressions containrf   z(
            a = b + 2
            b - 2F)r   r  rn   ro   r   r%   rk   r:   )rq   r   rv   answerrr   s        r-   test_multi_line_expressionz)TestOperations.test_multi_line_expression  s   YYYYYY77887799 5 5 	  
 
 	h+++~~~ ) ) 	  
 
 	h+++~~~ Q]:S111 	 	GG 	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,DDDc                   t          g dg dd          }|                                }|d         |d         z   |d<   |d         |d         z   |d<   |                    dd	
          }t          j        ||           |d         dz
  |d<   |d         dz   |d<   |                    dd	
          }t          j        ||           d S )Nr  r  r  r   r   rB   r  r  Fr  rN   rK   rC   r  r   r  rn   ro   r   r  s      r-   &test_multi_line_expression_not_inplacez5TestOperations.test_multi_line_expression_not_inplace  s    YYYYYY77887799 5 5WW 	  
 
 	h+++ ) )WW 	  
 
 	h+++++r/   c                    t          g dg dd          }|                                }d}|d         |z  |d<   |d         |z   |d<   |                    dd	
          }t          j        ||           |J d S )Nr  r  r  ry  r   rB   r  z?
        c = a * @local_var
        d = c + @local_var
        Tr  r	  )rq   r   rv   	local_varr  s        r-   )test_multi_line_expression_local_variablez8TestOperations.test_multi_line_expression_local_variable  s    YYYYYY77887799	 	1 	1   
 
 	h+++~~~~~r/   c                    t          g dg dd          }d }|                                }|d          |dd          z  |d<   |d          |dd          z   |d	<   |                    d
d          }t          j        ||           |J d S )Nr  r  r  c                    |S r2   r0  r  s     r-   
local_funczUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_func2      Hr/   r   rN   ry  rB   r  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr  r	  rq   r   r  rv   r  s        r-   2test_multi_line_expression_callable_local_variablezATestOperations.test_multi_line_expression_callable_local_variable.  s    YYYYYY7788	 	 	 7799 

1a(8(88 

1a(8(88   
 
 	h+++~~~~~r/   c                $   t          g dg dd          }d }|                                }|d          |dd          z  |d	<   |d	          |dd          z   |d
<   |                    dd          }t          j        ||           |J d S )Nr  r  r  c                    |S r2   r0  r  s     r-   r  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_funcF  r  r/   r   ry  rN   )r   r   rB   r  zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        Tr  r	  r  s        r-   >test_multi_line_expression_callable_local_variable_with_kwargszMTestOperations.test_multi_line_expression_callable_local_variable_with_kwargsB  s    YYYYYY7788	 	 	 7799 

Q!(<(<(<< 

Q!(<(<(<<   
 
 	h+++~~~~~r/   c                   t          g dg dd          }|                                }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        ||           d S )Nr  r  r  r  rf   za = 1)r   r  r%   rk   r:   r  ro   r   )rq   r   df_origrr   s       r-   test_assignment_in_queryz'TestOperations.test_assignment_in_queryV  s    YYYYYY7788''))5]:S111 	 	HHW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
b'*****s   A**A.1A.c                <   t          g dg dd          }|                                }||d         dk             }|                    dd           t          j        ||           i }dd	i}|                     d
|d           t          j        ||           d S )Nr  r  r  r   rK   za == 2Tr  r   	a = 1 + 2r  r  )r   r  r  ro   r   rn   assert_dict_equalr  s      r-   test_query_inplacez!TestOperations.test_query_inplace_  s    YYYYYY77887799HSMQ./
4(((
h+++8		+b$	777
R*****r/   invalid_targetrN   catrK   rN   r   c                `   d}d}t          j        t          |          5  |                     ||d           d d d            n# 1 swxY w Y   t	          |d          rNt          j        t          |          5  |                     ||d           d d d            d S # 1 swxY w Y   d S d S )Nz)Cannot assign expression output to targetr  rf   Tr  r  F)r%   rk   r:   rn   hasattrrq   r  rr   
expressions       r-   test_cannot_item_assignz&TestOperations.test_cannot_item_assignm  se   9 
]:S111 	G 	GIIjIFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G >6** 	Lz555 L L		*^U	KKKL L L L L L L L L L L L L L L L L L	L 	Ls#   AA	A	;B!!B%(B%)rN   r   r!  c                    d}d}t          j        t          |          5  |                     ||d           d d d            d S # 1 swxY w Y   d S )Nz"Cannot return a copy of the targetr  rf   Fr  )r%   rk   r:   rn   r$  s       r-   test_cannot_copy_itemz$TestOperations.test_cannot_copy_itemy  s    2 
]:S111 	H 	HIIjIGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H   AA
A
r  c                    d}|                      ||d          dk    sJ d}t          j        t          |          5  |                      ||d           d d d            d S # 1 swxY w Y   d S )N1 + 2Fr  r   z0Cannot operate inplace if there is no assignmentrf   T)rn   r%   rk   r:   )rq   r  r%  rr   s       r-   test_inplace_no_assignmentz)TestOperations.test_inplace_no_assignment  s    
yyFEyBBaGGGG@]:S111 	? 	?IIjI>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A$$A(+A(c                    t          j        ddt          dd          }|dk     }|                     dd|i          }|dk     }t          j        ||           t          j        ||           d S )NrK   prW  r?  r]  r`  rg  r   r  ro   rA  rB  rn   r   )rq   r   rC   rr   s        r-   *test_basic_period_index_boolean_expressionz9TestOperations.test_basic_period_index_boolean_expression  su    #AqQ3SVWWWFIIhD":I66F
a###
a#####r/   c                    t          j        ddt          dd          }|                     dd|i          }||dk              }t          j        ||           d S )	NrK   r.  rW  r/  zdf[df < 2 + 3]r   r  rE   r0  rq   r   r1  rC   s       r-   ,test_basic_period_index_subscript_expressionz;TestOperations.test_basic_period_index_subscript_expression  s^    #AqQ3SVWWWII&D":I>>rEzN
a#####r/   c                    t          j        ddt          dd          }|                     dd|i          }|||dk              dk              |dz  z   }t          j        ||           d S )NrK   r.  rW  r/  zdf[df[df < 2] < 2] + df * 2r   r  r0  r4  s       r-   -test_nested_period_index_subscript_expressionz<TestOperations.test_nested_period_index_subscript_expression  sp    #AqQ3SVWWWII3r
IKKr"q&zA~a'
a#####r/   c                &   t          t          j                            d                              d                    }t          dd          |d<   |                     dd|i||	          }|j        d
k     }t          j	        ||d           d S )NrK   r  z1/1/2012rE   )periodsdates1zdf.dates1 < 20130101r   r   20130101Fr   )
r   r=   rO   rP   rQ   r   rn   r:  ro   r   )rq   r,   r7   r   r   r  s         r-   test_date_booleanz TestOperations.test_date_boolean  s    ry,,Q//??GGHH!*a8888ii"bz	  
 
 	J&
sEu======r/   c                   |dk    rt          j        d||          }|sJ t          j        d||          }|sJ t          j        d||          }|rJ t          j        d||          }|sJ t          j        d||          }|sJ t          j        d||          }|sJ t          j        d	||          }|sJ t          j        d
||          }|sJ t          j        d||          }|rJ t          j        d||          }|sJ d S d}t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            d S # 1 swxY w Y   d S )Nra   z1 in [1, 2]rj   z2 in (1, 2)z3 in (1, 2)z3 not in (1, 2)z[3] not in (1, 2)z[3] in ([3], 2)z[[3]] in [[[3]], 2]z(3,) in [(3,), 2]z(3,) not in [(3,), 2]z[(3,)] in [[(3,)], 2]z'In' nodes are not implementedrf   z[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))rm   rn   r%   rk   rl   )rq   r,   r7   r   rr   s        r-   test_simple_in_opsz!TestOperations.test_simple_in_ops  s   X'-vFFFCJJJ'-vFFFCJJJ'-vFFFCNNN'+F6JJJCJJJ'-fVLLLCJJJ'+F6JJJCJJJ'/vNNNCJJJ'-fVLLLCJJJ'1&PPPCNNN'1&PPPCJJJJJ2C2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> R R26&QQQQR R R R R R R R R R R R R R R5C2#>>> I I)&HHHHI I I I I I I I I I I I I I I2#>>> R R26&QQQQR R R R R R R R R R R R R R R R R Rsl   5EE E?F##F'*F'	G--G14G1H77H;>H;JJ
J)KKKc                v    d}d                     d          }d}t          j        |||          }||k    sJ d S )NrN   z * !aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarj   )r   rm   rn   )rq   r,   r7   r   r   rv   r   s          r-   test_check_many_exprsz$TestOperations.test_check_many_exprs  sD    zz(##gd6&999hr/   r   )zdf > 2 and df > 3zdf > 2 or df > 3z
not df > 2c                t   t          t          j                            d                              d                    }|dk    rXd}d|v rd}t          j        t          |          5  t          j	        |d|i||	           d d d            d S # 1 swxY w Y   d S t          j	        |d|i||	           d S )
NrK   r  ra   re   not'Not' nodes are not implementedrf   r   )r   r7   r,   
r   r=   rO   rP   rQ   r%   rk   rl   rm   rn   )rq   r   r,   r7   r   rr   s         r-   test_fails_and_or_notz$TestOperations.test_fails_and_or_not  s%    ry,,Q//??GGHHX6C}}72#>>>   $bz!!	                     G ":	     s   )BBBcharr   r   c                h   t          t          j                            d                              d                    }d| d}|dk    rOd}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S t          j	        |||           d S )	NrK   r  z(df + 2)[df > 1] > 0 z	 (df > 0)ra   z$cannot evaluate scalar only bool opsrf   r   rE  )rq   rG  r,   r7   r   rs   rr   s          r-   test_fails_ampersand_pipez(TestOperations.test_fails_ampersand_pipe  s    ry,,Q//??GGHH4T444X8C2#>>> : :6&9999: : : : : : : : : : : : : : : : : : GBvf555555s   )BBBN)3r%  r&  r'  rn   r  r%   r'   r(  r   r)  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r  r  r=   r   r&  r(  r,  r2  r5  r7  r<  r>  rA  rF  rI  r0  r/   r-   r  r    sf       ( ( (!" !" !"F [UT5M22[UT5M22[T4#566  76 32 32 [UT5M22[UT5M22[T4#566  76 32 32< < <  ' ' '
' ' '
0 0 0O O O@ @ @# # ## # #5 5 5, , ,, , ,
, 
, 
,
# 
# 
#! ! !, , ,D D D [EFF, , GF,# # #J, , ,2  $  (  (+ + ++ + + [-51a&("(2,,PV/WXX	L 	L YX	L [-/A/A/ABBH H CBH [X51a&("(2,,QRTUPV'WXX? ? YX?$ $ $$ $ $$ $ $
> 
> 
>-R -R -R^   [	
 	
 	
   . [Vc3Z00	6 	6 10	6 	6 	6r/   r  c                     e Zd Zd Zej                            e d          ej                            de	          d                         Z
ej                            de          d             Zd Zd Zej                            d	ej        ej        fej        ej        fej        ej        fej        ej        f ej        ej        ej        ej        
          g          d             Zd Zd ZdS )TestMathc                \    |                     dd          dz   |d<   t          j        |i |S r  r  r  s      r-   rn   zTestMath.eval  r  r/   z&Unary ops only implemented for numexprr!   fnc                   t          dt          j                            d                              d          i          }|j        }| d}|                     |          }t          j        d          5   t          t          |          |          }d d d            n# 1 swxY w Y   t          j
        ||d           d S )	Nr   rK   rL   z(a)ignoreallFr   )r   r=   rO   rP   rQ   r   rn   errstatert  ro   r   )rq   rM  r   r   r   gotr   s          r-   test_unary_functionszTestMath.test_unary_functions  s    
 RY22155EEbIIJKKDzzziioo[X&&& 	( 	($WR__Q''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
sF>>>>>>s   8B##B'*B'c                    t          t          j                            d                              d          t          j                            d                              d          d          }|j        }|j        }| d}|                     |          }t          j        d          5   t          t          |          ||          }d d d            n# 1 swxY w Y   t          j        ||d           d S )	NrK   rL   r  z(a, b)rO  rP  Fr   )r   r=   rO   rP   rQ   r   r   rn   rR  rt  ro   r   )rq   rM  r   r   r   r   rS  r   s           r-   test_binary_functionszTestMath.test_binary_functions"  s&   Y**1--==bAAY**1--==bAA 
 
 DD}}}iioo[X&&& 	+ 	+$WR__Q**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
sF>>>>>>s   0 CC #C c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        t          j        |j	                  |j
                  }t          j        ||d           d S )	NrK   rL   r  ze = arctan2(sin(a), b)Tr,   r7   r  Fr   )r   r=   rO   rP   rQ   rn   rC   arctan2sinr   r   ro   r   rq   r,   r7   r   rS  r   s         r-   test_df_use_casezTestMath.test_df_use_case3  s    Y**1--==bAAY**1--==bAA 
 
 	$	 	 	
 	
 	
 dBF24LL"$//
sF>>>>>>r/   c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        |j        |j	        z             }t          j        ||d           d S )	NrK   rL   r  ze = sin(a + b)TrX  Fr   )r   r=   rO   rP   rQ   rn   rC   rZ  r   r   ro   r   r[  s         r-    test_df_arithmetic_subexpressionz)TestMath.test_df_arithmetic_subexpressionD  s    Y**1--==bAAY**1--==bAA 
 
 	 MMMdrt$$
sF>>>>>>r/   zdtype, expect_dtyper#   c                   t          dt          j                            d                              d                              |          i          }|j        j        |k    sJ |                    d||d           |j	        }t          j
        |j                  }|j        |j        k    sJ ||j        k    sJ t          j        ||d           d S )	Nr   rK   rL   z
b = sin(a)TrX  Fr   )r   r=   rO   rP   rQ   r   r   r   rn   r   rZ  ro   r   )rq   r   expect_dtyper,   r7   r   rS  r   s           r-   test_result_typeszTestMath.test_result_typesP  s      ")''**::2>>EEeLLM
 
 tzU""""
VFDIIId|sy((((sy((((
sF>>>>>>r/   c                $   t          dt          j                            d                              d          i          }d}t          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rK   rL   z#"mysin" is not a supported functionrf   zmysin(a)rj   )	r   r=   rO   rP   rQ   r%   rk   r:   rn   rq   r,   r7   r   rr   s        r-   test_undefined_funczTestMath.test_undefined_funck  s    RY22155EEbIIJKK3]:S111 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>   BB	B	c                $   t          dt          j                            d                              d          i          }d}t          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rK   rL   z1Function "sin" does not support keyword argumentsrf   zsin(x=a)rj   )	r   r=   rO   rP   rQ   r%   rk   r   rn   rc  s        r-   test_keyword_argzTestMath.test_keyword_argr  s    RY22155EEbIIJKKA]9C000 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>re  N)r%  r&  r'  rn   r%   r'   r(   r   r(  r   rT  r   rV  r\  r^  r=   int32r  int64r/  r&   
complex128r)   r.  ra  rd  rg  r0  r/   r-   rK  rK    sp       ( ( ( [&N    [T?33? ? 43 ? [T#344? ? 54? ? ? ?"
? 
? 
? [Xrz"Xrz"Z$Z$FLR=OPPP	
	 	? ?	 	?"> > >> > > > >r/   rK  rK   rL   c                  ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestScopec                n    d}t          j        t          dz  t          j        |||                     d S )N
_var_s * 2rK   rj   )ro   r   _var_srm   rn   )rq   r,   r7   rC   s       r-   test_global_scopezTestScope.test_global_scope~  s@    
#QJ&@@@	
 	
 	
 	
 	
r/   c                    d}t                                                      }t          j        d|||           t                                                      }|                    d           ||k    sJ d S )NrN   x + 1r   lcls)r  r  rm   rn   r  )rq   r,   r7   r   rs  lcls2s         r-   test_no_new_localszTestScope.test_no_new_locals  se    xx}}
DGGGG		&u}}}}}}r/   c                    d}t                                                      }t          j        d||           t                                                      }||k    sJ d S )NrN   rr  rj   )globalsr  rm   rn   )rq   r,   r7   r   gblsgbls2s         r-   test_no_new_globalszTestScope.test_no_new_globals  sU    yy~~
v6666		  u}}}}}}r/   c                    d}d}t          j        t          |          5  t          j        d||i            d d d            d S # 1 swxY w Y   d S )NrN   r  rf   rr  r   r%   rk   r	   rm   rn   )rq   r,   r7   r   rr   s        r-   test_empty_localszTestScope.test_empty_locals  s    ']1=== 	J 	JGGF6bIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Jr)  c                    d}d}t          j        t          |          5  t          j        |||i            d d d            d S # 1 swxY w Y   d S )Nzname '_var_s' is not definedrn  rf   )r,   r7   global_dictr|  )rq   r,   r7   rr   rC   s        r-   test_empty_globalszTestScope.test_empty_globals  s    ,]1=== 	E 	EGAfVDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Er)  N)r%  r&  r'  rp  ru  rz  r}  r  r0  r/   r-   rl  rl  }  sg        
 
 
    J J JE E E E Er/   rl  c                     d} t          j        t          |           5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )	NzInvalid engine 'asdf' passedrf   r  rN   rK   r  asdf)r   r,   r%   rk   KeyErrorrm   rn   rr   s    r-   test_invalid_enginer        
(C	xs	+	+	+ E E
!!$4$4VDDDDE E E E E E E E E E E E E E E E E E   AA
A
)use_numexprrv   ))Tr    )Fra   c                    ddl m} t          j        d|           5   |d           }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   )_check_enginecompute.use_numexpr)pandas.core.computation.evalr  rm   option_context)r  rv   r  rw   s       r-   test_numexpr_option_respectedr    s     ;:::::		0+	>	> " "t$$!!!!!" " " " " " " " " " " " " " " " " "s   >AAc                    t          j        dd          5  t          g dg dd          } |                     d          }t          d d gddgdd	dg
          }t	          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  F)TFTFNN)rN   rK   r   ro  rE   r  )r  Bz
A.isnull()rE   r  ro  )r  )rm   r  r   r  ro   r   )r   rw   rv   s      r-   #test_numexpr_option_incompatible_opr    s     
	0%	8	8 0 0888?Q?Q?QRR
 
 ,''D$<q!f==aVLLL
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AA>>BBc                     d} t          j        t          |           5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )	NzInvalid parser 'asdf' passedrf   r  rN   rK   r  r  )r   r7   r  r  s    r-   test_invalid_parserr    r  r  )ra   r   r   z dict[str, type[BaseExprVisitor]]_parsersr,   r7   c                    t           |         } |d| |          }|j        D ]O}d}t          j        t          |          5   t          ||                       d d d            n# 1 swxY w Y   Pd S )Nrr  znodes are not implementedrf   )r  unsupported_nodesr%   rk   rl   rt  )r,   r7   VisitorClassinstr  rr   s         r-   test_disallowed_nodesr    s     F#L<00D- ! !)].c::: 	! 	!GD#   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!! !s   A&&A*	-A*	c                    d}t          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )Nzs +r  rf   rj   r%   rk   r  rm   rn   )r,   r7   rC   s      r-   test_syntax_error_exprsr    s    A	{*:	;	;	; 1 1
&00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA
Ac                    d}d}t          j        t          |          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )Nzs + tzname 's' is not definedrf   rj   )r%   rk   r  rm   rn   )r,   r7   rC   rr   s       r-   test_name_error_exprsr    s    A
#C	y	,	,	, 1 1
&00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA	A	express)za + @bz@a + bz@a + @bc                L   d\  }}|dk    rMt          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S t          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )NrN   rK   r   zThe '@' prefix is onlyrf   rj   zThe '@' prefix is notr  )r,   r7   r  r   r   s        r-   %test_invalid_local_variable_referencer    s:   DAq];.FGGG 	; 	;GGF6::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; ];.EFFF 	; 	;GGF6::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s#   AAA4BB Bc                    d\  }}| dk    rOd}t          j        t          |          5  t          j        d| |           d d d            d S # 1 swxY w Y   d S t          j        d| |          }|||z   k    sJ d S )Nr  r    zVariables in expression .+rf   zsin + dotted_linerj   )r%   rk   r   rm   rn   )r,   r7   rZ  dotted_linerr   r   s         r-   test_numexpr_builtin_raisesr    s    C*]1=== 	G 	GG'vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G g)&HHHcK'''''''s   AAAc                    d}t          j        t          d          5  t          j        d|| |           d d d            d S # 1 swxY w Y   d S )N)*   g      @zResolver of type .+rf   r+  )	resolversr,   r7   )r%   rk   r   rm   rn   )r,   r7   cannot_resolves      r-   test_bad_resolver_raisesr    s    N	y(=	>	>	> Q Q
>&PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   AAAc                    t          j        t          d          5  t          j        d| |           d d d            d S # 1 swxY w Y   d S )Nzexpr cannot be an empty stringrf    rj   r%   rk   r:   rm   rn   rj   s     r-   test_empty_string_raisesr  
  s    	z)I	J	J	J 2 2
6&11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2   AAAc                    t          j        t          d          5  t          j        d| |           d d d            d S # 1 swxY w Y   d S )Nz#only a single expression is allowedrf   z1 + 1; 2 + 2rj   r  rj   s     r-   $test_more_than_one_expression_raisesr    s    	{*O	P	P	P > >
vf====> > > > > > > > > > > > > > > > > >r  cmprb   r?   rA   c                   t           d t          t          j                            d          j        i} ||                      } ||                      }  ||                     }d| d| d}d| d| d}d| d| d	}	|||	fD ]N}
d
}t          j        t          |          5  t          j
        |
||           d d d            n# 1 swxY w Y   Od S )Nc                 f    t           j                            d                              d          S )NrK   rL   )r=   rO   rP   r   r0  r/   r-   r4  z0test_bool_ops_fails_on_scalars.<locals>.<lambda>  s$    RY**1--66r:: r/   rK   r   r   r   r   rh   r   ri   r   rf   rj   )intrH   r=   rO   rP   rQ   r%   rk   rl   rm   rn   )r?   r  rA   r,   r7   genr   r   r   r   rs   rr   s               r-   test_bool_ops_fails_on_scalarsr    sJ   
 	::ry$$Q''7C
 #c(**C
#c(**C
#c(**C
$
$
$3
$
$
$C
,
,
,3
,
,
,C
.#
.
.C
.
.
.CCo 6 6K].c::: 	6 	6GBvf5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6s   #CC	C	otherz'x'z...c                    t          dg di          }|                    d|            }t          g dd          }t          rd |_        t          j        ||           d S )Nr  )r   r   rB   r
  )FFFr  )r   rn   r   r   r  ro   r   )r  r   rw   rv   s       r-   test_equals_variousr  +  st     
C)	*	*BWW_U__%%F+++#666H  68,,,,,r/   c                `    d}t           j        }t          j        || |          }||k    sJ d S )Nzinf + 1rj   )r=   infrm   rn   )r,   r7   rE  rv   rw   s        r-   test_infr  =  s;    AvHWQvf555FXr/   columnu	   Temp(°C)u   Capacitance(μF)c                   t          t          j                            d                              d          |dg          }|||         dk             }d| d}|                    ||           }t          j        ||           d S )	NrK   r   r   r  rE   `z` > 5)r,   )r   r=   rO   rP   rQ   r  ro   r   )r,   r  r   rv   query_stringrw   s         r-   test_query_tokenr  D  s     

	a  008863-
 
 
B "V*q.!H$v$$$LXXl6X22F&(+++++r/   c                   t          ddgddggddg          }||j        dk              }|                    d| |	          }t          j        ||           |d
k    rPd}t          j        t          |          5  |                    d| |	           d d d            d S # 1 swxY w Y   d S |                    d| |	          }t          j        ||           d S )Nr   rL   rN   ra  r   countr  z
~(cat > 0)rj   ra   rD  rf   znot (cat > 0))r   r   r  ro   r   r%   rk   rl   )r,   r7   r   rv   rw   rr   s         r-   test_negate_lt_eq_ler  P  sJ   	QGaW%w/?	@	@	@BBFQJ- HXXl6&XAAF&(+++/].c::: 	D 	DHH_VFHCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D /&HH
fh/////s   <B""B&)B&c                   |dv rA| j                             t          j                            t
          d|                      t          t          j        	                    d          
                    ddd          |d	g
          }|||         dk             }|                    | d          }t          j        ||           d S )N)TrueFalser  Infz+GH 47859 DataFrame eval not supported with )rk   r"   rK   r   d   r  r   col1r  r  z>6)r   r   r%   r'   r   r  r   r=   rO   rP   r   r  ro   r   )r5   r  r   rv   rw   s        r-    test_eval_no_support_column_namer  `  s     000KMVMM   	
 	
 	
 

	a  ))!Sw)?? 
 
 
B "V*q.!HXXmmm$$F&(+++++r/   c                   t          g dg dg dd          }|d d          }|d         }|                    dd           t          g d	g dg dd          }t          j        ||           | s>t          j        ||d                    t          j        |d         |d                    d S t          g dd
          }t          j        ||           t          j        |d         |           d S )Nr  r  )ry     	   )r  r  Cr  z	A = B + CTr  )r        r  )r   rn   ro   r   r   r   )using_copy_on_writer   result_viewr  rv   s        r-   test_set_inplacer  x  s    
CC	D	DBQQQ%K
S'CGGKG&&&|||))))))LLMMH"h''' ;
sHSM222
{3/#?????)))#...
sH---
{3/:::::r/   c                  b    e Zd Zej                            dddg ddg          d             ZdS )TestValidatevaluerN   r  r  g      @c                    d}t          j        t          |          5  t          j        d|           d d d            d S # 1 swxY w Y   d S )Nz8For argument "inplace" expected type bool, received typerf   z2+2r  r  )rq   r  rr   s      r-   test_validate_bool_argsz$TestValidate.test_validate_bool_args  s    H]:S111 	* 	*GE5))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AA	AN)r%  r&  r'  r%   r'   r(  r  r0  r/   r-   r  r    sN        [Wq&)))S&ABB* * CB* * *r/   r  )h
__future__r   	functoolsr   	itertoolsr   rO  numpyr=   r%   pandas.compatr   pandas.errorsr   r   r	   pandas.util._test_decoratorsutil_test_decoratorsr)   pandas.core.dtypes.commonr
   r   r   r   r   rm   r   r   r   pandas._testing_testingro   pandas.core.computationr   r   pandas.core.computation.enginesr   pandas.core.computation.exprr   r   r   #pandas.core.computation.expressionsr   r   pandas.core.computation.opsr   r   r   r   r   pandas.core.computation.scoper   fixturer,   PARSERSr7   rD   r  ranger?   rA   r   rU   rB  r6  rT  rV  r  rK  rO   rP   rQ   ro  rl  r*   r  r'   r(  r  r  r  PyTablesExprVisitorr  __annotations__r  r  r  r  r  r  r  r  r  rH   r  r  r  r  r  keysr  r  r  r0  r/   r-   <module>r     s   " " " " " " "                                 
 * ) ) ) ) ) ) ) )                        
              4 3 3 3 3 3         
                     : 9 9 9 9 9         !   t|$$$  %$   4a>>EEE   	  
^	W ^	W ^	W ^	W ^	W ^	W ^	W ^	WB GF, , , , , , , ,($ $ $q' q' q' q' q' q' q' q'pZ6 Z6 Z6 Z6 Z6 Z6 Z6 Z6zh> h> h> h> h> h> h> h>V 
		q	!	!	1	1"	5	5"E "E "E "E "E "E "E "EJ E E E  " "  " 0 0 0 E E E  ,. .     7++8,,! ! -, ,+!1 1 11 1 1 $C$C$CDD; ; ED;( ( (Q Q Q2 2 2> > >
 ..e--e--6 6 .- .- /.6&  - - -   K1C#DEE, , FE,0 0 0  O , ,	 ,(; ; ;&* * * * * * * * * *r/   