
    bMh                   V   U d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZmZmZ d dlmc mZ d dlmZmZmZmZ d dlZd dlmZmZmZmZmZm Z  d dl!m"Z# d d	l$m%Z%m&Z& d d
l'm(Z( d dl)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7  e	j8        d e(D                       d             Z9 e	j8        e%j:                  d             Z;d Z< e	j8         e= e>d                    g d          d             Z?e?Z@e?ZAe	j8        d             ZB G d d          ZC G d d          ZDd ZE G d d          ZF G d  d!          ZG G d" d#          ZHejI        J                    d$          K                    d%          ZL G d& d'          ZM ejN        d(          d)             ZO ejN        d(          e	jP        Q                    d*d+          d,                         ZR ejN        d(          d-             ZS ejN        d(          d.             ZTe,e&jU        e+d/ZVd0eWd1<   e	jP        Q                    d2e(          e	jP        Q                    d3eV          d4                         ZXd5 ZYd6 ZZe	jP        Q                    d7g d8          d9             Z[d: Z\d; Z]d< Z^d= Z_e	jP        Q                    d>d?          e	jP        Q                    d@e`eaf          e	jP        Q                    dAe`eaf          dB                                     Zbe	jP        Q                    dCdDdEg          dF             ZcdG Zde	jP        Q                    dHdIdJg          dK             ZedL Zfe	jP        Q                    dH e7jg                              dM             ZhdN Zi G dO dP          ZjdS )Q    )annotations)reduce)productN)PY312)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SPECIAL_CASE_ARITH_OPS_SYMS_binary_math_ops_binary_ops_dict_unary_math_ops)DEFAULT_GLOBALSc              #     K   | ]i}t          j        |t           j                            |d k    ot           dt           dt
                     t          j        d           g          V  jdS )numexprznumexpr enabled->z, installed->reasonmarksN)pytestparammarkskipifr   r   td
skip_if_no).0engines     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/computation/test_eval.py	<genexpr>r1   <   s          	""i';O6{ 6 6"36 6 #  
 i((
	
 
	
 
	
         )paramsc                    | j         S Nr)   requests    r0   r/   r/   ;   s    " =r2   c                    | j         S r5   r6   r7   s    r0   parserr:   O   s
    =r2   c                    t           |         }t          |         j        rS	  || |          S # t          $ r9}t	          |                              d          rt          j        cY d }~S  d }~ww xY w || |          S )Nz6negative number cannot be raised to a fractional power)r   r   has_neg_frac
ValueErrorstr
startswithnpnan)lhscmp1rhsr/   ces         r0   _eval_single_binrG   T   s    Av# 	1S#;; 	 	 	1vv  H   v	 1S#;;s    - 
A0-A+$A0*A++A0   )r   r   	SeriesNaNDataFrameNaNfloat)r3   idsc           	     l   t          t          j                            d                              d                    }t          j        ||dk    <   t          t          j                            d                              d                    t          t          j                            d                              d                    t          ddt          j        t          j        dg          |t          j                            d                                          f}|| j                 S )N   )
   rH         ?rH      )r   r@   randomdefault_rngstandard_normalrA   r   r)   )r8   nan_df1optss      r0   rB   rB   c   s    
 	--a00@@IIJJGVGGcM 	")''**::7CCDDry$$Q''77::;;1bfbfa())
	a  0022D r2   c                      d d d d d d dS )Nc                \    t          t          j        |           t          j                  S Ndtype)r   r@   arangeint64ns    r0   <lambda>zidx_func_dict.<locals>.<lambda>|   s    uRYq\\::: r2   c                \    t          t          j        |           t          j                  S rY   )r   r@   r\   float64r^   s    r0   r`   zidx_func_dict.<locals>.<lambda>}   s    uRYq\\<<< r2   c                V    t          d t          dd| z             D                       S )Nc                6    g | ]}| d t          |           S )_)chr)r.   is     r0   
<listcomp>z3idx_func_dict.<locals>.<lambda>.<locals>.<listcomp>~   s(    III!ooSVVooIIIr2   a   )r   ranger^   s    r0   r`   zidx_func_dict.<locals>.<lambda>~   s+    uIIuRa7H7HIIIJJ r2   c                $    t          d|           S )N
2020-01-01periods)r   r^   s    r0   r`   zidx_func_dict.<locals>.<lambda>   s    
<;;; r2   c                $    t          d|           S )Nz1 dayrm   )r   r^   s    r0   r`   zidx_func_dict.<locals>.<lambda>   s    ;;; r2   c                &    t          d| d          S )Nrl   D)rn   freq)r   r^   s    r0   r`   zidx_func_dict.<locals>.<lambda>   s    |L!#FFF r2   )rg   fsdtr,   p rw   r2   r0   idx_func_dictrx   y   s7     ;:<<JJ;;;;FF  r2   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                              e                              d             Zd Zd Zej        d             Zd Zd Zd Zd Zd Zej                            d eej                             d          !                    d                     eej                             d          "                    dd                     eej                             d          !                    d          d k              g          d!             Z#ej                            d e$ej                             d          !                    d                     e$ej                             d          "                    dd                     e$ej                             d          !                    d          d k              g          d"             Z%d# Z&d$ Z'ej                            d%d&d'g          d(             Z(d) Z)ej                            d*d+          d,             Z*d- Z+d. Z,d/ Z-d0 Z.d1 Z/d2 Z0d3S )4TestEvalrC   )z!=z==z<=z>=<>)neeqlegeltgt)rL   cmp2r|   r{   r   r   binopc                   |dk    r^|dv rZd}t          j        t          |          5  d| d| d| d}	t          j        |	||	           d d d            n# 1 swxY w Y   d S t          ||||          }
t          ||||          }t          |
|||          }d| d| d| d}	t          j        |	||	          }t          j        ||           d S )
Npythonandor"'BoolOp' nodes are not implementedmatch(lhs z rhs) z (lhs  rhs)r/   r:   )r(   raisesNotImplementedErrorpdevalrG   tmassert_equal)selfrC   r   r   rB   rD   r/   r:   msgexlhs_newrhs_newexpectedresults                 r0   test_complex_cmp_opszTestEval.test_complex_cmp_ops   sN    X%="8"86C2#>>> : :ATAAAAdAAA6&9999: : : : : : : : : : : : : : : F"3c6::"3c6::#GUGVDD9T9999d999F6:::
)))))s   $AAAcmp_opc           	     X   |dk     }|dk     }|dk    rX|dv rTd}t          j        t          |          5  d| d}t          j        |||           d d d            n# 1 swxY w Y   d S d| d}d	                    d
dg          }|dv r`t          |          sQt          j        t          |          5  t          j        |||||d           d d d            d S # 1 swxY w Y   d S t          ||||          }t          j        |||          }	t          j
        |	|           d S )Nr   r   innot in&'(In|NotIn)' nodes are not implementedr   lhs  rhsr   |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rB   rD   r/   r:   
