Ë
    òT•j•1  ã                   ó  — g d ¢Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZ ddlZddlmZ ddlmZ ej                   j"                  ZddlmZmZmZmZmZ  G d„ d	e«      Z e«       Z G d
„ de«      Z G d„ de«      Zy))ÚQueueÚSimpleQueueÚJoinableQueueé    N)ÚEmptyÚFullé   )Ú
connection)Úcontext)ÚdebugÚinfoÚFinalizeÚregister_after_forkÚ
is_exitingc                   óÞ   — e Zd Zdd„Zd„ Zd„ Zd„ Zdd„Zdd„Zdd„Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zed„ «       Zed„ «       Zed„ «       Z eej6                  «      Zy)r   c                óà  — |dk  rddl m} || _        t        j                  d¬«      \  | _        | _        |j                  «       | _        t        j                  «       | _        t        j                  dk(  rd | _        n|j                  «       | _        |j                  |«      | _        d| _        | j%                  «        t        j                  dk7  rt'        | t(        j*                  «       y y )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.12/multiprocessing/queues.pyÚ__init__z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                 óà   — t        j                  | «       | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  fS ©N)
r
   Úassert_spawningr%   r   r   r   r   r"   r$   r   ©r)   s    r,   Ú__getstate__zQueue.__getstate__9   sP   € Ü×Ñ Ô%Ø×"Ñ" D§M¡M°4·<±<ÀÇÁØ—‘˜TŸ[™[¨$¯)©)°T·Z±ZðAð 	Ar.   c           	      óŠ   — |\  | _         | _        | _        | _        | _        | _        | _        | _        | j                  «        y r0   )	r%   r   r   r   r   r"   r$   r   r&   ©r)   Ústates     r,   Ú__setstate__zQueue.__setstate__>   s5   € à<Añ	:ˆÔ	˜Tœ]¨D¬L¸$¼,Ø	Œ�d”k 4¤9¨d¬jØ�‰�r.   c                 ó>   — t        d«       | j                  d¬«       y )NzQueue._after_fork()T)Ú
after_fork)r   r&   r2   s    r,   r'   zQueue._after_forkC   s   € ÜÐ#Ô$Ø�‰˜tˆÕ$r.   c                 ó°  — |r| j                   j                  «        n,t        j                  t        j                  «       «      | _         t        j                  «       | _        d | _        d | _	        d| _
        d| _        d | _        | j                  j                  | _        | j                   j"                  | _        | j                   j&                  | _        y ©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)   r9   s     r,   r&   zQueue._resetG   s˜   € ÙØ�N‰N×*Ñ*Õ,ä&×0Ñ0´·±Ó1AÓBˆDŒNÜ"×(Ñ(Ó*ˆŒØˆŒØˆÔØ#ˆÔØˆŒØˆŒØŸ<™<×2Ñ2ˆÔØŸ<™<×2Ñ2ˆÔØ—\‘\×&Ñ&ˆ�
r.   Nc                 ób  — | j                   rt        d| ›d�«      ‚| j                  j                  ||«      st        ‚| j
                  5  | j                  €| j                  «        | j                  j                  |«       | j
                  j                  «        d d d «       y # 1 sw Y   y xY w©NzQueue z
 is closed)rF   Ú
ValueErrorr$   Úacquirer   r<   rC   Ú_start_threadrB   ÚappendÚnotify©r)   ÚobjÚblockÚtimeouts       r,   Úputz	Queue.putV   sŠ   € Ø�<Š<Ü˜v d X¨ZÐ8Ó9Ð9Ø�y‰y× Ñ  ¨Ô0ÜˆJà�^‰^ñ 	$Ø�|‰|Ð#Ø×"Ñ"Ô$Ø�L‰L×Ñ Ô$Ø�N‰N×!Ñ!Ô#÷		$÷ 	$ñ 	$ús   Á
AB%Â%B.c                 óÌ  — | j                   rt        d| ›d�«      ‚|rB|€@| j                  5  | j                  «       }d d d «       | j                  j                  «        nÆ|rt        j                  «       |z   }| j                  j                  ||«      st        ‚	 |r.t        j                  «       z
  }| j                  |«      st        ‚| j                  «       st        ‚| j                  «       }| j                  j                  «        | j                  j                  «        t        j                  «      S # 1 sw Y   ŒÿxY w# | j                  j                  «        w xY wrO   )rF   rP   r   rK   r$   ÚreleaseÚtimeÚ	monotonicrQ   r   rM   Ú_ForkingPicklerÚloads)r)   rW   rX   ÚresÚdeadlines        r,   Úgetz	Queue.getb   s  € Ø�<Š<Ü˜v d X¨ZÐ8Ó9Ð9Ù�W�_Ø—‘ñ )Ø×&Ñ&Ó(�÷)à�I‰I×ÑÕáÜŸ>™>Ó+¨gÑ5�Ø—;‘;×&Ñ& u¨gÔ6Ü�ð
