
    .iK              	       f   d dl Z d dlmZ d dlZd dlZd dlmZmZ d dl	m
c mZ d dlZd dlmZmZmZmZmZ d dlmZ d dlmZ  ej2                  ddgd 	      d
        Z ej2                  d ej6                  d ej8                  d            gd 	      d        Zd Z G d d      Z G d d      Z  G d d      Z! ej8                  d       G d d             Z" ej8                  d       G d de"             Z# G d de"      Z$ G d de#      Z% G d d      Z& G d  d!      Z' G d" d#      Z(y)$    N)
TokenError)NumExprClobberingErrorUndefinedVariableError)	DataFrameIndex
MultiIndexSeries
date_range)NUMEXPR_INSTALLEDpythonpandasc                     | S N xs    `/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/frame/test_query_eval.py<lambda>r      s    1     )paramsidsc                     | j                   S r   paramrequests    r   parserr      s    ==r   numexpr)marksc                     | S r   r   r   s    r   r   r       s    ! r   c                     | j                   S r   r   r   s    r   enginer"      s    
 ==r   c                 @    | dk7  rt        j                  d|         y y )Nr   zcannot evaluate with parser=)pytestskip)r   s    r   skip_if_no_pandas_parserr&   &   s#    26(;< r   c                       e Zd Zej                  d        Zej                  d        Zej                  d        Zd Zd Z	d Z
d Zy)	
TestCompatc                      t        dg di      S )NA         r   selfs    r   dfzTestCompat.df,   s    #y)**r   c                 &    ||j                   dkD     S )Nr   r*   r1   r2   s     r   	expected1zTestCompat.expected10   s    "$$(|r   c                      |j                   dz   S Nr,   r4   r5   s     r   	expected2zTestCompat.expected24   s    ttaxr   c                     |j                  d      }t        j                  ||       |j                  d      }t        j                  ||       y )NA>0A+1querytmassert_frame_equalevalassert_series_equalr1   r2   r6   r9   results        r   test_query_defaultzTestCompat.test_query_default8   s>     %
fi0
vy1r   c                     |j                  dd       }t        j                  ||       |j                  dd       }t        j                  ||       y )Nr;   r"   r<   r=   rC   s        r   test_query_NonezTestCompat.test_query_None@   sF    %-
fi0t,
vy1r   c                     |j                  dd      }t        j                  ||       |j                  dd      }t        j                  ||       y )Nr;   r   rG   r<   r=   rC   s        r   test_query_pythonzTestCompat.test_query_pythonF   sF    %1
fi0x0
vy1r   c                    t         rS|j                  dd      }t        j                  ||       |j	                  dd      }t        j
                  ||       y d}t        j                  t        |      5  |j                  dd       d d d        t        j                  t        |      5  |j	                  dd       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)Nr;   r   rG   r<   z~'numexpr' is not installed or an unsupported version. Cannot use engine='numexpr' for query/eval if 'numexpr' is not installedmatch)	r   r>   r?   r@   rA   rB   r$   raisesImportError)r1   r2   r6   r9   rD   msgs         r   test_query_numexprzTestCompat.test_query_numexprL   s    XXeIX6F!!&)4WWU9W5F""695! 
 {#6 2y12{#6 1i01 12 21 1s   7C.CCC N)__name__
__module____qualname__r$   fixturer2   r6   r9   rE   rH   rJ   rQ   r   r   r   r(   r(   +   s\    ^^+ + ^^  ^^ 2221r   r(   c                       e Zd Zej                  j                  dddg      ej                  j                  dg d      d               Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Zd Zd Zd Zy)TestDataFrameEvaln   i  zop_str,op,rop))+__add____radd__)-__sub____rsub__)*__mul____rmul__)/__truediv____rtruediv__c                 &   t        dt        |      t        d            }d|j                  d<   |j	                         }t        t        j                  |j                  |      j                  |d      t        d            }t        d| d	      }t        d
| d	      }	t        j                  |	|       |dv r) t        ||      |      }	t        j                  |	|       y |dv r) t        ||      |      }	t        j                  |	|       y y )Nr,   abcdindexcolumnsr-   r   rj   zbase z dfzm )rZ   r`   )r]   rc   )r   rangelistilocmeannptilevaluesreshaperA   r?   r@   getattr)
r1   op_stroproprX   r2   mbaseexpectedrD   s
             r   test_opszTestDataFrameEval.test_ops`   s     qa$v,?
GGIGGAHHa ((B/f
 %xs+, 6(#&'
fh/ $WR_Q'F!!&(3 :%WR%a(F!!&(3 r   c                 p   t        dt        j                  j                  d      j	                  d      i      }t        j
                  |j                  dd dt        j                  |j                  dd       z
  }dt        j                  |      z
  j                  dd }t        j                  ||       y )Nr*   r-   ia  r      r,      )
r   rq   randomdefault_rngstandard_normalnanro   isnanr?   r@   )r1   r2   r{   rD   s       r   test_dataframe_sub_numexpr_pathz1TestDataFrameEval.test_dataframe_sub_numexpr_path   s     RYY2215EEeLMNvv!rxx"..bhhrl"((2.
fh/r   c                 2   t        g dg dd      }d}t        j                  t        |      5  |j	                  d        d d d        t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nr+   )abr   r*   Bz%expr must be a string to be evaluatedrL   c                      | j                   dk(  S )Nr   )r   r   s    r   r   z6TestDataFrameEval.test_query_non_str.<locals>.<lambda>   s    qsscz r   o   r   r$   rN   
ValueErrorr>   r1   r2   rP   s      r   test_query_non_strz$TestDataFrameEval.test_query_non_str   s{    Y_=>5]]:S1 	+HH)*	+ ]]:S1 	HHSM	 		+ 	+	 	s   B&BB
Bc                     t        dg di      }d}t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   y xY w)Nr*   r+   zexpr cannot be an empty stringrL    r   r   s      r   test_query_empty_stringz)TestDataFrameEval.test_query_empty_string   sD    Y'(.]]:S1 	HHRL	 	 	s   AAc                     t        t        d      t        d      t        d      d      j                  ddi      }|j                  d||      }t        g dgg d	d
g      }t	        j
                  ||       y )Nr.   )r*   r   Cr   r*   rl   zC == 1r"   r   )r,   r,   r,   )r*   r*   r   r,   )rj   ri   )r   rm   renamer>   r?   r@   )r1   r"   r   r2   resexpects         r    test_query_duplicate_column_namez2TestDataFrameEval.test_query_duplicate_column_name   so    U1XE!H58DELL#J M 
 hhxvh>I;sK
c6*r   c                 ,   t        t        j                  j                  d      j	                  d      t        d            }ddi}ddi}|j                  d||g	      |d   |d   z   k(  sJ t        j                  d||g	      |d   |d   z   k(  sJ y )
Nr-   
   r-   abrl   r   r,   r   a + b	resolvers)r   rq   r   r   r   rn   rA   pd)r1   r2   dict1dict2s       r   test_eval_resolvers_as_listz-TestDataFrameEval.test_eval_resolvers_as_list   s    II!!!$44W=tDz
 aawww5%.w9U3Z%PS*=TTTTwww5%.9U3Z%PS*=TTTTr   c                    t        t        j                  j                  d      j	                  d      t        d            }ddi}|j                  d|g      }|d   |d	   |d   z  z   }t        j                  ||       y )
Nr-   r   r   rl   cz	a + b * cr   r   r   )	r   rq   r   r   r   rn   rA   r?   rB   )r1   r2   r   rD   r{   s        r   test_eval_resolvers_combinedz.TestDataFrameEval.test_eval_resolvers_combined   s{    II!!!$44W=tDz
 a 8c7RWuSz11
vx0r   c                     t        dddgi      }|j                  d      }t        ddgddgd      }t        j                  ||       y )Na1YNzc = ((a1 == 'Y') & True)TF)r   r   )r   rA   r?   r@   )r1   r2   r   r{   s       r   test_eval_object_dtype_binopz.TestDataFrameEval.test_eval_object_dtype_binop   sK    sCj)*gg01S#JdE]CD
c8,r   c                     t        |       t        g dd      j                         }|j                  d||      }t	        j
                  |d         }t        j                  ||       y )Ng?g      ?gffffff@r   namez@np.floor(a)r   )r&   r	   to_framerA   rq   floorr?   rB   r1   r"   r   r2   r   r{   s         r   test_using_numpyz"TestDataFrameEval.test_using_numpy   sU     (O#.779ggnVFgC88BsG$
x-r   c                     t        g dd      j                         }|j                  d||      }|d   }t        j                  ||       y )Nr   r   r   r   )r	   r   rA   r?   rB   r   s         r   test_eval_simplez"TestDataFrameEval.test_eval_simple   sD    O#.779ggc&g8c7
x-r   c                 t   |dk(  r1t         j                  j                  d      }|j                  |       t	        t        j                  g d      t        j                  g d      d      }|j                  d||      }t        t        j                  g d	            }t        j                  ||       y )
Nr   z/numexpr does not support extension array dtypes)reasonr+   rY   r~      r   r   za / br   )g      ?g?      ?)r$   markxfailapplymarkerr   r   arrayrA   r	   r?   rB   )r1   r"   r   r   r   r2   rD   r{   s           r   test_extension_array_evalz+TestDataFrameEval.test_extension_array_eval   s    Y;;$$H % D %RXXi0rxx	7JKL?"((#567
vx0r   c                     t        dgdgd      }|j                  d||      }t        dg      }t        j                  ||       y )Ny      ?       @y      ?      ?r   za/br   y      ?      ?)r   rA   r	   r?   rB   )r1   r"   r   r2   rD   r{   s         r   test_complex_evalz#TestDataFrameEval.test_complex_eval   sE    fXVH56vf=:,'
vx0r   N)rR   rS   rT   r$   r   parametrizer|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   rW   ^   s    [[S1d),[[	
4 -480		+U1-..
11r   rW   c                   $    e Zd Zd Zd Zd Zd Zy) TestDataFrameQueryWithMultiIndexc                    t        |       t        j                  j                  d      j	                  ddgd      }t        j                  j                  d      j	                  ddgd      }t        j                  ||gdd	g
      }t        t        j                  j                  d      j                  d      |      }t        |j                  j                  d      j                  |d      }|j                  d||      }|j                  d||      }	||dk(     }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||dk7     }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg         }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg          }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg         }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg          }
t        j                  ||
       t        j                  |	|
       y )Nr-   redgreenr   sizeeggshamcolorfoodnamesr   ri   ri   r   zcolor == "red"r   r"   z"red" == colorzcolor != "red"z"red" != colorzcolor == ["red"]z["red"] == colorzcolor != ["red"]z["red"] != colorz["red"] in colorz"red" in colorz["red"] not in colorz"red" not in colorr&   rq   r   r   choicer   from_arraysr   r   r	   ri   get_level_valuesrs   r>   r?   r@   isinr1   r   r"   r   r   ri   r2   indres1res2exps              r    test_query_with_named_multiindexzATestDataFrameQueryWithMultiIndex.test_query_with_named_multiindex   s    (II!!!$++UG,<2+FII!!!$++VUO"+E&&1vgv5FGryy,,Q/??HPUVHH%%g.55U

 xx(xGxx(xG
dC(
dC( xx(xGxx(xG
dC(
dC( xx*6&xIxx*6&xI5'"#
dC(
dC(xx*6&xIxx*6&xI#((E7##$
dC(
dC( xx*6&xIxx(xG5'"#
dC(
dC(xx.vfxMxx,VFxK#((E7##$
dC(
dC(r   c                    t        |       t        j                  j                  d      j	                  ddgd      }t        j                  j                  d      j	                  ddgd      }t        j                  ||g      }t        t        j                  j                  d      j                  d      |	      }t        |j                  j                  d
      j                  |	      }|j                  d||      }|j                  d||      }	||dk(     }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||dk7     }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg         }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg          }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg         }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg          }
t        j                  ||
       t        j                  |	|
       t        |j                  j                  d      j                  |	      }|j                  d||      }|j                  d||      }	||dk(     }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||dk7     }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d||      }	||j!                  dg         }
t        j                  ||
       t        j                  |	|
       |j                  d||      }|j                  d ||      }	||j!                  dg          }
t        j                  ||
       t        j                  |	|
       |j                  d!||      }|j                  d"||      }	||j!                  dg         }
t        j                  ||
       t        j                  |	|
       |j                  d#||      }|j                  d$||      }	||j!                  dg          }
t        j                  ||
       t        j                  |	|
       y )%Nr-   r   r   r   r   r   r   r   r   r   ilevel_0 == "red"r   z"red" == ilevel_0ilevel_0 != "red"z"red" != ilevel_0zilevel_0 == ["red"]z["red"] == ilevel_0zilevel_0 != ["red"]z["red"] != ilevel_0z["red"] in ilevel_0z"red" in ilevel_0z["red"] not in ilevel_0z"red" not in ilevel_0r,   zilevel_1 == "eggs"z"eggs" == ilevel_1zilevel_1 != "eggs"z"eggs" != ilevel_1zilevel_1 == ["eggs"]z["eggs"] == ilevel_1zilevel_1 != ["eggs"]z["eggs"] != ilevel_1z["eggs"] in ilevel_1z"eggs" in ilevel_1z["eggs"] not in ilevel_1z"eggs" not in ilevel_1r   r   s              r   "test_query_with_unnamed_multiindexzCTestDataFrameQueryWithMultiIndex.test_query_with_unnamed_multiindex   sJ    (II!!!$++UG,<2+FII!!!$++VUO"+E&&1v.ryy,,Q/??HPUVRXX..q188Fxx+F6xJxx+F6xJ
dC(
dC( xx+F6xJxx+F6xJ
dC(
dC( xx-fVxLxx-fVxL5'"#
dC(
dC(xx-fVxLxx-fVxL#((E7##$
dC(
dC( xx-fVxLxx+F6xJ5'"#
dC(
dC(xx1&xPxx/vxN#((E7##$
dC(
dC( RXX..q188Fxx,VFxKxx,VFxK
dC(
dC( xx,VFxKxx,VFxK
dC(
dC( xx.vfxMxx.vfxM6(#$
dC(
dC(xx.vfxMxx.vfxM#((F8$$%
dC(
dC( xx.vfxMxx,VFxK6(#$
dC(
dC(xx26&xQxx0xO#((F8$$%
dC(
dC(r   c                 n   t        |       t        j                  j                  d      j	                  ddgd      }t        j
                  d      }t        j                  ||g      }d dg|_        t        t        j                  j                  d      j                  d      |      }|j                  d	||
      }t        |j                  j                  d      j                  |d      }||dk(     }	t!        j"                  ||	       |j                  d||
      }t        |j                  j                  d      j                  |d      }||dk7     }	t!        j"                  ||	       |j                  d||
      }t        |j                  j                  d      j                  |      }||dk(     }	t!        j"                  ||	       |j                  d||
      }t        |j                  j                  d      j                  |      }||dk7     }	t!        j"                  ||	       y )Nr-   r   r   r   r   ratingr   r   zrating == 1r   r   r,   zrating != 1r   r   r   )r&   rq   r   r   r   aranger   r   r   r   r   r>   r	   ri   r   rs   r?   r@   )
r1   r   r"   r   r   ri   r2   r   r   r   s
             r   *test_query_with_partially_named_multiindexzKTestDataFrameQueryWithMultiIndex.test_query_with_partially_named_multiindexx  s    (II!!!$++UG,<2+FIIbM&&1v.X&ryy,,Q/??HPUVhh}VFhCHH%%h/66e(
 l
c3'hh}VFhCHH%%h/66e(
 l
c3'hh*6&hIRXX..q188F
c3'hh*6&hIRXX..q188F
c3'r   c                 d   t        t        j                  d      t        j                  t        d      D cg c]  }t        d       c}ddg            }|j                         }d }|j                  j                         }|j                  | ||j                  d       ||j                  d      |d	}|j                         D ]`  \  }}t        |t              r|j                  ||         r+J t        |t              rt        j                   |||          Wt#        d
       y c c}w )Nr   r.   r-   r   spamr   r   r   c                 V    | j                  |      }|j                         }| |_        |S r   )r   	to_seriesri   )milevellevel_valuesss       r   r   z]TestDataFrameQueryWithMultiIndex.test_query_multiindex_get_index_resolvers.<locals>.to_series  s,    ..u5L&&(AAGHr   )ri   rj   r   r   clevel_0z object must be a Series or Index)r   rq   onesr   r   rm   _get_index_resolversrj   r   ri   items
