+
    Bi6                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHt ^RIHtHt ^RIHtHtHtHtHt  ! R	 R
4      t]P6                  P8                  P:                  t]P6                  P>                  P:                  t ]!! ]R7      ]!! ] R7      .t"R t# ! R R]4      t$]! ]%! 4       ]$]]]3R7       R t&]R8X  d   ]PN                  ! 4        R# R# )    N)futures)BrokenProcessPool)support)hashlib_helper)parameterize)ExecutorTestmul)ProcessPoolForkMixinProcessPoolForkserverMixinProcessPoolSpawnMixincreate_executor_testssetup_modulec                   ,   a  ] tR t^t o R tR tRtV tR# )EventfulGCObjc                0    VP                  4       V n        R # N)Eventevent)selfmgrs   &&E/usr/lib/python3.14/test/test_concurrent_futures/test_process_pool.py__init__EventfulGCObj.__init__   s    YY[
    c                :    V P                   P                  4        R # r   )r   setr   s   &r   __del__EventfulGCObj.__del__   s    

r   )r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s     ! r   r   )function_namec                 n    V P                   ! R 4       VP                  4        V P                   ! R4       R# )startedfinishedN)putwait)queuer   s   &&r   _put_wait_putr/   #   s%    	IIi	JJL 
IIjr   c                     a  ] tR t^,t o ]P
                  ! ]P                  R8H  R4      R 4       tR t	R t
]R 4       tR t]P                  ! R4      R	 4       tR
 t]P&                  ! R4      R 4       tR tR tR tR tR tR tR tR t]! ]!  R 4       t]! ]!  R 4       t ]! ]!  R 4       t!]! ]!  R 4       t"Rt#V t$R# )ProcessPoolExecutorTestwin32zWindows-only process limitc                    V P                  \        R 4      ;_uu_ 4        \        P                  ! ^>R7       RRR4       R#   + '       g   i     R# ; i)zmax_workers must be <= 61max_workersN)assertRaisesRegex
ValueErrorr   ProcessPoolExecutorr   s   &r   test_max_workers_too_large2ProcessPoolExecutorTest.test_max_workers_too_large.   sC    ##J$?A A''B7A A A As   AA	c                   V P                   P                  \        P                  ^4      .p\	        \        V P                   P                  P                  4       4      4      pVP                  4        V F#  pV P                  \        VP                  4       K%  	  V P                  \        V P                   P                  \        ^^4       R# )   N)executorsubmittimesleepnextiter
_processesvalues	terminateassertRaisesr   resultpow)r   r   pfuts   &   r   test_killed_child)ProcessPoolExecutorTest.test_killed_child4   s     ==''