local_dict)r(   r   r   r   r   joinr   	TypeErrorrG   r   r   )
r   r   rB   rD   r/   r:   r   r   r   r   s
             r0   test_simple_cmp_opszTestEval.test_simple_cmp_ops   s   AgAgX&,<"<"<:C2#>>> : :(F(((6&9999: : : : : : : : : : : : : : : F F   hh" :	
 
 %%%l3.?.?%y444  !!'*377	                     (VS&AAHWRv>>>FOFH-----s#   AA"%A"6CC#&C#opc           	        |dk    rX|dv rTd}t          j        t          |          5  d| d}t          j        |||           d d d            n# 1 swxY w Y   d S t          |          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   r   z~(lhs 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 r5   )r@   arrayr.   xs     r0   r1   z3TestEval.test_compound_invert_op.<locals>.<genexpr>   s,      >>aBHaSMM>>>>>>r2   )r(   r   r   r   r   r   r*   xfailapplymarkerr   r   r   rG   r   assert_almost_equal)r   r   rB   rD   r8   r/   r:   r   r   r*   
skip_theser   r   s                r0   test_compound_invert_opz TestEval.test_compound_invert_op   s   X"(8"8"8:C2#>>> : :'b'''6&9999: : : : : : : : : : : : : : : F SMM	&SMM	& &&&(""("";$$? %  D %%%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   rG   r   r   )r   rC   r   rB   midhsrD   r/   r:   midex1r   r   r   ex2ex3r   r   r   s                     r0   test_chained_cmp_opzTestEval.test_chained_cmp_op   s    X...D...C6C2#>>> ; ;F6::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;F"3c6::"3c6::7#6...D...C666D666C8$88T888C'gvFFHCo 9 9F6BBB&vx8888 #6#69 9s   AAAarith1c                .   d| d}t          j        |||          }t          ||||          }t          j        ||           d| d| d}t          j        |||          }t          ||||          }		 |	                    |          \  }	}
|dk    r9dd l}|                    d| d          }t          j        |j        |           d S t          d| d          }t          j        ||           d S # t          t          t          f$ r Y d S w xY w)	Nr   r   r   z rhs r#   r   znlhs z ghs)r   r   rG   r   r   alignr#   evaluatevaluesr=   r   AttributeError)r   r   rB   rD   r/   r:   r   r   r   nlhsghsr}   s               r0   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 % rhs%)r   r   r   r   r#   r   
isinstancer   r   r   itemrG   )	r   rB   rD   r/   r:   r   r   r   r}   s	            r0   test_moduluszTestEval.test_modulus0  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4r2   c                   d}|dk    r3t          j        |||          }||z  }t          j        ||           d S d}t	          j        t          |          5  t          j        |||d||           d d d            d S # 1 swxY w Y   d S )Nz
lhs // rhsr   r   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'r   r   r   r/   r:   )r   r   r   r   r(   r   r   )	r   rB   rD   r/   r:   r   resr   r   s	            r0   test_floor_divisionzTestEval.test_floor_divisionB  s    X'"VF;;;CczHOC*****!  y444  '*377!!	                    s   BB	Bc                j   d}t          |d||          }t          j        |||          }t          |          rt          |          rt	          |t
          t          j        f          rat          j        |          rMd}t          j
        t          |          5  t          j        ||           d d d            d S # 1 swxY w Y   d S t          j        ||           d}t          j        |||          }t          |d||          }	t          |	d||          }t          j        ||           d S )Nz
lhs ** rhs**r   z-(DataFrame.columns|numpy array) are differentr   z(lhs ** rhs) ** rhs)rG   r   r   r   r   complexr@   complexfloatingisnanr(   r   AssertionErrorr   assert_numpy_array_equalr   )
r   rB   rD   r/   r:   r   r   r   r   middles
             r0   test_powzTestEval.test_powV  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   r@   r   r   r   r   r   )r   rB   r/   r:   elbr   r   s          r0   test_check_single_invert_opz$TestEval.test_check_single_invert_opp  s    	(**T""CC 	( 	( 	((DII;''CCC	(4v>>>
x00000s    ,AAc                    d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	d
                    }|dk    rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g dt          j                            d                              d          dk    d          }|dk    rMt          j        t          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )N~lhsrN   rH   rN   r#   -couldn't find matching opcode for 'invert_dd'r   r   0ufunc 'invert' not supported for the input typesrH   size)couldn't find matching opcode for 'invertrP   arQ   g       @   )brE   unknown type object#bad operand type for unary ~: 'str')r   r@   rR   rS   rT   r(   r   r   r   r   r   integersr   assert_frame_equalr=   )r   r/   r:   r   rB   r   expectr   s           r0   test_frame_invertzTestEval.test_frame_invertz  s"   
 	--a00@@HHIIYAC2#>>> < <VF;;;;< < < < < < < < < < < < < < < ECy444 < <VF;;;;< < < < < < < < < < < < < < < 	--a0099!&9IIJJY=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F!&&111 	--a00@@HH3NOOfV<<<
ff--- --bi&;&;A&>&>&N&Nq&Q&QTW&WXX
 
 Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCCE))E-0E-?J$$J(+J(K33K7:K7c                   d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||          }d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              dd	                    }|dk    rMd
}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g d          }|dk    rMt          j        t          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )Nr   rN   rH   r#   r   r   r   r   r   r   rP   r   r   r   )r   r@   rR   rS   rT   r(   r   r   r   r   r   r   r   assert_series_equalr=   )r   r/   r:   r   rB   r   r   r   s           r0   test_series_invertzTestEval.test_series_invert  s    RY**1--==a@@AAYAC2#>>> E EfVDDDE E E E E E E E E E E E E E E ECy444 < <VF;;;;< < < < < < < < < < < < < < < RY**1--66qq6AABBY=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F"66222 RY**1--==a@@3FGGfV<<<
vv... ]]]##Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCCE))E-0E-I--I14I1J<<K K c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd	}t          j        t          |
          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )N-lhsrN   r   r   rH   r   rP   r#   *couldn't find matching opcode for 'neg_bb'r   )r   r@   rR   rS   rT   r   r   r   r   r   r(   r   r   r   r/   r:   r   rB   r   r   r   s           r0   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   rN   rH   r   r   rP   r#   r   r   )r   r@   rR   rS   rT   r   r   r   r   r   r(   r   r   r   s           r0   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   rB   rN   r   rH   r   rP   c                f    d}|}t          j        |||          }t          j        ||           d S Nz+lhsr   )r   r   r   r   r   rB   r/   r:   r   r   r   s          r0   test_frame_poszTestEval.test_frame_pos
  s=     fV<<<
