ó
¦–Õ\c           @   sM  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z m Z d  d l Z d  d l	 Z	 d  d l
 m Z d  d l m Z d  d l m Z m Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e j j e d d ƒd „  ƒ Z d „  Z d „  Z d „  Z e j j d e j k d d ƒd „  ƒ Z  d S(   iÿÿÿÿN(   t
   ThreadPool(   t   timet   sleep(   t   PY2(   t   get(   t   inct   addc          C   sq   i d d 6d d 6t  d f d 6t d d f d 6}  t |  d ƒ d k sL t ‚ t |  d d g ƒ d k sm t ‚ d  S(	   Ni   t   xi   t   yt   zt   wi   (   i   i   (   R   R   R   t   AssertionError(   t   dsk(    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_get   s    1c          C   s\   i d d 6d d 6t  d d f d 6t d d g f d 6}  t |  d d g ƒ d k sX t ‚ d  S(	   Ni   R   i   R   t   at   bi   (   i   i   (   R   t   sumR   R   (   R   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_nested_get   s    7c          C   s,   i d d 6}  t  |  d ƒ d k s( t ‚ d  S(   Ni   R   (   R   R   (   R   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_get_without_computation   s    c          C   s”   d d l  m }  d „  } d „  } i d d 6} |  d | d | ƒ J |  d | d | ƒ . t j t d	 d
 ƒ t | d ƒ Wd  QXWd  QXWd  QXd  S(   Niÿÿÿÿ(   t   Callbackc          _   s   d  S(   N(    (   t   argst   kwargs(    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   _f_ok#   s    c          _   s   t  d ƒ ‚ d  S(   Nt   my_exception(   t
   ValueError(   R   R   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt	   _f_broken&   s    i   R   t   startt   finisht   matchR   (   t   dask.callbacksR   t   pytestt   raisesR   R   (   R   R   R   R   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_broken_callback    s    		c         C   s   t  ƒ  ‚ d  S(   N(   R   (   R   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   bad1   s    c              s7   i d d 6t  d f d 6‰  t j t ‡  f d †  ƒ d  S(   Ni   R   R   c              s   t  ˆ  d ƒ S(   NR   (   R   (    (   R   (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   <lambda>7   t    (   R!   R   R   R   (    (    (   R   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_exceptions_rise_to_top5   s    c          C   sy   t  ƒ  }  t j j d |  ƒ U t i t d f d 6d ƒ d k sG t ‚ t i t d f d 6d ƒ d k so t ‚ Wd  QXd  S(   Nt   pooli   R   i   (   R    t   daskt   configt   setR   R   R   (   R%   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_reuse_pool:   s    	(t   reasons   threading API changedc       	      sš   d „  ‰  ‡  f d †  t  d ƒ Dƒ }  t t g  t  t |  ƒ ƒ D] } d | f ^ q> f f |  d <t d ƒ ( } t |  d d | ƒd k s t ‚ Wd  QXd  S(   Nc           S   s   t  d ƒ t j ƒ  S(   Ng{®Gáz„?(   R   t	   threadingt	   get_ident(    (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   fC   s    
c            s"   i  |  ] } ˆ  f d  | f “ q S(   R   (    (   t   .0t   i(   R-   (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pys
   <dictcomp>G   s   	 i   R   i   R%   (   t   ranget   lenR(   R    R   R   (   R   R/   R%   (    (   R-   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_pool_kwargA   s
    	;c             sÓ   g  ‰  ‡  f d †  }  t  j ƒ  } xb t d ƒ D]T } t  j d |  d d	 ƒ } t | _ | j ƒ  | j ƒ  ˆ  d g k s~ t ‚ ˆ  2q. Wt	 ƒ  } x= t  j ƒ  | d k rÎ t
 d ƒ t	 ƒ  | d k  s’ t ‚ q’ Wd  S(
   Nc            s9   t  i ‡  f d †  f d 6d d d ƒ} ˆ j | ƒ d  S(   Nc              s   ˆ  S(   N(    (    (   R/   (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyR"   R   R#   R   t   num_workersi   (   R   t   append(   R/   t   result(   t   L(   R/   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyR-   Q   s    (i   t   targetR   i   i
   g{®Gáz„?i   (   i   (   R+   t   active_countR0   t   Threadt   Truet   daemonR   t   joinR   R   R   (   R-   t   beforeR/   t   tR   (    (   R6   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_threaded_within_threadN   s    	

	
c          C   sˆ   t  j ƒ  }  d „  t d ƒ Dƒ } t t | ƒ f | d <x' t d ƒ D] } t | d d d ƒqE Wt  j ƒ  } | |  d k s„ t ‚ d  S(   Nc            s+   i  |  ]! ‰  ‡  f d  †  f d ˆ  f “ q S(   c              s   ˆ  S(   N(    (    (   R/   (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyR"   h   R#   R   (    (   R.   (    (   R/   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pys
   <dictcomp>h   s   	 i
   R   i   R3   i   i   (   R+   R8   R0   R   t   listR   R   (   R=   R   R/   t   after(    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt    test_dont_spawn_too_many_threadse   s    c             sÈ   d „  }  i t  d f d 6|  d f d 6‰ g  ‰  ‡  ‡ f d †  } g  } xF t d ƒ D]8 } t j d | ƒ } t | _ | j ƒ  | j | ƒ qT Wx | D] } | j ƒ  q— Wˆ  d g d k sÄ t	 ‚ d  S(	   Nc         S   s   d S(   Ni   (    (   R   (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyR-   s   s    gš™™™™™©?R   R   c              s   ˆ  j  t ˆ d ƒ ƒ d  S(   NR   (   R4   R   (    (   R6   R   (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_fz   s    i   R7   i   (
   R   R0   R+   R9   R:   R;   R   R4   R<   R   (   R-   RC   t   threadsR/   R>   t   thread(    (   R6   R   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_thread_safetyr   s    	 	
t   xdists>   This test fails intermittently when using pytest-xdist (maybe)c             s5  t  r d d l m }  n= t j d k r; d d l m }  n t j ƒ  ‰ ‡ f d †  }  d „  ‰  ‡  f d †  t d ƒ Dƒ } t	 t
 | j ƒ  ƒ f | d <y6 t j d	 |  ƒ } | j ƒ  t ƒ  } t | d ƒ Wn3 t k
 rà n# t k
 rt st d
 ƒ ‚ n Xt ƒ  } | | d k r1t s1t d
 ƒ ‚ n  d  S(   Niÿÿÿÿ(   t   interrupt_maint   ntc              s   t  j ˆ  t  j ƒ d  S(   N(   t   signalt   pthread_killt   SIGINT(    (   t   main_thread(    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyRH   ˜   s    c           S   s   t  d ƒ d  S(   Ni   (   R   (    (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt	   long_task›   s    c            s"   i  |  ] } ˆ  f d  | f “ q S(   R   (    (   R.   R/   (   RN   (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pys
   <dictcomp>ž   s   	 i   R   g      à?s   Failed to interrupti   (   R   RE   RH   t   ost   namet   _threadR+   R,   R0   R1   R@   t   keyst   TimerR   R   R   t   KeyboardInterruptt	   Exceptiont   FalseR   (   RH   R   t   interrupterR   t   stop(    (   RN   RM   s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   test_interruptŠ   s*    	
		(!   RO   t   sysRJ   R+   t   multiprocessing.poolR    R   R   R   R&   t   dask.compatibilityR   t   dask.threadedR   t   dask.utils_testR   R   R   R   R   R    R!   R$   R)   t   markt   skipifR2   R?   RB   RF   t   xfailt   modulesRY   (    (    (    s7   lib/python2.7/site-packages/dask/tests/test_threaded.pyt   <module>   s.   							!			