isinstancer   is_r	   r?   rB   AssertionError)	r1   _r2   r   r   
col_seriesr{   kvs	            r   )test_query_multiindex_get_index_resolverszJTestDataFrameQueryWithMultiIndex.test_query_multiindex_get_index_resolvers  s	   GGG(($)!H-qr-ff5E
 ++-		 ZZ))+
XX!bhh/bhh/"
 OO% 	IDAq!U#uuXa[)))Av&&&q(1+6$%GHH	I' .s   D-N)rR   rS   rT   r   r   r   r   r   r   r   r   r      s    0)dV)p(>Ir   r   c                   \   e Zd Zej                  d        Z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d Zd Zd Zd Zd Zej:                  j=                  ddej@                  gdejB                  gg      d        Z"d Z#d Z$y) TestDataFrameQueryNumExprPandasc                      yNr   r   r0   s    r   r"   z&TestDataFrameQueryNumExprPandas.engine      r   c                      yNr   r   r0   s    r   r   z&TestDataFrameQueryNumExprPandas.parser      r   c                    t        |       t        t        j                  j	                  d      j                  d            }t        dd      |d<   t        dd      |d<   t        d	d      |d
<   |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr-   r~   r.   1/1/2012r~   periodsdates11/1/2013dates21/1/2014dates3z"@df.dates1 < 20130101 < @df.dates3r   20130101)r&   r   rq   r   r   r   r
   r>   r  r  r?   r@   r1   r"   r   r2   r   expecs         r   %test_date_query_with_attribute_accesszETestDataFrameQueryNumExprPandas.test_date_query_with_attribute_access  s     (ryy,,Q/??GH!*a88!*a88!*a88hh0  
 BII
*zBII/EFG
c5)r   c                 j   t        t        j                  j                  d      j	                  d            }t        dd      |d<   t        dd      |d<   t        d	d      |d
<   |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr-   r  r  r~   r	  r  r  r  r  r  dates1 < 20130101 < dates3r   r  r   rq   r   r   r   r
   r>   r  r  r?   r@   r  s         r   #test_date_query_no_attribute_accesszCTestDataFrameQueryNumExprPandas.test_date_query_no_attribute_access  s    ryy,,Q/??GH!*a88!*a88!*a88hh3F6hRBII
