σ
¦Υ\c        *   @` s}  d  d l  m Z m Z m Z d  d l Z e j d  Z d  d l j j	 Z
 d  d l Z d  d l j Z d  d l j Z d  d l m Z d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. g* Z e j j d/ e j e j j d0 d1 d2 d3  e j e j e j j d1    e j i e j j d0 d1 d2 d3 d4 6e j j d0 d1 d2 d3 d5 6e j e j j d3   d6 6 e j e j j d0 d1 d2 d3 d7 e d8  e j e j e j j d3   d7 e d8  e j i e j j d0 d1 d2 d3 d4 6e j j d0 d1 d2 d3 d5 6e j e j j d3   d6 6d7 e d8  g  e j j d9 e  d:     Z e j j d9 d; d< d= d> d? d@ dA dB dC g	  dD    Z  dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY dN dM dO g Z! e j j d9 e!  e j j dZ d[   d\   g  d]     Z" e j j d^ e j e j j d0 d1 d2 d3  d_ d` f e j e j j d0 d1 d2 dz db d4 d5 g dc dd f g  de    Z# e j j d9 e  df    Z$ dg   Z% e j j dh e j e j e j j d1    e j i e j j d0 d1 d2 d3 d4 6e j j d0 d1 d2 d3 d5 6e j e j j d3   d6 6 g  e j j di da e j& e j d  g  d0  j'   g  e j j d9 e!  dj      Z( e j j d9 e!  e j j dk e j e j j d0 d1 d2 d{  e j) e j j d0 d1 d2 d| dl d} f e j e j j d0 d1 d2 d~ db d4 d5 g e j) e j j d0 d1 d2 d dl d f g  dn     Z* e j j do dp dq dr ds dt g  e j j d9 e  e j j d e j e j e j j d1    e j i e j j d0 d1 d2 d3 d4 6e j j d0 d1 d2 d3 d5 6e j e j j d3   d6 6 g  du      Z+ e j j d e j e j j d0 d1 d2 d1  e j i e j j d0 d1 d2 d3 d4 6e j j d0 d1 d2 d3 d5 6e j e j j d3   d6 6 g  e j j dv dw dx e j, dw  e j- dx  g  dy     Z. d S(   i    (   t   absolute_importt   divisiont   print_functionNt   pandas(   t	   assert_eqt   conjt   expt   logt   log2t   log10t   log1pt   expm1t   sqrtt   squaret   sint   cost   tant   arcsint   arccost   arctant   sinht   cosht   tanht   arcsinht   arccosht   arctanht   deg2radt   rad2degt   isfinitet   isinft   isnant   signbitt   degreest   radianst   rintt   fabst   signt   absolutet   floort   ceilt   trunct   logical_nott   cbrtt   exp2t   negativet
   reciprocalt   spacingt   pandas_inputi   id   t   sizei   t   At   Bt   Ct   indext   abcdefghijklmnopqrstt   ufuncc         C` s  t  t |  } t  t |  } t j |  d  } |  j } | j } t j d   Ρ t	 | |  |  sm t
  t | |  | |    t	 | t j  rΆ t	 | |  |  sΡ t
  n t	 | |  |  sΡ t
  t | |  | |    t	 | |   |  st
  t | |  | |    Wd  QX|  j j t t g k r@d  S| d	 k rPd  St j d   Σ t	 | | j  t j  st
  t | | j  | |  j  d | d k t	 | t j  rβt	 | | j  t j  st
  n! t	 | | j  t j  st
  t | | j  | | j  d | d k Wd  QXt j d   ? t	 | |  j  t j  set
  t | |   | |    Wd  QXd  S(
   Ni   R)   R   R   R   R   t   check_divisionsR.   (   R)   R   R   R   R   (   t   getattrt   dat   npt   ddt   from_pandast	   __class__t   pytestt   warnst   Nonet
   isinstancet   AssertionErrorR   R6   R4   t   dtypet   objectt   strt   Indext   pd(   R/   R6   t   dafunct   npfunct
   dask_inputt   pandas_typet	   dask_type(    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt
   test_ufunc   s<    		!$!!t   isrealt	   iscomplext   realt   imagt   anglet   fixt   i0t   sinct
   nan_to_numc         C` s  |  d k r+ t  j d k r+ t j d  n  t t |   } t t  |   } t j t  j j	 d d d d d t
 d	  } t j | d
  } t | |  t j  s© t  t | |  t j | |  d | j  t | |  t  j  sς t  t j | |  | |   t | |  t  j  s,t  t j | |  | |   t j i t  j j	 d d d d d 6t  j j	 d d d d d 6t  j t  j j d   d 6d t
 d	  } t j | d
  } t | |  t j  sηt  t j | |  j   d | j d | j } t | |  |  t | |  t  j  sEt  t j | |  | |   t | |  t  j  st  t j | |  | |   d S(   s#  
    some np.ufuncs doesn't call __array_wrap__
    (or __array_ufunc__ starting from numpy v.1.13.0), it should work as below

    - da.ufunc(dd.Series) => dd.Series
    - da.ufunc(pd.Series) => np.ndarray
    - np.ufunc(dd.Series) => np.ndarray
    - np.ufunc(pd.Series) => np.ndarray
    RS   s   1.13.0s3   fix calls floor in a way that we do not yet supporti   id   R0   i   R4   R5   i   R1   R2   R3   t   columnsN(   R:   t   __version__R>   t   skipR8   R9   RG   t   Seriest   randomt   randintt   listR;   R<   RA   RB   R   R4   t   ndarrayt   tmt   assert_numpy_array_equalt	   DataFramet   abst   randnt   copyRW   (   R6   RH   RI   t   st   dst   dft   ddfR   (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_ufunc_array_wrap\   s2    !+%-t	   logaddexpt
   logaddexp2t   arctan2t   hypott   copysignt	   nextaftert   ldexpt   fmodt   logical_andt
   logical_ort   logical_xort   maximumt   minimumt   fmaxt   fmint   greatert   greater_equalt   lesst
   less_equalt	   not_equalt   equalt   make_pandas_inputc           C` s"   t  j t j j d d d d  S(   Ni   id   R0   i   (   RG   RZ   R:   R[   R\   (    (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   <lambda>   t    c           C` s.   t  j t j j d d d d	 d d d g S(
   Ni   id   R0   i   i   RW   R1   R2   (   i   i   (   RG   Ra   R:   R[   R\   (    (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyR      s   !c   
      C` sμ  t  t |   } t  t |   } |   } |   } t j | d  } t j | d  } | j } | j }	 t | | |  |	  s t  t | | |  | | |   t | | |  |	  sΑ t  t | | |  | | |   t | t j	  r1t | | |  |	  st  t | | |  |	  smt  n< t | | |  |  sOt  t | | |  |  smt  t | | |  | | |   t | | |  | | |   t | | |  |  sΙt  t | | |  | | |   d  S(   Ni   i   (
   R8   R9   R:   R;   R<   R=   RA   RB   R   R6   (
   R6   R   RH   RI   t   pandas1t   pandas2t   dask1t   dask2RK   RL   (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_ufunc_with_2args   s*    				!s   pandas,min,maxi   i2   i   RW   g      @g     @D@c         C` s  t  j |  d  } |  j } | j } t t j | | |  |  sH t  t t j | | |  t j |  | |   t t j | | |  |  s t  t t j | | |  t j |  | |   t t j |  | |  |  sζ t  t t j |  | |  t j |  | |   d  S(   Ni   (	   R;   R<   R=   RA   R9   t   clipRB   R   R:   (   R   t   mint   maxt   daskRK   RL   (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt	   test_clipΕ   s    		$+$+$c   
   
   C` sE  t  t |   } t  t |   } t j j d d d d } t j | d d d g } t j | d	  } t j t j j d d d d d d
 d g } t j | d	  } t j | d	  } t	 j
 d   2 | | d | | | d | t | |  Wd  QXt	 j
 d   3 t j | |  d d d g }	 t | |	  Wd  QXd  S(   Ni   id   R0   i   i   RW   R1   R2   i   t   Yt   Zt   out(   i   i   (   i   i   (   R8   R:   R9   R[   R\   RG   Ra   R;   R<   R>   R?   R@   R   (
   R6   RI   RH   t   input_matrixRg   Rh   t   df_outt
   ddf_out_npt
   ddf_out_dat   expected(    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_frame_ufunc_outί   s     !!c       	   C` s‘  t  j j d d d d }  t j |  d d d g } t j | d	  } t j t  j j d d d d d d
 d d g } t j | d	  } t j t	   t  j
 | d | Wd  QXt j t j d g  d  } t j t   t  j
 | d | Wd  QXt j t  j j d d d d d d
 d g } t j | d	  } t  j
 | d | t  j | d d | t j t  j
 |   d d d d g } t | |  d  S(   Ni   id   R0   i   i   RW   R1   R2   i   t   XR   R   R   i    i
   (   i   i   (   i   i   (   i   i   (   R:   R[   R\   RG   Ra   R;   R<   R>   t   raisest
   ValueErrorR   RZ   t	   TypeErrort   addR   (   R   Rg   Rh   R   t   ddf_outR   (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_frame_2ufunc_outχ   s$    !!(t   arg1t   arg2c         C` sΔ  t  t |   } t  t |   } t j | d  } | j } | j } t | | |  |  s` t  t | | |  | | |   t | | |  |  s t  t | | |  | | |   t | | |  |  sΪ t  t | | |  | | |   |  d k r	d  St | | |  |  s't  t | | |  | | |   t | | |  |  sdt  t | | |  | | |   t | | |  |  s‘t  t | | |  | | |   d  S(   Ni   Rp   (	   R8   R:   R9   R;   R<   R=   RA   RB   R   (   R6   R   R   RI   RH   R   RK   RL   (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_mixed_types  s&    		s   pandas,darrayt   chunksi
   c         C` sQ  t  t |   } t  t |   } t j | d  } | j } t | | |  |  sW t  t | | |  |  su t  t j	 | | |  j
   j | | j |  j
    t | | |  |  sΗ t  t | | |  |  sε t  t j	 | | |  j
   j | | j | j
     t j	 | | |  j
   j | | j
   | j   d  S(   Ni   (   R8   R9   R:   R;   R<   R=   RA   RB   R_   R`   t   computet   values(   R6   R   t   darrayRH   RI   R   RL   (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_2args_with_arrayE  s    
	t   redfunct   sumt   prodR   R   t   meanc      	   C` s   t  j | d  } t t |   } t t |  } t j d   Z t | |  t  j t  j	 t  j
 j f  sp t  t | | |   | | |    Wd  QXd  S(   Ni   (   R;   R<   R8   R:   R>   R?   R@   RA   Ra   RZ   t   coret   ScalarRB   R   (   R€   R6   R   R   t
   np_redfunct   np_ufunc(    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   test_ufunc_with_reductionf  s    0t   scalari   gffffff0@c         C` s8   | t  j |  d d k } | |  k } t | |  d  S(   Nt   npartitionsi   (   R;   R<   R   (   R   R­   t   dask_comparet   pandas_compare(    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt"   test_ufunc_numpy_scalar_comparisonx  s    	(   i   i   (   id   (   id   (   i2   (   i   i   (   i   i   (   i
   i   (/   t
   __future__R    R   R   R>   t   importorskipRG   t   pandas.util.testingt   utilt   testingR_   t   numpyR:   t
   dask.arrayt   arrayR9   t   dask.dataframet	   dataframeR;   t   dask.dataframe.utilsR   t   _BASE_UFUNCSt   markt   parametrizeRZ   R[   R\   Rb   Rc   Ra   R]   RM   Ri   t   _UFUNCS_2ARGR   R   R   R   R<   R₯   R   t
   from_arrayR£   R¬   t   int64t   float64R±   (    (    (    s>   lib/python2.7/site-packages/dask/dataframe/tests/test_ufunc.pyt   <module>   s   !!%!!%!5!2						)*!'	!%%6$)!!	!!!!%7!%%