
    .i                      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mZ d dlmZ d dlmZmZmZ d dlmc mZ d dlmZmZmZmZ d dlZd d	lmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z& d d
l'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/ d dl0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;  edd      Z< e	jz                  d e+D              d        Z> e	jz                  e(j~                        d        Z@d ZA e	jz                   eB eCd            g d      d        ZDeDZEeDZFe	jz                  d        ZG G d d      ZH G d  d!      ZId" ZJ G d# d$      ZK G d% d&      ZL G d' d(      ZMej                  j                  d)      j                  d*      ZQ G d+ d,      ZR ej                  d      d-        ZT ej                  d      e	j                  j                  d.d/      d0               ZW ej                  d      d1        ZX ej                  d      d2        ZYe/e)j                  e.d3Z[d4e\d5<   e	j                  j                  d6e+      e	j                  j                  d7e[      d8               Z]d9 Z^d: Z_e	j                  j                  d;g d<      d=        Z`d> Zad? Zbd@ ZcdA Zde	j                  j                  dBdC      e	j                  j                  dDeeeff      e	j                  j                  dEeeeff      dF                      Zge	j                  j                  dGdHdIg      dJ        ZhdK Zie	j                  j                  dLdMdNg      dO        ZjdP Zke	j                  j                  dL e9j                               dQ        ZmdR Zne	j                  j                  dSdTdUg dVdWg      dX        Zo ej                  d      dY        ZpdZ Zqy)[    )annotations)reduce)productN)PY312PY314)import_optional_dependency)NumExprClobberingErrorPerformanceWarningUndefinedVariableError)is_boolis_floatis_list_like	is_scalar)	DataFrameIndexSeries
date_rangeperiod_rangetimedelta_range)exprpytables)ENGINES)BaseExprVisitorPandasExprVisitorPythonExprVisitor)NUMEXPR_INSTALLEDUSE_NUMEXPR)ARITH_OPS_SYMS_binary_math_ops_binary_ops_dict_unary_math_ops)DEFAULT_GLOBALS)Versionnumexprignore)errorsc              #     K   | ]i  }t        j                  |t         j                  j                  |d k(  xr t         dt         dt
               t        j                  d       g       k yw)r$   znumexpr enabled->z, installed->reasonmarksN)pytestparammarkskipifr   r   td
skip_if_no).0engines     `/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/computation/test_eval.py	<genexpr>r5   B   s{        	""i';O.{m <""3!46 # 
 i(
	
 
	
s   A/A1)paramsc                    | j                   S Nr-   requests    r4   r3   r3   A   s    " ==    c                    | j                   S r8   r9   r:   s    r4   parserr>   U   s    ==r<   c                    t         |   }t        |   j                  r
	  || |      S  || |      S # t        $ r5}t	        |      j                  d      rt        j                  cY d }~S  d }~ww xY w)Nz6negative number cannot be raised to a fractional power)r    r   has_neg_frac
ValueErrorstr
startswithnpnan)lhscmp1rhsr3   ces         r4   _eval_single_binrK   Z   sm    Av##	S#; S#;  	1v  H vv	s    0 	A.)A)"A.(A))A.   )r   r   	SeriesNaNDataFrameNaNfloat)r6   idsc                F   t         j                  j                  d      }| j                  dk(  rt	        |j                  d            S | j                  dk(  rt        |j                  d            S | j                  dk(  r,t        ddt         j                  t         j                  dg      S | j                  dk(  r2t	        |j                  d            }t         j                  ||dkD  <   |S | j                  dk(  r|j                         S t        | j                         )	N   r   )
   rL      rL            ?   )	rD   randomdefault_rngr-   r   standard_normalr   rE   rA   )r;   rngnan_df1s      r4   rF   rF   i   s    
 ))


"C}},,W566	!	c))!,--	!	q!RVVRVVQ/00	!	C//89!##	!	""$$GMM?,,r<   c                      d d d d d d dS )Nc                ^    t        t        j                  |       t        j                        S Ndtype)r   rD   arangeint64ns    r4   <lambda>zidx_func_dict.<locals>.<lambda>   s    uRYYq\: r<   c                ^    t        t        j                  |       t        j                        S r_   )r   rD   rb   float64rd   s    r4   rf   zidx_func_dict.<locals>.<lambda>   s    uRYYq\< r<   c           
     t    t        t        dd| z         D cg c]  }| dt        |        c}      S c c}w )Na   _)r   rangechr)re   is     r4   rf   zidx_func_dict.<locals>.<lambda>   s2    uuRa7HI!1SVHoIJ Is   5c                    t        d|       S )N
2020-01-01periods)r   rd   s    r4   rf   zidx_func_dict.<locals>.<lambda>   s    
<; r<   c                    t        d|       S )Nz1 dayrq   )r   rd   s    r4   rf   zidx_func_dict.<locals>.<lambda>   s    ; r<   c                    t        d| d      S )Nrp   D)rr   freq)r   rd   s    r4   rf   zidx_func_dict.<locals>.<lambda>   s    |L!#F r<   )rn   fsdtr0   p r{   r<   r4   idx_func_dictr|      s      ;<J;;F r<   c            	          e Zd Zej                  j                  dg dg d      ej                  j                  dddgdd	g      ej                  j                  d
ej                        d                      Zej                  j                  dej                        d        Z
ej                  j                  dej                        d        Zej                  j                  dddg      ej                  j                  dddg      d               Zej                  j                  d e ee      j!                  h d                  d        Zd Zd Zej*                  d        Zd Zd Zd Zd Zd Zej                  j                  dej:                  j=                  d      j?                  d      ej:                  j=                  d      jA                  dd        ejB                  g d!ejD                  "      g      d#        Z#ej                  j                  dej:                  j=                  d      j?                  d      ej:                  j=                  d      jA                  dd        ejB                  g d!ejD                  "      g      d$        Z$d% Z%d& Z&ej                  j                  d'd(d)g      d*        Z'd+ Z(ej                  j                  d,d-      d.        Z)d/ Z*d0 Z+d1 Z,d2 Z-d3 Z.d4 Z/d5 Z0d6 Z1y7)8TestEvalrG   )z!=z==z<=z>=<>)neeqlegeltgt)rP   cmp2r   r   r   r   binopc                   |dk(  rO|dv rKd}d| d| d| d}	t        j                  t        |      5  t        j                  |	||	       d d d        y t        ||||      }
t        ||||      }t        |
|||      }d| d| d| d}	t        j                  |	||	      }t        j                  ||       y # 1 sw Y   y xY w)
Npythonandor"'BoolOp' nodes are not implemented(lhs z rhs) z (lhs  rhs)matchr3   r>   )r,   raisesNotImplementedErrorpdevalrK   tmassert_equal)selfrG   r   r   rF   rH   r3   r>   msgexlhs_newrhs_newexpectedresults                 r4   test_complex_cmp_opszTestEval.test_complex_cmp_ops   s     X%="86CfUG6$u=B2#> :6&9:"3c6:"3c6:#GUGVDTF&vdV59F6:
):s   B::Ccmp_opc           	     .   |dk  }|dk  }|dk(  rI|dv rEd}d| d}t        j                  t        |      5  t        j                  |||       d d d        y d| d}d	j                  d
dg      }|dv rLt        |      sAt        j                  t        |      5  t        j                  |||||d       d d d        y t        ||||      }t        j                  |||      }	t        j                  |	|       y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   r   innot in&'(In|NotIn)' nodes are not implementedlhs  rhsr   r   |zvonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')bool(`|')z!argument of type 'bool' is not .*rF   rH   r3   r>   
local_dict)r,   r   r   r   r   joinr   	TypeErrorrK   r   r   )
r   r   rF   rH   r3   r>   r   r   r   r   s
             r4   test_simple_cmp_opszTestEval.test_simple_cmp_ops   s    AgAgX&,<"<:Cxt$B2#> :6&9:F84 hh" 4	
 %%l3.?y4 !!'*37	  (VS&AHWWRv>FOOFH-1: s   C?D?DDopc           	     8   |dk(  rI|dv rEd}d| d}t        j                  t        |      5  t        j                  |||       d d d        y t        |      rJt        |      s?|dv r;|dk(  r6|dk(  r1t         j                  j                  d	
      }	|j                  |	       ddg}
d| d}dj                  ddg      }t        |      rE||
v rAt        j                  t        |      5  t        j                  |||||d       d d d        y t        |      rt        |      rd ||fD        \  }}t        ||||      }t        |      r| }n| }t        j                  |||      }t        j                  ||       y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   r   r   z~(lhs r   r   r   pandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectr(   r   r   r   zwonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')float(`|')z"argument of type 'float' is not .*r   r   c              3  H   K   | ]  }t        j                  |g        y wr8   )rD   arrayr2   xs     r4   r5   z3TestEval.test_compound_invert_op.<locals>.<genexpr>   s     >aBHHaSM>s    ")r,   r   r   r   r   r   r.   xfailapplymarkerr   r   r   rK   r   assert_almost_equal)r   r   rF   rH   r;   r3   r>   r   r   r.   
skip_theser   r   s                r4   test_compound_invert_opz TestEval.test_compound_invert_op   s   X"(8"8:C"U#B2#> :6&9: SMSM&&("(";;$$? % D %H%
bThh# 5	
 S>bJ.y4 !!'*37	  ~)C.>C:>S'Rf=H"'<$9WWRv>F""8V4[:4 s   F+FFFc                   |}|dk(  rHd| d| d}	d}
t        j                  t        |
      5  t        j                  |	||       d d d        y t        ||||      }t        ||||      }|e|bd| d| d}	d| d| d}d	| d
