
    yhh                      U d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZmZmZ d dlmc mZ d dlmZmZmZmZ d dlZd d	lmZmZmZm Z m!Z!m"Z" d dl#m$Z% d d
l&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;  edd          Z< e	j=        d e*D                       d             Z> e	j=        e'j?                  d             Z@d ZA e	j=         eB eCd                    g d          d             ZDeDZEeDZFe	j=        d             ZG G d d          ZH G d  d!          ZId" ZJ G d# d$          ZK G d% d&          ZL G d' d(          ZMejN        O                    d)          P                    d*          ZQ G d+ d,          ZR ejS        d          d-             ZT ejS        d          e	jU        V                    d.d/          d0                         ZW ejS        d          d1             ZX ejS        d          d2             ZYe.e(jZ        e-d3Z[d4e\d5<   e	jU        V                    d6e*          e	jU        V                    d7e[          d8                         Z]d9 Z^d: Z_e	jU        V                    d;g d<          d=             Z`d> Zad? Zbd@ ZcdA Zde	jU        V                    dBdC          e	jU        V                    dDeeeff          e	jU        V                    dEeeeff          dF                                     Zge	jU        V                    dGdHdIg          dJ             ZhdK Zie	jU        V                    dLdMdNg          dO             ZjdP Zke	jU        V                    dL e9jl                              dQ             ZmdR Zn G dS dT          ZodS )U    )annotations)reduce)productN)PY312)import_optional_dependency)NumExprClobberingErrorPerformanceWarningUndefinedVariableError)is_boolis_floatis_list_like	is_scalar)	DataFrameIndexSeries
date_rangeperiod_rangetimedelta_range)exprpytables)ENGINES)BaseExprVisitorPandasExprVisitorPythonExprVisitor)NUMEXPR_INSTALLEDUSE_NUMEXPR)ARITH_OPS_SYMSSPECIAL_CASE_ARITH_OPS_SYMS_binary_math_ops_binary_ops_dict_unary_math_ops)DEFAULT_GLOBALS)Versionnumexprignore)errorsc              #     K   | ]i}t          j        |t           j                            |d k    ot           dt           dt
                     t          j        d           g          V  jdS )r$   znumexpr enabled->z, installed->reasonmarksN)pytestparammarkskipifr   r   td
skip_if_no).0engines     Y/var/www/histauto/venv/lib/python3.11/site-packages/pandas/tests/computation/test_eval.py	<genexpr>r5   @   s          	""i';O6{ 6 6"36 6 #  
 i((
	
 
	
 
	
         )paramsc                    | j         S Nr-   requests    r4   r3   r3   ?   s    " =r6   c                    | j         S r9   r:   r;   s    r4   parserr>   S   s
    =r6   c                    t           |         }t          |         j        rS	  || |          S # t          $ r9}t	          |                              d          rt          j        cY d }~S  d }~ww xY w || |          S )Nz6negative number cannot be raised to a fractional power)r    r   has_neg_frac
ValueErrorstr
startswithnpnan)lhscmp1rhsr3   ces         r4   _eval_single_binrK   X   s    Av# 	1S#;; 	 	 	1vv  H   v	 1S#;;s    - 
A0-A+$A0*A++A0   )r   r   	SeriesNaNDataFrameNaNfloat)r7   idsc           	     l   t          t          j                            d                              d                    }t          j        ||dk    <   t          t          j                            d                              d                    t          t          j                            d                              d                    t          ddt          j        t          j        dg          |t          j                            d                                          f}|| j                 S )N   )
   rL         ?rL      )r   rD   randomdefault_rngstandard_normalrE   r   r-   )r<   nan_df1optss      r4   rF   rF   g   s    
 	--a00@@IIJJGVGGcM 	")''**::7CCDDry$$Q''77::;;1bfbfa())
	a  0022D r6   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    uRYq\\::: r6   c                \    t          t          j        |           t          j                  S r]   )r   rD   r`   float64rb   s    r4   rd   zidx_func_dict.<locals>.<lambda>   s    uRYq\\<<< r6   c                V    t          d t          dd| z             D                       S )Nc                6    g | ]}| d t          |           S )_)chr)r2   is     r4   
<listcomp>z3idx_func_dict.<locals>.<lambda>.<locals>.<listcomp>   s(    III!ooSVVooIIIr6   a   )r   rangerb   s    r4   rd   zidx_func_dict.<locals>.<lambda>   s+    uIIuRa7H7HIIIJJ r6   c                $    t          d|           S )N
2020-01-01periods)r   rb   s    r4   rd   zidx_func_dict.<locals>.<lambda>   s    
<;;; r6   c                $    t          d|           S )Nz1 dayrq   )r   rb   s    r4   rd   zidx_func_dict.<locals>.<lambda>   s    ;;; r6   c                &    t          d| d          S )Nrp   D)rr   freq)r   rb   s    r4   rd   zidx_func_dict.<locals>.<lambda>   s    |L!#FFF r6   )rk   fsdtr0   p r{   r6   r4   idx_func_dictr|   }   s7     ;:<<JJ;;;;FF  r6   c            
         e Zd Zej                            dg dg d          ej                            dddgdd	g          ej                            d
ej                  d                                     Zej                            dej	                  d             Z
ej                            dej	                  d             Zej                            dddg          ej                            dddg          d                         Zej                            d e ee                              e                              d             Zd Zd Zej        d             Zd Zd Zd Zd Zd Zej                            d eej                             d          !                    d                     eej                             d          "                    dd                     eej                             d          !                    d          d k              g          d!             Z#ej                            d e$ej                             d          !                    d                     e$ej                             d          "                    dd                     e$ej                             d          !                    d          d k              g          d"             Z%d# Z&d$ Z'ej                            d%d&d'g          d(             Z(d) Z)ej                            d*d+          d,             Z*d- Z+d. Z,d/ Z-d0 Z.d1 Z/d2 Z0d3S )4TestEvalrG   )z!=z==z<=z>=<>)neeqlegeltgt)rP   cmp2r   r   r   r   binopc                   |dk    r^|dv rZd}t          j        t          |          5  d| d| d| d}	t          j        |	||	           d d d            n# 1 swxY w Y   d S t          ||||          }
t          ||||          }t          |
|||          }d| d| d| d}	t          j        |	||	          }t          j        ||           d S )
Npythonandor"'BoolOp' nodes are not implementedmatch(lhs z rhs) z (lhs  rhs)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   sN    X%="8"86C2#>>> : :ATAAAAdAAA6&9999: : : : : : : : : : : : : : : F"3c6::"3c6::#GUGVDD9T9999d999F6:::
)))))s   $AAAcmp_opc           	     X   |dk     }|dk     }|dk    rX|dv rTd}t          j        t          |          5  d| d}t          j        |||           d d d            n# 1 swxY w Y   d S d| d}d	                    d
dg          }|dv r`t          |          sQt          j        t          |          5  t          j        |||||d           d d d            d S # 1 swxY w Y   d S t          ||||          }t          j        |||          }	t          j
        |	|           d S )Nr   r   innot in&'(In|NotIn)' nodes are not implementedr   lhs  rhsr   |zvonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')bool(`|')z'argument of type 'bool' is not iterable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2#>>> : :(F(((6&9999: : : : : : : : : : : : : : : F F   hh" :	
 
 %%%l3.?.?%y444  !!'*377	                     (VS&AAHWRv>>>FOFH-----s#   AA"%A"6CC#&C#opc           	        |dk    rX|dv rTd}t          j        t          |          5  d| d}t          j        |||           d d d            n# 1 swxY w Y   d S t          |          rTt          |          sE|dv rA|dk    r;|dk    r5t           j                            d	
          }	|                    |	           ddg}
d| d}d	                    ddg          }t          |          rU||
v rQt          j        t          |          5  t          j        |||||d           d d d            d S # 1 swxY w Y   d S t          |          r t          |          rd ||fD             \  }}t          ||||          }t          |          r| }n| }t          j        |||          }t          j        ||           d S )Nr   r   r   r   z~(lhs r   r   pandasz]Looks like expected is negative, unclear whether expected is incorrect or result is incorrectr(   r   r   r   zwonly list-like( or dict-like)? objects are allowed to be passed to (DataFrame\.)?isin\(\), you passed a (`|')float(`|')z(argument of type 'float' is not iterabler   r   c              3  @   K   | ]}t          j        |g          V  d S r9   )rD   arrayr2   xs     r4   r5   z3TestEval.test_compound_invert_op.<locals>.<genexpr>   s,      >>aBHaSMM>>>>>>r6   )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"8:C2#>>> : :'b'''6&9999: : : : : : : : : : : : : : : F SMM	&SMM	& &&&(""("";$$? %  D %%%H%
bhh# ;	
 
 S>> 	5bJ..y444  !!'*377	                     ~~ ?)C.. ?>>C:>>>S'Rf==H"" %'<$9WRv>>>F"8V44444s#   AAAD::D>D>c                   |}|dk    rWd| d| d}	d}
t          j        t          |
          5  t          j        |	||           d d d            n# 1 swxY w Y   d S t          ||||          }t          ||||          }|c|cd| d| d}	d| d| d}d	| d
