
    :\h                        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j                  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#dS )    N)futures)PENDINGRUNNING	CANCELLEDCANCELLED_AND_NOTIFIEDFINISHEDFuture)_check_system_limits)support)threading_helperc                 L    t                      }| |_        ||_        ||_        |S N)r	   _state
_exception_result)state	exceptionresultfs       K/opt/python-3.11.14/usr/lib/python3.11/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dS )BaseTestCasec                 6    t          j                    | _        d S r   )r   threading_setup_thread_keyselfs    r   setUpzBaseTestCase.setUp    s    +;==r   c                 R    t          j                     t          j        | j          d S 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      s2        > > >> > > > >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          r3 | j        d| j        |                                 d| j	        | _
        d S  | j        dd| j        i| j	        | _
        d S )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. ( -++--( ( &( (DMMM
 /D. ( ( -(&( (DMMMr   c                 0   | j                             d           d | _         t          j                    | j        z
  }t
          j        rt          d|z  d           |                     |dd           t                      
                                 d S )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:   s    D)))^'? 	)'B,C((((C!NOOOr   c                 4    t          j        | j                  S r   )multiprocessingr8   r.   r   s    r   r8   zExecutorMixin.get_contextE   s    *48444r   )	r&   r'   r(   r7   r9   r!   r%   r8   __classcell__r<   s   @r   r+   r+   (   sj        LO( ( ( ( (	 	 	 	 	5 5 5 5 5 5 5r   r+   c                       e Zd Zej        ZdS )ThreadPoolMixinN)r&   r'   r(   r   ThreadPoolExecutorr6   r)   r   r   rK   rK   I   s        .MMMr   rK   c                   0     e Zd Zej        ZdZ fdZ xZS )ProcessPoolForkMixinforkc                     	 t                       n%# t          $ r |                     d           Y nw xY wt          j        dk    r|                     d           t                                                      S N.ProcessPoolExecutor unavailable on this systemwin32zrequire unix systemr
   NotImplementedErrorskipTestsysplatformr1   r8   r;   s    r   r8   z ProcessPoolForkMixin.get_contextQ       	L """"" 	L 	L 	LMMJKKKKK	L<7""MM/000ww""$$$    44	r&   r'   r(   r   ProcessPoolExecutorr6   r.   r8   rH   rI   s   @r   rN   rN   M   sE        /M
C% % % % % % % % %r   rN   c                   0     e Zd Zej        ZdZ fdZ xZS )ProcessPoolSpawnMixinspawnc                     	 t                       n%# t          $ r |                     d           Y nw xY wt                                                      S )NrR   )r
   rU   rV   r1   r8   r;   s    r   r8   z!ProcessPoolSpawnMixin.get_context_   sf    	L """"" 	L 	L 	LMMJKKKKK	Lww""$$$rZ   r[   rI   s   @r   r^   r^   [   sE        /M
C% % % % % % % % %r   r^   c                   0     e Zd Zej        ZdZ fdZ xZS )ProcessPoolForkserverMixin
forkserverc                     	 t                       n%# t          $ r |                     d           Y nw xY wt          j        dk    r|                     d           t                                                      S rQ   rT   r;   s    r   r8   z&ProcessPoolForkserverMixin.get_contextk   rY   rZ   r[   rI   s   @r   rb   rb   g   sE        /M
C% % % % % % % % %r   rb   c                     d }| d         }|D ]E} ||j                    ||j                   d}t          ||f|fz   |z   d|i          }|| |<   Fd S )Nc                     |                      d          r
| d d         S |                      d          r
| d d         S | S )N)MixinTestsTest)endswith)names    r   strip_mixinz*create_executor_tests.<locals>.strip_mixinz   sL    ==+,, 	9]]6"" 	9Kr   r&   rj   r'   )r&   type)	remote_globalsmixinbasesexecutor_mixinsrn   moduleexerm   clss	            r   create_executor_testsrw   u   s    
   J'F # #;s|,,,kk%..I.I.I.IK4%SF*U2\64JKK"t	# #r   c                      t          j        t          j        j                   t          j                    } t          j        t
          j        g| R   d S r   )unittestaddModuleCleanuprG   util_cleanup_testsr   r   r$   )thread_infos    r   setup_moduler~      sJ    o2ABBB"244K.@O;OOOOOOr   )$rG   rW   r2   ry   
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^   rb   rw   r~   r)   r   r   <module>r      s       



                        < ; ; ; ; ;       ) ) ) ) ) )  4     W---W--- =y111  -4J K K K  =x7799EEE !M<<< > > > > >8$ > > >5 5 5 5 5 5 5 5B/ / / / /m / / /% % % % %= % % %	% 	% 	% 	% 	%M 	% 	% 	%% % % % % % % % 9E+:+?+E+@+B# # # #*P P P P Pr   