*zBII/EFG
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            }t        d|      |d<   t        d|      |d<   t        d	|      |d
<   t        j                  |j                  t        j                  j                  d      j                  |      dkD  df<   t        j                  |j                  t        j                  j                  d      j                  |      dkD  d
f<   |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr   r-   r.   r  r	  r  r  r  r  r  r   r  r   r  r   rq   r   r   r   r
   r   NaTlocr>   r  r  r?   r@   r1   r"   r   rX   r2   r   r  s          r   test_date_query_with_NaTz8TestDataFrameQueryNumExprPandas.test_date_query_with_NaT  s   ryy,,Q/??AGH!*a88!*a88!*a88EGVVryy$$Q'..q1C7ABEGVVryy$$Q'..q1C7ABhh3F6hRBII
*zBII/EFG
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            }t        d|      |d<   t        d|      |d<   |j                  dd	d	
      }|J |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr   r-   r.   r  r	  r  r  r  Tinplacedropindex < 20130101 < dates3r   r  r   rq   r   r   r   r
   	set_indexr>   ri   r  r?   r@   r1   r"   r   rX   r2   return_valuer   r  s           r   test_date_index_queryz5TestDataFrameQueryNumExprPandas.test_date_index_query  s    ryy,,Q/??AGH!*a88!*a88||Hd|F###hh26&hQBHHz)j299.DEF
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            j                  dt        i      }t        d|      |d<   t        d|      |d	<   t        j                  |j                  d
<   |j                  ddd      }|J |j                  d||      }||j                  dk  d|j                  k  z     }t        j                   ||       y )Nr   r-   r.   r   r  r	  r  r  r  r   r   Tr  r"  r   r  r   rq   r   r   r   astypeobjectr
   r   r  ro   r$  r>   ri   r  r?   r@   r%  s           r   test_date_index_query_with_NaTz>TestDataFrameQueryNumExprPandas.test_date_index_query_with_NaT  s    ryy,,Q/??AGHOOK
 "*a88!*a88||Hd|F###hh26&hQBHHz)j299.DEF
c5)r   c                    d}i }t        d|      |d<   t        d|      |d<   t        |      }t        j                  |j                  t
        j                  j                  d      j                  |      dkD  df<   |j                  dd	d	
      }|J |j                  d||      }||j                  j                         dk  d|j                  k  z     }t        j                  ||       y )Nr   r  r	  r  r  r  r-   r   Tr  r  r   r  )r
   r   r   r  r  rq   r   r   r$  r>   ri   r   r  r?   r@   )	r1   r"   r   rX   dr2   r&  r   r  s	            r   )test_date_index_query_with_NaT_duplicateszITestDataFrameQueryNumExprPandas.test_date_index_query_with_NaT_duplicates  s     Q7( Q7(q\EGVVryy$$Q'..q1C7AB||Hd|F###hh3F6hRBHH&&(:5*ryy:PQR
c5)r   c                    d}t        t        d|d      t        j                  |      d      }|j	                  d||      }t        |      dk(  sJ |j	                  d	||      }t        j                  ||       d
}dD ]>  }t        j                  t        |      5  |j	                  d| d||       d d d        @ y # 1 sw Y   KxY w)Nr   r  ns)r
  unit)datesnondatezdates == nondater   r   zdates != nondatez=Invalid comparison between dtype=datetime64\[ns\] and ndarray)<><=>=rL   zdates z nondate)r   r
   rq   r   r>   lenr?   r@   r$   rN   	TypeError)r1   r"   r   rX   r2   rD   rP   rw   s           r   test_date_query_with_non_datez=TestDataFrameQueryNumExprPandas.test_date_query_with_non_date	  s    #JE99Q<
 ,VFK6{a,VFK
fb)N( 	NBy4 N6"X.vfMN N	NN Ns    CC	c                     t        t        d      t        dd      t        dd      d      }d}t        j                  t        |      5  |j                  d	||
       d d d        y # 1 sw Y   y xY w)Nr   r.      rY      )irZ   rinvalid syntaxrL   zi - +r   )r   rm   r$   rN   SyntaxErrorr>   )r1   r"   r   r2   rP   s        r   test_query_syntax_errorz7TestDataFrameQueryNumExprPandas.test_query_syntax_error  s]    U2YU1b\aMN]];c2 	<HHWVFH;	< 	< 	<s   
A((A1c                    t        |       t        t        j                  j	                  d      j                  d      t        d            }d\  }}|j                  d||      }||j                  |j                  kD     }t        j                  ||       |j                  d||      }|||j                  kD     }t        j                  ||       t        j                  t        d	
      5  |j                  d||       d d d        t        j                  t        d
      5  |j                  d||       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nr-   )   r-   r   rl   )r,   r-   za > br   z@a > b!local variable 'c' is not definedrL   z@a > b > @czname 'c' is not definedz
@a > b > c)r&   r   rq   r   r   r   rn   r>   r   r   r?   r@   r$   rN   r   )r1   r"   r   r2   r   r   r   r{   s           r   test_query_scopez0TestDataFrameQueryNumExprPandas.test_query_scope#  s4    (II!!!$44W=tDz
 1hhwvfh=bddRTTk?
c8,hhxvh>a"$$h<
c8, ]]"*M
 	B HH]6&HA	B ]]19RS 	AHH\&H@	A 	A	B 	B	A 	As   0E(EEEc                     dx}}t        t        j                  j                  d      j	                  ||df      t        d            }t        j                  t        d      5  |j                  d	||
       d d d        y # 1 sw Y   y xY w)Nr   r-   r.   r   abcrl   zname 'sin' is not definedrL   sin > 5r   )
r   rq   r   r   integersrn   r$   rN   r   r>   )r1   r"   r   rX   ry   r2   s         r   test_query_doesnt_pickup_localz>TestDataFrameQueryNumExprPandas.test_query_doesnt_pickup_local=  sz    
AII!!!$--aq!f-=tE{

 ]]19TU 	>HHYvfH=	> 	> 	>s   &BBc                 F   dx}}t        t        j                  j                  d      j	                  ||df      t        d            }d|j                  _        d}t        j                  t        |	      5  |j                  d
||       d d d        y # 1 sw Y   y xY w)Nr   r-   r.   r   rJ  rl   sinzVariables in expression.+rL   rK  r   )r   rq   r   r   rL  rn   ri   r   r$   rN   r   r>   )r1   r"   r   rX   ry   r2   rP   s          r   test_query_builtinz2TestDataFrameQueryNumExprPandas.test_query_builtinG  s    
AII!!!$--aq!f-=tE{
 )]]1= 	>HHYvfH=	> 	> 	>s   9BB c                    t        t        j                  j                  d      j	                  d      g d      }t        j                  |j                  d||      ||j                  |j                  k            t        j                  |j                  d||      ||j                  |j                  z   |j                  |j                  z  kD            y )Nr-   r   r   r   r   rl   a < br   za + b > b * c)r   rq   r   r   r   r?   r@   r>   r   r   r   r1   r"   r   r2   s       r   
test_queryz*TestDataFrameQueryNumExprPandas.test_queryR  s    II!!!$44W=
 	HHWVFH;Rrtt_	
 	HH_VFHCrttbdd{RTTBDD[()	
r   c                    t        t        j                  j                  d      j	                  dd      t        t        d      d      g d      }|j                  d	||
      }||j                  dk  |j                  |j                  k  z     }t        j                  ||       |j                  d||
      }||j                  |j                  k     }t        j                  ||       y )Nr-   r   r   r   blobr   rR  rh   z(blob < 5) & (a < b)r   r~   zblob < b)r   rq   r   r   rL  r   rm   r>   ri   r   r   r?   r@   r  s         r   test_query_index_with_namez:TestDataFrameQueryNumExprPandas.test_query_index_with_name_  s    II!!!$--bw-?b	/#

 hh-fVhLBHHqLRTTBDD[12
c5)hhz&h@288bdd?#
c5)r   c                    t        t        j                  j                  d      j	                  dd      t        d      g d      }|j                  d||      }||j                  |j                  k     }t        j                  ||       |j                  d	||      }||j                  d
k     }t        j                  ||       y )Nr-   r   r   r   rR  rh   z	index < br   z	index < 5r~   )r   rq   r   r   rL  rm   r>   ri   r   r?   r@   r  s         r   test_query_index_without_namez=TestDataFrameQueryNumExprPandas.test_query_index_without_namen  s    II!!!$--bw-?)#
 hh{6&hA288bdd?#
c5) hh{6&hA288a< 
c5)r   c                    t        |       t        t        j                  j	                  d      j                  d            }t        t        j                  j	                  d      j                  d            }||dkD  |dkD  z     }|j                  d||      }t        j                  ||       t        j                  d||      }t        j                  ||       t        j                  d||      }||dkD  |dkD  z  ||dkD     dkD  z     }t        j                  ||       t        j                  d||      }|j                  d	||      }t        j                  ||       y )
Nr-   r  r   z(@df > 0) & (@df2 > 0)r   zdf[df > 0 and df2 > 0]z)df[df > 0 and df2 > 0 and df[df > 0] > 0]zdf[(df>0) & (df2>0)](@df>0) & (@df2>0))r&   r   rq   r   r   r   r>   r?   r@   r   rA   )r1   r"   r   r2   df2r{   rD   s          r   test_nested_scopez1TestDataFrameQueryNumExprPandas.test_nested_scope  s8    (ryy,,Q/??GH		--a0@@HIrAv#'*+26&Q
fh/1&P
fh/7v
 rAv#'*baj1n=>
