
    Cd                    d   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j                            deeg          d             Zej                            deeg          d             Zd Zd Zd Z d Z!d Z"dS )    )annotationsN)ThreadPoolExecutor)
ThreadPool)sleeptime)	CPU_COUNTget)addincc                     ddt           dft          ddfd} t          | d          dk    sJ t          | ddg          d	k    sJ d S )
N      xzy)r   r   r   wr      )r   r   )r   r   r
   dsks    8lib/python3.11/site-packages/dask/tests/test_threaded.pytest_getr      s[    c
#sC
A
ACsC==AsS#J6))))))    c                 f    ddt           ddft          ddgfd} t          | ddg          dk    sJ d S )	Nr   r   r   r   )r   r   abr   r   )   r   )r   sumr
   r   s    r   test_nested_getr      sG    c3sS#J6G
H
HCsS#J6))))))r   c                 :    ddi} t          | d          dk    sJ d S )Nr   r   r	   r   s    r   test_get_without_computationr!      s*    (CsC==Ar   c                 B   ddl m}  d }d }ddi} | ||          5   | ||          5  t          j        t          d	          5  t          |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr   )Callbackc                     d S 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	0	0  XE%000 	 	z@@@  C              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 sX   BA<A%A<%A))A<,A)-A<0B<B 	 BB 	BBBc                    t                      r%   r-   r   s    r   badr9   3   s    
,,r   c                 Z     dt           dfd t          j        t           fd           d S )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#smm r   )r9   r4   r5   r.   r   s   @r   test_exceptions_rise_to_topr?   7   s6    c

#
#C
M*333344444r   pool_typc                F    | t                     5 }t          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            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Npoolr   r   r   )r   daskconfigsetr
   r   )r@   rC   s     r   test_reuse_poolrG   <   s'   	)		 2[__$_'' 	2 	2c1X,,1111c1X,,11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	22 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s4   !B?A>2B>B	BB	BBBc                ,   d fdt          d          D             }t          t          d t          t          |                    D             ff|d<    | d          5 }t          |d|          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nc                 F    t          d           t          j                    S )N{Gz?)r   	threading	get_identr&   r   r   fztest_pool_kwarg.<locals>.fF   s    d"$$$r   c                    i | ]}d |ff	S r8   r&   ).0irM   s     r   
<dictcomp>z#test_pool_kwarg.<locals>.<dictcomp>J   s!    
-
-
-aC8aT
-
-
-r      c                    g | ]}d |fS r8   r&   rO   rP   s     r   
<listcomp>z#test_pool_kwarg.<locals>.<listcomp>K   s    >>>S!H>>>r   r   r   rB   )rangelenrF   r
   )r@   r   rC   rM   s      @r   test_pool_kwargrX   D   s    % % % .