ff-----r2   c                f    d}|}t          j        |||          }t          j        ||           d S r  )r   r   r   r   r  s          r0   test_series_poszTestEval.test_series_pos  s=     fV<<<
vv.....r2   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:   r/   g      z+1.0g      ?z~1z-1z+1rQ   zBitwise inversionF)r   check_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   DeprecationWarningr(   r   r   r   r   r   assert_produces_warning)r   r/   r:   r   warns        r0   test_scalar_unaryzTestEval.test_scalar_unary.  sF   5 	&&I--&H2D2D%D]9C000 	: 	:GF6&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: wvfV<<<DDDDwvfV<<<DDDDwtF6:::b@@@@wtF6:::b@@@@wtF6:::b@@@@'+e
 
 
 	K 	K 776&AAAUJJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K '+e
 
 
 	M 	M 78F6BBBfLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M wwvf===FFFFwxv>>>&HHHHwwvf===FFFFwxv>>>&HHHHHHs5   AA"%A"D<<E E F		FFc                    t          j        t          j        d          t           j                  }t          j        g dt           j                  }t          j        ||           d S )Nz>[-True, True, +True, -False, False, +False, -37, 37, ~37, +37]rZ   )
r
  TrQ   r   Fr   i%   ir  )r@   r   r   r   object_r   r   )r   r   r   s      r0   test_unary_in_arrayzTestEval.test_unary_in_arrayH  sv     GTUU*
 
 
 8   *
 
 
 	#FH55555r2   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   rZ   F)r   r@   r   r   r   )r   float_numpy_dtyper   dfr   s        r0   test_float_comparison_bin_opz%TestEval.test_float_comparison_bin_opa  s\     RXqc1BCCCDEEggdmmzRXug........r2   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   rQ   zx.fillna(-1)r
  check_nameszx.shift(1, fill_value=-1))
fill_value)
r   r@   rA   r   r   fillnar   r   r   shiftr   r  r   r   s       r0   test_unary_in_functionzTestEval.test_unary_in_functionh  s    aBF^,--((4;;r?? 	vx_MMMM4554::aB://
vx_MMMMMMr2   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 )NrN   r   rQ   r   rN   ;cannot evaluate scalar only bool ops|'BoolOp' nodes are notr   r   )
r@   rR   rS   rT   r   r(   r   r   r   r   )	r   r   r/   r:   r   r   r   r  r   s	            r0   test_disallow_scalar_bool_opsz&TestEval.test_disallow_scalar_bool_opsv  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 )NrQ   r   r   g      ?F)rQ   )	r   r   r   r
   r@   r   r   r   shape)r   r/   r:   r   r   s        r0   test_identicalzTestEval.test_identical  s   VF;;;{{{{     VF;;;}}}}     VF;;;v     HaSMMVF;;;
#FBHaSMM:::|t####HcUOOVF;;;
#FBHcUOO<<<|t####HeWVF;;;
#FBHeW,=,=>>>|t######r2   c                H    d}t          j        |||          }|dk    sJ d S )Nz1 + 2 *         5 - 1 + 2 r      )r   r   )r   r/   r:   expr   s        r0   test_line_continuationzTestEval.test_line_continuation  s0    VF;;;||||||r2   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 > rQ   rN   r-  A == )
r   r   r@   rb   r   queryemptylocr   r   )	r   r/   r:   r)  r   r   r  cutoffexacts	            r0   test_float_truncationzTestEval.test_float_truncation  s!   VF;;;:c??!!!!PPPQRR ----..| ----..61a&!!!)$
h///-%---..61#qqq&>
h/////r2   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   SyntaxErrorr/  indexnamer   r  r   s      r0   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    r0   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   r>   r   r   )r   events     r0   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Vr2   N)1__name__
__module____qualname__r(   r*   parametrizer   BOOL_OPS_SYMSr   CMP_OPS_SYMSr   r   r   sortedsetr   
differencer   r   r   r   r,   skip_if_windowsr   r   r   r   r   r   r   r@   rR   rS   rT   r   r  r   r  r  r  r  r  r#  r&  r*  r4  r@  rC  rG  rw   r2   r0   rz   rz      s       [***000   
 [Vc3ZdD\BB[Wd&899* * :9 CB *  [Xt'899 .  . :9 .D [T4#45515 15 6515f [Vc3Z00[Vc3Z009 9 10 109. [&&^,,778STTUU 9 9 9@5 5 5$  ( 5 5 521 1 1+< +< +<Z-< -< -<^2 2 243 3 34 [ Ibi++A..>>vFFGGIbi++A..777GGHHIbi++A..>>vFFLMM	

 
. .
 
. [ F29((++;;A>>??F29((++44QQ4??@@F29((++;;A>>DEE	

 
/ /
 
/I I I46 6 62 [Vj(%;<</ / =</N N N [	
 6 6 6$ $ $B  0 0 0,
$ 
$ 
$5 5 5W W W W Wr2   rz   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)rY  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 )NrN   rH   r   rZ    r   	complex64r#   zfnumexpr issue with complex that are upcast to complex 128 https://github.com/pydata/numexpr/issues/492r$   F)check_exact)r   r@   rR   rS   rT   r   r   r(   r*   r   r   r   r[   r   r   )r   r/   r:   r   complex_or_float_dtyperX  r8   r[   r  leftrightrt   r   r*   s                 r0   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>>>>>>r2   N)rH  rI  rJ  r(   r*   rK  rb  rw   r2   r0   rS  rS    sl        [T#=#=#=>> [\K+EFF? ? GF ?>? ? ?r2   rS  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 r5   )
issubclassr[   typer@   
datetime64r   s     r0   r1   zshould_warn.<locals>.<genexpr>
  s2      MM1z!',>>MMMMMMr2   )anymapoperator
attrgetterr   xor)argsnot_monoonly_one_dts      r0   should_warnrq    sZ    s8./HII4PPQQQHMMMMM K ##r2   c                     e Zd Zg dZedgz   Zd Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          d                                                 Z
ej        	                    d	e          ej        	                    de          d
                         Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zej                            d          ej        	                    dddg          ej        	                    de          ej        	                    d	e          d                                                 Zej        	                    dddg          ej        	                    d e eddgddg                    dgz             ej                            d          d                                     Zej                            d          ej        	                    de          ej        	                    d	e          ej        	                    dddg          ej        	                    dddg          d                                                             Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zd ZdS ) TestAlignment)rg   rt   ru   rt   c                    d}t          t          j                            d                              d                    }t          j        |||          }t          j        ||dz             d S )Nzdf * ~2rN   r[  r   )	r   r@   rR   rS   rT   r   r   r   r   )r   r/   r:   rt   r  r   s         r0   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+++++r2   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 )	NrN   rO   rO   rO   r=  r:  )   rO   r}  zdf + df2r   r   r@   rR   rS   rT   rq  r=  r   r  RuntimeWarningr   r   r   )
r   r/   r:   rw  rx  ry  rx   r  df2r   s
             r0   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 )NrN   r{  rO   r|  df < 2r   zdf < df3)r   r@   rR   rS   rT   r   r   r   r   r%  r=  r:  )	r   r/   r:   r  ry  rx   r  r   df3s	            r0   test_frame_comparisonz#TestAlignment.test_frame_comparison2  s   
 I!!!$$44X>>+-
