ó
šxŠ\c           @  s¹  d  d l  m Z d  d l Z d  d l Z d  d l m Z m Z d  d l Z d  d l	 m
 Z
 d  d l Z d  d l m Z m 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 m Z d  d	 l m Z e e
 d
 d ƒ d e d ƒ d d ƒZ  e e
 d d ƒ d e d ƒ d d ƒZ! e i e  d j" ƒ  d 6e  d j# d ƒ d 6e  d j# d ƒ d 6e  d j# d ƒ d 6ƒ Z$ e i e! d j" ƒ  d 6e! d j# d ƒ d 6e! d j# d ƒ d 6e! d j# d ƒ d 6ƒ Z% e e j& j' d d d d( ƒd e d ƒ d d ƒZ( e e j& j' d d d d) ƒd e d ƒ d d ƒZ) e d e* ƒ &e d e+ ƒ e e, d e  j" ƒ  d e  j" ƒ  d  d! e  j" ƒ  d" e  j" ƒ  ƒ ƒ Z- e e, d e! j" ƒ  d e! j" ƒ  d  d! e! j" ƒ  d" e! j" ƒ  ƒ ƒ Z. e e, d e( d e( d# j# d ƒ ƒ ƒ Z/ e e, d e) d e) d# j# d ƒ ƒ ƒ Z0 e e, d e$ d e$ d  ƒ ƒ Z1 e e, d e% d e% d  ƒ ƒ Z2 Wd QXe j3 j4 e j5 d$ d% ƒd& e6 f d' „  ƒ  Yƒ Z7 d S(*   iÿÿÿÿ(   t   print_functionN(   t   catch_warningst   simplefilter(   t   randn(   t   _np_version_under1p13t   compat(   t	   DataFramet   Panel(   t   expressions(   t   assert_almost_equalt   assert_frame_equalt   assert_panel_equalt   assert_series_equal(   t   pprint_thingi'  i   t   columnst   ABCDt   dtypet   float64id   t   At   Bt   float32t   Ct   int64t   Dt   int32i   t   sizei'  ie   t   recordt   ignoret   ItemAt   ItemBi   t   ItemCt   ItemDi"   t   reasons   not using numexprt   TestExpressionsc        
   B  sx  e  Z d  „  Z d „  Z e e d „ Z d „  Z e d d d d d d	 h d
 „ Z d/ e d „ Z
 d/ d „ Z d/ e e d „ Z d „  Z d „  Z e j j e j j d ƒ d „  ƒ ƒ Z d „  Z d „  Z e j j e j j d ƒ d „  ƒ ƒ Z d „  Z d „  Z e j j e j j d ƒ d „  ƒ ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d  „  Z# e j j$ d! e% d" d# d$ d% g d" d# d$ d% g g d& d' d( d) d* g ƒe% e e g e e g g d& d' d* g ƒf e% d" d+ d$ d% g d" d, d$ d% g d" d# d# d- g g d& d' d( d) d* g ƒe% e e g e e g e e g g d& d' d* g ƒf g ƒ d. „  ƒ Z& RS(0   c         C  s[   t  j ƒ  |  _ t j ƒ  |  _ t j ƒ  |  _ t j ƒ  |  _ t	 j ƒ  |  _
 t j |  _ d  S(   N(   t   _framet   copyt   framet   _frame2t   frame2t   _mixedt   mixedt   _mixed2t   mixed2t   _integert   integert   exprt   _MIN_ELEMENTS(   t   selft   method(    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   setup_method?   s    c         C  s   |  j  t _  d  S(   N(   R.   R-   (   R/   R0   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   teardown_methodH   s    c           s>  d t  _ d d d d d d g } t j s: | j d ƒ n  xý | D]õ ‰  ˆ  } ˆ  d k rb d } n  | r† ‡  ‡ f d	 †  } ˆ  | _ n t t | ƒ } t  j t	 ƒ | ˆ | ƒ }	 t  j t
 ƒ | ˆ | ƒ }
 yA | r ˆ  d k r |	 j j d
 k sý t ‚ q n  | |	 |
 ƒ WqA t k
 r5t d | j ƒ ‚  qA XqA Wd  S(   Ni    t   addt   subt   mult   modt   truedivt   floordivt   divc           s   t  ˆ ˆ  ƒ | ƒ S(   N(   t   getattr(   t   xt   y(   t   aritht   df(    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   <lambda>X   s    t   fs   Failed test with operator %r(   R-   R.   R   t   PY3t   appendt   __name__R:   t   operatort   set_use_numexprt   Falset   TrueR   t   kindt   AssertionErrort	   ExceptionR   (   R/   R>   t   othert   assert_funct   check_dtypet	   test_flext
   operationst   operator_namet   opt   expectedt   result(    (   R=   R>   s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   run_arithmeticK   s0    			c         C  sb   |  j  |  j |  j t ƒ |  j  |  j j d  d  … d f |  j j d  d  … d f t d t ƒd  S(   Ni    RM   (   RT   R,   R
   t   ilocR   RG   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_integer_arithmeticj   s
    t   gtt   ltt   get   let   eqt   nec           s<  d t  _ t  j t ƒ d d d d d d g } x| D]ÿ ‰  | r_ ‡  ‡ f d †  } ˆ  | _ n t t ˆ  ƒ } t  j t ƒ | ˆ | ƒ } t  j t ƒ t  j	 ƒ  | ˆ | ƒ }	 t  j	 ƒ  }
 yE ˆ  | k rà |
 só t
 d	 ƒ ‚ n |
 só t
 d
 ƒ ‚ | | |	 ƒ Wq5 t k
 r3t d ˆ  ƒ t d | ƒ ‚  q5 Xq5 Wd S(   s²   
        tests solely that the result is the same whether or not numexpr is
        enabled.  Need to test whether the function does the correct thing
        elsewhere.
        i    RW   RX   RY   RZ   R[   R\   c           s   t  ˆ ˆ  ƒ | ƒ S(   N(   R:   (   R;   R<   (   R=   R>   (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyR?   ~   s    s    Did not use numexpr as expected.s   Used numexpr unexpectedly.s   Failed test with operation %rs   test_flex was %rN(   R-   R.   t   set_test_modeRG   RC   R:   RD   RE   RF   t   get_test_resultRI   RJ   R   (   R/   R>   RK   RL   RN   t   numexpr_opsRO   RQ   RR   RS   t   used_numexpr(    (   R=   R>   s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt
   run_binaryq   s.    	
c         K  s°   |  j  | | t d t | |  j  | | t d t | | r¬ | d  k rq t j t ƒ | d } t j t ƒ n  |  j | | t d t | |  j | | t d t | n  d  S(   NRN   i   (   RT   R
   RF   RG   t   NoneR-   RE   Ra   (   R/   R>   RK   t   binary_compRa   t   kwargs(    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt	   run_frame“   s    


c         K  s<   |  j  | | t d t | |  j  | | t d t | d  S(   NRN   (   RT   R   RF   R	   RG   (   R/   t   serRK   Rc   Rd   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt
   run_series£   s    
c         K  s–   |  j  | | | d t | |  j  | | | d t | | r’ | d  k rW | d } n  |  j | | | d t | |  j | | | d t | n  d  S(   NRN   i   (   RT   RF   RG   Rb   Ra   (   R/   t   panelRK   Rc   Ra   RL   Rd   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt	   run_panel°   s    
c         C  s   |  j  |  j |  j ƒ d  S(   N(   Re   R,   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_integer_arithmetic_frame¾   s    c         C  s@   |  j  |  j j d  d  … d f |  j j d  d  … d f ƒ d  S(   Ni    (   Rg   R,   RU   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_integer_arithmetic_seriesÁ   s    s   ignore:\nPanel:FutureWarningc         C  s#   |  j  t t j j d d ƒ ƒ d  S(   Ni   id   (   Ri   t   _integer2_panelt   npt   randomt   randint(   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_integer_panelÄ   s    c         C  s   |  j  |  j |  j ƒ d  S(   N(   Re   R&   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_float_arithemtic_frameÉ   s    c         C  s@   |  j  |  j j d  d  … d f |  j j d  d  … d f ƒ d  S(   Ni    (   Rg   R&   RU   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_float_arithmetic_seriesÌ   s    c         C  s'   |  j  t t j j ƒ  d d d ƒd  S(   Ngš™™™™™¹?Rc   gš™™™™™é?(   Ri   t   _frame2_panelRm   Rn   R   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_float_panelÏ   s    c         C  s    |  j  |  j |  j d t ƒd  S(   NRa   (   Re   R*   RF   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_mixed_arithmetic_frameÔ   s    c         C  s?   x8 |  j  j D]* } |  j |  j  | |  j  | d d ƒq Wd  S(   NRc   i   (   R*   R   Rg   (   R/   t   col(    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_mixed_arithmetic_seriesÚ   s    c         C  s)   |  j  t t j j d d ƒ d d ƒd  S(   Ni   id   Rc   iþÿÿÿ(   Ri   t   _mixed2_panelRm   Rn   Ro   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_mixed_panelÞ   s    c         C  sb   |  j  |  j |  j t ƒ |  j  |  j j d  d  … d f |  j j d  d  … d f t d t ƒd  S(   Ni    RM   (   RT   R$   R
   RU   R   RG   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_float_arithemticä   s    8c         C  sU   |  j  |  j |  j t ƒ x5 |  j j D]' } |  j  |  j | |  j | t ƒ q& Wd  S(   N(   RT   R(   R
   R   R   (   R/   Rv   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_mixed_arithmeticé   s    c         C  sŒ   |  j  t j j d d d t j |  j  ƒ ƒ9_  |  j |  j  |  j  t ƒ |  j |  j  j d  d  … d f |  j  j d  d  … d f t ƒ d  S(   Ni    i   R   (	   R,   Rm   Rn   Ro   t   shapeRT   R
   RU   R   (   R/   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_integer_with_zerosï   s
    0c         C  sÇ   t  j t j d  |  j |  j d ƒ } | s1 t ‚ t  j t j d |  j |  j d ƒ } | sb t ‚ t  j t j d |  j |  j d ƒ } | s“ t ‚ t  j t j d |  j |  j d ƒ } | sÃ t ‚ d  S(   Nt   evaluatet   +(	   R-   t   _can_use_numexprRD   R3   Rb   R$   RI   R(   R&   (   R/   RS   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_invalidö   s    c           sY   ‡  f d †  } t  j t ƒ | ƒ  t  j t ƒ t  j d ƒ | ƒ  t  j ƒ  | ƒ  d  S(   Nc       	     s|  xuˆ  j  ˆ  j f ˆ  j ˆ  j f g D]O\ }  } x@d d d d d g D])\ } } | d	 k re qG n  | d k r† t t d d  ƒ } n t t | d  ƒ } | d  k	 rG t j | | |  |  d ƒ } | |  j	 k sÔ t
 ‚ t j | | |  |  d t ƒ} t j | | |  |  d t ƒ} t | t ƒ r2t j | | ƒ n t j | | j ƒ t j | | | | d ƒ } | spt
 ‚ qG qG Wq% Wd  S(   NR3   R   R4   t   -R5   t   *R9   t   /t   pows   **R7   R~   t   use_numexpr(   R3   R   (   R4   R‚   (   R5   Rƒ   (   R9   R„   (   R…   s   **(   R$   R&   R(   R*   R:   RD   Rb   R-   R€   t   _is_mixed_typeRI   R~   RG   RF   t
   isinstanceR   t   tmR
   t   assert_numpy_array_equalt   values(   R@   t   f2RQ   t   op_strRS   RR   (   R/   (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   testit  s0    				
	i   (   R-   RE   RF   RG   t   set_numexpr_threads(   R/   RŽ   (    (   R/   s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_binary_ops  s    #
c           sY   ‡  f d †  } t  j t ƒ | ƒ  t  j t ƒ t  j d ƒ | ƒ  t  j ƒ  | ƒ  d  S(   Nc    
   	     sZ  xSˆ  j  ˆ  j f ˆ  j ˆ  j f g D]-\ }  } |  } |  d } | } | d } xþ d d d d d d g D]ä \ } } t t | ƒ } t j | | | | d ƒ } | | j k sµ t	 ‚ t j
 | | | | d t ƒ} t j
 | | | | d t ƒ}	 t | t ƒ rt j | |	 ƒ n t j | |	 j ƒ t j | | | | d ƒ } | sj t	 ‚ qj Wq% Wd  S(   Ni   RW   t   >RX   t   <RY   s   >=RZ   s   <=R[   s   ==R\   s   !=R~   R†   (   RW   R‘   (   RX   R’   (   RY   s   >=(   RZ   s   <=(   R[   s   ==(   R\   s   !=(   R$   R&   R(   R*   R:   RD   R-   R€   R‡   RI   R~   RG   RF   Rˆ   R   R‰   R
   RŠ   R‹   (
   R@   RŒ   t   f11t   f12t   f21t   f22RQ   R   RS   RR   (   R/   (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyRŽ   9  s,    

				i   (   R-   RE   RF   RG   R   (   R/   RŽ   (    (   R/   s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_boolean_ops8  s     
c           sY   ‡  f d †  } t  j t ƒ | ƒ  t  j t ƒ t  j d ƒ | ƒ  t  j ƒ  | ƒ  d  S(   Nc            sº   x³ ˆ  j  ˆ  j ˆ  j ˆ  j g D]“ }  xŠ t t g D]| } t j |  j d t j	 ƒ} | j
 | ƒ t j | |  j |  j d ƒ } t j | |  j |  j d ƒ } t j | | ƒ q2 Wq Wd  S(   NR   i   (   R$   R&   R(   R*   RG   RF   Rm   t   emptyR|   t   bool_t   fillR-   t   whereR‹   R‰   RŠ   (   R@   t   condt   cRS   RR   (   R/   (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyRŽ   b  s    %i   (   R-   RE   RF   RG   R   (   R/   RŽ   (    (   R/   s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt
   test_wherea  s    
c   	      C  s±  t  i t j j d ƒ d k d 6t j j d ƒ d k d 6ƒ } d } d } d } xZt | | ƒ D]I\ } } t j s‚ | d k r` t t | ƒ } t	 j
 | | ƒ } t j t d | ƒ | | | ƒ Wd  QXt j t d | ƒ | | j | j ƒ Wd  QXt j t d | ƒ | | j t ƒ Wd  QXt j t d | ƒ | t | j ƒ Wd  QXt j t d | ƒ | t | ƒ Wd  QXt j t d | ƒ | | t ƒ Wd  QXq` q` Wd  S(   Ni
   g      à?t   at   bR9   R7   R8   R…   R„   s   //s   **s+   operator %r not implemented for bool dtypest   match(   R9   R7   R8   R…   (   R„   R„   s   //s   **(   R   Rm   Rn   t   randt   zipR   RA   R:   RD   t   ret   escapet   pytestt   raisest   NotImplementedErrorRŸ   R    RG   RF   (	   R/   R>   t   namest   opst   msgRQ   t   nameR@   t   err_msg(    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt!   test_bool_ops_raise_on_arithmeticu  s*    c         C  sÇ  d } t  i t j j | ƒ d k d 6t j j | ƒ d k d 6ƒ } d } d } i d d 6d d	 6d d
 6} i d d 6d d 6d d 6} x:t | | ƒ D])\ } } t t | ƒ }	 t t | | | ƒ }
 | d
 k rá t rá q– n  t j	 t
 d d ƒÇt j d t ƒ 3 |	 | | ƒ } |
 | | ƒ } t j | | ƒ Wd  QXt j d t ƒ ? |	 | j | j ƒ } |
 | j | j ƒ } t j | | ƒ Wd  QXt j d t ƒ 9 |	 | j t
 ƒ } |
 | j t
 ƒ } t j | | ƒ Wd  QXt j d t ƒ 9 |	 t | j ƒ } |
 t | j ƒ } t j | | ƒ Wd  QXt j d t ƒ 3 |	 t | ƒ } |
 t | ƒ } t j | | ƒ Wd  QXt j d t ƒ 3 |	 | t
 ƒ } |
 | t
 ƒ } t j | | ƒ Wd  QXWd  QXq– Wd  S(   Ni
   g      à?RŸ   R    R3   R5   R4   R   Rƒ   R‚   t   |t   &t   ^t   or_t   and_t   xort   min_elementsi   t   check_stacklevel(   R3   R5   R4   (   R   Rƒ   R‚   (   R   Rm   Rn   R¢   R£   R:   RD   R   R‰   R†   RG   t   assert_produces_warningRF   R
   RŸ   R    R   (   R/   t   nR>   R©   Rª   t   subst	   sub_funcsRQ   R¬   R@   t   fet   rt   e(    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt    test_bool_ops_warn_on_arithmetic’  sJ    s   test_input,expectedi    i   i   t   aaR   RŸ   R    R   R   i   i   t   bbc         C  sR   | j  d  d  … d d g f j | j  d  d  … d d g f ƒ } t | | ƒ d  S(   NRŸ   R   (   t   locR\   R
   (   R/   t
   test_inputRR   RS   (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   test_bool_ops_column_name_dtypeÁ  s    "N('   RC   t
   __module__R1   R2   RF   RG   RT   RV   Ra   Rb   Re   Rg   R   Ri   Rj   Rk   R¦   t   markt   slowt   filterwarningsRp   Rq   Rr   Rt   Ru   Rw   Ry   Rz   R{   R}   R   R   R—   Rž   R®   R¾   t   parametrizeR   RÃ   (    (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyR!   <   sR   				!														,	)			/'6(   i'  i   (   ie   i   (8   t
   __future__R    RD   R¤   t   warningsR   R   t   numpyRm   t   numpy.randomR   R¦   t   pandasR   R   t   pandas.core.apiR   R   t   pandas.core.computationR   R-   t   pandas.util.testingt   utilt   testingR‰   R	   R
   R   R   t   pandas.io.formats.printingR   t   listR"   R%   R#   t   astypeR'   R)   Rn   Ro   R+   t	   _integer2RG   t   FutureWarningt   dictt   _frame_panelRs   t   _integer_panelRl   t   _mixed_panelRx   RÅ   t   skipift   _USE_NUMEXPRt   objectR!   (    (    (    s<   lib/python2.7/site-packages/pandas/tests/test_expressions.pyt   <module>   s\   "''	%