fh//vN8808O
fh/r   c                     t        t        j                  j                  d      j	                  d            }t        j                  t        d      5  |j                  d||       d d d        y # 1 sw Y   y xY w)Nr-   r  name 'df' is not definedrL   zdf > 0r   )	r   rq   r   r   r   r$   rN   r   r>   rT  s       r   *test_nested_raises_on_local_self_referencezJTestDataFrameQueryNumExprPandas.test_nested_raises_on_local_self_reference  s_    ryy,,Q/??GH ]]19ST 	=HHXfVH<	= 	= 	=s   A11A:c                    t        |       t        t        j                  j	                  d      j                  d      t        d            }d}||j                  |k     }|j                  d||      }t        j                  ||       ||j                  |j                  k     }|j                  d||      }t        j                  ||       y )	Nr-   )d   r   
abcdefghijrl   r,   za < @br   rS  )r&   r   rq   r   r   r   rn   r   r>   r?   r@   r   )r1   r"   r   r2   r   r   rD   s          r   test_local_syntaxz1TestDataFrameQueryNumExprPandas.test_local_syntax  s     (II!!!$44Y?&
 BDD1H(6&A
ff-BDD244K'&@
ff-r   c                    t        |       t        d      }t        t        j                  j                  d      j                  dt        |      f      |      }|j                  d||      }|j                  |j                  k  |j                  |j                  k  z  |j                  j                  |j                         z  |j                  j                  |j                         z  }||   }t        j                  ||       y )NrJ  r-   rc  rl   z!a < b < c and a not in b not in cr   )r&   rn   r   rq   r   r   r   r:  r>   r   r   r   r   r?   r@   )r1   r"   r   colsr2   r   r   r  s           r   test_chained_cmp_and_inz7TestDataFrameQueryNumExprPandas.test_chained_cmp_and_in  s     (E{II!!!$44c3t95EFPT
 hh/v  
 ttbdd{rttbdd{+rttyy.>>"$$))BDD/AQQ3
c5)r   c                    t        |       t        t        j                  j	                  d      j                  dd      d      }t        t        j                  j	                  d      j                  dd      d      }t        ||d	      }|j                  |j                  d
z
  j                  |         }|j                  d||      }t        j                  ||       t        t        j                  j	                  d      j                  dd      d      }|j                  |d
z
  j                  |         }|j                  d||      }t        j                  ||       y )Nr-   r.      r   r   r   r   r   r   r,   z
