
    Pid                      U d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZ 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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/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:  edd          Z; e	j<        d e*D                       d             Z= e	j<        e'j>                  d             Z?d Z@ e	j<         eA eBd                    g d          d             ZCeCZDeCZEe	j<        d             ZF G d d          ZG G d  d!          ZHd" ZI G d# d$          ZJ G d% d&          ZK G d' d(          ZLejM        N                    d)          O                    d*          ZP G d+ d,          ZQ ejR        d          d-             ZS ejR        d          e	jT        U                    d.d/          d0                         ZV ejR        d          d1             ZW ejR        d          d2             ZXe.e(jY        e-d3ZZd4e[d5<   e	jT        U                    d6e*          e	jT        U                    d7eZ          d8                         Z\d9 Z]d: Z^e	jT        U                    d;g d<          d=             Z_d> Z`d? Zad@ ZbdA Zce	jT        U                    dBdC          e	jT        U                    dDedeef          e	jT        U                    dEedeef          dF                                     Zfe	jT        U                    dGdHdIg          dJ             ZgdK Zhe	jT        U                    dLdMdNg          dO             ZidP Zje	jT        U                    dL e8jk                              dQ             ZldR Zme	jT        U                    dSdTdUg dVdWg          dX             Zn ejR        d          dY             ZodZ ZpdS )[    )annotations)reduce)productN)PY312)import_optional_dependency)NumExprClobberingErrorPerformanceWarningUndefinedVariableError)is_boolis_floatis_list_like	is_scalar)	DataFrameIndexSeries
date_rangeperiod_rangetimedelta_range)exprpytables)ENGINES)BaseExprVisitorPandasExprVisitorPythonExprVisitor)NUMEXPR_INSTALLEDUSE_NUMEXPR)ARITH_OPS_SYMS_binary_math_ops_binary_ops_dict_unary_math_ops)DEFAULT_GLOBALS)Versionnumexprignore)errorsc              #     K   | ]i}t          j        |t           j                            |d k    ot           dt           dt
                     t          j        d           g          V  jdS )r#   znumexpr enabled->z, installed->reasonmarksN)pytestparammarkskipifr   r   td
skip_if_no).0engines     v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/tests/computation/test_eval.py	<genexpr>r4   ?   s          	""i';O6{ 6 6"36 6 #  
 i((
	
 
	
 
	
         )paramsc                    | j         S Nr,   requests    r3   r2   r2   >   s    " =r5   c                    | j         S r8   r9   r:   s    r3   parserr=   R   s
    =r5   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rhsr2   ces         r3   _eval_single_binrJ   W   s    Av# 	1S#;; 	 	 	1vv  H   v	 1S#;;s    - 
A0-A+$A0*A++A0   )r   r   	SeriesNaNDataFrameNaNfloat)r6   idsc                F   t           j                            d          }| j        dk    r"t	          |                    d                    S | j        dk    r"t          |                    d                    S | j        dk    r(t          ddt           j        t           j        dg          S | j        dk    r7t	          |                    d                    }t           j        ||dk    <   |S | j        dk    r|                                S t          | j                   )	N   r   )
   rK      rK            ?   )	rC   randomdefault_rngr,   r   standard_normalr   rD   r@   )r;   rngnan_df1s      r3   rE   rE   f   s   
 )


"
"C},,W55666	!		c))!,,---	!		q!RVRVQ/000	!		C//8899!##	!		""$$$GM+,,,r5   c                      d d d d d d dS )Nc                \    t          t          j        |           t          j                  S Ndtype)r   rC   arangeint64ns    r3   <lambda>zidx_func_dict.<locals>.<lambda>   s    uRYq\\::: r5   c                \    t          t          j        |           t          j                  S r^   )r   rC   ra   float64rc   s    r3   re   zidx_func_dict.<locals>.<lambda>   s    uRYq\\<<< r5   c                V    t          d t          dd| z             D                       S )Nc                6    g | ]}| d t          |           S )_)chr)r1   is     r3   
<listcomp>z3idx_func_dict.<locals>.<lambda>.<locals>.<listcomp>   s(    III!ooSVVooIIIr5   a   )r   rangerc   s    r3   re   zidx_func_dict.<locals>.<lambda>   s+    uIIuRa7H7HIIIJJ r5   c                $    t          d|           S )N
2020-01-01periods)r   rc   s    r3   re   zidx_func_dict.<locals>.<lambda>   s    
<;;; r5   c                $    t          d|           S )Nz1 dayrr   )r   rc   s    r3   re   zidx_func_dict.<locals>.<lambda>   s    ;;; r5   c                &    t          d| d          S )Nrq   D)rs   freq)r   rc   s    r3   re   zidx_func_dict.<locals>.<lambda>   s    |L!#FFF r5   )rl   fsdtr/   p r|   r5   r3   idx_func_dictr}      s7     ;:<<JJ;;;;FF  r5   c            	      @   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                              h d                              d             Zd Zd Zej        d             Zd Zd Zd Zd Zd Zej                            dej                            d                              d          ej                            d                               dd            ej!        g d!ej"        "          g          d#             Z#ej                            dej                            d                              d          ej                            d                               dd            ej!        g d!ej"        "          g          d$             Z$d% Z%d& Z&ej                            d'd(d)g          d*             Z'd+ Z(ej                            d,d-          d.             Z)d/ Z*d0 Z+d1 Z,d2 Z-d3 Z.d4 Z/d5 Z0d6 Z1d7S )8TestEvalrF   )z!=z==z<=z>=<>)neeqlegeltgt)rO   cmp2r   r   r   r   binopc                   |dk    r^|dv rZd}d| d| d| d}	t          j        t          |          5  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(lhs z rhs) z (lhs  rhs)matchr2   r=   )r+   raisesNotImplementedErrorpdevalrJ   tmassert_equal)selfrF   r   r   rE   rG   r2   r=   msgexlhs_newrhs_newexpectedresults                 r3   test_complex_cmp_opszTestEval.test_complex_cmp_ops   sL    X%="8"86C===U==$===B2#>>> : :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}d| d}t          j        t          |          5  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 implementedlhs  rhsr   r   |zvonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')bool(`|')z'argument of type 'bool' is not iterablerE   rG   r2   r=   
local_dict)r+   r   r   r   r   joinr   	TypeErrorrJ   r   r   )
r   r   rE   rG   r2   r=   r   r   r   r   s
             r3   test_simple_cmp_opszTestEval.test_simple_cmp_ops   s   AgAgX&,<"<"<:C$$$$B2#>>> : :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}d| d}t          j        t          |          5  t          j        |||           d d d            n# 1 swxY w Y   d S t          |          rTt          |          sE|dv rA|dk    r;|dk    r5t           j                            d	
          }	|                    |	           ddg}
d| d}d	                    ddg          }t          |          rU||
v rQt          j        t          |          5  t          j        |||||d           d d d            d S # 1 swxY w Y   d S t          |          r t          |          rd ||fD             \  }}t          ||||          }t          |          r| }n| }t          j        |||          }t          j        ||           d S )Nr   r   r   z~(lhs r   r   r   pandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectr'   r   r   r   zwonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')float(`|')z(argument of type 'float' is not iterabler   r   c              3  @   K   | ]}t          j        |g          V  d S r8   )rC   arrayr1   xs     r3   r4   z3TestEval.test_compound_invert_op.<locals>.<genexpr>   s,      >>aBHaSMM>>>>>>r5   )r+   r   r   r   r   r   r-   xfailapplymarkerr   r   r   rJ   r   assert_almost_equal)r   r   rE   rG   r;   r2   r=   r   r   r-   
skip_theser   r   s                r3   test_compound_invert_opz TestEval.test_compound_invert_op   s   X"(8"8"8:C#"###B2#>>> : :6&9999: : : : : : : : : : : : : : :F SMM	&SMM	& &&&(""("";$$? %  D %%%H%
bhh# ;	
 
 S>> 	5bJ..y444  !!'*377	                     ~~ ?)C.. ?>>C:>>>S'Rf==H"" %'<$9WRv>>>F"8V44444s#   AAAD::D>D>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   r   r   r    mid and mid r    mid) & (mid r   &)r+   r   r   r   r   rJ   r   r   )r   rF   r   rE   midhsrG   r2   r=   midex1r   r   r   ex2ex3r   r   r   s                     r3   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arith1>   %**//c                .   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   r   z rhs r#   r   znlhs z ghs)r   r   rJ   r   r   alignr#   evaluatevaluesr@   r   AttributeError)r   r   rE   rG   r2   r=   r   r   r   nlhsghsr   s               r3   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 % rhsr   r#   r   zexpected % rhsr   )r   r   r   r   r#   r   
