ó
¦–Õ\c           @   s§  d  d l  Z  d  d l m Z d  d l Z d  d l m Z m Z d  d l Z d  d l Z e j	 j
 d k rš e j d ƒ d  d l m Z m Z m Z m Z n e j j e d d ƒZ d  d	 l m Z d  d
 l m Z y d  d l m Z m Z Wn# e k
 re Z d Z d Z n Xe Z e j j e d d ƒZ  e j! d ƒ Z" d „  Z# d „  Z$ i d d 6d d 6e d f d 6e d f d 6e d d f d 6e% d d g f d 6Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, e j j- d e j. d e d e  ƒe j. d  e d e j j/ d d! ƒ ƒd" e0 d ƒ f d# e0 d ƒ f e j. d$ e d e  ƒg ƒ d% „  ƒ Z1 e j j- d e j. d e d e  ƒe j. d  e d e j j/ d d! ƒ ƒd" e0 d ƒ f d# e0 d ƒ f e j. d$ e d e  ƒg ƒ d& „  ƒ Z2 e  d' „  ƒ Z3 e j j- d( e j. d) d$ d* e d e  ƒd+ d d+ e0 d ƒ f e j. d+ d$ d, e d e  ƒe j. d) d d- e d e  ƒe j. d, d d, e d e  ƒg ƒ d. „  ƒ Z4 d/ „  Z5 d S(0   iÿÿÿÿN(   t   partial(   t   addt   negi   t   graphviz(   t	   dot_grapht
   task_labelt   labelt   to_graphvizt   reasons'   graphviz exception with Python -OO flag(   t   delayed(   t   ensure_not_exists(   t   Imaget   SVGs   IPython not installeds   .*\[label=(.*?) shape=(.*?)\]c         C   s&   t  j |  ƒ } | r" | j d ƒ Sd  S(   Ni   (   t   label_ret   matcht   group(   t   linet   m(    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt	   get_label"   s    c         C   s&   t  j |  ƒ } | r" | j d ƒ Sd  S(   Ni   (   R   R   R   (   R   R   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt	   get_shape(   s    i   t   at   bt   ct   dt   et   fc           C   sp   t  t t d ƒ d f ƒ d k s' t ‚ t  t d f ƒ d k sE t ‚ t  t t d d f f ƒ d k sl t ‚ d  S(   Ni   R   i   s   add(...)(   R   R    R   t   AssertionError(    (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_task_label6   s    'c          C   sH  t  d ƒ d k s t ‚ t  d ƒ d k s0 t ‚ i  }  t  d d |  ƒ} | d k sZ t ‚ t  d d |  ƒ} | d k s~ t ‚ t |  ƒ d k s– t ‚ t  d d |  ƒ} | d k sº t ‚ t |  ƒ d	 k sÒ t ‚ t  d d |  ƒ} | d k sö t ‚ t |  ƒ d	 k st ‚ t  d d |  ƒd k s,t ‚ t |  ƒ d	 k sDt ‚ d  S(
   Nt   xs)   elemwise-ffcd9aa2231d466b5aa91e8bfa9e9487s
   elemwise-#t   caches   elemwise-#0i   s)   elemwise-e890b510984f344edea9a5e5fe05c0dbs   elemwise-#1i   (   R   R   t   len(   R   t   result(    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt
   test_label<   s     c          C   s¯   t  t ƒ }  t t d  t t |  j ƒ ƒ ƒ } t | ƒ d k sE t	 ‚ t
 | ƒ d d d d d h k sl t	 ‚ t t d  t t |  j ƒ ƒ ƒ } t
 | ƒ t
 d	 ƒ k s« t	 ‚ d  S(
   Ni
   R   R   R   R   s   ""t   boxt   circle(   R!   R"   (   R   t   dskt   listt   filtert   Nonet   mapR   t   bodyR   R   t   setR   (   t   gt   labelst   shapes(    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_to_graphvizT   s    !'!c       	   C   sÀ   t  t d i i d d 6d 6d i i d d 6d d 6d	 6ƒ}  t t d  t t |  j ƒ ƒ ƒ } | d d
 d d d h k s} t ‚ t	 t d  t t
 |  j ƒ ƒ ƒ } t | ƒ t d ƒ k s¼ t ‚ d  S(   Nt   data_attributest   squaret   shapeR   t   function_attributest   neg_cR   t   ellipseR   R   R   R   s   ""R!   R"   (   R!   R"   R/   R3   (   R   R#   R)   R%   R&   R'   R   R(   R   R$   R   (   R*   R+   R,   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_to_graphviz_custom]   s    !!!c           C   s    t  t ƒ j d d k s t ‚ t  t d d ƒj d d k sD t ‚ t  t d i d d 6ƒj d d k sp t ‚ t  t d i d d 6ƒj d d k sœ t ‚ d  S(   Nt   rankdirt   BTt   LRt	   node_attrt   whitet   colort	   edge_attr(   R   R#   t
   graph_attrR   R8   R;   (    (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_to_graphviz_attributesi   s    %,c          C   s|   t  i d d 6d d 6ƒ }  t t d  t t |  j ƒ ƒ ƒ } t | ƒ d k sS t ‚ t |  j ƒ t | ƒ d k sx t ‚ d  S(   Ni   R   t   yi   (	   R   R$   R%   R&   R'   R   R(   R   R   (   R*   R+   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_aliasesp   s    !s
   format,typt   pngt   markst   jpegs    jpeg not always supported in dott   dott   pdft   svgc         C   s¨   t  |  j d ƒ ƒ } d j | | g ƒ } t | ƒ zb t t d | d | ƒ} t j j d ƒ sh t ‚ t j j	 | ƒ s€ t ‚ t
 | | ƒ s• t ‚ Wd  t | ƒ Xd  S(   Ns#   $(touch should_not_get_created.txt)t   .t   filenamet   formats   should_not_get_created.txt(   t   strt   joinR
   R   R#   t   ost   patht   existsR   t   isfilet
   isinstance(   t   tmpdirRH   t   typRG   t   targetR   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_dot_graphw   s    

c         C   s[   |  j  ƒ  } t t d d  d | ƒ} |  j  ƒ  } | | k sB t ‚ t | | ƒ sW t ‚ d  S(   NRG   RH   (   t   listdirR   R#   R&   R   RO   (   RP   RH   RQ   t   beforeR   t   after(    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_dot_graph_no_filename   s
    c          C   sz   d }  d } d j  |  | g ƒ } t | ƒ z= t t ƒ } t j j | ƒ sR t ‚ t | t	 ƒ sg t ‚ Wd  t | ƒ Xd  S(   Nt   mydaskR@   RF   (
   RJ   R
   R   R#   RK   RL   RN   R   RO   R   (   t   default_namet   default_formatRR   R   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_dot_graph_defaultsŸ   s    
s+   filename,format,target,expected_result_typet	   mydaskpdfs   mydaskpdf.svgs
   mydask.pdfs   mydask.pdf.svgs   mydaskpdf.pngc         C   sS   t  t d |  d | ƒ} t j j | ƒ s0 t ‚ t | | ƒ sE t ‚ t | ƒ d  S(   NRG   RH   (   R   R#   RK   RL   RN   R   RO   R
   (   RG   RH   RR   t   expected_result_typeR   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_filenames_and_formats¯   s    c          C   sb   t  d „ }  t |  ƒ d d d ƒ} t | j | j ƒ } d | k sL t ‚ d | k s^ t ‚ d  S(   Nc         S   s   |  | S(   N(    (   R   R>   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyR   ¾   s    i   R>   i   R   t   apply(   t   TrueR	   R   t   daskt   keyR   (   R   R   R   (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   test_delayed_kwargs_apply½   s
    (6   RK   t	   functoolsR    t   ret   operatorR   R   t   syst   pytestt   flagst   optimizet   importorskipt   dask.dotR   R   R   R   t   markt   skipifR`   t
   pytestmarkRa   R	   t
   dask.utilsR
   t   IPython.displayR   R   t   ImportErrort   ipython_not_installedR&   t   Falset   ipython_not_installed_markt   compileR   R   R   t   sumR#   R   R    R-   R4   R=   R?   t   parametrizet   paramt   xfailt   typeRS   RW   R[   R^   Rc   (    (    (    s2   lib/python2.7/site-packages/dask/tests/test_dot.pyt   <module>   sp   %	
			
							$'$'-	