| d}t        |d||      }|	||fD ]0  }t        j                  |||      }t        j                  ||       2 y y y # 1 sw Y   y xY w)Nr   r    mid r   r   r   r    mid and mid r    mid) & (mid r   &)r,   r   r   r   r   rK   r   r   )r   rG   r   rF   midhsrH   r3   r>   midex1r   r   r   ex2ex3r   r   r   s                     r4   test_chained_cmp_opzTestEval.test_chained_cmp_op   s    XeD6.C6C2#> ;F6:;"3c6:"3c6:7#6eD6.CmD66C$}TF%8C'gvFHCo 9F6B&&vx89 $7;s   CCarith1>   %**//c                   d| d}t        j                  |||      }t        ||||      }t        j                  ||       d| d| d}t        j                  |||      }t        ||||      }		 |	j                  |      \  }	}
|dk(  r:dd l}|j                  d| d      }t        j                  |j                  |       y t        d| d      }t        j                  ||       y # t        t        t        f$ r Y y w xY w)	Nr   r   r   z rhs r$   r   znlhs z ghs)r   r   rK   r   r   alignr$   evaluatevaluesrA   r   AttributeError)r   r   rF   rH   r3   r>   r   r   r   nlhsghsr   s               r4   test_binary_arith_opszTestEval.test_binary_arith_ops  s    F84 F6:#Cf=
vx0F85-F6:VS&9	9

3ID# "$ ;;vhd';<
 &&v}}h?%xt 45&&vx8# I~6 	 	s   3C, ,DDc                   d}t        j                  |||      }||z  }t        j                  ||       |dk(  rqdd l}|j                  d      }t        |t        t        f      r!t        j                  |j                  |       y t        j                  ||j                                y t        |d||      }t        j                  ||       y )Nz	lhs % rhsr   r$   r   zexpected % rhsr   )r   r   r   r   r$   r   
isinstancer   r   r   itemrK   )	r   rF   rH   r3   r>   r   r   r   r   s	            r4   test_moduluszTestEval.test_modulus9  s    F6:9
vx0Y {{#45H&9f"56&&v}}h?&&vx}}?'#sFCH""684r<   c                j   d}|dk(  s*|dk(  rYt        t        j                        t        d      k\  r4t        j                  |||      }||z  }t        j                  ||       y d}t        j                  t        |      5  t        j                  |||d||	       d d d        y # 1 sw Y   y xY w)
Nz
lhs // rhsr   r$   2.13.0r   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'r   r   r   r3   r>   )
r#   r$   __version__r   r   r   r   r,   r   r   )	r   rF   rH   r3   r>   r   resr   r   s	            r4   test_floor_divisionzTestEval.test_floor_divisionK  s    XiGG,?,?$@GHDU$U''"VF;CczHOOC*!  y4 '*37!!	  s   B))B2c                @   d}t        |d||      }t        j                  |||      }t        |      r}t        |      rrt	        |t
        t        j                  f      rRt        j                  |      r=d}t        j                  t        |      5  t        j                  ||       d d d        y t        j                  ||       d}t        j                  |||      }t        |d||      }	t        |	d||      }t        j                  ||       y # 1 sw Y   y xY w)Nz
lhs ** rhsr   r   z-(DataFrame.columns|numpy array) are differentr   z(lhs ** rhs) ** rhs)rK   r   r   r   r   complexrD   complexfloatingisnanr,   r   AssertionErrorr   assert_numpy_array_equalr   )
r   rF   rH   r3   r>   r   r   r   r   middles
             r4   test_powzTestEval.test_powa  s     #CsF;F6: cN#8gr/A/A%BC AC~S9 >++FH=> > ""684&BWWRv>F%c4f=F'c6BH""684> >s   DDc                    	 |j                  t              }| }t        j                  d||      }t        j                  ||       y # t        $ r" t        j                  t        |      g      }Y \w xY w)Nz~elbr   )	astypeboolr   rD   r   r   r   r   r   )r   rF   r3   r>   elbr   r   s          r4   test_check_single_invert_opz$TestEval.test_check_single_invert_op{  se    	(**T"C 4v>
x0	  	(((DI;'C	(s   A	 	(A43A4c                   d}t        t        j                  j                  d      j	                  d            }|dk(  r?d}t        j                  t        |      5  t        j                  |||       d d d        n>d}t        j                  t        |      5  t        j                  |||       d d d        t        t        j                  j                  d      j                  d	d
            }|dk(  rdt        t        j                        t        d      k  r?d}t        j                  t        |      5  t        j                  |||       d d d        n1| }t        j                  |||      }t        j                   ||       t        t        j                  j                  d      j	                  d      dkD        }| }t        j                  |||      }t        j                   ||       t        g dt        j                  j                  d      j	                  d      dkD  d      }|dk(  r=t        j                  t"        d      5  t        j                  |||       d d d        y d}t        j                  t        |      5  t        j                  |||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   OxY w# 1 sw Y   y xY w# 1 sw Y   y xY w)N~lhsrR   rL   rR   r$   -couldn't find matching opcode for 'invert_dd'r   r   0ufunc 'invert' not supported for the input typesrL   sizer   )couldn't find matching opcode for 'invertrV   arT   g       @rU   )brI   unknown type object#bad operand type for unary ~: 'str')r   rD   rX   rY   rZ   r,   r   r   r   r   r   integersr#   r$   r   r   assert_frame_equalrA   )r   r3   r>   r   rF   r   expectr   s           r4   test_frame_invertzTestEval.test_frame_invert  sl   
 		--a0@@HIYAC2#> <VF;< < ECy4 <VF;< 		--a099!&9IJY77+>+>#?'(BS#S=C2#> <VF;< < TFWWT&@F!!&&1 		--a0@@H3NOfV<
ff- bii&;&;A&>&N&Nq&QTW&WX
 Yz1FG <VF;< < 8Cy4 <VF;< <C< << << <$< << <s<   J:K<KK!K-:KKK!K*-K6c                   d}t        t        j                  j                  d      j	                  d            }|dk(  r?d}t        j                  t        |      5  t        j                  |||      }d d d        n>d}t        j                  t        |      5  t        j                  |||       d d d        t        t        j                  j                  d      j                  dd	            }|dk(  rdt        t        j                        t        d
      k  r?d}t        j                  t        |      5  t        j                  |||       d d d        n1| }t        j                  |||      }t        j                   ||       t        t        j                  j                  d      j	                  d      dkD        }| }t        j                  |||      }t        j                   ||       t        g d      }|dk(  r=t        j                  t"        d      5  t        j                  |||       d d d        y d}t        j                  t        |      5  t        j                  |||       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   rR   rL   r$   r   r   r   r   r   r   r   rV   r   r   r   )r   rD   rX   rY   rZ   r,   r   r   r   r   r   r   r#   r$   r   r   assert_series_equalrA   )r   r3   r>   r   rF   r   r   r   s           r4   test_series_invertzTestEval.test_series_invert  sI    RYY**1-==a@AYAC2#> EfVDE E ECy4 <VF;< RYY**1-66qq6ABY77+>+>#?'(BS#S=C2#> <VF;< < TFWWT&@F""662 RYY**1-==a@3FGfV<
vv. ]#Yz1FG <VF;< < 8Cy4 <VF;< <GE E< << <(< << <s<   JJ<J"'J/&J;JJ"J,/J8;Kc                "   d}t        t        j                  j                  d      j	                  d            }| }t        j                  |||      }t        j                  ||       t        t        j                  j                  d      j                  dd            }| }t        j                  |||      }t        j                  ||       t        t        j                  j                  d      j	                  d      dkD        }|dk(  r?d	}t        j                  t        |
      5  t        j                  |||       d d d        y | }t        j                  |||      }t        j                  ||       y # 1 sw Y   y xY w)N-lhsrR   r   r   rL   r   rV   r$   *couldn't find matching opcode for 'neg_bb'r   )r   rD   rX   rY   rZ   r   r   r   r   r   r,   r   r   r   r3   r>   r   rF   r   r   r   s           r4   test_frame_negatezTestEval.test_frame_negate  sF    		--a0@@HIfV<
ff- 		--a099!&9IJfV<
ff- 		--a0@@H3NOY>C2#> <VF;< < TFWWT&@F!!&&1< <   1FFc                "   d}t        t        j                  j                  d      j	                  d            }| }t        j                  |||      }t        j                  ||       t        t        j                  j                  d      j                  dd            }| }t        j                  |||      }t        j                  ||       t        t        j                  j                  d      j	                  d      dkD        }|dk(  r?d}t        j                  t        |	      5  t        j                  |||       d d d        y | }t        j                  |||      }t        j                  ||       y # 1 sw Y   y xY w)
Nr   rR   rL   r   r   rV   r$   r  r   )r   rD   rX   rY   rZ   r   r   r   r   r   r,   r   r   r  s           r4   test_series_negatezTestEval.test_series_negate  sF    RYY**1-==a@AfV<
vv. RYY**1-66qq6ABfV<
vv. RYY**1-==a@3FGY>C2#> <VF;< < TFWWT&@F""662< <r  rF   rR   r   rL   r   )TFTFTr`   c                ~    t        |      }d}|}t        j                  |||      }t        j                  ||       y Nz+lhsr   )r   r   r   r   r   r   rF   r3   r>   r   r   r   s          r4   test_frame_poszTestEval.test_frame_pos  s9     nfV<
ff-r<   c                ~    t        |      }d}|}t        j                  |||      }t        j                  ||       y r  r   r   r   r   r   r	  s          r4   test_series_poszTestEval.test_series_pos(  s9     SkfV<
vv.r<   c                    d}d }t         r
|dk(  r|dk(  st        r|dk(  r|dk(  st        }t        j                  t
        |      5  t        j                  d||       d d d        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        t        j                  |dd      5  t        j                  d||      dk(  sJ 	 d d d        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 y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nz%bad operand type for unary ~: 'float'r$   r   r   z~1.0r   z-1.0r>   r3   g      z+1.0g      ?z~1z-1z+1rT   zBitwise inversionF)r   check_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)
r   r   DeprecationWarningr,   r   r   r   r   r   assert_produces_warning)r   r3   r>   r   warns        r4   test_scalar_unaryzTestEval.test_scalar_unary;  s   5f	)f.@6Y.6X3E%D]]9C0 	:GGF6&9	: wwvfV<DDDwwvfV<DDDwwtF6:b@@@wwtF6:b@@@wwtF6:b@@@''+e
 	K 7776&AUJJJ	K ''+e
 	M 778F6BfLLL	M wwwvf=FFFwwxv>&HHHwwwvf=FFFwwxv>&HHH'	: 	:	K 	K	M 	Ms$   G+G8H+G58HHc                    t        j                  t        j                  d      t         j                        }t        j                  g dt         j                        }t        j                  ||       y )Nz>[-True, True, +True, -False, False, +False, -37, 37, ~37, +37]r`   )