&ÙØ&¬¯©Ó)9Ñ9�GØŸ:™: gÔ.Ü#˜ØŸ™œÜ�KØ×&Ñ&Ó(�Ø—	‘	×!Ñ!Ô#à—‘×#Ñ#Ô%ä×$Ñ$ SÓ)Ð)÷))ð )ûð$ —‘×#Ñ#Õ%ús   ¬D;ÂA0E Ä;EÅE#c                 ód   — | j                   | j                  j                  j                  «       z
  S r0   )r   r$   Ú_semlockÚ
_get_valuer2   s    r,   ÚqsizezQueue.qsize|   s$   € à�}‰}˜tŸy™y×1Ñ1×<Ñ<Ó>Ñ>Ð>r.   c                 ó$   — | j                  «        S r0   ©rM   r2   s    r,   ÚemptyzQueue.empty€   ó   € Ø—:‘:“<ÐÐr.   c                 óJ   — | j                   j                  j                  «       S r0   )r$   rd   Ú_is_zeror2   s    r,   Úfullz
Queue.fullƒ   s   € Ø�y‰y×!Ñ!×*Ñ*Ó,Ð,r.   c                 ó$   — | j                  d«      S r;   )rb   r2   s    r,   Ú
get_nowaitzQueue.get_nowait†   s   € Ø�x‰x˜‹Ðr.   c                 ó&   — | j                  |d«      S r;   )rY   ©r)   rV   s     r,   Ú
put_nowaitzQueue.put_nowait‰   s   € Ø�x‰x˜˜UÓ#Ð#r.   c                 óL   — d| _         | j                  }|rd | _         |«        y y )NT)rF   rG   )r)   Úcloses     r,   rt   zQueue.closeŒ   s&   € ØˆŒØ—‘ˆÙØˆDŒKÙ�Gð r.   c                 ó˜   — t        d«       | j                  sJ dj                  | «      «       ‚| j                  r| j                  «        y y )NzQueue.join_thread()zQueue {0!r} not closed)r   rF   ÚformatrD   r2   s    r,   Újoin_threadzQueue.join_thread“   sB   € ÜÐ#Ô$Ø�|Š|ÐBÐ5×<Ñ<¸TÓBÓBˆ|Ø×ÒØ×ÑÕð r.   c                 ó|   — t        d«       d| _        	 | j                  j                  «        y # t        $ r Y y w xY w)NzQueue.cancel_join_thread()T)r   rE   rD   ÚcancelÚAttributeErrorr2   s    r,   Úcancel_join_threadzQueue.cancel_join_thread™   s<   € ÜÐ*Ô+Ø"ˆÔð	Ø×Ñ×#Ñ#Õ%øÜò 	Ùð	ús   ”/ ¯	;º;c                 óÒ   — | j                   j                  «        t        j                  dk(  r| j                  j                  «        | j                  «        | j                  «        y )Nr   )r   rt   r    r!   r   rw   r2   s    r,   Ú_terminate_brokenzQueue._terminate_broken¡   sG   € ð 	�‰×ÑÔô �<‰<˜7Ò"Ø�L‰L×ÑÔ à�
‰
ŒØ×ÑÕr.   c                 ó,  — t        d«       | j                  j                  «        t        j                  t
        j                  | j                  | j                  | j                  | j                  | j                  j                  | j                  j                  | j                  | j                  | j                  f	dd¬«      | _        	 t        d«       | j                   j#                  «        t        d«       | j$                  sJt'        | j                   t
        j(                  t+        j,                  | j                   «      gd¬«      | _        t'        | t
        j0                  | j                  | j                  gd	¬«      | _        y #  d | _        ‚ xY w)
NzQueue._start_thread()ÚQueueFeederThreadT)ÚtargetÚargsÚnameÚdaemonzdoing self._thread.start()z... done self._thread.start()éûÿÿÿ)Úexitpriorityé
   )r   rB   Úclearr>   ÚThreadr   Ú_feedr<   rI   r"   r   rt   r   r%   Ú_on_queue_feeder_errorr$   rC   ÚstartrE   r   Ú_finalize_joinÚweakrefÚrefrD   Ú_finalize_closerG   r2   s    r,   rR   z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                 óz   — t        d«        | «       }|�|j                  «        t        d«       y t        d«       y )Nzjoining queue threadz... queue thread joinedz... queue thread already dead)r   Újoin)ÚtwrÚthreads     r,   rŒ   zQueue._finalize_joinÖ   s3   € äÐ$Ô%Ù“ˆØÐØ�K‰KŒMÜÐ+Õ,äÐ1Õ2r.   c                 ó’   — t        d«       |5  | j                  t        «       |j                  «        d d d «       y # 1 sw Y   y xY w)Nztelling queue thread to quit)r   rS   Ú	_sentinelrT   )ÚbufferÚnotemptys     r,   r�   zQueue._finalize_closeà   s9   € äÐ,Ô-Øñ 	Ø�M‰Mœ)Ô$Ø�O‰OÔ÷	÷ 	ñ 	ús	   Ž&=½Ac	                 ó  — t        d«       |j                  }	|j                  }
