
    2hh                        S SK r S SKrS SKrS SKrS SKrS SKJr  S SKJrJ	r	J
r
JrJrJr  S SKJr  S SKJr  S SKJr  \SS4S jr\" \S9r\" \	S9r\" \
S9r\" \S9r\" \\" 5       S	9r\" \S
S9r " S S\R8                  5      r " S S5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r"\4\\ \"\!44S jr#S r$g)    N)futures)PENDINGRUNNING	CANCELLEDCANCELLED_AND_NOTIFIEDFINISHEDFuture)_check_system_limits)support)threading_helperc                 >    [        5       nXl        Xl        X#l        U$ N)r	   _state
_exception_result)state	exceptionresultfs       J/opt/python-3.13.8/usr/lib/python3.13/test/test_concurrent_futures/util.pycreate_futurer      s    AHLIH    )r   )r   r   *   )r   r   c                        \ rS rSrS rS rSrg)BaseTestCase    c                 8    [         R                  " 5       U l        g r   )r   threading_setup_thread_keyselfs    r   setUpBaseTestCase.setUp!   s    +;;=r   c                 h    [         R                  " 5         [        R                  " U R                  6   g r   )r   reap_childrenr   threading_cleanupr   r    s    r   tearDownBaseTestCase.tearDown$   s"    **D,<,<=r   )r   N)__name__
__module____qualname____firstlineno__r"   r'   __static_attributes__ r   r   r   r       s    >>r   r   c                   B   ^  \ rS rSrSr0 rU 4S jrU 4S jrS rSr	U =r
$ )ExecutorMixin)      c                   > [         TU ]  5         [        R                  " 5       U l        [        U S5      (       a`  U R                  " SU R                  U R                  5       S.U R                  D6U l
        U R                  5       R                  5       U l        g U R                  " SSU R                  0U R                  D6U l
        S U l        g )Nctx)max_workers
mp_contextr5   r.   )superr"   time	monotonict1hasattrexecutor_typeworker_countget_contextexecutor_kwargsexecutorManagermanagerr!   	__class__s    r   r"   ExecutorMixin.setUp-   s    .."4 .. ( --++-( &&(DM  ++-557DL .. ( --(&&(DM  DLr   c                 l  > U R                   R                  SS9  S U l         U R                  b!  U R                  R                  5         S U l        [        R                  " 5       U R
                  -
  n[        R                  (       a  [        SU-  SS9  U R                  USS5        [        TU ]-  5         g )NT)waitz%.2fs )endi,  z+synchronization issue: test lasted too long)r@   shutdownrB   r8   r9   r:   r   verboseprint
assertLessr7   r'   )r!   dtrD   s     r   r'   ExecutorMixin.tearDown=   s    D)<<#LL!!#DL^^'??'B,C(C!NOr   c                 B    [         R                  " U R                  5      $ r   )multiprocessingr>   r4   r    s    r   r>   ExecutorMixin.get_contextK   s    **48844r   )r@   rB   r:   )r)   r*   r+   r,   r=   r?   r"   r'   r>   r-   __classcell__rD   s   @r   r0   r0   )   s!    LO  5 5r   r0   c                   2    \ rS rSr\R
                  rS rSrg)ThreadPoolMixinO   c                 ,    [         R                  " 5       $ r   )	threadingEventr    s    r   create_eventThreadPoolMixin.create_eventR   s      r   r.   N)	r)   r*   r+   r,   r   ThreadPoolExecutorr<   r[   r-   r.   r   r   rV   rV   O   s    ..M!r   rV   c                   J   ^  \ rS rSr\R
                  rSrU 4S jrS r	Sr
U =r$ )ProcessPoolForkMixinV   forkc                   >  [        5         [        R                  S:X  a  U R                  S5        [
        R                  " SS9(       a  U R                  S5        [        TU ]!  5       $ ! [         a    U R                  S5         Nzf = fN.ProcessPoolExecutor unavailable on this systemwin32zrequire unix systemT)threadz'TSAN doesn't support threads after fork	r
   NotImplementedErrorskipTestsysplatformr   check_sanitizerr7   r>   rC   s    r   r>    ProcessPoolForkMixin.get_contextZ   s    	L " <<7"MM/0""$/MMCDw"$$ # 	LMMJK	L   
A* *BBc                 6    U R                   R                  5       $ r   rB   rZ   r    s    r   r[   !ProcessPoolForkMixin.create_evente       ||!!##r   r.   r)   r*   r+   r,   r   ProcessPoolExecutorr<   r4   r>   r[   r-   rS   rT   s   @r   r_   r_   V   s"    //M
C	%$ $r   r_   c                   J   ^  \ rS rSr\R
                  rSrU 4S jrS r	Sr
U =r$ )ProcessPoolSpawnMixini   spawnc                 x   >  [        5         [        TU ]  5       $ ! [         a    U R                  S5         N+f = f)Nrd   )r
   rh   ri   r7   r>   rC   s    r   r>   !ProcessPoolSpawnMixin.get_contextm   s?    	L " w"$$ # 	LMMJK	Ls   
 99c                 6    U R                   R                  5       $ r   rq   r    s    r   r[   "ProcessPoolSpawnMixin.create_eventt   rs   r   r.   rt   rT   s   @r   rw   rw   i   s"    //M
C%$ $r   rw   c                   J   ^  \ rS rSr\R
                  rSrU 4S jrS r	Sr
U =r$ )ProcessPoolForkserverMixinx   
forkserverc                   >  [        5         [        R                  S:X  a  U R                  S5        [
        R                  " SS9(       a  U R                  S5        [        TU ]!  5       $ ! [         a    U R                  S5         Nzf = frc   rg   rC   s    r   r>   &ProcessPoolForkserverMixin.get_context|   rn   ro   c                 6    U R                   R                  5       $ r   rq   r    s    r   r[   'ProcessPoolForkserverMixin.create_event   rs   r   r.   rt   rT   s   @r   r   r   x   s"    //M
C	%$ $r   r   c                     S nU S   nU HF  nU" UR                   5      < U" UR                   5      < S3n[        Xq4U4-   U-   SU05      nXU'   MH     g )Nc                 r    U R                  S5      (       a  U S S $ U R                  S5      (       a  U S S $ U $ )N)MixinTestsTest)endswith)names    r   strip_mixin*create_executor_tests.<locals>.strip_mixin   s>    ==+,,9]]6""9Kr   r)   r   r*   )r)   type)	remote_globalsmixinbasesexecutor_mixinsr   moduleexer   clss	            r   create_executor_testsr      sc    
 J'Fs||,k%...IK4SF*U2\64JK"t	 r   c                  
    [        5         [        R                  " [        R                  R
                  5        [        R                  " 5       n [        R                  " [        R                  /U Q76   g ! [         a     NGf = fr   )
r
   unittestaddModuleCleanuprQ   util_cleanup_testsrh   r   r   r&   )thread_infos    r   setup_moduler      sf    G 	!!/"6"6"E"EF"224K.@@O;O  s   
A5 5
BB)%rQ   rj   rY   r8   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   r0   rV   r_   rw   r   r   r   r.   r   r   <module>r      s     
      <  )  4  W-W- y1  -4J K  x79E !< >8$$ >#5 #5L!m !$= $&$M $$ $& 9E+:+?+E+@+B#*	Pr   