
x\c           @  sA  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 d  d l j j 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 d  d l j j Z d  d l m Z m Z m Z  d d	 f Z! d e j" d
 d e j# f Z$ e j% d e! d d    d    Z& e j% d e$ d d    d    Z' d   Z( d e) f d     YZ* d e f d     YZ+ d e) f d     YZ, e j# d e) f d     Y Z- e j# d e- f d     Y Z. d e- f d     YZ/ d e. f d      YZ0 d! e) f d"     YZ1 d# e) f d$     YZ2 d S(%   i(   t   print_functionN(   t   StringIOt   lranget   ranget   zip(   t	   DataFramet   Indext
   MultiIndext   Seriest
   date_range(   t   _NUMEXPR_INSTALLED(   t   TestData(   t   assert_frame_equalt   assert_series_equalt   makeCustomDataframet   pythont   pandast   numexprt   markst   paramst   idsc         C  s   |  S(   N(    (   t   x(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   <lambda>   s    c         C  s   |  j  S(   N(   t   param(   t   request(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   parser   s    c         C  s   |  S(   N(    (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR      s    c         C  s   |  j  S(   N(   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   engine   s    c         C  s)   |  d k r% t  j d j |    n  d  S(   NR   s!   cannot evaluate with parser {0!r}(   t   pytestt   skipt   format(   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   skip_if_no_pandas_parser#   s    t
   TestCompatc           B  s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C  sR   t  i d d d g d 6 |  _ |  j |  j j d k |  _ |  j j d |  _ d  S(   Ni   i   i   t   Ai    (   R   t   dfR    t	   expected1t	   expected2(   t   selft   method(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   setup_method*   s    c         C  sQ   |  j  } | j d  } t | |  j  | j d  } t | |  j d t d  S(   Ns   A>0s   A+1t   check_names(   R!   t   queryR   R"   t   evalR   R#   t   False(   R$   R!   t   result(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_default/   s
    	c         C  s]   |  j  } | j d d d  } t | |  j  | j d d d  } t | |  j d t d  S(   Ns   A>0R   s   A+1R'   (	   R!   R(   t   NoneR   R"   R)   R   R#   R*   (   R$   R!   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_None9   s
    	c         C  s]   |  j  } | j d d d } t | |  j  | j d d d } t | |  j d t d  S(   Ns   A>0R   R   s   A+1R'   (   R!   R(   R   R"   R)   R   R#   R*   (   R$   R!   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_pythonA   s
    	c           s   |  j    t rb   j d d d } t | |  j    j d d d } t | |  j d t n2 t	 j
 t   f d    t	 j
 t   f d    d  S(   Ns   A>0R   R   s   A+1R'   c             s     j  d d d S(   Ns   A>0R   R   (   R(   (    (   R!   (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   S   s    c             s     j  d d d S(   Ns   A+1R   R   (   R)   (    (   R!   (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   U   s    (   R!   R
   R(   R   R"   R)   R   R#   R*   R   t   raisest   ImportError(   R$   R+   (    (   R!   sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_numexprI   s    			(   t   __name__t
   __module__R&   R,   R.   R/   R2   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   (   s
   		
		t   TestDataFrameEvalc           B  s,   e  Z d    Z d   Z d   Z d   Z RS(   c   
      C  s  xId d g D];} t  d d t |  d t d  } d | j d <| j   } x d d d d  g D] \ } } } t  t j | j |  j | d  d t d  } t	 d j
 d |   } t	 d j
 d |   }	 t |	 |  | d! k rt | |  |  }	 t |	 |  qc | d" k rc t | |  |  }	 t |	 |  qc qc Wq Wt  t d t j j d    } t j | j d d +d t j | j d d ! } d t j |  j d d !}	 t |	 |  d  S(#   Ni   i  i   t   indext   columnst   abcdi   i    t   +t   __add__t   __radd__t   -t   __sub__t   __rsub__t   *t   __mul__t   __rmul__t   /t   __truediv__t   __rtruediv__is
   base{op}dft   ops   m{op}dfR    ia  i   i   (   R9   R:   R;   (   R<   R=   R>   (   R?   R@   RA   (   RB   RC   RD   (   R9   R?   (   R<   RB   (   R   R   t   listt   iloct   meant   npt   tilet   valuest   reshapeR)   R   R   t   getattrt   dictt   randomt   randnt   nant   isnan(
   R$   t   nR!   t   mt   op_strRE   t   ropt   baset   expectedR+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_opsZ   s2    $!c         C  s   t  j i d d d g d 6d d d g d 6 } d } t j t d	 |  | j d
    Wd  QXt j t d	 |  | j d  Wd  QXd  S(   Ni   i   i   R    t   at   bt   Bs%   expr must be a string to be evaluatedt   matchc         S  s   |  j  d k S(   NR[   (   R\   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR      s    io   (   t   pdR   R   R0   t
   ValueErrorR(   (   R$   R!   t   msg(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_non_str   s    /c         C  sR   t  j i d d d g d 6 } d } t j t d |  | j d  Wd  QXd  S(   Ni   i   i   R    s   expr cannot be an empty stringR]   t    (   R^   R   R   R0   R_   R(   (   R$   R!   R`   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_empty_string   s    c         C  s   t  t j j d d  d t d  } i d d 6} i d d 6} | j d d	 | | g | d | d k st t  t j d d	 | | g | d | d k s t  d  S(
   Ni
   i   R7   t   abi   RZ   R[   s   a + bt	   resolvers(   R   RI   RO   RP   RF   R)   t   AssertionErrorR^   (   R$   R!   t   dict1t   dict2(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_eval_resolvers_as_list   s    '(   R3   R4   RY   Ra   Rc   Ri   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR5   X   s   	,		t    TestDataFrameQueryWithMultiIndexc           B  sG   e  Z d    Z d   Z d   Z d   Z e j j d  d    Z	 RS(   c         C  s  t  |  t j j d d g d d } t j j d d g d d } t j | | g d d d	 g } t t j j d d
  d | } t | j	 j
 d  j d | d d } | j d d | d | } | j d d | d | }	 | | d k }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | d k }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  d  S(   Nt   redt   greent   sizei
   t   eggst   hamt   namest   colort   foodi   R6   t   names   color == "red"R   R   s   "red" == colors   color != "red"s   "red" != colors   color == ["red"]s   ["red"] == colors   color != ["red"]s   ["red"] != colors   ["red"] in colors   "red" in colors   ["red"] not in colors   "red" not in color(   R   RI   RO   t   choiceR   t   from_arraysR   RP   R   R6   t   get_level_valuesRK   R(   R   t   isin(   R$   R   R   RZ   R[   R6   R!   t   indt   res1t   res2t   exp(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt    test_query_with_named_multiindex   sJ    
!!	c         C  sv  t  |  t j j d d g d d } t j j d d g d d } t j | | g  } t t j j d d  d | } t | j	 j
 d	  j d | } | j d
 d | d | } | j d d | d | }	 | | d k }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | d k }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  t | j	 j
 d  j d | } | j d d | d | } | j d d | d | }	 | | d k }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | d k }
 t | |
  t |	 |
  | j d d | d | } | j d d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d d | d | } | j d  d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d! d | d | } | j d" d | d | }	 | | j d g  }
 t | |
  t |	 |
  | j d# d | d | } | j d$ d | d | }	 | | j d g  }
 t | |
  t |	 |
  d  S(%   NRk   Rl   Rm   i
   Rn   Ro   i   R6   i    s   ilevel_0 == "red"R   R   s   "red" == ilevel_0s   ilevel_0 != "red"s   "red" != ilevel_0s   ilevel_0 == ["red"]s   ["red"] == ilevel_0s   ilevel_0 != ["red"]s   ["red"] != ilevel_0s   ["red"] in ilevel_0s   "red" in ilevel_0s   ["red"] not in ilevel_0s   "red" not in ilevel_0i   s   ilevel_1 == "eggs"s   "eggs" == ilevel_1s   ilevel_1 != "eggs"s   "eggs" != ilevel_1s   ilevel_1 == ["eggs"]s   ["eggs"] == ilevel_1s   ilevel_1 != ["eggs"]s   ["eggs"] != ilevel_1s   ["eggs"] in ilevel_1s   "eggs" in ilevel_1s   ["eggs"] not in ilevel_1s   "eggs" not in ilevel_1(   R   RI   RO   Rt   R   Ru   R   RP   R   R6   Rv   RK   R(   R   Rw   (   R$   R   R   RZ   R[   R6   R!   Rx   Ry   Rz   R{   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt"   test_query_with_unnamed_multiindex   s    
!!	!	c   
      C  s  t  |  t j j d d g d d } t j d  } t j | | g  } d  d g | _ t	 t j j
 d d  d | } | j d d	 | d
 | } t | j j d  j d | d d } | | d k }	 t | |	  | j d d	 | d
 | } t | j j d  j d | d d } | | d k }	 t | |	  | j d d	 | d
 | } t | j j d  j d | } | | d k }	 t | |	  | j d d	 | d
 | } t | j j d  j d | } | | d k }	 t | |	  d  S(   NRk   Rl   Rm   i
   t   ratingi   R6   s   rating == 1R   R   Rs   i   s   rating != 1s   ilevel_0 == "red"i    s   ilevel_0 != "red"(   R   RI   RO   Rt   t   arangeR   Ru   R-   Rp   R   RP   R(   R   R6   Rv   RK   R   (
   R$   R   R   RZ   R[   R6   R!   t   resRx   R{   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt*   test_query_with_partially_named_multiindex1  s0    
!		!!c         C  s  t  d d d d d d d g } | j   } d   } | j j   } i | j d	 6| d
 6| | j d  d 6| | j d  d 6| d 6} xt | j   D]f \ } } t | t  r | j | |  s t	  q t | t
  r t | | |  q t	 d   q Wd  S(   Ni
   i   t   r_idx_nlevelsi   t   r_idx_namest   spamRn   c         S  s(   |  j  |  } | j   } |  | _ | S(   N(   Rv   t	   to_seriesR6   (   t   mit   levelt   level_valuest   s(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   R  s    	R6   R7   t   C0s    object must be a Series or Index(   t   mkdft   _get_index_resolversR7   R   R6   t   itemst
   isinstanceR   t   is_Rf   R   R   (   R$   R!   Re   R   t
   col_seriesRX   t   kt   v(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt)   test_query_multiindex_get_index_resolversN  s    !	
s   ignore::FutureWarningc      
   C  sc   t  j d  } t  j t | j  d d | _ t j t   t j	 d d | d | Wd  QXd  S(   Ni   t   nlevelsi   s   p + 1R   R   (
   t   tmt	   makePanelt   makeCustomIndext   lenR   R   R0   t   NotImplementedErrorR^   R)   (   R$   R   R   t   p(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt#   test_raise_on_panel_with_multiindexf  s    !(
   R3   R4   R|   R}   R   R   R   t   markt   filterwarningsR   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyRj      s
   	1	Z		t   TestDataFrameQueryNumExprPandasc           B  s   e  Z e d     Z e 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 RS(   c         C  s   d |  _  d |  _ d  S(   NR   R   (   R   R   (   t   cls(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   setup_classq  s    	c         C  s   |  `  |  ` d  S(   N(   R   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   teardown_classv  s    c         C  s   |  j  |  j } } t |  t t j j d d   } t d d d | d <t d d d | d <t d d d | d	 <| j d
 d | d | } | | j	 d k  d | j
 k  @} t | |  d  S(   Ni   i   s   1/1/2012t   periodst   dates1s   1/1/2013t   dates2s   1/1/2014t   dates3s"   @df.dates1 < 20130101 < @df.dates3R   R   t   20130101(   R   R   R   R   RI   RO   RP   R	   R(   R   R   R   (   R$   R   R   R!   R   t   expec(    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt%   test_date_query_with_attribute_accessz  s    
	 c         C  s   |  j  |  j } } t t j j d d   } t d d d | d <t d d d | d <t d d d | d	 <| j d
 d | d | } | | j d k  d | j	 k  @} t
 | |  d  S(   Ni   i   s   1/1/2012R   R   s   1/1/2013R   s   1/1/2014R   s   dates1 < 20130101 < dates3R   R   R   (   R   R   R   RI   RO   RP   R	   R(   R   R   R   (   R$   R   R   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt#   test_date_query_no_attribute_access  s    	 c         C  s  |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <t d d | | d	 <t j | j	 t j j
 |  d
 k d f <t j | j	 t j j
 |  d
 k d	 f <| j d d | d | } | | j d k  d | j k  @} t | |  d  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2013R   s   1/1/2014R   g      ?s   dates1 < 20130101 < dates3R   R   R   (   R   R   R   RI   RO   RP   R	   R^   t   NaTt   loct   randR(   R   R   R   (   R$   R   R   RS   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_date_query_with_NaT  s    ((	 c         C  s   |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <| j d d t d	 t | j	 d
 d | d | } | | j
 d k  d | j k  @} t | |  d  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2014R   t   inplacet   drops   index < 20130101 < dates3R   R   R   (   R   R   R   RI   RO   RP   R	   t	   set_indext   TrueR(   R6   R   R   (   R$   R   R   RS   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_date_index_query  s    	 c         C  s   |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <t j | j	 d <| j
 d d	 t d
 t | j d d | d | } | | j d k  d | j k  @} t | |  d  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2014R   i    R   R   s   index < 20130101 < dates3R   R   R   (   i    i    (   R   R   R   RI   RO   RP   R	   R^   R   RG   R   R   R(   R6   R   R   (   R$   R   R   RS   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_date_index_query_with_NaT  s    	 c         C  s   |  j  |  j } } d } i  } t d d | | d <t d d | | d <t |  } t j | j t j j	 |  d k d f <| j
 d d t d	 t | j d
 d | d | } | | j j   d k  d | j k  @} t | |  d  S(   Ni
   s   1/1/2012R   R   s   1/1/2014R   g      ?R   R   s   dates1 < 20130101 < dates3R   R   R   (   R   R   R	   R   R^   R   R   RI   RO   R   R   R   R(   R6   R   R   R   (   R$   R   R   RS   t   dR!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt)   test_date_index_query_with_NaT_duplicates  s    (	c         C  s   |  j  |  j } } d } t i t d d | d 6t j |  d 6 } | j d d | d | } t |  d	 k s{ t  | j d
 d | d | } t	 | |  xM d d d d g D]9 } t
 j t  " | j d | d | d | Wd  QXq Wd  S(   Ni
   s   1/1/2012R   t   datest   nondates   dates == nondateR   R   i    s   dates != nondatet   <t   >s   <=s   >=s   dates %s nondate(   R   R   R   R	   RI   R   R(   R   Rf   R   R   R0   t	   TypeError(   R$   R   R   RS   R!   R+   RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_date_query_with_non_date  s    c      
   C  s   |  j  |  j } } t i t d  d 6t d d  d 6t d d  d 6 } t j t   | j d	 d
 | d | Wd  QXd  S(   Ni
   t   ii   i   R9   i   i   t   rs   i - +R   R   (   R   R   R   R   R   R0   t   SyntaxErrorR(   (   R$   R   R   R!   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_syntax_error  s
    #c   	      C  s;  d d l  m } |  j |  j } } t |  t t j j d d  d t	 d  } d \ } } | j
 d d	 | d
 | } | | j | j k } t | |  | j
 d d	 | d
 | } | | | j k } t | |  t j |   | j
 d d	 | d
 | Wd  QXt j |   | j
 d d	 | d
 | Wd  QXd  S(   Ni(   t   UndefinedVariableErrori   i   R7   Rd   i   s   a > bR   R   s   @a > bs   @a > b > @cs
   @a > b > c(   i   i   (   t   pandas.core.computation.opsR   R   R   R   R   RI   RO   RP   RF   R(   RZ   R[   R   R   R0   (	   R$   R   R   R   R!   RZ   R[   R   RX   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_scope  s    
'c      
   C  s   d d l  m } |  j |  j } } d } } t t j j | d | d f d t d  } t	 j
 |   | j d d	 | d
 | Wd  QXd  S(   Ni(   R   i
   Rm   i   R7   t   abcs   sin > 5R   R   (   R   R   R   R   R   RI   RO   t   randintRF   R   R0   R(   (   R$   R   R   R   RS   RT   R!   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_doesnt_pickup_local  s    
0c      
   C  s   d d l  m } |  j |  j } } d } } t t j j | d | d f d t d  } d | j	 _
 d	 } t j | d
 |  | j d d | d | Wd  QXd  S(   Ni(   t   NumExprClobberingErrori
   Rm   i   R7   R   t   sins   Variables in expression.+R]   s   sin > 5R   R   (   t   pandas.core.computation.enginesR   R   R   R   RI   RO   R   RF   R6   Rs   R   R0   R(   (   R$   R   R   R   RS   RT   R!   R`   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_builtin  s    
0c         C  s   |  j  |  j } } t t j j d d  d d d d g } t | j d d | d	 | | | j | j	 k   t | j d
 d | d	 | | | j | j	 | j	 | j
 k  d  S(   Ni
   i   R7   RZ   R[   t   cs   a < bR   R   s   a + b > b * c(   R   R   R   RI   RO   RP   R   R(   RZ   R[   R   (   R$   R   R   R!   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt
   test_query  s    *c         C  s   |  j  |  j } } t t j j d d d d t t d  d d d d d	 d
 g } | j d d | d | } | | j	 d k  | j
 | j k  @} t | |  | j d d | d | } | | j	 | j k  } t | |  d  S(   Ni
   Rm   i   R6   Rs   t   blobR7   RZ   R[   R   s   (blob < 5) & (a < b)R   R   i   s   blob < b(   i
   i   (   R   R   R   RI   RO   R   R   R   R(   R6   RZ   R[   R   (   R$   R   R   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_index_with_name  s    #c         C  s   |  j  |  j } } t t j j d d d d t d  d d d d g } | j d	 d
 | d | } | | j | j	 k  } t
 | |  | j d d
 | d | } | | j d k  } t
 | |  d  S(   Ni
   Rm   i   R6   R7   RZ   R[   R   s	   index < bR   R   s	   index < 5i   (   i
   i   (   R   R   R   RI   RO   R   R   R(   R6   R[   R   (   R$   R   R   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_index_without_name&  s    c         C  sY  |  j  } |  j } t |  t t j j d d   } t t j j d d   } | | d k | d k @} | j d d | d | } t | |  t	 j
 d d | d | } t | |  t	 j
 d d | d | } | | d k | d k @| | d k d k @} t | |  t	 j
 d	 d | d | } | j d
 d | d | } t | |  d  S(   Ni   i   i    s   (@df > 0) & (@df2 > 0)R   R   s   df[df > 0 and df2 > 0]s)   df[df > 0 and df2 > 0 and df[df > 0] > 0]s   df[(df>0) & (df2>0)]s   (@df>0) & (@df2>0)(   R   R   R   R   RI   RO   RP   R(   R   R^   R)   (   R$   R   R   R!   t   df2RX   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_nested_scope5  s&    		
		.c      
   C  sd   d d l  m } t t j j d d   } t j |  $ | j d d |  j	 d |  j
 Wd  QXd  S(   Ni(   R   i   i   s   df > 0R   R   (   R   R   R   RI   RO   RP   R   R0   R(   R   R   (   R$   R   R!   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt*   test_nested_raises_on_local_self_referenceP  s    c         C  s   t  |  j  |  j |  j } } t t j j d d  d t d  } d } | | j | k  } | j	 d d | d | } t
 | |  | | j | j k  } | j	 d	 d | d | } t
 | |  d  S(
   Nid   i
   R7   t
   abcdefghiji   s   a < @bR   R   s   a < b(   R   R   R   R   RI   RO   RP   RF   RZ   R(   R   R[   (   R$   R   R   R!   R[   t   expectR+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_local_syntaxY  s    'c         C  s   t  |  j  |  j |  j } } t d  } t t j j d t |   d | } | j	 d d | d | } | j
 | j k  | j | j k  @| j j | j
  @| j j | j  @} | | } t | |  d  S(   NR   id   R7   s!   a < b < c and a not in b not in cR   R   (   R   R   R   RF   R   RI   RO   RP   R   R(   RZ   R[   R   Rw   R   (   R$   R   R   t   colsR!   R   Rx   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_chained_cmp_and_ing  s    '	J
c         C  s.  |  j  |  j } } t |  t t j j d d d d d } t t j j d d d d d } t i | d 6| d 6 } | j | j	 d j
 |  } | j d	 d
 | d | } t | |  t t j j d d d d d } | j | d j
 |  } | j d d
 | d | } t | |  d  S(   Ni   Rm   i   Rs   RZ   i
   R[   i   s
   b - 1 in aR   R   s   @b - 1 in a(   R   R   R   R   RI   RO   R   R   R   R[   Rw   R(   R   (   R$   R   R   RZ   R[   R!   RX   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_local_variable_with_inr  s    
$$$c         C  s   |  j  |  j } } t |  d } t i d d d d d d g d 6 } | j d d | d | } | | j d k } t | |  d  S(   Ni   RZ   R[   s   @cs	   a == "@c"R   R   (   R   R   R   R   R(   RZ   R   (   R$   R   R   R   R!   R+   RX   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_at_inside_string  s    
%c      
   C  s   d d l  m } |  j |  j } } t |  t t j j d d  d t	 d  } d } t
 j | d |  | j d	 d
 | d | Wd  QXd  S(   Ni(   R   i
   i   R7   Rd   s!   local variable 'c' is not definedR]   s   a == @cR   R   (   R   R   R   R   R   R   RI   RO   R   RF   R   R0   R(   (   R$   R   R   R   R!   R`   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_undefined_local  s    
'c         C  s  d } t  j d d d  } t i | d 6t  j j | j  d 6 } d | j _ | j d d |  j	 d |  j
 } | | d d	 k } t | |  t i | d 6t  j j | j  d 6 } | j d
 d |  j	 d |  j
 } | j | j | j d	 k } t | |  t i | d 6t  j j | j  d 6 } d | j _ | j d d |  j	 d |  j
 } | | j d	 k } t | |  | j d d |  j	 d |  j
 } | j | j | j d	 k } t | |  d  S(   Ni   i   ie   R6   R[   s	   index > 5R   R   i   s   ilevel_0 > 5RZ   s   a > 5(   RI   t   r_R   RO   RP   Rm   R6   Rs   R(   R   R   R   R   RZ   (   R$   RS   RZ   R!   R+   RX   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt:   test_index_resolvers_come_after_columns_with_the_same_name  s*    )!)!!c   
      C  s   d } t  i t j j |  d 6t j j |  d 6 } t j | j d  d  d  d f <d } t t | t j	 t j
 f   } xk | j   D]] \ } } d | } | | | j t j  } | j | d	 |  j d
 |  j }	 t |	 |  q Wd  S(   Ni
   RZ   R[   i   i    s   ==s   !=s   a %s infR   R   (   s   ==s   !=(   R   RI   RO   R   t   infR   RN   R   t   operatort   eqt   neR   RZ   R(   R   R   R   (
   R$   RS   R!   t   opsR   RE   t   ft   qRX   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_inf  s    2!
!(   R3   R4   t   classmethodR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   n  s2   												
												t   TestDataFrameQueryNumExprPythonc           B  sM   e  Z e d     Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C  s8   t  t |   j   d |  _ d |  _ t   j |  _ d  S(   NR   R   (   t   superR   R   R   R   R   t   frame(   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s    		c         C  s   |  j  |  j } } t t j j d d   } t d d d | d <t d d d | d <t d d d | d	 <| j d
 d | d | } | | j d k  d | j	 k  @} t
 | |  d  S(   Ni   i   s   1/1/2012R   R   s   1/1/2013R   s   1/1/2014R   s)   (dates1 < 20130101) & (20130101 < dates3)R   R   R   (   R   R   R   RI   RO   RP   R	   R(   R   R   R   (   R$   R   R   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s     c         C  s  |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <t d d | | d	 <t j | j	 t j j
 |  d
 k d f <t j | j	 t j j
 |  d
 k d	 f <| j d d | d | } | | j d k  d | j k  @} t | |  d  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2013R   s   1/1/2014R   g      ?s)   (dates1 < 20130101) & (20130101 < dates3)R   R   R   (   R   R   R   RI   RO   RP   R	   R^   R   R   R   R(   R   R   R   (   R$   R   R   RS   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s    (( c         C  s   |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <| j d d t d	 t | j	 d
 d | d | } | | j
 d k  d | j k  @} t | |  d  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2014R   R   R   s(   (index < 20130101) & (20130101 < dates3)R   R   R   (   R   R   R   RI   RO   RP   R	   R   R   R(   R6   R   R   (   R$   R   R   RS   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s     c         C  s   |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <t j | j	 d <| j
 d d	 t d
 t | j d d | d | } | | j d k  d | j k  @} t | |  d  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2014R   i    R   R   s(   (index < 20130101) & (20130101 < dates3)R   R   R   (   i    i    (   R   R   R   RI   RO   RP   R	   R^   R   RG   R   R   R(   R6   R   R   (   R$   R   R   RS   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s     c      
   C  s   |  j  |  j } } d } t t j j | d   } t d d | | d <t d d | | d <t j | j	 t j j
 |  d k d f <| j d d	 t d
 t t j t   | j d d | d | Wd  QXd  S(   Ni
   i   s   1/1/2012R   R   s   1/1/2014R   g      ?R   R   s   index < 20130101 < dates3R   R   (   R   R   R   RI   RO   RP   R	   R^   R   R   R   R   R   R   R0   R   R(   (   R$   R   R   RS   R!   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s    (c   	      C  s  d d l  m } |  j } |  j } d } t j d d | d | } | d k sU t  t t j	 j
 d d	   } t t j	 j
 d d	   } t j t   | j d
 d | d | Wd  QXt j |   | j d d | d | Wd  QX| | d k | d k @} t j d d | d | } t | |  | | d k | d k @| | d k d k @} t j d d | d | } t | |  d  S(   Ni(   R   i   s   x + 1R   R   i   i   i   s   (@df>0) & (@df2>0)s   (df>0) & (df2>0)i    s   df[(df > 0) & (df2 > 0)]s+   df[(df > 0) & (df2 > 0) & (df[df > 0] > 0)](   R   R   R   R   R^   R)   Rf   R   RI   RO   RP   R   R0   R   R(   R   (	   R$   R   R   R   R   R+   R!   R   RX   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s(    			.(
   R3   R4   R   R   R   R   R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR     s   					t   TestDataFrameQueryPythonPandasc           B  s    e  Z e d     Z d   Z RS(   c         C  s8   t  t |   j   d |  _ d |  _ t   j |  _ d  S(   NR   R   (   R   R   R   R   R   R   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   %  s    		c         C  s   |  j  |  j } } d } } t t j j | d | d f d t d  } d | j _ | | j d k } | j	 d d	 | d
 | } t
 | |  d  S(   Ni
   Rm   i   R7   R   R   i   s   sin > 5R   R   (   R   R   R   RI   RO   R   RF   R6   Rs   R(   R   (   R$   R   R   RS   RT   R!   RX   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   ,  s    
0(   R3   R4   R   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   #  s   t   TestDataFrameQueryPythonPythonc           B  s    e  Z e d     Z d   Z RS(   c         C  s6   t  t |   j   d |  _ |  _ t   j |  _ d  S(   NR   (   R   R   R   R   R   R   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   :  s    c         C  s   |  j  |  j } } d } } t t j j | d | d f d t d  } d | j _ | | j d k } | j	 d d	 | d
 | } t
 | |  d  S(   Ni
   Rm   i   R7   R   R   i   s   sin > 5R   R   (   R   R   R   RI   RO   R   RF   R6   Rs   R(   R   (   R$   R   R   RS   RT   R!   RX   R+   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   @  s    
0(   R3   R4   R   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   8  s   t   TestDataFrameQueryStringsc           B  sY   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(	   c         C  s!  t  t j j d d  d d g } t t d   | d <| | j d k } | d k r)d } d	 } | g d
 | g d
 } | d  d  d  } d \ }	 }
 d
 |	 g |
 g } xjt | | |  D]_ \ } } } d j d | d | d |  } t	 j
 t | j | d | d | d i | j d 6q Wn | j d d | d | } t | |  | j d d | d | } t | |  t | | | j j d g   | | j d k } | j d d | d | } t | |  | j d d | d | } t | |  t | | | j j d g   d  S(   Ni
   i   R7   R[   t
   aabbccddeet   stringsRZ   R   s   "a"i   is   ==s   !=s   {lhs} {op} {rhs}t   lhsRE   t   rhsR   R   t
   local_dicts   "a" == stringss   strings == "a"s   strings != "a"s   "a" != strings(   s   ==s   !=(   R   RI   RO   RP   R   RF   R   R   R   R   R0   R   R(   R   Rw   (   R$   R   R   R!   R   t   colt   lstR   R   R   R   R   RE   t   exR   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_str_query_methodN  s4    $" c         C  s  t  t j j d d  d d g } t t d   | d <| | j j d d g  } | d k r/d } d	 } | g d
 | g d
 } | d  d  d  } d \ }	 }
 d
 |	 g |
 g } x0t | | |  D]\ \ } } } d j	 d | d | d |  } t
 j t   | j | d | d | Wd  QXq Wn | j d d | d | } t | |  | j d d | d | } t | |  | | j j d d g  } | j d d | d | } t | |  | j d d | d | } t | |  d  S(   Ni
   i   R7   R[   R   R   RZ   R   s
   ["a", "b"]i   is   ==s   !=s   {lhs} {op} {rhs}R   RE   R   R   R   s   strings == ["a", "b"]s   ["a", "b"] == stringss   strings != ["a", "b"]s   ["a", "b"] != strings(   s   ==s   !=(   R   RI   RO   RP   R   RF   R   Rw   R   R   R   R0   R   R(   R   (   R$   R   R   R!   R   R   R   R   R   R   R   R   RE   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_str_list_query_methodr  s6    $"&				c         C  s[  t  i t d  d 6t d  d 6t j j d d d d 6t j j d	 d d d
 6 } | d k r | j d d | d | } | | j j | j  } t	 | |  | j d d | d | } | | j j | j  | j
 | j k  @} t	 | |  n^ t j t   | j d d | d | Wd  QXt j t   | j d d | d | Wd  QXd  S(   Nt   aaaabbbbccccRZ   t   aabbccddeeffR[   i   Rm   i   R   i	   R   R   s   a in bR   R   s   a in b and c < d(   R   RF   RI   RO   R   R(   RZ   Rw   R[   R   R   R   R   R0   R   (   R$   R   R   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_with_string_columns  s    )c         C  s   t  i t d  d 6t d  d 6t j j d d d d 6t j j d	 d d d
 6 } | j d d | d | } | | j | j k } t | |  | j d d | d | } | | j | j k } t | |  d  S(   NR   RZ   R   R[   i   Rm   i   R   i	   R   s   a == bR   R   s   a != b(	   R   RF   RI   RO   R   R(   RZ   R[   R   (   R$   R   R   R!   R   R{   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_object_array_eq_ne  s    c         C  sy   t  |  d } t j t |  d d d d d d g } | | j d k } | j d	 d
 | d | } t | |  d  S(   NsI  id          event          timestamp
        1   "page 1 load"   1/1/2014 0:00:01
        1   "page 1 exit"   1/1/2014 0:00:31
        2   "page 2 load"   1/1/2014 0:01:01
        2   "page 2 exit"   1/1/2014 0:01:31
        3   "page 3 load"   1/1/2014 0:02:01
        3   "page 3 exit"   1/1/2014 0:02:31
        4   "page 1 load"   2/1/2014 1:00:01
        4   "page 1 exit"   2/1/2014 1:00:31
        5   "page 2 load"   2/1/2014 1:01:01
        5   "page 2 exit"   2/1/2014 1:01:31
        6   "page 3 load"   2/1/2014 1:02:01
        6   "page 3 exit"   2/1/2014 1:02:31
        t   seps   \s{2,}R   R   t   parse_datest	   timestamps   "page 1 load"s   '"page 1 load"' in eventR   (   R   R^   t   read_csvR   t   eventR(   R   (   R$   R   R   t   rawR!   RX   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_with_nested_strings  s    
	c         C  su   t  |  t i d d d g d 6d d d g d 6 } | j d d | d	 | } | | j d k } t | |  d  S(
   NRZ   R[   s   test & testi   i   i   s   a == "test & test"R   R   (   R   R   R(   RZ   R   (   R$   R   R   R!   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt(   test_query_with_nested_special_character  s    
c         C  s   d d  l  } t t j j t d  d   } t t j | j   } t i | d 6| d 6 } i | j	 d 6| j
 d 6| j d 6| j d	 6} x\ | j   D]N \ } }	 | j d
 | d | d | }
 | |	 | j d  } t |
 |  q Wd  S(   Nit   abcdei   t   Xt   YR   R   s   <=s   >=s   X %s "d"R   R   R   (   R   R   RI   RO   Rt   RF   R   Rm   R   t   ltt   gtt   let   geR   R(   R  R   (   R$   R   R   t   oprRZ   R[   R!   R   RE   t   funcR   RX   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_query_lex_compare_strings  s    !.c         C  s   d } t  j j d d d t |  f j t  } t | d | } | j d	 d
 | d | } | | j | j	 @} t
 | |  d  S(   Nt   bidt   bidsizet   askt   asksizei   Rm   i   R7   s	   bid & askR   R   (   R  R  R  R  (   RI   RO   R   R   t   astypet   boolR   R(   R  R  R   (   R$   R   R   R7   t   dataR!   R   RX   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt"   test_query_single_element_booleans  s    -c         C  s   t  |  t j i d d d d g d 6d d d d g d 6 } | | j d k } d } | j d	 d
 | d | } t | |  d  S(   Ns   BUD USs   IBM USt   Symbolgl[@gGzn[@gf@g33333f@t   Prices   Symbol == @symbR   R   (   R   R^   R   R  R(   R   (   R$   R   R   R!   t   et   symbR   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt!   test_query_string_scalar_variable  s    
(   R3   R4   R   R   R   R   R   R   R
  R  R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR   L  s   	$	&						t   TestDataFrameEvalWithFramec           B  sV   e  Z d    Z d   Z d   Z d   Z e j j d d d d d g  d	    Z	 RS(
   c         C  s.   t  t j j d d  d t d  |  _ d  S(   Ni
   i   R7   R   (   R   RI   RO   RP   RF   R   (   R$   R%   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR&     s    c         C  s
   |  `  d  S(   N(   R   (   R$   R%   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   teardown_method  s    c         C  sE   |  j  j d d | d | } |  j  j |  j  j } t | |  d  S(   Ns   a + bR   R   (   R   R)   RZ   R[   R   (   R$   R   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_simple_expr   s    c         C  sU   |  j  j d d | d | } |  j  j |  j  j d k  |  j  j } t | |  d  S(   Ns   a[a < 1] + bR   R   i   (   R   R)   RZ   R[   R   (   R$   R   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   test_bool_arith_expr  s    &RE   R9   R<   R?   RB   c      
   C  sn   t  i d d g d 6d d g d 6 } d } t j t d | ' | j d	 j |  d
 | d | Wd  QXd  S(   Ni   i   RZ   R   R   R[   s3   unsupported operand type\(s\) for .+: '.+' and '.+'R]   s   a {0} bR   R   (   R   R   R0   R   R)   R   (   R$   R   R   RE   R!   R`   (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt%   test_invalid_type_for_operator_raises
  s    &(
   R3   R4   R&   R  R  R  R   R   t   parametrizeR  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyR    s
   				(3   t
   __future__R    R   t   numpyRI   R   t   pandas.compatR   R   R   R   t   pandas.util._test_decoratorst   utilt   _test_decoratorst   tdR   R^   R   R   R   R   R	   t   pandas.core.computation.checkR
   t   pandas.tests.frame.commonR   t   pandas.util.testingt   testingR   R   R   R   R   t   PARSERSR   t   skip_if_no_net   ENGINESt   fixtureR   R   R   t   objectR   R5   Rj   R   R   R   R   R   R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/frame/test_query_eval.pyt   <module>   s8   "($$	0L	 P	d