| d}t          |d||          }|	||fD ]2}t          j        |||          }t          j        ||           /d S d S d S )Nr   r    mid r   r   r   r    mid and mid r    mid) & (mid r   &)r,   r   r   r   r   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...D...C6C2#>>> ; ;F6::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;F"3c6::"3c6::7#6...D...C666D666C8$88T888C'gvFFHCo 9 9F6BBB&vx8888 #6#69 9s   AAAarith1c                .   d| d}t          j        |||          }t          ||||          }t          j        ||           d| d| d}t          j        |||          }t          ||||          }		 |	                    |          \  }	}
|dk    r9dd l}|                    d| d          }t          j        |j        |           d S t          d| d          }t          j        ||           d S # t          t          t          f$ r Y d S w xY w)	Nr   r   r   z rhs r$   r   znlhs z ghs)r   r   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]    !F   F6:::#Cf==
vx000-F-----F6:::VS&99	9

3ID# ""$$$$ ;;';v';';';<<
 &v}h????? 4 4 4 455&vx88888# I~6 	 	 	 FF	s   8C9 9DDc                   d}t          j        |||          }||z  }t          j        ||           |dk    rzdd l}|                    d          }t          |t          t          f          rt          j        |j	        |           d S t          j        ||
                                           d S t          |d||          }t          j        ||           d S )Nz	lhs % rhsr   r$   r   zexpected % rhs%)r   r   r   r   r$   r   
isinstancer   r   r   itemrK   )	r   rF   rH   r3   r>   r   r   r   r   s	            r4   test_moduluszTestEval.test_modulus4  s    F6:::9
vx000Y    {{#455H&9f"566 @&v}h?????&vx}}?????'#sFCCH"6844444r6   c                ~   d}|dk    s0|dk    r]t          t          j                  t          d          k    r3t          j        |||          }||z  }t          j        ||           d S d}t          j        t          |          5  t          j        |||d||	           d d d            d S # 1 swxY w Y   d S )
Nz
lhs // rhsr   r$   2.13.0r   zGunsupported operand type\(s\) for //: 'VariableNode' and 'VariableNode'r   r   r   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_divisionF  s#   XiGG,?$@$@GHDUDU$U$U'"VF;;;CczHOC*****!  y444  '*377!!	                    s   	B22B69B6c                j   d}t          |d||          }t          j        |||          }t          |          rt          |          rt	          |t
          t          j        f          rat          j        |          rMd}t          j
        t          |          5  t          j        ||           d d d            d S # 1 swxY w Y   d S t          j        ||           d}t          j        |||          }t          |d||          }	t          |	d||          }t          j        ||           d S )Nz
lhs ** rhs**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_pow\  s    #CsF;;F6::: cNN	5#	5 8gr/A%BCC	5   		5 BC~S999 > >+FH===> > > > > > > > > > > > > > > > > > "68444&BWRv>>>F%c4f==F'c6BBH"6844444s   B??CCc                    	 |                     t                    }n2# t          $ r% t          j        t          |          g          }Y nw xY w| }t          j        d||          }t          j        ||           d S )Nz~elbr   )	astypeboolr   rD   r   r   r   r   r   )r   rF   r3   r>   elbr   r   s          r4   test_check_single_invert_opz$TestEval.test_check_single_invert_opv  s    	(**T""CC 	( 	( 	((DII;''CCC	(4v>>>
x00000s    ,AAc                T   d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	d
                    }|dk    rwt          t          j                  t          d          k     rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g dt          j                            d                              d          dk    d          }|dk    rMt          j        t"          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )N~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 'invertrT   arU   g       @   )brI   unknown type object#bad operand type for unary ~: 'str')r   rD   rV   rW   rX   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  s?   
 	--a00@@HHIIYAC2#>>> < <VF;;;;< < < < < < < < < < < < < < < ECy444 < <VF;;;;< < < < < < < < < < < < < < < 	--a0099!&9IIJJY77+>#?#?'(BSBS#S#S=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F!&&111 	--a00@@HH3NOOfV<<<
ff--- --bi&;&;A&>&>&N&Nq&Q&QTW&WXX
 
 Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCC/FFF)KKK8LL!$L!c                   d}t          t          j                            d                              d                    }|dk    rMd}t          j        t          |          5  t          j	        |||          }d d d            n# 1 swxY w Y   nLd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   t          t          j                            d                              dd	                    }|dk    rwt          t          j                  t          d
          k     rMd}t          j        t          |          5  t          j	        |||           d d d            n# 1 swxY w Y   n/| }t          j	        |||          }t          j        ||           t          t          j                            d                              d          dk              }| }t          j	        |||          }t          j        ||           t          g d          }|dk    rMt          j        t"          d          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )Nr   rR   rL   r$   r   r   r   r   r   r   r   rT   r   r   r   )r   rD   rV   rW   rX   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  s    RY**1--==a@@AAYAC2#>>> E EfVDDDE E E E E E E E E E E E E E E ECy444 < <VF;;;;< < < < < < < < < < < < < < < RY**1--66qq6AABBY77+>#?#?'(BSBS#S#S=C2#>>> < <VF;;;;< < < < < < < < < < < < < < < TFWT&@@@F"66222 RY**1--==a@@3FGGfV<<<
vv... ]]]##Yz1FGGG < <VF;;;;< < < < < < < < < < < < < < < < < < 8Cy444 < <VF;;;;< < < < < < < < < < < < < < < < < <sZ   %B		BB2CCC/FFF2JJJK&&K*-K*c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd	}t          j        t          |
          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )N-lhsrR   r   r   rL   r   rT   r$   *couldn't find matching opcode for 'neg_bb'r   )r   rD   rV   rW   rX   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  s    	--a00@@HHIIfV<<<
ff--- 	--a0099!&9IIJJfV<<<
ff--- 	--a00@@HH3NOOY>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F!&&11111   E,,E03E0c                T   d}t          t          j                            d                              d                    }| }t          j        |||          }t          j        ||           t          t          j                            d          	                    dd                    }| }t          j        |||          }t          j        ||           t          t          j                            d                              d          dk              }|dk    rOd}t          j        t          |	          5  t          j        |||           d d d            d S # 1 swxY w Y   d S | }t          j        |||          }t          j        ||           d S )
Nr   rR   rL   r   r   rT   r$   r  r   )r   rD   rV   rW   rX   r   r   r   r   r   r,   r   r   r  s           r4   test_series_negatezTestEval.test_series_negate  s    RY**1--==a@@AAfV<<<
vv... RY**1--66qq6AABBfV<<<
vv... RY**1--==a@@3FGGY>C2#>>> < <VF;;;;< < < < < < < < < < < < < < < < < < TFWT&@@@F"6622222r  rF   rR   r   rL   r   rT   c                f    d}|}t          j        |||          }t          j        ||           d S Nz+lhsr   )r   r   r   r   r   rF   r3   r>   r   r   r   s          r4   test_frame_poszTestEval.test_frame_pos  s=     fV<<<
ff-----r6   c                f    d}|}t          j        |||          }t          j        ||           d S r  )r   r   r   r   r	  s          r4   test_series_poszTestEval.test_series_pos"  s=     fV<<<
vv.....r6   c                   d}d }t           r|dk    r|dk    st          }t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        d||          d	k    sJ t          j        d
||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        |dd          5  t          j        d||          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        |dd          5  t          j        d||          dk    sJ 	 d d d            n# 1 swxY w Y   t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ t          j        d||          dk    sJ d S )Nz%bad operand type for unary ~: 'float'r$   r   r   z~1.0r   z-1.0r>   r3   g      z+1.0g      ?z~1z-1z+1rU   zBitwise inversionF)r   check_stacklevelz~Truez~Falsez-Truez-Falser   z+Truez+False)	r   DeprecationWarningr,   r   r   r   r   r   assert_produces_warning)r   r3   r>   r   warns        r4   test_scalar_unaryzTestEval.test_scalar_unary4  sF   5 	&&I--&H2D2D%D]9C000 	: 	:GF6&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: wvfV<<<DDDDwvfV<<<DDDDwtF6:::b@@@@wtF6:::b@@@@wtF6:::b@@@@'+e
 
 
 	K 	K 776&AAAUJJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K '+e
 
 
 	M 	M 78F6BBBfLLLLL	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M wwvf===FFFFwxv>>>&HHHHwwvf===FFFFwxv>>>&HHHHHHs5   AA"%A"D<<E E F		FFc                    t          j        t          j        d          t           j                  }t          j        g dt           j                  }t          j        ||           d S )Nz>[-True, True, +True, -False, False, +False, -37, 37, ~37, +37]r^   )
r  TrU   r   Fr   i%   ir  )rD   r   r   r   object_r   r   )r   r   r   s      r4   test_unary_in_arrayzTestEval.test_unary_in_arrayN  sv     GTUU*
 
 
 8   *
 
 
 	#FH55555r6   r   zx < -0.1z-5 > xc                    t          dt          j        dg|          i          }|                    |          }|j        t          j        dg          k    sJ d S )Nr   r   r^   F)r   rD   r   r   r   )r   float_numpy_dtyper   dfr   s        r4   test_float_comparison_bin_opz%TestEval.test_float_comparison_bin_opg  s\     RXqc1BCCCDEEggdmmzRXug........r6   c                v   t          dddt          j        gi          }|                    d          }|j                            d          }t          j        ||t                      |                    d          }|j        	                    dd          }t          j        ||t                      d S )	Nr   r   rU   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_functionn  s    aBF^,--((4;;r?? 	vx_MMMM4554::aB://