|j                  }| j                  }t
        }t        j                  dk7  r|j                  }|j                  }nd }	 	  |	«        	 | s |«         |
«        	 	  |«       }||u rt        d«        |«         |«        y t        j                  |«      }|€	 ||«       n |«        	  ||«        «        Œ]#  |
«        w xY w#  «        w xY w# t        $ r Y nw xY wno# t        $ rc}|r#t        |dd«      t        j                  k(  rY d }~y t        «       rt!        d|«       Y d }~y |j                  «         ||«       Y d }~nd }~ww xY w�Œ)Nz$starting thread to feed data to piper   z%feeder thread got sentinel -- exitingÚerrnor   zerror in queue thread: %s)r   rQ   r[   ÚwaitÚpopleftr•   r    r!   r^   ÚdumpsÚ
IndexErrorÚ	ExceptionÚgetattrr™   ÚEPIPEr   r   )r–   r—   rH   Ú	writelockÚreader_closeÚwriter_closeÚignore_epipeÚonerrorÚ	queue_semÚnacquireÚnreleaseÚnwaitÚbpopleftÚsentinelÚwacquireÚwreleaserV   Úes                     r,   r‰   zQueue._feedç   sh  € ô 	Ð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   Á2D Á:	C) ÂD Â%D Â1'D ÃC5 Ã!D Ã)	C2Ã2D Ã5	C>Ã>D Ä	DÄ
D ÄDÄD Ä	E=Ä E8Ä?E8ÅE8Å8E=c                 ó,   — ddl }|j                  «        y)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®   rV   r°   s      r,   rŠ   zQueue._on_queue_feeder_error&  s   € ó 	Ø×ÑÕr.   ©r   )F©TN)Ú__name__Ú
__module__Ú__qualname__r-   r3   r7   r'   r&   rY   rb   rf   ri   rm   ro   rr   rt   rw   r{   r}   rR   ÚstaticmethodrŒ   r�   r‰   rŠ   ÚclassmethodÚtypesÚGenericAliasÚ__class_getitem__© r.   r,   r   r   #   s½   „ ó9ò(Aò
ò
%ó'ó
$ó*ò4?ò ò-òò$òòòòò%ðN ñ3ó ð3ð ñó ðð ñ<$ó ð<$ð| ñó ðñ $ E×$6Ñ$6Ó7Ñr.   r   c                   ó4   — e Zd Zdd„Zd„ Zd„ Zd	d„Zd„ Zd„ Zy)
r   c                óŠ   — t         j                  | ||¬«       |j                  d«      | _        |j	                  «       | _        y )N)r+   r   )r   r-   Ú	SemaphoreÚ_unfinished_tasksr?   Ú_condr(   s      r,   r-   zJoinableQueue.__init__>  s2   € Ü�‰�t˜W¨#ˆÔ.Ø!$§¡¨qÓ!1ˆÔØ—]‘]“_ˆ�
r.   c                 ó^   — t         j                  | «      | j                  | j                  fz   S r0   )r   r3   rÁ   rÀ   r2   s    r,   r3   zJoinableQueue.__getstate__C  s'   € Ü×!Ñ! $Ó'¨4¯:©:°t×7MÑ7MÐ*NÑNÐNr.   c                 óZ   — t         j                  | |d d «       |dd  \  | _        | _        y )Néþÿÿÿ)r   r7   rÁ   rÀ   r5   s     r,   r7   zJoinableQueue.__setstate__F  s-   € Ü×Ñ˜4  s¨ Ô,Ø-2°2°3¨ZÑ*ˆŒ
�DÕ*r.   Nc                 óØ  — | j                   rt        d| ›d�«      ‚| j                  j                  ||«      st        ‚| j
                  5  | j                  5  | j                  €| j                  «        | j                  j                  |«       | j                  j                  «        | j
                  j                  «        d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY wrO   )rF   rP   r$   rQ   r   r<   rÁ   rC   rR   rB   rS   rÀ   r[   rT   rU   s       r,   rY   zJoinableQueue.putJ  s·   € Ø�<Š<Ü˜v d X¨ZÐ8Ó9Ð9Ø�y‰y× Ñ  ¨Ô0ÜˆJà�^‰^ñ 	$˜TŸZ™Zñ 	$Ø�|‰|Ð#Ø×"Ñ"Ô$Ø�L‰L×Ñ Ô$Ø×"Ñ"×*Ñ*Ô,Ø�N‰N×!Ñ!Ô#÷	$÷ 	$÷ 	$ñ 	$ú÷ 	$ð 	$ús%   Á
C ÁA,CÃC ÃC	ÃC Ã C)c                 ó  — | j                   5  | j                  j                  d«      st        d«      ‚| j                  j                  j                  «       r| j                   j                  «        d d d «       y # 1 sw Y   y xY w)NFz!task_done() called too many times)rÁ   rÀ   rQ   rP   rd   rl   Ú
notify_allr2   s    r,   Ú	task_donezJoinableQueue.task_doneW  sf   € Ø�Z‰Zñ 	(Ø×)Ñ)×1Ñ1°%Ô8Ü Ð!DÓEÐEØ×%Ñ%×.Ñ.×7Ñ7Ô9Ø—
‘
×%Ñ%Ô'÷		(÷ 	(ñ 	(ús   �A%A;Á;Bc                 óÂ   — | j                   5  | j                  j                  j                  «       s| j                   j	                  «        d d d «       y # 1 sw Y   y xY wr0   )rÁ   rÀ   rd   rl   rš   r2   s    r,   r‘   zJoinableQueue.join^  sD   € Ø�Z‰Zñ 	"Ø×)Ñ)×2Ñ2×;Ñ;Ô=Ø—
‘
—‘Ô!÷	"÷ 	"ñ 	"ús   �?AÁAr²   r³   )	r´   rµ   r¶   r-   r3   r7   rY   rÈ   r‘   r¼   r.   r,   r   r   <  s!   „ ó%ò
Oò8ó$ò(ó"r.   r   c                   óZ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 e
ej                  «      Zy)	r   c                ó
  — t        j                  d¬«      \  | _        | _        |j	                  «       | _        | j                  j                  | _        t        j                  dk(  rd | _
        y |j	                  «       | _
        y )NFr   r   )r	   r   r   r   r   r   rL   rM   r    r!   r"   )r)   r+   s     r,   r-   zSimpleQueue.__init__i  sW   € Ü%/§_¡_¸EÔ%BÑ"ˆŒ�d”lØ—h‘h“jˆŒØ—\‘\×&Ñ&ˆŒ