isinstancer   r   r   itemrJ   )	r   rE   rG   r2   r=   r   r   r   r   s	            r3   test_moduluszTestEval.test_modulus6  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4r5   c                ~   d}|dk    s0|dk    r]t          t          j                  t          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   r#   2.13.0r   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'r   r   r   r2   r=   )
r"   r#   __version__r   r   r   r   r+   r   r   )	r   rE   rG   r2   r=   r   resr   r   s	            r3   test_floor_divisionzTestEval.test_floor_divisionH  s#   XiGG,?$@$@GHDUDU$U$U'"VF;;;CczHOC*****!  y444  '*377!!	                    s   	B22B69B6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 ** rhsr   r   z-(DataFrame.columns|numpy array) are differentr   z(lhs ** rhs) ** rhs)rJ   r   r   r   r   complexrC   complexfloatingisnanr+   r   AssertionErrorr   assert_numpy_array_equalr   )
r   rE   rG   r2   r=   r   r   r   r   middles
             r3   test_powzTestEval.test_pow^  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~elbr   )	astypeboolr   rC   r   r   r   r   r   )r   rE   r2   r=   elbr   r   s          r3   test_check_single_invert_opz$TestEval.test_check_single_invert_opx  s    	(**T""CC 	( 	( 	((DII;''CCC	(4v>>>
x00000s    ,AAc                T   d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	d
                    }|dk    rwt          t          j                  t          d          k     rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g dt          j                            d                              d          dk    d          }|dk    rMt          j        t"          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )N~lhsrQ   rK   rQ   r#   -couldn't find matching opcode for 'invert_dd'r   r   0ufunc 'invert' not supported for the input typesrK   sizer   )couldn't find matching opcode for 'invertrU   arS   g       @rT   )brH   unknown type object#bad operand type for unary ~: 'str')r   rC   rW   rX   rY   r+   r   r   r   r   r   integersr"   r#   r   r   assert_frame_equalr@   )r   r2   r=   r   rE   r   expectr   s           r3   test_frame_invertzTestEval.test_frame_invert  s?   
 	--a00@@HHIIYAC2#>>> < <VF;;;;< < < < < < < < < < < < < < < ECy444 < <VF;;;;< < < < < < < < < < < < < < < 	--a0099!&9IIJJY77+>#?#?'(BSBS#S#S=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F!&&111 	--a00@@HH3NOOfV<<<
ff--- --bi&;&;A&>&>&N&Nq&Q&QTW&WXX
 
 Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCC/FFF)KKK8LL!$L!c                   d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||          }d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              dd	                    }|dk    rwt          t          j                  t          d
          k     rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g d          }|dk    rMt          j        t"          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )Nr   rQ   rK   r#   r   r   r   r   r   r   r   rU   r   r   r   )r   rC   rW   rX   rY   r+   r   r   r   r   r   r   r"   r#   r   r   assert_series_equalr@   )r   r2   r=   r   rE   r   r   r   s           r3   test_series_invertzTestEval.test_series_invert  s    RY**1--==a@@AAYAC2#>>> E EfVDDDE E E E E E E E E E E E E E E ECy444 < <VF;;;;< < < < < < < < < < < < < < < RY**1--66qq6AABBY77+>#?#?'(BSBS#S#S=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F"66222 RY**1--==a@@3FGGfV<<<
vv... ]]]##Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCC/FFF2JJJK&&K*-K*c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd	}t          j        t          |
          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )N-lhsrQ   r   r   rK   r   rU   r#   *couldn't find matching opcode for 'neg_bb'r   )r   rC   rW   rX   rY   r   r   r   r   r   r+   r   r   r   r2   r=   r   rE   r   r   r   s           r3   test_frame_negatezTestEval.test_frame_negate  s    	--a00@@HHIIfV<<<
ff--- 	--a0099!&9IIJJfV<<<
ff--- 	--a00@@HH3NOOY>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F!&&11111   E,,E03E0c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd}t          j        t          |	          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )
Nr  rQ   rK   r   r   rU   r#   r  r   )r   rC   rW   rX   rY   r   r   r   r   r   r+   r   r   r  s           r3   test_series_negatezTestEval.test_series_negate  s    RY**1--==a@@AAfV<<<
vv... RY**1--66qq6AABBfV<<<
vv... RY**1--==a@@3FGGY>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F"6622222r  rE   rQ   r   rK   r   )TFTFTr_   c                    t          |          }d}|}t          j        |||          }t          j        ||           d S Nz+lhsr   )r   r   r   r   r   r   rE   r2   r=   r   r   r   s          r3   test_frame_poszTestEval.test_frame_pos  sH     nnfV<<<
ff-----r5   c                    t          |          }d}|}t          j        |||          }t          j        ||           d S r	  r   r   r   r   r   r
  s          r3   test_series_poszTestEval.test_series_pos%  sH     SkkfV<<<
vv.....r5   c                   d}d }t           r|dk    r|dk    st          }t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        d||          d	k    sJ t          j        d
||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        |dd          5  t          j        d||          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        |dd          5  t          j        d||          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ d S )Nz%bad operand type for unary ~: 'float'r#   r   r   z~1.0r   z-1.0r=   r2   g      z+1.0g      ?z~1z-1z+1rS   zBitwise inversionF)r   check_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   DeprecationWarningr+   r   r   r   r   r   assert_produces_warning)r   r2   r=   r   warns        r3   test_scalar_unaryzTestEval.test_scalar_unary8  sF   5 	&&I--&H2D2D%D]9C000 	: 	:GF6&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: wvfV<<<DDDDwvfV<<<DDDDwtF6:::b@@@@wtF6:::b@@@@wtF6:::b@@@@'+e
 
 
 	K 	K 776&AAAUJJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K '+e
 
 
 	M 	M 78F6BBBfLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M wwvf===FFFFwxv>>>&HHHHwwvf===FFFFwxv>>>&HHHHHHs5   AA"%A"D<<E E F		FFc                    t          j        t          j        d          t           j                  }t          j        g dt           j                  }t          j        ||           d S )Nz>[-True, True, +True, -False, False, +False, -37, 37, ~37, +37]r_   )
r  TrS   r   Fr   i%   ir  )rC   r   r   r   object_r   r   )r   r   r   s      r3   test_unary_in_arrayzTestEval.test_unary_in_arrayR  sv     GTUU*
 
 
 8   *
 
 
 	#FH55555r5   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   rC   r   r   r   )r   float_numpy_dtyper   dfr   s        r3   test_float_comparison_bin_opz%TestEval.test_float_comparison_bin_opk  s\     RXqc1BCCCDEEggdmmzRXug........r5   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   rS   zx.fillna(-1)r  check_nameszx.shift(1, fill_value=-1))