+B//-M*-b11
 
 

 ghvf===
c26***I!!!$$44RX>>(J
 
 

 gj???
c28,,,,,r2   z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 )NrN   r!  r   r|  )   rN   r  r   rH   zdf + df2 + df3r   r~  )r   r/   r:   r  r  r  r  rx   r  r  r  r   s               r0   #test_medium_complex_frame_alignmentz1TestAlignment.test_medium_complex_frame_alignmentG  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_namer=  r:  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 )
NrN   r{  rO   r|  rH   df + sr   ru   r#   )r   r@   rR   rS   rT   getattrr   rq  r=  r   r  r  r   r   addr   )r   r/   r:   r  r  ry  rx   r  r=  rt   r   r   s               r0   !test_basic_frame_series_alignmentz/TestAlignment.test_basic_frame_series_alignmente  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_typerg   )ru   ru   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   r=  rg   rt   z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r%   strictrN   )rO      rO   r  r|  rH   zs + dfr   ru   )r   r(   r*   r   r   r@   rR   rS   rT   r  r   rq  r=  r   r  r  r   r   r  r   )r   r8   r/   r:   r  r  ry  rx   r%   r  r=  rt   r   r   s                 r0   !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   rT  rV  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 )NrN   r{  rO   r|  rH   zs z dfzdf z sr   ru   r#   )r   r@   rR   rS   rT   r  r   rq  r=  r   r  r  r   r   r   )r   r/   r:   r  r   r  ry  rx   r  r=  rt   rB   rD   r   r   s                  r0   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 )	Nr   rH   rN   r|  ru   r#   zdf2 + ser + dfr   )r   r@   rR   rS   rT   r:  r   r  rq  r=  r   r  r  r   r   r%  r   )r   r/   r:   r  r  r  r  rx   r_   m1m2r  r  r=  ser	expected2r   r   s                     r0   #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t          }nd}t          j        |          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d                    }t          j        d          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	                    }t          t          j                            d                              d                    }t          j        d          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d
                    }t          t          j                            d                              d                    }|dk    }|st          }nd}t          j        |          5 }t          j
        d||           |set          |          dk    sJ t          |d         j                  }	t          j        |j        |j        d         z
            }
