
    dafU                     p    d dl Z d dlZd dlZd dlmZ d dlmZ d Zd Z G d de	      Z
d Z G d	 d
      Zy)    N)futures)supportc                     | |z  S N )xys     @/root/Python-3.12.4/Lib/test/test_concurrent_futures/executor.pymulr      s    q5L    c                  
    | |fS r   r   )argskwargss     r
   capturer      s    <r   c                       e Zd Zd Zy)MyObjectc                      y r   r   selfs    r
   	my_methodzMyObject.my_method   s    r   N)__name__
__module____qualname__r   r   r   r
   r   r      s    r   r   c                     t               S r   )r   )_s    r
   make_dummy_objectr      s
    :r   c                       e Zd Zd Zd Zd Zd Z ej                  d      d        Z	d Z
ej                  d        Zd	 Zd
 Zy)ExecutorTestc                     | j                   j                  t        dd      }| j                  d|j	                                y )N         )executorsubmitpowassertEqualresultr   futures     r
   test_submitzExecutorTest.test_submit   s0    %%c1a0fmmo.r   c                 :   | j                   j                  t        dd      }| j                  d|j	                                | j                   j                  t
        ddd      }| j                  |j	                         ddddf       | j                  t              5  | j                   j                  t
        d	       d d d        | j                  t              5  | j                   j                  d
       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr    r!   )r	            )r   fn)r-   )r/   arg)r0   )r#   r$   r   r&   r'   r   assertRaises	TypeErrorr(   s     r
   test_submit_keywordz ExecutorTest.test_submit_keyword   s    %%c1%2V]]_-%%gqqQ%?4!11E*FGy) 	4MM  G 3	4y) 	(MM  Q '	( 	(	4 	4	( 	(s    "DDDDc                    | j                  t        | j                  j                  t        t        d      t        d                  t        t        t        t        d      t        d                         | j                  t        | j                  j                  t        t        d      t        d      d            t        t        t        t        d      t        d                         y )N
   r.   )	chunksize)r&   listr#   mapr%   ranger   s    r
   test_mapzExecutorTest.test_map)   s    T]]&&sE"IuRyABSeBir34	6 	T]]&&sE"IuRyA&NOSeBir34	6r   c                    | j                   j                  t        g dg d      }| j                  |j	                         d       | j                  |j	                         d       | j                  t        |j                         y )N)r-   r-   r-   r-   )r    r.   r      )r   r-   )r#   r8   divmodr&   __next__r1   ZeroDivisionError)r   is     r
   test_map_exceptionzExecutorTest.test_map_exception2   s[    MMflLAv.v.+QZZ8r   walltimec                    g }	 | j                   j                  t        j                  g dd      D ]  }|j	                  |        	 | j                  d       | j                  d d g|       y # t        j                  $ r Y *w xY w)N)r   r      r<   timeoutzexpected TimeoutError)	r#   r8   timesleepappendfailr   TimeoutErrorr&   )r   resultsr@   s      r
   test_map_timeoutzExecutorTest.test_map_timeout8   s    	/]]&&tzz'0/0 ' 2 " q!" II-.$w/ ## 		s   AA/ /BBc                     | j                   j                  t        dg| j                  dz   z         | j                   j	                          y )Nr    r-   )r#   r8   strworker_countshutdownr   s    r
   test_shutdown_race_issue12456z*ExecutorTest.test_shutdown_race_issue12456G   s:     	#sd&7&7!&;<= r   c                 $   t               }t        j                         t        j                  |fd      }| j
                  j                  |j                         ~j                  t        j                        }| j                  |d       y )Nc                 $    j                         S r   )set)objmy_object_collecteds    r
   <lambda>z7ExecutorTest.test_no_stale_references.<locals>.<lambda>U   s    #6#:#:#< r   rE   z-Stale reference not collected within timeout.)r   	threadingEventweakrefrefr#   r$   r   waitr   SHORT_TIMEOUT
assertTrue)r   	my_objectmy_object_callback	collectedrW   s       @r
   test_no_stale_referencesz%ExecutorTest.test_no_stale_referencesN   sv     J	'oo/$[[<> 	Y001',,W5J5J,K		G	Ir   c                     dD ]3  }| j                  t        d      5  | j                  |       d d d        5 y # 1 sw Y   @xY w)N)r   z"max_workers must be greater than 0)max_workers)assertRaisesRegex
ValueErrorexecutor_type)r   numbers     r
   test_max_workers_negativez&ExecutorTest.test_max_workers_negative^   sS     	7F''
)12 7 ""v"67 7	77 7s	   :A	c                     | j                   j                  t        t        d            D ]B  }t	        j
                  |      }~t        j                          | j                   |              D y )Nr5   )	r#   r8   r   r9   r[   r\   r   
gc_collectassertIsNone)r   rV   wrs      r
   test_free_referencez ExecutorTest.test_free_referencee   sV     ==$$%6b	B 	$CS!B bd#		$r   N)r   r   r   r*   r3   r:   rA   r   requires_resourcerM   rR   cpython_onlyrc   rk   rp   r   r   r
   r   r      sb    /(69 Wz*0 +0! I I7$r   r   )rY   rG   r[   
concurrentr   testr   r   r   objectr   r   r   r   r   r
   <module>rv      s;        v 
T$ T$r   