Ü�<‰<˜7Ò"ØˆD�KàŸ(™(›*ˆD�Kr.   c                 ól   — | j                   j                  «        | j                  j                  «        y r0   )r   rt   r   r2   s    r,   rt   zSimpleQueue.closer  s"   € Ø�‰×ÑÔØ�‰×ÑÕr.   c                 ó$   — | j                  «        S r0   rh   r2   s    r,   ri   zSimpleQueue.emptyv  rj   r.   c                 óˆ   — t        j                  | «       | j                  | j                  | j                  | j
                  fS r0   )r
   r1   r   r   r   r"   r2   s    r,   r3   zSimpleQueue.__getstate__y  s/   € Ü×Ñ Ô%Ø—‘˜dŸl™l¨D¯K©K¸¿¹ÐEÐEr.   c                 óp   — |\  | _         | _        | _        | _        | j                   j                  | _        y r0   )r   r   r   r"   rL   rM   r5   s     r,   r7   zSimpleQueue.__setstate__}  s)   € ØAFÑ>ˆŒ�t”| T¤[°$´+Ø—\‘\×&Ñ&ˆ�
r.   c                 ó¢   — | j                   5  | j                  j                  «       }d d d «       t        j	                  «      S # 1 sw Y   ŒxY wr0   )r   r   rJ   r^   r_   )r)   r`   s     r,   rb   zSimpleQueue.get�  sC   € Ø�[‰[ñ 	,Ø—,‘,×)Ñ)Ó+ˆC÷	,ô ×$Ñ$ SÓ)Ð)÷	,ð 	,ús   �AÁAc                 óö   — t         j                  |«      }| j                  €| j                  j	                  |«       y | j                  5  | j                  j	                  |«       d d d «       y # 1 sw Y   y xY wr0   )r^   rœ   r"   r   rH   rq   s     r,   rY   zSimpleQueue.put‡  s\   € ä×#Ñ# CÓ(ˆØ�;‰;Ðà�L‰L×#Ñ# CÕ(à—‘ñ -Ø—‘×'Ñ'¨Ô,÷-÷ -ñ -ús   Á
A/Á/A8N)r´   rµ   r¶   r-   rt   ri   r3   r7   rb   rY   r¸   r¹   rº   r»   r¼   r.   r,   r   r   g  s9   „ ò%òò òFò'ò*ò-ñ $ E×$6Ñ$6Ó7Ñr.   r   )Ú__all__r    r   r>   r@   r\   r¹   r�   r™   Úqueuer   r   Ú_multiprocessingÚ r	   r
   Ú	reductionÚForkingPicklerr^   Úutilr   r   r   r   r   Úobjectr   r•   r   r   r¼   r.   r,   ú<module>rÚ      sx   ðò 4€ã 
Û 	Û Û Û Û Û Û ç ã å Ý Ø×#Ñ#×2Ñ2€ç HÕ HôL8ˆFô L8ñ^ ‹H€	ô%"�Eô %"ôV*8�&õ *8r.   