fill_value)
r   rC   rD   r   r   fillnar   r   r   shiftr   r  r   r   s       r3   test_unary_in_functionzTestEval.test_unary_in_functionr  s    aBF^,--((4;;r?? 	vx_MMMM4554::aB://
vx_MMMMMMr5   r   )z1 or 2z1 and 2za and bza or bz1 or 2 and (3 + 2) > 3z2 * x > 2 or 1 and 2z2 * df > 3 and 1 or ac                   t           j                            d                              d          dd}}}t	          t           j                            d                              d                    }d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )NrQ   rT   rS   rT   rQ   ;cannot evaluate scalar only bool ops|'BoolOp' nodes are notr   r   )
rC   rW   rX   rY   r   r+   r   r   r   r   )	r   r   r2   r=   r   r   r   r  r   s	            r3   test_disallow_scalar_bool_opsz&TestEval.test_disallow_scalar_bool_ops  s     )''**::1==q!a1ry,,Q//??GGHHK].c::: 	6 	6GBvf5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   B88B<?B<c                   d}t          j        d||          }|dk    sJ t          |          sJ d}t          j        d||          }|dk    sJ t          |          sJ d}t          j        d||          }|rJ t          |          sJ t          |          sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ d S )NrS   r   r   g      ?F)rS   )	r   r   r   r   rC   r   r   r   shape)r   r2   r=   r   r   s        r3   test_identicalzTestEval.test_identical  s   VF;;;{{{{     VF;;;}}}}     VF;;;zv     HaSMMVF;;;
#FBHaSMM:::|t####HcUOOVF;;;
#FBHcUOO<<<|t####HeWVF;;;
#FBHeW,=,=>>>|t######r5   c                H    d}t          j        |||          }|dk    sJ d S )Nz1 + 2 *         5 - 1 + 2 r      r   r   )r   r2   r=   expr   s        r3   test_line_continuationzTestEval.test_line_continuation  s0    VF;;;||||||r5   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.006r   A)g~  eA$  eAg'1  eAg  eAzA < z.4fg   eAzA > rS   rQ   r6  A == )
r   r   rC   rg   r   queryemptylocr   r   )	r   r2   r=   r2  r   r   r  cutoffexacts	            r3   test_float_truncationzTestEval.test_float_truncation  s    VF;;;:c??!!!!PPPQRR ----..|| ----..61a&!!!)$
h///-%---..61#qqq&>
h/////r5   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 queryr   z
class == 0lambdazlambda == 0)r   r+   r   SyntaxErrorr8  indexnamer   r  r   s      r3   test_disallow_python_keywordsz&TestEval.test_disallow_python_keywords  sA   			{,C,C,CDDDD];c222 	# 	#HH\"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# [[ ];c222 	$ 	$HH]###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s#   AAAB99B= B=c                   t          j        t          t          d          5  t	          j        d          dk    sJ t	          j        d          dk    sJ t	          j        d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	NF)r  znot Truer  z	not Falser  zTrue and not Truer   )r   maybe_produces_warningr  r   r   r   )r   s    r3   test_true_false_logiczTestEval.test_true_false_logic  s     &
 
 
 	5 	5 7:&&",,,,7;''2----7.//144444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AA??BBc                6   t          ddi          }t          j        |j                            d          j                   sJ t          j        |j                            d          j        o|j                            d          j                   sJ d S )Nr   hello)r   r   r   rA   r   r   )r   events     r3   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Vr5   c                    t          g dd                                          }|                    d||          }t          g dd          }t          j        ||           d S )N)rQ         r   rG  za + ar   )rV      8   )r   to_framer   r   r   )r   r2   r=   r  r   r   s         r3   test_eval_keep_namezTestEval.test_eval_keep_name  sj    KKKc***3355gggfVg<<+++C000