r  TrT   r   Fr   i%   ir  )rD   r   r   r   object_r   r   )r   r   r   s      r4   test_unary_in_arrayzTestEval.test_unary_in_arrayW  sV     GGTU**
 88 **
 	##FH5r<   r   zx < -0.1z-5 > xc                    t        dt        j                  dg|      i      }|j                  |      }|j                  t        j                  dg      k(  sJ y )Nr   r   r`   F)r   rD   r   r   r   )r   float_numpy_dtyper   dfr   s        r4   test_float_comparison_bin_opz%TestEval.test_float_comparison_bin_opp  sK     RXXqc1BCDEggdmzzRXXug....r<   c                h   t        dddt        j                  gi      }|j                  d      }|j                  j                  d      }t        j                  ||t                |j                  d      }|j                  j                  dd      }t        j                  ||t                y )	Nr   r   rT   zx.fillna(-1)r  check_nameszx.shift(1, fill_value=-1))
fill_value)
r   rD   rE   r   r   fillnar   r   r   shiftr   r  r   r   s       r4   test_unary_in_functionzTestEval.test_unary_in_functionw  s    aBFF^,-(44;;r? 	vx_M4544::aB:/
vx_Mr<   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                j   t         j                  j                  d      j                  d      dd}}}t	        t         j                  j                  d      j                  d            }d}t        j                  t        |      5  t        j                  |||       d d d        y # 1 sw Y   y xY w)NrR   rU   rT   rU   rR   ;cannot evaluate scalar only bool ops|'BoolOp' nodes are notr   r   )
rD   rX   rY   rZ   r   r,   r   r   r   r   )	r   r   r3   r>   r   r   r   r  r   s	            r4   test_disallow_scalar_bool_opsz&TestEval.test_disallow_scalar_bool_ops  s     ))''*::1=q!a1ryy,,Q/??GHK]].c: 	6GGBvf5	6 	6 	6s   B))B2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 y )NrT   r   r   g      ?F)rT   )	r   r   r   r   rD   r   r   r   shape)r   r3   r>   r   r   s        r4   test_identicalzTestEval.test_identical  s   VF;{{   VF;}}   VF;zv   HHaSMVF;
##FBHHaSM:||t###HHcUOVF;
##FBHHcUO<||t###HHeWVF;
##FBHHeW,=>||t###r<   c                F    d}t        j                  |||      }|dk(  sJ y )Nz1 + 2 *         5 - 1 + 2 r      r   r   )r   r3   r>   expr   s        r4   test_line_continuationzTestEval.test_line_continuation  s'    VF;||r<   c                   d}t        j                  |||      }t        j                  |      }||k(  sJ t	        dg di      }d}|j                  d|d      }|j                  sJ d}|j                  d	|d      }|j                  d
dgd d f   }t        j                  ||       d}|j                  d|d      }|j                  d
gd d f   }t        j                  ||       y )Nz1000000000.006r   A)g~  eA$  eAg'1  eAg  eAzA < z.4fg   eAzA > rT   rR   r5  A == )
r   r   rD   rh   r   queryemptylocr   r   )	r   r3   r>   r1  r   r   r  cutoffexacts	            r4   test_float_truncationzTestEval.test_float_truncation  s    VF;::c?!!!PQR D-.||| D-.661a&!)$
h/E%-.661#q&>
h/r<   c                f   t        g dgg d      }d}t        j                  t        |      5  |j	                  d       d d d        t               }d|j
                  _        t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   ZxY w# 1 sw Y   y xY w)	N)r   r   r   )foobarclasscolumnsz4Python keyword not valid identifier in numexpr queryr   z
class == 0lambdazlambda == 0)r   r,   r   SyntaxErrorr7  indexnamer   r  r   s      r4   test_disallow_python_keywordsz&TestEval.test_disallow_python_keywords  s    	{,CDD]];c2 	#HH\"	# [ ]];c2 	$HH]#	$ 	$	# 	#
	$ 	$s   B B'B$'B0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        y # 1 sw Y   y xY w)	NF)r  znot Truer  z	not Falser  zTrue and not Truer   )r   maybe_produces_warningr  r   r   r   )r   s    r4   test_true_false_logiczTestEval.test_true_false_logic  sv     &&
 	5 77:&",,,77;'2---77./1444	5 	5 	5s   AA::Bc                X   t        ddi      }t        j                  |j                  j	                  d      j
                         sJ t        j                  |j                  j	                  d      j
                  xr% |j                  j	                  d      j
                         sJ y )Nr   hello)r   r   r   rB   r   r   )r   events     r4   test_and_logic_string_matchz$TestEval.test_and_logic_string_match  sx    W~&ww%))//'2445777ww%))//'244S9Q9S9STVVVr<   c                    t        g dd      j                         }|j                  d||      }t        g dd      }t        j                  ||       y )N)rR         r   rF  za + ar   )rW      8   )r   to_framer   r   r   )r   r3   r>   r  r   r   s         r4   test_eval_keep_namezTestEval.test_eval_keep_name  sG    Kc*335gggfVg<+C0
x-r<   c                |    t        dgd      }t        j                  d||      }t        j                  ||       y )N*   series_namerS  zvariable_name + 0r   r  )r   r3   r>   variable_namer   s        r4   test_eval_unmatching_namesz#TestEval.test_eval_unmatching_names  s3    t-8gg)&H
}c2r<   N)2__name__
__module____qualname__r,   r.   parametrizer   BOOL_OPS_SYMSr   CMP_OPS_SYMSr   r   r   sortedsetr   
differencer   r   r   r0   skip_if_windowsr   r   r   r   r  r  rD   rX   rY   rZ   r   r   bool_r
  r  r  r  r  r&  r*  r-  r2  r<  rH  rK  rO  rW  r\  r{   r<   r4   r~   r~      s'   [[*0  
 [[Vc3ZdD\B[[Wd&8&89* : C*  [[Xt'8'89. :.B [[T4#4#4515 615f [[Vc3Z0[[Vc3Z09 1 19. [[&^,778IJK99@5$, 5 521+<Z-<^2434 [[ II!!!$44V<II!!!$--af-=BHH5RXXF	

.
. [[ II!!!$44Q7II!!!$--aa-8BHH5RXXF	

/
/I862 [[Vj(%;</ =/N [[	
66$B0,
$5W.3r<   r~   c                      e Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zy)TestTypeCastingr   )+-*r   /
left_right)r  3)ro  r  c                   |}t        t        j                  j                  d      j	                  d      |      }|\  }	}
|	 d| d|
 }t        j                  |||      }|dk(  r6|dk(  r1t        j                  j                  d	      }|j                  |       |j                  j                  |k(  sJ |j                  j                  |k(  sJ t        j                  |t        |      d
       y )NrR   rL   rU   r`    r   	complex64r$   zfnumexpr issue with complex that are upcast to complex 128 https://github.com/pydata/numexpr/issues/492r(   F)check_exact)r   rD   rX   rY   rZ   r   r   r,   r.   r   r   r   ra   r   r   )r   r3   r>   r   complex_or_float_dtypern  r;   ra   r  leftrightrx   r   r.   s                 r4   test_binop_typecastingz&TestTypeCasting.test_binop_typecasting  s     'ryy,,Q/??GuU efAbT5'"ggav6KFi$7;;$$? % D
 %yy%'''zz5(((
c47>r<   N)r]  r^  r_  r,   r.   r`  rx  r{   r<   r4   ri  ri    sG    [[T#=> [[\K+EF? G ??r<   ri  c                     t        t        t        j                  d      |              }t	        t        j
                  d | D              }|xr |S )Nis_monotonic_increasingc              3  x   K   | ]2  }t        |j                  j                  t        j                         4 y wr8   )
issubclassra   typerD   
datetime64r   s     r4   r5   zshould_warn.<locals>.<genexpr>$  s#     M1z!'',,>Ms   8:)anymapoperator
attrgetterr   xor)argsnot_monoonly_one_dts      r4   should_warnr  !  sH    s8../HI4PQQHMMK ##r<   c                  L   e Zd Zg dZg edZd Zej                  j                  d      ej                  j                  de      ej                  j                  de      ej                  j                  de      d                             Z
ej                  j                  d	e      ej                  j                  de      d
               Zej                  j                  d      ej                  j                  de      ej                  j                  de      ej                  j                  de      ej                  j                  de      d                                    Zej                  j                  d      ej                  j                  dddg      ej                  j                  de      ej                  j                  d	e      d                             Zej                  j                  dddg      ej                  j                  dg  e eddgddg            d      ej                  j                  d      d                      Zej                  j                  d      ej                  j                  de      ej                  j                  d	e      ej                  j                  dddg      ej                  j                  dddg      d                                    Zej                  j                  d      ej                  j                  de      ej                  j                  de      ej                  j                  de      ej                  j                  de      d                                    Zd Zy) TestAlignment)rn   rx   ry   rx   c                    d}t        t        j                  j                  d      j	                  d            }t        j                  |||      }t        j                  ||dz         y )Nzdf * ~2rR   rq  r   )	r   rD   rX   rY   rZ   r   r   r   r   )r   r3   r>   rx   r  r   s         r4   test_align_nested_unary_opz(TestAlignment.test_align_nested_unary_op-  sQ    ryy,,Q/??GHggav6
c27+r<   zalways::RuntimeWarninglr_idx_typerr_idx_type
c_idx_typec                d   t        t        j                  j                  d      j	                  d       ||   d       ||   d            }t        t        j                  j                  d      j	                  d       ||   d       ||   d            }t        |j                  |j                        r;t        j                  t              5  t        j                  d||      }	d d d        nt        j                  d||      }	t        j                  	||z          y # 1 sw Y   #xY w)	NrR   rS   rS   rS   rE  rB  )   rS   r  zdf + df2r   r   rD   rX   rY   rZ   r  rE  r   r  RuntimeWarningr   r   r   )
r   r3   r>   r  r  r  r|   r  df2r   s
             r4   test_basic_frame_alignmentz(TestAlignment.test_basic_frame_alignment3  s    II!!!$44X>,-,R0-M*-b1

 II!!!$44X>,-,R0-M*-b1
 rxx+++N; HggjGH H ''*VFCC
c28,	H Hs   D&&D/
r_idx_typec                   t        t        j                  j                  d      j	                  d       ||   d       ||   d            }t        j                  d||      }t        j                  ||dk         t        t        j                  j                  d      j	                  |j                        |j                  |j                        }t        j                  d||      }t        j                  |||k         y )NrR   r  rS   r  df < 2r   zdf < df3)r   rD   rX   rY   rZ   r   r   r   r   r,  rE  rB  )	r   r3   r>   r  r  r|   r  r   df3s	            r4   test_frame_comparisonz#TestAlignment.test_frame_comparisonL  s    
 II!!!$44X>+-