d|
dd}|	|k    sJ d d d            d S # 1 swxY w Y   d S )NrN   )  rO   '  r#   Fr  r   r  )rO   r  r{  r   rQ   r   z_Alignment difference on axis 1 is larger than an order of magnitude on term 'df', by more than z.4gz; performance may suffer.)r   r@   rR   rS   rT   r   r   r   r  r   r   lenr>   messagelog10r   r%  )r   r/   r:   r  rt   seenis_python_enginewrnwr   loggedr   s               r0   +test_performance_warning_for_poor_alignmentz9TestAlignment.test_performance_warning_for_poor_alignment  s   ry,,Q//??
KKLL29((++;;EBBCCY%DDD'-- 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 29((++;;DAABB'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??LLMM29((++;;EBBCC'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??IIJJ29((++;;EBBCC!X- 	$CCC',, 	'GHVF;;;;# 	'1vv{{{{!A$,''!&28A;"677J$*IJ J J 
 h	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sI   #CCC%E		EE&H

HH9A?MM	M	N)rH  rI  rJ  index_typeslhs_index_typesrv  r(   r*   filterwarningsrK  r  r  r  r  listr   r  r  r  r  rw   r2   r0   rs  rs    s-       """K!SE)O, , , [ 899[]O<<[]K88[\;77- - 87 98 =< :9-* [\?;;[\?;;- - <; <;-& [ 899[T?33[T;//[T;//[T;//3 3 0/ 0/ 0/ 43 :9
32 [ 899[\GY+?@@[\;77[\?;;- - <; 87 A@ :9-. [\GY+?@@[ WWc3Z#s,,-->  [ 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*' *' *' *' *'r2   rs  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   rQ   popr   r   r   rn  kwargss      r0   r   zTestOperations.eval*  3     **Wa0014ww''''r2   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 rw   rw   )r.   r   exclude_ariths     r0   rh   z8TestOperations.test_simple_arith_ops.<locals>.<listcomp>3  s.     
 
 
&& &&&r2   c              3  &   K   | ]}|d k    |V  dS )z//Nrw   )r.   r   s     r0   r1   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>9  s&      44btr44r2   z1 z 1zx z (x + 1)r   z&argument of type 'int' is not iterabler   r   rQ   r   r   )	r   r   rM  r(   r   r   r   r   rG   )r   r/   r:   	arith_opsopsr   r   r   r   r   expecr   yr  s                @r0   test_simple_arith_opsz$TestOperations.test_simple_arith_ops.  s   X!8,M
 
 
 
)D,==
 
 
	 54I444 	" 	"BbBr+++C#r###C%%%>]9C888 > >GBvf====> > > > > > > > > > > > > > > )B6::IIbI??Ezzzz(B6::IIcsAhvfIUUEzzzz(BAv>>IIcsAhvfIUUEzzzzz)	" 	"s   7BB	"B	rD   TFrB   r   c                (   | d| d| }t           dk    rP|dv rLd}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   d S |                     |          }t	          |          }||k    sJ d S Nr\  r   r   r   r   r:   r(   r   r   r   r   rD   rB   r   r   r   r   r)  s           r0   test_simple_bool_opsz#TestOperations.test_simple_bool_opsQ         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           r0   test_bool_ops_with_constantsz+TestOperations.test_bool_ops_with_constantsa  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 )	NrN   )r   r  rH      rO   z?N-dimensional objects, where N > 2, are not supported with evalr   x + yr   r  r   )	r@   rR   rS   rT   r   r(   r   r   r   )r   r   r  r   s       r0   test_4d_ndarray_failsz$TestOperations.test_4d_ndarray_failsq  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1rQ   )r   )r   r   s     r0   test_constantzTestOperations.test_constantx  s"    IIcNNAvvvvvvr2   c                    t          t          j                            d                              d                    }|                     dd|i          }t          j        ||           d S )NrN   rO   rN   r  r  r   r@   rR   rS   rT   r   r   r   )r   r  r  s      r0   test_single_variablez#TestOperations.test_single_variable|  s_    ry,,Q//??HHIIii$i44
b#&&&&&r2   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 )NrN   r[  name 'x' is not definedr   zdf[x > 2] > 2)	r   r@   rR   rS   rT   r(   r   	NameErrorr   r   r  s     r0   &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 )NrN   r[  z(df + 1)[df > 2]r  r  rQ   r  r  s       r0   test_lhs_expression_subscriptz,TestOperations.test_lhs_expression_subscript  sr    ry,,Q//??GGHH-4*EEFBF#
fh/////r2   c           	        t          t          j                            d                              d          t          d                    }d}|j        |j        k     }d}|j        |j        z   |j        z   }d}|j        |j        z   |j        |j        dk              z   }|||f}|||f}	t          ||	          D ]1\  }
}t          j        ||                     |
d	|i
                     2d S )NrN   r[  abcr9  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   r  r  )r   r@   rR   rS   rT   r  r   r   rE   zipr   r   r   )r   r  expr1expec1expr2expec2expr3expec3exprsexpecsrF   r  s               r0   test_attr_expressionz#TestOperations.test_attr_expression  s    I!!!$$44V<<d5kk
 
 
 $rt#.rtBD1H~-ue#'E6** 	O 	OHAu"5$))A4*)*M*MNNNN	O 	Or2   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 )
NrN   r[  r  r9  zdf = df2%cannot assign without a target objectr   )r  r  r  )
r   r@   rR   rS   rT   r  r(   r   r=   r   )r   r  r  r  r   s        r0   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 )NrN   r   abr9  invalid syntaxr   zd c = a + b
r   r@   rR   rS   rT   r  r(   r   r<  r   r  s     r0   %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 )NrN   r   r  r9  z5left hand side of an assignment must be a single namer   zd,c = a + br  r?  s      r0   %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 )NrN   r   r  r9  zcannot assign to function callr   zTimestamp("20131001") = a + br  r?  s      r0   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 )
NrN   r   r  r9  r   r   	a = a + bTinplace
r   r@   rR   rS   rT   r  copyr   r   r   r   r  r   s      r0   &test_assignment_single_assign_existingz5TestOperations.test_assignment_single_assign_existing      I!!!$$44V<<d4jj
 
 
 7799 5
T***
b(+++++r2   c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	
           t          j	        ||           d S )NrN   r   r  r9  r   r   rE   	c = a + bTr  r  r  s      r0   !test_assignment_single_assign_newz0TestOperations.test_assignment_single_assign_new  r  r2   c                j   t          t          j                            d                              d          t          d                    }|                                }d}|                    dd           |                                }d|d	         z   |d
<   t          j	        ||           d S )NrN   r   r  r9  rQ   z	a = 1 + bTr  r   r   r  )r   r  r   r   s       r0   +test_assignment_single_assign_local_overlapz:TestOperations.test_assignment_single_assign_local_overlap  s    I!!!$$44V<<d4jj
 
 
 WWYY
T***7799HSM)
b(+++++r2   c                d   t          t          j                            d                              d          t          d                    }d}|j                                        }|                    dd           ||j	        z   }t          j        ||j        d	
           |j        J d S )NrN   r   r  r9  rQ   r  Tr  Fr  )r   r@   rR   rS   rT   r  r   r  r   r   r   r   r>  )r   r  r   old_ar   s        r0   "test_assignment_single_assign_namez1TestOperations.test_assignment_single_assign_name  s    I!!!$$44V<<d4jj
 
 
 		
T***
vrt????{"""""r2   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 )NrN   r   r  r9  r  Tr  z#can only assign a single expressionr   z	c = a = b)
r   r@   rR   rS   rT   r  r   r(   r   r<  r?  s      r0   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 )NrN   r   r  r9  zc = df.a + df.br  T)r   targetr  r   r   rE   
r   r@   rR   rS   rT   r  r   r  r   r   r  s      r0   test_assignment_explicitz'TestOperations.test_assignment_explicit  s    I!!!$$44V<<d4jj
 
 
 			#r
2t	TTT7799 5
b(+++++r2   c                    t          dgdgd          }|                    d          }t          dg          }t          j        ||d           d S )N   ir   r   za in [11, -32]TFr  )r   r   r   r   r   r  s       r0   test_column_inzTestOperations.test_column_in  sZ    bT..//)**4&>> 	vxUCCCCCCr2   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 )NrN   r   r  r9  r  Fr  r   r   rE   r  )r   r  actualr   s       r0   test_assignment_not_inplacez*TestOperations.test_assignment_not_inplace  s     I!!!$$44V<<d4jj
 
 
 e44!!!7799 5
b(+++++r2   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rQ   rN   r   r  rH   r  r  r   r   rE   d$
        c = a + b
        d = c + bTr  rQ   rN   rF   $
        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   warn_copy_on_writer  r   answerr   s         r0   test_multi_line_expressionz)TestOperations.test_multi_line_expression  s   YYYYYY77887799 5 5 	  
 
 	h+++~~~ ) ) 	  
 
 	h+++~~~ Q]:S111 	 	GG 	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,DDDc                   t          g dg dd          }|                                }|d         |d         z   |d<   |d         |d         z   |d<   |                    dd	
          }t          j        ||           |d         dz
  |d<   |d         dz   |d<   |                    dd	
          }t          j        ||           d S )Nr  r  r  r   r   rE   r  r  Fr  rQ   rN   rF   r  r   r  r   r   r   r  s      r0   &test_multi_line_expression_not_inplacez5TestOperations.test_multi_line_expression_not_inplace:  s    YYYYYY77887799 5 5WW 	  
 
 	h+++ ) )WW 	  
 
 	h+++++r2   c                    t          g dg dd          }|                                }d}|d         |z  |d<   |d         |z   |d<   |                    dd	
          }t          j        ||           |J d S )Nr  r  r  r  r   rE   r  z?
        c = a * @local_var
        d = c + @local_var
        Tr  r!  )r   r  r   	local_varr  s        r0   )test_multi_line_expression_local_variablez8TestOperations.test_multi_line_expression_local_variableS  s    YYYYYY77887799	 	1 	1   
 
 	h+++~~~~~r2   c                    t          g dg dd          }d }|                                }|d          |dd          z  |d<   |d          |dd          z   |d	<   |                    d