vx_MMMMMMr6   r   )z1 or 2z1 and 2za and bza or bz1 or 2 and (3 + 2) > 3z2 * x > 2 or 1 and 2z2 * df > 3 and 1 or ac                   t           j                            d                              d          dd}}}t	          t           j                            d                              d                    }d}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S )NrR   r   rU   r   rR   ;cannot evaluate scalar only bool ops|'BoolOp' nodes are notr   r   )
rD   rV   rW   rX   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ry,,Q//??GGHHK].c::: 	6 	6GBvf5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   B88B<?B<c                   d}t          j        d||          }|dk    sJ t          |          sJ d}t          j        d||          }|dk    sJ t          |          sJ d}t          j        d||          }|rJ t          |          sJ t          |          sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ t	          j        dg          }t          j        d||          }t          j        |t	          j        dg                     |j        dk    sJ d S )NrU   r   r   g      ?F)rU   )	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;;;v     HaSMMVF;;;
#FBHaSMM:::|t####HcUOOVF;;;
#FBHcUOO<<<|t####HeWVF;;;
#FBHeW,=,=>>>|t######r6   c                H    d}t          j        |||          }|dk    sJ d S )Nz1 + 2 *         5 - 1 + 2 r      )r   r   )r   r3   r>   expr   s        r4   test_line_continuationzTestEval.test_line_continuation  s0    VF;;;||||||r6   c                   d}t          j        |||          }t          j        |          }||k    sJ t	          dg di          }d}|                    d|d          }|j        sJ d}|                    d	|d          }|j        d
dgd d f         }t          j	        ||           d}|                    d|d          }|j        d
gd d f         }t          j	        ||           d S )Nz1000000000.006r   A)g~  eA$  eAg'1  eAg  eAzA < z.4fg   eAzA > rU   rR   r3  A == )
r   r   rD   rf   r   queryemptylocr   r   )	r   r3   r>   r/  r   r   r  cutoffexacts	            r4   test_float_truncationzTestEval.test_float_truncation  s!   VF;;;:c??!!!!PPPQRR ----..| ----..61a&!!!)$
h///-%---..61#qqq&>
h/////r6   c                   t          g dgg d          }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t                      }d|j        _        t          j        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S )	N)r   r   r   )foobarclasscolumnsz4Python keyword not valid identifier in numexpr queryr   z
class == 0lambdazlambda == 0)r   r,   r   SyntaxErrorr5  indexnamer   r  r   s      r4   test_disallow_python_keywordsz&TestEval.test_disallow_python_keywords  sA   			{,C,C,CDDDD];c222 	# 	#HH\"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# [[ ];c222 	$ 	$HH]###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s#   AAAB99B= B=c                   t          j        t          t          d          5  t	          j        d          dk    sJ t	          j        d          dk    sJ t	          j        d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )	NF)r  znot Truer  z	not Falser  zTrue and not Truer   )r   maybe_produces_warningr  r   r   r   )r   s    r4   test_true_false_logiczTestEval.test_true_false_logic  s     &
 
 
 	5 	5 7:&&",,,,7;''2----7.//144444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   AA??BBc                6   t          ddi          }t          j        |j                            d          j                   sJ t          j        |j                            d          j        o|j                            d          j                   sJ d S )Nr   hello)r   r   r   rB   r   r   )r   events     r4   test_and_logic_string_matchz$TestEval.test_and_logic_string_match  s    W~&&w%)//'224677777w%)//'224S9Q9Q9SUVVVVVVVr6   N)1__name__