+B/-M*-b1

 gghvf=
c26*II!!!$44RXX>((JJ

 ggj?
c28,r<   ignore::RuntimeWarningr1c1r2c2c                   t        t        j                  j                  d      j	                  d       ||   d       ||   d            }t        t        j                  j                  d      j	                  d       ||   d       ||   d            }	t        t        j                  j                  d      j	                  d       ||   d       ||   d            }
t        |j                  |	j                  |
j                        r;t        j                  t              5  t        j                  d	||
      }d d d        nt        j                  d	||
      }t        j                  ||	z   |
z          y # 1 sw Y   &xY w)NrR   r(  rU   r  )rW   rR   rW   r   rL   zdf + df2 + df3r   r  )r   r3   r>   r  r  r  r  r|   r  r  r  r   s               r4   #test_medium_complex_frame_alignmentz1TestAlignment.test_medium_complex_frame_alignmenta  s^    II!!!$44V<#-#A&%M"%a(

 II!!!$44V<#-#A&%M"%a(

 II!!!$44V<#-#A&%M"%a(

 rxxCII6++N; Ngg.vfMN N ''*6&IC
c28c>2	N Ns   )F  F	
index_namerE  rB  c                   t        t        j                  j                  d      j	                  d       ||   d       ||   d            }t        ||      }t        t        j                  j                  d      j	                  d      |d d       }	t        |j                  |	j                        r;t        j                  t              5  t        j                  d||      }
d d d        nt        j                  d||      }
|dk(  s|dk(  r|d	k(  r|j                  |	      n||	z   }n||	z   }t        j                  
|       y # 1 sw Y   KxY w)
NrR   r  rS   r  rL   df + sr   ry   r$   )r   rD   rX   rY   rZ   getattrr   r  rE  r   r  r  r   r   addr   )r   r3   r>   r  r  r  r|   r  rE  rx   r   r   s               r4   !test_basic_frame_series_alignmentz/TestAlignment.test_basic_frame_series_alignment  s*    II!!!$44X>+-
+B/-M*-b1

 J'299((+;;A>bq	Jrxx)++N; FgghvfEF F ''(6&ACt!3$*i$7rvvayR!VHAvH
c8,F Fs   E		Ezr_idx_type, c_idx_typern   )ry   ry   c           
     \   |dk(  rT|dv rP|dk(  rK|dk(  rF|dk(  rAd| d| d| d	| d
| 
}|j                  t        j                  j                  |d             t	        t
        j                  j                  d      j                  d       ||   d       ||   d            }	t        |	|      }
t        t
        j                  j                  d      j                  d      |
d d       }t        |j                  |	j                        r;t        j                  t              5  t!        j"                  d||      }d d d        nt!        j"                  d||      }|dk(  s|dk(  r|dk(  r|	j%                  |      n||	z   }n||	z   }t        j&                  |       y # 1 sw Y   KxY w)Nr$   )r   r   rE  rn   rx   z"Flaky column ordering when engine=z	, parser=z, index_name=z, r_idx_type=z, c_idx_type=F)r)   strictrR   )rS      rS   r  r  rL   zs + dfr   ry   )r   r,   r.   r   r   rD   rX   rY   rZ   r  r   r  rE  r   r  r  r   r   r  r   )r   r;   r3   r>   r  r  r  r|   r)   r  rE  rx   r   r   s                 r4   !test_basic_series_frame_alignmentz/TestAlignment.test_basic_series_frame_alignment  s    i..g%c!c! 5VH = zl ;(\zlD 
  1 1 1 NOII!!!$44W=+-
+B/-M*-a0

 J'299((+;;A>bq	Jqww)++N; FgghvfEF F ''(6&ACt!3$*i$7rvvayQVH2vH
c8,F Fs   &F""F+r   rj  rl  c                L   t        t        j                  j                  d      j	                  d       ||   d       ||   d            }t        ||      }	t        t        j                  j                  d      j	                  d      |	d d       }
d| d}d| d	}t        |j                  |
j                        rut        j                  t              5  t        j                  |||
      }d d d        t        j                  t              5  t        j                  |||
      }d d d        n0t        j                  |||
      }t        j                  |||
      }|dk7  r#|dk7  r|dk(  rt        j                         y y y y # 1 sw Y   xY w# 1 sw Y   >xY w)NrR   r  rS   r  rL   zs z dfzdf z sr   ry   r$   )r   rD   rX   rY   rZ   r  r   r  rE  r   r  r  r   r   r   )r   r3   r>   r  r   r  r  r|   r  rE  rx   rF   rH   r   r   s                  r4   test_series_frame_commutativityz-TestAlignment.test_series_frame_commutativity  sx    II!!!$44X>+-
+B/-M*-b1

 J'299((+;;A>bq	J2$clB4rlrxx)++N; ?GGCv>?++N; ?GGCv>? ? F6:AF6:A*"4"%%a+ # #5? ?? ?s   FFFF#c                   d}d}	d|	z  }
t        t        j                  j                  d      j	                  |	|f       ||   |	       ||   |            }t        t        j                  j                  d      j	                  |
|f       ||   |
       ||   |            }|j
                  }t        t        j                  j                  d      j	                  |      |d |       }|dk(  s|dk(  r|dk(  r|j                  |      }n||z   }n||z   }|dk(  s|dk(  r|dk(  r|j                  |      }n||z   }n||z   }t        |j                  |j                  |j                        r;t        j                  t              5  t        j                  d||      }d d d        nt        j                  d||      }j                  |j                  k(  sJ t        j                   ||       y # 1 sw Y   ;xY w)	NrU   rL   rR   r  ry   r$   zdf2 + ser + dfr   )r   rD   rX   rY   rZ   rB  r   r  r  rE  r   r  r  r   r   r,  r   )r   r3   r>   r  r  r  r  r|   re   m1m2r  r  rE  ser	expected2r   r   s                     r4   #test_complex_series_frame_alignmentz1TestAlignment.test_complex_series_frame_alignment  s    VII!!!$44b!W=#-#B'%M"%a(

 II!!!$44b!W=#-#B'%M"%a(

 RYY**1-==a@%)L:t"GGCL	#I	c	I:t"$==,$r> 2~Hsyy#))RXX6++N; Ngg.vfMN N ''*6&ICyyHNN***
c8,N Ns   	G55G>c                >   t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j	                  d            }|dk(  r	|rt        }nd}d}t        j                  ||      5  t        j                  d||	       d d d        t        t        j                  j                  d      j	                  d
            }t        j                  d      5  t        j                  d||	       d d d        t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j	                  d            }t        j                  d      5  t        j                  d||	       d d d        t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j	                  d            }|dk(  }|s	|rt        }	nd}	t        j                  |	|      5 }
t        j                  d||	       |sg|ret        |
      dk(  sJ t        |
d   j                        }t        j                  |j                  |j                   d   z
        }d|dd}||k(  sJ d d d        y # 1 sw Y   =xY w# 1 sw Y   xY w# 1 sw Y   FxY w# 1 sw Y   y xY w)NrR   )  rS   '  r$   FzCAlignment difference on axis 1 is larger than an order of magnituder   r  r   r  )rS   r  r  r   rT   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   rD   rX   rY   rZ   r   r
   r   r  r   r   lenrB   messagelog10r   r,  )r   performance_warningr3   r>   r  rx   seenr   is_python_enginewrnwloggedr   s                r4   +test_performance_warning_for_poor_alignmentz9TestAlignment.test_performance_warning_for_poor_alignment  s    ryy,,Q/??