d          }t          j        ||           |J d S )Nr  r  r  c                    |S r5   rw   r  s     r0   
local_funczUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_funci      Hr2   r   rQ   r  rE   r  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr  r!  r   r  r(  r   r  s        r0   2test_multi_line_expression_callable_local_variablezATestOperations.test_multi_line_expression_callable_local_variablee  s    YYYYYY7788	 	 	 7799 

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

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

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

Q!(<(<(<<   
 
 	h+++~~~~~r2   c                   t          g dg dd          }|                                }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        ||           d S )Nr  r  r  r  r   za = 1)r   r  r(   r   r=   r/  r   r   )r   r  df_origr   s       r0   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 )Nr  r  r  r   rN   za == 2Tr  r   	a = 1 + 2r  r  )r   r  r/  r   r   r   assert_dict_equalr  s      r0   test_query_inplacez!TestOperations.test_query_inplace  s    YYYYYY77887799HSMQ./
4(((
h+++8		+b$	777
R*****r2   invalid_targetrQ   catrN   rQ   r   c                `   d}d}t          j        t          |          5  |                     ||d           d d d            n# 1 swxY w Y   t	          |d          rNt          j        t          |          5  |                     ||d           d d d            d S # 1 swxY w Y   d S d S )Nz)Cannot assign expression output to targetr3  r   Tr4  r  F)r(   r   r=   r   hasattrr   r7  r   
expressions       r0   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%)rQ   r8  r9  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 targetr3  r   Fr4  )r(   r   r=   r   r<  s       r0   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 + 2Fr4  r   z0Cannot operate inplace if there is no assignmentr   T)r   r(   r   r=   )r   r  r=  r   s       r0   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 )
NrN   rN   rN   rl   rq   rr   rn   r9  r  r  r  	r   r@   rR   rS   rT   r   r   r   r   )r   r  rF   rr   s        r0   *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#####r2   c                   t          t          j                            d                              d          t          ddd                    }|                     dd|i	          }||d
k              }t          j        ||           d S )NrN   rF  rl   rq   rG  r9  zdf[df < 2 + 3]r  r  rH   rH  r   r  rI  rF   s       r0   ,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#####r2   c                <   t          t          j                            d                              d          t          ddd                    }|                     dd|i	          }|||dk              dk              |dz  z   }t          j        ||           d S )
NrN   rF  rl   rq   rG  r9  zdf[df[df < 2] < 2] + df * 2r  r  rH  rL  s       r0   -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#####r2   c                &   t          t          j                            d                              d                    }t          dd          |d<   |                     dd|i||	          }|j        d
k     }t          j	        ||d           d S )NrN   r[  z1/1/2012rH   rm   dates1zdf.dates1 < 20130101r  r   20130101Fr  )
r   r@   rR   rS   rT   r   r   rQ  r   r   )r   r/   r:   r  r   r  s         r0   test_date_booleanz TestOperations.test_date_boolean  s    ry,,Q//??GGHH!*a8888ii"bz	  
 
 	J&
sEu======r2   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   r/   r:   r   r   s        r0   test_simple_in_opsz!TestOperations.test_simple_in_ops  s   X'-vFFFCJJJ'-vFFFCJJJ'-vFFFCNNN'+F6JJJCJJJ'-fVLLLCJJJ'+F6JJJCJJJ'/vNNNCJJJ'-fVLLLCJJJ'1&PPPCNNN'1&PPPCJJJJJ2C2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> R R26&QQQQR R R R R R R R R R R R R R R5C2#>>> I I)&HHHHI I I I I I I I I I I I I I I2#>>> R R26&QQQQR R R R R R R R R R R R R R R R R Rsl   5EE E?F##F'*F'	G--G14G1H77H;>H;JJ
J)KKKc                v    d}d                     d          }d}t          j        |||          }||k    sJ d S )NrQ   z * !aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   )r   r   r   )r   r/   r:   r   r   r   r   s          r0   test_check_many_exprsz$TestOperations.test_check_many_exprs  sD    zz(##gd6&999hr2   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 )
NrN   r[  r   r   not'Not' nodes are not implementedr   r  )r   r:   r/   
r   r@   rR   rS   rT   r(   r   r   r   r   )r   r   r/   r:   r  r   s         r0   test_fails_and_or_notz$TestOperations.test_fails_and_or_not"  s%    ry,,Q//??GGHHX6C}}72#>>>   $bz!!	                     G ":	     s   )BBBcharr   r   c                h   t          t          j                            d                              d                    }d| d}|dk    rOd}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S t          j	        |||           d S )	NrN   r[  z(df + 2)[df > 1] > 0 z	 (df > 0)r   z$cannot evaluate scalar only bool opsr   r  r\  )r   r^  r/   r:   r  r   r   s          r0   test_fails_ampersand_pipez(TestOperations.test_fails_ampersand_pipeA  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)3rH  rI  rJ  r   r  r(   r*   rK  r   rL  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r	  r  r  r  r   r  r  r"  r%  r+  r.  r1  r6  r@   r   r>  r@  rD  rJ  rM  rO  rS  rU  rX  r]  r`  rw   r2   r0   r  r  )  sf       ( ( (!" !" !"F [UT5M22[UT5M22[T4#566  76 32 32 [UT5M22[UT5M22[T4#566  76 32 32< < <  ' ' '
' ' '
0 0 0O O O@ @ @# # ## # #5 5 5, , ,, , ,
, 
, 
,
# 
# 
#! ! !, , ,D D D [EFF, , GF,# # #J, , ,2  $  (  (+ + ++ + + [-51a&("(2,,PV/WXX	L 	L YX	L [-/A/A/ABBH H CBH [X51a&("(2,,QRTUPV'WXX? ? YX?
$ 
$ 
$$ $ $$ $ $
> 
> 
>-R -R -R^   [	
 	
 	
   . [Vc3Z00	6 	6 10	6 	6 	6r2   r  c                     e Zd Zd Zej                            e d          ej                            de	          d                         Z
ej                            de          d             Zd Zd Zej                            d	ej        ej        fej        ej        fej        ej        fej        ej        f ej        ej        ej        ej        
          g          d             Zd Zd ZdS )TestMathc                \    |                     dd          dz   |d<   t          j        |i |S r  r  r  s      r0   r   zTestMath.evalO  r  r2   z&Unary ops only implemented for numexprr$   fnc                   t          dt          j                            d                              d          i          }|j        }| d}|                     |          }t          j        d          5   t          t          |          |          }d d d            n# 1 swxY w Y   t          j
        ||d           d S )	Nr   rN   rO   z(a)ignoreallFr  )r   r@   rR   rS   rT   r   r   errstater  r   r   )r   rd  r  r   r   gotr   s          r0   test_unary_functionszTestMath.test_unary_functionsS  s    
 RY22155EEbIIJKKDzzziioo[X&&& 	( 	($WR__Q''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
sF>>>>>>s   8B##B'*B'c                    t          t          j                            d                              d          t          j                            d                              d          d          }|j        }|j        }| d}|                     |          }t          j        d          5   t          t          |          ||          }d d d            n# 1 swxY w Y   t          j        ||d           d S )	NrN   rO   r  z(a, b)rf  rg  Fr  )r   r@   rR   rS   rT   r   r   r   ri  r  r   r   )r   rd  r  r   r   r   rj  r   s           r0   test_binary_functionszTestMath.test_binary_functionsa  s&   Y**1--==bAAY**1--==bAA 
 
 DD}}}iioo[X&&& 	+ 	+$WR__Q**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
sF>>>>>>s   0 CC #C c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        t          j        |j	                  |j
                  }t          j        ||d           d S )	NrN   rO   r  ze = arctan2(sin(a), b)Tr/   r:   r  Fr  )r   r@   rR   rS   rT   r   rF   arctan2sinr   r   r   r   r   r/   r:   r  rj  r   s         r0   test_df_use_casezTestMath.test_df_use_caser  s    Y**1--==bAAY**1--==bAA 
 
 	$	 	 	
 	
 	
 dBF24LL"$//