x-----r5   c                    t          dgd          }t          j        d||          }t          j        ||           d S )N*   series_namerT  zvariable_name + 0r   r  )r   r2   r=   variable_namer   s        r3   test_eval_unmatching_namesz#TestEval.test_eval_unmatching_names  sF    t-888g)&HHH
}c22222r5   N)2__name__
__module____qualname__r+   r-   parametrizer   BOOL_OPS_SYMSr   CMP_OPS_SYMSr   r   r   sortedsetr   
differencer   r   r   r/   skip_if_windowsr   r   r   r   r  r  rC   rW   rX   rY   r   r   bool_r  r  r  r  r  r'  r+  r.  r3  r=  rI  rL  rP  rX  r]  r|   r5   r3   r   r      s       [***000   
 [Vc3ZdD\BB[Wd&899* * :9 CB *  [Xt'899. . :9.B [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78I8I8IJJKK 9 9 9@5 5 5$  , 5 5 521 1 1+< +< +<Z-< -< -<^2 2 243 3 34 [ I!!!$$44V<<I!!!$$--af-==BH555RXFFF	

 
. .
 
. [ I!!!$$44Q77I!!!$$--aa-88BH555RXFFF	

 
/ /
 
/I I I46 6 62 [Vj(%;<</ / =</N N N [	
 6 6 6$ $ $B  0 0 0,
$ 
$ 
$5 5 5W W W. . .3 3 3 3 3r5   r   c                      e Zd Zej                            dg d          ej                            dddg          d                         ZdS )TestTypeCastingr   )+-*r   /
left_right)r  3)rp  r  c                   |}t          t          j                            d                              d          |          }|\  }	}
|	 d| d|
 }t          j        |||          }|dk    r;|dk    r5t          j        	                    d	          }|
                    |           |j        j        |k    sJ |j        j        |k    sJ t          j        |t          |          d
           d S )NrQ   rK   rT   r_    r   	complex64r#   zfnumexpr issue with complex that are upcast to complex 128 https://github.com/pydata/numexpr/issues/492r'   F)check_exact)r   rC   rW   rX   rY   r   r   r+   r-   r   r   r   r`   r   r   )r   r2   r=   r   complex_or_float_dtypero  r;   r`   r  leftrightry   r   r-   s                 r3   test_binop_typecastingz&TestTypeCasting.test_binop_typecasting  s    'ry,,Q//??GGuUUU e""b""5""gav666KFi$7$7;$$? %  D
 %%%y%''''z5((((
c477>>>>>>r5   N)r^  r_  r`  r+   r-   ra  ry  r|   r5   r3   rj  rj    sl        [T#=#=#=>> [\K+EFF? ? GF ?>? ? ?r5   rj  c                     t          t          t          j        d          |                      }t	          t          j        d | D                       }|o|S )Nis_monotonic_increasingc              3  ^   K   | ](}t          |j        j        t          j                  V  )d S r8   )
issubclassr`   typerC   
datetime64r   s     r3   r4   zshould_warn.<locals>.<genexpr>  s2      MM1z!',>>MMMMMMr5   )anymapoperator
attrgetterr   xor)argsnot_monoonly_one_dts      r3   should_warnr    sZ    s8./HII4PPQQQHMMMMM K ##r5   c                     e Zd Zg dZg edZd Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          d                                                 Z
ej        	                    d	e          ej        	                    de          d
                         Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zej                            d          ej        	                    dddg          ej        	                    de          ej        	                    d	e          d                                                 Zej        	                    dddg          ej        	                    dg  e eddgddg                    d          ej                            d          d                                     Zej                            d          ej        	                    de          ej        	                    d	e          ej        	                    dddg          ej        	                    dddg          d                                                             Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zd ZdS ) TestAlignment)rl   ry   rz   ry   c                    d}t          t          j                            d                              d                    }t          j        |||          }t          j        ||dz             d S )Nzdf * ~2rQ   rr  r   )	r   rC   rW   rX   rY   r   r   r   r   )r   r2   r=   ry   r  r   s         r3   test_align_nested_unary_opz(TestAlignment.test_align_nested_unary_op(  se    ry,,Q//??GGHHgav666
c27+++++r5   zalways::RuntimeWarninglr_idx_typerr_idx_type
c_idx_typec                   t          t          j                            d                              d           ||         d           ||         d                    }t          t          j                            d                              d           ||         d           ||         d                    }t          |j        |j                  rIt          j        t                    5  t          j        d||          }	d d d            n# 1 swxY w Y   nt          j        d||          }	t          j        |	||z              d S )	NrQ   rR   rR   rR   rF  rC  )   rR   r  zdf + df2r   r   rC   rW   rX   rY   r  rF  r   r  RuntimeWarningr   r   r   )
r   r2   r=   r  r  r  r}   r  df2r   s
             r3   test_basic_frame_alignmentz(TestAlignment.test_basic_frame_alignment.  s    I!!!$$44X>>,-,R00-M*-b11
 
 

 I!!!$$44X>>,-,R00-M*-b11
 
 
 rx++ 	D+N;; H HgjGGGH H H H H H H H H H H H H H H '*VFCCCC
c28,,,,,s   4DDD
r_idx_typec                (   t          t          j                            d                              d           ||         d           ||         d                    }t          j        d||          }t          j        ||dk                t          t          j                            d                              |j	                  |j
        |j                  }t          j        d||          }t          j        |||k                d S )NrQ   r  rR   r  df < 2r   zdf < df3)r   rC   rW   rX   rY   r   r   r   r   r-  rF  rC  )	r   r2   r=   r  r  r}   r  r   df3s	            r3   test_frame_comparisonz#TestAlignment.test_frame_comparisonG  s   
 I!!!$$44X>>+-
+B//-M*-b11
 
 

 ghvf===
c26***I!!!$$44RX>>(J
 
 

 gj???
c28,,,,,r5   ignore::RuntimeWarningr1c1r2c2c                |   t          t          j                            d                              d           ||         d           ||         d                    }t          t          j                            d                              d           ||         d           ||         d                    }	t          t          j                            d                              d           ||         d           ||         d                    }
t          |j        |	j        |
j                  rIt          j        t                    5  t          j        d	||
          }d d d            n# 1 swxY w Y   nt          j        d	||
          }t          j        |||	z   |
z              d S )NrQ   r)  rT   r  )rV   rQ   rV   r   rK   zdf + df2 + df3r   r  )r   r2   r=   r  r  r  r  r}   r  r  r  r   s               r3   #test_medium_complex_frame_alignmentz1TestAlignment.test_medium_complex_frame_alignment\  s    I!!!$$44V<<#-#A&&%M"%a((
 
 

 I!!!$$44V<<#-#A&&%M"%a((
 
 

 I!!!$$44V<<#-#A&&%M"%a((
 
 

 rxCI66 	J+N;; N Ng.vfMMMN N N N N N N N N N N N N N N '*6&IIIC
c28c>22222s   E>>FF
index_namerF  rC  c                   t          t          j                            d                              d           ||         d           ||         d                    }t          ||          }t          t          j                            d                              d          |d d                   }	t          |j        |	j                  rIt          j
        t                    5  t          j        d||          }
d d d            n# 1 swxY w Y   nt          j        d||          }
|dk    s|dk    r!|d	k    r|                    |	          n||	z   }n||	z   }t          j        |
|           d S )
NrQ   r  rR   r  rK   df + sr   rz   r#   )r   rC   rW   rX   rY   getattrr   r  rF  r   r  r  r   r   addr   )r   r2   r=   r  r  r  r}   r  rF  ry   r   r   s               r3   !test_basic_frame_series_alignmentz/TestAlignment.test_basic_frame_series_alignmentz  s    I!!!$$44X>>+-
+B//-M*-b11
 
 

 J''29((++;;A>>bqb	JJrx)) 	B+N;; F FghvfEEEF F F F F F F F F F F F F F F '(6&AAACt!3!3$*i$7$7rvvayyyR!VHHAvH
c8,,,,,s   ,DDDzr_idx_type, c_idx_typerl   )rz   rz   c           
        |dk    r[|dv rW|dk    rQ|dk    rK|dk    rEd| d| d| d	| d
| 
}|                     t          j                            |d                     t	          t
          j                            d                              d           ||         d           ||         d                    }	t          |	|          }
t          t
          j                            d                              d          |
d d                   }t          |j        |	j                  rIt          j        t                    5  t!          j        d||          }d d d            n# 1 swxY w Y   nt!          j        d||          }|dk    s|dk    r!|dk    r|	                    |          n||	z   }n||	z   }t          j        ||           d S )Nr#   )r   r   rF  rl   ry   z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r(   strictrQ   )rR      rR   r  r  rK   zs + dfr   rz   )r   r+   r-   r   r   rC   rW   rX   rY   r  r   r  rF  r   r  r  r   r   r  r   )r   r;   r2   r=   r  r  r  r}   r(   r  rF  ry   r   r   s                 r3   !test_basic_series_frame_alignmentz/TestAlignment.test_basic_series_frame_alignment  sr    i...g%%c!!c!!DV D D D D/9D D(D D7AD D 
  1 1 1 N NOOOI!!!$$44W==+-
+B//-M*-a00
 
 

 J''29((++;;A>>bqb	JJqw)) 	B+N;; F FghvfEEEF F F F F F F F F F F F F F F '(6&AAACt!3!3$*i$7$7rvvayyyQVHH2vH
c8,,,,,s   E11E58E5r   rk  rm  c                   t          t          j                            d                              d           ||         d           ||         d                    }t          ||          }	t          t          j                            d                              d          |	d d                   }
d| d}d| d	}t          |j        |
j                  rt          j
        t                    5  t          j        |||
          }d d d            n# 1 swxY w Y   t          j
        t                    5  t          j        |||
          }d d d            n# 1 swxY w Y   n.t          j        |||
          }t          j        |||
          }|dk    r#|dk    r|dk    rt          j        ||           d S d S d S d S )NrQ   r  rR   r  rK   zs z dfzdf z sr   rz   r#   )r   rC   rW   rX   rY   r  r   r  rF  r   r  r  r   r   r   )r   r2   r=   r  r   r  r  r}   r  rF  ry   rE   rG   r   r   s                  r3   test_series_frame_commutativityz-TestAlignment.test_series_frame_commutativity  sG    I!!!$$44X>>+-
+B//-M*-b11
 
 

 J''29((++;;A>>bqb	JJ2lllBlllrx)) 	;+N;; ? ?GCv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?+N;; ? ?GCv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? F6:::AF6:::A*"4"4""%a+++++ "4"4""s$   8DD #D  E$$E(+E(c                X   d}d}	d|	z  }
t          t          j                            d                              |	|f           ||         |	           ||         |                    }t          t          j                            d                              |
|f           ||         |
           ||         |                    }|j        }t          t          j                            d                              |          |d |                   }|dk    s|dk    r"|dk    r|                    |          }n||z   }n||z   }|dk    s|dk    r"|dk    r|                    |          }n||z   }n||z   }t          |j	        |j	        |j	                  rIt          j        t                    5  t          j        d||          }d d d            n# 1 swxY w Y   nt          j        d||          }|j        |j        k    sJ t          j        ||           d S )	NrT   rK   rQ   r  rz   r#   zdf2 + ser + dfr   )r   rC   rW   rX   rY   rC  r   r  r  rF  r   r  r  r   r   r-  r   )r   r2   r=   r  r  r  r  r}   rd   m1m2r  r  rF  ser	expected2r   r   s                     r3   #test_complex_series_frame_alignmentz1TestAlignment.test_complex_series_frame_alignment  s    VI!!!$$44b!W==#-#B''%M"%a((
 
 

 I!!!$$44b!W==#-#B''%M"%a((
 
 

 RY**1--==a@@%)LL::t""GGCLL		#I		c	I::t""$==,,$r> 2~Hsy#)RX66 	J+N;; N Ng.vfMMMN N N N N N N N N N N N N N N '*6&IIICyHN****
c8,,,,,s   <G  G$'G$c                   t          t          j                            d                              d                    }t          t          j                            d                              d                    }|dk    r
|rt          }nd}d}t          j        ||          5  t          j
        d||	           d d d            n# 1 swxY w Y   t          t          j                            d                              d
                    }t          j        d          5  t          j
        d||	           d d d            n# 1 swxY w Y   t          t          j                            d                              d                    }t          t          j                            d                              d                    }t          j        d          5  t          j
        d||	           d d d            n# 1 swxY w Y   t          t          j                            d                              d                    }t          t          j                            d                              d                    }|dk    }|s
|rt          }	nd}	t          j        |	|          5 }
t          j
        d||	           |sg|ret          |
          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 )NrQ   )  rR   '  r#   FzCAlignment difference on axis 1 is larger than an order of magnituder   r  r   r  )rR   r  r  r   rS   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   rC   rW   rX   rY   r   r	   r   r  r   r   lenrA   messagelog10r   r-  )r   performance_warningr2   r=   r  ry   seenr   is_python_enginewrnwloggedr   s                r3   +test_performance_warning_for_poor_alignmentz9TestAlignment.test_performance_warning_for_poor_alignment  s    ry,,Q//??
KKLL29((++;;EBBCCY#6%DDDS'C888 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 29((++;;DAABB'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??LLMM29((++;;EBBCC'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??IIJJ29((++;;EBBCC!X- 	$7 	$CCC'3777 	'1GHVF;;;;# 	'(; 	'1vv{{{{!A$,''!&28A;"677J$*IJ J J 
 h	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sI   )CCC+EEE,HHHBMMMN)r^  r_  r`  index_typeslhs_index_typesr  r+   r-   filterwarningsra  r  r  r  r  listr   r  r  r  r  r|   r5   r3   r  r  $  s3       """K))S)O, , , [ 899[]O<<[]K88[\;77- - 87 98 =< :9-* [\?;;[\?;;- - <; <;-& [ 899[T?33[T;//[T;//[T;//3 3 0/ 0/ 0/ 43 :9
32 [ 899[\GY+?@@[\;77[\?;;- - <; 87 A@ :9-. [\GY+?@@[ >$$wwSzC:..
/
/>>  [ 899!- !- :9	  A@!-F [ 899[\;77[\?;;[\GY+?@@[TC:.., , /. A@ <; 87 :9
,4 [ 899[T?33[T;//[T;//[T;//)- )- 0/ 0/ 0/ 43 :9
)-V-' -' -' -' -'r5   r  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   rS   popr   r   r   r  kwargss      r3   r   zTestOperations.evalB  3     **Wa0014ww''''r5   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|   )r1   r   exclude_ariths     r3   rm   z8TestOperations.test_simple_arith_ops.<locals>.<listcomp>K  s.     
 
 
&& &&&r5   c              3  &   K   | ]}|d k    |V  dS )r   Nr|   )r1   r   s     r3   r4   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>Q  s&      44btr44r5   z1 z 1zx z (x + 1)r   z&argument of type 'int' is not iterabler   r   rS   r   r   )	r   r   rc  r+   r   r   r   r   rJ   )r   r2   r=   	arith_opsopsr   r   r   r   r   expecr   yr  s                @r3   test_simple_arith_opsz$TestOperations.test_simple_arith_opsF  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	rG   TFrE   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 Nrs  r   r   r   r   r=   r+   r   r   r   r   rG   rE   r   r   r   r   r2  s           r3   test_simple_bool_opsz#TestOperations.test_simple_bool_opsi         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           r3   test_bool_ops_with_constantsz+TestOperations.test_bool_ops_with_constantsy  r  r  c                   t           j                            d                              d          }t	          t           j                            d                              d                    }d}t          j        t          |          5  |                     d||d           d d d            d S # 1 swxY w Y   d S )	NrQ   )rT   rV   rK      rR   z?N-dimensional objects, where N > 2, are not supported with evalr   x + yr   r  r   )	rC   rW   rX   rY   r   r+   r   r   r   )r   r   r  r   s       r3   test_4d_ndarray_failsz$TestOperations.test_4d_ndarray_fails  s    I!!!$$44\BB29((++;;B??@@O].c::: 	< 	<IIg*:*:I;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   B77B;>B;c                @    |                      d          }|dk    sJ d S )N1rS   )r   )r   r   s     r3   test_constantzTestOperations.test_constant  s"    IIcNNAvvvvvvr5   c                    t          t          j                            d                              d                    }|                     dd|i          }t          j        ||           d S )NrQ   rR   rQ   r  r  r   rC   rW   rX   rY   r   r   r   )r   r  r  s      r3   test_single_variablez#TestOperations.test_single_variable  s_    ry,,Q//??HHIIii$i44
b#&&&&&r5   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 )NrQ   rr  name 'x' is not definedr   zdf[x > 2] > 2)	r   rC   rW   rX   rY   r+   r   	NameErrorr   r   r  s     r3   &test_failing_subscript_with_name_errorz5TestOperations.test_failing_subscript_with_name_error  s    ry,,Q//??GGHH]9,EFFF 	' 	'IIo&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A>>BBc                    t          t          j                            d                              d                    }|                     dd|i          }|dz   |dk             }t          j        ||           d S )NrQ   rr  z(df + 1)[df > 2]r  r  rS   r  r&  s       r3   test_lhs_expression_subscriptz,TestOperations.test_lhs_expression_subscript  sr    ry,,Q//??GGHH-4*EEFBF#
fh/////r5   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	
          D ]1\  }
}t          j        ||                     |
d|i                     2d S )NrQ   rr  abcrB  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   T)r  r  r  )r   rC   rW   rX   rY   r  r   r   rH   zipr   r   r   )r   r  expr1expec1expr2expec2expr3expec3exprsexpecsrI   r  s               r3   test_attr_expressionz#TestOperations.test_attr_expression  s   I!!!$$44V<<d5kk
 
 
 $rt#.rtBD1H~-ue#'E6$777 	O 	OHAu"5$))A4*)*M*MNNNN	O 	Or5   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 )