KL299((+;;EBCY#6%DDS''C8 	<GGHVF;	< 299((+;;DAB''. 	<GGHVF;	< ryy,,Q/??LM299((+;;EBC''. 	<GGHVF;	< ryy,,Q/??IJ299((+;;EBC!X-$7$CC''37 	'1GGHVF;#(;1v{"{!A$,,'!&&288A;"67$$*3</HJ 
 h&	' 	'-	< 	<	< 	<
	< 	<	' 	's1   K,K9)L!BL,K69LLLN)r]  r^  r_  index_typeslhs_index_typesr  r,   r.   filterwarningsr`  r  r  r  r  listr   r  r  r  r  r{   r<   r4   r  r  )  sf   "K))S)O, [[ 89[[]O<[[]K8[[\;7- 8 9 = :-* [[\?;[[\?;- < <-& [[ 89[[T?3[[T;/[[T;/[[T;/3 0 0 0 4 :
32 [[ 89[[\GY+?@[[\;7[[\?;- < 8 A :-. [[\GY+?@[[ >$wSzC:.
/>> [[ 89!- :	 A!-F [[ 89[[\;7[[\?;[[\GY+?@[[TC:., / A < 8 :
,4 [[ 89[[T?3[[T;/[[T;/[[T;/)- 0 0 0 4 :
)-V-'r<   r  c            
         e Zd Zd Zd Zej                  j                  dddg      ej                  j                  dddg      ej                  j                  dej                        d                      Z
ej                  j                  dddg      ej                  j                  dddg      ej                  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                  j;                  d      d        Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%ej                  j                  d%d&d'd&d(g e&jN                  g       d)g      d*        Z(ej                  j                  d%g d+      d,        Z)ej                  j                  d-d&d'd&d(g e&jN                  g       d)d&d(ig      d.        Z*d/ Z+d0 Z,d1 Z-d2 Z.d3 Z/d4 Z0ej                  j                  d5g d6      d7        Z1ej                  j                  d8d9d:g      d;        Z2y<)=TestOperationsc                \    |j                  dd      dz   |d<   t        j                  |i |S Nlevelr   rT   popr   r   r   r  kwargss      r4   r   zTestOperations.evalG  /     **Wa014www'''r<   c                r   g }|dk(  rddg}t         j                  t         j                  z   D cg c]  }||vr|
 }}d |D        }|D ]  }d| d}d| d}d| d}	|d	v r?d
}
t        j                  t
        |
      5  t        j                  |||       d d d        Xt        d|d|      }| j                  |||      }||k(  sJ t        ||d|      }| j                  |d|i||      }||k(  sJ t        d||dz   |      }| j                  |	d|i||      }||k(  rJ  y c c}w # 1 sw Y   xY w)Nr   r   r   c              3  ,   K   | ]  }|d k7  s	|  yw)r   Nr{   )r2   r   s     r4   r5   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>V  s     4btr4s   
z1 z 1zx z (x + 1)r   z argument of type 'int' is not .*r   r   rT   r   r   )	r   r   rb  r,   r   r   r   r   rK   )r   r3   r>   exclude_arithr   	arith_opsopsr   r   r   r   expecr   ys                 r4   test_simple_arith_opsz$TestOperations.test_simple_arith_opsK  s   X!8,M ))D,=,==
& 
	 
 5I4 	"BbTBrd"+Crd(#C%%8]]9C8 >GGBvf=> > )B6:IIbI?Ez!z(B6:IIcsAhvfIUEz!z(BAv>IIcsAhvfIUEz!z)	"
> >s   D(?D--D6	rH   TFrF   r   c                    | d| d| }t         dk(  r<|dv r8d}t        j                  t        |      5  | j	                  |       d d d        y | j	                  |      }t	        |      }||k(  sJ y # 1 sw Y   y xY wNrr  r   r   r   r   r>   r,   r   r   r   r   rH   rF   r   r   r   r   r1  s           r4   test_simple_bool_opsz#TestOperations.test_simple_bool_opsn       uAbT3% X""56C2#> 		"iim2hczz   A44A=c                    | d| d| }t         dk(  r<|dv r8d}t        j                  t        |      5  | j	                  |       d d d        y | j	                  |      }t	        |      }||k(  sJ y # 1 sw Y   y xY wr  r  r  s           r4   test_bool_ops_with_constantsz+TestOperations.test_bool_ops_with_constants~  r  r  c                ^   t         j                  j                  d      j                  d      }t	        t         j                  j                  d      j                  d            }d}t        j                  t        |      5  | j                  d||d       d d d        y # 1 sw Y   y xY w)	NrR   )rU   rW   rL      rS   z?N-dimensional objects, where N > 2, are not supported with evalr   x + yr   r  r   )	rD   rX   rY   rZ   r   r,   r   r   r   )r   r   r  r   s       r4   test_4d_ndarray_failsz$TestOperations.test_4d_ndarray_fails  s    II!!!$44\B299((+;;B?@O]].c: 	<IIg*:I;	< 	< 	<s   B##B,c                4    | j                  d      }|dk(  sJ y )N1rT   )r   )r   r   s     r4   test_constantzTestOperations.test_constant  s    IIcNAvvr<   c                    t        t        j                  j                  d      j	                  d            }| j                  dd|i      }t        j                  ||       y )NrR   rS   rR   r  r  r   rD   rX   rY   rZ   r   r   r   )r   r  r  s      r4   test_single_variablez#TestOperations.test_single_variable  sL    ryy,,Q/??HIii$i4
b#&r<   c                    t        t        j                  j                  d      j	                  d            }t        j                  t        d      5  | j                  d       d d d        y # 1 sw Y   y xY w)NrR   rq  name 'x' is not definedr   zdf[x > 2] > 2)	r   rD   rX   rY   rZ   r,   r   	NameErrorr   r   r  s     r4   &test_failing_subscript_with_name_errorz5TestOperations.test_failing_subscript_with_name_error  sV    ryy,,Q/??GH]]9,EF 	'IIo&	' 	' 	's   A..A7c                    t        t        j                  j                  d      j	                  d            }| j                  dd|i      }|dz   |dkD     }t        j                  ||       y )NrR   rq  z(df + 1)[df > 2]r  r  rT   r  r%  s       r4   test_lhs_expression_subscriptz,TestOperations.test_lhs_expression_subscript  s_    ryy,,Q/??GH-4*EFBF#
fh/r<   c           	        t        t        j                  j                  d      j	                  d      t        d            }d}|j                  |j                  k  }d}|j                  |j                  z   |j                  z   }d}|j                  |j                  z   |j                  |j                  dk     z   }|||f}|||f}	t        ||	d	
      D ].  \  }
}t        j                  || j                  |
d|i             0 y )NrR   rq  abcrA  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   T)r  r  r  )r   rD   rX   rY   rZ   r  r   r   rI   zipr   r   r   )r   r  expr1expec1expr2expec2expr3expec3exprsexpecsrJ   r  s               r4   test_attr_expressionz#TestOperations.test_attr_expression  s    II!!!$44V<d5k
 $rtt#.rttBDD1H~-ue#'E6$7 	OHAu""5$))A4*)*MN	Or<   c                   t        t        j                  j                  d      j	                  d      t        d            }t        t        j                  j                  d      j	                  d            }d}d}t        j                  t        |      5  | j                  |||d	       d d d        y # 1 sw Y   y xY w)
NrR   rq  r  rA  zdf = df2%cannot assign without a target objectr   )r  r  r  )
r   rD   rX   rY   rZ   r  r,   r   rA   r   )r   r  r  r  r   s        r4   test_assignment_failsz$TestOperations.test_assignment_fails  s    II!!!$44V<d5k
 		--a0@@HI5]]:S1 	@IIer#(>I?	@ 	@ 	@s   B99Cc                
   t        t        j                  j                  d      j	                  d      t        d            }t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)NrR   r   abrA  invalid syntaxr   zd c = a + b
r   rD   rX   rY   rZ   r  r,   r   rD  r   r  s     r4   %test_assignment_column_multiple_raisez4TestOperations.test_assignment_column_multiple_raise  sa    II!!!$44V<d4j
 ]];.>? 	#GGM"	# 	# 	#s   A99Bc                   t        t        j                  j                  d      j	                  d      t        d            }d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)NrR   r   r  rA  z5left hand side of an assignment must be a single namer   zd,c = a + br  rG  s      r4   %test_assignment_column_invalid_assignz4TestOperations.test_assignment_column_invalid_assign  sf    II!!!$44V<d4j
 F]];c2 	#GGM"	# 	# 	#    A;;Bc                   t        t        j                  j                  d      j	                  d      t        d            }d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)NrR   r   r  rA  zcannot assign to function callr   zTimestamp("20131001") = a + br  rG  s      r4   3test_assignment_column_invalid_assign_function_callzBTestOperations.test_assignment_column_invalid_assign_function_call  sf    II!!!$44V<d4j
 /]];c2 	5GG34	5 	5 	5r  c                   t        t        j                  j                  d      j	                  d      t        d            }|j                         }|d   |d   z   |d<   |j                  dd	       t        j                  ||       y )
NrR   r   r  rA  r   r   	a = a + bTinplace
r   rD   rX   rY   rZ   r  copyr   r   r   r   r  r   s      r4   &test_assignment_single_assign_existingz5TestOperations.test_assignment_single_assign_existing  r    II!!!$44V<d4j
 779 5
T*
b(+r<   c                   t        t        j                  j                  d      j	                  d      t        d            }|j                         }|d   |d   z   |d<   |j                  dd	
       t        j                  ||       y )NrR   r   r  rA  r   r   rI   	c = a + bTr  r  r  s      r4   !test_assignment_single_assign_newz0TestOperations.test_assignment_single_assign_new  r  r<   c                4   t        t        j                  j                  d      j	                  d      t        d            }|j                         }d}|j                  dd       |j                         }d|d	   z   |d
<   t        j                  ||       y )NrR   r   r  rA  rT   z	a = 1 + bTr  r   r   r  )r   r  r   r   s       r4   +test_assignment_single_assign_local_overlapz:TestOperations.test_assignment_single_assign_local_overlap  s~    II!!!$44V<d4j
 WWY
T*779HSM)
b(+r<   c                d   t        t        j                  j                  d      j	                  d      t        d            }d}|j                  j                         }|j                  dd       ||j                  z   }t        j                  ||j                  d	
       |j                  J y )NrR   r   r  rA  rT   r  Tr  Fr   )r   rD   rX   rY   rZ   r  r   r  r   r   r   r   rF  )r   r  r   old_ar   s        r4   "test_assignment_single_assign_namez1TestOperations.test_assignment_single_assign_name  s    II!!!$44V<d4j
 		
T*
vrtt?{{"""r<   c                4   t        t        j                  j                  d      j	                  d      t        d            }|j                  dd       d}t        j                  t        |	      5  |j                  d
       d d d        y # 1 sw Y   y xY w)NrR   r   r  rA  r  Tr  z#can only assign a single expressionr   z	c = a = b)
r   rD   rX   rY   rZ   r  r   r,   r   rD  rG  s      r4   test_assignment_multiple_raisesz.TestOperations.test_assignment_multiple_raises  su    II!!!$44V<d4j
 	T*3]];c2 	!GGK 	! 	! 	!s   3BBc                   t        t        j                  j                  d      j	                  d      t        d            }| j                  dd|i|d       |j                         }|d	   |d
   z   |d<   t        j                  ||       y )NrR   r   r  rA  zc = df.a + df.br  T)r   targetr  r   r   rI   
r   rD   rX   rY   rZ   r  r   r  r   r   r  s      r4   test_assignment_explicitz'TestOperations.test_assignment_explicit  s{    II!!!$44V<d4j
 			#r
2t	T779 5
b(+r<   c                    t        dgdgd      }|j                  d|      }t        dgd      }t        j                  ||       y )	N   ir   r   za in [11, -32]r3   Tr   rS  )r   r   r   r   r   )r   r3   r  r   r   s        r4   test_column_inzTestOperations.test_column_in  sF    bT./)&94&s+
vx0r<   z%Unknown: Omitted test_ in name prior.r(   c                   t        t        j                  j                  d      j	                  d      t        d            }|j                  dd      }|J |j                         }|d   |d	   z   |d
<   t        j                  ||       y )NrR   r   r  rA  r  Fr  r   r   rI   r$  )r   r  actualr   s       r4   test_assignment_not_inplacez*TestOperations.test_assignment_not_inplace"  s     II!!!$44V<d4j
 e4!!!779 5
b(+r<   c                   t        g dg dd      }|j                         }|d   |d   z   |d<   |d   |d   z   |d<   |j                  dd	
      }t        j                  ||       |J |d   dz
  |d<   |d   dz   |d<   |j                  dd	
      }t        j                  ||       |J d}t        j                  t        |      5  |j                  dd
       d d d        y # 1 sw Y   y xY w)NrT   rR   rU   rW   rL   r  r(  r   r   rI   d$
        c = a + b
        d = c + bTr  rT   rR   rJ   $
        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   rA   )r   r  r   answerr   s        r4   test_multi_line_expressionz)TestOperations.test_multi_line_expression0  s$   YY78779 5 5 	  
 	h+~~ ) ) 	  
 	h+~~ Q]]:S1 	GG 	  	 	 	s   C))C2c                P   t        g dg dd      }|j                         }|d   |d   z   |d<   |d   |d   z   |d<   |j                  dd	
      }t        j                  ||       |d   dz
  |d<   |d   dz   |d<   |j                  dd	
      }t        j                  ||       y )Nr/  r0  r(  r   r   rI   r1  r2  Fr  rT   rR   rJ   r3  r   r  r   r   r   r  s      r4   &test_multi_line_expression_not_inplacez5TestOperations.test_multi_line_expression_not_inplaceU  s    YY78779 5 5WW 	  
 	h+ ) )WW 	  
 	h+r<   c                    t        g dg dd      }|j                         }d}|d   |z  |d<   |d   |z   |d<   |j                  dd	
      }t        j                  ||       |J y )Nr/  r0  r(  r  r   rI   r1  z?
        c = a * @local_var
        d = c + @local_var
        Tr  r7  )r   r  r   	local_varr4  s        r4   )test_multi_line_expression_local_variablez8TestOperations.test_multi_line_expression_local_variablen  s~    YY78779	 	1 	1   
 	h+~~r<   c                    t        g dg dd      }d }|j                         }|d    |dd      z  |d<   |d    |dd      z   |d	<   |j                  d
d      }t        j                  ||       |J y )Nr/  r0  r(  c                    |S r8   r{   r(  s     r4   
local_funczUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_func      Hr<   r   rT   r  rI   r1  zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr  r7  r   r  r>  r   r4  s        r4   2test_multi_line_expression_callable_local_variablezATestOperations.test_multi_line_expression_callable_local_variable  s    YY78	 779 
1a(88 
1a(88   
 	h+~~r<   c                    t        g dg dd      }d }|j                         }|d    |dd      z  |d	<   |d	    |dd      z   |d
<   |j                  dd      }t        j                  ||       |J y )Nr/  r0  r(  c                    |S r8   r{   r(  s     r4   r>  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_func  r?  r<   r   r  rT   )r   r   rI   r1  zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        Tr  r7  r@  s        r4   >test_multi_line_expression_callable_local_variable_with_kwargszMTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs  s    YY78	 779 
Q!(<< 
Q!(<<   
 	h+~~r<   c                    t        g dg dd      }|j                         }d}t        j                  t        |      5  |j                  d       d d d        t        j                  ||       y # 1 sw Y    xY w)Nr/  r0  r(  r  r   za = 1)r   r  r,   r   rA   r7  r   r   )r   r  df_origr   s       r4   test_assignment_in_queryz'TestOperations.test_assignment_in_query  s`    YY78'')5]]:S1 	HHW	