__module____qualname__r,   r.   parametrizer   BOOL_OPS_SYMSr   CMP_OPS_SYMSr   r   r   sortedsetr   
differencer   r   r   r   r0   skip_if_windowsr   r   r   r   r  r  r   rD   rV   rW   rX   r   r
  r   r  r  r  r  r%  r)  r,  r0  r:  rF  rI  rM  r{   r6   r4   r~   r~      s       [***000   
 [Vc3ZdD\BB[Wd&899* * :9 CB *  [Xt'899 .  . :9 .D [T4#45515 15 6515f [Vc3Z00[Vc3Z009 9 10 109. [&&^,,778STTUU 9 9 9@5 5 5$  , 5 5 521 1 1+< +< +<Z-< -< -<^2 2 243 3 34 [ Ibi++A..>>vFFGGIbi++A..777GGHHIbi++A..>>vFFLMM	

 
. .
 
. [ F29((++;;A>>??F29((++44QQ4??@@F29((++;;A>>DEE	

 
/ /
 
/I I I46 6 62 [Vj(%;<</ / =</N N N [	
 6 6 6$ $ $B  0 0 0,
$ 
$ 
$5 5 5W W W W Wr6   r~   c                      e Zd Zej                            dg d          ej                            dddg          d                         ZdS )TestTypeCastingr   )+-*r   /
left_right)r  3)r_  r  c                   |}t          t          j                            d                              d          |          }|\  }	}
|	 d| d|
 }t          j        |||          }|dk    r;|dk    r5t          j        	                    d	          }|
                    |           |j        j        |k    sJ |j        j        |k    sJ t          j        |t          |          d
           d S )NrR   rL   r   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   rV   rW   rX   r   r   r,   r.   r   r   r   r_   r   r   )r   r3   r>   r   complex_or_float_dtyper^  r<   r_   r  leftrightrx   r   r.   s                 r4   test_binop_typecastingz&TestTypeCasting.test_binop_typecasting  s    'ry,,Q//??GGuUUU e""b""5""gav666KFi$7$7;$$? %  D
 %%%y%''''z5((((
c477>>>>>>r6   N)rN  rO  rP  r,   r.   rQ  rh  r{   r6   r4   rY  rY    sl        [T#=#=#=>> [\K+EFF? ? GF ?>? ? ?r6   rY  c                     t          t          t          j        d          |                      }t	          t          j        d | D                       }|o|S )Nis_monotonic_increasingc              3  ^   K   | ](}t          |j        j        t          j                  V  )d S r9   )
issubclassr_   typerD   
datetime64r   s     r4   r5   zshould_warn.<locals>.<genexpr>  s2      MM1z!',>>MMMMMMr6   )anymapoperator
attrgetterr   xor)argsnot_monoonly_one_dts      r4   should_warnrw    sZ    s8./HII4PPQQQHMMMMM K ##r6   c                     e Zd Zg dZedgz   Zd Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          d                                                 Z
ej        	                    d	e          ej        	                    de          d
                         Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zej                            d          ej        	                    dddg          ej        	                    de          ej        	                    d	e          d                                                 Zej        	                    dddg          ej        	                    d e eddgddg                    dgz             ej                            d          d                                     Zej                            d          ej        	                    de          ej        	                    d	e          ej        	                    dddg          ej        	                    dddg          d                                                             Zej                            d          ej        	                    de          ej        	                    de          ej        	                    de          ej        	                    de          d                                                             Zd ZdS ) TestAlignment)rk   rx   ry   rx   c                    d}t          t          j                            d                              d                    }t          j        |||          }t          j        ||dz             d S )Nzdf * ~2rR   ra  r   )	r   rD   rV   rW   rX   r   r   r   r   )r   r3   r>   rx   r  r   s         r4   test_align_nested_unary_opz(TestAlignment.test_align_nested_unary_op  se    ry,,Q//??GGHHgav666
c27+++++r6   zalways::RuntimeWarninglr_idx_typerr_idx_type
c_idx_typec                   t          t          j                            d                              d           ||         d           ||         d                    }t          t          j                            d                              d           ||         d           ||         d                    }t          |j        |j                  rIt          j        t                    5  t          j        d||          }	d d d            n# 1 swxY w Y   nt          j        d||          }	t          j        |	||z              d S )	NrR   rS   rS   rS   rC  r@  )   rS   r  zdf + df2r   r   rD   rV   rW   rX   rw  rC  r   r  RuntimeWarningr   r   r   )
r   r3   r>   r}  r~  r  r|   r  df2r   s
             r4   test_basic_frame_alignmentz(TestAlignment.test_basic_frame_alignment  s    I!!!$$44X>>,-,R00-M*-b11
 
 

 I!!!$$44X>>,-,R00-M*-b11
 
 
 rx++ 	D+N;; H HgjGGGH H H H H H H H H H H H H H H '*VFCCCC
c28,,,,,s   4DDD
r_idx_typec                (   t          t          j                            d                              d           ||         d           ||         d                    }t          j        d||          }t          j        ||dk                t          t          j                            d                              |j	                  |j
        |j                  }t          j        d||          }t          j        |||k                d S )NrR   r  rS   r  df < 2r   zdf < df3)r   rD   rV   rW   rX   r   r   r   r   r+  rC  r@  )	r   r3   r>   r  r  r|   r  r   df3s	            r4   test_frame_comparisonz#TestAlignment.test_frame_comparison8  s   
 I!!!$$44X>>+-
+B//-M*-b11
 
 

 ghvf===
c26***I!!!$$44RX>>(J
 
 

 gj???
c28,,,,,r6   zignore::RuntimeWarningr1c1r2c2c                |   t          t          j                            d                              d           ||         d           ||         d                    }t          t          j                            d                              d           ||         d           ||         d                    }	t          t          j                            d                              d           ||         d           ||         d                    }
t          |j        |	j        |
j                  rIt          j        t                    5  t          j        d	||
          }d d d            n# 1 swxY w Y   nt          j        d	||
          }t          j        |||	z   |
z              d S )NrR   r'  r   r  )   rR   r  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_alignmentM  s    I!!!$$44V<<#-#A&&%M"%a((
 
 

 I!!!$$44V<<#-#A&&%M"%a((
 
 

 I!!!$$44V<<#-#A&&%M"%a((
 
 

 rxCI66 	J+N;; N Ng.vfMMMN N N N N N N N N N N N N N N '*6&IIIC
c28c>22222s   E>>FF
index_namerC  r@  c                   t          t          j                            d                              d           ||         d           ||         d                    }t          ||          }t          t          j                            d                              d          |d d                   }	t          |j        |	j                  rIt          j
        t                    5  t          j        d||          }
d d d            n# 1 swxY w Y   nt          j        d||          }
|dk    s|dk    r!|d	k    r|                    |	          n||	z   }n||	z   }t          j        |
|           d S )
NrR   r  rS   r  rL   df + sr   ry   r$   )r   rD   rV   rW   rX   getattrr   rw  rC  r   r  r  r   r   addr   )r   r3   r>   r  r  r  r|   r  rC  rx   r   r   s               r4   !test_basic_frame_series_alignmentz/TestAlignment.test_basic_frame_series_alignmentk  s    I!!!$$44X>>+-
+B//-M*-b11
 
 

 J''29((++;;A>>bqb	JJrx)) 	B+N;; F FghvfEEEF F F F F F F F F F F F F F F '(6&AAACt!3!3$*i$7$7rvvayyyR!VHHAvH
c8,,,,,s   ,DDDzr_idx_type, c_idx_typerk   )ry   ry   c           
        |dk    r[|dv rW|dk    rQ|dk    rK|dk    rEd| d| d| d	| d
| 
}|                     t          j                            |d                     t	          t
          j                            d                              d           ||         d           ||         d                    }	t          |	|          }
t          t
          j                            d                              d          |
d d                   }t          |j        |	j                  rIt          j        t                    5  t!          j        d||          }d d d            n# 1 swxY w Y   nt!          j        d||          }|dk    s|dk    r!|dk    r|	                    |          n||	z   }n||	z   }t          j        ||           d S )Nr$   )r   r   rC  rk   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   rV   rW   rX   r  r   rw  rC  r   r  r  r   r   r  r   )r   r<   r3   r>   r  r  r  r|   r)   r  rC  rx   r   r   s                 r4   !test_basic_series_frame_alignmentz/TestAlignment.test_basic_series_frame_alignment  sr    i...g%%c!!c!!DV D D D D/9D D(D D7AD D 
  1 1 1 N NOOOI!!!$$44W==+-
+B//-M*-a00
 
 

 J''29((++;;A>>bqb	JJqw)) 	B+N;; F FghvfEEEF F F F F F F F F F F F F F F '(6&AAACt!3!3$*i$7$7rvvayyyQVHH2vH
c8,,,,,s   E11E58E5r   rZ  r\  c                   t          t          j                            d                              d           ||         d           ||         d                    }t          ||          }	t          t          j                            d                              d          |	d d                   }
d| d}d| d	}t          |j        |
j                  rt          j
        t                    5  t          j        |||
          }d d d            n# 1 swxY w Y   t          j
        t                    5  t          j        |||
          }d d d            n# 1 swxY w Y   n.t          j        |||
          }t          j        |||
          }|dk    r#|dk    r|dk    rt          j        ||           d S d S d S d S )NrR   r  rS   r  rL   zs z dfzdf z sr   ry   r$   )r   rD   rV   rW   rX   r  r   rw  rC  r   r  r  r   r   r   )r   r3   r>   r  r   r  r  r|   r  rC  rx   rF   rH   r   r   s                  r4   test_series_frame_commutativityz-TestAlignment.test_series_frame_commutativity  sG    I!!!$$44X>>+-
+B//-M*-b11
 
 

 J''29((++;;A>>bqb	JJ2lllBlllrx)) 	;+N;; ? ?GCv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?+N;; ? ?GCv>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? F6:::AF6:::A*"4"4""%a+++++ "4"4""s$   8DD #D  E$$E(+E(c                X   d}d}	d|	z  }
t          t          j                            d                              |	|f           ||         |	           ||         |                    }t          t          j                            d                              |
|f           ||         |
           ||         |                    }|j        }t          t          j                            d                              |          |d |                   }|dk    s|dk    r"|dk    r|                    |          }n||z   }n||z   }|dk    s|dk    r"|dk    r|                    |          }n||z   }n||z   }t          |j	        |j	        |j	                  rIt          j        t                    5  t          j        d||          }d d d            n# 1 swxY w Y   nt          j        d||          }|j        |j        k    sJ t          j        ||           d S )	Nr   rL   rR   r  ry   r$   zdf2 + ser + dfr   )r   rD   rV   rW   rX   r@  r   r  rw  rC  r   r  r  r   r   r+  r   )r   r3   r>   r  r  r  r  r|   rc   m1m2r  r  rC  ser	expected2r   r   s                     r4   #test_complex_series_frame_alignmentz1TestAlignment.test_complex_series_frame_alignment  s    VI!!!$$44b!W==#-#B''%M"%a((
 
 

 I!!!$$44b!W==#-#B''%M"%a((
 
 

 RY**1--==a@@%)LL::t""GGCLL		#I		c	I::t""$==,,$r> 2~Hsy#)RX66 	J+N;; N Ng.vfMMMN N N N N N N N N N N N N N N '*6&IIICyHN****
c8,,,,,s   <G  G$'G$c                   t          t          j                            d                              d                    }t          t          j                            d                              d                    }|dk    rt          }nd}t          j        |          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d                    }t          j        d          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d	                    }t          t          j                            d                              d                    }t          j        d          5  t          j
        d||           d d d            n# 1 swxY w Y   t          t          j                            d                              d
                    }t          t          j                            d                              d                    }|dk    }|st          }nd}t          j        |          5 }t          j
        d||           |set          |          dk    sJ t          |d         j                  }	t          j        |j        |j        d         z
            }
d|
dd}|	|k    sJ d d d            d S # 1 swxY w Y   d S )NrR   )  rS   '  r$   Fr  r   r  )rS   r  r  r   rU   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   rV   rW   rX   r   r	   r   r  r   r   lenrB   messagelog10r   r+  )r   r3   r>   r  rx   seenis_python_enginewrnwr   loggedr   s               r4   +test_performance_warning_for_poor_alignmentz9TestAlignment.test_performance_warning_for_poor_alignment  s   ry,,Q//??
KKLL29((++;;EBBCCY%DDD'-- 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 29((++;;DAABB'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??LLMM29((++;;EBBCC'.. 	< 	<GHVF;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ry,,Q//??IIJJ29((++;;EBBCC!X- 	$CCC',, 	'GHVF;;;;# 	'1vv{{{{!A$,''!&28A;"677J$*IJ J J 
 h	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'sI   #CCC%E		EE&H

HH9A?MM	M	N)rN  rO  rP  index_typeslhs_index_typesr|  r,   r.   filterwarningsrQ  r  r  r  r  listr   r  r  r  r  r{   r6   r4   ry  ry    s-       """K!SE)O, , , [ 899[]O<<[]K88[\;77- - 87 98 =< :9-* [\?;;[\?;;- - <; <;-& [ 899[T?33[T;//[T;//[T;//3 3 0/ 0/ 0/ 43 :9
32 [ 899[\GY+?@@[\;77[\?;;- - <; 87 A@ :9-. [\GY+?@@[ WWc3Z#s,,-->  [ 899!- !- :9	  A@!-F [ 899[\;77[\?;;[\GY+?@@[TC:.., , /. A@ <; 87 :9
,4 [ 899[T?33[T;//[T;//[T;//)- )- 0/ 0/ 0/ 43 :9
)-V*' *' *' *' *'r6   ry  c            
         e Zd Zd Zd Zej                            dddg          ej                            dddg          ej                            dej	                  d                                     Z
ej                            dddg          ej                            dddg          ej                            dej	                  d	                                     Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            d          d             Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%ej                            d%d&d'd&d(g e&j'        g           d)g          d*             Z(ej                            d%g d+          d,             Z)ej                            d-d&d'd&d(g e&j'        g           d)d&d(ig          d.             Z*d/ Z+d0 Z,d1 Z-d2 Z.d3 Z/d4 Z0ej                            d5g d6          d7             Z1ej                            d8d9d:g          d;             Z2d<S )=TestOperationsc                \    |                     dd          dz   |d<   t          j        |i |S Nlevelr   rU   popr   r   r   rt  kwargss      r4   r   zTestOperations.eval0  3     **Wa0014ww''''r6   c                   g |dk    rddgfdt           j        t           j        z   D             }d |D             }|D ]}d| d}d| d}d| d	}|d
v rMd}	t          j        t
          |	          5  t          j        |||           d d d            n# 1 swxY w Y   ft          d|d|          }
|                     |||          }||
k    sJ t          ||d|          }
|                     |d|i||          }||
k    sJ t          d||dz   |          }
|                     |d|i||          }||
k    sJ d S )Nr   r   r   c                    g | ]}|v|	S r{   r{   )r2   r   exclude_ariths     r4   rl   z8TestOperations.test_simple_arith_ops.<locals>.<listcomp>9  s.     
 
 
&& &&&r6   c              3  &   K   | ]}|d k    |V  dS )z//Nr{   )r2   r   s     r4   r5   z7TestOperations.test_simple_arith_ops.<locals>.<genexpr>?  s&      44btr44r6   z1 z 1zx z (x + 1)r   z&argument of type 'int' is not iterabler   r   rU   r   r   )	r   r   rS  r,   r   r   r   r   rK   )r   r3   r>   	arith_opsopsr   r   r   r   r   expecr   yr  s                @r4   test_simple_arith_opsz$TestOperations.test_simple_arith_ops4  s   X!8,M
 
 
 
)D,==
 
 
	 54I444 	" 	"BbBr+++C#r###C%%%>]9C888 > >GBvf====> > > > > > > > > > > > > > > )B6::IIbI??Ezzzz(B6::IIcsAhvfIUUEzzzz(BAv>>IIcsAhvfIUUEzzzzz)	" 	"s   7BB	"B	rH   TFrF   r   c                (   | d| d| }t           dk    rP|dv rLd}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   d S |                     |          }t	          |          }||k    sJ d S Nrb  r   r   r   r   r>   r,   r   r   r   r   rH   rF   r   r   r   r   r/  s           r4   test_simple_bool_opsz#TestOperations.test_simple_bool_opsW         b  3  X""5"56C2#>>>  		"              Fiimm2hhczzzzzz   AA Ac                (   | d| d| }t           dk    rP|dv rLd}t          j        t          |          5  |                     |           d d d            n# 1 swxY w Y   d S |                     |          }t	          |          }||k    sJ d S r  r  r  s           r4   test_bool_ops_with_constantsz+TestOperations.test_bool_ops_with_constantsg  r  r  c                   t           j                            d                              d          }t	          t           j                            d                              d                    }d}t          j        t          |          5  |                     d||d           d d d            d S # 1 swxY w Y   d S )	NrR   )r   r  rL      rS   z?N-dimensional objects, where N > 2, are not supported with evalr   x + yr   r  r   )	rD   rV   rW   rX   r   r,   r   r   r   )r   r   r  r   s       r4   test_4d_ndarray_failsz$TestOperations.test_4d_ndarray_failsw  s    I!!!$$44\BB29((++;;B??@@O].c::: 	< 	<IIg*:*:I;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   B77B;>B;c                @    |                      d          }|dk    sJ d S )N1rU   )r   )r   r   s     r4   test_constantzTestOperations.test_constant~  s"    IIcNNAvvvvvvr6   c                    t          t          j                            d                              d                    }|                     dd|i          }t          j        ||           d S )NrR   rS   rR   r  r  r   rD   rV   rW   rX   r   r   r   )r   r  r  s      r4   test_single_variablez#TestOperations.test_single_variable  s_    ry,,Q//??HHIIii$i44