NrQ   rr  r  rB  zdf = df2%cannot assign without a target objectr   )r  r  r  )
r   rC   rW   rX   rY   r  r+   r   r@   r   )r   r  r  r  r   s        r3   test_assignment_failsz$TestOperations.test_assignment_fails  s!   I!!!$$44V<<d5kk
 
 
 	--a00@@HHII5]:S111 	@ 	@IIer#(>(>I???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   -CCCc                4   t          t          j                            d                              d          t          d                    }t          j        t          d          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrQ   r   abrB  invalid syntaxr   zd c = a + b
r   rC   rW   rX   rY   r  r+   r   rE  r   r  s     r3   %test_assignment_column_multiple_raisez4TestOperations.test_assignment_column_multiple_raise  s    I!!!$$44V<<d4jj
 
 
 ];.>??? 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   *BBBc                8   t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrQ   r   r  rB  z5left hand side of an assignment must be a single namer   zd,c = a + br
  rH  s      r3   %test_assignment_column_invalid_assignz4TestOperations.test_assignment_column_invalid_assign  s    I!!!$$44V<<d4jj
 
 
 F];c222 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   ,BBBc                8   t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrQ   r   r  rB  zcannot assign to function callr   zTimestamp("20131001") = a + br
  rH  s      r3   3test_assignment_column_invalid_assign_function_callzBTestOperations.test_assignment_column_invalid_assign_function_call  s    I!!!$$44V<<d4jj
 
 
 /];c222 	5 	5GG3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r  c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	           t          j	        ||           d S )
NrQ   r   r  rB  r   r   	a = a + bTinplace
r   rC   rW   rX   rY   r  copyr   r   r   r   r  r   s      r3   &test_assignment_single_assign_existingz5TestOperations.test_assignment_single_assign_existing      I!!!$$44V<<d4jj
 
 
 7799 5
T***
b(+++++r5   c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	
           t          j	        ||           d S )NrQ   r   r  rB  r   r   rH   	c = a + bTr  r  r  s      r3   !test_assignment_single_assign_newz0TestOperations.test_assignment_single_assign_new  r  r5   c                j   t          t          j                            d                              d          t          d                    }|                                }d}|                    dd           |                                }d|d	         z   |d
<   t          j	        ||           d S )NrQ   r   r  rB  rS   z	a = 1 + bTr  r   r   r  )r   r  r   r   s       r3   +test_assignment_single_assign_local_overlapz:TestOperations.test_assignment_single_assign_local_overlap  s    I!!!$$44V<<d4jj
 
 
 WWYY