b'*	 	s    A11A:c                   t        g dg dd      }|j                         }||d   dk(     }|j                  dd       t        j                  ||       i }dd	i}| j                  d
|d       t        j                  ||       y )Nr/  r0  r(  r   rR   za == 2Tr  rU   	a = 1 + 2r#  r  )r   r  r7  r   r   r   assert_dict_equalr  s      r4   test_query_inplacez!TestOperations.test_query_inplace  s    YY78779HSMQ./
4(
h+8		+b$	7
R*r<   invalid_targetrT   catrR   rT   rU   c                6   d}d}t        j                  t        |      5  | j                  ||d       d d d        t	        |d      r9t        j                  t        |      5  | j                  ||d       d d d        y y # 1 sw Y   OxY w# 1 sw Y   y xY w)Nz)Cannot assign expression output to targetrI  r   TrJ  r  F)r,   r   rA   r   hasattrr   rM  r   
expressions       r4   test_cannot_item_assignz&TestOperations.test_cannot_item_assign  s    9 
]]:S1 	GIIjIF	G >6*z5 L		*^U	KL L +	G 	GL Ls   B$BBB)rT   rN  rO  c                    d}d}t        j                  t        |      5  | j                  ||d       d d d        y # 1 sw Y   y xY w)Nz"Cannot return a copy of the targetrI  r   FrJ  )r,   r   rA   r   rR  s       r4   test_cannot_copy_itemz$TestOperations.test_cannot_copy_item  sE    2 
]]:S1 	HIIjIG	H 	H 	Hs	   >Ar#  c                    d}| j                  ||d      dk(  sJ d}t        j                  t        |      5  | j                  ||d       d d d        y # 1 sw Y   y xY w)N1 + 2FrJ  rU   z0Cannot operate inplace if there is no assignmentr   T)r   r,   r   rA   )r   r#  rS  r   s       r4   test_inplace_no_assignmentz)TestOperations.test_inplace_no_assignment  s^    
yyFEyBaGGG@]]:S1 	?IIjI>	? 	? 	?s   AA c                $   t        t        j                  j                  d      j	                  d      t        ddd            }|dk  }| j                  dd|i	      }|dk  }t        j                  ||       t        j                  ||       y )
NrR   rR   rR   rp   ru   rv   rr   rA  r  r  r  	r   rD   rX   rY   rZ   r   r   r   r   )r   r  rJ   rr   s        r4   *test_basic_period_index_boolean_expressionz9TestOperations.test_basic_period_index_boolean_expression  s    II!!!$44V< CC
 FIIhD":I6F
a#
a#r<   c                    t        t        j                  j                  d      j	                  d      t        ddd            }| j                  dd|i	      }||d
k     }t        j                  ||       y )NrR   r[  rp   ru   r\  rA  zdf[df < 2 + 3]r  r  rL   r]  r   r  r^  rJ   s       r4   ,test_basic_period_index_subscript_expressionz;TestOperations.test_basic_period_index_subscript_expression  sk    II!!!$44V< CC
 II&D":I>rEzN
a#r<   c                   t        t        j                  j                  d      j	                  d      t        ddd            }| j                  dd|i	      }|||dk     dk     |dz  z   }t        j                  ||       y )
NrR   r[  rp   ru   r\  rA  zdf[df[df < 2] < 2] + df * 2r  r  r]  ra  s       r4   -test_nested_period_index_subscript_expressionz<TestOperations.test_nested_period_index_subscript_expression  s}    II!!!$44V< CC
 II3r
IKr"q&zA~a'
a#r<   c                
   t        t        j                  j                  d      j	                  d            }t        dd      |d<   | j                  dd|i||	      }|j                  d
k  }t        j                  ||       y )NrR   rq  z1/1/2012rL   rq   dates1zdf.dates1 < 20130101r  r   20130101)
r   rD   rX   rY   rZ   r   r   rf  r   r   )r   r3   r>   r  r   r  s         r4   test_date_booleanz TestOperations.test_date_boolean  sy    ryy,,Q/??GH!*a88ii"bz	  
 		J&
