ó
¦–Õ\c           @   s  d  d l  m Z m Z d  d l Z d  d l m Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z d  d l m Z d  d l m Z m Z d  d l m Z d  d l Z y d  d l Z Wn e k
 rÉ d Z n Xy d  d l Z Wn e k
 ró d Z n Xe	 ƒ  Z i d	 d
 6d d 6e d
 d f d 6e d
 d f d 6e d d f d 6Z i d	 d
 6d d 6d „  d
 d f d 6Z d „  Z d „  Z d „  Z e j j d ƒ d „  ƒ Z  e j j d ƒ d „  ƒ Z! d „  Z" e j j# d e	 e j$ d „  d e j j d ƒ ƒe g ƒ d „  ƒ Z% e j j d ƒ d „  ƒ Z& e j j d ƒ d „  ƒ Z' d „  Z( e j j d ƒ d  „  ƒ Z) e j j d ƒ e j j d ƒ d! „  ƒ ƒ Z* e j j d ƒ d" „  ƒ Z+ e j j d ƒ e j j d ƒ d# „  ƒ ƒ Z, e j j d ƒ d$ „  ƒ Z- e j j d ƒ d% „  ƒ Z. d S(&   iÿÿÿÿ(   t   addt   mulN(   t   sleep(   t   LooseVersion(   t   Profilert   ResourceProfilert   CacheProfiler(   t   get(   t   ignoringt   tmpfile(   t   applyi   t   ai   t   bt   ct   dt   ec         C   s   t  d ƒ p |  | S(   Ngš™™™™™¹?(   R   (   R   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   <lambda>   t    c          C   sò   t   t t d ƒ }  Wd  QX|  d k s. t ‚ t t  j d d „  ƒ} g  | D] } | j ^ qM } | d d d g k s} t ‚ g  | D] } | j ^ q„ } | t d d f t	 d d f t	 d d f g k sÏ t ‚ t  j
 ƒ  t  j g  k sî t ‚ d  S(	   NR   i   t   keyc         S   s   |  j  S(   N(   R   (   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyR   &   R   R   R   R   R   (   t   profR   t   dskt   AssertionErrort   sortedt   resultsR   t   taskR    R   t   clear(   t   outt	   prof_datat   it   keyst   tasks(    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_profiler"   s    6
c          C   sª   d „  }  i |  d d f d 6|  d d f d 6|  d d f d 6} t  t ƒ  t  t | d ƒ Wd  QXWd  QXt d „  t j Dƒ ƒ s‹ t ‚ t t j ƒ d k s¦ t ‚ d  S(	   Nc         S   s   |  | S(   N(    (   t   xt   y(    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyR   0   R   i   R    i   R!   i    t   zc         s   s!   |  ] } t  | ƒ d  k Vq d S(   i   N(   t   len(   t   .0t   v(    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pys	   <genexpr>7   s    (   R   t   ZeroDivisionErrorR   R   t   allR   R   R#   (   t   divR   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_profiler_works_under_error/   s    	6c       	   C   sÓ   t   t t d ƒ Wd  QXt t  j ƒ }  i t d d f d 6t d d f d 6} t   t | d ƒ Wd  QXt t  j ƒ } t  , t t d ƒ t | d ƒ t t d ƒ Wd  QXt t  j ƒ |  | |  k sÏ t ‚ d  S(   NR   i   i   R    R!   (   R   R   R   R#   R   R    R   (   t   nt   dsk2t   m(    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_two_gets;   s    &s
   not psutilc          C   sê   t  d d ƒ  }  t t d ƒ Wd  QX|  j } t | ƒ d k sF t ‚ t d „  | Dƒ ƒ sb t ‚ |  j ƒ  su t ‚ |  j ƒ  |  j g  k s” t ‚ |  j	 ƒ  |  j ƒ  s± t ‚ |   t t d ƒ Wd  QXt |  j ƒ d k sæ t ‚ d  S(   Nt   dtg{®Gáz„?R   i    c         s   s0   |  ]& } t  | t ƒ o' t | ƒ d  k Vq d S(   i   N(   t
   isinstancet   tupleR#   (   R$   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pys	   <genexpr>T   s    (
   R   R   R+   R   R#   R   R'   t   _is_runningR   t   close(   t   rprofR   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_resource_profilerN   s    	

c          C   s  t  d d ƒ < }  t t d ƒ t |  j ƒ d k s: t ‚ t t d ƒ Wd  QX|  j } t d „  | Dƒ ƒ sr t ‚ |  j ƒ  |  j ƒ  t t d ƒ t |  j ƒ d k s® t ‚ t t d ƒ |  j	 ƒ  |  j } t d „  | Dƒ ƒ sê t ‚ |  j
 ƒ  |  j ƒ  st ‚ d  S(   NR.   g{®Gáz„?R   i    c         s   s0   |  ]& } t  | t ƒ o' t | ƒ d  k Vq d S(   i   N(   R/   R0   R#   (   R$   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pys	   <genexpr>m   s    c         s   s0   |  ]& } t  | t ƒ o' t | ƒ d  k Vq d S(   i   N(   R/   R0   R#   (   R$   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pys	   <genexpr>w   s    (   R   R   R+   R#   R   R   R'   R   t   registert
   unregisterR2   R1   (   R3   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt$   test_resource_profiler_multiple_getsf   s     	


	
c             s  t  ƒ   }  t t d ƒ Wd  QX|  j } t d „  | Dƒ ƒ sD t ‚ |  j ƒ  |  j g  k sc t ‚ d g ‰  ‡  f d †  } t  | ƒ  }  t t d ƒ Wd  QX|  j } ˆ  d t | ƒ k sÂ t ‚ ˆ  d | d j k sß t ‚ |  j	 d k sô t ‚ t  d | d d	 ƒ j	 d	 k st ‚ d  S(
   NR   c         s   s0   |  ]& } t  | t ƒ o' t | ƒ d  k Vq d S(   i   N(   R/   R0   R#   (   R$   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pys	   <genexpr>   s    i    c            s   ˆ  d c d 7<ˆ  d S(   Ni    i   (    (   t   res(   t   tics(    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   nbytesˆ   s    iÿÿÿÿR:   t   metrict   metric_namet   foo(
   R   R   R+   R   R'   R   R   R#   R;   t   _metric_name(   t   cprofR   R:   (    (   R9   sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_cache_profiler}   s    	
		t   profilerc           C   s   t  d d ƒ S(   NR.   g{®Gáz„?(   R   (    (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyR   ™   R   t   marksc         C   s   |  ƒ  } zd | j  ƒ  t t d ƒ t | j ƒ } | d k sD t ‚ t t d ƒ t | j ƒ | k sl t ‚ Wd  | j ƒ  Xd  S(   NR   i    (   R5   R   R+   R#   R   R   R6   (   RA   R   R*   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_register–   s    	
s	   not bokehc             sÛ   d d l  m }  d d l m ‰  ‡  f d †  } i d d 6d d 6d	 d
 6} |  | | ƒ ƒ | k sh t ‚ i d d d	 g d 6d d 6d	 d
 6} |  | | ƒ ƒ | k sª t ‚ d d d	 g } |  | | ƒ ƒ | k s× t ‚ d  S(   Niÿÿÿÿ(   t   unquote(   t   to_task_daskc            s   ˆ  |  ƒ d S(   Ni    (    (   R    (   RE   (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyR   ­   R   i   R   i   R   i   R   (   t"   dask.diagnostics.profile_visualizeRD   t   dask.delayedRE   R   (   RD   t   ft   t(    (   RE   sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_unquote©   s    $c       
   C   s{  d d l  m }  t d d d d d g ƒ } |  t d d f | ƒ d	 k sO t ‚ |  t t d d f f | ƒ d
 k sy t ‚ d } |  t d d t d d f g f | ƒ | k s² t ‚ |  t d f | ƒ d k sÓ t ‚ t |  t t | ƒ d f | ƒ ƒ d k  st ‚ |  t t | ƒ d f | ƒ d k s/t ‚ |  t d d t d d g f d d g d f | ƒ d k sot ‚ |  t d d t d t d d d g f g f d d g f | ƒ d k sºt ‚ d d d „ } t | t	 d d g f t
 d d d g g d d g g f f } |  | | ƒ d k s t ‚ t | t	 d d g f t
 d d d g g d d g g f f } |  | | ƒ d k swt ‚ d  S(   Niÿÿÿÿ(   t   pprint_taskR   R   R   R   R   i   s	   add(_, *)s   add(add(_, *))s   sum([*, _, add(_, *)])i   i   i   i   i   i   s   sum(*)id   s   sum([_, _, _, ...])s   sum([*, *, sum([_, *]), ...])s$   sum([*, *, sum([_, sum(...)]), ...])c         S   s   |  | t  | ƒ | S(   N(   t   sum(   t   wR    R!   R"   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyR=   È   s    R!   R"   s   foo(_, _, y=[_, _], z=_)s   foo(_, _, y=[_, *], z=*)(   i   i   i   i   i   i   i   (    (   RF   RK   t   setR    R   RL   R#   t   listR
   R0   t   dict(   RK   R   R8   R=   R   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_pprint_task¶   s(    $*3!1+16''c         C   s   t  |  j d |  j ƒ | k S(   Nt   text(   t   getattrt   title(   t   pRT   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   check_titleÓ   s    c          C   s  t   t t d ƒ Wd  QXt  j d d d d d d d d	 d
 t d t ƒ }  |  j d k s_ t ‚ |  j d k st t ‚ t |  j	 ƒ d k s t ‚ t
 |  j	 d t j j ƒ s± t ‚ t |  d	 ƒ sÆ t ‚ t  j ƒ  t j d  ƒ  } t  j d
 t d t ƒ Wd  QXt | ƒ d k st ‚ d  S(   NR   t
   plot_widthiô  t   plot_heighti,  t   toolst   hoverRT   s   Not the defaultt   showt   savei   i    (   R   R   R   t	   visualizet   FalseRW   R   RX   R#   RY   R/   t   bokeht   modelst	   HoverToolRV   R   t   pytestt   warnst   None(   RU   t   record(    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_profiler_plotØ   s     "
c          C   sâ  t  d d ƒ  }  t t d ƒ Wd  QX|  j d d d d d d	 d
 d d t d t ƒ } | j d k sj t ‚ | j d k s t ‚ t | j	 ƒ d k sš t ‚ t
 | j	 d t j j ƒ s¼ t ‚ t | d ƒ sÑ t ‚ |  j ƒ  x g  d g g D]ï } | |  _ t j d  ƒ  } |  j d t d t ƒ } Wd  QXt | ƒ d k sBt ‚ | j j d k sZt ‚ | j j d k srt ‚ | j j d k sŠt ‚ | j j d k s¢t ‚ | j d j d k s¾t ‚ | j d j d k së t ‚ që Wd  S(   NR.   g{®Gáz„?R   RW   iô  RX   i,  RY   RZ   RT   s   Not the defaultR[   R\   i   i    g      ð?id   t   memory(   g      ð?i    i    (   R   R   R+   R]   R^   RW   R   RX   R#   RY   R/   R_   R`   Ra   RV   R   R   Rb   Rc   Rd   t   x_ranget   startt   endt   y_ranget   extra_y_ranges(   R3   RU   R   Re   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_resource_profiler_plotî   s0    "
	c          C   sA  t  d d ƒ  }  t t d ƒ Wd  QX|  j d d d d d d	 d
 d d t d t ƒ } | j d k sj t ‚ | j d k s t ‚ t | j	 ƒ d k sš t ‚ t
 | j	 d t j j ƒ s¼ t ‚ t | d ƒ sÑ t ‚ | j d j d k sí t ‚ |  j ƒ  t j d  ƒ  } |  j d t d t ƒ Wd  QXt | ƒ d k s=t ‚ d  S(   NR<   s   non-standardR   RW   iô  RX   i,  RY   RZ   RT   s   Not the defaultR[   R\   i   i    s   Cache Size (non-standard)(   R   R   R   R]   R^   RW   R   RX   R#   RY   R/   R_   R`   Ra   RV   t   axist
   axis_labelR   Rb   Rc   Rd   (   R?   RU   Re   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_cache_profiler_plot  s"    "
c          C   sÈ  d d l  m }  t d d ƒ ! } t  t t d ƒ Wd  QXWd  QX|  t | g d d d d	 d
 t d t ƒ} t t j	 ƒ } | d k r± g  | j
 d j
 D] } | d ^ q˜ } nY | d k rê g  | j
 d j
 D] } | j
 d ^ qÎ } n  g  | j
 D] } | d ^ qô } t | ƒ d k s"t ‚ t | d d	 ƒ s;t ‚ | d j d j d  k s[t ‚ | d j d  k stt ‚ | d j d j d k s”t ‚ t j ƒ  | j ƒ  |  t | g d
 t d t ƒd  S(   Niÿÿÿÿ(   R]   R.   g{®Gáz„?R   t
   label_sizei2   RT   s   Not the defaultR[   R\   s   1.1.0i   i    s   0.12.0i   s   Time (s)(   RF   R]   R   R   R   R+   R^   R   R_   t   __version__t   childrenR#   R   RV   t   xaxisRo   Rd   RT   R   (   R]   R3   RU   t   bokeh_versiont   rt   figures(    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_plot_multiple%  s(    *-   

c          C   s”   t  d ƒ ‚ }  t  t t d ƒ Wd  QXt j d t d |  ƒ t j j |  ƒ sW t	 ‚ t
 |  ƒ % } d | j ƒ  j ƒ  k s„ t	 ‚ Wd  QXWd  QXd  S(   Nt   htmlR   R[   t	   file_path(   R	   R   R   R   R]   R^   t   ost   patht   existsR   t   opent   readt   lower(   t   fnRH   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_saves_file@  s    c    	      C   s×  d d l  m }  d d l m } m } m } d d l m } t t	 d ƒ ƒ } |  d | ƒ } t
 t | | | ƒ ƒ ƒ } | g  | D] } | | ^ q‚ k s¡ t ‚ t t	 d ƒ ƒ } |  d | ƒ } t
 t | | ƒ ƒ } | g  | D] } | | ^ qá k s t ‚ d d	 d d	 d d	 g } |  d
 | ƒ } t t | ƒ ƒ d k sEt ‚ t t	 d ƒ ƒ } |  d | ƒ } t t | ƒ ƒ d k s„t ‚ t t	 d ƒ ƒ } |  d | ƒ } t t | ƒ ƒ t t | d ƒ ƒ k sÓt ‚ d  S(   Niÿÿÿÿ(   t
   get_colors(   t   Blues9t   Blues5t   Viridis(   t   cyclei   t   Bluesi   i    i   t   BrBGi   id   R†   i,  i   (   RF   Rƒ   t   bokeh.palettesR„   R…   R†   t	   itertoolsR‡   RO   t   rangeRP   t   zipR   R#   RN   (	   Rƒ   R„   R…   R†   R‡   t   funcst   cmapt   lkR   (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   test_get_colorsM  s(    ))(/   t   operatorR    R   R{   t   timeR   t   distutils.versionR   t   dask.diagnosticsR   R   R   t   dask.threadedR   t
   dask.utilsR   R	   t   dask.compatibilityR
   Rb   R_   t   ImportErrorRd   t   psutilR   R   R+   R   R)   R-   t   markt   skipifR4   R7   R@   t   parametrizet   paramRC   RJ   RQ   RV   Rf   Rm   Rp   Rx   R‚   R‘   (    (    (    sC   lib/python2.7/site-packages/dask/diagnostics/tests/test_profiler.pyt   <module>   s\   

	
'						