
    d                      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	Z
d dl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
j        F                    d#          ZG G d$ d%          ZHejI        d&             ZJejI        ejK        L                    d'd(          d)                         ZMejI        d*             ZNejI        d+             ZOe)e#jP        e(d,ZQd-eRd.<   ejK        L                    d/e%          ejK        L                    d0eQ          d1                         ZSd2 ZTd3 ZUejK        L                    d4g d5          d6             ZVd7 ZWd8 ZXd9 ZYd: ZZejK        L                    d;d<          ejK        L                    d=e[e\f          ejK        L                    d>e[e\f          d?                                     Z]ejK        L                    d@dAdBg          dC             Z^dD Z_ejK        L                    dEdFdGg          dH             Z`dI ZaejK        L                    dE e4jb                              dJ             ZcdK Zd G dL dM          ZedS )N    )annotations)reduce)productN)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     ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/computation/test_eval.py	<genexpr>r-   :   s          	""i';O6{ 6 6"36 6 #  
  
	
 
	
 
	
         )paramsc                    | j         S Nr%   requests    r,   r+   r+   9   s    " =r.   c                    | j         S r1   r2   r3   s    r,   parserr6   M   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_binrC   R   s    Av# 	1S#;; 	 	 	1vv  H   v	 1S#;;s    - 