-
-
-599
-
-
-Cc>>eCHHoo>>>?@CH	! -3$'''1,,,,,- - - - - - - - - - - - - - - - - -s   "B		BBc                    g fd} t          j                    }t          d          D ]U}t          j        | d          }d|_        |                                 |                                 dgk    sJ d d = Vt                      }t          j                    |dz   k    rBt          d           t                      |d	z   k     sJ t          j                    |dz   k    @d S d S )
Nc                d     t          d fdfidd          }                    |           d S )Nr   c                      S r%   r&   rP   s   r   r>   z8test_threaded_within_thread.<locals>.f.<locals>.<lambda>U   s    A r   r   num_workers)r
   append)rP   resultLs   ` r   rM   z&test_threaded_within_thread.<locals>.fT   s=    cIIII<(#1===	r      )r   targetr(   Tr   
   rJ      )	rK   active_countrV   Threaddaemonr0   joinr   r   )rM   before_tr0   ra   s        @r   test_threaded_within_threadrn   Q   s   
A     #%%F2YY  AD111					QCxxxxaaaDDFFE

 
"
"Vb[
0
0dvv	!!!! 
 
"
"Vb[
0
0
0
0
0
0r   c                    t          j                    } d t          d          D             }t          t	          |          f|d<   t          d          D ]}t          |dd           t          j                    }|| dz   k    sJ d S )Nc                     i | ]}d |f|fdfS )r   c                    | S r%   r&   r\   s    r   r>   z=test_dont_spawn_too_many_threads.<locals>.<dictcomp>.<lambda>k       ! r   r&   rT   s     r   rQ   z4test_dont_spawn_too_many_threads.<locals>.<dictcomp>k   '    
9
9
9!C8qmmm%
9
9
9r   re   r   rb   r   r]      )rK   rg   rV   r   listr
   rk   r   rl   afters       r    test_dont_spawn_too_many_threadsrx   h   s    #%%F
9
9uRyy
9
9
9CT#YYCH2YY % %C!$$$$$"$$EFQJr   c                     t          j                    } d t          d          D             }t          t	          |          f|d<   t          d          D ]}t          |d           t          j                    }|| t          dz  z   k    sJ d S )Nc                     i | ]}d |f|fdfS )r   c                    | S r%   r&   r\   s    r   r>   zGtest_dont_spawn_too_many_threads_CPU_COUNT.<locals>.<dictcomp>.<lambda>x   rr   r   r&   rT   s     r   rQ   z>test_dont_spawn_too_many_threads_CPU_COUNT.<locals>.<dictcomp>x   rs   r   re   r   rb   r   )rK   rg   rV   r   ru   r
   r   rv   s       r   *test_dont_spawn_too_many_threads_CPU_COUNTr|   u   s    #%%F
9
9uRyy
9
9
9CT#YYCH2YY  C"$$EFY]*******r   c                 8   d } t           df| dfdg fd}g }t          d          D ]G}t          j        |          }d|_        |                                 |                    |           H|D ]}|                                 d	gdz  k    sJ d S )
Nc                    dS )Nr   r&   r8   s    r   rM   ztest_thread_safety.<locals>.f   s    qr   g?r   r;   c                 N                          t          d                     d S r=   )r_   r
   )ra   r   s   r   test_fz"test_thread_safety.<locals>.test_f   s#    	S#r   rb   )rd   Tr   )r   rV   rK   rh   ri   r0   r_   rj   )rM   r   threadsrl   rm   threadra   r   s         @@r   test_thread_safetyr      s       QH
-
-C
A            G2YY  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} fdt          d          D             }t          t          |
                                          f|d<   t	          j        | f          }|                                 t          t                    5 }t          j        t"                    5  t%          |d|           d d d            n# 1 swxY w Y                                    d d d            n# 1 swxY w Y   |                                 d S )Nwin32r   )interrupt_mainreturnNonec                 F    t          j         t           j                   d S r%   )signalpthread_killSIGINT)main_threads   r   r   z&test_interrupt.<locals>.interrupt_main   s    V];;;;;r   in_clog_eventthreading.Event
clog_eventc                V    |                                   |                                 d S r%   )rF   wait)r   r   s     r   clogztest_interrupt.<locals>.clog   s*    r   c                D    |                                                 d S r%   )r   )r   r   s    r   	interruptz!test_interrupt.<locals>.interrupt   s)    r   c                     i | ]
}d |ffS r8   r&   )rO   rP   r   r   r   s     r   rQ   z"test_interrupt.<locals>.<dictcomp>   s&    
J
J
J1C8dM:6
J
J
Jr   rb   r   rc   rB   )r   r   )r   r   r   r   r   r   )r   r   r   r   )sysplatform_threadr   rK   rL   EventrV   rW   ru   keysrh   r0   r   r   r4   r5   KeyboardInterruptr
   rF   rj   )	r   r   interrupterrC   r   r   r   r   r   s	       @@@@@r   test_interruptr      s    |w*******)++	< 	< 	< 	< 	< 	< O%%M""J         K
J
J
J
J
Jb		
J
J
JCT#((**%%&CH")=:JKKKK 
I	&	& $],-- 	% 	%St$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%               s6   -ED&E&D*	*E-D*	.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   rX   rn   rx   r|   r   r   r&   r   r   <module>r      s   " " " " " "  



     1 1 1 1 1 1 + + + + + +           ! ! ! ! ! !       $ $ $ $ $ $ $ $* * ** * *
  
  "  5 5 5
 j2D%EFF2 2 GF2 j2D%EFF	- 	- GF	-" " ".
 
 

+ 
+ 
+  0# # # # #r   