ó
¦–Õ\c        -   @` sÎ  d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l m Z d  d l	 Z	 e	 j
 d ƒ Z d  d l j Z d  d l m Z d  d l m Z d  d l m Z d	 „  Z d
 „  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, g" Z d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN dO dP dQ dR dS dT dU dV dW dX dY g- Z e	 j j dZ e ƒ d[ „  ƒ Z e	 j j dZ e ƒ d\ „  ƒ Z d] „  Z e	 j j dZ d^ d_ d` da g ƒ db „  ƒ Z e	 j j dZ dc dd g ƒ de „  ƒ Z df „  Z  dg „  Z! dh „  Z" e	 j j di dj dk dl g ƒ dm „  ƒ Z# dn „  Z$ do „  Z% dp „  Z& dq „  Z' dr „  Z( ds „  Z) dt „  Z* du „  Z+ d S(v   i    (   t   absolute_importt   divisiont   print_functionN(   t   partial(   t   addt   numpy(   t   da_frompyfunc(   t	   assert_eq(   t   tokenizec           C` sÊ   t  j j d k s t ‚ t  j j j d d ƒ t j j k sB t ‚ t  j j d k sZ t ‚ t  j j j d d ƒ t j j k s„ t ‚ t  j j d k sœ t ‚ t  j j j d d ƒ t j j k sÆ t ‚ d  S(   Nt   logs     # doctest: +SKIPt    t   modft   frexp(	   t   daR	   t   __name__t   AssertionErrort   __doc__t   replacet   npR   R   (    (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_ufunc_meta   s    **c          C` sÎ   xM d d d d d d d g D]0 }  t  t j |  ƒ t  t j |  ƒ k s t ‚ q Wt j t ƒ  t j j Wd  QXt	 t j ƒ t	 t j ƒ k s” t ‚ d t
 t j ƒ k s¯ t ‚ d t
 t j ƒ k sÊ t ‚ d  S(	   Nt   nint   nargst   noutt   ntypest   identityt	   signaturet   typest   outer(   t   getattrR   R	   R   R   t   pytestt   raisest   AttributeErrort   not_an_attributet   reprt   dir(   t   attr(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt
   test_ufunc   s    .$R   t   arctan2t   copysignt   dividet   equalt   bitwise_andt
   bitwise_ort   bitwise_xort   floor_dividet   fmaxt   fmint   fmodt   greatert   greater_equalt   hypott   ldexpt   lesst
   less_equalt	   logaddexpt
   logaddexp2t   logical_andt
   logical_ort   logical_xort   maximumt   minimumt   modt   multiplyt	   nextaftert	   not_equalt   powert	   remaindert   subtractt   true_dividet   float_powert   absolutet   arccost   arccosht   arcsint   arcsinht   arctant   arctanht   bitwise_nott   cbrtt   ceilt   conjt   cost   cosht   deg2radt   degreest   expt   exp2t   expm1t   fabst   fixt   floort   invertt   isfinitet   isinft   isnanR	   t   log10t   log1pt   log2t   logical_nott   negativet   rad2degt   radianst
   reciprocalt   rintt   signt   signbitt   sint   sinht   spacingt   sqrtt   squaret   tant   tanht   trunct   ufuncc         C` s—  |  d k r t  j d ƒ n  t t |  ƒ } t t |  ƒ } t j j d d d d	 ƒ} t j | d ƒ } t  j d  ƒ B t
 | | ƒ t j ƒ s• t ‚ t | | ƒ | | ƒ d t ƒWd  QXt  j d  ƒ u t
 | t j ƒ rý t
 | | ƒ t j ƒ st ‚ n t
 | | ƒ t j ƒ st ‚ t | | ƒ | | ƒ d t ƒWd  QXt  j d  ƒ B t
 | | ƒ t j ƒ snt ‚ t | | ƒ | | ƒ d t ƒWd  QXd  S(
   NRY   s3   fix calls floor in a way that we do not yet supporti   id   t   sizei   i   t	   equal_nan(   i   i   (   R   t   skipR   R   R   t   randomt   randintt
   from_arrayt   warnst   Nonet
   isinstancet   ArrayR   R   t   TrueRr   t   ndarray(   Rr   t   dafunct   npfunct   arrt   darr(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_unary_ufunc;   s"    %!%c      
   C` sh  t  t |  ƒ } t  t |  ƒ } t j j d d d d ƒ} t j | d ƒ } t j j d d d d ƒ} t j | d ƒ } t | | | ƒ t j ƒ s™ t ‚ t	 | | | ƒ | | | ƒ ƒ t | | | ƒ t j ƒ sÙ t ‚ t	 | | | ƒ | | | ƒ ƒ t | | | ƒ t j
 ƒ st ‚ t	 | | | ƒ | | | ƒ ƒ t | | d ƒ t j ƒ sYt ‚ t	 | | d ƒ | | d ƒ ƒ t j d  ƒ E t | d | ƒ t j ƒ s©t ‚ t	 | d | ƒ | d | ƒ ƒ Wd  QXt | | d ƒ t j
 ƒ sït ‚ t	 | | d ƒ | | d ƒ ƒ t j d  ƒ E t | d | ƒ t j
 ƒ s?t ‚ t	 | d | ƒ | d | ƒ ƒ Wd  QXd  S(	   Ni   id   Rs   i   i   i
   (   i   i   (   i   i   (   R   R   R   Rv   Rw   Rx   R{   R|   R   R   R~   R   Ry   Rz   (   Rr   R   R€   t   arr1t   darr1t   arr2t   darr2(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_binary_ufuncX   s,    !!!!!%!!c    	      C` sñ  t  j j d d d d ƒ}  t j |  d ƒ } t  j j d d d d ƒ} t j | d ƒ } t t j j | | ƒ t j ƒ s t	 ‚ t t j j |  | ƒ t j ƒ s¨ t	 ‚ t t j j | | ƒ t j ƒ sÏ t	 ‚ t t j j |  | ƒ t  j
 ƒ sö t	 ‚ | | f |  | f f | | f | |  f f | | j d ƒ f | |  j d ƒ f f | | f |  | f f | d f |  d f f d | f d | f f d | f d | f f d d	 d g | f d d	 d g | f f | j ƒ  | f |  j ƒ  | f f t  j d ƒ | f t  j d ƒ | f f g
 } xK | D]C \ \ } } \ } } t t j j | | ƒ t  j j | | ƒ ƒ qWt t j j | | d
 d ƒt  j j |  | d
 d ƒƒ t j t ƒ  t j j | | d |  ƒWd  QXt j t ƒ  t j j | | ƒ Wd  QXd  S(   Ni   id   Rs   i   i   i
   t   f8g      ø?i   t   dtypet   out(   i
   i   (   R   Rv   Rw   R   Rx   R{   R   R   R|   R   R~   t   astypet   sumt   arrayR   R   R   t
   ValueErrorRj   (	   R„   R…   R†   R‡   t   casest   dAt   dBt   At   B(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_ufunc_outer   s4    ''''''!-/t   isrealt	   iscomplext   realt   imagc         C` s”  t  t |  ƒ } t  t |  ƒ } t j j d d d d ƒ} t j j d d d d ƒd } | | } t j | d ƒ } t j | d ƒ } t j | d ƒ } t | j | j ƒ t | j | j ƒ t | j	 ƒ  | j	 ƒ  ƒ x¶ | | f | | f | | f g D]“ \ }	 }
 t
 | |	 ƒ t j ƒ s#t ‚ t | |	 ƒ | |
 ƒ ƒ t | |	 ƒ | |
 ƒ ƒ t
 | |
 ƒ t j ƒ sst ‚ t | |
 ƒ | |
 ƒ ƒ qù Wd  S(	   Ni   id   Rs   i   y              ð?i   (   i   i   (   i   i   (   R   R   R   Rv   Rw   Rx   R   R˜   R™   RP   R{   R|   R   R~   (   Rr   R   R€   R˜   R™   t   compt   darealt   daimagt   dacompR‚   R   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_complex¦   s"    
.R   R   c   	      C` s™  t  t |  ƒ } t  t |  ƒ } t j j d d d d ƒ} t j | d ƒ } | | ƒ \ } } t | t j ƒ su t ‚ t | t j ƒ s t ‚ | | ƒ \ } } t	 | | ƒ t	 | | ƒ | | ƒ \ } } t | t j ƒ sã t ‚ t | t j ƒ sû t ‚ | | ƒ \ } } t	 | | ƒ t	 | | ƒ | | ƒ \ } } t | t j ƒ sQt ‚ t | t j ƒ sit ‚ | | ƒ \ } } t	 | | ƒ t	 | | ƒ d  S(   Ni   id   Rs   i   i   (   i   i   (
   R   R   R   Rv   Rw   Rx   R{   R|   R   R   (	   Rr   R   R€   R   R‚   t   res1t   res2t   exp1RV   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_ufunc_2resultsÄ   s,    c          C` s$  t  j j d d d d ƒ}  t j |  d d ƒ} t |  j d ƒ | j d ƒ ƒ t |  j d d ƒ | j d d ƒ ƒ t |  j d	 d ƒ | j d	 d ƒ ƒ t |  j d
 d ƒ | j d
 d ƒ ƒ t |  j d
 d d	 d ƒ | j d
 d d	 d ƒ ƒ t |  j d	 d d
 d ƒ | j d	 d d
 d ƒ ƒ d  S(   Ni    i
   Rs   t   chunksi   i   i   i   t   mint   max(   i
   i
   (   i   i   (   R   Rv   t   normalR   Rx   R   t   clip(   t   xt   d(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt	   test_clipæ   s    %%%1c          C` sä   t  j j d d d d ƒ}  t  j j d d d d	 ƒd } |  | } t j | d ƒ } t t j | ƒ t  j | ƒ ƒ t t j | d t ƒt  j | d t ƒƒ t t j | ƒ t  j	 ƒ sÁ t
 ‚ t t j | ƒ t  j | ƒ ƒ d  S(
   Ni   id   Rs   i   y              ð?i   t   deg(   i   i   (   i   i   (   R   Rv   Rw   R   Rx   R   t   angleR}   R{   R~   R   (   R˜   R™   Rš   R   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt
   test_angleò   s    
+!c          C` s|   t  j j d d d d ƒj t ƒ d }  t j |  d ƒ } t t  j |  ƒ t j | ƒ ƒ t t  j	 |  ƒ t j	 | ƒ ƒ d  S(   Niÿÿÿÿi   Rs   i   i    i   (   i   i   (
   R   Rv   Rw   RŒ   t   floatR   Rx   R   t   isneginft   isposinf(   R   R‚   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_issignedinfþ   s    (t   funct   i0t   sinct
   nan_to_numc         C` sn   t  j j d d d d ƒ} t j | d ƒ } t t |  ƒ } t t  |  ƒ } t | | ƒ | | ƒ d t ƒd  S(   Ni   id   Rs   i   i   Rt   (   i   i   (   R   Rv   Rw   R   Rx   R   R   R}   (   R²   R   R‚   R   R€   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_non_ufunc_others  s
    c          C` sþ   t  j t d d ƒ }  t j t d d ƒ } t j j d d d d
 ƒ} t  j | d d ƒ} t j j d d d d ƒ} t  j | d d ƒ} t |  | | ƒ | | | ƒ ƒ t |  j | | ƒ | j | | ƒ ƒ t	 j
 t ƒ  t  j d	 „  d d ƒ Wd  QXd  S(   Ni   i   i    i
   Rs   R£   i   i   c         S` s   |  | |  | f S(   N(    (   R¨   t   y(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   <lambda>  R
   (   i
   i
   (   i   i   (   R   t
   frompyfuncR   R   Rv   R¦   Rx   R   R   R   R   t   NotImplementedError(   t   myaddt   np_myaddR¨   t   dxR·   t   dy(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_frompyfunc  s    %c          C` s€  t  t d d ƒ }  t j t d d ƒ } t j d d d g ƒ } t j j |  | d ƒ | | d ƒ ƒ t j t j	 |  ƒ ƒ } t j j | | d ƒ | | d ƒ ƒ |  j
 | j
 k s¹ t ‚ t j t ƒ  |  j Wd  QXd t |  ƒ k sî t ‚ t j j |  j | | ƒ | j | | ƒ ƒ |  j d k s.t ‚ t |  ƒ d k sFt ‚ t t  t d d ƒ ƒ t t  t d d ƒ ƒ k s|t ‚ d  S(   Ni   i   i   R   s   frompyfunc-adds   da.frompyfunc<add, 2, 1>(   R   R   R   R¹   RŽ   t   testingt   assert_equalt   picklet   loadst   dumpsR   R   R   R   R   R    R"   R   R   R!   R   (   t   ft   np_fR¨   t   f2(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_frompyfunc_wrapper!  s    %%+c          C` s£   t  j d ƒ j d	 ƒ }  t j |  d d
 ƒ} xo t  j t  j t  j t  j t	 t  j
 d d ƒg D]= } t | | ƒ t j ƒ s‚ t ‚ t | | ƒ | |  ƒ ƒ q^ Wd  S(   Ni   i   i   R£   i   i   t   axisi    (   i   i   (   i   i   (   R   t   aranget   reshapeR   Rx   Rj   R–   R   Rc   R   t   prodR{   R|   R   R   (   R¨   R©   R²   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_array_ufuncC  s
    7c          C` s×   t  j d ƒ j d ƒ }  t j |  d d ƒ} x£ t  j t  j g D] } t | | | ƒ t j ƒ sg t	 ‚ t
 | | | ƒ | |  |  ƒ ƒ t | j | | ƒ t j ƒ sª t	 ‚ t
 | j | | ƒ | j |  |  ƒ ƒ q@ Wd  S(   Ni   i   R£   i   (   i   i   (   i   i   (   R   RÊ   RË   R   Rx   R   R>   R{   R|   R   R   R   (   R¨   R©   R²   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_array_ufunc_binopL  s    !$c          C` se   t  j d d d ƒ}  t j |  d |  ƒt j |  d d |  ƒt |  t j t j d ƒ ƒ d ƒ d  S(   Ni
   R£   i   R‹   (   i   (   R   RÊ   R   Rj   R   R   (   R¨   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_array_ufunc_outX  s    c          C` sG   t  j d d d ƒ}  t j t ƒ  t j j |  ƒ s= t ‚ Wd  QXd  S(   Ni
   R£   i   (   i   (	   R   RÊ   R   R   t	   TypeErrorR   R   t   reduceR   (   R¨   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_unsupported_ufunc_methods_  s    c       	   C` s›   t  j d d d	 ƒ}  t j d d |  j ƒ} t j t t f ƒ  } t j	 |  d d | ƒWd  QXd t
 | j ƒ k s| t ‚ d t
 | j ƒ k s— t ‚ d  S(
   Ni
   R£   i   RŠ   i   R‹   R~   R|   (   i   (   R   RÊ   R   t   emptyRŠ   R   R   RÐ   Rº   R   t   strt   valueR   (   R¨   RÓ   t   info(    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_out_numpye  s    c          C` s_   t  j d d d ƒ}  t  j d d d ƒ} t j t ƒ   t j |  d | ƒsU t ‚ Wd  QXd  S(   Ni
   R£   i   i   R‹   (   i   (   i   (   R   RÊ   R   R   R   R   R	   R   (   R¨   R·   (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   test_out_shape_mismatcho  s    (,   t
   __future__R    R   R   RÂ   t	   functoolsR   t   operatorR   R   t   importorskipR   t
   dask.arrayRŽ   R   t   dask.array.ufuncR   t   dask.array.utilsR   t	   dask.baseR   R   R$   t   binary_ufuncst   unary_ufuncst   markt   parametrizeRƒ   Rˆ   R•   Rž   R¢   Rª   R­   R±   R¶   R¿   RÈ   RÍ   RÎ   RÏ   RÒ   R×   RØ   (    (    (    s:   lib/python2.7/site-packages/dask/array/tests/test_ufunc.pyt   <module>   sX   			'	'*$"			'		"						