T***7799HSM)
b(+++++r5   c                d   t          t          j                            d                              d          t          d                    }d}|j                                        }|                    dd           ||j	        z   }t          j        ||j        d	
           |j        J d S )NrQ   r   r  rB  rS   r  Tr  Fr!  )r   rC   rW   rX   rY   r  r   r  r   r   r   r   rG  )r   r  r   old_ar   s        r3   "test_assignment_single_assign_namez1TestOperations.test_assignment_single_assign_name  s    I!!!$$44V<<d4jj
 
 
 		
T***
vrt????{"""""r5   c                f   t          t          j                            d                              d          t          d                    }|                    dd           d}t          j        t          |	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )NrQ   r   r  rB  r  Tr  z#can only assign a single expressionr   z	c = a = b)
r   rC   rW   rX   rY   r  r   r+   r   rE  rH  s      r3   test_assignment_multiple_raisesz.TestOperations.test_assignment_multiple_raises  s    I!!!$$44V<<d4jj
 
 
 	T***3];c222 	! 	!GGK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   B&&B*-B*c                R   t          t          j                            d                              d          t          d                    }|                     dd|i|d           |                                }|d	         |d
         z   |d<   t          j	        ||           d S )NrQ   r   r  rB  zc = df.a + df.br  T)r   targetr  r   r   rH   
r   rC   rW   rX   rY   r  r   r  r   r   r  s      r3   test_assignment_explicitz'TestOperations.test_assignment_explicit  s    I!!!$$44V<<d4jj
 
 
 			#r
2t	TTT7799 5
b(+++++r5   c                    t          dgdgd          }|                    d|          }t          dgd          }t          j        ||           d S )	N   ir   r   za in [11, -32]r2   Tr   rT  )r   r   r   r   r   )r   r2   r  r   r   s        r3   test_column_inzTestOperations.test_column_in  s^    bT..//)&994&s+++
vx00000r5   z%Unknown: Omitted test_ in name prior.r'   c                R   t          t          j                            d                              d          t          d                    }|                    dd          }|J |                                }|d         |d	         z   |d
<   t          j	        ||           d S )NrQ   r   r  rB  r  Fr  r   r   rH   r&  )r   r  actualr   s       r3   test_assignment_not_inplacez*TestOperations.test_assignment_not_inplace  s     I!!!$$44V<<d4jj
 
 
 e44!!!7799 5
b(+++++r5   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rS   rQ   rT   rV   rK   r  r*  r   r   rH   d$
        c = a + b
        d = c + bTr  rS   rQ   rI   $
        a = a - 1
        e = a + 2z@Multi-line expressions are only valid if all expressions containr   z(
            a = b + 2
            b - 2F)r   r  r   r   r   r+   r   r@   )r   r  r   answerr   s        r3   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 )Nr1  r2  r*  r   r   rH   r3  r4  Fr  rS   rQ   rI   r5  r   r  r   r   r   r  s      r3   &test_multi_line_expression_not_inplacez5TestOperations.test_multi_line_expression_not_inplaceP  s    YYYYYY77887799 5 5WW 	  
 
 	h+++ ) )WW 	  
 
 	h+++++r5   c                    t          g dg dd          }|                                }d}|d         |z  |d<   |d         |z   |d<   |                    dd	
          }t          j        ||           |J d S )Nr1  r2  r*  r  r   rH   r3  z?
        c = a * @local_var
        d = c + @local_var
        Tr  r9  )r   r  r   	local_varr6  s        r3   )test_multi_line_expression_local_variablez8TestOperations.test_multi_line_expression_local_variablei  s    YYYYYY77887799	 	1 	1   
 
 	h+++~~~~~r5   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 )Nr1  r2  r*  c                    |S r8   r|   r*  s     r3   
local_funczUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_func      Hr5   r   rS   r  rH   r3  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr  r9  r   r  r@  r   r6  s        r3   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+++~~~~~r5   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 )Nr1  r2  r*  c                    |S r8   r|   r*  s     r3   r@  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_func  rA  r5   r   r  rS   )r   r   rH   r3  zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        Tr  r9  rB  s        r3   >test_multi_line_expression_callable_local_variable_with_kwargszMTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs  s    YYYYYY7788	 	 	 7799 

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

Q!(<(<(<<   
 
 	h+++~~~~~r5   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 )Nr1  r2  r*  r  r   za = 1)r   r  r+   r   r@   r8  r   r   )r   r  df_origr   s       r3   test_assignment_in_queryz'TestOperations.test_assignment_in_query  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 )Nr1  r2  r*  r   rQ   za == 2Tr  rT   	a = 1 + 2r%  r  )r   r  r8  r   r   r   assert_dict_equalr  s      r3   test_query_inplacez!TestOperations.test_query_inplace  s    YYYYYY77887799HSMQ./
4(((
h+++8		+b$	777
R*****r5   invalid_targetrS   catrQ   rS   rT   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 targetrK  r   TrL  r  F)r+   r   r@   r   hasattrr   rO  r   
expressions       r3   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%)rS   rP  rQ  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 targetrK  r   FrL  )r+   r   r@   r   rT  s       r3   test_cannot_copy_itemz$TestOperations.test_cannot_copy_item  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 + 2FrL  rT   z0Cannot operate inplace if there is no assignmentr   T)r   r+   r   r@   )r   r%  rU  r   s       r3   test_inplace_no_assignmentz)TestOperations.test_inplace_no_assignment  s    
yyFEyBBaGGGG@]:S111 	? 	?IIjI>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A$$A(+A(c                F   t          t          j                            d                              d          t          ddd                    }|dk     }|                     dd|i	          }|dk     }t          j        ||           t          j        ||           d S )
NrQ   rQ   rQ   rq   rv   rw   rs   rB  r  r  r  	r   rC   rW   rX   rY   r   r   r   r   )r   r  rI   rr   s        r3   *test_basic_period_index_boolean_expressionz9TestOperations.test_basic_period_index_boolean_expression  s    I!!!$$44V<< CCCC
 
 
 FIIhD":I66F
a###
a#####r5   c                   t          t          j                            d                              d          t          ddd                    }|                     dd|i	          }||d
k              }t          j        ||           d S )NrQ   r^  rq   rv   r_  rB  zdf[df < 2 + 3]r  r  rK   r`  r   r  ra  rI   s       r3   ,test_basic_period_index_subscript_expressionz;TestOperations.test_basic_period_index_subscript_expression  s    I!!!$$44V<< CCCC
 
 
 II&D":I>>rEzN
a#####r5   c                <   t          t          j                            d                              d          t          ddd                    }|                     dd|i	          }|||dk              dk              |dz  z   }t          j        ||           d S )
NrQ   r^  rq   rv   r_  rB  zdf[df[df < 2] < 2] + df * 2r  r  r`  rd  s       r3   -test_nested_period_index_subscript_expressionz<TestOperations.test_nested_period_index_subscript_expression  s    I!!!$$44V<< CCCC
 
 
 II3r
IKKr"q&zA~a'
a#####r5   c                "   t          t          j                            d                              d                    }t          dd          |d<   |                     dd|i||	          }|j        d
k     }t          j	        ||           d S )NrQ   rr  z1/1/2012rK   rr   dates1zdf.dates1 < 20130101r  r   20130101)
r   rC   rW   rX   rY   r   r   ri  r   r   )r   r2   r=   r  r   r  s         r3   test_date_booleanz TestOperations.test_date_boolean  s    ry,,Q//??GGHH!*a8888ii"bz	  
 
 	J&
sE*****r5   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]r   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 implementedr   z[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))r   r   r+   r   r   )r   r2   r=   r   r   s        r3   test_simple_in_opsz!TestOperations.test_simple_in_ops  s   X'-vFFFCJJ3'-vFFFCJJ3'-vFFFCNN7'+F6JJJCJJ3'-fVLLLCJJ3'+F6JJJCJJ3'/vNNNCJJ3'-fVLLLCJJ3'1&PPPCNN7'1&PPPCJJ3JJ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 )NrS   z * !aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   )r   r   r   )r   r2   r=   r   r   r   r   s          r3   test_check_many_exprsz$TestOperations.test_check_many_exprs1  sD    zz(##gd6&999hr5   r   )zdf > 2 and df > 3zdf > 2 or df > 3z
not df > 2c                t   t          t          j                            d                              d                    }|dk    rXd}d|v rd}t          j        t          |          5  t          j	        |d|i||	           d d d            d S # 1 swxY w Y   d S t          j	        |d|i||	           d S )
NrQ   rr  r   r   not'Not' nodes are not implementedr   r  )r   r=   r2   
r   rC   rW   rX   rY   r+   r   r   r   r   )r   r   r2   r=   r  r   s         r3   test_fails_and_or_notz$TestOperations.test_fails_and_or_not8  s%    ry,,Q//??GGHHX6C}}72#>>>   $bz!!	                     G ":	     s   )BBBcharr   r   c                h   t          t          j                            d                              d                    }d| d}|dk    rOd}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S t          j	        |||           d S )	NrQ   rr  z(df + 2)[df > 1] > 0 z	 (df > 0)r   z$cannot evaluate scalar only bool opsr   r  rt  )r   rv  r2   r=   r  r   r   s          r3   test_fails_ampersand_pipez(TestOperations.test_fails_ampersand_pipeW  s    ry,,Q//??GGHH4T444X8C2#>>> : :6&9999: : : : : : : : : : : : : : : : : : GBvf555555s   )BBBN)3r^  r_  r`  r   r  r+   r-   ra  r   rb  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r'  r,  r   r/  r7  r:  r=  rC  rF  rI  rN  rC   r   rV  rX  r\  rb  re  rg  rk  rm  rp  ru  rx  r|   r5   r3   r  r  A  sc       ( ( (!" !" !"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, , ,, , ,
, 
, 
,
# 
# 
#! ! !, , ,1 1 1 [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 	6r5   r  c                     e Zd Zd Zej                            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      r3   r   zTestMath.evale  r  r5   r  fnc                   t          dt          j                            d                              d          i          }|j        }| d}|                     |||          }t          j        d          5   t          t          |          |          }d d d            n# 1 swxY w Y   t          j
        ||           d S )Nr   rQ   rR   z(a)r   r$   all)r   rC   rW   rX   rY   r   r   errstater  r   r   )	r   r|  r2   r=   r  r   r   gotr   s	            r3   test_unary_functionszTestMath.test_unary_functionsi  s     RY22155EEbIIJKKDzzziiVFi;;[X&&& 	( 	($WR__Q''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
sF+++++s   ;B&&B*-B*c                   t          t          j                            d                              d          t          j                            d                              d          d          }|j        }|j        }| d}|                     |||          }t          j        d          5   t          t          |          ||          }	d d d            n# 1 swxY w Y   t          j        ||	           d S )NrQ   rR   r*  z(a, b)r   r$   r~  )r   rC   rW   rX   rY   r   r   r   r  r  r   r   )
r   r|  r2   r=   r  r   r   r   r  r   s
             r3   test_binary_functionszTestMath.test_binary_functionsu  s)   Y**1--==bAAY**1--==bAA 
 
 DD}}}iiVFi;;[X&&& 	+ 	+$WR__Q**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
sF+++++s   3 CC#&C#c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        t          j        |j	                  |j
                                      d          }t          j        ||           d S )NrQ   rR   r*  ze = arctan2(sin(a), b)Tr2   r=   r  rI   )r   rC   rW   rX   rY   r   rI   arctan2sinr   r   renamer   r   r   r2   r=   r  r  r   s         r3   test_df_use_casezTestMath.test_df_use_case  s    Y**1--==bAAY**1--==bAA 
 
 	$	 	 	
 	
 	
 dBF24LL"$//66s;;
sF+++++r5   c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        |j        |j	        z             
                    d          }t          j        ||           d S )NrQ   rR   r*  ze = sin(a + b)Tr  rI   )r   rC   rW   rX   rY   r   rI   r  r   r   r  r   r   r  s         r3    test_df_arithmetic_subexpressionz)TestMath.test_df_arithmetic_subexpression  s    Y**1--==bAAY**1--==bAA 
 
 	 MMMdrt$$++C00
sF+++++r5   zdtype, expect_dtyper)   c                   t          dt          j                            d                              d                              |          i          }|j        j        |k    sJ |                    d||d           |j	        }t          j
        |j                                      d          }|j        |j        k    sJ ||j        k    sJ t          j        ||           d S )Nr   rQ   rR   z
b = sin(a)Tr  r   )r   rC   rW   rX   rY   r   r   r`   r   r   r  r  r   r   )r   r`   expect_dtyper2   r=   r  r  r   s           r3   test_result_typeszTestMath.test_result_types  s      ")''**::2>>EEeLLM
 
 tzU""""
VFDIIId$$S))|sy((((sy((((
sF+++++r5   c                $   t          dt          j                            d                              d          i          }d}t          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rQ   rR   z#"mysin" is not a supported functionr   zmysin(a)r   )	r   rC   rW   rX   rY   r+   r   r@   r   r   r2   r=   r  r   s        r3   test_undefined_funczTestMath.test_undefined_func  s    RY22155EEbIIJKK3]:S111 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>   BB	B	c                $   t          dt          j                            d                              d          i          }d}t          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rQ   rR   z1Function "sin" does not support keyword argumentsr   zsin(x=a)r   )	r   rC   rW   rX   rY   r+   r   r   r   r  s        r3   test_keyword_argzTestMath.test_keyword_arg  s    RY22155EEbIIJKKA]9C000 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r  N)r^  r_  r`  r   r+   r-   r  ra  r    r  r   r  r  r  rC   int32rg   rb   float32r,   
complex128r/   rg  r  r  r  r|   r5   r3   rz  rz  d  s]       ( ( ( [ 899[T?33, , 43 :9, [T#344, , 54, , , ,"
, 
, 
, [Xrz"Xrz"Z$Z$FLR=OPPP	
	 	, ,	 	,"> > >> > > > >r5   rz  rQ   rR   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 * 2rQ   r   )r   r   _var_sr   r   )r   r2   r=   rI   s       r3   test_global_scopezTestScope.test_global_scope  s@    
#QJ&@@@	
 	
 	
 	
 	
r5   c                    d}t                                                      }t          j        d|||           t                                                      }|                    d           ||k    sJ d S )NrS   x + 1r   lcls)localsr  r   r   r  )r   r2   r=   r   r  lcls2s         r3   test_no_new_localszTestScope.test_no_new_locals  se    xx}}
DGGGG		&u}}}}}}r5   c                    d}t                                                      }t          j        d||           t                                                      }||k    sJ d S )NrS   r  r   )globalsr  r   r   )r   r2   r=   r   gblsgbls2s         r3   test_no_new_globalszTestScope.test_no_new_globals  sU    yy~~
v6666		  u}}}}}}r5   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 )NrS   r  r   r  r   r+   r   r
   r   r   )r   r2   r=   r   r   s        r3   test_empty_localszTestScope.test_empty_locals  s    ']1=== 	J 	JGGF6bIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	JrY  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 definedr  r   )r2   r=   global_dictr  )r   r2   r=   r   rI   s        r3   test_empty_globalszTestScope.test_empty_globals  s    ,]1=== 	E 	EGAfVDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	ErY  N)r^  r_  r`  r  r  r  r  r  r|   r5   r3   r  r    sg        
 
 
    J J JE E E E Er5   r  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' passedr   r  rS   rQ   r  asdf)r   r2   r+   r   KeyErrorr   r   r   s    r3   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_numexprr   ))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  r   option_context)r  r   r  r   s       r3   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t	          d	d          
          }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  F)TFTFNN)rS   rQ   rT   rV   rK   r  )r5  Bz