A67dmm..55789	C/<  	+T]]-A-A31Mr   c                l  a  V 3R  lp\        \        \        \        ^(4      \        ^(4      4      4      pS P	                  \        S P
                  P                  \        \        ^(4      \        ^(4      ^R7      4      V4       S P	                  \        S P
                  P                  \        \        ^(4      \        ^(4      ^2R7      4      V4       S P	                  \        S P
                  P                  \        \        ^(4      \        ^(4      ^(R7      4      V4       S P                  \        V4       R# )c            	         < \        S P                  P                  \        \	        ^(4      \	        ^(4      RR7      4       R# )(   	chunksizeN)listr=   maprH   ranger   s   r   bad_map;ProcessPoolExecutorTest.test_map_chunksize.<locals>.bad_mapA   s+    ""3b	59"KLr   rP   N)rS   rT   rH   rU   assertEqualr=   rF   r7   )r   rV   refs   f  r   test_map_chunksize*ProcessPoolExecutorTest.test_map_chunksize@   s    	M 3sE"IuRy12""3b	59"JK	 	""3b	59"KL	 	""3b	59"KL	 	*g.r   c                    \        ^{4      h{   RuntimeError)clss   &r   _test_traceback'ProcessPoolExecutorTest._test_tracebackP   s    3r   c                R   V P                   P                  V P                  4      pV P                  \        4      ;_uu_ 4       pVP                  4        R R R 4       XP                  pV P                  \        V4      \        4       V P                  VP                  R4       VP                  pV P                  \        V4      \        P                  P                  4       V P!                  RVP"                  4       \$        P&                  ! 4       ;_uu_ 4       p Vh  + '       g   i     L; i  \         d+    \(        P*                  ! \(        P,                  ! 4       !    Mi ; i R R R 4       M  + '       g   i     M; iT P!                  RXP/                  4       4       R # )Nz&raise RuntimeError(123) # some commentr]   )r=   r>   rb   rF   	ExceptionrG   	exceptionassertIstyper`   rX   args	__cause__r   process_RemoteTracebackassertIntbr   captured_stderrsys
excepthookexc_infogetvalue)r   futurecmexccausef1s   &     r   test_traceback&ProcessPoolExecutorTest.test_tracebackT   s    %%d&:&:;y))RMMO * lld3i.6*d5k7??#C#CD>I$$&&"0	 *)   0/0/	 '&&&
 	>kkm	%s6   DE4D2D/	22E'$E4&E''E44F	md5c                   V P                  4       P                  4       p\        V4      pV P                  P	                  \
        V4      pVP                  4        V P                  VP                  P                  ^R7      4       \        P                  ! 4        Rp\        P                  ! 4        VP                  4        VP                  4        R# )   timeoutN)get_contextManagerr   r=   r>   idrG   
assertTruer   r-   r   
gc_collectshutdownjoin)r   r   objrt   s   &   r   test_ressources_gced_in_workers7ProcessPoolExecutorTest.test_ressources_gced_in_workersj   s      ((*C %%b#.		q12 	
r   c                   V P                   pV P                  4       pVP                  ^ 4      p^VP                  ,          p\	        V4       F  pVP                  VP                  4       K   	  V P                  \        VP                  4      VP                  4       \	        V4       F  pVP                  4        K  	  R# )r   N)r=   r   	Semaphore_max_workersrU   r>   acquirerX   lenrC   release)r   r=   
mp_contextsem	job_count_s   &     r   test_saturation'ProcessPoolExecutorTest.test_saturation~   s    ==%%'
""1%...	y!AOOCKK( "X00183H3HIy!AKKM "r   z(gh-117344: test is flaky without the GILc                   V P                   pV P                  4       P                  R R7      R8X  d   \        P                  ! R4      hVP                  \        ^^4      P                  4        VP                  \        ^^4      P                  4        VP                  \        ^^4      P                  4        V P                  \        VP                  4      ^4       R# F
allow_nonefork(Incompatible with the fork start method.N)r=   r   get_start_methodunittestSkipTestr>   r	   rG   rX   r   rC   r   r=   s   & r   test_idle_process_reuse_one3ProcessPoolExecutorTest.test_idle_process_reuse_one   s    ==..%.@FJ##$NOOR#**,Q"))+Q#**,X00115r   c                f   V P                   pV P                  4       P                  R R7      R8X  d   \        P                  ! R4      hVP                  \        ^^4      P                  4        VP                  \        ^!^4       VP                  \        ^^4      P                  4        VP                  \        ^^4       VP                  \        ^^4      P                  4        VP                  \        ^ ^	4       V P                  \        VP                  4      ^4       VP                  4        R# r   )r=   r   r   r   r   r>   r	   rG   assertLessEqualr   rC   r   r   s   & r    test_idle_process_reuse_multiple8ProcessPoolExecutorTest.test_idle_process_reuse_multiple   s    ==..%.@FJ##$NOOR#**,R$R$++-R$Q"))+Q"S!4!45q9r   c                   V P                  4       pVP                  R R7      R8X  d=   V P                  \        4      ;_uu_ 4        V P	                  ^V^R7       RRR4       R# V P	                  ^V^R7      pVP                  \        P                  4      pVP                  4       pVP                  \        P                  4      pV P                  VP                  4       V4       V P                  \        VP                  4      ^4       VP                  \        P                  4      pV P                  VP                  4       V4       VP                  \        P                  4      pVP                  4       pV P                  WH4       V P                  \        VP                  4      ^4       VP                  4        R#   + '       g   i     R# ; i)Fr   r   r   max_tasks_per_childN)r   r   rF   r7   executor_typer>   osgetpidrG   rX   r   rC   assertNotEqualr   )	r   contextr=   rx   original_pidf2f3f4new_pids	   &        r   test_max_tasks_per_child0ProcessPoolExecutorTest.test_max_tasks_per_child   sZ   ""$##u#5?"":..""1a"P / %%g1 & >__RYY'yy{__RYY'l3X00115__RYY'l3 __RYY'))+L2X00115/ /.s   GG	c                    V P                  ^^R7      pV P                  VP                  P                  4       R4       R# )r}   )r   spawnN)r   rX   _mp_contextr   r   s   & r   2test_max_tasks_per_child_defaults_to_spawn_contextJProcessPoolExecutorTest.test_max_tasks_per_child_defaults_to_spawn_context   s8     %%aQ%?-->>@'Jr   c                   V P                  4       pVP                  R R7      R8X  d   \        P                  ! R4      hV P	                  ^V^R7      p. p\        ^4       F)  pVP                  ! VP                  \        WD4      4       K+  	  VP                  4        \        V4       F.  w  rEV P                  VP                  4       \        WD4      4       K0  	  R# )Fr   r   r   r   N)r   r   r   r   r   rU   appendr>   r	   r   	enumeraterX   rG   )r   r   r=   r   irt   s   &     r   test_max_tasks_early_shutdown5ProcessPoolExecutorTest.test_max_tasks_early_shutdown   s    ""$##u#5?##$NOO %%g1 & >qANN8??356 "7+IAV]]_c!i8 ,r   c                0  aa V P                  4       p\        P                  o^ oVV3R lp\        P                  ! \        RV4      ;_uu_ 4        V P                  ^VR7      pT;_uu_ 4        V P                  \        4      ;_uu_ 4        \        VP                  \        R.^
,          4      4       RRR4       RRR4       VP                  4        RRR4       R#   + '       g   i     L2; i  + '       g   i     L=; i  + '       g   i     R# ; i)r   c                 R   < S^8  d   \        R4      hS^,          oS! V .VO5/ VB # )r}   z/can't create new thread at interpreter shutdownr_   )funcri   kwargsnthreadorig_start_new_threads   &*,r   mock_start_new_threadUProcessPoolExecutorTest.test_python_finalization_error.<locals>.mock_start_new_thread   s:    !|" $: ; ;qLG(????r   _start_joinable_threadr5   r   N)   r<   )r   	threadingr   r   	swap_attrr   rF   r   rS   rT   r	   r   )r   r   r   r=   r   r   s   &   @@r   test_python_finalization_error6ProcessPoolExecutorTest.test_python_finalization_error   s     ""$ !* @ @	@ y*B46 6))aG)LH&&'899cF8b=9: :  6 6 :9 6 6 6s<   D.C1	(C4C1	<DC.)C1	1D<DD	c                .   \         P                  P                  4       pV P                  ^R7      ;_uu_ 4       pWn        VP                  4        RRR4       VP                  \        P                  P                  R7       R#   + '       g   i     L<; ir}   r4   N	operation)
r   mockMockr   _force_shutdownterminate_workersassert_called_once_withr   rk   
_TERMINATEr   mock_fnr=   s   &  r   test_terminate_workers.ProcessPoolExecutorTest.test_terminate_workers   sg    --$$&A..('.$&&( / 	'''//2L2L'M	 /.   BB	c                .   \         P                  P                  4       pV P                  ^R7      ;_uu_ 4       pWn        VP                  4        RRR4       VP                  \        P                  P                  R7       R#   + '       g   i     L<; ir   )
r   r   r   r   r   kill_workersr   r   rk   _KILLr   s   &  r   test_kill_workers)ProcessPoolExecutorTest.test_kill_workers   sg    --$$&A..('.$!!# / 	'''//2G2G'H	 /.r   c                    V P                  ^R7      ;_uu_ 4       pV P                  \        VP                  RR7      3 RRR4       R#   + '       g   i     R# ; i)r}   r4   zinvalid operationr   N)r   rF   r7   r   r   s   & r   &test_force_shutdown_workers_invalid_op>ProcessPoolExecutorTest.test_force_shutdown_workers_invalid_op   sM    A..(j&66(;  = > /...s   $A		A	c                   V P                  4       P                  4       pVP                  4       pVP                  4       pV P	                  ^R7      ;_uu_ 4       pVP                  \        W44       V P                  VP                  \        P                  R7      R4       \        VP                  P                  4       4      ^ ,          p\        P                  P                   pV! VP"                  R7      Vn        V! VP$                  R7      Vn        \'        WQ4      ! 4        VP)                  4        V\*        8X  d   VP"                  P-                  4        M:V\.        8X  d   VP$                  P-                  4        MV P1                  RV 24       V P3                  \4        P6                  VP                  RR7       RRR4       R#   + '       g   i     R# ; i)r}   r4   r~   r*   )wrapszUnknown operation: g{Gz?N)r   r   Queuer   r   r>   r/   rX   getr   SHORT_TIMEOUTrS   rC   rD   r   r   r   rE   killgetattrr   TERMINATE_WORKERSassert_calledKILL_WORKERSfailrF   r.   Empty)r   r(   managerqer=   worker_processr   s   &&      r   test_force_shutdown_workers3ProcessPoolExecutorTest.test_force_shutdown_workers  sU   ""$,,.MMOMMOA..(OOM10 QUU7+@+@UA9M!("5"5"<"<">?BN==%%D'+.2J2J'KN$"&^-@-@"ANH,.! 11((668,.##113		/?@ekk155$?/ /...s   E'G

G	c                   V P                  ^R7      ;_uu_ 4       pVP                  \        P                  ^4      pV P	                  \
        VP                  4       \        W!4      ! 4        RRR4       R#   + '       g   i     R# ; ir}   r4   N)r   r>   r   _exitrF   r   rG   r   )r   r(   r=   rt   s   &&  r   (test_force_shutdown_workers_dead_workers@ProcessPoolExecutorTest.test_force_shutdown_workers_dead_workers$  s]    A..(__RXXq1F/? H,. /...s   AA66B	c           	        V P                  4       p\        P                  P                  P	                  VR 4      ;_uu_ 4       pV P                  ^VR7      ;_uu_ 4       p\        WA4      ! 4        RRR4       VP                  P                  P                  4        VP                  P                  P                  4        RRR4       R#   + '       g   i     Lb; i  + '       g   i     R# ; i)Processr   N)r   r   r   patchobjectr   r   return_valuer   assert_not_calledrE   )r   r(   ctxmock_processr=   s   &&   r   +test_force_shutdown_workers_not_started_yetCProcessPoolExecutorTest.test_force_shutdown_workers_not_started_yet-  s     ]]  ''Y77<##c#BBh 02 C
 %%**<<>%%//AAC 87BB 877s%   CC
	0AC
CCC.	c                   V P                  ^R7      ;_uu_ 4       pVP                  \        P                  ^ 4      pV P	                  VP                  4       4       \        VP                  P                  4       4      ^ ,          p\        W!4      ! 4        V P                  \        VP                  \        P                  ^ 4       VP                  \        P                  4       \        P                  ! \        P                  4       F  pVP!                  4       '       d   K   M	  RRR4       R#   + '       g   i     R# ; ir   )r   r>   r?   r@   assertIsNonerG   rS   rC   rD   r   rF   r`   r   r   r   sleeping_retryis_alive)r   r(   r=   taskr   r   s   &&    r   &test_force_shutdown_workers_stops_pool>ProcessPoolExecutorTest.test_force_shutdown_workers_stops_pool9  s    A..(??4::q1Ddkkm,!("5"5"<"<">?BNH,.lHOOTZZK  5 56 ++G,A,AB%..00 C+ /...s   DD1#D11E	 N)%r    r!   r"   r#   r   
skipUnlessrp   platformr9   rK   rZ   classmethodrb   ry   r   requires_hashdigestr   r   r   requires_gil_enabledr   r   r   r   r   r   r   r   r   r   FORCE_SHUTDOWN_PARAMSr   r   r  r  r$   r%   r&   s   @r   r1   r1   ,   s/    w.0LM8 N8

N/     %, ''. /&	 !!"LM6 N68K9 8NI> ()@ *@< ()/ */ ()	D *	D () *r   r1   )executor_mixinsc                      \        4        R # r   )r   r  r   r   setUpModuler  [  s    Nr   __main__)(r   r.   rp   r   r?   r   unittest.mock
concurrentr   concurrent.futures.processr   testr   test.supportr   %test.test_importlib.metadata.fixturesr   r=   r   r	   utilr
   r   r   r   r   r   r8   r   r    r   r   r   dictr  r/   r1   globalsr  mainr  r   r   <module>r#     s    	  
      8  ' > ') )
  //AAJJ **77@@()|$ 
fl fR	 gi!8';'A'<'>? zMMO r   