b - 1 in ar   z@b - 1 in a)r&   r	   rq   r   r   rL  r   r  r   r   r>   r?   r@   )r1   r"   r   r   r   r2   r{   rD   s           r   test_local_variable_with_inz;TestDataFrameQueryNumExprPandas.test_local_variable_with_in  s    (299((+44QR4@sK299((+44Rb4ALQQ'(66244!8//!,-,vfE
h/299((+44Rb4AL661q5,,q/*-vF
h/r   c                     t        |       d}t        dg di      }|j                  d||      }||j                  dk(     }t	        j
                  ||       y )Nr,   r   )r   r   r   r   @crm  z	a == "@c"r   rm  r&   r   r>   r   r?   r@   )r1   r"   r   r   r2   rD   r{   s          r   test_at_inside_stringz5TestDataFrameQueryNumExprPandas.test_at_inside_string  sU     (=>?+fVDbdddl#
fh/r   c                 V   | j                   | j                  }}t        |       t        t        j
                  j                  d      j                  d      t        d            }t        j                  t        d      5  |j                  d||       d d d        y # 1 sw Y   y xY w)	Nr-   r   r   rl   rG  rL   za == @cr   )r"   r   r&   r   rq   r   r   rn   r$   rN   r   r>   rT  s       r   test_query_undefined_localz:TestDataFrameQueryNumExprPandas.test_query_undefined_local  s    dkk (ryy,,Q/66w?dT]]"*M
 	> HHYvfH=	> 	> 	>s   BB(c                 >   d}t         j                  ddd   }t        |t         j                  j	                  d      j                  |j                        d      }d|j                  _        |j                  d||      }||d   d	kD     }t        j                  ||       t        |t         j                  j	                  d      j                  |j                        d      }|j                  d
||      }|j                  |j                  |j                  d	kD        }t        j                  ||       t        |t         j                  j	                  d      j                  |j                        d      }d|j                  _        |j                  d||      }||j                  d	kD     }t        j                  ||       |j                  d||      }|j                  |j                  |j                  d	kD        }t        j                  ||       y )Nr,   rF  e   r-   )ri   r   ri   z	index > 5r   r~   zilevel_0 > 5r   r   za > 5)rq   r_r   r   r   r   r   ri   r   r>   r?   r@   r  r   )r1   r"   r   rX   r   r2   rD   r{   s           r   :test_index_resolvers_come_after_columns_with_the_same_namezZTestDataFrameQueryNumExprPandas.test_index_resolvers_come_after_columns_with_the_same_name  s    EE"S)bii33A6FFqvvNO
  +fVDbkAo&
fh/bii33A6FFqvvNO
 .G66"((288a<01
fh/QRYY%:%:1%=%M%Maff%UVW'&@bddQh<
fh/+fVD66"((288a<01
fh/r   zop, f==!=c                    d}t        t        j                  j                  d      j                  |      t        j                  j                  d      j                  |      d      }t        j                  |j
                  d d ddf<   d| d}| ||j                  t        j                           }|j                  |||      }	t        j                  |	|       y )Nr   r-   r   r   a z infr   )
r   rq   r   r   infr  r   r>   r?   r@   )
r1   rw   fr"   r   rX   r2   qr{   rD   s
             r   test_infz(TestDataFrameQueryNumExprPandas.test_inf  s    YY**1-44Q7YY**1-44Q7
 ssAvDMabffo&!F6:
fh/r   c                 &   |}t        ddd|d      }t        |      }t        |      }|j                  d      }t        j                  ||       t        |      }|j                         j                  d      }t        j                  ||       y )Nz
2019-01-011Dr   time)startfreqr
  tzr   r   z"2018-01-03 00:00:00+00" < time)r
   r   r>   r?   r@   reset_index)r1   tz_aware_fixturer  df_indexr{   r2   rD   s          r   test_check_tz_aware_index_queryz?TestDataFrameQueryNumExprPandas.test_check_tz_aware_index_query	  s    T2"6
 8,X&;<
fh/X&!''(IJ
fh/r   c           	      R   d}t        dt        j                  j                  d      j                  |      z  t        j                  j                  d      j                  |      d      }||d   j	                  d      dk(     }|j                  d||      }t        j                  ||       t        t        j                  t        j                  j                  d      j                  |      d	k  t        j                  t        j                  j                  d      j                  |            t        j                  j                  d      j                  |      d      }||d   j                            }|j                  d
||      }t        j                  ||       y )Nr   r-   r   r   intr   za.astype('int') == 0r   r   za.notnull())r   rq   r   r   r+  r>   r?   r@   wherer   r   notnull)r1   r"   r   rX   r2   r{   rD   s          r   test_method_calls_in_queryz:TestDataFrameQueryNumExprPandas.test_method_calls_in_query  sS   ..q188;;YY**1-44Q7
 bgnnU+q010O
fh/XXII))!,33A6<FFII))!,<<Q?
 YY**1-==a@	
 bgoo'(-vF
fh/r   N)%rR   rS   rT   r$   rU   r"   r   r  r  r  r'  r-  r0  r<  rD  rH  rM  rP  rU  rX  rZ  r^  ra  re  rh  rk  ro  rq  ru  r   r   operatoreqner}  r  r  r   r   r   r   r     s    ^^  ^^ 
**
*	***N(<A4>	>
**"0.=. *00>0> [[Whkk':T8;;<O&PQ0 R000r   r   c                   ~    e Zd Zej                  d        Zej                  d        Zd Zd Zd Z	d Z
d Zd Zd	 Zy
)TestDataFrameQueryNumExprPythonc                      yr  r   r0   s    r   r"   z&TestDataFrameQueryNumExprPython.engine6  r  r   c                      yNr   r   r0   s    r   r   z&TestDataFrameQueryNumExprPython.parser:  r  r   c                 j   t        t        j                  j                  d      j	                  d            }t        dd      |d<   t        dd      |d<   t        d	d      |d
<   |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr-   r  r  r~   r	  r  r  r  r  r  )(dates1 < 20130101) & (20130101 < dates3)r   r  r  r  s         r   r  zCTestDataFrameQueryNumExprPython.test_date_query_no_attribute_access>  s    ryy,,Q/??GH!*a88!*a88!*a88hh7v  
 BII
*zBII/EFG
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            }t        d|      |d<   t        d|      |d<   t        d	|      |d
<   t        j                  |j                  t        j                  j                  d      j                  |      dkD  df<   t        j                  |j                  t        j                  j                  d      j                  |      dkD  d
f<   |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr   r-   r.   r  r	  r  r  r  r  r  r   r  r   r  r  r  s          r   r  z8TestDataFrameQueryNumExprPython.test_date_query_with_NaTI  s   ryy,,Q/??AGH!*a88!*a88!*a88EGVVryy$$Q'..q1C7ABEGVVryy$$Q'..q1C7ABhh7v  
 BII
*zBII/EFG
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            }t        d|      |d<   t        d|      |d<   |j                  dd	d	
      }|J |j                  d||      }||j                  dk  d|j                  k  z     }t        j                  ||       y )Nr   r-   r.   r  r	  r  r  r  Tr  ((index < 20130101) & (20130101 < dates3)r   r  r#  r%  s           r   r'  z5TestDataFrameQueryNumExprPython.test_date_index_queryW  s    ryy,,Q/??AGH!*a88!*a88||Hd|F###hh6vf  
 BHHz)j299.DEF
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            j                  dt        i      }t        d|      |d<   t        d|      |d	<   t        j                  |j                  d
<   |j                  ddd      }|J |j                  d||      }||j                  dk  d|j                  k  z     }t        j                   ||       y )Nr   r-   r.   r   r  r	  r  r  r  r)  Tr  r  r   r  r*  r%  s           r   r-  z>TestDataFrameQueryNumExprPython.test_date_index_query_with_NaTd  s    ryy,,Q/??AGHOOK
 "*a88!*a88||Hd|F###hh6vf  
 BHHz)j299.DEF
c5)r   c                    d}t        t        j                  j                  d      j	                  |df            }t        d|      |d<   t        d|      |d<   t        j                  |j                  t        j                  j                  d      j                  |      d	kD  df<   |j                  dd
d
      }|J d}t        j                  t        |      5  |j                  d||       d d d        y # 1 sw Y   y xY w)Nr   r-   r.   r  r	  r  r  r  r   Tr  "'BoolOp' nodes are not implementedrL   r"  r   )r   rq   r   r   r   r
   r   r  r  r$  r$   rN   NotImplementedErrorr>   )r1   r"   r   rX   r2   r&  rP   s          r   r0  zITestDataFrameQueryNumExprPython.test_date_index_query_with_NaT_duplicatesu  s    ryy,,Q/??AGH!*a88!*a88EGVVryy$$Q'..q1C7AB||Hd|F###3]].c: 	PHH0HO	P 	P 	Ps   C==Dc                 >   d}t        j                  d||      }|dk(  sJ t        t        j                  j                  d      j                  d            }t        t        j                  j                  d      j                  d            }d}t        j                  t        |      5  |j                  d||       d d d        t        j                  t        d	      5  |j                  d
||       d d d        ||dkD  |dkD  z     }t        j                  d||      }t        j                  ||       ||dkD  |dkD  z  ||dkD     dkD  z     }t        j                  d||      }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr,   zx + 1r   r-   r  z5The '@' prefix is only supported by the pandas parserrL   r\  r`  z(df>0) & (df2>0)r   zdf[(df > 0) & (df2 > 0)]z+df[(df > 0) & (df2 > 0) & (df[df > 0] > 0)])r   rA   r   rq   r   r   r   r$   rN   rC  r>   r   r?   r@   )	r1   r"   r   r   rD   r2   r]  rP   r{   s	            r   r^  z1TestDataFrameQueryNumExprPython.test_nested_scope  sy   ?{{ryy,,Q/??GH		--a0@@HI G]];c2 	IHH)&HH	I ]]19ST 	GHH'vHF	G rAv#'*+3F6R
h/rAv#'*baj1n=>9&QW
 	h/	I 	I	G 	Gs   -F%FFFc                 4   t        g dg dd      }d}t        j                  t        |      5  |j	                  d       d d d        d}t        j                  t        |      5  |j	                  d       d d d        y # 1 sw Y   AxY w# 1 sw Y   y xY w)	Nr+   r   )minmaxzMVariables in expression \"\(min\) == \(1\)\" overlap with builtins: \('min'\)rL   zmin == 1zMVariables in expression \"\(max\) == \(1\)\" overlap with builtins: \('max'\)zmax == 1)r   r$   rN   r   r>   )r1   r2   regex_to_matchs      r   +test_query_numexpr_with_min_and_max_columnszKTestDataFrameQueryNumExprPython.test_query_numexpr_with_min_and_max_columns  s    y;<0 	 ]]1H 	!HHZ 	!0 	 ]]1H 	!HHZ 	! 	!	! 	!	! 	!s   B'BBBN)rR   rS   rT   r$   rU   r"   r   r  r  r'  r-  r0  r^  r  r   r   r   r  r  4  sT    ^^  ^^ 	****"
P06!r   r  c                   Z    e Zd Zej                  d        Zej                  d        Zd Zy)TestDataFrameQueryPythonPandasc                      yr  r   r0   s    r   r"   z%TestDataFrameQueryPythonPandas.engine  r  r   c                      yr  r   r0   s    r   r   z%TestDataFrameQueryPythonPandas.parser  r  r   c                 2   dx}}t        t        j                  j                  d      j	                  ||df      t        d            }d|j                  _        ||j                  dkD     }|j                  d	||
      }t        j                  ||       y Nr   r-   r.   r   rJ  rl   rO  r~   rK  r   r   rq   r   r   rL  rn   ri   r   r>   r?   r@   r1   r"   r   rX   ry   r2   r{   rD   s           r   rP  z1TestDataFrameQueryPythonPandas.test_query_builtin      
AII!!!$--aq!f-=tE{
 bhhl#)F6B
h/r   NrR   rS   rT   r$   rU   r"   r   rP  r   r   r   r  r    5    ^^  ^^ 	0r   r  c                   Z    e Zd Zej                  d        Zej                  d        Zd Zy)TestDataFrameQueryPythonPythonc                      yr  r   r0   s    r   r"   z%TestDataFrameQueryPythonPython.engine  r  r   c                      yr  r   r0   s    r   r   z%TestDataFrameQueryPythonPython.parser  r  r   c                 2   dx}}t        t        j                  j                  d      j	                  ||df      t        d            }d|j                  _        ||j                  dkD     }|j                  d	||
      }t        j                  ||       y r  r  r  s           r   rP  z1TestDataFrameQueryPythonPython.test_query_builtin  r  r   Nr  r   r   r   r  r    r  r   r  c            
       P   e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  ddej                  gd	ej                  gd
ej                  gdej                   gg      d        Zd Zd Ze	j                  j                  dg dg dg dg dg dg dg      d        Zy)TestDataFrameQueryStringsc           	      J   t        t        j                  j                  d      j	                  d      dg      }t        t        d            |d<   ||j                  dk(     }|dk7  rd}d	}|gdz  |gdz  z   }|d d d
   }d\  }	}
d|	|
gz  }d}t        |||      D ]U  \  }}}| d| d| }t        j                  t        |      5  |j                  |||d|j                  i       d d d        W y |j                  d||      }t        j                  ||       |j                  d||      }t        j                  ||       t        j                  |||j                  j                  dg                ||j                  dk7     }|j                  d||      }t        j                  ||       |j                  d||      }t        j                  ||       t        j                  |||j                  j                  dg                 y # 1 sw Y   xY w)Nr-   r   r,   r   rl   
aabbccddeestringsr   r   z"a"rk   rv  rw  $'(Not)?In' nodes are not implemented rL   )r"   r   
local_dictz"a" == stringsr   zstrings == "a"zstrings != "a"z"a" != strings)r   rq   r   r   r   r	   rn   r  zipr$   rN   r  r>   r?   r@   r   )r1   r   r"   r2   r   collstlhsrhsr  r  opsrP   lhop_rhexr   s                     r   test_str_query_methodz/TestDataFrameQueryStrings.test_str_query_method  s   ryy,,Q/??HSVRWXtL129BJJ#%&XCC%!)seai'Cdd)CFBBx.C9C"3S1 Ct1SE2$']]#6cB HH%%$-rzz#:	    ((+F6(JC!!#v.((+F6(JC!!#v.!!#r"**//3%*@'AB

c)*F((+F6(JC!!#v.((+F6(JC!!#v.!!#r2::??C5+A*A'BC+ s   	"HH"	c                    t        t        j                  j                  d      j	                  d      dg      }t        t        d            |d<   ||j                  j                  ddg         }|dk7  rd}d	}|gdz  |gdz  z   }|d d d
   }d\  }	}
d|	|
gz  }d}t        |||      D ]H  \  }}}| d| d| }t        j                  t        |      5  |j                  |||       d d d        J y |j                  d||      }t        j                  ||       |j                  d||      }t        j                  ||       ||j                  j                  ddg          }|j                  d||      }t        j                  ||       |j                  d||      }t        j                  ||       y # 1 sw Y    xY w)Nr-   r  r   rl   r  r  r   r   z
["a", "b"]rk   r  r  r  rL   r   zstrings == ["a", "b"]z["a", "b"] == stringszstrings != ["a", "b"]z["a", "b"] != strings)r   rq   r   r   r   r	   rn   r  r   r  r$   rN   r  r>   r?   r@   )r1   r   r"   r2   r   r  r  r  r  r  r  r  rP   r  ops_r  r  r   s                     r   test_str_list_query_methodz4TestDataFrameQueryStrings.test_str_list_query_method  s   ryy,,Q/??HSVRWXtL129BJJOOS#J/0XCC%!)seai'Cdd)CFBBx.C9C #Cc 2 ?D"t1TF!B4(]]#6cB ?HHRvH>? ??
 ((26&(QC!!#v.((26&(QC!!#v.#s445F((26&(QC!!#v.((26&(QC!!#v.? ?s   GG	c           	         t        t        d      t        d      t        j                  j	                  d      j                  dd      t        j                  j	                  d      j                  dd      d      }|d	k(  r|j                  d
||      }||j                  j                  |j                           }t        j                  ||       |j                  d||      }||j                  j                  |j                        |j                  |j                  k  z     }t        j                  ||       y d}t        j                  t         |      5  |j                  d
||       d d d        d}t        j                  t         |      5  |j                  d||       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Naaaabbbbccccaabbccddeeffr-   r~      r   	   r   r   r   r/  r   za in br   za in b and c < dr  rL   r  )r   rn   rq   r   r   rL  r>   r   r   r   r?   r@   r   r/  r$   rN   r  )r1   r   r"   r2   r   r  rP   s          r   test_query_with_string_columnsz8TestDataFrameQueryStrings.test_query_with_string_columns$  s   .).)YY**1-66qr6BYY**1-66qr6B	
 X((8F6(BCrttyy'E!!#u-((-fV(LCrttyy"$$+67E!!#u-9C2#> A&@A 8C2#> K+F6JK K	A AK Ks    F8G8GGc           	         t        t        d      t        d      t        j                  j	                  d      j                  dd      t        j                  j	                  d      j                  dd      d      }|j                  d	||
      }||j                  |j                  k(     }t        j                  ||       |j                  d||
      }||j                  |j                  k7     }t        j                  ||       y )Nr  r  r-   r~   r  r   r  r  za == br   za != b)r   rn   rq   r   r   rL  r>   r   r   r?   r@   )r1   r   r"   r2   r   r   s         r   test_object_array_eq_nez1TestDataFrameQueryStrings.test_object_array_eq_ne>  s    .).)YY**1-66qr6BYY**1-66qr6B	
 hhxvh>