A.isnull()rK   r  rV   )rF  )r   r  r   r8  ro   r   r   )r  r   r   s      r3   #test_numexpr_option_incompatible_opr    s     
	0%	8	8 0 0888?Q?Q?QRR
 
 ,''D$<q!f==U1a[[QQQ
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   A'B

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' passedr   r  rS   rQ   r  r  )r   r=   r  r  s    r3   test_invalid_parserr    r  r  )r   r   r   z dict[str, type[BaseExprVisitor]]_parsersr2   r=   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 )Nr  znodes are not implementedr   )r  unsupported_nodesr+   r   r   r  )r2   r=   VisitorClassinstr  r   s         r3   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	  r   r   r+   r   rE  r   r   )r2   r=   rI   s      r3   test_syntax_error_exprsr  3  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 definedr   r   )r+   r   r  r   r   )r2   r=   rI   r   s       r3   test_name_error_exprsr  9  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rS   rQ   r   zThe '@' prefix is onlyr   r   zThe '@' prefix is notr  )r2   r=   r  r   r   s        r3   %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 .+r   zsin + dotted_liner   )r+   r   r   r   r   )r2   r=   r  dotted_liner   r   s         r3   test_numexpr_builtin_raisesr  L  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)rZ  g      @zResolver of type .+r   r[  )	resolversr2   r=   )r+   r   r   r   r   )r2   r=   cannot_resolves      r3   test_bad_resolver_raisesr  W  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 stringr    r   r+   r   r@   r   r   r   s     r3   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 allowedr   z1 + 1; 2 + 2r   r  r   s     r3   $test_more_than_one_expression_raisesr  c  s    	{*O	P	P	P > >
vf====> > > > > > > > > > > > > > > > > >r  cmpr   rE   rG   c                   t           d t          t          j                            d          j        i} ||                      } ||                      }  ||                     }d| d| d}d| d| d}d| d| d	}	|||	fD ]N}
d
}t          j        t          |          5  t          j
        |