A0-A+$A0*A++A0   )r   r   	SeriesNaNDataFrameNaNfloat)r/   idsc           	        t          t          j                            dd                    }t          j        ||dk    <   t          t          j                            dd                    t          t          j                            d                    t          ddt          j        t          j        dg          |t          j                                        f}|| j                 S )N
   rD         ?      )r   r<   randomrandr=   randnr   r%   )r4   nan_df1optss      r,   r>   r>   a   s    
 	r1--..GVGGcM 	")//"a(())ryq!!""1bfbfa())
	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                     eej        "                    dd          d k              g          d!             Z#ej                            d e$ej                             d                     e$ej        !                    dd                     e$ej        "                    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)rH   cmp2rV   rU   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+   r6   )r$   raisesNotImplementedErrorpdevalrC   tmassert_equal)selfr?   r]   r^   r>   r@   r+   r6   msgexlhs_newrhs_newexpectedresults                 r,   test_complex_cmp_opszTestEval.test_complex_cmp_opsx   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   r`   innot in&'(In|NotIn)' nodes are not implementedre   lhs  rhsri   |zxonly 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>   r@   r+   r6   
local_dict)r$   rj   rk   rl   rm   joinr   	TypeErrorrC   rn   ro   )
rp   rx   r>   r@   r+   r6   rq   rr   ru   rv   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t          d ||f          \  }}t          ||||          }t          |          r| }n| }t          j        |||          }t          j        ||           d S )Nr`   rz   r}   re   z~(lhs rh   ri   pandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectr    r{   r|   r   zyonly 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                ,    t          j        | g          S r1   )r<   arrayxs    r,   <lambda>z2TestEval.test_compound_invert_op.<locals>.<lambda>   s    1# r.   )r$   rj   rk   rl   rm   r
   r&   xfailnode
add_markerr   r   r   maprC   rn   assert_almost_equal)rp   r   r>   r@   r4   r+   r6   rq   rr   r&   
skip_theseru   rv   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	                     ~~ D)C.. D66c
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 )Nr`   r~    mid r   rd   re   ri    mid and mid rg    mid) & (mid rh   &)r$   rj   rk   rl   rm   rC   rn   r   )rp   r?   r]   r>   midhsr@   r+   r6   midex1rq   rs   rt   ex2ex3ru   rr   rv   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   ri   z rhs r   r   znlhs z ghs)rl   rm   rC   rn   r   alignr   evaluatevaluesr9   r   AttributeError)rp   r   r>   r@   r+   r6   rr   rv   ru   nlhsghsrW   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 % rhsri   r   r   zexpected % rhs%)rl   rm   rn   r   r   r   
isinstancer   r   r   itemrC   )	rp   r>   r@   r+   r6   rr   rv   ru   rW   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 // rhsr`   ri   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode're   r   r   r+   r6   )rl   rm   rn   ro   r$   rj   r   )	rp   r>   r@   r+   r6   rr   resru   rq   s	            r,   test_floor_divisionzTestEval.test_floor_division4  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**ri   z-(DataFrame.columns|numpy array) are differentre   z(lhs ** rhs) ** rhs)rC   rl   rm   r   r   complexr<   complexfloatingisnanr$   rj   AssertionErrorrn   assert_numpy_array_equalr   )
rp   r>   r@   r+   r6   rr   ru   rv   rq   middles
             r,   test_powzTestEval.test_powH  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~elbri   )	astypeboolr   r<   r   rl   rm   rn   r   )rp   r>   r+   r6   elbru   rv   s          r,   test_check_single_invert_opz$TestEval.test_check_single_invert_opb  s    	(**T""CC 	( 	( 	((DII;''CCC	(4v>>>
x00000s    ,AAc                l   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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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~lhsrD   rM   r   -couldn't find matching opcode for 'invert_dd're   ri   0ufunc 'invert' not supported for the input typesrD   rM   size)couldn't find matching opcode for 'invertrK   arL   g       @   )brA   unknown type object#bad operand type for unary ~: 'str')r   r<   rN   rP   r$   rj   rk   rl   rm   r   randintrn   assert_frame_equalrO   r9   )rp   r+   r6   r   r>   rq   expectrv   s           r,   test_frame_invertzTestEval.test_frame_invertl  s   
 	1--..YAC2#>>> < <VF;;;;< < < < < < < < < < < < < < < ECy444 < <VF;;;;< < < < < < < < < < < < < < < 	))!&)99::Y=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F!&&111 	q!,,s233fV<<<
ff--- mmm")..2C2Cc2IJJKKYz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   A77A;>A; CCC EEE5II!IJ))J-0J-c                    d}t          t          j                            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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
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   rD   r   r   re   ri   r   r   r   rK   r   r   r   )r   r<   rN   rP   r$   rj   rk   rl   rm   r   r   rn   assert_series_equalrO   r9   )rp   r+   r6   r   r>   rq   rv   r   s           r,   test_series_invertzTestEval.test_series_invert  s    RY__Q''((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&&qq&1122Y=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F"66222 RY^^A&&,--fV<<<
vv... ]]]##Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   A66A:=A:CC
CEE
EH44H8;H8JJ
Jc                   d}t          t          j                            dd                    }| }t	          j        |||          }t          j        ||           t          t          j                            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-lhsrD   rM   ri   r   r   rK   r   *couldn't find matching opcode for 'neg_bb're   )r   r<   rN   rP   rl   rm   rn   r   r   rO   r$   rj   rk   rp   r+   r6   r   r>   r   rv   rq   s           r,   test_frame_negatezTestEval.test_frame_negate  s    	1--..fV<<<
ff--- 	))!&)99::fV<<<
ff--- 	q!,,s233Y>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F!&&11111s   D55D9<D9c                   d}t          t          j                            d                    }| }t	          j        |||          }t          j        ||           t          t          j                            dd                    }| }t	          j        |||          }t          j        ||           t          t          j        	                    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   rD   ri   r   rK   r   r   re   )r   r<   rN   rP   rl   rm   rn   r   r   rO   r$   rj   rk   r   s           r,   test_series_negatezTestEval.test_series_negate  s    RY__Q''((fV<<<
vv... RY&&qq&1122fV<<<
vv... RY^^A&&,--Y>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F"6622222s   D33D7:D7r>   rD   rM   r   r   rK   c                f    d}|}t          j        |||          }t          j        ||           d S Nz+lhsri   )rl   rm   rn   r   rp   r>   r+   r6   r   r   rv   s          r,   test_frame_poszTestEval.test_frame_pos  s=     fV<<<
ff-----r.   c                f    d}|}t          j        |||          }t          j        ||           d S r   )rl   rm   rn   r   r   s          r,   test_series_poszTestEval.test_series_pos  s=     fV<<<
vv.....r.   c                   d}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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k    sJ d S )Nz%bad operand type for unary ~: 'float're   z~1.0ri   z-1.0r6   r+   g      z+1.0g      ?z~1z-1z+1rL   z~Truez~Falsez-Truez-Falser   z+Truez+Falser$   rj   r   rl   rm   )rp   r+   r6   rq   s       r,   test_scalar_unaryzTestEval.test_scalar_unary  s   5]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@@@@wwvf===FFFFwxv>>>&HHHHwwvf===FFFFwxv>>>&HHHHwwvf===FFFFwxv>>>&HHHHHHs   AA	Ac                    t          j        t          j        d          t           j                  }t          j        g dt           j                  }t          j        ||           d S )NzK[-True, True, ~True, +True,-False, False, ~False, +False,-37, 37, ~37, +37]dtype)r   Tr   rL   r   Fr   r   i%   ir   )r<   r   rl   rm   object_rn   r   )rp   rv   ru   s      r,   test_unary_in_arrayzTestEval.test_unary_in_array/  s~     G% 
 *
 
 
 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   rm   r   )rp   r   r   dfr   s        r,   test_float_comparison_bin_opz%TestEval.test_float_comparison_bin_opN  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   rL   zx.fillna(-1)r   check_nameszx.shift(1, fill_value=-1))