b#&&&&&r6   c                   t          t          j                            d                              d                    }t          j        t          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )NrR   ra  name 'x' is not definedr   zdf[x > 2] > 2)	r   rD   rV   rW   rX   r,   r   	NameErrorr   r   r  s     r4   &test_failing_subscript_with_name_errorz5TestOperations.test_failing_subscript_with_name_error  s    ry,,Q//??GGHH]9,EFFF 	' 	'IIo&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A>>BBc                    t          t          j                            d                              d                    }|                     dd|i          }|dz   |dk             }t          j        ||           d S )NrR   ra  z(df + 1)[df > 2]r  r  rU   r  r$  s       r4   test_lhs_expression_subscriptz,TestOperations.test_lhs_expression_subscript  sr    ry,,Q//??GGHH-4*EEFBF#
fh/////r6   c           	        t          t          j                            d                              d          t          d                    }d}|j        |j        k     }d}|j        |j        z   |j        z   }d}|j        |j        z   |j        |j        dk              z   }|||f}|||f}	t          ||	          D ]1\  }
}t          j        ||                     |
d	|i
                     2d S )NrR   ra  abcr?  zdf.a < df.bzdf.a + df.b + df.czdf.a + df.b + df.c[df.b < 0]r   r  r  )r   rD   rV   rW   rX   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    I!!!$$44V<<d5kk
 
 
 $rt#.rtBD1H~-ue#'E6** 	O 	OHAu"5$))A4*)*M*MNNNN	O 	Or6   c                   t          t          j                            d                              d          t          d                    }t          t          j                            d                              d                    }d}d}t          j        t          |          5  | 	                    |||d	           d d d            d S # 1 swxY w Y   d S )
NrR   ra  r  r?  zdf = df2%cannot assign without a target objectr   )r  r  r  )
r   rD   rV   rW   rX   r  r,   r   rA   r   )r   r  r  r  r   s        r4   test_assignment_failsz$TestOperations.test_assignment_fails  s!   I!!!$$44V<<d5kk
 
 
 	--a00@@HHII5]:S111 	@ 	@IIer#(>(>I???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   -CCCc                4   t          t          j                            d                              d          t          d                    }t          j        t          d          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrR   r   abr?  invalid syntaxr   zd c = a + b
r   rD   rV   rW   rX   r  r,   r   rB  r   r  s     r4   %test_assignment_column_multiple_raisez4TestOperations.test_assignment_column_multiple_raise  s    I!!!$$44V<<d4jj
 
 
 ];.>??? 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   *BBBc                8   t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrR   r   r  r?  z5left hand side of an assignment must be a single namer   zd,c = a + br  rE  s      r4   %test_assignment_column_invalid_assignz4TestOperations.test_assignment_column_invalid_assign  s    I!!!$$44V<<d4jj
 
 
 F];c222 	# 	#GGM"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#   ,BBBc                8   t          t          j                            d                              d          t          d                    }d}t          j        t          |          5  |	                    d           d d d            d S # 1 swxY w Y   d S )NrR   r   r  r?  zcannot assign to function callr   zTimestamp("20131001") = a + br  rE  s      r4   3test_assignment_column_invalid_assign_function_callzBTestOperations.test_assignment_column_invalid_assign_function_call  s    I!!!$$44V<<d4jj
 
 
 /];c222 	5 	5GG3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5r  c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	           t          j	        ||           d S )
NrR   r   r  r?  r   r   	a = a + bTinplace
r   rD   rV   rW   rX   r  copyr   r   r   r   r  r   s      r4   &test_assignment_single_assign_existingz5TestOperations.test_assignment_single_assign_existing      I!!!$$44V<<d4jj
 
 
 7799 5
T***
b(+++++r6   c                J   t          t          j                            d                              d          t          d                    }|                                }|d         |d         z   |d<   |                    dd	
           t          j	        ||           d S )NrR   r   r  r?  r   r   rI   	c = a + bTr  r  r  s      r4   !test_assignment_single_assign_newz0TestOperations.test_assignment_single_assign_new  r  r6   c                j   t          t          j                            d                              d          t          d                    }|                                }d}|                    dd           |                                }d|d	         z   |d
<   t          j	        ||           d S )NrR   r   r  r?  rU   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    I!!!$$44V<<d4jj
 
 
 WWYY
T***7799HSM)
b(+++++r6   c                d   t          t          j                            d                              d          t          d                    }d}|j                                        }|                    dd           ||j	        z   }t          j        ||j        d	
           |j        J d S )NrR   r   r  r?  rU   r   Tr  Fr  )r   rD   rV   rW   rX   r  r   r  r   r   r   r   rD  )r   r  r   old_ar   s        r4   "test_assignment_single_assign_namez1TestOperations.test_assignment_single_assign_name  s    I!!!$$44V<<d4jj
 
 
 		