||           d d d            n# 1 swxY w Y   Od S )Nc                 f    t           j                            d                              d          S )NrQ   rR   )rC   rW   rX   r   r|   r5   r3   re   z0test_bool_ops_fails_on_scalars.<locals>.<lambda>m  s$    RY**1--66r:: r5   rQ   r   r   r   r   r   r   r   r*  r   r   )intrN   rC   rW   rX   rY   r+   r   r   r   r   )rE   r  rG   r2   r=   genr   r   r   r   r   r   s               r3   test_bool_ops_fails_on_scalarsr  h  sJ   
 	::ry$$Q''7C
 #c(**C
#c(**C
#c(**C
$
$
$3
$
$
$C
,
,
,3
,
,
,C
.#
.
.C
.
.
.CCo 6 6K].c::: 	6 	6GBvf5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6s   #CC	C	otherz'x'z...c                    t          dg dit                    }|                    d|            }t          g dd          }t	          j        ||           d S )Nr5  )r   r   rH   r_   r7  )FFFrT  )r   objectr   r   r   r   )r  r  r   r   s       r3   test_equals_variousr  ~  sh     
C)	8	8	8BWW_U__%%F+++#666H68,,,,,r5   c                `    d}t           j        }t          j        || |          }||k    sJ d S )Nzinf + 1r   )rC   infr   r   )r2   r=   ry   r   r   s        r3   test_infr    s;    AvHWQvf555FXr5   columnu	   Temp(°C)u   Capacitance(μF)c                   t          t          j                            d                              d          |dg          }|||         dk             }d| d}|                    ||           }t          j        ||           d S )	NrQ   r   r   rB  rK   `z` > 5r+  )r   rC   rW   rX   rY   r8  r   r   )r2   r  r  r   query_stringr   s         r3   test_query_tokenr    s     

	a  008863-
 
 
B "V*q.!H$v$$$LXXl6X22F&(+++++r5   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   rR   rS   r  rP  countrB  z
~(cat > 0)r   r   rs  r   znot (cat > 0))r   rP  r8  r   r   r+   r   r   )r2   r=   r  r   r   r   s         r3   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                   |dv r<|                      t          j                            t          d|                      t          t          j                            d          	                    ddd          |d	g
          }|||         dk             }|
                    | d          }t          j        ||           d S )N)TrueFalser  Infz+GH 47859 DataFrame eval not supported with )r   r(   rQ   r   d   r  r   col1rB  r  z>6)r   r+   r-   r   r  r   rC   rW   rX   r   r8  r   r   )r;   r  r  r   r   s        r3    test_eval_no_support_column_namer    s     000KMVMM   	
 	
 	
 

	a  ))!Sw)?? 
 
 
B "V*q.!HXXmmm$$F&(+++++r5   c                 l   t          g dg dg dd          } | d d          }| d         }|                     dd           t          g d	g dg dd          }t          j        | |           t	          g dd
          }t          j        ||           t          j        |d         |           d S )Nr1  r2  )r     	   )r5  r  Cr5  z	A = B + CTr  )r)     rR  rT  )r   r   r   r   r   r   )r  result_viewr  r   s       r3   test_set_inplacer    s     
CC	D	DBQQQ%K
S'CGGKG&&&|||))))))LLMMH"h'''iiic***H3)));s+X66666r5   valuerS   r  r1  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 typer   z2+2r  r  )r  r   s     r3   test_validate_bool_argsr    s    
DC	z	-	-	- & &
u%%%%& & & & & & & & & & & & & & & & & &s   AA	Ac                 F    t          j        dd          } d}| |k    sJ d S )Nz1 / 2r#   r+  rU   r1  )r   r   s     r3   test_eval_float_div_numexprr	    s4     WWY///FHXr5   c                    t          g d          } t          g d          }t          j        d          }| |z                                   }t	          j        ||           t          j        d          }| |z                                  }t	          j        ||           t          j        d          }| |z                                                       d          }t	          j        ||           d S )N)rS   rQ   rT   rK   )rQ   rT   rV   z(x + y).dropna()z(x * y).dropna()z'(x + y).dropna().reset_index(drop=True)T)drop)r   r   r   dropnar   r   reset_index)r   r  r   r   s       r3   test_method_calls_on_binopr    s    |||AyyyA W'((FA~~H68,,, W'((FA~~H68,,, W>??FA~~+++66H68,,,,,r5   )q
__future__r   	functoolsr   	itertoolsr   r  numpyrC   r+   pandas.compatr   pandas.compat._optionalr   pandas.errorsr   r	   r
   pandas.util._test_decoratorsutil_test_decoratorsr/   pandas.core.dtypes.commonr   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   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    pandas.core.computation.scoper!   pandas.util.versionr"   r#   fixturer2   PARSERSr=   rJ   r  ro   rE   rG   r   r}   r   rj  r  r  r  rz  rW   rX   rY   r  r  r0   r  r-   ra  r  r  r  PyTablesExprVisitorr  __annotations__r  r  r  r  r  r  r  r  r  rN   r  r  r  r  r  keysr  r  r  r	  r  r|   r5   r3   <module>r(     s   " " " " " " "                         > > > > > >         
 * ) ) ) ) ) ) ) )                                            4 3 3 3 3 3         
                   : 9 9 9 9 9 ' ' ' ' ' '
$
$Yx
@
@
@         !   t|$$$  %$   4a>>EEE  - -	 -$ 
   k	3 k	3 k	3 k	3 k	3 k	3 k	3 k	3d? ? ? ? ? ? ? ?<$ $ $V' V' V' V' V' V' V' V'z`6 `6 `6 `6 `6 `6 `6 `6Ff> f> f> f> f> f> f> f>R 
		q	!	!	1	1"	5	5"E "E "E "E "E "E "E "EJ yE E E y " "  " y0 0 0 y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 , ,	 ,(7 7 7 1fiii"=>>& & ?>& y  - - - - -r5   