c3'hhxvh>
c3'r   c           	         t        |       t        dd      D cg c]  }dD ]
  }d| d|   c}}dz  }t        ddd	
      }t        ddd	
      }t        t	        j
                  dd      j                  d      ||j                  |      d      }||j                  dk(     }	|j                  d||      }
t        j                  |	|
       y c c}}w )Nr,   rY   )loadexitzpage r  r-   z2014-01-01 0:00:0130sr   )r  r
  z2014-02-01 1:00:01   )idevent	timestampz"page 1 load"z'"page 1 load"' in eventr   )r&   rm   r
   r   rq   r   repeatappendr  r>   r?   r@   )r1   r   r"   rX   acteventsstamps1stamps2r2   r{   r   s              r   test_query_with_nested_stringsz8TestDataFrameQueryStrings.test_query_with_nested_stringsO  s     (',Q{
"#>N
7:eA3au

 1qI1qIii1o,,Q/$^^G4
 bhh/12hh5fVhT
h,
s   Cc                     t        |       t        g dg dd      }|j                  d||      }||j                  dk(     }t	        j
                  ||       y )N)r   r   test & testr+   r   za == "test & test"r   r  rn  )r1   r   r"   r2   r   r  s         r   (test_query_with_nested_special_characterzBTestDataFrameQueryStrings.test_query_with_nested_special_characterb  sR     (6YGHhh+F6hJ244=()
c5)r   zop, funcr6  r7  r8  r9  c                 z   t        t        j                  j                  d      j	                  t        d      d            }t        t        j                  |j                              }t        ||d      }|j                  d| d||      }| ||j                  d         }	t        j                  ||	       y )	Nr-   abcderF  )Xr   zX z "d"r   r/  )r	   rq   r   r   r   rn   r   r   r   r>   r  r?   r@   )
r1   r   r"   rw   funcr   r   r2   r   r{   s
             r   test_query_lex_compare_stringsz8TestDataFrameQueryStrings.test_query_lex_compare_stringsi  s     299((+224="EF299QVV$%QQ'(hhB4t}VFhCd244o&
c8,r   c                 J   d}t         j                  j                  d      j                  ddt	        |      f      j                  t              }t        ||      }|j                  d||      }||j                  |j                  z     }t        j                  ||       y )N)bidbidsizeaskasksizer-   r,   r   rl   z	bid & askr   )rq   r   r   rL  r:  r+  boolr   r>   r  r  r?   r@   )r1   r   r"   rj   datar2   r   r{   s           r   "test_query_single_element_booleansz<TestDataFrameQueryStrings.test_query_single_element_booleans{  s    4yy$$Q'00!S\9J0KRRSWXtW-hh{6&hAbffrvvo&
c8,r   c                     t        |       t        g dg dd      }||j                  dk(     }d}|j                  d||      }t	        j
                  ||       y )N)BUD USr  IBM USr  )gl[@gGzn[@gf@g33333f@)SymbolPricer  zSymbol == @symbr   )r&   r   r  r>   r?   r@   )r1   r   r"   r2   esymbrA  s          r   !test_query_string_scalar_variablez;TestDataFrameQueryStrings.test_query_string_scalar_variable  s^     (B9
 ryyH$%HH&vfHE
a#r   in_list)Nasdfghjk)r  Nr  )r  r  N)NNr  )r  NN)NNNc                 d   d}d}t        |      D ci c]  \  }}|dk(  s|| }}}t        d|id      }|j                  j                  d      |_        t        d|id      }t	        t        |j                        |j                  j                        |_        |j                  d||	      }	||d   dk(     }
|j                  d
||	      }t        j                  |	|       t        j                  |	|
       t        j                  |	|       t        j                  |
|       y c c}}w )Nr   r   r  r   stringdtypeint64za == 'asdf'r   za <= 'asdf')
	enumerater   ri   r+  r   rn   r  r>   r?   r@   )r1   r  r   r"   r@  valuer{   df_expectedr2   r   r   res3s               r   test_query_string_null_elementsz9TestDataFrameQueryStrings.test_query_string_null_elements  s    -6w-?SE5F?AuHSShx@'--44W=W~X6bhhrxx~~>xxfVxD"S'V#$xxfVxD
dK0
dD)
dD)
dD) Ts
   D,D,N)rR   rS   rT   r  r  r  r  r  r  r$   r   r   r  ltgtleger  r  r  r  r   r   r   r  r    s    'DR!/FK4("-&* [[(++(++8;;8;;		
