ó
    F\h#  ã                   óØ  • S r SrSSKJr  SSKrSSKrSSKrSSKrSSKrSSK	r	\R                  " 5       rSq\R                  " 5       rS r\R                   " \5        \" \	S5      (       aJ  \	R$                  " \R&                  \R(                  \R*                  S9  \	R$                  " \R,                  S	9   " S
 S5      rS r " S S\R2                  5      r " S S\R6                  5      rg)zImplements ThreadPoolExecutor.z"Brian Quinlan (brian@sweetapp.com)é    )Ú_baseNFc                  óð   • [            SqS S S 5        [        [        R	                  5       5      n U  H  u  pUR                  S 5        M     U  H  u  pUR                  5         M     g ! , (       d  f       Nc= f©NT)Ú_global_shutdown_lockÚ	_shutdownÚlistÚ_threads_queuesÚitemsÚputÚjoin)r
   ÚtÚqs      Ú0/usr/lib/python3.13/concurrent/futures/thread.pyÚ_python_exitr      sW   € æ	Øˆ	÷ 
ä”×&Ñ&Ó(Ó)€EÛ‰ˆØ	�‰ˆdŽñ ã‰ˆØ	�‰Žò ÷ 
Õ	ús   ‡A'Á'
A5Úregister_at_fork)ÚbeforeÚafter_in_childÚafter_in_parent)r   c                   óD   • \ rS rSrS rS r\" \R                  5      r	Sr
g)Ú	_WorkItemé/   c                 ó4   • Xl         X l        X0l        X@l        g ©N)ÚfutureÚfnÚargsÚkwargs)Úselfr   r   r   r   s        r   Ú__init__Ú_WorkItem.__init__0   s   € ØŒØŒØŒ	Ø�ó    c                 ó0  • U R                   R                  5       (       d  g  U R                  " U R                  0 U R                  D6nU R                   R                  U5        g ! [         a'  nU R                   R                  U5        S n  S nAg S nAff = fr   )r   Úset_running_or_notify_cancelr   r   r   Ú
set_resultÚBaseExceptionÚset_exception)r   ÚresultÚexcs      r   ÚrunÚ_WorkItem.run6   su   € Ø�{‰{×7Ñ7×9Ñ9Øð	+Ø—W’W˜dŸi™iÐ7¨4¯;©;Ñ7ˆFð �K‰K×"Ñ" 6Õ*øô ó 	Ø�K‰K×%Ñ% cÔ*à�Dûð	ús   ¢&A$ Á$
BÁ.BÂB)r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r)   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__Ú__static_attributes__© r!   r   r   r   /   s   † òò+ñ $ E×$6Ñ$6Ó7Ór!   r   c                 óx  • Ub   U" U6      UR                  5       nUb  UR                  5         AM(  U " 5       n[        (       d  Ub  UR                  (       a  Ub  SUl        UR                  S 5        g AMl  ! [          a;    [        R                  R                  SSS9  U " 5       nUb  UR	                  5          g f = f! [        R                   a7    U " 5       nUb  UR                  R                  5         AUR                  SS9n Níf = f! [          a!    [        R                  R                  SSS9   g f = f)NzException in initializer:T)Úexc_info)ÚblockzException in worker)r%   r   ÚLOGGERÚcriticalÚ_initializer_failedÚ
get_nowaitÚqueueÚEmptyÚ_idle_semaphoreÚreleaseÚgetr)   r   r   )Úexecutor_referenceÚ
work_queueÚinitializerÚinitargsÚexecutorÚ	work_items         r   Ú_workerrG   F   sB  € ØÑð	Ù˜Ñ"ð!DØð7Ø&×1Ñ1Ó3�	ð Ñ$Ø—‘”àÙá)Ó+ˆH÷
 Šy˜HÑ,°×0B×0Bð Ñ'Ø)-�HÔ&à—‘˜tÔ$ØØñ= øô ó 	Ü�L‰L×!Ñ!Ð"=ÈÐ!ÑMÙ)Ó+ˆHØÑ#Ø×,Ñ,Ô.Ùð	ûô —;‘;ó 7á-Ó/�ØÑ'Ø×,Ñ,×4Ñ4Ô6ØØ&ŸN™N°˜NÐ6’	ð7ûô8 ó DÜ�‰×ÑÐ3¸dÐÓCðDúsM   …A8 ‹D �C  �AD Á5D Á8AB=Â<B=Ã ADÄD Ä
DÄD Ä(D9Ä8D9c                   ó   • \ rS rSrSrSrg)ÚBrokenThreadPoolét   zJ
Raised when a worker thread in a ThreadPoolExecutor failed initializing.
r4   N)r+   r,   r-   r.   Ú__doc__r3   r4   r!   r   rI   rI   t   s   † ôr!   rI   c                   ó  • \ rS rSr\R
                  " 5       R                  r  SS jrS r	\
R                  R                  R                  \	l        S rS rSSS.S	 jjr\
R                  R                  R                  \l        S
rg)ÚThreadPoolExecutoréz   Nc                 óü  • Uc+  [        S[        R                  " 5       =(       d    SS-   5      nUS::  a  [        S5      eUb  [	        U5      (       d  [        S5      eXl        [        R                  " 5       U l	        [        R                  " S5      U l        [        5       U l        SU l        SU l        [        R"                  " 5       U l        U=(       d    S	U R'                  5       -  U l        X0l        X@l        g)
a]  Initializes a new ThreadPoolExecutor instance.

Args:
    max_workers: The maximum number of threads that can be used to
        execute the given calls.
    thread_name_prefix: An optional name prefix to give our threads.
    initializer: A callable used to initialize worker threads.
    initargs: A tuple of arguments to pass to the initializer.
Né    é   é   r   z"max_workers must be greater than 0zinitializer must be a callableFzThreadPoolExecutor-%d)ÚminÚosÚprocess_cpu_countÚ
ValueErrorÚcallableÚ	TypeErrorÚ_max_workersr<   ÚSimpleQueueÚ_work_queueÚ	threadingÚ	Semaphorer>   ÚsetÚ_threadsÚ_brokenr   ÚLockÚ_shutdown_lockÚ_counterÚ_thread_name_prefixÚ_initializerÚ	_initargs)r   Úmax_workersÚthread_name_prefixrC   rD   s        r   r   ÚThreadPoolExecutor.__init__   sÕ   € ð Ñô ˜b¤2×#7Ò#7Ó#9×#>¸QÀ!Ñ"CÓDˆKØ˜!ÓÜÐAÓBÐBàÑ"¬8°K×+@Ñ+@ÜÐ<Ó=Ð=à'ÔÜ ×,Ò,Ó.ˆÔÜ(×2Ò2°1Ó5ˆÔÜ›ˆŒØˆŒØˆŒÜ'ŸnšnÓ.ˆÔØ$6÷ %PØ%<¸t¿}¹}»Ñ%Nð 	Ô à'ÔØ!�r!   c                óð  • U R                      [           U R                  (       a  [        U R                  5      eU R                  (       a  [        S5      e[        (       a  [        S5      e[        R                  " 5       n[        XAX#5      nU R                  R                  U5        U R                  5         UsS S S 5        sS S S 5        $ ! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)Nz*cannot schedule new futures after shutdownz6cannot schedule new futures after interpreter shutdown)rb   r   r`   rI   r   ÚRuntimeErrorr   ÚFuturer   r[   r   Ú_adjust_thread_count)r   r   r   r   ÚfÚws         r   ÚsubmitÚThreadPoolExecutor.submit¥   s©   € Ø× Ó Ö"7Ø�|�|Ü& t§|¡|Ó4Ð4à�~�~Ü"Ð#OÓPÐPßŠyÜ"ð $:ó ;ð ;ô —’“ˆAÜ˜! Ó.ˆAà×Ñ× Ñ  Ô#Ø×%Ñ%Ô'Ø÷ #8Ð"7× Ñ ×"7Õ"7ú× × Ö ús#   �C'”B&CÂ:	C'Ã
C	ÃC'Ã'
C5c                 óü  • U R                   R                  SS9(       a  g U R                  4S jn[        U R                  5      nX R
                  :  a©  SU R                  =(       d    U U4-  n[        R                  " U[        [        R                  " X5      U R                  U R                  U R                  4S9nUR                  5         U R                  R                  U5        U R                  [         U'   g g )Nr   )Útimeoutc                 ó&   • UR                  S 5        g r   )r   )Ú_r   s     r   Ú
weakref_cbÚ;ThreadPoolExecutor._adjust_thread_count.<locals>.weakref_cb¿   s   € Ø�E‰E�$�Kr!   z%s_%d)ÚnameÚtargetr   )r>   Úacquirer[   Úlenr_   rY   rd   r\   ÚThreadrG   ÚweakrefÚrefre   rf   ÚstartÚaddr	   )r   rv   Únum_threadsÚthread_namer   s        r   rm   Ú'ThreadPoolExecutor._adjust_thread_count¸   s×   € à×Ñ×'Ñ'°Ð'Ö2Øð !×,Ñ,ô 	ô ˜$Ÿ-™-Ó(ˆØ×*Ñ*Ó*Ø! T×%=Ñ%=×%EÀØ%0ð%2ñ 2ˆKä× Ò  k¼'Ü'.§{¢{°4Ó'DØ'+×'7Ñ'7Ø'+×'8Ñ'8Ø'+§~¡~ð'7ñ8ˆAð
 �G‰GŒIØ�M‰M×Ñ˜aÔ Ø!%×!1Ñ!1ŒO˜AÒð +r!   c                 ó0  • U R                      SU l          U R                  R                  5       nUb.  UR                  R                  [        U R                  5      5        MN  ! [        R
                   a     Of = fS S S 5        g ! , (       d  f       g = f)NzBA thread initializer failed, the thread pool is not usable anymore)	rb   r`   r[   r;   r<   r=   r   r&   rI   )r   rF   s     r   r:   Ú&ThreadPoolExecutor._initializer_failedÏ   s�   € Ø× Ó ð4ˆDŒLð ðØ $× 0Ñ 0× ;Ñ ;Ó =�Ið Ñ(Ø×$Ñ$×2Ñ2Ô3CÀDÇLÁLÓ3QÔRñ øô —{‘{ó Ùðú÷ !× Ö ús-   �	B—A$±3BÁ$A;Á8BÁ:A;Á;BÂ
BF)Úcancel_futuresc                ó¤  • U R                      SU l        U(       a;    U R                  R                  5       nUb  UR                  R                  5         M:  U R                  R                  S 5        S S S 5        U(       a$  U R                   H  nUR                  5         M     g g ! [        R
                   a     Mf  f = f! , (       d  f       NU= fr   )rb   r   r[   r;   r<   r=   r   Úcancelr   r_   r   )r   Úwaitr†   rF   r   s        r   ÚshutdownÚThreadPoolExecutor.shutdownÜ   s¯   € Ø× Ó Ø!ˆDŒNÞð ðØ$(×$4Ñ$4×$?Ñ$?Ó$A˜	ð !Ñ,Ø!×(Ñ(×/Ñ/Ô1ñ ð ×Ñ× Ñ  Ô&÷ !ö  Ø—]”]�Ø—‘–ò #ð øô !Ÿ;™;ó Úðú÷ !Õ ús-   �CžB&¸:CÂ&B>Â:CÂ=B>Â>CÃ
C)
r`   r>   rf   re   rY   r   rb   rd   r_   r[   )NÚ Nr4   )T)r+   r,   r-   r.   Ú	itertoolsÚcountÚ__next__rc   r   rp   r   ÚExecutorrK   rm   r:   rŠ   r3   r4   r!   r   rM   rM   z   sq   † ð �ŠÓ ×)Ñ)€Hà<>Ø,.ô$"òLð" —^‘^×*Ñ*×2Ñ2€F„Nò2ò.Sð°Eö ð( —~‘~×.Ñ.×6Ñ6€H×r!   rM   )rK   Ú
__author__Úconcurrent.futuresr   r�   r<   r\   r0   r}   rT   ÚWeakKeyDictionaryr	   r   ra   r   r   Ú_register_atexitÚhasattrr   rz   Ú_at_fork_reinitr?   Úclearr   rG   ÚBrokenExecutorrI   r�   rM   r4   r!   r   Ú<module>r™      sâ   ðñ %à1€
å $Û Û Û Û Û Û 	ð ×+Ò+Ó-€Ø€	ð "ŸšÓ(Ð òð 
× Ò ˜<Ô (ñ ˆ2Ð!×"Ñ"Ø×ÒÐ4×<Ñ<Ø'<×'LÑ'LØ(=×(EÑ(EòGð ×Ò ×'<Ñ'<Ò=÷8ñ 8ò.+Dô\�u×+Ñ+ô ôv7˜Ÿ™õ v7r!   