T***
vrt????{"""""r6   c                f   t          t          j                            d                              d          t          d                    }|                    dd           d}t          j        t          |	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )NrR   r   r  r?  r	  Tr  z#can only assign a single expressionr   z	c = a = b)
r   rD   rV   rW   rX   r  r   r,   r   rB  rE  s      r4   test_assignment_multiple_raisesz.TestOperations.test_assignment_multiple_raises  s    I!!!$$44V<<d4jj
 
 
 	T***3];c222 	! 	!GGK   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   B&&B*-B*c                R   t          t          j                            d                              d          t          d                    }|                     dd|i|d           |                                }|d	         |d
         z   |d<   t          j	        ||           d S )NrR   r   r  r?  zc = df.a + df.br  T)r   targetr  r   r   rI   
r   rD   rV   rW   rX   r  r   r  r   r   r  s      r4   test_assignment_explicitz'TestOperations.test_assignment_explicit  s    I!!!$$44V<<d4jj
 
 
 			#r
2t	TTT7799 5
b(+++++r6   c                    t          dgdgd          }|                    d          }t          dg          }t          j        ||d           d S )N   ir   r   za in [11, -32]TFr  )r   r   r   r   r   r$  s       r4   test_column_inzTestOperations.test_column_in  sZ    bT..//)**4&>> 	vxUCCCCCCr6   z%Unknown: Omitted test_ in name prior.r(   c                R   t          t          j                            d                              d          t          d                    }|                    dd          }|J |                                }|d         |d	         z   |d
<   t          j	        ||           d S )NrR   r   r  r?  r	  Fr  r   r   rI   r  )r   r  actualr   s       r4   test_assignment_not_inplacez*TestOperations.test_assignment_not_inplace  s     I!!!$$44V<<d4jj
 
 
 e44!!!7799 5
b(+++++r6   c                <   t          g dg dd          }|                                }|d         |d         z   |d<   |d         |d         z   |d<   |                    dd	
          }t          j        ||           |J |d         dz
  |d<   |d         dz   |d<   |                    dd	
          }t          j        ||           |J d}t          j        t          |          5  |                    dd
           d d d            d S # 1 swxY w Y   d S )NrU   rR   r   r  rL   r  r  r   r   rI   d$
        c = a + b
        d = c + bTr  rU   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   warn_copy_on_writer  r   answerr   s         r4   test_multi_line_expressionz)TestOperations.test_multi_line_expression  s   YYYYYY77887799 5 5 	  
 
 	h+++~~~ ) ) 	  
 
 	h+++~~~ Q]:S111 	 	GG 	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ,DDDc                   t          g dg dd          }|                                }|d         |d         z   |d<   |d         |d         z   |d<   |                    dd	
          }t          j        ||           |d         dz
  |d<   |d         dz   |d<   |                    dd	
          }t          j        ||           d S )Nr  r  r  r   r   rI   r   r!  Fr  rU   rR   rJ   r"  r   r  r   r   r   r  s      r4   &test_multi_line_expression_not_inplacez5TestOperations.test_multi_line_expression_not_inplace@  s    YYYYYY77887799 5 5WW 	  
 
 	h+++ ) )WW 	  
 
 	h+++++r6   c                    t          g dg dd          }|                                }d}|d         |z  |d<   |d         |z   |d<   |                    dd	
          }t          j        ||           |J d S )Nr  r  r  r  r   rI   r   z?
        c = a * @local_var
        d = c + @local_var
        Tr  r'  )r   r  r   	local_varr$  s        r4   )test_multi_line_expression_local_variablez8TestOperations.test_multi_line_expression_local_variableY  s    YYYYYY77887799	 	1 	1   
 
 	h+++~~~~~r6   c                    t          g dg dd          }d }|                                }|d          |dd          z  |d<   |d          |dd          z   |d	<   |                    d
d          }t          j        ||           |J d S )Nr  r  r  c                    |S r9   r{   r  s     r4   
local_funczUTestOperations.test_multi_line_expression_callable_local_variable.<locals>.local_funco      Hr6   r   rU   r  rI   r   zM
        c = a * @local_func(1, 7)
        d = c + @local_func(1, 7)
        Tr  r'  r   r  r.  r   r$  s        r4   2test_multi_line_expression_callable_local_variablezATestOperations.test_multi_line_expression_callable_local_variablek  s    YYYYYY7788	 	 	 7799 

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

1a(8(88   
 
 	h+++~~~~~r6   c                $   t          g dg dd          }d }|                                }|d          |dd          z  |d	<   |d	          |dd          z   |d
<   |                    dd          }t          j        ||           |J d S )Nr  r  r  c                    |S r9   r{   r  s     r4   r.  zaTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs.<locals>.local_func  r/  r6   r   r  rU   )r   r   rI   r   zU
        c = a * @local_func(b=7, a=1)
        d = c + @local_func(b=7, a=1)
        Tr  r'  r0  s        r4   >test_multi_line_expression_callable_local_variable_with_kwargszMTestOperations.test_multi_line_expression_callable_local_variable_with_kwargs  s    YYYYYY7788	 	 	 7799 

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

Q!(<(<(<<   
 
 	h+++~~~~~r6   c                   t          g dg dd          }|                                }d}t          j        t          |          5  |                    d           d d d            n# 1 swxY w Y   t          j        ||           d S )Nr  r  r  r  r   za = 1)r   r  r,   r   rA   r5  r   r   )r   r  df_origr   s       r4   test_assignment_in_queryz'TestOperations.test_assignment_in_query  s    YYYYYY7788''))5]:S111 	 	HHW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
b'*****s   A**A.1A.c                <   t          g dg dd          }|                                }||d         dk             }|                    dd           t          j        ||           i }dd	i}|                     d
|d           t          j        ||           d S )Nr  r  r  r   rR   za == 2Tr  r   	a = 1 + 2r  r  )r   r  r5  r   r   r   assert_dict_equalr  s      r4   test_query_inplacez!TestOperations.test_query_inplace  s    YYYYYY77887799HSMQ./
4(((
h+++8		+b$	777
R*****r6   invalid_targetrU   catrR   rU   r   c                `   d}d}t          j        t          |          5  |                     ||d           d d d            n# 1 swxY w Y   t	          |d          rNt          j        t          |          5  |                     ||d           d d d            d S # 1 swxY w Y   d S d S )Nz)Cannot assign expression output to targetr9  r   Tr:  r  F)r,   r   rA   r   hasattrr   r=  r   
expressions       r4   test_cannot_item_assignz&TestOperations.test_cannot_item_assign  se   9 
]:S111 	G 	GIIjIFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G >6** 	Lz555 L L		*^U	KKKL L L L L L L L L L L L L L L L L L	L 	Ls#   AA	A	;B!!B%(B%)rU   r>  r?  c                    d}d}t          j        t          |          5  |                     ||d           d d d            d S # 1 swxY w Y   d S )Nz"Cannot return a copy of the targetr9  r   Fr:  )r,   r   rA   r   rB  s       r4   test_cannot_copy_itemz$TestOperations.test_cannot_copy_item  s    2 
]:S111 	H 	HIIjIGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H   AA
A
r  c                    d}|                      ||d          dk    sJ d}t          j        t          |          5  |                      ||d           d d d            d S # 1 swxY w Y   d S )N1 + 2Fr:  r   z0Cannot operate inplace if there is no assignmentr   T)r   r,   r   rA   )r   r  rC  r   s       r4   test_inplace_no_assignmentz)TestOperations.test_inplace_no_assignment  s    
yyFEyBBaGGGG@]:S111 	? 	?IIjI>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A$$A(+A(c                F   t          t          j                            d                              d          t          ddd                    }|dk     }|                     dd|i	          }|dk     }t          j        ||           t          j        ||           d S )
NrR   rR   rR   rp   ru   rv   rr   r?  r  r  r  	r   rD   rV   rW   rX   r   r   r   r   )r   r  rJ   rr   s        r4   *test_basic_period_index_boolean_expressionz9TestOperations.test_basic_period_index_boolean_expression  s    I!!!$$44V<< CCCC
 
 
 FIIhD":I66F
a###
a#####r6   c                   t          t          j                            d                              d          t          ddd                    }|                     dd|i	          }||d
k              }t          j        ||           d S )NrR   rL  rp   ru   rM  r?  zdf[df < 2 + 3]r  r  rL   rN  r   r  rO  rJ   s       r4   ,test_basic_period_index_subscript_expressionz;TestOperations.test_basic_period_index_subscript_expression  s    I!!!$$44V<< CCCC
 
 
 II&D":I>>rEzN
a#####r6   c                <   t          t          j                            d                              d          t          ddd                    }|                     dd|i	          }|||dk              dk              |dz  z   }t          j        ||           d S )
NrR   rL  rp   ru   rM  r?  zdf[df[df < 2] < 2] + df * 2r  r  rN  rR  s       r4   -test_nested_period_index_subscript_expressionz<TestOperations.test_nested_period_index_subscript_expression  s    I!!!$$44V<< CCCC
 
 
 II3r
IKKr"q&zA~a'
a#####r6   c                &   t          t          j                            d                              d                    }t          dd          |d<   |                     dd|i||	          }|j        d
k     }t          j	        ||d           d S )NrR   ra  z1/1/2012rL   rq   dates1zdf.dates1 < 20130101r  r   20130101Fr  )
r   rD   rV   rW   rX   r   r   rW  r   r   )r   r3   r>   r  r   r  s         r4   test_date_booleanz TestOperations.test_date_boolean  s    ry,,Q//??GGHH!*a8888ii"bz	  
 
 	J&
sEu======r6   c                   |dk    rt          j        d||          }|sJ t          j        d||          }|sJ t          j        d||          }|rJ t          j        d||          }|sJ t          j        d||          }|sJ t          j        d||          }|sJ t          j        d	||          }|sJ t          j        d
||          }|sJ t          j        d||          }|rJ t          j        d||          }|sJ d S d}t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        d||           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        d||           d d d            d S # 1 swxY w Y   d S )Nr   z1 in [1, 2]r   z2 in (1, 2)z3 in (1, 2)z3 not in (1, 2)z[3] not in (1, 2)z[3] in ([3], 2)z[[3]] in [[[3]], 2]z(3,) in [(3,), 2]z(3,) not in [(3,), 2]z[(3,)] in [[(3,)], 2]z'In' nodes are not implementedr   z[(3,)] in (1, 2, [(3,)])z!'NotIn' nodes are not implementedz[3] not in (1, 2, [[3]]))r   r   r,   r   r   )r   r3   r>   r   r   s        r4   test_simple_in_opsz!TestOperations.test_simple_in_ops  s   X'-vFFFCJJJ'-vFFFCJJJ'-vFFFCNNN'+F6JJJCJJJ'-fVLLLCJJJ'+F6JJJCJJJ'/vNNNCJJJ'-fVLLLCJJJ'1&PPPCNNN'1&PPPCJJJJJ2C2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> E EfVDDDDE E E E E E E E E E E E E E E2#>>> R R26&QQQQR R R R R R R R R R R R R R R5C2#>>> I I)&HHHHI I I I I I I I I I I I I I I2#>>> R R26&QQQQR R R R R R R R R R R R R R R R R Rsl   5EE E?F##F'*F'	G--G14G1H77H;>H;JJ
J)KKKc                v    d}d                     d          }d}t          j        |||          }||k    sJ d S )NrU   z * !aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   )r   r   r   )r   r3   r>   r   r   r   r   s          r4   test_check_many_exprsz$TestOperations.test_check_many_exprs!  sD    zz(##gd6&999hr6   r   )zdf > 2 and df > 3zdf > 2 or df > 3z
not df > 2c                t   t          t          j                            d                              d                    }|dk    rXd}d|v rd}t          j        t          |          5  t          j	        |d|i||	           d d d            d S # 1 swxY w Y   d S t          j	        |d|i||	           d S )
NrR   ra  r   r   not'Not' nodes are not implementedr   r  )r   r>   r3   
r   rD   rV   rW   rX   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%    ry,,Q//??GGHHX6C}}72#>>>   $bz!!	                     G ":	     s   )BBBcharr   r   c                h   t          t          j                            d                              d                    }d| d}|dk    rOd}t          j        t          |          5  t          j	        |||           d d d            d S # 1 swxY w Y   d S t          j	        |||           d S )	NrR   ra  z(df + 2)[df > 1] > 0 z	 (df > 0)r   z$cannot evaluate scalar only bool opsr   r  rb  )r   rd  r3   r>   r  r   r   s          r4   test_fails_ampersand_pipez(TestOperations.test_fails_ampersand_pipeG  s    ry,,Q//??GGHH4T444X8C2#>>> : :6&9999: : : : : : : : : : : : : : : : : : GBvf555555s   )BBBN)3rN  rO  rP  r   r  r,   r.   rQ  r   rR  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r   r  r%  r(  r+  r1  r4  r7  r<  rD   r   rD  rF  rJ  rP  rS  rU  rY  r[  r^  rc  rf  r{   r6   r4   r  r  /  sf       ( ( (!" !" !"F [UT5M22[UT5M22[T4#566  76 32 32 [UT5M22[UT5M22[T4#566  76 32 32< < <  ' ' '
' ' '
0 0 0O O O@ @ @# # ## # #5 5 5, , ,, , ,
, 
, 
,
# 
# 
#! ! !, , ,D D D [EFF, , GF,# # #J, , ,2  $  (  (+ + ++ + + [-51a&("(2,,PV/WXX	L 	L YX	L [-/A/A/ABBH H CBH [X51a&("(2,,QRTUPV'WXX? ? YX?
$ 
$ 
$$ $ $$ $ $
> 
> 
>-R -R -R^   [	
 	
 	
   . [Vc3Z00	6 	6 10	6 	6 	6r6   r  c                     e Zd Zd Zej                            e d          ej                            de	          d                         Z
ej                            de          d             Zd Zd Zej                            d	ej        ej        fej        ej        fej        ej        fej        ej        f ej        ej        ej        ej        
          g          d             Zd Zd ZdS )TestMathc                \    |                     dd          dz   |d<   t          j        |i |S r  r  r  s      r4   r   zTestMath.evalU  r  r6   z&Unary ops only implemented for numexprr(   fnc                   t          dt          j                            d                              d          i          }|j        }| d}|                     |          }t          j        d          5   t          t          |          |          }d d d            n# 1 swxY w Y   t          j
        ||d           d S )	Nr   rR   rS   z(a)r%   allFr  )r   rD   rV   rW   rX   r   r   errstater  r   r   )r   rj  r  r   r   gotr   s          r4   test_unary_functionszTestMath.test_unary_functionsY  s    
 RY22155EEbIIJKKDzzziioo[X&&& 	( 	($WR__Q''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(
sF>>>>>>s   8B##B'*B'c                    t          t          j                            d                              d          t          j                            d                              d          d          }|j        }|j        }| d}|                     |          }t          j        d          5   t          t          |          ||          }d d d            n# 1 swxY w Y   t          j        ||d           d S )	NrR   rS   r  z(a, b)r%   rl  Fr  )r   rD   rV   rW   rX   r   r   r   rn  r  r   r   )r   rj  r  r   r   r   ro  r   s           r4   test_binary_functionszTestMath.test_binary_functionsg  s&   Y**1--==bAAY**1--==bAA 
 
 DD}}}iioo[X&&& 	+ 	+$WR__Q**F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
sF>>>>>>s   0 CC #C c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        t          j        |j	                  |j
                  }t          j        ||d           d S )	NrR   rS   r  ze = arctan2(sin(a), b)Tr3   r>   r  Fr  )r   rD   rV   rW   rX   r   rJ   arctan2sinr   r   r   r   r   r3   r>   r  ro  r   s         r4   test_df_use_casezTestMath.test_df_use_casex  s    Y**1--==bAAY**1--==bAA 
 
 	$	 	 	
 	
 	
 dBF24LL"$//
sF>>>>>>r6   c                   t          t          j                            d                              d          t          j                            d                              d          d          }|                    d||d           |j        }t          j        |j        |j	        z             }t          j        ||d           d S )	NrR   rS   r  ze = sin(a + b)Trt  Fr  )r   rD   rV   rW   rX   r   rJ   rv  r   r   r   r   rw  s         r4    test_df_arithmetic_subexpressionz)TestMath.test_df_arithmetic_subexpression  s    Y**1--==bAAY**1--==bAA 
 
 	 MMMdrt$$
sF>>>>>>r6   zdtype, expect_dtyper*   c                   t          dt          j                            d                              d                              |          i          }|j        j        |k    sJ |                    d||d           |j	        }t          j
        |j                  }|j        |j        k    sJ ||j        k    sJ t          j        ||d           d S )	Nr   rR   rS   z
b = sin(a)Trt  Fr  )r   rD   rV   rW   rX   r   r   r_   r   r   rv  r   r   )r   r_   expect_dtyper3   r>   r  ro  r   s           r4   test_result_typeszTestMath.test_result_types  s      ")''**::2>>EEeLLM
 
 tzU""""
VFDIIId|sy((((sy((((
sF>>>>>>r6   c                $   t          dt          j                            d                              d          i          }d}t          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rR   rS   z#"mysin" is not a supported functionr   zmysin(a)r   )	r   rD   rV   rW   rX   r,   r   rA   r   r   r3   r>   r  r   s        r4   test_undefined_funczTestMath.test_undefined_func  s    RY22155EEbIIJKK3]:S111 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>   BB	B	c                $   t          dt          j                            d                              d          i          }d}t          j        t          |          5  |                    d||           d d d            d S # 1 swxY w Y   d S )Nr   rR   rS   z1Function "sin" does not support keyword argumentsr   zsin(x=a)r   )	r   rD   rV   rW   rX   r,   r   r   r   r  s        r4   test_keyword_argzTestMath.test_keyword_arg  s    RY22155EEbIIJKKA]9C000 	> 	>GGJvfG===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>r  N)rN  rO  rP  r   r,   r.   r/   r   rQ  r!   rp  r   rr  rx  rz  rD   int32rf   ra   float32r-   
complex128r0   rW  r}  r  r  r{   r6   r4   rh  rh  T  sp       ( ( ( [&N    [T?33? ? 43 ? [T#344? ? 54? ? ? ?"
? 
? 
? [Xrz"Xrz"Z$Z$FLR=OPPP	
	 	? ?	 	?"> > >> > > > >r6   rh  rR   rS   c                  ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestScopec                n    d}t          j        t          dz  t          j        |||                     d S )N
_var_s * 2rR   r   )r   r   _var_sr   r   )r   r3   r>   rJ   s       r4   test_global_scopezTestScope.test_global_scope  s@    
#QJ&@@@	
 	
 	
 	
 	
r6   c                    d}t                                                      }t          j        d|||           t                                                      }|                    d           ||k    sJ d S )NrU   x + 1r   lcls)localsr  r   r   r  )r   r3   r>   r   r  lcls2s         r4   test_no_new_localszTestScope.test_no_new_locals  se    xx}}
DGGGG		&u}}}}}}r6   c                    d}t                                                      }t          j        d||           t                                                      }||k    sJ d S )NrU   r  r   )globalsr  r   r   )r   r3   r>   r   gblsgbls2s         r4   test_no_new_globalszTestScope.test_no_new_globals  sU    yy~~
v6666		  u}}}}}}r6   c                    d}d}t          j        t          |          5  t          j        d||i            d d d            d S # 1 swxY w Y   d S )NrU   r  r   r  r   r,   r   r
   r   r   )r   r3   r>   r   r   s        r4   test_empty_localszTestScope.test_empty_locals  s    ']1=== 	J 	JGGF6bIIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	JrG  c                    d}d}t          j        t          |          5  t          j        |||i            d d d            d S # 1 swxY w Y   d S )Nzname '_var_s' is not definedr  r   )r3   r>   global_dictr  )r   r3   r>   r   rJ   s        r4   test_empty_globalszTestScope.test_empty_globals  s    ,]1=== 	E 	EGAfVDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	ErG  N)rN  rO  rP  r  r  r  r  r  r{   r6   r4   r  r    sg        
 
 
    J J JE E E E Er6   r  c                     d} t          j        t          |           5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )	NzInvalid engine 'asdf' passedr   r  rU   rR   r  asdf)r   r3   r,   r   KeyErrorr   r   r   s    r4   test_invalid_enginer        