---$ [["""  	

*
*r   r  c                       e Zd Zej                  d        Zd Zd Zej                  j                  dg d      d        Z
y)TestDataFrameEvalWithFramec                     t        t        j                  j                  d      j	                  d      t        d            S )Nr-   r   rJ  rl   )r   rq   r   r   r   rn   r0   s    r   framez TestDataFrameEvalWithFrame.frame  s2    II!!!$44W=tE{
 	
r   c                     |j                  d||      }|j                  |j                  z   }t        j                  ||       y )Nr   r   rA   r   r   r?   rB   r1   r  r   r"   r   r   s         r   test_simple_exprz+TestDataFrameEvalWithFrame.test_simple_expr  s8    jjj?577"
sF+r   c                     |j                  d||      }|j                  |j                  dk     |j                  z   }t        j                  ||       y )Nza[a < 1] + br   r,   r  r  s         r   test_bool_arith_exprz/TestDataFrameEvalWithFrame.test_bool_arith_expr  sE    jjvjF1%/
sF+r   rw   )rZ   r]   r`   rc   c                     t        ddgddgd      }d}t        j                  t        |      5  |j	                  d| d	||
       d d d        y # 1 sw Y   y xY w)Nr,   r-   r   r/  r   z:unsupported operand type\(s\) for .+: '.+' and '.+'|CannotrL   ry  z br   )r   r$   rN   r;  rA   )r1   r   r"   rw   r2   rP   s         r   %test_invalid_type_for_operator_raisesz@TestDataFrameEvalWithFrame.test_invalid_type_for_operator_raises  s[    aV3*56K]]9C0 	?GGbBKvG>	? 	? 	?s   AAN)rR   rS   rT   r$   rU   r  r  r  r   r   r  r   r   r   r  r    sH    ^^
 

,
,
 [[T#78? 9?r   r  c                   L   e Zd Z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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jH                  jK                  d g d!      d"        Z&d# Z'd$ Z(d% Z)d& Z*d' Z+d( Z,d) Z-d* Z.d+ Z/d, Z0d- Z1d. Z2ejH                  jK                  d/g d0      d1        Z3ejH                  jK                  d2d3d4g      ejH                  jK                  d/g d0      d5               Z4d6 Z5y7)8!TestDataFrameQueryBacktickQuotingc                     t        i dg ddg ddg ddg dd	g d
dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg d d!g d"g d#g d$g d%g dg dg d&g d'd(      S ))z
        Yields a dataframe with strings that may or may not need escaping
        by backticks. The last two columns cannot be escaped by backticks
        and should raise a ValueError.
        r*   r+   B B)r.   r-   r,   C Cr   C  C)r  rY   r.   C_C)   r  r   D_D D)   r,   rs  E.E)r   r.   r~   F-F)r   r,   r   1e1)r-   rY   r   def)r   r"  r-   A (x))rY   r,   r.   zB(x))r,   r,   r~   zB (x))r-   r  rY        &^ :!€$?(} >    <++*''  )r-   r~   r   r   )r   r"  r,    A)rY   r  r    r,   r-   r,   )r   r.   r,   )r  r,   r   )r   r  r   )r-   rY   r~   )r~   r  r  )it'sthat's   ☺
   xy （z）   xy （z\uff09foo#barr,   r/   r0   s    r   r2   z$TestDataFrameQueryBacktickQuoting.df  s     Yy y 		
 z  y z y {  	  /	 K  i!" i#$ "# '"+$1
 	
r   c                 h    |j                  d      }|d|d   k     }t        j                  ||       y )Nz	1 < `B B`r,   r  r>   r?   r@   r1   r2   r   r   s       r   #test_single_backtick_variable_queryzETestDataFrameQueryBacktickQuoting.test_single_backtick_variable_query  s2    hh{#A5	M"
c6*r   c                 z    |j                  d      }|d|d   k  d|d   k  z     }t        j                  ||       y )Nz1 < `B B` and 4 < `C C`r,   r  rY   r  r3  r4  s       r   !test_two_backtick_variables_queryzCTestDataFrameQueryBacktickQuoting.test_two_backtick_variables_query  s@    hh01QE]q2e9}56
c6*r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz	A + `B B`r*   r  rA   r?   rB   r4  s       r   "test_single_backtick_variable_exprzDTestDataFrameQueryBacktickQuoting.test_single_backtick_variable_expr  2    ggk"C2e9$
sF+r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz`B B` + `C C`r  r  r9  r4  s       r    test_two_backtick_variables_exprzBTestDataFrameQueryBacktickQuoting.test_two_backtick_variables_expr  s2    ggo&ERY&
sF+r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz	`C_C` + Ar  r*   r9  r4  s       r    test_already_underscore_variablezBTestDataFrameQueryBacktickQuoting.test_already_underscore_variable  s2    ggk"ERW$
sF+r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )NzC_C + `C C`r  r  r9  r4  s       r   test_same_name_but_underscoresz@TestDataFrameQueryBacktickQuoting.test_same_name_but_underscores  s2    ggm$ERY&
sF+r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )NzA + `D_D D`r*   r!  r9  r4  s       r   !test_mixed_underscores_and_spaceszCTestDataFrameQueryBacktickQuoting.test_mixed_underscores_and_spaces  s2    ggm$C2g;&
sF+r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz	A + `C_C`r*   r  r9  r4  s       r   'test_backtick_quote_name_with_no_spaceszITestDataFrameQueryBacktickQuoting.test_backtick_quote_name_with_no_spaces  r;  r   c                 t    |j                  d      }|d   |d   z   |d   z
  }t        j                  ||       y )Nz`E.E` + `F-F` - Ar#  r$  r*   r9  r4  s       r   test_special_charactersz9TestDataFrameQueryBacktickQuoting.test_special_characters  s<    gg)*ERY&C0
sF+r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz	A + `1e1`r*   r%  r9  r4  s       r   test_start_with_digitz7TestDataFrameQueryBacktickQuoting.test_start_with_digit  r;  r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz	A + `def`r*   r&  r9  r4  s       r   test_keywordz.TestDataFrameQueryBacktickQuoting.test_keyword  r;  r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nz`A` > 2r*   r-   r3  r4  s       r   test_unneeded_quotingz7TestDataFrameQueryBacktickQuoting.test_unneeded_quoting$  s1    hhy!BsGaK
c6*r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nz`A (x)` > 2r'  r-   r3  r4  s       r   test_parenthesisz2TestDataFrameQueryBacktickQuoting.test_parenthesis)  s2    hh}%BwK!O$
c6*r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nz`` > 5r   r~   r3  r4  s       r   test_empty_stringz3TestDataFrameQueryBacktickQuoting.test_empty_string.  s1    hhx BrFQJ
c6*r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nz
`C  C` > 5r  r~   r3  r4  s       r   test_multiple_spacesz6TestDataFrameQueryBacktickQuoting.test_multiple_spaces3  s2    hh|$BvJN#
c6*r   c                 h    |j                  d      }|d   |d   z   }t        j                  ||       y )Nz` A` + `  `r)  r*  r9  r4  s       r   test_start_with_spacesz8TestDataFrameQueryBacktickQuoting.test_start_with_spaces8  s2    ggm$DBtH$
sF+r   c                 h    |j                  d      }||d   dk(     }t        j                  ||       y )Nz`1` == 7r,   r  r3  r4  s       r   	test_intsz+TestDataFrameQueryBacktickQuoting.test_ints=  s1    hhz"BqEQJ
c6*r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nu"   `  &^ :!€$?(} >    <++*''  ` > 4r(  rY   r3  r4  s       r   test_lots_of_operators_stringz?TestDataFrameQueryBacktickQuoting.test_lots_of_operators_stringB  s6    hh;<B56:;
c6*r   c                     d}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nz(module 'pandas' has no attribute 'thing'rL   z	@pd.thing)r$   rN   AttributeErrorrA   )r1   r2   messages      r   test_missing_attributez8TestDataFrameQueryBacktickQuoting.test_missing_attributeG  s6    <]]>9 	!GGK 	! 	! 	!s	   9Ac                 n    |j                  d      }||d   |d   kD     }t        j                  ||       y )Nz`it's` > `that's`r,  r-  r3  r4  s       r   
test_quotez,TestDataFrameQueryBacktickQuoting.test_quoteL  s8    hh*+BvJH-.
c6*r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nu	   `☺` > 4r.  rY   r3  r4  s       r   #test_character_outside_range_smileyzETestDataFrameQueryBacktickQuoting.test_character_outside_range_smileyQ  s2    hh{#BuIM"
c6*r   c                 h    |j                  d      }||d   dk(     }t        j                  ||       y )Nu   `xy （z）` == 2r/  r-   r3  r4  s       r   *test_character_outside_range_2_byte_parenszLTestDataFrameQueryBacktickQuoting.test_character_outside_range_2_byte_parensV  s5    hh*+B|$)*
c6*r   c                 h    |j                  d      }||d   dk(     }t        j                  ||       y )Nu   `xy （z\uff09` == 2r0  r-   r3  r4  s       r   1test_character_outside_range_and_actual_backslashzSTestDataFrameQueryBacktickQuoting.test_character_outside_range_and_actual_backslash\  s6    hh./B*+q01
c6*r   c                 h    |j                  d      }||d   dkD     }t        j                  ||       y )Nz`foo#bar` > 4r1  rY   r3  r4  s       r   test_hashtagz.TestDataFrameQueryBacktickQuoting.test_hashtagb  s3    hh'ByMA%&
c6*r   c                     t        ddg      }|j                  d      }||d   dk     }t        j                  ||       y )Nr+   a#rl   z`a#` < 2r-   r   r>   r?   r@   r1   r2   rD   r{   s       r   1test_expr_with_column_name_with_hashtag_characterzSTestDataFrameQueryBacktickQuoting.test_expr_with_column_name_with_hashtag_characterg  s@    y4&1*%bhl#
fh/r   c                     t        ddg      }|j                  d      }||d   dk     }t        j                  ||       y )Nr+   ri  rl   z`a#` < 2  # This is a commentr-   rj  rk  s       r   test_expr_with_commentz8TestDataFrameQueryBacktickQuoting.test_expr_with_commentn  sA    y4&19:bhl#
fh/r   c                     t        ddg      }|j                  d      }||d   dk     }t        j                  ||       y )Nr+   za`#brl   z`a``#b` < 2r-   rj  rk  s       r   1test_expr_with_column_name_with_backtick_and_hashzSTestDataFrameQueryBacktickQuoting.test_expr_with_column_name_with_backtick_and_hashu  s@    y6(3-(bj1n%
fh/r   c                     t        ddd      }|j                  d      }||d   dk     }t        j                  ||       y )Nr+   r   )a`br   z
`a``b` < 2rr  r-   rj  rk  s       r   (test_expr_with_column_name_with_backtickzJTestDataFrameQueryBacktickQuoting.test_expr_with_column_name_with_backtick|  sA    y	:;,'bi!m$
fh/r   c                     t        ddg      }|j                  d      }|d|d   k     }t        j                  ||       y )N`z`````z
``````````
#backticksrl   z'```' < `#backticks`z```rj  rk  s       r   $test_expr_with_string_with_backtickszFTestDataFrameQueryBacktickQuoting.test_expr_with_string_with_backticks  sD    3l^L01eb../
fh/r   c                     t        ddg      }|j                  d      }|d|d   k     }t        j                  ||       y )Nru  rw  rl   z'`#backticks`' < `#backticks`z`#backticks`rj  rk  s       r   Ctest_expr_with_string_with_backticked_substring_same_as_column_namezeTestDataFrameQueryBacktickQuoting.test_expr_with_string_with_backticked_substring_same_as_column_name  sD    3l^L9:nr,'778
fh/r   zcol1,col2,expr))r,  r-  z`it's` < `that's`)zit"szthat"sz`it"s` < `that"s`)r,  zthat's "nice"z`it's` < `that's "nice"`)r,  zthat's #coolz+`it's` < `that's #cool` # This is a commentc           	          t        |d|di|d|di|d|di|d|dig      }|j                  |      }|||   ||   k     }t        j                  ||       y )	Nr,   r-   r.   rY   rk   rj  )r1   col1col2exprr2   rD   r{   s          r   3test_expr_with_column_names_with_special_characterszUTestDataFrameQueryBacktickQuoting.test_expr_with_column_names_with_special_characters  sy     q$"q$"r4$r4$	
 $bhD)*
fh/r   c                     t        ddg      }|j                  d      }|d|d   k     }t        j                  ||       y )Naaavvvzzzcolumn_namerl   z'value' < column_namer  rj  rk  s       r   test_expr_with_no_backticksz=TestDataFrameQueryBacktickQuoting.test_expr_with_no_backticks  sD    ,}oF12g= 112
fh/r   c                     t        ddg      }t        j                  t        t        fd      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr,   r~   r   column-namerl   rB  rL   z5 < `column-namer   r$   rN   rC  r   r>   r5   s     r   2test_expr_with_no_quotes_and_backtick_is_unmatchedzTTestDataFrameQueryBacktickQuoting.test_expr_with_no_quotes_and_backtick_is_unmatched  sF    zM?;]]K4<LM 	)HH'(	) 	) 	)   AAc                     t        ddg      }|j                  d      }|d|d   k     }t        j                  ||       y )Nr  r  rl   z5 < `column-name`r~   rj  rk  s       r   0test_expr_with_no_quotes_and_backtick_is_matchedzRTestDataFrameQueryBacktickQuoting.test_expr_with_no_quotes_and_backtick_is_matched  sC    zM?;-.a"]++,
fh/r   c                     t        ddg      }t        j                  t        t        fd      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr  It'srl   unterminated string literalrL   z	5 < `It'sr  r5   s     r   Etest_expr_with_backtick_opened_before_quote_and_backtick_is_unmatchedzgTestDataFrameQueryBacktickQuoting.test_expr_with_backtick_opened_before_quote_and_backtick_is_unmatched  sJ    zF84]]*%-J
 	" HH[!	" 	" 	"r  c                     t        ddg      }|j                  d      }|d|d   k     }t        j                  ||       y )Nr  r  rl   z
5 < `It's`r~   rj  rk  s       r   Ctest_expr_with_backtick_opened_before_quote_and_backtick_is_matchedzeTestDataFrameQueryBacktickQuoting.test_expr_with_backtick_opened_before_quote_and_backtick_is_matched  s@    zF84,'a"V*n%
fh/r   c                     t        ddg      }t        j                  t        t        fd      5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr  r  rl   r  rL   z+`column-name` < 'It`s that\'s "quote" #hashr  r5   s     r   Btest_expr_with_quote_opened_before_backtick_and_quote_is_unmatchedzdTestDataFrameQueryBacktickQuoting.test_expr_with_quote_opened_before_backtick_and_quote_is_unmatched  sP    ,}oF]]*%-J
 	G HHEF	G 	G 	Gr  c                     t        ddg      }|j                  d      }||d   dk     }t        j                  ||       y )Nr  r  rl   z,`column-name` < 'It`s that\'s "quote" #hash'It`s that's "quote" #hashrj  rk  s       r   Gtest_expr_with_quote_opened_before_backtick_and_quote_is_matched_at_endziTestDataFrameQueryBacktickQuoting.test_expr_with_quote_opened_before_backtick_and_quote_is_matched_at_end  sE    ,}oFKLb'*FFG
fh/r   c                     t        ddg      }|j                  d      }|d|d   k     }t        j                  ||       y )Nr  r  rl   z,'It`s that\'s "quote" #hash' < `column-name`r  rj  rk  s       r   Gtest_expr_with_quote_opened_before_backtick_and_quote_is_matched_in_midziTestDataFrameQueryBacktickQuoting.test_expr_with_quote_opened_before_backtick_and_quote_is_matched_in_mid  sE    ,}oFKL2R5FFG
fh/r   c                 6   d }|g}|j                  d       t        j                  t        d      5  |j                  d       ddd       t        j                  t        d      5  |j                  d       ddd       y# 1 sw Y   ?xY w# 1 sw Y   yxY w)z
        Only attributes and variables ('named functions') can be called.
        .__call__() is not an allowed attribute because that would allow
        calling anything.
        https://github.com/pandas-dev/pandas/pull/32460
        c                       yr8   r   )r   s    r   r  zNTestDataFrameQueryBacktickQuoting.test_call_non_named_expression.<locals>.func  s    r   z@func()z"Only named functions are supportedrL   z@funcs[0]()Nz@funcs[0].__call__())rA   r$   rN   r;  )r1   r2   r  funcss       r   test_call_non_named_expressionz@TestDataFrameQueryBacktickQuoting.test_call_non_named_expression  s    	 
	]]9,PQ 	#GGM"	# ]]9,PQ 	,GG*+	, 	,	# 	#	, 	,s   B(BBBc                    t        ddgddggddg|      }t        rt        nd }t        j                  |      5  |j                  d      }d d d        t        g d	g d
gg d|      }t        j                  |       y # 1 sw Y   6xY w)Nr,   r-   r.   rY   r   r   rj   r  z	c = b - ar+  )r.   rY   r,   rR  r   r   RuntimeWarningr?   assert_produces_warningrA   r@   )r1   any_numeric_ea_and_arrow_dtyper2   warningrD   r{   s         r   test_ea_dtypesz0TestDataFrameQueryBacktickQuoting.test_ea_dtypes  s    VaVsCj8V
 %6.4''0 	*WW[)F	*	"#0

 	fh/	* 	*   BB
c                    t        ddgddggddgd      }t        rt        nd }t        j                  |      5  |j                  d	      }d d d        t        g d
g dgg dd      }t        j                  |       y # 1 sw Y   6xY w)Nr,   r-   r.   rY   r   r   Float64r  z	c = b - 1r+  )r.   rY   r.   rR  r  )r1   r2   r  rD   r{   s        r   test_ea_dtypes_and_scalarz;TestDataFrameQueryBacktickQuoting.test_ea_dtypes_and_scalar  s    AA'#s9M$5.4''0 	*WW[)F	*	"O9
 	fh/	* 	*r  c           	         t        ddgddggddg|      }|j                  d      }t        t        ddg|	      t        ddg|	      t        ddg|d
   j                  	      d      }t	        j
                  ||       y )Nr,   r-   r.   rY   r   r   r  z	c = 2 - 1r  r   rR  )r   rA   r	   r  r?   r@   )r1   r  r2   rD   r{   s        r   #test_ea_dtypes_and_scalar_operationzETestDataFrameQueryBacktickQuoting.test_ea_dtypes_and_scalar_operation  s    VaVsCj8V
 %QF*HIQF*HIQF&+*;*;<
 	fh/r   r  )r  Int64int64[pyarrow]c                 ^   |dk(  rt        j                  d       t        dddgi|      }dh}|dk(  rt        rt        nd }t        j                  |      5  |j                  d      }d d d        t        ddgit        dd      |	      }t        j                  |       y # 1 sw Y   ;xY w)
Nr  pyarrowr   r,   r-   r  r  z	a in @ref)ri   r  )
r$   importorskipr   r   r  r?   r  r>   rm   r@   )r1   r  r2   refr  rD   r{   s          r   test_query_ea_dtypesz6TestDataFrameQueryBacktickQuoting.test_query_ea_dtypes   s    $$	*aV}E2c$)W$49J.PT''0 	+XXk*F	+cA3ZuQ{%H
fh/	+ 	+s   B##B,r"   r   r   c                    |dk(  rt         nd }|dk(  rt        st        j                  d       |dk(  rt        j                  d       t        t        g dd      t        g d|      d	      }t        j                  |      5  |j                  d
|      }d d d        t        t        ddgdt        ddd            t        ddg|t        ddd            d	      }t        j                  |       y # 1 sw Y   `xY w)Nr   znumexpr not installedr  r  )r,   r,   r-   r  r  )r,   r-   r-   r   zA == BrG   r,   r-   r   rY   )r  ri   )r  r   r$   r%   r  r   r	   r?   r  r>   rm   r@   )r1   r  r"   r  r2   rD   r{   s          r   !test_query_ea_equality_comparisonzCTestDataFrameQueryBacktickQuoting.test_query_ea_equality_comparison-  s     %+i$7.TY'8KK/0$$	*'2	QV9WX
 ''0 	7XXhvX6F	7QF'q!QHQF%uQ1~F
 	fh/	7 	7s   C88Dc                 
   t         j                  j                  d      }t        dt        j                  d d gd      it
              }|j                  d      }t        dg it
              }t        j                  ||       y )NUTCr   T)utcr  za > @now)	r   	Timestampnowr   to_datetimer,  r>   r?   r@   )r1   r  r2   rD   r{   s        r   test_all_nat_in_objectz8TestDataFrameQueryBacktickQuoting.test_all_nat_in_objectC  sd    llu%R^^T4LdCDFS*%c2Yf5
fh/r   N)6rR   rS   rT   r$   rU   r2   r5  r7  r:  r=  r?  rA  rC  rE  rG  rI  rK  rM  rO  rQ  rS  rU  rW  rY  r]  r_  ra  rc  re  rg  rl  rn  rp  rs  rx  rz  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r  r    s   ^^!
 !
F+
+
,
,
,
,
,
,
,
,
,
+
+
+
+
,
+
+
!
+
+
+++
000000 [[	
000)0"0G00,*0	00 [[W&JK
0 L
0 [[X)'<=[[W&JK0 L >0(0r   r  ))r  tokenizer   numpyrq   r$   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorstdr   r   r   r   r   r	   r
   pandas._testing_testingr?   pandas.core.computation.checkr   rU   r   r   
skip_if_nor"   r&   r(   rW   r   r   r  r  r  r  r  r  r   r   r   <module>r     sW       * )    ; (+= > lfll9MBMM)4LMN	=
01 01fL1 L1^GI GIT yy0 y0 y0x yu!&E u! u!p0%D 0*0%D 0*T* T*n? ?4A0 A0r   