fill_value)
r   r<   r=   rm   r   fillnarn   r   r   shiftrp   r   rv   ru   s       r,   test_unary_in_functionzTestEval.test_unary_in_functionV  s    aBF^,--((4;;r?? 	vx_MMMM4554::aB://
vx_MMMMMMr.   rr   )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}}}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 )Nr   rL   rM   ;cannot evaluate scalar only bool ops|'BoolOp' nodes are notre   ri   )	r<   rN   rP   r   r$   rj   rk   rl   rm   )	rp   rr   r+   r6   r   r   r   r   rq   s	            r,   test_disallow_scalar_bool_opsz&TestEval.test_disallow_scalar_bool_opsd  s     )//!$$aa1ryq!,,--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   .B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 )NrL   r   ri   g      ?F)rL   )	rl   rm   r   r	   r<   r   rn   r   shape)rp   r+   r6   r   rv   s        r,   test_identicalzTestEval.test_identicalx  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 ri      rl   rm   )rp   r+   r6   exprv   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.006ri   A)g~  eA$  eAg'1  eAg  eAzA < z.4fg   eAzA > rL   rM   r  A == )
rl   rm   r<   float64r   queryemptylocrn   r   )	rp   r+   r6   r  rv   ru   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 queryre   z
class == 0lambdazlambda == 0)r   r$   rj   SyntaxErrorr
  indexnamerp   r   rq   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        d          dk    sJ t          j        d          dk    sJ t          j        d          dk    sJ d S )Nznot Truer   z	not Falser   zTrue and not Truer   r  )rp   s    r,   test_true_false_logiczTestEval.test_true_false_logic  sZ    wz""b((((w{##r))))w*++q000000r.   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   rl   rm   r:   rf   r   )rp   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_SYMSrw   CMP_OPS_SYMSr   r   r   sortedsetr   
differencer   r   r   r   r(   skip_if_windowsr   r   r   r   r   r   r   r<   rN   rP   r   rO   r   r   r   r   r   float32r	  r   r   r   r   r  r  r  r  r!   r.   r,   rT   rT   w   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)< )< )<V-< -< -<^2 2 243 3 34 [ Ibiooa++,,Ibi'''7788IbinnQ**S011	

 
. .
 
. [ F29??1%%&&F29$$QQ$//00F29>>!$$s*++	

 
/ /
 
/I I I"6 6 6> [Wrz2:&>??[Vj(%;<</ / =< @?/N N N [	
 6 6 6$ $ $B  0 0 0,
$ 
$ 
$1 1 1W W W W Wr.   rT   c                 >    t           j                                        S r1   )r<   rN   rP   )argskwargss     r,   r   r     s    BIOO-- 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)r9  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 )NrD   r   )
data_gen_fr    ri   )rn   makeCustomDataframefrl   rm   r   r   r   )rp   r+   r6   r   r7  r8  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	  rB  r-  r.   r,   r2  r2    s        [T#=#=#=>> [TBJ
#;<<[\K+EFF, , GF =< ?>
, , ,r.   r2  c                     t          t          t          j        d          |                      }t	          t          j        t          d |                     }|o|S )Nis_monotonic_increasingc                J    t          | j        j        t          j                  S r1   )
issubclassr   typer<   
datetime64r   s    r,   r   zshould_warn.<locals>.<lambda>  s    Jqw|R]$K$K r.   )anyr   operator
attrgetterr   xor)r/  not_monoonly_one_dts      r,   should_warnrO    sY    s8./HII4PPQQQHcKKTRR K ##r.   c                     e Zd Zg dZedgz   Zd Z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          ej                            de          ej                            de          ej                            de          d                                                 Z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          ej                            de          ej                            dddg          ej                            dddg          d                                                 Zej                            d
e          ej                            de          ej                            de          ej                            de          d                                                 Zd ZdS )TestAlignment)irA  r7  rA  c                    d}t          j        ddt                    }t          j        |||          }t          j        ||dz             d S )Nzdf * ~2rD   r   )r;  ri   )rn   r=  r>  rl   rm   r   )rp   r+   r6   rA  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.   lr_idx_typerr_idx_type
c_idx_typec                2   t          j        d          5  t          j        dt                     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 d d            d S # 1 swxY w Y   d S )	NTrecordalwaysrJ   r;  
r_idx_typerX     zdf + df2ri   warningscatch_warningssimplefilterRuntimeWarningrn   r=  r>  rO  r  assert_produces_warningrl   rm   r   )	rp   r+   r6   rV  rW  rX  r   df2r   s	            r,   test_basic_frame_alignmentz(TestAlignment.test_basic_frame_alignment  s    $D111 	1 	1!(N;;;'B1  B (B1  C 28SY// H/?? L L'*VFKKKCL L L L L L L L L L L L L L L gjGGG!#rCx000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s6   B
D C8DC	DC	3DDDr^  c                f   t          j        ddt          ||          }t          j        d||          }t          j        ||dk                t          t          j        j	        |j
         |j        |j                  }t          j        d||          }t          j        |||k                d S )NrJ   r]  df < 2ri   rM   )r  r  zdf < df3)rn   r=  r>  rl   rm   r   r   r<   rN   rP   r   r  r  )rp   r+   r6   r^  rX  r   r   df3s           r,   test_frame_comparisonz#TestAlignment.test_frame_comparison  s     #qZJ
 
 
 ghvf===
c26***	2"(BJWWWgj???
c28,,,,,r.   r1c1r2c2c                   t          j        d          5  t          j        dt                     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 d d            d S # 1 swxY w Y   d S )NTrZ  r\  r   rM   r]     rD   zdf + df2 + df3ri   r`  )rp   r+   r6   rl  rm  rn  ro  r   rf  rj  r   s              r,   #test_medium_complex_frame_alignmentz1TestAlignment.test_medium_complex_frame_alignment   s   
 $D111 	7 	7!(N;;;'1rb  B (1rb  C (1rb  C 28SY	:: N/?? R R'"26&QQQCR R R R R R R R R R R R R R R g.vfMMM!#rCx#~666#	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s6   B.D3C(D3(C,	,D3/C,	06D33D7:D7
index_namer  r  c                   t          j        d          5  t          j        dt                     t	          j        ddt          ||          }t          ||          }t          t          j
                            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 d d            d S # 1 swxY w Y   d S )NTrZ  r\  rJ   r]  rD   df + sri   r7  r   )ra  rb  rc  rd  rn   r=  r>  getattrr   r<   rN   rP   rO  r  re  rl   rm   addr   )rp   r+   r6   rs  r^  rX  r   r  rA  r   ru   s              r,   !test_basic_frame_series_alignmentz/TestAlignment.test_basic_frame_series_alignment8  s    $D111 	1 	1!(N;;;'B1
  B B
++Eryq))5!955A28QW-- F/?? J J'(6&IIICJ J J J J J J J J J J J J J J ghvfEEET!!Z4%7%7(.)(;(;266!999a6!#x000%	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s7   B1E"C+E"+C/	/E"2C/	3A"E""E&)E&zr_idx_type, c_idx_typerR  )r7  r7  zignore::RuntimeWarningc           
        |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                   }
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   r`   r  rR  rA  z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r!   strictrJ      r]  rD   zs + dfri   r7  )r   r   r$   r&   r   rn   r=  r>  rv  r   r<   rN   rP   rO  r  re  rd  rl   rm   rw  r   )rp   r4   r+   r6   rs  r^  rX  r!   r   r  rA  r   ru   s                r,   !test_basic_series_frame_alignmentz/TestAlignment.test_basic_series_frame_alignmentR  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??1%%uRaRy11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   =D!!D%(D%r   r3  r5  c                t   t          j        d          5  t          j        dt                     t	          j        ddt          ||          }t          ||          }t          t          j
                            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 d d            d S # 1 swxY w Y   d S )NTrZ  r\  rJ   r]  rD   zs z dfzdf z sri   r7  r   )ra  rb  rc  rd  rn   r=  r>  rv  r   r<   rN   rP   rO  r  re  rl   rm   r   )rp   r+   r6   rs  r   r^  rX  r   r  rA  r>   r@   r   r   s                 r,   test_series_frame_commutativityz-TestAlignment.test_series_frame_commutativityy  s    $D111 	0 	0!(N;;;'B1
  B B
++Eryq))5!955Ar,,,C,,,C28QW-- ?/?? C CF6BBBAC C C C C C C C C C C C C C C/?? C CF6BBBAC C C C C C C C C C C C C C C GCv>>>GCv>>>T!!jD&8&8Y&&)!Q///-	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s[   B=F-C7+F-7C;	;F->C;	?F-D?3F-?E	F-E	AF--F14F1c                Z   d}d}d|z  }	t          j        d          5  t          j        dt                     t	          j        ddg          }
t	          j        d	d
g          }t          j        ||t          ||          }t          j        |	|t          ||          }t          t                                          |          |
          }t          t          j                            |          |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 d d            d S # 1 swxY w Y   d S )Nr   rD   rM   TrZ  r\  r  r  r   rf  r]  r7  r   zdf2 + ser + dfri   )ra  rb  rc  rd  rN   choicern   r=  r>  rv  localsgetr   r<   rP   rw  rO  r  re  rl   rm   r   r   )rp   r+   r6   rl  rm  rn  ro  nm1m2rs  obj_namer   rf  r  ser	expected2ru   r   s                      r,   #test_complex_series_frame_alignmentz1TestAlignment.test_complex_series_frame_alignment  s   
 V$D111 %	1 %	1!(N;;;';<<J}dE]33H'A!r  B (A!r  C FHHLL22J??E++U2A2Y77CTzzR4ZZY&& #II #c	II#I	TzzR4ZZY&&(}}R00HH(2~HH$r>39ci:: N/?? R R'"26&QQQCR R R R R R R R R R R R R R R g.vfMMM9....!#x000K%	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1 %	1s7   FH %G	=H 	G	H G	AH  H$'H$c                   t          t          j                            dd                    }t	          t          j                            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                    }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                    }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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 )Ni  rJ   i'  r   Fru  ri   r`   rL   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<   rN   rP   r   r   rn   re  rl   rm   lenr:   messagelog10r   r   )rp   r+   r6   r   rA  seenis_python_enginewrnwrq   loggedru   s               r,   +test_performance_warning_for_poor_alignmentz9TestAlignment.test_performance_warning_for_poor_alignment  s}   rytR001129??5))**Y%DDD'-- 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 29??4(())'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ryr5112229??5))**'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ryr2..//29??5))**!X- 	$CCC',, 	'GHVF;;;;# 	'1vv{{{{!A$,''!&28A;"677J$*IJ J J 
 h	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sI   >B""B&)B&-DDD	F--F14F17A?KK
KN)r"  r#  r$  index_typeslhs_index_typesrU  r$   r&   r%  rg  rk  rr  rx  listr   filterwarningsr|  r~  r  r  r-  r.   r,   rQ  rQ    s       """K!SE)O, , , []O<<[]K88[\;771 1 87 98 =<1( [\?;;[\?;;	- 	- <; <;	- [T?33[T;//[T;//[T;//7 7 0/ 0/ 0/ 437( [\GY+?@@[\;77[\?;;1 1 <; 87 A@1. [\GY+?@@[ WWc3Z#s,,-->  [ 899- - :9	  A@-B [\;77[\?;;[\GY+?@@[TC:..0 0 /. A@ <; 8706 [T?33[T;//[T;//[T;//*1 *1 0/ 0/ 0/ 43*1X*' *' *' *' *'r.   rQ  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   rL   poprl   rm   rp   r/  r0  s      r,   rm   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 )Nr`   r{   r|   c                    g | ]}|v|	S r-  r-  )r*   r   exclude_ariths     r,   
<listcomp>z8TestOperations.test_simple_arith_ops.<locals>.<listcomp>  s.     
 
 
&& &&&r.   c              3  &   K   | ]}|d k    |V  dS )z//Nr-  )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)rz   z&argument of type 'int' is not iterablere   ri   rL   r   r   )	r   r   r'  r$   rj   r   rl   rm   rC   )rp   r+   r6   	arith_opsopsr   rr   r   r   rq   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	r@   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<  r`   ra   rd   re   r6   r$   rj   rk   rm   rp   r@   r>   r   rr   rq   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_constants1  r  r  c                B   t           j                            dddd          }t          t           j                            d                    }d}t	          j        t          |          5  |                     d||d	
           d d d            d S # 1 swxY w Y   d S )Nr   rq  rD      rJ   z?N-dimensional objects, where N > 2, are not supported with evalre   x + yr   r  r   )r<   rN   rP   r   r$   rj   rk   rm   )rp   r   r  rq   s       r,   test_4d_ndarray_failsz$TestOperations.test_4d_ndarray_failsA  s    IOOAq!Q''29??2&&''O].c::: 	< 	<IIg*:*:I;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   ,BBBc                @    |                      d          }|dk    sJ d S )N1rL   )rm   )rp   r   s     r,   test_constantzTestOperations.test_constantH  s"    IIcNNAvvvvvvr.   c                    t          t          j                            dd                    }|                     dd|i          }t          j        ||           d S )NrJ   rM   r   r  r   r<   rN   rP   rm   rn   r   )rp   r   rf  s      r,   test_single_variablez#TestOperations.test_single_variableL  sQ    ryr1--..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 )NrD   r   name 'x' is not definedre   zdf[x > 2] > 2)r   r<   rN   rP   r$   rj   	NameErrorrm   rp   r   s     r,   &test_failing_subscript_with_name_errorz5TestOperations.test_failing_subscript_with_name_errorQ  s    ryq!,,--]9,EFFF 	' 	'IIo&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   	A,,A03A0c                    t          t          j                            dd                    }|                     dd|i          }|dz   |dk             }t          j        ||           d S )NrD   r   z(df + 1)[df > 2]r   r  rL   rM   r  r   s       r,   test_lhs_expression_subscriptz,TestOperations.test_lhs_expression_subscriptV  sd    ryq!,,---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 )NrD   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<   rN   rP   r  r   r   rA   ziprn   r   rm   )rp   r   expr1expec1expr2expec2expr3expec3exprsexpecsrB   r  s               r,   test_attr_expressionz#TestOperations.test_attr_expression\  s    ryq!,,d5kkBBB$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 )
NrD   r   r  r  zdf = df2%cannot assign without a target objectre   )r   rf  r  )	r   r<   rN   rP   r  r$   rj   r9   rm   )rp   r   rf  r  rq   s        r,   test_assignment_failsz$TestOperations.test_assignment_failsi  s    ryq!,,d5kkBBB	1--..5]:S111 	@ 	@IIer#(>(>I???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   	B11B58B5c                   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 )NrD   rM   abr  invalid syntaxre   zd c = a + b	r   r<   rN   rP   r  r$   rj   r  rm   r  s     r,   %test_assignment_column_multiple_raisez4TestOperations.test_assignment_column_multiple_raiseq  s    ryq!,,d4jjAAA];.>??? 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   A;;A?A?c                   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 )NrD   rM   r  r  z5left hand side of an assignment must be a single namere   zd,c = a + br  r  s      r,   %test_assignment_column_invalid_assignz4TestOperations.test_assignment_column_invalid_assignw  s    ryq!,,d4jjAAAE];c222 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   A==BBc                   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 )NrD   rM   r  r  zcannot assign to function callre   zTimestamp("20131001") = a + br  r  s      r,   3test_assignment_column_invalid_assign_function_callzBTestOperations.test_assignment_column_invalid_assign_function_call~  s    ryq!,,d4jjAAA.];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                &   t          t          j                            dd          t	          d                    }|                                }|d         |d         z   |d<   |                    dd	           t          j        ||           d S )
NrD   rM   r  r  r   r   	a = a + bTinplace	r   r<   rN   rP   r  copyrm   rn   r   rp   r   ru   s      r,   &test_assignment_single_assign_existingz5TestOperations.test_assignment_single_assign_existing  |    ryq!,,d4jjAAA7799 5
T***
b(+++++r.   c                &   t          t          j                            dd          t	          d                    }|                                }|d         |d         z   |d<   |                    dd	
           t          j        ||           d S )NrD   rM   r  r  r   r   rA   	c = a + bTr  r  r  s      r,   !test_assignment_single_assign_newz0TestOperations.test_assignment_single_assign_new  r  r.   c                F   t          t          j                            dd          t	          d                    }|                                }d}|                    dd           |                                }d|d	         z   |d
<   t          j        ||           d S )NrD   rM   r  r  rL   z	a = 1 + bTr  r   r   r  )rp   r   r   ru   s       r,   +test_assignment_single_assign_local_overlapz:TestOperations.test_assignment_single_assign_local_overlap  s    ryq!,,d4jjAAAWWYY
T***7799HSM)
b(+++++r.   c                @   t          t          j                            dd          t	          d                    }d}|j                                        }|                    dd           ||j        z   }t          j
        ||j        d	
           |j        J d S )NrD   rM   r  r  rL   r  Tr  Fr   )r   r<   rN   rP   r  r   r  rm   r   rn   r   r  )rp   r   r   old_arv   s        r,   "test_assignment_single_assign_namez1TestOperations.test_assignment_single_assign_name  s    ryq!,,d4jjAAA		
T***
vrt????{"""""r.   c                B   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 )NrD   rM   r  r  r  Tr  z#can only assign a single expressionre   z	c = a = b)	r   r<   rN   rP   r  rm   r$   rj   r  r  s      r,   test_assignment_multiple_raisesz.TestOperations.test_assignment_multiple_raises  s    ryq!,,d4jjAAA
T***3];c222 	! 	!GGK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   1BBBc                .   t          t          j                            dd          t	          d                    }|                     dd|i|d           |                                }|d	         |d
         z   |d<   t          j        ||           d S )NrD   rM   r  r  zc = df.a + df.br   T)r   targetr  r   r   rA   	r   r<   rN   rP   r  rm   r  rn   r   r  s      r,   test_assignment_explicitz'TestOperations.test_assignment_explicit  s    ryq!,,d4jjAAA		#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   rm   r   rn   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                .   t          t          j                            dd          t	          d                    }|                    dd          }|J |                                }|d         |d	         z   |d
<   t          j        ||           d S )NrD   rM   r  r  r  Fr  r   r   rA   r  )rp   r   actualru   s       r,   test_assignment_not_inplacez*TestOperations.test_assignment_not_inplace  s     ryq!,,d4jjAAA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rL   rM   r   rq  rD   r  r  r   r   rA   d$
        c = a + b
        d = c + bTr  rL   rM   rB   $
        a = a - 1
        e = a + 2z@Multi-line expressions are only valid if all expressions containre   z(
            a = b + 2
            b - 2F)r   r  rm   rn   r   r$   rj   r9   )rp   r   ru   answerrq   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   rA   r  r  Fr  rL   rM   rB   r  r   r  rm   rn   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  r{  r   rA   r  z?
        c = a * @local_var
        d = c + @local_var
        Tr  r  )rp   r   ru   	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 r1   r-  r  s     r,   
local_funczUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_func!      Hr.   r   rL   r{  rA   r  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr  r  rp   r   r  ru   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 r1   r-  r  s     r,   r  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_func5  r  r.   r   r{  rL   )r   r   rA   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_kwargs1  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  re   za = 1)r   r  r$   rj   r9   r
  rn   r   )rp   r   df_origrq   s       r,   test_assignment_in_queryz'TestOperations.test_assignment_in_queryE  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   rM   za == 2Tr  r   	a = 1 + 2r  r  )r   r  r
  rn   r   rm   assert_dict_equalr  s      r,   test_query_inplacez!TestOperations.test_query_inplaceN  s    YYYYYY77887799HSMQ./
4(((
h+++8		+b$	777
R*****r.   invalid_targetrL   catrM   rL   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  re   Tr  r  F)r$   rj   r9   rm   hasattrrp   r  rq   
expressions       r,   test_cannot_item_assignz&TestOperations.test_cannot_item_assign\  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%)rL   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  re   Fr  )r$   rj   r9   rm   r"  s       r,   test_cannot_copy_itemz$TestOperations.test_cannot_copy_itemh  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 assignmentre   T)rm   r$   rj   r9   )rp   r  r#  rq   s       r,   test_inplace_no_assignmentz)TestOperations.test_inplace_no_assignmentp  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 )NrM   prR  r;  rX  r^  ri  r   r  rn   r=  r>  rm   r   )rp   r   rB   rr   s        r,   *test_basic_period_index_boolean_expressionz9TestOperations.test_basic_period_index_boolean_expressionz  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 )	NrM   r,  rR  r-  zdf[df < 2 + 3]r   r  rD   r.  rp   r   r/  rB   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 )NrM   r,  rR  r-  zdf[df[df < 2] < 2] + df * 2r   r  r.  r2  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 )NrD   r   z1/1/2012)periodsdates1zdf.dates1 < 20130101r   r   20130101Fr   )	r   r<   rN   rP   r   rm   r8  rn   r   )rp   r+   r6   r   r   r  s         r,   test_date_booleanz TestOperations.test_date_boolean  s    ryq!,,--!*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 )Nr`   z1 in [1, 2]ri   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 implementedre   z[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))rl   rm   r$   rj   rk   )rp   r+   r6   r   rq   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 )NrL   z * !aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaari   )r   rl   rm   )rp   r+   r6   r   r   ru   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                P   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 )
NrD   r   r`   rd   not'Not' nodes are not implementedre   r   )r   r6   r+   	r   r<   rN   rP   r$   rj   rk   rl   rm   )rp   r   r+   r6   r   rq   s         r,   test_fails_and_or_notz$TestOperations.test_fails_and_or_not  s    ryq!,,--X6C}}72#>>>   $bz!!	                     G ":	     s   A??BBcharr   r   c                D   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 )	NrD   r   z(df + 2)[df > 1] > 0 z	 (df > 0)r`   z$cannot evaluate scalar only bool opsre   r   rC  )rp   rE  r+   r6   r   rr   rq   s          r,   test_fails_ampersand_pipez(TestOperations.test_fails_ampersand_pipe  s    ryq!,,--4T444X8C2#>>> : :6&9999: : : : : : : : : : : : : : : : : : GBvf555555s   A<<B B N)3r"  r#  r$  rm   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*  r0  r3  r5  r:  r<  r?  rD  rG  r-  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,   rm   zTestMath.eval  r  r.   z&Unary ops only implemented for numexprr    fnc                h   t          dt          j                            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   rJ   z(a)ignoreallFr   )
r   r<   rN   rP   r   rm   errstaterv  rn   r   )rp   rK  r   r   r   gotr   s          r,   test_unary_functionszTestMath.test_unary_functions  s    
 RY__R00122Dzzziioo[X&&& 	( 	($WR__Q''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
sF>>>>>>s   %BBBc                   t          t          j                            d          t          j                            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 )NrJ   r  z(a, b)rM  rN  Fr   )r   r<   rN   rP   r   r   rm   rP  rv  rn   r   )rp   rK  r   r   r   r   rQ  r   s           r,   test_binary_functionszTestMath.test_binary_functions  s    RY__R00ryr7J7JKKLLDD}}}iioo[X&&& 	+ 	+$WR__Q**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
sF>>>>>>s   
 B66B:=B:c                n   t          t          j                            d          t          j                            d          d          }|                    d||d           |j        }t          j        t          j        |j                  |j	                  }t          j        ||d           d S )NrJ   r  ze = arctan2(sin(a), b)Tr+   r6   r  Fr   )r   r<   rN   rP   rm   rB   arctan2sinr   r   rn   r   rp   r+   r6   r   rQ  r   s         r,   test_df_use_casezTestMath.test_df_use_case  s    RY__R00ryr7J7JKKLL
$	 	 	
 	
 	
 dBF24LL"$//
sF>>>>>>r.   c                N   t          t          j                            d          t          j                            d          d          }|                    d||d           |j        }t          j        |j        |j        z             }t          j
        ||d           d S )NrJ   r  ze = sin(a + b)TrV  Fr   )r   r<   rN   rP   rm   rB   rX  r   r   rn   r   rY  s         r,    test_df_arithmetic_subexpressionz)TestMath.test_df_arithmetic_subexpression)  s    RY__R00ryr7J7JKKLL
 MMMdrt$$
sF>>>>>>r.   zdtype, expect_dtyper"   c                   t          dt          j                            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   rJ   z
b = sin(a)TrV  Fr   )r   r<   rN   rP   r   r   r   rm   r   rX  rn   r   )rp   r   expect_dtyper+   r6   r   rQ  r   s           r,   test_result_typeszTestMath.test_result_types0  s      RY__R0077>>?@@tzU""""
VFDIIId|sy((((sy((((
sF>>>>>>r.   c                    t          dt          j                            d          i          }d}t	          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rJ   z#"mysin" is not a supported functionre   zmysin(a)ri   )r   r<   rN   rP   r$   rj   r9   rm   rp   r+   r6   r   rq   s        r,   test_undefined_funczTestMath.test_undefined_funcI  s    RY__R001223]:S111 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>   A22A69A6c                    t          dt          j                            d          i          }d}t	          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rJ   z1Function "sin" does not support keyword argumentsre   zsin(x=a)ri   )r   r<   rN   rP   r$   rj   r   rm   ra  s        r,   test_keyword_argzTestMath.test_keyword_argP  s    RY__R00122A]9C000 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>rc  N)r"  r#  r$  rm   r$   r&   r'   r   r%  r   rR  r   rT  rZ  r\  r<   int32r	  int64r,  r%   
complex128r(   r+  r_  rb  re  r-  r.   r,   rI  rI    sp       ( ( ( [&N    [T?33? ? 43 ? [T#344	? 	? 54	?
? 
? 
?? ? ? [Xrz"Xrz"Z$Z$FLR=OPPP	
	 	? ?	 	?> > >> > > > >r.   rI  rJ   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 * 2rM   ri   )rn   r   _var_srl   rm   )rp   r+   r6   rB   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 )NrL   x + 1r   lcls)r  r  rl   rm   r  )rp   r+   r6   r   rq  lcls2s         r,   test_no_new_localszTestScope.test_no_new_localsb  se    xx}}
DGGGG		&u}}}}}}r.   c                    d}t                                                      }t          j        d||           t                                                      }||k    sJ d S )NrL   rp  ri   )globalsr  rl   rm   )rp   r+   r6   r   gblsgbls2s         r,   test_no_new_globalszTestScope.test_no_new_globalsj  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 )NrL   r  re   rp  r   r$   rj   r   rl   rm   )rp   r+   r6   r   rq   s        r,   test_empty_localszTestScope.test_empty_localsq  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 definedrl  re   )r+   r6   global_dictrz  )rp   r+   r6   rq   rB   s        r,   test_empty_globalszTestScope.test_empty_globalsx  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$  rn  rs  rx  r{  r~  r-  r.   r,   rj  rj  [  sg        
 
 
    J J JE E E E Er.   rj  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' passedre   r  rL   rM   r  asdf)r   r+   r$   rj   KeyErrorrl   rm   rq   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_numexprru   ))Tr   )Fr`   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  rl   option_context)r  ru   r  rv   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)rL   rM   r   rq  rD   r  )r  Bz
A.isnull()rD   r  rq  )r  )rl   r  r   r
  rn   r   )r   rv   ru   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' passedre   r  rL   rM   r  r  )r   r6   r  r  s    r,   test_invalid_parserr    r  r  )r`   r   r   z dict[str, type[BaseExprVisitor]]_parsersr+   r6   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 )Nrp  znodes are not implementedre   )r  unsupported_nodesr$   rj   rk   rv  )r+   r6   VisitorClassinstr  rq   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  re   ri   r$   rj   r  rl   rm   )r+   r6   rB   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 definedre   ri   )r$   rj   r  rl   rm   )r+   r6   rB   rq   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rL   rM   r   zThe '@' prefix is onlyre   ri   zThe '@' prefix is notr  )r+   r6   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 .+re   zsin + dotted_lineri   )r$   rj   r   rl   rm   )r+   r6   rX  dotted_linerq   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 .+re   r)  )	resolversr+   r6   r   )r+   r6   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 stringre    ri   r$   rj   r9   rl   rm   ri   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 allowedre   z1 + 1; 2 + 2ri   r  ri   s     r,   $test_more_than_one_expression_raisesr    s    	{*O	P	P	P > >
vf====> > > > > > > > > > > > > > > > > >r  cmpra   r>   r@   c                   t           d t          t          j        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                 @    t           j                            d          S )NrJ   )r<   rN   r   r-  r.   r,   r   z0test_bool_ops_fails_on_scalars.<locals>.<lambda>  s    	))"-- r.   r~   r   r   r   rg   r   rh   r   re   ri   )
intrG   r<   rN   rP   r$   rj   rk   rl   rm   )r>   r  r@   r+   r6   genr   r   r   r   rr   rq   s               r,   test_bool_ops_fails_on_scalarsr    s6    --ubio
FC
#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   B44B8	;B8	otherz'x'z...c                    t          dg di          }|                    d|            }t          g dd          }t          rd |_        t          j        ||           d S )Nr  )r   r   rA   r  )FFFr  )r   rm   r   r   r  rn   r   )r  r   rv   ru   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 + 1ri   )r<   infrl   rm   )r+   r6   rA  ru   rv   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 )NrD   rM   r   r  `z` > 5)r+   )r   r<   rN   rP   r
  rn   r   )r+   r  r   ru   query_stringrv   s         r,   test_query_tokenr    sz     
29??1a((63-	@	@	@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   rJ   rL   r_  r  countr  z
~(cat > 0)ri   r`   rB  re   znot (cat > 0))r   r  r
  rn   r   r$   rj   rk   )r+   r6   r   ru   rv   rq   s         r,   test_negate_lt_eq_ler  )  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                t   |dv rA| j                             t          j                            t
          d|                      t          t          j        	                    ddd          |dg	          }|||         d
k             }|
                    | d          }t          j        ||           d S )N)TrueFalser  Infz+GH 47859 DataFrame eval not supported with )rj   r!   r   d   )rJ   rM   r   col1r  r  z>6)r   r   r$   r&   r   r  r   r<   rN   r   r
  rn   r   )r4   r  r   ru   rv   s        r,    test_eval_no_support_column_namer  9  s     000KMVMM   	
 	
 	
 
29$$Q'$::VVDT	U	U	UB"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   )r{     	   )r  r  Cr  z	A = B + CTr  )r        r  )r   rm   rn   r   r   r   )using_copy_on_writer   result_viewr  ru   s        r,   test_set_inplacer  N  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valuerL   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 typere   z2+2r  r  )rp   r  rq   s      r,   test_validate_bool_argsz$TestValidate.test_validate_bool_argsb  s    H]:S111 	* 	*GE5))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AA	AN)r"  r#  r$  r$   r&   r%  r  r-  r.   r,   r  r  a  sN        [Wq&)))S&ABB* * CB* * *r.   r  )f
__future__r   	functoolsr   	itertoolsr   rJ  rN   ra  numpyr<   r$   pandas.errorsr   r   r   pandas.util._test_decoratorsutil_test_decoratorsr(   pandas.core.dtypes.commonr	   r
   r   r   r   rl   r   r   r   pandas._testing_testingrn   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+   PARSERSr6   rC   r  ranger>   r@   r   rT   r>  r2  rO  rQ  r  rI  rP   rm  rj  r)   r  r&   r%  r  r  r  PyTablesExprVisitorr  __annotations__r  r  r  r  r  r  r  r  r  rG   r  r  r  r  r  keysr  r  r  r-  r.   r,   <module>r     s   " " " " " " "                             
 * ) ) ) ) ) ) ) )                        
              4 3 3 3 3 3         
                     : 9 9 9 9 9         !   t|$$$  %$   4a>>EEE   	  
U	W U	W U	W U	W U	W U	W U	W U	Wp .-, , , , , , , ,($ $ $@' @' @' @' @' @' @' @'NB6 B6 B6 B6 B6 B6 B6 B6JW> W> W> W> W> W> W> W>t 
		"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.   