ó
    F\h|1  ã                   ó  • / S Q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SSKrSSKrSSK	J
r
Jr  SSKJr  SSKJr  \R                  R                   rSSKJrJrJrJrJr   " S S	\5      r\" 5       r " S
 S\5      r " S S\5      rg))ÚQueueÚSimpleQueueÚJoinableQueueé    N)ÚEmptyÚFullé   )Ú
connection)Úcontext)ÚdebugÚinfoÚFinalizeÚregister_after_forkÚ
is_exitingc                   óî   • \ rS rSrSS jrS rS rS rSS jrSS jr	SS	 jr
S
 rS rS rS rS rS rS rS rS rS r\S 5       r\S 5       r\S 5       r\S 5       r\" \R8                  5      rSrg)r   é!   c                óâ  • US::  a  SSK Jn  Xl        [        R                  " SS9u  U l        U l        UR                  5       U l        [        R                  " 5       U l        [        R                  S:X  a  S U l        OUR                  5       U l        UR                  U5      U l        SU l        U R%                  5         [        R                  S:w  a  ['        U [(        R*                  5        g g )Nr   r   )ÚSEM_VALUE_MAXF©ÚduplexÚwin32)Úsynchronizer   Ú_maxsizer	   ÚPipeÚ_readerÚ_writerÚLockÚ_rlockÚosÚgetpidÚ_opidÚsysÚplatformÚ_wlockÚBoundedSemaphoreÚ_semÚ_ignore_epipeÚ_resetr   r   Ú_after_fork©ÚselfÚmaxsizeÚctxs      Ú-/usr/lib/python3.13/multiprocessing/queues.pyÚ__init__ÚQueue.__init__#   s¦   € Ø�a‹<å=ØŒÜ%/§_¢_¸EÑ%BÑ"ˆŒ�d”lØ—h‘h“jˆŒÜ—Y’Y“[ˆŒ
Ü�<‰<˜7Ó"ØˆD�KàŸ(™(›*ˆDŒKØ×(Ñ(¨Ó1ˆŒ	à"ˆÔØ�‰Œä�<‰<˜7Ó"Ü ¤e×&7Ñ&7Õ8ð #ó    c                 óâ   • [         R                  " U 5        U R                  U R                  U R                  U R
                  U R                  U R                  U R                  U R                  4$ ©N)
r
   Úassert_spawningr&   r   r   r   r   r#   r%   r    ©r*   s    r-   Ú__getstate__ÚQueue.__getstate__7   sP   € Ü×Ò Ô%Ø×"Ñ" D§M¡M°4·<±<ÀÇÁØ—‘˜TŸ[™[¨$¯)©)°T·Z±ZðAð 	Ar0   c           	      óŠ   • Uu  U l         U l        U l        U l        U l        U l        U l        U l        U R                  5         g r2   )	r&   r   r   r   r   r#   r%   r    r'   ©r*   Ústates     r-   Ú__setstate__ÚQueue.__setstate__<   s5   € à<Añ	:ˆÔ	˜Tœ]¨D¬L¸$¼,Ø	Œ�d”k 4¤9¨d¬jØ�‰�r0   c                 ó8   • [        S5        U R                  SS9  g )NzQueue._after_fork()T)Ú
after_fork)r   r'   r4   s    r-   r(   ÚQueue._after_forkA   s   € ÜÐ#Ô$Ø�‰˜tˆÒ$r0   c                 óÀ  • U(       a  U R                   R                  5         O.[        R                  " [        R                  " 5       5      U l         [
        R                  " 5       U l        S U l        S U l	        SU l
        SU l        S U l        U R                  R                  U l        U R                   R"                  U l        U R                   R&                  U l        g ©NF)Ú	_notemptyÚ_at_fork_reinitÚ	threadingÚ	Conditionr   ÚcollectionsÚdequeÚ_bufferÚ_threadÚ_jointhreadÚ_joincancelledÚ_closedÚ_closer   Ú
