
x\c           @   so  d  d l  m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l m	 Z	 m
 Z
 m Z d  d l Z d  d l m Z m Z d  d l m Z d  d l j j Z d  d l m Z m Z m Z d  d l Z d  d l m Z m Z m Z m Z d  d	 l  m! Z! d  d
 l" m# Z# d  d l$ m% Z% m& Z& d  d l' j( j) j* Z* d  d l' m+ Z+ m, Z, d  d l- m. Z. m/ Z/ d  d l0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 d  d l7 j j8 Z9 d  d l7 m: Z: m; Z; m< Z< m= Z= m> Z? m@ Z@ e4 ZA d d f ZB e jC d d   e& D  d    ZD e jC d e* jE  d    ZF e jC d    ZG e jC d    ZH d   ZI d   ZJ d   ZK d   ZL d   ZM d   ZN eO e1  jP e5  ZQ e jR d eS f d     Y ZT e jR d  eT f d!     Y ZU d" eU f d#     YZV d$ eV f d%     YZW d&   ZX d' eS f d(     YZY d)   ZZ d*   Z[ d+ eS f d,     YZ\ e jR d- eS f d.     Y Z] e jR d/ e] f d0     Y Z^ d1 e^ f d2     YZ_ d3 e] f d4     YZ` e jR d5 eS f d6     Y Za d7 ea f d8     YZb d9 ea f d:     YZc d; ea f d<     YZd e d=  Ze d> eS f d?     YZf e jR d@    Zg e jR dA    Zh i e, dB 6e! ji dC 6e+ dD 6ZE e jj jk dE e&  e jj jk dF eE  dG     Zl dH   Zm dI   Zn dJ   Zo dK   Zp dL   Zq dM   Zr dN   Zs e jj jk dO dP dQ f  e jj jk dR et eu f  e jj jk dS et eu f  dT      Zv dU   Zw dV   Zx dW eS f dX     YZy d S(Y   i(   t   LooseVersion(   t   productN(   t   randt   randintt   randn(   t   PY3t   reduce(   t   PerformanceWarning(   t   is_boolt   is_list_liket	   is_scalar(   t	   DataFramet   Panelt   Seriest
   date_range(   t   pytables(   t   _NUMEXPR_VERSION(   t   NumExprClobberingErrort   _engines(   t   PandasExprVisitort   PythonExprVisitor(   t   _NUMEXPR_INSTALLEDt   _USE_NUMEXPR(   t   _arith_ops_symst   _binary_math_opst   _binary_ops_dictt   _bool_ops_symst   _special_case_arith_ops_symst   _unary_math_ops(   t   assert_frame_equalt   assert_numpy_array_equalt   assert_produces_warningt   assert_series_equalt   makeCustomDataframet   randboolt   ins   not int   paramsc         c   sU   |  ]K } t  j | d  t  j j | d k o. t d d j d t d t  Vq d S(   t   markst   numexprt   reasons2   numexpr enabled->{enabled}, installed->{installed}t   enabledt	   installedN(   t   pytestt   paramt   markt   skipifR   t   formatR   (   t   .0t   engine(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pys	   <genexpr>&   s   c         C   s   |  j  S(   N(   R+   (   t   request(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR0   %   s    
c         C   s   |  j  S(   N(   R+   (   R1   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   parser2   s    c           C   s,   t  r( t t d  k r( t j d  n  d S(   Ns   2.6.9s   numexpr is >= 2.6.9R&   (   R   R   R    R*   t   skip(    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   ne_lt_2_6_97   s    c           C   sD   t  r3 t t d  k r t St d   t D  Sn t j d  d  S(   Ns   2.6.9c         s   s!   |  ] } | d k r | Vq d S(   t   floort   ceilN(   R5   R6   (    (   R/   t   x(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pys	   <genexpr>D   s    s   numexpr is not present(   R   R   R    R   t   tupleR*   R3   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   unary_fns_for_ne>   s
    c         C   s   t  |  j S(   N(   R   t   has_neg_frac(   R0   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   engine_has_neg_fracJ   s    c         C   sl   t  | } t |  r_ y | |  |  SWq_ t k
 r[ } t |  j d  rU t j S  q_ Xn  | |  |  S(   Ns6   negative number cannot be raised to a fractional power(   R   R;   t
   ValueErrort   strt
   startswitht   npt   nan(   t   lhst   cmp1t   rhsR0   t   ct   e(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   _eval_single_binN   s    

c         C   s^   t  |  t  r0 t  | t j  r0 | j d k p] t  | t  o] t  |  t j  o] |  j d k S(   Ni   (   t
   isinstanceR   R?   t   ndarrayt   ndim(   RA   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   _series_and_2d_ndarray[   s    !c         C   s:   t  |  t  r t  | t  p9 t  | t  o9 t  |  t  S(   N(   RG   R   R   (   RA   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   _series_and_frameb   s    c         C   s%   t  |  t  o$ t  | t j j j  S(   N(   RG   t   boolt   pdt   coret   generict   NDFrame(   RA   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   _bool_and_frameg   s    c         C   s+   t  o* t | t t j f  o* t j |   S(   N(   R   RG   t   complexR?   t   complexfloatingt   isnan(   t   resultt   expected(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   _is_py3_complex_incompatk   s    t   TestEvalNumexprPandasc           B   s  e  Z e d     Z e d    Z d   Z d   Z d   Z d   Z e	 j
 j d    Z d   Z e	 j
 j d    Z d	   Z d
   Z e j d    Z e	 j
 j d    Z e	 j
 j d    Z e	 j
 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 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)   Z0 RS(*   c         C   s+   d d  l  } | |  _ d |  _ d |  _ d  S(   NiR&   t   pandas(   R&   t   neR0   R2   (   t   clsRZ   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   setup_classv   s    		c         C   s(   |  `  |  ` t |  d  r$ |  ` n  d  S(   NRZ   (   R0   R2   t   hasattrRZ   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   teardown_class}   s    c         C   s.  t  t d d   } t j | | d k <t  t d d   } t j | | d k <t  t d d   t t d   t d d t j t j d g  | f |  _ t  t d d   t t d   t d d t j t j d g  | f |  _ t   f |  _ t   f |  _	 |  j |  j |  _
 |  j |  j	 |  _ d  S(   Ni
   i   g      ?i   i   (   R   R   R?   R@   R   R   t   pandas_lhsest   pandas_rhsest   scalar_lhsest   scalar_rhsest   lhsest   rhses(   t   selft   nan_df1t   nan_df2(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt
   setup_data   s    !*!*c         C   sP   t  j |  _ |  j d  d  d  |  _ t  j |  _ t |  _ t |  _	 d |  _
 d  S(   Nit   -t   ~s   not (   Ri   Rj   s   not (   t   exprt   _cmp_ops_symst   cmp_opst   cmp2_opsR   t   bin_opsR   t   special_case_opst   _good_arith_opst	   arith_opst	   unary_ops(   Re   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt	   setup_ops   s    		c            s3     j      j   t   f d   t    _ d  S(   Nc            s   |    j  k S(   N(   R0   (   R7   (   Re   (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   <lambda>   s    (   Rt   Rh   t   filterR   t   current_engines(   Re   t   method(    (   Re   sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   setup_method   s    

c         C   s.   |  `  |  ` |  ` |  ` |  ` |  ` |  ` d  S(   N(   Rc   Rd   Rb   Ra   R`   R_   Rw   (   Re   Rx   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   teardown_method   s    c         C   sd   d } d } xQ t  |  j | |  j |  j |  D]. \ } } } } } |  j | | | | |  q. Wd  S(	   Ns   !=s   ==s   <=s   >=t   <t   >(   s   !=s   ==s   <=s   >=R{   R|   (   R|   R{   (   R   Rc   Rd   Ro   t   check_complex_cmp_op(   Re   Rm   Rn   RA   RB   RC   t   binopt   cmp2(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_complex_cmp_ops   s    c         C   s   t  t d d   t t d   t   f } t  t d d   t t d   t   f } x9 t | | |  j  D]" \ } } } |  j | | |  qp Wd  S(   Nt   sizei
   i   (   i
   i   (   i   (   i
   i   (   i   (   R   R"   R   R   Rm   t   check_simple_cmp_op(   Re   t
   bool_lhsest
   bool_rhsesRA   RC   t   cmp_op(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_simple_cmp_ops   s    %c         C   sF   x? t  |  j |  j |  j  D]" \ } } } |  j | | |  q Wd  S(   N(   R   Rc   Rr   Rd   t   check_binary_arith_op(   Re   RA   t   opRC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_binary_arith_ops   s    +c         C   s=   x6 t  |  j |  j  D] \ } } |  j | d |  q Wd  S(   Nt   %(   R   Rc   Rd   t   check_modulus(   Re   RA   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_modulus   s    "c         C   s=   x6 t  |  j |  j  D] \ } } |  j | d |  q Wd  S(   Ns   //(   R   Rc   Rd   t   check_floor_division(   Re   RA   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_floor_division   s    "c         C   s=   x6 t  |  j |  j  D] \ } } |  j | d |  q Wd  S(   Ns   **(   R   Rc   Rd   t	   check_pow(   Re   RA   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_pow   s    "c         C   sF   x? t  |  j |  j |  j  D]" \ } } } |  j | | |  q Wd  S(   N(   R   Rc   Rm   Rd   t   check_single_invert_op(   Re   RA   R   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_single_invert_op   s    +c         C   sF   x? t  |  j |  j |  j  D]" \ } } } |  j | | |  q Wd  S(   N(   R   Rc   Rm   Rd   t   check_compound_invert_op(   Re   RA   R   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_compound_invert_op   s    +c         C   sd   |  j  } d } xN t |  j  | | | |  j  D]. \ } } } } } |  j | | | | |  q. Wd  S(   NR{   R|   (   R{   R|   (   Rc   R   Rd   t   check_chained_cmp_op(   Re   t   midsRm   RA   RB   t   midR   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_chained_cmp_op   s
    	%c         C   s   t  | t  r" t j | |  nY t  | t  rD t j | |  n7 t  | t j  ri t j | |  n | | k s{ t	  d  S(   N(
   RG   R   t   tmR   R   R    R?   RH   R   t   AssertionError(   Re   RU   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   check_equal   s    c         C   sy  t  } d j d | d | d |  } t |  oE | | k pE | | k } | r t j t  $ t j | d |  j d |  j	 Wd  QXt j t  8 t j | d |  j d |  j	 d i | d 6| d	 6Wd  QXn t
 | | | |  j  }	 t
 | | | |  j  }
 t |	 t  r,t |
 t  r,| t k r,nI t
 |	 | |
 |  j  } t j | d |  j d |  j	 } |  j | |  d  S(
   Ns)   (lhs {cmp1} rhs) {binop} (lhs {cmp2} rhs)RB   R~   R   R0   R2   t
   local_dictRA   RC   (   t   _scalar_skipR.   R
   R*   t   raisest	   TypeErrorRM   t   evalR0   R2   RF   RG   R   R   t   _series_frame_incompatibleR   (   Re   RA   RB   RC   R~   R   t
   skip_theset   ext   scalar_with_in_notint   lhs_newt   rhs_newRV   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR}      s,    	%!c            s     f d   } | | | |  } | | | |  } | d  k	 r | d  k	 r d j | |  }	 d j | |  }
 d j | |  } t | d |   j  } xK |	 |
 | f D]7 } t j | d   j d   j } t j | |  q Wn  d  S(   Nc            s   t  |  | |   j  S(   N(   RF   R0   (   t   leftt   rightR   (   Re   (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   check_operands  s    s   lhs {0} mid {1} rhss   lhs {0} mid and mid {1} rhss   (lhs {0} mid) & (mid {1} rhs)t   &R0   R2   (	   t   NoneR.   RF   R0   RM   R   R2   R   t   assert_almost_equal(   Re   RA   RB   R   R   RC   R   R   R   t   ex1t   ex2t   ex3RV   R   RU   (    (   Re   sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   
  s    c         C   s   d j  |  } | d	 k rg t |  rg t j t t j | d |  j d |  j d i | d 6| d 6nI t	 | | | |  j  } t j | d |  j d |  j } |  j
 | |  d  S(
   Ns   lhs {0} rhsR#   s   not inR0   R2   R   RA   RC   (   R#   s   not in(   R.   R	   R*   R   R   RM   R   R0   R2   RF   R   (   Re   RA   RB   RC   R   RV   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s    !c         C   s   d j  |  } t j | d |  j d |  j } t | | | |  j  } t j | |  d j  |  } t j | d |  j d |  j } t | | | |  j  } |  j | | | |  d  S(   Ns   lhs {0} rhsR0   R2   s   lhs {0} rhs {0} rhs(	   R.   RM   R   R0   R2   RF   R   R   t   check_alignment(   Re   RA   t   arith1RC   R   RU   RV   t   nlhs(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   )  s    !!c         C   sh   y | j  |  \ } } Wn t t t f k
 r5 n/ X|  j j d j |   } t j | j	 |  d  S(   Ns   nlhs {0} ghs(
   t   alignR<   R   t   AttributeErrorRZ   t   evaluateR.   R   R   t   values(   Re   RU   R   t   ghsR   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   5  s    c         C   s   d j  |  } t j | d |  j d |  j } | | } t j | |  |  j j d j  |   } t	 | t
 t f  r t j | j |  n t j | | j    d  S(   Ns   lhs {0} rhsR0   R2   s   expected {0} rhs(   R.   RM   R   R0   R2   R   R   RZ   R   RG   R   R   R   t   item(   Re   RA   R   RC   R   RU   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   D  s    !
c      
   C   s   d j  |  } |  j d k r\ t j | d |  j d |  j } | | } |  j | |  n< t j t t j | d i | d 6| d 6d |  j d |  j d  S(   Ns   lhs {0} rhst   pythonR0   R2   R   RA   RC   (	   R.   R0   RM   R   R2   R   R*   R   R   (   Re   RA   R   RC   R   t   resRV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   P  s    !
c         C   s   y t  | d | |  j  } Wn\ t k
 rz } t |  j d  rt |  j d k rh t j t |   qw t j } q{   n X| S(   Ns   **s6   negative number cannot be raised to a fractional powerR   (	   RF   R0   R<   R=   R>   R*   R3   R?   R@   (   Re   RA   RC   RV   RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   get_expected_pow_result\  s    c         C   s   d j  |  } |  j | |  } t j | d |  j d |  j } t |  r t |  r t | |  r t j	 t
 t j | |  nn t j | |  d j  |  } t j | d |  j d |  j } |  j |  j | |  |  } t j | |  d  S(   Ns   lhs {0} rhsR0   R2   s   (lhs {0} rhs) {0} rhs(   R.   R   RM   R   R0   R2   R
   RW   R*   R   R   R   R   R   (   Re   RA   R   RC   R   RV   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   j  s    !!c   	   
   C   s   x | | f D] } y | j  t  } Wn) t k
 rQ t j t |  g  } n X| } t j d d |  j d |  j } t	 j
 | |  x9 |  j D]. } t	 j
 | t j d d | d |  j  q Wq Wd  S(   Ns   ~elbR0   R2   (   t   astypeRL   R   R?   t   arrayRM   R   R0   R2   R   R   Rw   (	   Re   RA   RB   RC   t   elt   elbRV   RU   R0   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   |  s    !c   
      C   sT  d
 } d j  |  } t |  rl | | k rl t j t t j | d |  j d |  j d i | d 6| d 6n t |  r t |  r t	 d	   | | f  \ } } n  t
 | | | |  j  } t |  r | } n | } t j | d |  j d |  j } t j | |  xB |  j D]7 } t j | d |  j d |  j }	 t j |	 |  qWd  S(   NR#   s   not ins   ~(lhs {0} rhs)R0   R2   R   RA   RC   c         S   s   t  j |  g  S(   N(   R?   R   (   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu     s    (   R#   s   not in(   R.   R
   R*   R   R   RM   R   R0   R2   t   mapRF   R   R   Rw   (
   Re   RA   RB   RC   R   R   RV   RU   R0   t   ev(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s"    !
!!RA   c         C   s   d j  | |  S(   Ns   {0}{1}(   R.   (   Re   R   t   var_name(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s    c         C   s=  |  j  d  } t t d d   } |  j d k rm t j t  & t j | d |  j d |  j	 } Wd  QXn7 t j t
  & t j | d |  j d |  j	 } Wd  QXt t d d d  } |  j d k rt j t  & t j | d |  j d |  j	 } Wd  QXn5 | } t j | d |  j d |  j	 } t | |  t t d d  d k  } | } t j | d |  j d |  j	 } t | |  t i d	 d
 d g d 6t d  d k d 6 } |  j d k rt j t  & t j | d |  j d |  j	 } Wd  QXn7 t j t
  & t j | d |  j d |  j	 } Wd  QXd  S(   NRj   i   i   R&   R0   R2   R   g      ?t   ai   g       @t   bi   RD   (   i   i   (   R   R   R   R0   R*   R   t   NotImplementedErrorRM   R   R2   R   R   R   R   R<   (   Re   Rk   RA   RU   t   expect(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_frame_invert  s0    *'*!!/*c         C   s  |  j  d  } t t d   } |  j d k rj t j t  & t j | d |  j d |  j	 } Wd  QXn7 t j t
  & t j | d |  j d |  j	 } Wd  QXt t d d d  } |  j d k rt j t  & t j | d |  j d |  j	 } Wd  QXn5 | } t j | d |  j d |  j	 } t | |  t t d  d k  } | } t j | d |  j d |  j	 } t | |  t d d	 d
 g  } |  j d k rt j t  & t j | d |  j d |  j	 } Wd  QXn7 t j t
  & t j | d |  j d |  j	 } Wd  QXd  S(   NRj   i   R&   R0   R2   R   g      ?R   i   g       @(   R   R   R   R0   R*   R   R   RM   R   R2   R   R   R    R   R<   (   Re   Rk   RA   RU   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_series_invert  s0    *'*!!*c      
   C   sC  |  j  d  } t t d d   } | } t j | d |  j d |  j } t | |  t t d d d	  } | } t j | d |  j d |  j } t | |  t t	 d d  d k  } |  j d k r
t
 j t  & t j | d |  j d |  j } Wd  QXn5 | } t j | d |  j d |  j } t | |  d  S(
   NRi   i   i   R0   R2   R   g      ?R&   (   i   i   (   R   R   R   RM   R   R0   R2   R   R   R   R*   R   R   (   Re   Rk   RA   R   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_frame_negate  s     !!*!c      
   C   s=  |  j  d  } t t d   } | } t j | d |  j d |  j } t | |  t t d d d  } | } t j | d |  j d |  j } t | |  t t	 d  d k  } |  j d k rt
 j t  & t j | d |  j d |  j } Wd  QXn5 | } t j | d |  j d |  j } t | |  d  S(   NRi   i   R0   R2   R   g      ?R&   (   R   R   R   RM   R   R0   R2   R    R   R   R*   R   R   (   Re   Rk   RA   R   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_series_negate  s     !!*!c         C   s   |  j  d  } t t d d   } | } t j | d |  j d |  j } t | |  t t d d d  } | } t j | d |  j d |  j } t | |  t t	 d d  d k  } | } t j | d |  j d |  j } t | |  d  S(	   Nt   +i   i   R0   R2   R   g      ?(   i   i   (
   R   R   R   RM   R   R0   R2   R   R   R   (   Re   Rk   RA   R   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_frame_pos+  s    !!!c         C   s   |  j  d  } t t d   } | } t j | d |  j d |  j } t | |  t t d d d  } | } t j | d |  j d |  j } t | |  t t	 d  d k  } | } t j | d |  j d |  j } t | |  d  S(   NR   i   R0   R2   R   g      ?(
   R   R   R   RM   R   R0   R2   R    R   R   (   Re   Rk   RA   R   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_series_pos@  s    !!!c      
   C   s0  t  j t  $ t j d d |  j d |  j Wd  QXt j d d |  j d |  j d k sb t  t j d d |  j d |  j d 
k s t  t j d d |  j d |  j d k s t  t j d
 d |  j d |  j d k s t  t j d d |  j d |  j d	 
k st  t j d d |  j d |  j t k sFt  t j d d |  j d |  j t	 k stt  t j d d |  j d |  j t k st  t j d d |  j d |  j t	 k st  t j d d |  j d |  j t 
k st  t j d d |  j d |  j t	 
k s,t  d  S(   Ns   ~1.0R0   R2   s   -1.0g      s   +1.0g      ?s   ~1i   s   -1is   +1s   ~Trues   ~Falses   -Trues   -Falses   +Trues   +Falsei(
   R*   R   R   RM   R   R0   R2   R   t   Truet   False(   Re   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_scalar_unaryU  s0    %c         C   sW   t  t j d  t j t t t t 
t t t t 
d d d d 
g d t j  d  S(   NsK   [-True, True, ~True, +True,-False, False, ~False, +False,-37, 37, ~37, +37]ii%   t   dtypei(   R   RM   R   R?   R   R   R   t   object_(   Re   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_unary_in_arrayp  s
    c         C   s   d } | d 7} | d 7} | d 7} | d 7} t  j j d  d	 d
 t t d d
   f \ } } } } xC | D]; } t j t  $ t j | d |  j	 d |  j
 Wd  QXqn Wd  S(   Ns   1 or 2s   1 and 2s   a and bs   a or bs   1 or 2 and (3 + 2) > 3s   2 * x > 2 or 1 and 2s   2 * df > 3 and 1 or ai   i   i   R0   R2   (   s   1 or 2s   1 and 2(   s   a and bs   a or b(   s   1 or 2 and (3 + 2) > 3(   s   2 * x > 2 or 1 and 2(   s   2 * df > 3 and 1 or a(   R?   t   randomR   R   R*   R   R   RM   R   R0   R2   (   Re   t   exprsR7   R   R   t   dfR   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_disallow_scalar_bool_opsz  s    



9c         C   s  d } t  j d d |  j d |  j } | d k s9 t  t |  sK t  d } t  j d d |  j d |  j } | d k s t  t |  s t  t } t  j d d |  j d |  j } | s t  t |  s t  t |  s t  t j	 d g  } t  j d d |  j d |  j } t
 j | t j	 d g   | j d k sRt  t j	 d g  } t  j d d |  j d |  j } t
 j | t j	 d g   | j d k st  t j	 t g  } t  j d d |  j d |  j } t
 j | t j	 t g   | j d k st  d  S(	   Ni   R7   R0   R2   g      ?(   i   (   i   (   i   (   RM   R   R0   R2   R   R
   R   R   R?   R   R   R   t   shape(   Re   R7   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_identical  s2    !!!!!!c         C   s=   d } t  j | d |  j d |  j } | d k s9 t  d  S(   Ns   1 + 2 *         5 - 1 + 2 R0   R2   i   (   RM   R   R0   R2   R   (   Re   t   expRU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_line_continuation  s    !c         C   s   d } t  j | d |  j d |  j } t j |  } | | k sH t  t  j i d d d g d 6 } d } | j d	 |  } | j	 s t  d
 } | j d |  } | j
 d d g d  d   f } t j | |  d } | j d |  } | j
 d g d  d   f } t j | |  d  S(   Ns   1000000000.006R0   R2   g~  eAg$  eAg'1  eAt   Ag  eAs   A < %.4fg   eAs   A > %.4fi   i   s	   A == %.4f(   RM   R   R0   R2   R?   t   float64R   R   t   queryt   emptyt   locR   R   (   Re   R   RU   RV   R   t   cutofft   exact(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_float_truncation  s$    !c         C   s   t  j d d d g g d d d d g } d } t j t d |  | j d  Wd  QXt  j   } d	 | j _ t j t d |  | j d
  Wd  QXd  S(   Ni    t   columnst   foot   bart   classs4   Python keyword not valid identifier in numexpr queryt   matchs
   class == 0t   lambdas   lambda == 0(   RM   R   R*   R   t   SyntaxErrorR   t   indext   name(   Re   R   t   msg(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_disallow_python_keywords  s    *(1   t   __name__t
   __module__t   classmethodR\   R^   Rh   Rt   Ry   Rz   R*   R,   t   slowR   R   R   R   R   t   tdt   skip_if_windowsR   R   R   R   R   R}   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRX   s   sR   									
	&											'	+						
		!		t   TestEvalNumexprPythonc           B   s)   e  Z e d     Z d   Z d   Z RS(   c         C   s>   t  t |   j   d d  l } | |  _ d |  _ d |  _ d  S(   NiR&   R   (   t   superR   R\   R&   RZ   R0   R2   (   R[   RZ   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s
    		c         C   s   t  t d   t j   |  _ |  j d  d  d  |  _ g  t j D] } | d k rA | ^ qA |  _ t |  _	 t
 |  _ d	 |  _ d  S(
   Nc         S   s
   |  d k S(   NR#   s   not in(   R#   s   not in(    (   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu     s    it   andt   orR   Ri   Rj   (   R   R   (   R   Ri   Rj   (   t   listRv   Rk   Rl   Rm   Rn   R   Ro   R   Rp   Rq   Rr   Rs   (   Re   t   s(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRt     s    		c      
   C   sK   d j  | |  } t j t  $ t j | d |  j d |  j Wd  QXd  S(   Ns   lhs {0} mid {1} rhsR0   R2   (   R.   R*   R   R   RM   R   R0   R2   (   Re   RA   RB   R   R   RC   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s    (   R   R   R   R\   Rt   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s   	
t   TestEvalPythonPythonc           B   s)   e  Z e d     Z d   Z d   Z RS(   c         C   s)   t  t |   j   d |  _ d |  _ d  S(   NR   (   R   R   R\   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s    	c         C   sv   d j  |  } t j | d |  j d |  j } | | } t j | |  t | | | |  j  } t j | |  d  S(   Ns   lhs {0} rhsR0   R2   (   R.   RM   R   R0   R2   R   R   RF   (   Re   RA   R   RC   R   RU   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s    !
c         C   s_   y | j  |  \ } } Wn t t t f k
 r5 n& Xt d j |   } t j | |  d  S(   Ns   nlhs {0} ghs(   R   R<   R   R   R   R.   R   R   (   Re   RU   R   R   R   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR      s    (   R   R   R   R\   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s   	
t   TestEvalPythonPandasc           B   s    e  Z e d     Z d   Z RS(   c         C   s)   t  t |   j   d |  _ d |  _ d  S(   NR   RY   (   R   R   R\   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s    	c         C   s    t  j |  | | | | |  d  S(   N(   RX   R   (   Re   RA   RB   R   R   RC   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s    (   R   R   R   R\   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR     s   c          O   s   t  j j   S(   N(   R?   R   R   (   t   argst   kwargs(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu     s    t   TestTypeCastingc           B   sV   e  Z e j j d  d d d d d g  e j j d e j e j g  d     Z RS(   R   R   Ri   t   *s   **t   /t   dtc         C   s   t  d d d t d | } d j |  } t j | d | d | } | j j | k s] t  | j j | k su t  t | t |   d j |  } t j | d | d | } | j j | k s t  | j j | k s t  t | t |   d  S(	   Ni   i   t
   data_gen_fR   s   df {} 3R0   R2   s   3 {} df(	   t   mkdft   fR.   RM   R   R   R   R   R   (   Re   R0   R2   R   R  R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_binop_typecasting!  s    (	   R   R   R*   R,   t   parametrizeR?   t   float32R   R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR      s   !c         C   s   t  |  j j t j  S(   N(   t
   issubclassR   t   typeR?   t
   datetime64(   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   _is_datetime7  s    c          G   sD   t  t t j d  |    } t t j t t |    } | oC | S(   Nt   is_monotonic(   t   anyR   t   operatort
   attrgetterR   t   xorR  (   R   t   not_monot   only_one_dt(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   should_warn;  s    t   TestAlignmentc           B   s   e  Z d Z e d Z d   Z d   Z d   Z e j j	 d    Z
 d   Z d	   Z d
   Z e j j	 d    Z d   Z RS(   t   it   uR  R   c         C   sK   d } t  d d d t } t j | d | d | } t | | d  d  S(	   Ns   df * ~2i   i   R  R0   R2   i   i(   R  R  RM   R   R   (   Re   R0   R2   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_align_nested_unary_opF  s    c   
      C   s  t  |  j |  j |  j  } t j d t   t j d t  x | D] \ } } } t d d d t	 d | d | } t d d d t	 d | d | } t
 | j | j  r t j t    t j d d	 | d
 | }	 Wd  QXn t j d d	 | d
 | }	 t |	 | |  qE WWd  QXd  S(   Nt   recordt   alwaysi
   R  t
   r_idx_typet
   c_idx_typei   s   df + df2R0   R2   (   R   t   lhs_index_typest   index_typest   warningst   catch_warningsR   t   simplefiltert   RuntimeWarningR  R  R  R   R   R   RM   R   R   (
   Re   R0   R2   R   t   lr_idx_typet   rr_idx_typeR  R   t   df2R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_basic_frame_alignmentL  s    		$c   	   
   C   s   t  |  j d d } x | D] \ } } t d d d t d | d | } t j d d | d	 | } t | | d k   t t | j	   d
 | j
 d | j } t j d d | d	 | } t | | | k   q Wd  S(   Nt   repeati   i
   R  R  R  s   df < 2R0   R2   R   R   s   df < df3(   R   R  R  R  RM   R   R   R   R   R   R   R   (	   Re   R0   R2   R   R  R  R   R   t   df3(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_frame_comparison^  s    	c         C   sM  t  |  j |  j |  j |  j  } t j d t  t j d t  x | D] \ } } } } t d d d t	 d | d | } t d d d t	 d | d | }	 t d	 d d t	 d | d | }
 t
 | j |	 j |
 j  rt j t    t j d
 d | d | } Wd  QXn t j d
 d | d | } t | | |	 |
  qK WWd  QXd  S(   NR  R  i   i   R  R  R  i   i   s   df + df2 + df3R0   R2   (   R   R  R  R  R   R   R!  R"  R  R  R  R   R   R   RM   R   R   (   Re   R0   R2   R   t   r1t   c1t   r2t   c2R   R%  R(  R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt#   test_medium_complex_frame_alignmentk  s    !!!c      	      s      f d   } t  |  j |  j d  } t j d t  ? t j d t  x' | D] \ } } } | | | |  qT WWd  QXd  S(   Nc      
      s  t  d d d t d |  d | } t | |  } t t j j d  | d   } t | j | j  r t	 j
 t    t j d d   d  } Wd  QXn t j d d   d  } |  d	 k s | d	 k r   d
 k r | j |  n | | } n
 | | } t | |  d  S(   Ni
   R  R  R  i   s   df + sR0   R2   R  R&   (   R  R  t   getattrR   R?   R   R   R  R   R   R   R"  RM   R   t   addR   (   R  R  t
   index_nameR   R   R   R   RV   (   R0   R2   (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   testit  s    	$(
R   R   R  R  (   R   R   (   R   R  R  R  R   R   R!  R"  (   Re   R0   R2   R2  R   R  R  R1  (    (   R0   R2   sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt!   test_basic_frame_series_alignment  s    	c      
      s      f d   } t  d d d g d d d g d
  } t j d t  ? t j d t  x' | D] \ } } } | | | |  q` WWd  QXt  d	 g d	 g d  } t j d t  ? t j d t  x' | D] \ } } } | | | |  q WWd  QXd  S(   Nc      
      s  t  d d d t d |  d | } t | |  } t t j j d  | d   } t | j | j  r t	 j
 t    t j d d   d	  } Wd  QXn t j d d   d	  } |  d
 k s | d
 k r   d k r | j |  n | | } n
 | | } t | |  d  S(   Ni
   i   R  R  R  i   s   s + dfR0   R2   R  R&   (   R  R  R/  R   R?   R   R   R  R   R   R   R"  RM   R   R0  R   (   R  R  R1  R   R   R   R   RV   (   R0   R2   (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR2    s    	$(
R  R  R   R   R   R  t   ignoreR  (   R   R   (   R   R   (   R   R  R   R   R!  R"  (   Re   R0   R2   R2  R   R  R  R1  (    (   R0   R2   sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt!   test_basic_series_frame_alignment  s    $c         C   s  t  |  j |  j d d  } t j d t  t j d t  xn| D]f\ } } } } t d d d t	 d	 | d
 | } t
 | |  }	 t t j j d  |	 d   }
 d j |  } d j |  } t | j |
 j  r>t j t    t j | d | d | } Wd  QXt j t    t j | d | d | } Wd  QXn6 t j | d | d | } t j | d | d | } | d k rE | d k rE | d k rt | |  qqE qE WWd  QXd  S(   NR   R   R   R   R  R  i
   R  R  R  i   s   s {0} dfs   df {0} sR0   R2   R  R&   (   R   R   (   R   R   (   R   R  R  R  R   R   R!  R"  R  R  R/  R   R?   R   R   R.   R  R   R   R   RM   R   R   (   Re   R0   R2   R   R  R  R   R1  R   R   R   RA   RC   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_series_frame_commutativity  s*    		!$c         C   s\  d d  l  } t |  j |  j |  j |  j  } d } d } d | } t j d t  t j d t  x| D]\ } }	 }
 } | j	 d d g  } | j	 d	 d
 g  } t
 | | d t d | d |
 } t
 | | d t d |	 d | } t t   j |  |  } t t j  j |  | |   } |	 d k s=| d k rh| d k r[| j |  } qr| | } n
 | | } | d k s|
 d k r| d k r| j |  } q| | } n
 | | } t | j | j | j  rt j t    t j d d | d | } Wd  QXn t j d d | d | } | j | j k sAt  t | |  qm WWd  QXd  S(   Nii   i   i   R  R  R   R   R   R%  R  R  R  R  R&   s   df2 + s + dfR0   R2   (   R   R   R  R  R  R   R   R!  R"  t   choiceR  R  R/  t   localst   getR   R?   R   R0  R  R   R   R   RM   R   R   R   R   (   Re   R0   R2   R   R   t   nt   m1t   m2R*  R,  R+  R-  R1  t   obj_nameR   R%  R   R   t	   expected2RV   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt#   test_complex_series_frame_alignment  s@    
!!

c         C   s  t  t d d   } t t d   } | d k r< t } n t } t |   t j d d | d | Wd  QXt t d   } t t   t j d d | d | Wd  QXt  t d d   } t t d   } t t   t j d d | d | Wd  QXt  t d d   } t t d   } | d k } | sAt } n t } t |   } t j d d | d | | st |  d	 k st	  t
 | d
 j  }	 d j d	 d t j | j | j d	   }
 |	 |
 k st	  n  Wd  QXd  S(   Ni  i
   i'  R&   s   df + sR0   R2   R   i   i    s   Alignment difference on axis {0} is larger than an order of magnitude on term {1!r}, by more than {2:.4g}; performance may sufferR   (   R   R   R   R   R   R   RM   R   t   lenR   R=   t   messageR.   R?   t   log10R   R   (   Re   R0   R2   R   R   t   seent   is_python_enginet   wrnt   wR   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt+   test_performance_warning_for_poor_alignment  s8    		&(   R  R  R  (   R   (   R   R   R  R  R  R&  R)  R*   R,   R   R.  R3  R5  R6  R?  RG  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR  A  s   
					$	-t   TestOperationsNumExprPandasc        
   B   s  e  Z e d     Z e d    Z d   Z d   Z d   Z d   Z e	 j
 j d  d    Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e	 j
 j d d d d d g e j g   d& g  e	 j
 j d  d     Z  e	 j
 j d d d d' g  d    Z! e	 j
 j d d d d d g e j g   d( i d d 6g  d     Z" d!   Z# d"   Z$ d#   Z% d$   Z& d%   Z' RS()   c         C   s)   d |  _  d |  _ t j t j |  _ d  S(   NR&   RY   (   R0   R2   Rk   R   Rl   Rr   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\   7  s    		c         C   s   |  `  |  ` d  S(   N(   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR^   =  s    c         O   sD   |  j  | d <|  j | d <| j d d  d | d <t j | |   S(   NR0   R2   t   leveli    i   (   R0   R2   t   popRM   R   (   Re   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   A  s    c   	   	   C   s  |  j  } x}t d   |  D]i} d j |  } d j |  } d j |  } | d k r t j t t j | d |  j d |  j	 q t
 d	 | d	 |  j  } |  j | d |  j d |  j	 } | | k s t  t
 | | d	 |  j  } |  j | d
 i | d 6d |  j d |  j	 } | | k s)t  t
 d	 | | d	 |  j  } |  j | d
 i | d 6d |  j d |  j	 } | | k s t  q Wd  S(   Nc         S   s
   |  d k S(   Ns   //(    (   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu   J  s    s   1 {0} 1s   x {0} 1s   1 {0} (x + 1)R#   s   not inR0   R2   i   R   R7   (   R#   s   not in(   Rr   Rv   R.   R*   R   R   RM   R   R0   R2   RF   R   (	   Re   t   opsR   R   R   R   t   expecR7   t   y(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_simple_arith_opsG  s&    	!"c         C   s{   xt t  t j t t f t t f  D]Q \ } } } d j | | |  } |  j |  } t |  } | | k s" t  q" Wd  S(   Ns   {0} {1} {2}(   R   Rk   R   R   R   R.   R   R   (   Re   R   RA   RC   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_simple_bool_opsa  s    c         C   so   xh t  t j d d  D]Q \ } } } d j | | |  } |  j |  } t |  } | | k s t  q Wd  S(   NR   R   s   {0} {1} {2}(   R   R   (   R   R   (   R   Rk   R   R.   R   R   (   Re   R   RA   RC   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_bool_ops_with_constantsi  s    s   ignore::FutureWarningc      
   C   se   t  t d d d   } t t d   } t j t  & |  j d d i | d 6| d 6Wd  QXd  S(	   Ni   i   i   i
   s   x + yR   R7   RM  (   R   R   R   R*   R   R   R   (   Re   R7   RM  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_panel_failsq  s
    c      
   C   sb   t  d d d d  } t t  d   } t j t  & |  j d d i | d 6| d	 6Wd  QXd  S(
   Ni   i   i   i   i
   s   x + yR   R7   RM  (   R   R   R*   R   R   R   (   Re   R7   RM  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_4d_ndarray_failsy  s
    c         C   s%   |  j  d  } | d k s! t  d  S(   Nt   1i   (   R   R   (   Re   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_constant  s    c         C   sB   t  t d d   } |  j d d i | d 6} t | |  d  S(   Ni
   i   R   R   (   R   R   R   R   (   Re   R   R%  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_single_variable  s    c         C   s^  t  j d g  } d } i | d 6} t rD|  j | d t } t j | t  j d g   |  j | d t } t j | t  j d g   |  j d d t } d } | | k s t  |  j d d t } d } | | k s t  |  j d d t } d } | | k st  |  j d d t } d } | | k sZt  n|  j | d t } t j | t  j d g   |  j | d t } t j | t  j d g   |  j d d t } d } | | k st  |  j d d t } d	 } | | k s t  |  j d d t } d	 } | | k s-t  |  j d d t } d } | | k sZt  d  S(
   Ni   s   s / 1R   t   truedivg      ?s   1 / 2g      ?s   s / 2i    (	   R?   R   R   R   R   R   R   R   R   (   Re   R   R   t   dR   RL  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_truediv  sH    c         C   sB   t  t j j d d   } t j t   |  j d  Wd  QXd  S(   Ni   i   s   df[x > 2] > 2(   R   R?   R   R   R*   R   t	   NameErrorR   (   Re   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt&   test_failing_subscript_with_name_error  s    c         C   s\   t  t j j d d   } |  j d d i | d 6} | d | d k } t | |  d  S(   Ni   i   s   (df + 1)[df > 2]R   R   i   i   (   R   R?   R   R   R   R   (   Re   R   RU   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_lhs_expression_subscript  s    c      	   C   s   t  t j j d d  d t d  } d } | j | j k  } d } | j | j | j } d } | j | j | j | j d k  } | | | f } | | | f }	 x@ t | |	  D]/ \ }
 } t	 | |  j
 |
 d	 i | d
 6 q Wd  S(   Ni   i   R   t   abcs   df.a < df.bs   df.a + df.b + df.cs   df.a + df.b + df.c[df.b < 0]i    R   R   (   R   R?   R   R   R   R   R   RD   t   zipR    R   (   Re   R   t   expr1t   expec1t   expr2t   expec2t   expr3t   expec3R   t   expecsRE   RL  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_attr_expression  s    '$c         C   sv   t  t j j d d  d t d  } t  t j j d d   } d } t j t |  j | d i | d 6| d 6d  S(	   Ni   i   R   R\  s   df = df2R   R   R%  (	   R   R?   R   R   R   R*   R   R<   R   (   Re   R   R%  R^  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_assignment_fails  s
    'c            s  t  t j j d d  d t d      j    t j t   j	 d  t j t   j	 d  t j t   j	 d   j   } | d | d	 | d < j       j	 d
 d t
 t   |   j   } | d | d	 | d < j       j	 d d t
 t   |   f d   } |      j   } d | d	 | d <t   |   j       f d   } |    j       j	 d d t
 t j t   j	 d   j     |  j	 d d i   d 6d   d t
  j   } | d | d	 | d <t   |  d  S(   Ni   i   R   t   abs   d c = a + bs   d,c = a + bs   Timestamp("20131001") = a + bR   R   s	   a = a + bt   inplaceRD   s	   c = a + bc             s)     j    }  d } |  j d d t |  S(   Ni   s	   a = 1 + bRh  (   t   copyR   R   (   R   R   (   t   orig_df(    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s    i   c             sd   d }    j  j   }   j d d t |   j } t |   j  d t | j d  k s` t	  d  S(   Ni   s	   a = a + bRh  t   check_names(
   R   Ri  R   R   R   R    R   R   R   R   (   R   t   old_aRU   (   R   (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s    s	   c = a = bs   c = df.a + df.bR   R   t   target(   R   R?   R   R   R   Ri  R*   R   R   R   R   R   (   Re   RV   R  (    (   R   Rj  sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_assignment_column  s@    '	c         C   sO   t  i d g d 6d g d 6 } | j d  } t t g  } t | |  d  S(   Ni   R   iR   s   a in [11, -32](   R   R   R   R   R    (   Re   R   RU   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_column_in  s     c         C   s   t  t j j d d  d t d  } | j d d t } | d  k	 sN t  | j	   } | d | d | d	 <t
 j | |  d  S(
   Ni   i   R   Rg  s	   c = a + bRh  R   R   RD   (   R   R?   R   R   R   R   R   R   R   Ri  R   R   (   Re   R   t   actualRV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   assignment_not_inplace  s    'c         C   s   t  j i d d d g d 6d d d g d 6 } | j   } | d | d | d	 <| d	 | d | d
 <| j d d t } t | |  | d  k s t  | d d | d <| d d | d <| j d d t } t | |  | d  k s t  t j	 t
   | j d d t Wd  QXd  S(   Ni   i   i   R   i   i   i   R   RD   RW  s$   
        c = a + b
        d = c + bRh  RE   s$   
        a = a - 1
        e = a + 2s(   
            a = b + 2
            b - 2(   RM   R   Ri  R   R   R   R   R   R*   R   R<   R   (   Re   R   RV   t   ans(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_multi_line_expression*  s"    /c         C   s   t  j i d d d g d 6d d d g d 6 } | j   } | d | d | d	 <| d	 | d | d
 <| j d d t } t | |  | d d | d <| d d | d <| j d d t } t | |  d  S(   Ni   i   i   R   i   i   i   R   RD   RW  s$   
        c = a + b
        d = c + bRh  RE   s$   
        a = a - 1
        e = a + 2(   RM   R   Ri  R   R   R   (   Re   R   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt&   test_multi_line_expression_not_inplaceE  s    /c         C   s   t  j i d d d g d 6d d d g d 6 } | j   } d	 } | d | | d
 <| d
 | | d <| j d d t } t | |  | d  k s t  d  S(   Ni   i   i   R   i   i   i   R   i   RD   RW  s?   
        c = a * @local_var
        d = c + @local_var
        Rh  (   RM   R   Ri  R   R   R   R   R   (   Re   R   RV   t	   local_varRr  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt)   test_multi_line_expression_local_variableX  s    /c         C   so   t  j i d d d g d 6d d d g d 6 } | j   } t j t   | j d	  Wd  QXt | |  d  S(
   Ni   i   i   R   i   i   i   R   s   a = 1(   RM   R   Ri  R*   R   R<   R   R   (   Re   R   t   df_orig(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_assignment_in_queryg  s
    /c         C   s   t  j i d d d g d 6d d d g d 6 } | j   } | | d d k } | j d	 d
 t t | |  i  } i d d 6} |  j d d | d
 t t j | |  d  S(   Ni   i   i   R   i   i   i   R   s   a == 2Rh  s	   a = 1 + 2Rm  (	   RM   R   Ri  R   R   R   R   R   t   assert_dict_equal(   Re   R   RV   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_query_inplaceo  s    /t   invalid_targeti   t   cati   i   c         C   s   d } d } t  j t d |  |  j | d | d t Wd  QXt | d  r t  j t d |  |  j | d | d t Wd  QXn  d  S(   Ns)   Cannot assign expression output to targets	   a = 1 + 2R   Rm  Rh  Ri  (   R*   R   R<   R   R   R]   R   (   Re   R{  R   t
   expression(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_cannot_item_assign}  s    c      
   C   sE   d } d } t  j t d |  |  j | d | d t Wd  QXd  S(   Ns"   Cannot return a copy of the targets	   a = 1 + 2R   Rm  Rh  (   R*   R   R<   R   R   (   Re   R{  R   R}  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_cannot_copy_item  s    Rm  c      
   C   sl   d } |  j  | d | d t d k s- t  d } t j t d |  |  j  | d | d t Wd  QXd  S(   Ns   1 + 2Rm  Rh  i   s0   Cannot operate inplace if there is no assignmentR   (   R   R   R   R*   R   R<   R   (   Re   Rm  R}  R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_inplace_no_assignment  s
    'c      	   C   ss   t  d d d t d d d d } | d k  } |  j d d i | d	 6} | d k  } t | |  t | |  d  S(
   Ni   R  R  t   pR  R  s   df < 2R   R   (   R  R  R   R   (   Re   R   RE   t   rR7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt*   test_basic_period_index_boolean_expression  s    !c      	   C   s^   t  d d d t d d d d } |  j d d i | d	 6} | | d k  } t | |  d  S(   Ni   R  R  R  R  R  s   df[df < 2 + 3]R   R   i   i   (   R  R  R   R   (   Re   R   R  RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt,   test_basic_period_index_subscript_expression  s    !c      	   C   sp   t  d d d t d d d d } |  j d d i | d	 6} | | | d k  d k  | d } t | |  d  S(
   Ni   R  R  R  R  R  s   df[df[df < 2] < 2] + df * 2R   R   (   R  R  R   R   (   Re   R   R  RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt-   test_nested_period_index_subscript_expression  s    !"c         C   s   t  t d d   } t d d d | d <|  j d d i | d 6d	 |  j d
 |  j } | j d k  } t | | d t d  S(   Ni   i   s   1/1/2012t   periodst   dates1s   df.dates1 < 20130101R   R   R0   R2   t   20130101Rk  (	   R   R   R   R   R0   R2   R  R    R   (   Re   R   R   RL  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_date_boolean  s    c         C   s  |  j  d k rt j d d |  j d |  j  } | s< t  t j d d |  j d |  j  } | si t  t j d d |  j d |  j  } | s t  t j d d |  j d |  j  } | s t  t j d d |  j d |  j  } | s t  t j d	 d |  j d |  j  } | st  t j d
 d |  j d |  j  } | sKt  t j d d |  j d |  j  } | sxt  t j d d |  j d |  j  } | st  t j d d |  j d |  j  } | st  n>t j t  $ t j d d |  j d |  j  Wd  QXt j t  $ t j d d |  j d |  j  Wd  QXt j t  $ t j d d |  j d |  j  Wd  QXt j t  $ t j d d |  j d |  j  Wd  QXt j t  $ t j d d |  j d |  j  Wd  QXt j t  $ t j d d |  j d |  j  Wd  QXd  S(   NR   s   1 in [1, 2]R0   R2   s   2 in (1, 2)s   3 in (1, 2)s   3 not in (1, 2)s   [3] not in (1, 2)s   [3] in ([3], 2)s   [[3]] in [[[3]], 2]s   (3,) in [(3,), 2]s   (3,) not in [(3,), 2]s   [(3,)] in [[(3,)], 2]s   [(3,)] in (1, 2, [(3,)])s   [3] not in (1, 2, [[3]])(   R2   RM   R   R0   R   R*   R   R   (   Re   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_simple_in_ops  s\    %%%(   i   i   (   i   i   (   i   i   ((   R   R   R   R\   R^   R   RN  RO  RP  R*   R,   t   filterwarningsRQ  RR  RT  RU  RX  RZ  R[  Re  Rf  Rn  Ro  Rq  Rs  Rt  Rv  Rx  Rz  R  R?   R   R~  R  R  R  R  R  R  R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRH  4  sD   								2					>							'+
	
			t   TestOperationsNumExprPythonc           B   s_   e  Z e d     Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z RS(	   c         C   sT   t  t |   j   d |  _ d |  _ t j t j |  _ t	 d   |  j  |  _ d  S(   NR&   R   c         S   s
   |  d k S(   NR#   s   not in(   R#   s   not in(    (   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu      s    (
   R   R  R\   R0   R2   Rk   R   Rl   Rr   Rv   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s    			c         C   sV   d } d j  d d  } d } t j | d |  j d |  j } | | k sR t  d  S(   Ni   s    * R   i!   R0   R2   (   t   joinRM   R   R0   R2   R   (   Re   R   Rk   RV   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_check_many_exprs  s
    !c      
   C   sT   t  t j j d d   } t j t t j d d i | d 6d |  j	 d |  j
 d  S(   Ni   i   s   df > 2 and df > 3R   R   R2   R0   (   R   R?   R   R   R*   R   R   RM   R   R2   R0   (   Re   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_fails_and
  s    c      
   C   sT   t  t j j d d   } t j t t j d d i | d 6d |  j	 d |  j
 d  S(   Ni   i   s   df > 2 or df > 3R   R   R2   R0   (   R   R?   R   R   R*   R   R   RM   R   R2   R0   (   Re   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_fails_or  s    c      
   C   sT   t  t j j d d   } t j t t j d d i | d 6d |  j	 d |  j
 d  S(   Ni   i   s
   not df > 2R   R   R2   R0   (   R   R?   R   R   R*   R   R   RM   R   R2   R0   (   Re   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_fails_not  s    c      
   C   sZ   t  t j j d d   } d } t j t  $ t j | d |  j	 d |  j
 Wd  QXd  S(   Ni   i   s   (df + 2)[df > 1] > 0 & (df > 0)R2   R0   (   R   R?   R   R   R*   R   R   RM   R   R2   R0   (   Re   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_fails_ampersand  s    c      
   C   sZ   t  t j j d d   } d } t j t  $ t j | d |  j	 d |  j
 Wd  QXd  S(   Ni   i   s   (df + 2)[df > 1] > 0 | (df > 0)R2   R0   (   R   R?   R   R   R*   R   R   RM   R   R2   R0   (   Re   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_fails_pipe"  s    c         C   s   x t  t j d d  D] \ } } } d j | | |  } | d k rl t j t   |  j |  Wd  QXq |  j |  } t |  } | | k s t  q Wd  S(	   NR   R   s   {0} {1} {2}R   R   (   R   R   (   R   R   (   R   R   (	   R   Rk   R   R.   R*   R   R   R   R   (   Re   R   RA   RC   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRP  (  s    c         C   s   x t  t j t t f t t f  D] \ } } } d j |  } | d k r t j t  $ t	 j
 | d |  j d |  j Wd  QXq" t	 j
 | d |  j d |  j } t
 |  } | | k s" t  q" Wd  S(   Ns   lhs {0} rhsR   R   R0   R2   (   R   R   (   R   Rk   R   R   R   R.   R*   R   R   RM   R   R0   R2   R   (   Re   R   RA   RC   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRO  4  s    (!(   R   R   R   R\   R  R  R  R  R  R  RP  RO  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s   								t   TestOperationsPythonPythonc           B   s   e  Z e d     Z RS(   c         C   sR   t  t |   j   d |  _ |  _ t j t j |  _ t	 d   |  j  |  _ d  S(   NR   c         S   s
   |  d k S(   NR#   s   not in(   R#   s   not in(    (   R7   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu   H  s    (
   R   R  R\   R0   R2   Rk   R   Rl   Rr   Rv   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\   C  s
    	(   R   R   R   R\   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR  A  s   t   TestOperationsPythonPandasc           B   s   e  Z e d     Z RS(   c         C   s<   t  t |   j   d |  _ d |  _ t j t j |  _ d  S(   NR   RY   (	   R   R  R\   R0   R2   Rk   R   Rl   Rr   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\   N  s    		(   R   R   R   R\   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR  L  s   t   TestMathPythonPythonc           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 RS(   c         C   s(   d |  _  d |  _ t |  _ t |  _ d  S(   NR   RY   (   R0   R2   R   t	   unary_fnsR   t
   binary_fns(   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\   Y  s    			c         C   s   |  `  |  ` d  S(   N(   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR^   `  s    c         O   sD   |  j  | d <|  j | d <| j d d  d | d <t j | |   S(   NR0   R2   RI  i    i   (   R0   R2   RJ  RM   R   (   Re   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR   d  s    c         C   s   t  i t j j d  d 6 } | j } xp | D]h } d j |  } |  j |  } t j d d   t t |  |  } Wd  QXt	 j
 | | d t q/ Wd  S(   Ni
   R   s   {0}(a)t   allR4  Rk  (   R   R?   R   R   R   R.   R   t   errstateR/  R   R    R   (   Re   R9   R   R   t   fnRk   t   gotR   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_unary_functionsj  s    	c         C   s\   xU d D]M } d j  |  } t j t d | ! d j  |  } |  j |  Wd  QXq Wd  S(   NR5   R6   s!   "{0}" is not a supported functionR   s   {0}(100)(   R5   R6   (   R.   R*   R   R<   R   (   Re   R4   R9   R  R   Rk   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt)   test_floor_and_ceil_functions_raise_erroru  s
    c         C   s   t  i t j j d  d 6t j j d  d 6 } | j } | j } xv |  j D]k } d j |  } |  j |  } t j	 d d   t
 t |  | |  } Wd  QXt j | | d t qN Wd  S(   Ni
   R   R   s	   {0}(a, b)R  R4  Rk  (   R   R?   R   R   R   R   R  R.   R   R  R/  R   R   R   (   Re   R   R   R   R  Rk   R  R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_binary_functions~  s    		c         C   s   t  i t j j d  d 6t j j d  d 6 } | j d d |  j d |  j d t | j } t j	 t j
 | j  | j  } t j | | d t d  S(	   Ni
   R   R   s   e = arctan2(sin(a), b)R0   R2   Rh  Rk  (   R   R?   R   R   R   R0   R2   R   RE   t   arctan2t   sinR   R   R   R    R   (   Re   R   R  R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_df_use_case  s    		!c         C   s   t  i t j j d  d 6t j j d  d 6 } | j d d |  j d |  j d t | j } t j	 | j
 | j  } t j | | d t d  S(	   Ni
   R   R   s   e = sin(a + b)R0   R2   Rh  Rk  (   R   R?   R   R   R   R0   R2   R   RE   R  R   R   R   R    R   (   Re   R   R  R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt    test_df_arithmetic_subexpression  s    		c         C   s   t  i t j j d  j |  d 6 } | j j | k s@ t  | j d d |  j	 d |  j
 d t | j } t j | j  } | j | j k s t  | | j k s t  t j | | d t d  S(   Ni
   R   s
   b = sin(a)R0   R2   Rh  Rk  (   R   R?   R   R   R   R   R   R   R   R0   R2   R   R   R  R   R    R   (   Re   R   t   expect_dtypeR   R  R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   check_result_type  s    (		c         C   s\   |  j  t j t j  |  j  t j t j  |  j  t j t j  |  j  t j t j  d  S(   N(   R  R?   t   int32R   t   int64R  (   Re   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_result_types  s    c         C   s'   t  j d  |  j t j t j  d  S(   Ns   unreliable tests on complex128(   R*   R3   R  R?   t
   complex128(   Re   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_result_types2  s    c      
   C   sd   t  i t j j d  d 6 } d } t j t d | $ | j d d |  j d |  j	 Wd  QXd  S(   Ni
   R   s#   "mysin" is not a supported functionR   s   mysin(a)R0   R2   (
   R   R?   R   R   R*   R   R<   R   R0   R2   (   Re   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_undefined_func  s    	c      
   C   sd   t  i t j j d  d 6 } d } t j t d | $ | j d d |  j d |  j	 Wd  QXd  S(   Ni
   R   s1   Function "sin" does not support keyword argumentsR   s   sin(x=a)R0   R2   (
   R   R?   R   R   R*   R   R   R   R0   R2   (   Re   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_keyword_arg  s    	(   R   R   R   R\   R^   R   R  R  R  R  R  R  R  R  R  R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR  V  s   						
	
					t   TestMathPythonPandasc           B   s   e  Z e d     Z RS(   c         C   s)   t  t |   j   d |  _ d |  _ d  S(   NR   RY   (   R   R  R\   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s    	(   R   R   R   R\   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s   t   TestMathNumExprPandasc           B   s   e  Z e d     Z RS(   c         C   s)   t  t |   j   d |  _ d |  _ d  S(   NR&   RY   (   R   R  R\   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s    	(   R   R   R   R\   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s   t   TestMathNumExprPythonc           B   s   e  Z e d     Z RS(   c         C   s)   t  t |   j   d |  _ d |  _ d  S(   NR&   R   (   R   R  R\   R0   R2   (   R[   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR\     s    	(   R   R   R   R\   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s   i
   t	   TestScopec           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s3   d } t  j t d t j | d | d |  d  S(   Ns
   _var_s * 2i   R0   R2   (   R   R   t   _var_sRM   R   (   Re   R0   R2   RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_global_scope  s    c         C   sf   d } t    j   } t j d d | d | d | t    j   } | j d  | | k sb t  d  S(   Ni   s   x + 1R   R0   R2   t   lcls(   R8  Ri  RM   R   RJ  R   (   Re   R0   R2   R7   R  t   lcls2(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_no_new_locals  s    c         C   sS   d } t    j   } t j d d | d | t    j   } | | k sO t  d  S(   Ni   s   x + 1R0   R2   (   t   globalsRi  RM   R   R   (   Re   R0   R2   R7   t   gblst   gbls2(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_no_new_globals  s
    (   R   R   R  R  R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR    s   		c       
   C   sM   d }  t  j t d |  , t j d d i d d 6d d 6d	 d
 Wd  QXd  S(   Ns   Invalid engine 'asdf' passedR   s   x + yR   i   R7   i   RM  R0   t   asdf(   R*   R   t   KeyErrorRM   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_invalid_engine   s    c       
   C   sM   d }  t  j t d |  , t j d d i d d 6d d 6d	 d
 Wd  QXd  S(   Ns   Invalid parser 'asdf' passedR   s   x + yR   i   R7   i   RM  R2   R  (   R*   R   R  RM   R   (   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_invalid_parser  s    R   R   RY   R0   R2   c         C   s`   t  | } | j } | d |  |  } x4 | D], } t j t   t | |    Wd  QXq, Wd  S(   Ns   x + 1(   t   _parserst   unsupported_nodesR*   R   R   R/  (   R0   R2   t   VisitorClasst   uns_opst   instRK  (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_disallowed_nodes  s    
	c      
   C   s9   d } t  j t   t j | d |  d | Wd  QXd  S(   Ns   s +R0   R2   (   R*   R   R   RM   R   (   R0   R2   RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_syntax_error_exprs  s    c      
   C   s9   d } t  j t   t j | d |  d | Wd  QXd  S(   Ns   s + tR0   R2   (   R*   R   RY  RM   R   (   R0   R2   RE   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_name_error_exprs$  s    c         C   s   d \ } } d } x | D] } | d k rc t  j t d d  t j | d	 |  d
 | Wd  QXq t  j t d d  t j | d	 |  d
 | Wd  QXq Wd  S(   Ni   i   s   a + @bs   @a + bs   @a + @bRY   R   s   The '@' prefix is onlyR0   R2   s   The '@' prefix is not(   i   i   (   s   a + @bs   @a + bs   @a + @b(   R*   R   R   RM   R   (   R0   R2   R   R   R   t   _expr(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt%   test_invalid_local_variable_reference*  s    "c      
   C   s   d	 \ } } |  d k rV d } t  j t d |  t j d d |  d | Wd  QXn1 t j d d |  d | } | | | k s t  d  S(
   Ni   i   R&   s   Variables in expression .+R   s   sin + dotted_lineR0   R2   (   i   i   (   R*   R   R   RM   R   R   (   R0   R2   R  t   dotted_lineR   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_numexpr_builtin_raises7  s    "c         C   sE   d	 } t  j t d d $ t j d d | d |  d | Wd  QXd  S(
   Ni*   g      @R   s   Resolver of type .+s   1 + 2t	   resolversR0   R2   (   i*   g      @(   R*   R   R   RM   R   (   R0   R2   t   cannot_resolve(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_bad_resolver_raisesB  s    c      
   C   s9   t  j t d d  t j d d |  d | Wd  QXd  S(   NR   s   expr cannot be an empty stringt    R0   R2   (   R*   R   R<   RM   R   (   R0   R2   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_empty_string_raisesI  s    c      
   C   s9   t  j t d d  t j d d |  d | Wd  QXd  S(   NR   s#   only a single expression is alloweds   1 + 1; 2 + 2R0   R2   (   R*   R   R   RM   R   (   R0   R2   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt$   test_more_than_one_expression_raisesO  s    t   cmpR   R   RA   RC   c         C   s   i d   t  6t j j t 6} | |    } | |    }  | |   } d j | |  } d j | |  } d j | |  }	 xF | | |	 f D]5 }
 t j t   t	 j
 |
 d | d | Wd  QXq Wd  S(   Nc           S   s   t  j j d  S(   Ni
   (   R?   R   R   (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyRu   Y  s    s   lhs {0} mid {1} rhss   lhs {0} mid and mid {1} rhss   (lhs {0} mid) & (mid {1} rhs)R0   R2   (   t   intR?   R   R   t   floatR.   R*   R   R   RM   R   (   RA   R  RC   R0   R2   t   genR   R   R   R   R   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_bool_ops_fails_on_scalarsU  s    c         C   s@   d } t  j } t j | d |  d | } | | k s< t  d  S(   Ns   inf + 1R0   R2   (   R?   t   infRM   R   R   (   R0   R2   R   RV   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_infg  s    	c      
   C   s   t  j d d g d d g g d d d g } | | j d k } | j d d	 |  d
 | } t j | |  | d k r t j t   | j d d	 |  d
 | Wd  QXn+ | j d d	 |  d
 | } t j | |  d  S(   Ni    i
   i   i   R   R|  t   counts
   ~(cat > 0)R0   R2   R   s   not (cat > 0)(	   RM   R   R|  R   R   R   R*   R   R   (   R0   R2   R   RV   RU   (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_negate_lt_eq_len  s    -"t   TestValidatec           B   s   e  Z d    Z RS(   c      	   C   sY   d d d d d g d g } x7 | D]/ } t  j t   t j d d | Wd  QXq" Wd  S(   Ni   R   i   i   g      @s   2+2Rh  (   R*   R   R<   RM   R   (   Re   t   invalid_valuest   value(    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   test_validate_bool_args  s    (   R   R   R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyR  }  s   (z   t   distutils.versionR    t	   itertoolsR   R  R  t   numpyR?   t   numpy.randomR   R   R   R*   t   pandas.compatR   R   t   pandas.errorsR   t   pandas.util._test_decoratorst   utilt   _test_decoratorsR   t   pandas.core.dtypes.commonR   R	   R
   RY   RM   R   R   R   R   t   pandas.core.computationR   t   pandas.core.computation.checkR   t   pandas.core.computation.enginesR   R   t   pandas.core.computation.exprRN   t   computationRk   R   R   t#   pandas.core.computation.expressionsR   R   t   pandas.core.computation.opsR   R   R   R   R   R   t   pandas.util.testingt   testingR   R   R   R   R    R!   R  R"   R   R   t   fixtureR0   R  R2   R4   R9   R;   RF   RJ   RK   RQ   RW   t   sett
   differenceRq   t   skip_if_no_net   objectRX   R   R   R   R  R   R  R  R  RH  R  R  R  R  R  R  R  R  R  R  R  t   ExprVisitorR,   R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  (    (    (    sA   lib/python2.7/site-packages/pandas/tests/computation/test_eval.pyt   <module>   s   "..								  a					 	I
	t			
!							*		