
    daf                         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m	Z	 d dl
mZ ddlmZmZmZmZmZmZmZmZ d Z G d d	      Z e e       e       d
 Zedk(  r ej4                          yy)    N)futures)CANCELLED_AND_NOTIFIEDFINISHEDFuture)support   )PENDING_FUTURERUNNING_FUTURECANCELLED_AND_NOTIFIED_FUTUREEXCEPTION_FUTURESUCCESSFUL_FUTUREcreate_futurecreate_executor_testssetup_modulec                     | |z  S N )xys     I/root/Python-3.12.4/Lib/test/test_concurrent_futures/test_as_completed.pymulr      s    q5L    c                   *    e Zd Zd Zd Zd Zd Zd Zy)AsCompletedTestsc           	      >   | j                   j                  t        dd      }| j                   j                  t        dd      }t        t	        j
                  t        t        t        ||g            }| j                  t        t        t        t        ||g      |       y )N            )
executorsubmitr   setr   as_completedr   r   r   assertEqual)selffuture1future2	completeds       r   test_no_timeoutz AsCompletedTests.test_no_timeout   s    --&&sAr2--&&sAq1,,.!"'#$ %	
 	.!"'#$
 	r   c                    t         t        t        h}d}d|fD ]  }| j                  |      5  t	               }| j
                  j                  t        j                  |dz        }	 t        j                  ||hz  |      D ]  }|j                  |        	 | j                  ||       ddd        y# t        j                  $ r Y 2w xY w# 1 sw Y   xY w)zUTest ``futures.as_completed`` timing out before
        completing it's final future.g?r   
   N)r   r   r   subTestr"   r    r!   timesleepr   r#   addTimeoutErrorr$   )r%   already_completedshort_timeouttimeoutcompleted_futuresfuturefs          r   test_future_times_outz&AsCompletedTests.test_future_times_out&   s     ;-.0
 =) 	GGg& G$'E!--djj-":LM$11)VH4 1 *--a0	1   !24EFG G	G ++ G Gs/   8C%0B3C3C	CC		CC	c                    | j                   j                  t        j                  d      }t	        j
                  t        j                  |d            D cg c]  }| }}| j                  t        |      d       y c c}w )Nr      r   )
r    r!   r-   r.   r   r#   	itertoolsrepeatr$   len)r%   r&   r6   r(   s       r   test_duplicate_futuresz'AsCompletedTests.test_duplicate_futuresA   sk     --&&tzz15++I,<,<Wa,HI
A
	 
 	Y+
s   	A=c                 <   t        d      D cg c]  }t                }}|j                  t        t                     |j                  t        t
        d             | j                  t        j                        5  t        j                  |d      D ]S  }|j                  |       t        j                  |      }~t        j                          | j                   |              U 	 d d d        |d   j!                  d       t        j                  |      D ]j  }|j                  |       t        j                  |      }~t        j                          | j                   |              |sW|d   j!                  d       l y c c}w # 1 sw Y   xY w)N   )state*   )r@   resultr   r3   test)ranger   appendr   r   r   assertRaisesr   r0   r#   removeweakrefrefr   
gc_collectassertIsNone
set_result)r%   _futures_listr5   wrs        r   "test_free_reference_yielded_futurez3AsCompletedTests.test_free_reference_yielded_futureK   sI    +0(3Q33M0FGHMDEw334 	(!..|QG (##F+[[(""$!!"$'(	( 	Q""6***<8 	3F'V$B bd#Q**62	3 4	( 	(s   F?A.FFc                 "   t         t        t        t        g}| j	                  t
        j                        5 }t        t        j                  |d             d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nr   rC   z2 (of 4) futures unfinished)r   r	   r
   r   rG   r   r0   listr#   r$   str	exception)r%   rO   cms      r   "test_correct_timeout_exception_msgz3AsCompletedTests.test_correct_timeout_exception_msgd   sv    5~&(9; w334 	@%%lA>?	@ 	R\\*,IJ	@ 	@s   !BBN)__name__
__module____qualname__r)   r7   r=   rQ   rW   r   r   r   r   r      s     G6,32Kr   r   c                      t                y r   )r   r   r   r   setUpModuler\   q   s    Nr   __main__)r:   r-   unittestrI   
concurrentr   concurrent.futures._baser   r   r   rD   r   utilr	   r
   r   r   r   r   r   r   r   r   globalsr\   rX   mainr   r   r   <module>rd      st        . . 8 8 8VK VKr gi!1 2 zHMMO r   