
    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	m
Z
mZmZ d dlmZ d dlmZ d dlmZ eddfdZ ee      Z ee      Z ee	      Z ee
      Z ee e       	      Z eed
      Z G d dej6                        Z G d d      Z G d de      Z G d de      Z G d de      Z  G d de      Z!efeee!e ffdZ"d Z#y)    N)futures)PENDINGRUNNING	CANCELLEDCANCELLED_AND_NOTIFIEDFINISHEDFuture)_check_system_limits)support)threading_helperc                 D    t               }| |_        ||_        ||_        |S N)r	   _state
_exception_result)state	exceptionresultfs       </root/Python-3.12.4/Lib/test/test_concurrent_futures/util.pycreate_futurer      s#    AAHALAIH    )r   )r   r   *   )r   r   c                       e Zd Zd Zd Zy)BaseTestCasec                 6    t        j                         | _        y r   )r   threading_setup_thread_keyselfs    r   setUpzBaseTestCase.setUp    s    +;;=r   c                 d    t        j                          t        j                  | j                    y r   )r   reap_childrenr   threading_cleanupr   r   s    r   tearDownzBaseTestCase.tearDown#   s"    **D,<,<=r   N)__name__
__module____qualname__r!   r%    r   r   r   r      s    >>r   r   c                   6     e Zd ZdZi Z fdZ fdZd Z xZS )ExecutorMixin   c                 @   t         |           t        j                         | _        t        | d      r= | j                  d| j                  | j                         d| j                  | _
        y  | j                  dd| j                  i| j                  | _
        y )Nctx)max_workers
mp_contextr/   r)   )superr!   time	monotonict1hasattrexecutor_typeworker_countget_contextexecutor_kwargsexecutorr    	__class__s    r   r!   zExecutorMixin.setUp,   s    .."4.D.. ( --++-( &&(DM
 /D.. ( --(&&(DMr   c                    | j                   j                  d       d | _         t        j                         | j                  z
  }t
        j                  rt        d|z  d       | j                  |dd       t        | )          y )NT)waitz%.2fs )endi,  z+synchronization issue: test lasted too long)r:   shutdownr2   r3   r4   r   verboseprint
assertLessr1   r%   )r    dtr<   s     r   r%   zExecutorMixin.tearDown:   se    D)^^'??'B,C(C!NOr   c                 @    t        j                  | j                        S r   )multiprocessingr8   r.   r   s    r   r8   zExecutorMixin.get_contextE   s    **48844r   )	r&   r'   r(   r7   r9   r!   r%   r8   __classcell__r<   s   @r   r+   r+   (   s    LO(	5r   r+   c                   $    e Zd Zej                  Zy)ThreadPoolMixinN)r&   r'   r(   r   ThreadPoolExecutorr6   r)   r   r   rK   rK   I   s    ..Mr   rK   c                   :     e Zd Zej                  ZdZ fdZ xZS )ProcessPoolForkMixinforkc                    	 t                t        j                  dk(  r| j                  d       t        j                  d      r| j                  d       t        | !         S # t        $ r | j                  d       Y uw xY wN.ProcessPoolExecutor unavailable on this systemwin32zrequire unix systemT)threadz'TSAN doesn't support threads after fork	r
   NotImplementedErrorskipTestsysplatformr   check_sanitizerr1   r8   r;   s    r   r8   z ProcessPoolForkMixin.get_contextQ   s    	L " <<7"MM/0""$/MMCDw"$$ # 	LMMJK	L   
A& &BB	r&   r'   r(   r   ProcessPoolExecutorr6   r.   r8   rH   rI   s   @r   rN   rN   M   s    //M
C	% 	%r   rN   c                   :     e Zd Zej                  ZdZ fdZ xZS )ProcessPoolSpawnMixinspawnc                 v    	 t                t        |          S # t        $ r | j                  d       Y *w xY w)NrR   )r
   rV   rW   r1   r8   r;   s    r   r8   z!ProcessPoolSpawnMixin.get_contexta   s?    	L " w"$$ # 	LMMJK	Ls   
 88r]   rI   s   @r   r`   r`   ]   s    //M
C% %r   r`   c                   :     e Zd Zej                  ZdZ fdZ xZS )ProcessPoolForkserverMixin
forkserverc                    	 t                t        j                  dk(  r| j                  d       t        j                  d      r| j                  d       t        | !         S # t        $ r | j                  d       Y uw xY wrQ   rU   r;   s    r   r8   z&ProcessPoolForkserverMixin.get_contextm   r[   r\   r]   rI   s   @r   rd   rd   i   s    //M
C	% 	%r   rd   c                     d }| d   }|D ]E  } ||j                          ||j                         d}t        ||f|fz   |z   d|i      }|| |<   G y )Nc                 ^    | j                  d      r| d d S | j                  d      r| d d S | S )N)MixinTestsTest)endswith)names    r   strip_mixinz*create_executor_tests.<locals>.strip_mixin~   s8    ==+,9]]6"9Kr   r&   rl   r'   )r&   type)	remote_globalsmixinbasesexecutor_mixinsrp   moduleexero   clss	            r   create_executor_testsry   y   sl    
 J'F #s||,k%...IK4%SF*U2\64JK"t	#r   c                      t        j                  t        j                  j                         t        j                         } t        j                  t
        j                  g|   y r   )unittestaddModuleCleanuprG   util_cleanup_testsr   r   r$   )thread_infos    r   setup_moduler      sD    o22AAB"224K.@@O;Or   )$rG   rX   r2   r{   
concurrentr   concurrent.futures._baser   r   r   r   r   r	   concurrent.futures.processr
   testr   test.supportr   r   PENDING_FUTURERUNNING_FUTURECANCELLED_FUTURECANCELLED_AND_NOTIFIED_FUTUREOSErrorEXCEPTION_FUTURESUCCESSFUL_FUTURETestCaser   r+   rK   rN   r`   rd   ry   r   r)   r   r   <module>r      s     
     <  )  4  W-W- y1  -4J K  x79E !< >8$$ >5 5B/m /%= % 	%M 	%% %  9E+:+?+E+@+B#*Pr   