(C	xs	+	+	+ E E
!!$4$4VDDDDE E E E E E E E E E E E E E E E E E   AA
A
)use_numexprr   ))Tr$   )Fr   c                    ddl m} t          j        d|           5   |d           }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   )_check_enginecompute.use_numexpr)pandas.core.computation.evalr  r   option_context)r  r   r  r   s       r4   test_numexpr_option_respectedr    s     ;:::::		0+	>	> " "t$$!!!!!" " " " " " " " " " " " " " " " " "s   >AAc                    t          j        dd          5  t          g dg dd          } |                     d          }t          d d gddgdd	dg
          }t	          j        ||           d d d            d S # 1 swxY w Y   d S )Nr  F)TFTFNN)rU   rR   r   r  rL   r  )r2  Bz
A.isnull()rL   r  r  )rC  )r   r  r   r5  r   r   )r  r   r   s      r4   #test_numexpr_option_incompatible_opr    s     
	0%	8	8 0 0888?Q?Q?QRR
 
 ,''D$<q!f==aVLLL
fh///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AA>>BBc                     d} t          j        t          |           5  t          j        ddddd           d d d            d S # 1 swxY w Y   d S )	NzInvalid parser 'asdf' passedr   r  rU   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 ]O}d}t          j        t          |          5   t          ||                       d d d            n# 1 swxY w Y   Pd S )Nr  znodes are not implementedr   )r  unsupported_nodesr,   r   r   r  )r3   r>   VisitorClassinstr  r   s         r4   test_disallowed_nodesr    s     F#L<00D- ! !)].c::: 	! 	!GD#   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!! !s   A&&A*	-A*	c                    d}t          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )Nzs +r  r   r   r,   r   rB  r   r   )r3   r>   rJ   s      r4   test_syntax_error_exprsr  %  s    A	{*:	;	;	; 1 1
&00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA
Ac                    d}d}t          j        t          |          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )Nzs + tzname 's' is not definedr   r   )r,   r   r  r   r   )r3   r>   rJ   r   s       r4   test_name_error_exprsr  +  s    A
#C	y	,	,	, 1 1
&00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   AA	A	express)za + @bz@a + bz@a + @bc                L   d\  }}|dk    rMt          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S t          j        t          d          5  t          j        || |           d d d            d S # 1 swxY w Y   d S )NrU   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  2  s:   DAq];.FGGG 	; 	;GGF6::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; ];.EFFF 	; 	;GGF6::::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s#   AAA4BB Bc                    d\  }}| dk    rOd}t          j        t          |          5  t          j        d| |           d d d            d S # 1 swxY w Y   d S t          j        d| |          }|||z   k    sJ d S )Nr  r$   zVariables in expression .+r   zsin + dotted_liner   )r,   r   r   r   r   )r3   r>   rv  dotted_liner   r   s         r4   test_numexpr_builtin_raisesr  >  s    C*]1=== 	G 	GG'vFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G g)&HHHcK'''''''s   AAAc                    d}t          j        t          d          5  t          j        d|| |           d d d            d S # 1 swxY w Y   d S )N)*   g      @zResolver of type .+r   rI  )	resolversr3   r>   )r,   r   r   r   r   )r3   r>   cannot_resolves      r4   test_bad_resolver_raisesr  I  s    N	y(=	>	>	> Q Q
>&PPPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs   AAAc                    t          j        t          d          5  t          j        d| |           d d d            d S # 1 swxY w Y   d S )Nzexpr cannot be an empty stringr    r   r,   r   rA   r   r   r   s     r4   test_empty_string_raisesr  O  s    	z)I	J	J	J 2 2
6&11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2   AAAc                    t          j        t          d          5  t          j        d| |           d d d            d S # 1 swxY w Y   d S )Nz#only a single expression is allowedr   z1 + 1; 2 + 2r   r  r   s     r4   $test_more_than_one_expression_raisesr  U  s    	{*O	P	P	P > >
vf====> > > > > > > > > > > > > > > > > >r  cmpr   rF   rH   c                   t           d t          t          j                            d          j        i} ||                      } ||                      }  ||                     }d| d| d}d| d| d}d| d| d	}	|||	fD ]N}
d
}t          j        t          |          5  t          j
        |
