
    bi                    Z   d dl mZ d dl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 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ej4                  j7                  deeg      d        Zej4                  j7                  deeg      d        Zd Zd Zd Z d Z!d Z"y)    )annotationsN)ThreadPoolExecutor)
ThreadPool)sleeptime)	CPU_COUNTget)addincc                 t    ddt         dft        ddfd} t        | d      dk(  sJ t        | ddg      d	k(  sJ y )
N      xzy)r   r   r   wr      )r   r   )r   r   r
   dsks    S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_threaded.pytest_getr      sG    c
#sC
ACsC=AsS#J6)))    c                 V    ddt         ddft        ddgfd} t        | ddg      dk(  sJ y )	Nr   r   r   r   )r   r   abr   r   )   r   )r   sumr
   r   s    r   test_nested_getr      s8    c3sS#J6G
HCsS#J6)))r   c                 .    ddi} t        | d      dk(  sJ y )Nr   r   r	   r   s    r   test_get_without_computationr!      s    (CsC=Ar   c                    ddl m}  d }d }ddi} | ||      5   | ||      5  t        j                  t        d	      5  t        |d       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   )Callbackc                      y N argskwargss     r   _f_okz#test_broken_callback.<locals>._f_ok%   s    r   c                     t        d      )Nmy_exception
ValueErrorr'   s     r   	_f_brokenz'test_broken_callback.<locals>._f_broken(   s    ((r   r   r   )startfinishr,   )match)dask.callbacksr#   pytestraisesr.   r
   )r#   r*   r/   r   s       r   test_broken_callbackr6   "   s    ') (C		%	0 E%0 	z@ C	  	 	 s:   B A4A(A4B (A1-A44A=	9B  B	c                    t               r%   r-   r   s    r   badr9   3   s
    
,r   c                 V     dt         dfd t        j                  t         fd       y )Nr   r   r   r   c                     t         d      S Nr   r	   r   s   r   <lambda>z-test_exceptions_rise_to_top.<locals>.<lambda>9   s    c#sm r   )r9   r4   r5   r.   r   s   @r   test_exceptions_rise_to_topr?   7   s     c

#C
MM*34r   pool_typc                    | t               5 }t        j                  j                  |      5  t	        dt
        dfid      dk(  sJ t	        dt
        dfid      dk(  sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Npoolr   r   r   )r   daskconfigsetr
   r   )r@   rC   s     r   test_reuse_poolrG   <   s    	)	 2[[__$_' 	2c1X,111c1X,111	22 2	2 	22 2s"   !A?3A3"A?3A<	8A??Bc                   d }t        d      D ci c]  }d|f|f
 }}t        t        t        t        |            D cg c]  }d|f c}ff|d<    | d      5 }t        |d|      dk(  sJ 	 d d d        y c c}w c c}w # 1 sw Y   y xY w)Nc                 @    t        d       t        j                         S )N{Gz?)r   	threading	get_identr&   r   r   fztest_pool_kwarg.<locals>.fF   s    d""$$r      r   r   rB   )rangelenrF   r
   )r@   rM   ir   rC   s        r   test_pool_kwargrR   D   s    % $)9