send_bytesÚ_send_bytesr   Ú
recv_bytesÚ_recv_bytesÚpollÚ_poll)r*   r=   s     r-   r'   ÚQueue._resetE   s˜   € ÞØ�N‰N×*Ñ*Õ,ä&×0Ò0´·²Ó1AÓBˆDŒNÜ"×(Ò(Ó*ˆŒØˆŒØˆÔØ#ˆÔØˆŒØˆŒØŸ<™<×2Ñ2ˆÔØŸ<™<×2Ñ2ˆÔØ—\‘\×&Ñ&ˆ�
r0   Nc                 ó‚  • U R                   (       a  [        SU < S35      eU R                  R                  X#5      (       d  [        eU R
                     U R                  c  U R                  5         U R                  R                  U5        U R
                  R                  5         S S S 5        g ! , (       d  f       g = f©NzQueue z
 is closed)rK   Ú
ValueErrorr%   Úacquirer   rA   rH   Ú_start_threadrG   ÚappendÚnotify©r*   ÚobjÚblockÚtimeouts       r-   ÚputÚ	Queue.putT   s€   € Ø�<�<Ü˜v d¡X¨ZÐ8Ó9Ð9Ø�y‰y× Ñ  ×0Ñ0ÜˆJà�^‹^Ø�|‰|Ñ#Ø×"Ñ"Ô$Ø�L‰L×Ñ Ô$Ø�N‰N×!Ñ!Ô#÷	 �^Ž^ús   ÁAB0Â0
B>c                 ó&  • U R                   (       a  [        SU < S35      eU(       aC  Uc@  U R                     U R                  5       nS S S 5        U R                  R                  5         OáU(       a  [        R                  " 5       U-   nU R                  R                  X5      (       d  [        e U(       a5  W[        R                  " 5       -
  nU R                  U5      (       d  [        eOU R                  5       (       d  [        eU R                  5       nU R                  R                  5         U R                  R                  5         [        R                  W5      $ ! , (       d  f       GN = f! U R                  R                  5         f = frU   )rK   rV   r   rP   r%   ÚreleaseÚtimeÚ	monotonicrW   r   rR   Ú_ForkingPicklerÚloads)r*   r]   r^   ÚresÚdeadlines        r-   ÚgetÚ	Queue.get`   s  € Ø�<�<Ü˜v d¡X¨ZÐ8Ó9Ð9Þ�W‘_Ø—“Ø×&Ñ&Ó(�÷ à�I‰I×ÑÕæÜŸ>š>Ó+¨gÑ5�Ø—;‘;×&Ñ& u×6Ñ6Ü�ð
&ÞØ&¬¯ªÓ)9Ñ9�GØŸ:™: g×.Ñ.Ü#˜ð /àŸ™Ÿ™Ü�KØ×&Ñ&Ó(�Ø—	‘	×!Ñ!Ô#à—‘×#Ñ#Ô%ä×$Ñ$ SÓ)Ð)÷) –ûð$ —‘×#Ñ#Õ%ús   ¸E"Â2BE4 Å"
E1Å4Fc                 ód   • U R                   U R                  R                  R                  5       -
  $ r2   )r   r%   Ú_semlockÚ
_get_valuer4   s    r-   ÚqsizeÚQueue.qsizez   s$   € à�}‰}˜tŸy™y×1Ñ1×<Ñ<Ó>Ñ>Ð>r0   c                 ó,   • U R                  5       (       + $ r2   ©rR   r4   s    r-   ÚemptyÚQueue.empty~   ó   € Ø—:‘:“<ÔÐr0   c                 óJ   • U R                   R                  R                  5       $ r2   )r%   rl   Ú_is_zeror4   s    r-   ÚfullÚ
Queue.full�   s   € Ø�y‰y×!Ñ!×*Ñ*Ó,Ð,r0   c                 ó$   • U R                  S5      $ r@   )ri   r4   s    r-   Ú
get_nowaitÚQueue.get_nowait„   s   € Ø�x‰x˜‹Ðr0   c                 ó&   • U R                  US5      $ r@   )r_   ©r*   r\   s     r-   Ú
put_nowaitÚQueue.put_nowait‡   s   € Ø�x‰x˜˜UÓ#Ð#r0   c                 óV   • SU l         U R                  nU(       a  S U l        U" 5         g g )NT)rK   rL   )r*   Úcloses     r-   r�   ÚQueue.closeŠ   s&   € ØˆŒØ—‘ˆÞØˆDŒKÙ�Gð r0   c                 ó¬   • [        S5        U R                  (       d   SR                  U 5      5       eU R                  (       a  U R                  5         g g )NzQueue.join_thread()zQueue {0!r} not closed)r   rK   ÚformatrI   r4   s    r-   Újoin_threadÚQueue.join_thread‘   sB   € ÜÐ#Ô$Ø�|�|ÐBÐ5×<Ñ<¸TÓBÓBˆ|Ø××Ø×ÑÕð r0   c                 ó~   • [        S5        SU l         U R                  R                  5         g ! [         a     g f = f)NzQueue.cancel_join_thread()T)r   rJ   rI   ÚcancelÚAttributeErrorr4   s    r-   Úcancel_join_threadÚQueue.cancel_join_thread—   s<   € ÜÐ*Ô+Ø"ˆÔð	Ø×Ñ×#Ñ#Õ%øÜó 	Ùð	ús   ”/ ¯
<»<c                 óÔ   • U R                   R                  5         [        R                  S:X  a  U R                  R                  5         U R                  5         U R                  5         g )Nr   )r   r�   r!   r"   r   r…   r4   s    r-   Ú_terminate_brokenÚQueue._terminate_brokenŸ   sG   € ð 	�‰×ÑÔô �<‰<˜7Ó"Ø�L‰L×ÑÔ à�
‰
ŒØ×ÑÕr0   c                 ó(  • [        S5        U R                  R                  5         [        R                  " [
        R                  U R                  U R                  U R                  U R                  U R                  R                  U R                  R                  U R                  U R                  U R                  4	SSS9U l         [        S5        U R                   R#                  5         [        S5        U R$                  (       dH  ['        U R                   [
        R(                  [*        R,                  " U R                   5      /SS9U l        ['        U [
        R0                  U R                  U R                  /S	S9U l        g !   S U l        e = f)
NzQueue._start_thread()ÚQueueFeederThreadT)ÚtargetÚargsÚnameÚdaemonzdoing self._thread.start()z... done self._thread.start()éûÿÿÿ)Úexitpriorityé
   )r   rG   ÚclearrC   ÚThreadr   Ú_feedrA   rN   r#   r   r�   r   r&   Ú_on_queue_feeder_errorr%   rH   ÚstartrJ   r   Ú_finalize_joinÚweakrefÚrefrI   Ú_finalize_closerL   r4   s    r-   rX   ÚQueue._start_thread­   s2  € ÜÐ%Ô&ð 	�‰×ÑÔÜ ×'Ò'Ü—;‘;Ø—,‘, §¡°×0@Ñ0@Ø—+‘+˜tŸ|™|×1Ñ1°4·<±<×3EÑ3EØ×$Ñ$ d×&AÑ&AØ—)‘)ðð %Øñ
ˆŒð	ÜÐ.Ô/Ø�L‰L×ÑÔ ÜÐ1Ô2ð ×"×"Ü'Ø—‘œe×2Ñ2Ü—’˜TŸ\™\Ó*Ð+Øñ ˆDÔô Ø”%×'Ñ'Ø�\‰\˜4Ÿ>™>Ð*Øñˆ�øð	ð  ˆDŒLØús   Ã0F Æ
Fc                 ó|   • [        S5        U " 5       nUb  UR                  5         [        S5        g [        S5        g )Nzjoining queue threadz... queue thread joinedz... queue thread already dead)r   Újoin)ÚtwrÚthreads     r-   r�   ÚQueue._finalize_joinÔ   s3   € äÐ$Ô%Ù“ˆØÑØ�K‰KŒMÜÐ+Õ,äÐ1Õ2r0   c                 óœ   • [        S5        U   U R                  [        5        UR                  5         S S S 5        g ! , (       d  f       g = f)Nztelling queue thread to quit)r   rY   Ú	_sentinelrZ   )ÚbufferÚnotemptys     r-   r    ÚQueue._finalize_closeÞ   s.   € äÐ,Ô-ÚØ�M‰Mœ)Ô$Ø�O‰OÔ÷ �XŽXús	   Ž&=½
Ac	                 ó0  • [        S5        UR                  n	UR                  n
UR                  nU R                  n[
        n[        R                  S:w  a  UR                  nUR                  nOS n  U	" 5          U (       d  U" 5         U
" 5           U" 5       nUUL a  [        S5        U" 5         U" 5         g [        R                  U5      nUc	  U" U5        OU" 5          U" U5        W" 5         M`  ! U
" 5         f = f! W" 5         f = f! [         a     Of = f! [         an  nU(       a$  [        USS5      [        R                  :X  a   S nAg [        5       (       a  [!        SU5         S nAg UR                  5         U" UW5         S nAOS nAff = fGM&  )Nz$starting thread to feed data to piper   z%feeder thread got sentinel -- exitingÚerrnor   zerror in queue thread: %s)r   rW   rb   ÚwaitÚpopleftr¨   r!   r"   re   ÚdumpsÚ
IndexErrorÚ	ExceptionÚgetattrr­   ÚEPIPEr   r   )r©   rª   rM   Ú	writelockÚreader_closeÚwriter_closeÚignore_epipeÚonerrorÚ	queue_semÚnacquireÚnreleaseÚnwaitÚbpopleftÚsentinelÚwacquireÚwreleaser\   Úes                     r-   rš   ÚQueue._feedå   sf  € ô 	Ð4Ô5Ø×#Ñ#ˆØ×#Ñ#ˆØ—‘ˆØ—>‘>ˆÜˆÜ�<‰<˜7Ó"Ø ×(Ñ(ˆHØ ×(Ñ(‰HàˆHàð-$Ù”
ðÞ!Ùœá”JðØÙ&›j˜Ø (š?Ü!Ð"IÔJÙ(œNÙ(œNØ"ô .×3Ñ3°CÓ8˜Ø#Ñ+Ù& s�Oá$œJð+Ù *¨3¤á (¤
ñ# øñ •Jûñ& !)¥
ûÜ!ó Ùðûäó $Þ¤G¨A¨w¸Ó$:¼e¿k¹kÓ$IÜô
 —<‘<ÜÐ4°aÔ8Üð ×%Ñ%Ô'Ù˜A˜s—O‘Oûð#$úò; sx   Á3D Á;C2 Â	D Â&D
 Â8(D
 Ã!C> Ã)	D
 Ã2	C;Ã;D Ã>	DÄD
 Ä

DÄD ÄDÄD Ä
FÄ$&FÅFÅ/FÆFc                 ó,   • SSK nUR                  5         g)z€
Private API hook called when feeding data in the background thread
raises an exception.  For overriding by concurrent.futures.
r   N)Ú	tracebackÚ	print_exc)rÂ   r\   rÅ   s      r-   r›   ÚQueue._on_queue_feeder_error$  s   € ó 	Ø×ÑÕr0   )rG   rL   rK   r&   rJ   rI   r   rA   r    rR   r   rP   r   r%   rN   rH   r#   r   ©r   )F©TN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r.   r5   r:   r(   r'   r_   ri   rn   rr   rw   rz   r~   r�   r…   rŠ   r�   rX   Ústaticmethodr�   r    rš   r›   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__Ú__static_attributes__© r0   r-   r   r   !   s½   † ô9ò(Aò
ò
%ô'ô
$ô*ò4?ò ò-òò$òòòòò%ðN ñ3ó ð3ð ñó ðð ñ<$ó ð<$ð| ñó ðñ $ E×$6Ñ$6Ó7Ór0   r   c                   ó@   • \ rS rSrS
S jrS rS rSS jrS rS r	S	r
g)r   i:  c                ó‚   • [         R                  XUS9  UR                  S5      U l        UR	                  5       U l        g )N)r,   r   )r   r.   Ú	SemaphoreÚ_unfinished_tasksrD   Ú_condr)   s      r-   r.   ÚJoinableQueue.__init__<  s0   € Ü�‰�t¨#ˆÑ.Ø!$§¡¨qÓ!1ˆÔØ—]‘]“_ˆ�
r0   c                 ó^   • [         R                  U 5      U R                  U R                  4-   $ r2   )r   r5   rÙ   rØ   r4   s    r-   r5   ÚJoinableQueue.__getstate__A  s'   € Ü×!Ñ! $Ó'¨4¯:©:°t×7MÑ7MÐ*NÑNÐNr0   c                 óX   • [         R                  XS S 5        USS  u  U l        U l        g )Néþÿÿÿ)r   r:   rÙ   rØ   r8   s     r-   r:   ÚJoinableQueue.__setstate__D  s+   € Ü×Ñ˜4 s¨ Ô,Ø-2°2°3¨ZÑ*ˆŒ
�DÕ*r0   Nc                 ó  • U R                   (       a  [        SU < S35      eU R                  R                  X#5      (       d  [        eU R
                     U R                     U R                  c  U R                  5         U R                  R                  U5        U R                  R                  5         U R
                  R                  5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = frU   )rK   rV   r%   rW   r   rA   rÙ   rH   rX   rG   rY   rØ   rb   rZ   r[   s       r-   r_   ÚJoinableQueue.putH  s¡   € Ø�<�<Ü˜v d¡X¨ZÐ8Ó9Ð9Ø�y‰y× Ñ  ×0Ñ0ÜˆJà�^‹^˜TŸZ›ZØ�|‰|Ñ#Ø×"Ñ"Ô$Ø�L‰L×Ñ Ô$Ø×"Ñ"×*Ñ*Ô,Ø�N‰N×!Ñ!Ô#÷ (�^ˆ^ŸZ�Zú�^�^ús%   ÁC0Á!A-CÃC0Ã
C-	Ã)C0Ã0
C>c                 ó,  • U R                      U R                  R                  S5      (       d  [        S5      eU R                  R                  R                  5       (       a  U R                   R                  5         S S S 5        g ! , (       d  f       g = f)NFz!task_done() called too many times)rÙ   rØ   rW   rV   rl   rv   Ú
notify_allr4   s    r-   Ú	task_doneÚJoinableQueue.task_doneU  sa   € Ø�Z‹ZØ×)Ñ)×1Ñ1°%×8Ñ8Ü Ð!DÓEÐEØ×%Ñ%×.Ñ.×7Ñ7×9Ñ9Ø—
‘
×%Ñ%Ô'÷	 �ZŽZús   �A/BÂ
Bc                 óÖ   • U R                      U R                  R                  R                  5       (       d  U R                   R	                  5         S S S 5        g ! , (       d  f       g = fr2   )rÙ   rØ   rl   rv   r®   r4   s    r-   r£   ÚJoinableQueue.join\  s<   € Ø�Z‹ZØ×)Ñ)×2Ñ2×;Ñ;×=Ñ=Ø—
‘
—‘Ô!÷ �ZŽZús   �AAÁ
A()rÙ   rØ   rÈ   rÉ   )rÊ   rË   rÌ   rÍ   r.   r5   r:   r_   rä   r£   rÓ   rÔ   r0   r-   r   r   :  s!   † ô%ò
Oò8ô$ò(õ"r0   r   c                   ób   • \ rS rSrS rS rS rS rS rS r	S r
\" \R                  5      rS	rg
)r   ie  c                ó  • [         R                  " SS9u  U l        U l        UR	                  5       U l        U R                  R                  U l        [        R                  S:X  a  S U l
        g UR	                  5       U l
        g )NFr   r   )r	   r   r   r   r   r   rQ   rR   r!   r"   r#   )r*   r,   s     r-   r.   ÚSimpleQueue.__init__g  sW   € Ü%/§_¢_¸EÑ%BÑ"ˆŒ�d”lØ—h‘h“jˆŒØ—\‘\×&Ñ&ˆŒ
Ü�<‰<˜7Ó"ØˆD�KàŸ(™(›*ˆD�Kr0   c                 ól   • U R                   R                  5         U R                  R                  5         g r2   )r   r�   r   r4   s    r-   r�   ÚSimpleQueue.closep  s"   € Ø�‰×ÑÔØ�‰×ÑÕr0   c                 ó,   • U R                  5       (       + $ r2   rq   r4   s    r-   rr   ÚSimpleQueue.emptyt  rt   r0   c                 óŠ   • [         R                  " U 5        U R                  U R                  U R                  U R
                  4$ r2   )r
   r3   r   r   r   r#   r4   s    r-   r5   ÚSimpleQueue.__getstate__w  s/   € Ü×Ò Ô%Ø—‘˜dŸl™l¨D¯K©K¸¿¹ÐEÐEr0   c                 óp   • Uu  U l         U l        U l        U l        U R                   R                  U l        g r2   )r   r   r   r#   rQ   rR   r8   s     r-   r:   ÚSimpleQueue.__setstate__{  s)   € ØAFÑ>ˆŒ�t”| T¤[°$´+Ø—\‘\×&Ñ&ˆ�
r0   c                 ó¬   • U R                      U R                  R                  5       nS S S 5        [        R	                  W5      $ ! , (       d  f       N#= fr2   )r   r   rO   re   rf   )r*   rg   s     r-   ri   ÚSimpleQueue.get  s;   € Ø�[‹[Ø—,‘,×)Ñ)Ó+ˆC÷ ô ×$Ñ$ SÓ)Ð)÷ �[ús   �AÁ
Ac                 ó  • [         R                  U5      nU R                  c  U R                  R	                  U5        g U R                     U R                  R	                  U5        S S S 5        g ! , (       d  f       g = fr2   )re   r°   r#   r   rM   r}   s     r-   r_   ÚSimpleQueue.put…  sQ   € ä×#Ñ# CÓ(ˆØ�;‰;Ñà�L‰L×#Ñ# CÕ(à—“Ø—‘×'Ñ'¨Ô,÷ —–ús   ÁA0Á0
A>)rR   r   r   r#   r   N)rÊ   rË   rÌ   rÍ   r.   r�   rr   r5   r:   ri   r_   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   r0   r-   r   r   e  s9   † ò%òò òFò'ò*ò-ñ $ E×$6Ñ$6Ó7Ór0   r   )Ú__all__r!   r   rC   rE   rc   rÐ   rž   r­   Úqueuer   r   Ú r	   r
   Ú	reductionÚForkingPicklerre   Úutilr   r   r   r   r   Úobjectr   r¨   r   r   rÔ   r0   r-   Ú<module>rþ      su   ðò 4€ã 
Û 	Û Û Û Û Û Û ç å Ý Ø×#Ñ#×2Ñ2€ç HÕ HôL8ˆFô L8ñ^ ‹H€	ô%"�Eô %"ôV*8�&õ *8r0   