sF>>>>>>r2   c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        |j        |j	        z             }t          j        ||d           d S )	NrN   rO   r  ze = sin(a + b)Tro  Fr  )r   r@   rR   rS   rT   r   rF   rq  r   r   r   r   rr  s         r0    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$$
sF>>>>>>r2   zdtype, expect_dtyper&   c                   t          dt          j                            d                              d                              |          i          }|j        j        |k    sJ |                    d||d           |j	        }t          j
        |j                  }|j        |j        k    sJ ||j        k    sJ t          j        ||d           d S )	Nr   rN   rO   z
b = sin(a)Tro  Fr  )r   r@   rR   rS   rT   r   r   r[   r   r   rq  r   r   )r   r[   expect_dtyper/   r:   r  rj  r   s           r0   test_result_typeszTestMath.test_result_types  s      ")''**::2>>EEeLLM
 
 tzU""""
VFDIIId|sy((((sy((((
sF>>>>>>r2   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   rN   rO   z#"mysin" is not a supported functionr   zmysin(a)r   )	r   r@   rR   rS   rT   r(   r   r=   r   r   r/   r:   r  r   s        r0   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   rN   rO   z1Function "sin" does not support keyword argumentsr   zsin(x=a)r   )	r   r@   rR   rS   rT   r(   r   r   r   rz  s        r0   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)rH  rI  rJ  r   r(   r*   r+   r   rK  r    rk  r   rm  rs  ru  r@   int32rb   r]   float32r)   
complex128r,   rQ  rx  r{  r~  rw   r2   r0   rb  rb  N  sp       ( ( ( [&N    [T?33? ? 43 ? [T#344? ? 54? ? ? ?"
? 
? 
? [Xrz"Xrz"Z$Z$FLR=OPPP	
	 	? ?	 	?"> > >> > > > >r2   rb  rN   rO   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 * 2rN   r   )r   r   _var_sr   r   )r   r/   r:   rF   s       r0   test_global_scopezTestScope.test_global_scope  s@    
#QJ&@@@	
 	
 	
 	
 	
r2   c                    d}t                                                      }t          j        d|||           t                                                      }|                    d           ||k    sJ d S )NrQ   x + 1r   lcls)localsr  r   r   r  )r   r/   r:   r   r  lcls2s         r0   test_no_new_localszTestScope.test_no_new_locals  se    xx}}
DGGGG		&u}}}}}}r2   c                    d}t                                                      }t          j        d||           t                                                      }||k    sJ d S )NrQ   r  r   )globalsr  r   r   )r   r/   r:   r   gblsgbls2s         r0   test_no_new_globalszTestScope.test_no_new_globals  sU    yy~~
v6666		  u}}}}}}r2   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 )NrQ   r  r   r  r   r(   r   r	   r   r   )r   r/   r:   r   r   s        r0   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rA  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   )r/   r:   global_dictr  )r   r/   r:   r   rF   s        r0   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rA  N)rH  rI  rJ  r  r  r  r  r  rw   r2   r0   r  r    sg        
 
 
    J J JE E E E Er2   r  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  rQ   rN   r  asdf)r   r/   r(   r   KeyErrorr   r   r   s    r0   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       r0   test_numexpr_option_respectedr    s     ;:::::		0+	>	> " "t$$!!!!!" " " " " " " " " " " " " " " " " "s   >AAc                    t          j        dd          5  t          g dg dd          } |                     d          }t          d d gddgdd	dg
          }t	          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  F)TFTFNN)rQ   rN   r   r  rH   r  )r,  Bz
A.isnull()rH   r  r  )r=  )r   r  r   r/  r   r   )r  r   r   s      r0   #test_numexpr_option_incompatible_opr    s     
	0%	8	8 0 0888?Q?Q?QRR
 
 ,''D$<q!f==aVLLL
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AA>>BBc                     d} t          j        t          |           5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )	NzInvalid parser 'asdf' passedr   r  rQ   rN   r  r  )r   r:   r  r  s    r0   test_invalid_parserr    r  r  )r   r   r   z dict[str, type[BaseExprVisitor]]_parsersr/   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  )r/   r:   VisitorClassinstr  r   s         r0   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   r<  r   r   )r/   r:   rF   s      r0   test_syntax_error_exprsr    s    A	{*:	;	;	; 1 1
&00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA
Ac                    d}d}t          j        t          |          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )Nzs + tzname 's' is not definedr   r   )r(   r   r  r   r   )r/   r:   rF   r   s       r0   test_name_error_exprsr  %  s    A
#C	y	,	,	, 1 1
&00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA	A	express)za + @bz@a + bz@a + @bc                L   d\  }}|dk    rMt          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S t          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )NrQ   rN   r   zThe '@' prefix is onlyr   r   zThe '@' prefix is notr  )r/   r:   r  r   r   s        r0   %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   )r/   r:   rq  dotted_liner   r   s         r0   test_numexpr_builtin_raisesr  8  s    C*]1=== 	G 	GG'vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G g)&HHHcK'''''''s   AAAc                    d}t          j        t          d          5  t          j        d|| |           d d d            d S # 1 swxY w Y   d S )N)*   g      @zResolver of type .+r   rC  )	resolversr/   r:   )r(   r   r   r   r   )r/   r:   cannot_resolves      r0   test_bad_resolver_raisesr  C  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     r0   test_empty_string_raisesr  I  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     r0   $test_more_than_one_expression_raisesr  O  s    	{*O	P	P	P > >
vf====> > > > > > > > > > > > > > > > > >r  cmpr   rB   rD   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 )NrN   rO   )r@   rR   rS   r   rw   r2   r0   r`   z0test_bool_ops_fails_on_scalars.<locals>.<lambda>Y  s$    RY**1--66r:: r2   rN   r   r   r   r   r   r   r   r"  r   r   )intrK   r@   rR   rS   rT   r(   r   r   r   r   )rB   r  rD   r/   r:   genr   r   r   r   r   r   s               r0   test_bool_ops_fails_on_scalarsr  T  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          rd |_        t          j        ||           d S )Nr,  )r   r   rE   rZ   r.  )FFFr>  )r   objectr   r   r   r>  r   r   )r  r  r   r   s       r0   test_equals_variousr  j  sy     
C)	8	8	8BWW_U__%%F+++#666H  68,,,,,r2   c                `    d}t           j        }t          j        || |          }||k    sJ d S )Nzinf + 1r   )r@   infr   r   )r/   r:   rt   r   r   s        r0   test_infr  |  s;    AvHWQvf555FXr2   columnu	   Temp(°C)u   Capacitance(μF)c                   t          t          j                            d                              d          |dg          }|||         dk             }d| d}|                    ||           }t          j        ||           d S )	NrN   r   r   r9  rH   `z` > 5)r/   )r   r@   rR   rS   rT   r/  r   r   )r/   r  r  r   query_stringr   s         r0   test_query_tokenr    s     

	a  008863-
 
 
B "V*q.!H$v$$$LXXl6X22F&(+++++r2   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   rO   rQ   r}  r8  countr9  z
~(cat > 0)r   r   r[  r   znot (cat > 0))r   r8  r/  r   r   r(   r   r   )r/   r:   r  r   r   r   s         r0   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%   rN   r   d   r  r   col1r9  r  z>6)r   r(   r*   r   r  r   r@   rR   rS   r   r/  r   r   )r8   r  r  r   r   s        r0    test_eval_no_support_column_namer    s     000KMVMM   	
 	
 	
 

	a  ))!Sw)?? 
 
 
B "V*q.!HXXmmm$$F&(+++++r2   c                D   t          g dg dg dd          }|d d          }|d         }t          j        |          5  |                    dd           d d d            n# 1 swxY w Y   t          g d	g dg dd          }t          j        ||           | s>t          j        ||d                    t          j        |d         |d                    d S t          g dd
          }t          j        ||           t          j        |d         |           d S )Nr  r  )r     	   )r,  r  Cr,  z	A = B + CTr  )r        r  )r   r   assert_cow_warningr   r   r   r   )using_copy_on_writer  r  result_viewr  r   s         r0   test_set_inplacer    sx    
CC	D	DBQQQ%K
S'C		1	2	2 + +
T***+ + + + + + + + + + + + + + +|||))))))LLMMH"h''' ;
sHSM222
{3/#?????)))#...
sH---
{3/:::::s    A$$A(+A(c                  b    e Zd Zej                            dddg ddg          d             ZdS )TestValidatevaluerQ   r  r  g      @c                    d}t          j        t          |          5  t          j        d|           d d d            d S # 1 swxY w Y   d S )Nz8For argument "inplace" expected type bool, received typer   z2+2r  r  )r   r  r   s      r0   test_validate_bool_argsz$TestValidate.test_validate_bool_args  s    H]:S111 	* 	*GE5))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AA	AN)rH  rI  rJ  r(   r*   rK  r  rw   r2   r0   r  r    sN        [Wq&)))S&ABB* * CB* * *r2   r  )k
__future__r   	functoolsr   	itertoolsr   rk  numpyr@   r(   pandas.compatr   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   r    pandas.core.computation.scoper!   fixturer/   PARSERSr:   rG   r  rj   rB   rD   r   rx   rz   rS  rq  rs  r  rb  rR   rS   rT   r  r  r-   r  r*   rK  r  r  r  PyTablesExprVisitorr  __annotations__r  r  r  r  r  r  r  r  r  rK   r  r  r  r  r  keysr  r  r  rw   r2   r0   <module>r     s   " " " " " " "                                 
 * ) ) ) ) ) ) ) )                                            4 3 3 3 3 3         
                     : 9 9 9 9 9         !   t|$$$  %$   4a>>EEE   	  
   ]	W ]	W ]	W ]	W ]	W ]	W ]	W ]	WH? ? ? ? ? ? ? ?<$ $ $S' S' S' S' S' S' S' S'tb6 b6 b6 b6 b6 b6 b6 b6Jh> h> h> h> h> h> h> h>V 
		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 , ,	 ,(; ; ;(* * * * * * * * * *r2   