-aC8aT>
-C
-ceCHo>S!H>?@CH	! -3$'1,,,- - .>- -s   A9 A>BBc                    g fd} t        j                         }t        d      D ]M  }t        j                  | d      }d|_        |j                          |j                          dgk(  sJ d d = O t               }t        j                         |dz   kD  r9t        d       t               |d	z   k  sJ t        j                         |dz   kD  r8y y )
Nc                R     t        d fdfidd      }j                  |       y )Nr   c                      S r%   r&   rQ   s   r   r>   z8test_threaded_within_thread.<locals>.f.<locals>.<lambda>U   s    A r   r   num_workers)r
   append)rQ   resultLs   ` r   rM   z&test_threaded_within_thread.<locals>.fT   s$    cI<(#1=	r      )r   targetr(   Tr   
   rJ      )	rK   active_countrO   Threaddaemonr0   joinr   r   )rM   before_tr0   r[   s        @r   test_threaded_within_threadrh   Q   s    
A ##%F2Y AD1			QCxxaD FE

 
 
"Vb[
0dv	!!! 
 
 
"Vb[
0r   c                    t        j                         } t        d      D ci c]  }d|f|fdf }}t        t	        |      f|d<   t        d      D ]  }t        |dd        t        j                         }|| dz   k  sJ y c c}w )Nr_   r   c                    | S r%   r&   rV   s    r   r>   z2test_dont_spawn_too_many_threads.<locals>.<lambda>k       ! r   r\   r   rW      )rK   ra   rO   r   listr
   re   rQ   r   rf   afters        r    test_dont_spawn_too_many_threadsrp   h   s    ##%F/4Ry
9!C8qm%%
9C
9T#YCH2Y %C!$% ""$EFQJ :s   Bc                    t        j                         } t        d      D ci c]  }d|f|fdf }}t        t	        |      f|d<   t        d      D ]  }t        |d        t        j                         }|| t        dz  z   k  sJ y c c}w )Nr_   r   c                    | S r%   r&   rV   s    r   r>   z<test_dont_spawn_too_many_threads_CPU_COUNT.<locals>.<lambda>x   rk   r   r\   r   )rK   ra   rO   r   rm   r
   r   rn   s        r   *test_dont_spawn_too_many_threads_CPU_COUNTrs   u   s    ##%F/4Ry
9!C8qm%%
9C
9T#YCH2Y C ""$EFY]**** :s   B
c                    d } t         df| dfdg fd}g }t        d      D ]@  }t        j                  |      }d|_        |j                          |j                  |       B |D ]  }|j                           d	gdz  k(  sJ y )
Nc                     y)Nr   r&   r8   s    r   rM   ztest_thread_safety.<locals>.f   s    r   g?r   r;   c                 <     j                  t        d             y r=   )rY   r
   )r[   r   s   r   test_fz"test_thread_safety.<locals>.test_f   s    	S#r   r\   )r^   Tr   )r   rO   rK   rb   rc   r0   rY   rd   )rM   rw   threadsrf   rg   threadr[   r   s         @@r   test_thread_safetyrz      s     QH
-C
A  G2Y F+		q	   b==r   c                   	 t         j                  dk(  rddlm nt	        j
                         	d	fdt	        j                         } t	        j                         }dd}dfd}t        d      D ci c]
  }d|f|| |f }}t        t        |j                               f|d<   t	        j                  || f	      }|j                          t        t              5 }t        j                   t"              5  t%        |d|
       d d d        |j'                          d d d        |j)                          y c c}w # 1 sw Y   7xY w# 1 sw Y   +xY w)Nwin32r   )interrupt_mainc                 N    t        j                   t         j                         y r%   )signalpthread_killSIGINT)main_threads   r   r}   z&test_interrupt.<locals>.interrupt_main   s    V]];r   c                D    | j                          |j                          y r%   )rF   wait)in_clog_event
clog_events     r   clogztest_interrupt.<locals>.clog   s    r   c                4    | j                                   y r%   )r   )r   r}   s    r   	interruptz!test_interrupt.<locals>.interrupt   s    r   r\   r   r]   rB   )returnNone)r   threading.Eventr   r   r   r   )r   r   r   r   )sysplatform_threadr}   rK   rL   EventrO   rP   rm   keysrb   r0   r   r   r4   r5   KeyboardInterruptr
   rF   rd   )
r   r   r   r   rQ   r   interrupterrC   r}   r   s
           @@r   test_interruptr      s    ||w*))+	< OO%M"J AFb	
J1C8dM:66
JC
JT#((*%&CH"")=:JKK 
I	& $]],- 	%St$	%  K	% 	% s*   6D: E:D?	E?E	EE)#
__future__r   r   r   rK   concurrent.futuresr   multiprocessing.poolr   r   r   r4   rD   dask.systemr   dask.threadedr
   dask.utils_testr   r   r   r   r!   r6   r9   r?   markparametrizerG   rR   rh   rp   rs   rz   r   r&   r   r   <module>r      s    "  
  1 +    !  $**

"5
 j2D%EF2 G2 j2D%EF	- G	-".

+0#r   