sE*r<   c                   |dk7  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 y d}t        j                  t        |      5  t        j                  d||       d d d        t        j                  t        |      5  t        j                  d||       d d d        t        j                  t        |      5  t        j                  d||       d d d        t        j                  t        |      5  t        j                  d||       d d d        d}t        j                  t        |      5  t        j                  d||       d d d        t        j                  t        |      5  t        j                  d||       d d d        y # 1 sw Y   9xY w# 1 sw Y   
xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   y xY w)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   r3   r>   r   r   s        r4   test_simple_in_opsz!TestOperations.test_simple_in_ops  sn   X''-vFCJ3''-vFCJ3''-vFCN7''+F6JCJ3''-fVLCJ3''+F6JCJ3''/vNCJ3''-fVLCJ3''1&PCN7''1&PCJ32C2#> EfVDE2#> EfVDE2#> EfVDE2#> R26&QR5C2#> I)&HI2#> R26&QR RE EE EE ER RI IR RsH   =J9J5J'1J3/J?+KJJ$'J03J<?KKc                l    d}dj                  d      }d}t        j                  |||      }||k(  sJ y )NrT   z * !aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   )r   r   r   )r   r3   r>   r   r   r   r   s          r4   test_check_many_exprsz$TestOperations.test_check_many_exprs6  s8    zz(#ggd6&9hr<   r   )zdf > 2 and df > 3zdf > 2 or df > 3z
not df > 2c                Z   t        t        j                  j                  d      j	                  d            }|dk(  rHd}d|v rd}t        j                  t        |      5  t        j                  |d|i||	       d d d        y t        j                  |d|i||	       y # 1 sw Y   y xY w)
NrR   rq  r   r   not'Not' nodes are not implementedr   r  )r   r>   r3   
r   rD   rX   rY   rZ   r,   r   r   r   r   )r   r   r3   r>   r  r   s         r4   test_fails_and_or_notz$TestOperations.test_fails_and_or_not=  s     ryy,,Q/??GHX6C}72#>  $bz!!	  GG ":	 s    B!!B*charr   r   c                N   t        t        j                  j                  d      j	                  d            }d| d}|dk(  r?d}t        j                  t        |      5  t        j                  |||       d d d        y t        j                  |||       y # 1 sw Y   y xY w)	NrR   rq  z(df + 2)[df > 1] > 0 z	 (df > 0)r   z$cannot evaluate scalar only bool opsr   r  rq  )r   rs  r3   r>   r  r   r   s          r4   test_fails_ampersand_pipez(TestOperations.test_fails_ampersand_pipe\  s    ryy,,Q/??GH$TF)4X8C2#> :6&9: : GGBvf5	: :s    BB$N)3r]  r^  r_  r   r  r,   r.   r`  r   ra  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r!  r%  r*  r   r-  r5  r8  r;  rA  rD  rG  rL  rD   r   rT  rV  rY  r_  rb  rd  rh  rj  rm  rr  ru  r{   r<   r4   r  r  F  s   (!"F [[UT5M2[[UT5M2[[T4#5#56 7 3 3 [[UT5M2[[UT5M2[[T4#5#56 7 3 3<'
'
0O@##5,,
,
#!,1 [[EF, G,#J,2$((++ [[-51a&("((2,PV/WX	L Y	L [[-/ABH CH [[X51a&("((2,QRTUPV'WX? Y?
$$$
+-R^ [[	
. [[Vc3Z0	6 1	6r<   r  c                  N   e Zd Zd Zej
                  j                  d      ej
                  j                  de      d               Z	ej
                  j                  de
      d        Zd Zd Zej
                  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y)TestMathc                \    |j                  dd      dz   |d<   t        j                  |i |S r  r  r  s      r4   r   zTestMath.evalj  r  r<   r  fnc                n   t        dt        j                  j                  d      j	                  d      i      }|j
                  }| d}| j                  |||      }t        j                  d      5   t        t        |      |      }d d d        t        j                  |       y # 1 sw Y    xY w)Nr   rR   rS   z(a)r   r%   all)r   rD   rX   rY   rZ   r   r   errstater  r   r   )	r   ry  r3   r>   r  r   r   gotr   s	            r4   test_unary_functionszTestMath.test_unary_functionsn  s     RYY2215EEbIJKDDSziiVFi;[[X& 	($WR_Q'F	(
sF+	( 	(s   5B++B4c                   t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      }|j
                  }|j                  }| d}| j                  |||      }t        j                  d      5   t        t        |      ||      }	d d d        t        j                  |	       y # 1 sw Y    xY w)NrR   rS   r(  z(a, b)r   r%   r{  )r   rD   rX   rY   rZ   r   r   r   r}  r  r   r   )
r   ry  r3   r>   r  r   r   r   r~  r   s
             r4   test_binary_functionszTestMath.test_binary_functionsz  s    YY**1-==bAYY**1-==bA
 DDDDV}iiVFi;[[X& 	+$WR_Q*F	+
sF+	+ 	+s   .C%%C.c                   t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      }|j                  d||d       |j                  }t        j                  t        j                  |j                        |j                        j                  d      }t        j                  ||       y )NrR   rS   r(  ze = arctan2(sin(a), b)Tr3   r>   r  rJ   )r   rD   rX   rY   rZ   r   rJ   arctan2sinr   r   renamer   r   r   r3   r>   r  r~  r   s         r4   test_df_use_casezTestMath.test_df_use_case  s    YY**1-==bAYY**1-==bA
 	$	 	 	
 ddBFF244L"$$/66s;
sF+r<   c                   t        t        j                  j                  d      j	                  d      t        j                  j                  d      j	                  d      d      }|j                  d||d       |j                  }t        j                  |j                  |j                  z         j                  d      }t        j                  ||       y )NrR   rS   r(  ze = sin(a + b)Tr  rJ   )r   rD   rX   rY   rZ   r   rJ   r  r   r   r  r   r   r  s         r4    test_df_arithmetic_subexpressionz)TestMath.test_df_arithmetic_subexpression  s    YY**1-==bAYY**1-==bA
 	 Mddrtt$++C0