||           d d d            n# 1 swxY w Y   Od S )Nc                 f    t           j                            d                              d          S )NrR   rS   )rD   rV   rW   r   r{   r6   r4   rd   z0test_bool_ops_fails_on_scalars.<locals>.<lambda>_  s$    RY**1--66r:: r6   rR   r   r   r   r   r   r   r   r(  r   r   )intrO   rD   rV   rW   rX   r,   r   r   r   r   )rF   r  rH   r3   r>   genr   r   r   r   r   r   s               r4   test_bool_ops_fails_on_scalarsr  Z  sJ   
 	::ry$$Q''7C
 #c(**C
#c(**C
#c(**C
$
$
$3
$
$
$C
,
,
,3
,
,
,C
.#
.
.C
.
.
.CCo 6 6K].c::: 	6 	6GBvf5555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	66 6s   #CC	C	otherz'x'z...c                    t          dg dit                    }|                    d|            }t          g dd          }t          rd |_        t          j        ||           d S )Nr2  )r   r   rI   r^   r4  )FFFrD  )r   objectr   r   r   rD  r   r   )r  r  r   r   s       r4   test_equals_variousr  p  sy     
C)	8	8	8BWW_U__%%F+++#666H  68,,,,,r6   c                `    d}t           j        }t          j        || |          }||k    sJ d S )Nzinf + 1r   )rD   infr   r   )r3   r>   rx   r   r   s        r4   test_infr    s;    AvHWQvf555FXr6   columnu	   Temp(°C)u   Capacitance(μF)c                   t          t          j                            d                              d          |dg          }|||         dk             }d| d}|                    ||           }t          j        ||           d S )	NrR   r   r   r?  rL   `z` > 5)r3   )r   rD   rV   rW   rX   r5  r   r   )r3   r  r  r   query_stringr   s         r4   test_query_tokenr    s     

	a  008863-
 
 
B "V*q.!H$v$$$LXXl6X22F&(+++++r6   c                   t          ddgddggddg          }||j        dk              }|                    d| |	          }t          j        ||           |d
k    rPd}t          j        t          |          5  |                    d| |	           d d d            d S # 1 swxY w Y   d S |                    d| |	          }t          j        ||           d S )Nr   rS   rU   r  r>  countr?  z
~(cat > 0)r   r   ra  r   znot (cat > 0))r   r>  r5  r   r   r,   r   r   )r3   r>   r  r   r   r   s         r4   test_negate_lt_eq_ler    sJ   	QGaW%w/?	@	@	@BBFQJ- HXXl6&XAAF&(+++/].c::: 	D 	DHH_VFHCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D /&HH
fh/////s   <B""B&)B&c                   |dv r<|                      t          j                            t          d|                      t          t          j                            d          	                    ddd          |d	g
          }|||         dk             }|
                    | d          }t          j        ||           d S )N)TrueFalser  Infz+GH 47859 DataFrame eval not supported with )r   r)   rR   r   d   r  r   col1r?  r  z>6)r   r,   r.   r   r  r   rD   rV   rW   r   r5  r   r   )r<   r  r  r   r   s        r4    test_eval_no_support_column_namer    s     000KMVMM   	
 	
 	
 

	a  ))!Sw)?? 
 
 
B "V*q.!HXXmmm$$F&(+++++r6   c                D   t          g dg dg dd          }|d d          }|d         }t          j        |          5  |                    dd           d d d            n# 1 swxY w Y   t          g d	g dg dd          }t          j        ||           | s>t          j        ||d                    t          j        |d         |d                    d S t          g dd
          }t          j        ||           t          j        |d         |           d S )Nr  r  )r     	   )r2  r  Cr2  z	A = B + CTr  )r        r  )r   r   assert_cow_warningr   r   r   r   )using_copy_on_writer#  r  result_viewr  r   s         r4   test_set_inplacer    sx    
CC	D	DBQQQ%K
S'C		1	2	2 + +
T***+ + + + + + + + + + + + + + +|||))))))LLMMH"h''' ;
sHSM222
{3/#?????)))#...
sH---
{3/:::::s    A$$A(+A(c                  b    e Zd Zej                            dddg ddg          d             ZdS )TestValidatevaluerU   r  r  g      @c                    d}t          j        t          |          5  t          j        d|           d d d            d S # 1 swxY w Y   d S )Nz8For argument "inplace" expected type bool, received typer   z2+2r  r  )r   r  r   s      r4   test_validate_bool_argsz$TestValidate.test_validate_bool_args  s    H]:S111 	* 	*GE5))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   AA	AN)rN  rO  rP  r,   r.   rQ  r  r{   r6   r4   r  r    sN        [Wq&)))S&ABB* * CB* * *r6   r  )p
__future__r   	functoolsr   	itertoolsr   rq  numpyrD   r,   pandas.compatr   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    r!   pandas.core.computation.scoper"   pandas.util.versionr#   r$   fixturer3   PARSERSr>   rK   r  rn   rF   rH   r   r|   r~   rY  rw  ry  r  rh  rV   rW   rX   r  r  r1   r  r.   rQ  r  r  r  PyTablesExprVisitorr  __annotations__r  r  r  r  r  r  r  r  r  rO   r  r  r  r  r  keysr  r  r  r{   r6   r4   <module>r     sJ   " " " " " " "                         > > > > > >         
 * ) ) ) ) ) ) ) )                                            4 3 3 3 3 3         
                     : 9 9 9 9 9 ' ' ' ' ' '
$
$Yx
@
@
@         !   t|$$$  %$   4a>>EEE   	  
   _	W _	W _	W _	W _	W _	W _	W _	WL? ? ? ? ? ? ? ?<$ $ $S' S' S' S' S' S' S' S'tb6 b6 b6 b6 b6 b6 b6 b6Jh> h> h> h> h> h> h> h>V 
		q	!	!	1	1"	5	5"E "E "E "E "E "E "E "EJ yE E E y " "  " y0 0 0 yE E E  ,. .     7++8,,! ! -, ,+!1 1 11 1 1 $C$C$CDD; ; ED;( ( (Q Q Q2 2 2> > >
 ..e--e--6 6 .- .- /.6&  - - -   K1C#DEE, , FE,0 0 0  O , ,	 ,(; ; ;(* * * * * * * * * *r6   