sF+r<   zdtype, expect_dtyper*   c                   t        dt        j                  j                  d      j	                  d      j                  |      i      }|j                  j                  |k(  sJ |j                  d||d       |j                  }t        j                  |j                        j                  d      }|j                  |j                  k(  sJ ||j                  k(  sJ t        j                  ||       y )Nr   rR   rS   z
b = sin(a)Tr  r   )r   rD   rX   rY   rZ   r   r   ra   r   r   r  r  r   r   )r   ra   expect_dtyper3   r>   r  r~  r   s           r4   test_result_typeszTestMath.test_result_types  s      "))''*::2>EEeLM
 ttzzU"""
VFDIdd$$S)||syy(((syy(((
sF+r<   c                   t        dt        j                  j                  d      j	                  d      i      }d}t        j                  t        |      5  |j                  d||       d d d        y # 1 sw Y   y xY w)Nr   rR   rS   z#"mysin" is not a supported functionr   zmysin(a)r   )	r   rD   rX   rY   rZ   r,   r   rA   r   r   r3   r>   r  r   s        r4   test_undefined_funczTestMath.test_undefined_func  se    RYY2215EEbIJK3]]:S1 	>GGJvfG=	> 	> 	>   A55A>c                   t        dt        j                  j                  d      j	                  d      i      }d}t        j                  t        |      5  |j                  d||       d d d        y # 1 sw Y   y xY w)Nr   rR   rS   z1Function "sin" does not support keyword argumentsr   zsin(x=a)r   )	r   rD   rX   rY   rZ   r,   r   r   r   r  s        r4   test_keyword_argzTestMath.test_keyword_arg  se    RYY2215EEbIJKA]]9C0 	>GGJvfG=	> 	> 	>r  N)r]  r^  r_  r   r,   r.   r  r`  r!   r  r   r  r  r  rD   int32rh   rc   float32r-   
complex128r0   rf  r  r  r  r{   r<   r4   rw  rw  i  s	   ( [[ 89[[T?3, 4 :, [[T#34, 5, ,"
, [[XXrzz"XXrzz"ZZ$ZZ$FLLR=O=OP	
	,	,">>r<   rw  rR   rS   c                  *    e Zd Zd Zd Zd Zd Zd Zy)	TestScopec                n    d}t        j                  t        dz  t        j                  |||             y )N
_var_s * 2rR   r   )r   r   _var_sr   r   )r   r3   r>   rJ   s       r4   test_global_scopezTestScope.test_global_scope  s+    
##QJ&@	
r<   c                    d}t               j                         }t        j                  d|||       t               j                         }|j	                  d       ||k(  sJ y )NrT   x + 1r   lcls)localsr  r   r   r  )r   r3   r>   r   r  lcls2s         r4   test_no_new_localszTestScope.test_no_new_locals  sK    x}}
DG		&u}}r<   c                    d}t               j                         }t        j                  d||       t               j                         }||k(  sJ y )NrT   r  r   )globalsr  r   r   )r   r3   r>   r   gblsgbls2s         r4   test_no_new_globalszTestScope.test_no_new_globals  s?    y~~
v6	 u}}r<   c                    d}d}t        j                  t        |      5  t        j                  d||i        d d d        y # 1 sw Y   y xY w)NrT   r  r   r  r   r,   r   r   r   r   )r   r3   r>   r   r   s        r4   test_empty_localszTestScope.test_empty_locals  sF    ']]1= 	JGGGF6bI	J 	J 	J   AAc                    d}d}t        j                  t        |      5  t        j                  |||i        d d d        y # 1 sw Y   y xY w)Nzname '_var_s' is not definedr  r   )r3   r>   global_dictr  )r   r3   r>   r   rJ   s        r4   test_empty_globalszTestScope.test_empty_globals  sF    ,]]1= 	EGGAfVD	E 	E 	Er  N)r]  r^  r_  r  r  r  r  r  r{   r<   r4   r  r    s    
JEr<   r  c                     d} t        j                  t        |       5  t        j                  ddddd       d d d        y # 1 sw Y   y xY w)	NzInvalid engine 'asdf' passedr   r  rT   rR   r  asdf)r   r3   r,   r   KeyErrorr   r   r   s    r4   test_invalid_enginer    C    
(C	xs	+ E
!!$4VDE E E   AA)use_numexprr   ))Tr$   )Fr   c                    ddl m} t        j                  d|       5   |d       }||k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   )_check_enginecompute.use_numexpr)pandas.core.computation.evalr  r   option_context)r  r   r  r   s       r4   test_numexpr_option_respectedr    sE     ;			0+	> "t$!!!" " "s	   7A c                    t        j                  dd      5  t        g dg dd      } | j                  d      }t        d d gddgdt	        d	d      
      }t        j                  ||       d d d        y # 1 sw Y   y xY w)Nr  F)TFTFNN)rT   rR   rU   rW   rL   r  )r4  Bz
A.isnull()rL   r  rW   )rE  )r   r  r   r7  rl   r   r   )r  r   r   s      r4   #test_numexpr_option_incompatible_opr    s|     
		0%	8 08?QR
 ,'D$<q!f=U1a[Q
fh/0 0 0s   AA88Bc                     d} t        j                  t        |       5  t        j                  ddddd       d d d        y # 1 sw Y   y xY w)	NzInvalid parser 'asdf' passedr   r  rT   rR   r  r  )r   r>   r  r  s    r4   test_invalid_parserr    r  r  )r   r   r   z dict[str, type[BaseExprVisitor]]_parsersr3   r>   c                    t         |   } |d| |      }|j                  D ]9  }d}t        j                  t        |      5   t        ||              d d d        ; y # 1 sw Y   FxY w)Nr  znodes are not implementedr   )r  unsupported_nodesr,   r   r   r  )r3   r>   VisitorClassinstr  r   s         r4   test_disallowed_nodesr  ,  sn     F#L0D-- !)]].c: 	!GD# 	! 	!!	! 	!s    AA&	c                    d}t        j                  t        d      5  t        j                  || |       d d d        y # 1 sw Y   y xY w)Nzs +r  r   r   r,   r   rD  r   r   )r3   r>   rJ   s      r4   test_syntax_error_exprsr  8  s;    A	{*:	; 1
&01 1 1s   A  A	c                    d}d}t        j                  t        |      5  t        j                  || |       d d d        y # 1 sw Y   y xY w)Nzs + tzname 's' is not definedr   r   )r,   r   r  r   r   )r3   r>   rJ   r   s       r4   test_name_error_exprsr  >  s?    A
#C	y	, 1
&01 1 1s   AAexpress)za + @bz@a + bz@a + @bc                :   d\  }}|dk7  r=t        j                  t        d      5  t        j                  || |       d d d        y t        j                  t        d      5  t        j                  || |       d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)NrT   rR   r   zThe '@' prefix is onlyr   r   zThe '@' prefix is notr  )r3   r>   r  r   r   s        r4   %test_invalid_local_variable_referencer  E  s    DAq]];.FG 	;GGGF6:	; 	; ]];.EF 	;GGGF6:	; 	;	; 	;	; 	;s   B#BBBc                    d\  }}| dk(  r?d}t        j                  t        |      5  t        j                  d| |       d d d        y t        j                  d| |      }|||z   k(  sJ y # 1 sw Y   y xY w)Nr  r$   zVariables in expression .+r   zsin + dotted_liner   )r,   r   r	   r   r   )r3   r>   r  dotted_liner   r   s         r4   test_numexpr_builtin_raisesr  Q  s    C*]]1= 	GGG'vF	G 	G gg)&HcK''''		G 	Gs   A--A6c                    d}t        j                  t        d      5  t        j                  d|| |       d d d        y # 1 sw Y   y xY w)N)rY  g      @zResolver of type .+r   rX  )	resolversr3   r>   )r,   r   r   r   r   )r3   r>   cannot_resolves      r4   test_bad_resolver_raisesr  \  sA    N	y(=	> Q
>&PQ Q Qs   AA
c                    t        j                  t        d      5  t        j                  d| |       d d d        y # 1 sw Y   y xY w)Nzexpr cannot be an empty stringr    r   r,   r   rA   r   r   r   s     r4   test_empty_string_raisesr  b  s6    	z)I	J 2
6&12 2 2	   >Ac                    t        j                  t        d      5  t        j                  d| |       d d d        y # 1 sw Y   y xY w)Nz#only a single expression is allowedr   z1 + 1; 2 + 2r   r  r   s     r4   $test_more_than_one_expression_raisesr  h  s6    	{*O	P >
vf=> > >r  cmpr   rF   rH   c                   t         d t        t        j                  j	                  d      j
                  i} ||           } ||           }  ||          }d| d| d}d| d| d}d| d| d	}	|||	fD ]@  }
d
}t        j                  t        |      5  t        j                  |
||       d d d        B y # 1 sw Y   MxY w)Nc                 ^    t         j                  j                  d      j                  d      S )NrR   rS   )rD   rX   rY   r   r{   r<   r4   rf   z0test_bool_ops_fails_on_scalars.<locals>.<lambda>r  s     RYY**1-66r: r<   rR   r   r   r   r   r   r   r   r)  r   r   )intrO   rD   rX   rY   rZ   r,   r   r   r   r   )rF   r  rH   r3   r>   genr   r   r   r   r   r   s               r4   test_bool_ops_fails_on_scalarsr  m  s    
 	:ryy$$Q'77C
 #c(*C
#c(*C
#c(*CU3%t
$C]3%t
,C#mC5
.CCo 6K]].c: 	6GGBvf5	6 	66	6 	6s   B99C	otherz'x'z...c                    t        dg dit              }|j                  d|        }t        g dd      }t	        j
                  ||       y )Nr4  )r   r   rI   r`   r6  )FFFrS  )r   objectr   r   r   r   )r  r  r   r   s       r4   test_equals_variousr    sF     
C)	8BWWuUG_%F+#6H68,r<   c                f    d}t         j                  }t        j                  || |      }||k(  sJ y )Nzinf + 1r   )rD   infr   r   )r3   r>   rx   r   r   s        r4   test_infr    s0    AvvHWWQvf5FXr<   columnu	   Temp(°C)u   Capacitance(μF)c                    t        t        j                  j                  d      j	                  d      |dg      }|||   dkD     }d| d}|j                  ||       }t        j                  ||       y )	NrR   r   r   rA  rL   `z` > 5r)  )r   rD   rX   rY   rZ   r7  r   r   )r3   r  r  r   query_stringr   s         r4   test_query_tokenr    su     

		a 00863-
B "V*q.!Hvhe$LXXl6X2F&(+r<   c                   t        ddgddggddg      }||j                  dkD      }|j                  d| |	      }t        j                  ||       |d
k(  r;d}t        j                  t        |      5  |j                  d| |	       d d d        y |j                  d| |	      }t        j                  ||       y # 1 sw Y   y xY w)Nr   rS   rT   r  rN  countrA  z
~(cat > 0)r   r   rp  r   znot (cat > 0))r   rN  r7  r   r   r,   r   r   )r3   r>   r  r   r   r   s         r4   test_negate_lt_eq_ler    s    	QGaW%w/?	@BBFFQJ- HXXl6&XAF&(+/]].c: 	DHH_VFHC	D 	D /&H
fh/		D 	Ds   5B>>Cc                `   |dv r7| j                  t        j                  j                  t        d|              t        t        j                  j                  d      j                  ddd      |d	g
      }|||   dkD     }|j                  | d      }t        j                  ||       y )N)TrueFalser  Infz+GH 47859 DataFrame eval not supported with )r   r)   rR   r   d   r  r   col1rA  r  z>6)r   r,   r.   r   r  r   rD   rX   rY   r   r7  r   r   )r;   r  r  r   r   s        r4    test_eval_no_support_column_namer    s     00KKDVHM  	
 

		a ))!Sw)? 
B "V*q.!HXXm$F&(+r<   c                 :   t        g dg dg dd      } | d d  }| d   }| j                  dd       t        g d	g dg dd      }t        j                  | |       t	        g dd
      }t        j
                  ||       t        j
                  |d   |       y )Nr/  r0  )r     	   )r4  r  Cr4  z	A = B + CTr  )r'     rQ  rS  )r   r   r   r   r   r   )r  result_viewr  r   s       r4   test_set_inplacer    s     
C	DBQ%K
S'CGGKG&|))LMH"h'ic*H3);s+X6r<   valuerT   r  r/  g      @c                    d}t        j                  t        |      5  t        j                  d|        d d d        y # 1 sw Y   y xY w)Nz8For argument "inplace" expected type bool, received typer   z2+2r  r  )r  r   s     r4   test_validate_bool_argsr    s8    
DC	z	- &
u%& & &s	   ?Ac                 D    t        j                  dd      } d}| |k(  sJ y )Nz1 / 2r$   r)  rV   r0  )r   r   s     r4   test_eval_float_div_numexprr    s'     WWWY/FHXr<   c                    t        g d      } t        g d      }t        j                  d      }| |z   j                         }t	        j
                  ||       t        j                  d      }| |z  j                         }t	        j
                  ||       t        j                  d      }| |z   j                         j                  d      }t	        j
                  ||       y )N)rT   rR   rU   rL   )rR   rU   rW   z(x + y).dropna()z(x * y).dropna()z'(x + y).dropna().reset_index(drop=True)T)drop)r   r   r   dropnar   r   reset_index)r   r  r   r   s       r4   test_method_calls_on_binopr    s    |AyA WW'(FA~~H68, WW'(FA~~H68, WW>?FA~~+++6H68,r<   )r
__future__r   	functoolsr   	itertoolsr   r  numpyrD   r,   pandas.compatr   r   pandas.compat._optionalr   pandas.errorsr	   r
   r   pandas.util._test_decoratorsutil_test_decoratorsr0   pandas.core.dtypes.commonr   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.computationr   r   pandas.core.computation.enginesr   pandas.core.computation.exprr   r   r   #pandas.core.computation.expressionsr   r   pandas.core.computation.opsr   r   r    r!   pandas.core.computation.scoper"   pandas.util.versionr#   r$   fixturer3   PARSERSr>   rK   r  rl   rF   rH   r   r|   r~   ri  r  r  r  rw  rX   rY   rZ   r  r  r1   r  r.   r`  r  r  r  PyTablesExprVisitorr  __annotations__r  r  r  r  r  r  r  r  r  rO   r  r  r  r  r  keysr  r  r  r  r  r{   r<   r4   <module>r&     s4   "      ? 
 * )     4 
  : '
$Yx
@   !  t||$ % a>E-	-$ 
  m	3 m	3h? ?<$V' V'z`6 `6Ff> f>R 
		q	!	1	1"	5"E "EJ yE E y" " y0 0 yE E  ,,.
*  7+8,! - ,!11 $CD; E;(Q2>
 .e-e-6 . . /6& -- K1C#DE, F,0  O,	,(7 1fi"=>& ?& y -r<   