ó
    F\hj-  ã                   ó  • S SK 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J	r	J
r
  SSKJr  S/r\R                  S:X  a  S SKr " S S	\5      rO$ " S
 S	\5      rS rS r\	R(                  " \\5         " S S\5      r " S S\5      rg)é    N)Údefaultdicté   )Ú	reductionÚassert_spawning)ÚutilÚBufferWrapperÚwin32c                   óL   • \ rS rSrSr\R                  " 5       rS rS r	S r
Srg)ÚArenaé   z<
A shared memory area backed by anonymous memory (Windows).
c                 óv  • Xl         [        S5       Hp  nS[        R                  " 5       [	        U R
                  5      4-  n[        R                  " SXS9n[        R                  " 5       S:X  a    OUR                  5         Mr     [        S5      eX0l        X@l        U R                   U R                  4U l        g )Néd   z	pym-%d-%séÿÿÿÿ©Útagnamer   zCannot find name for new mmap)ÚsizeÚrangeÚosÚgetpidÚnextÚ_randÚmmapÚ_winapiÚGetLastErrorÚcloseÚFileExistsErrorÚnameÚbufferÚ_state)Úselfr   Úir   Úbufs        Ú+/usr/lib/python3.13/multiprocessing/heap.pyÚ__init__ÚArena.__init__&   sŒ   € ØŒIÜ˜3–Z�Ø"¤b§i¢i£k´4¸¿
¹
Ó3CÐ%DÑD�Ü—i’i  DÑ7�Ü×'Ò'Ó)¨QÓ.Ùà—	‘	–ñ  ô &Ð&EÓFÐFØŒIØŒKØŸ9™9 d§i¡iÐ0ˆD�Kó    c                 ó0   • [        U 5        U R                  $ ©N)r   r   )r    s    r#   Ú__getstate__ÚArena.__getstate__5   s   € Ü˜DÔ!Ø—;‘;Ðr&   c                 óŽ   • U=u  U l         U l        U l        [        R                  " SU R                   U R                  S9U l        g )Nr   r   )r   r   r   r   r   )r    Ústates     r#   Ú__setstate__ÚArena.__setstate__9   s3   € Ø16Ð6Ñ ˆDŒI�t”y 4¤;äŸ)š) B¨¯	©	¸4¿9¹9ÑEˆD�Kr&   )r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚtempfileÚ_RandomNameSequencer   r$   r)   r-   Ú__static_attributes__© r&   r#   r   r      s'   † ñ	ð ×,Ò,Ó.ˆò	1ò	õ	Fr&   r   c                   óT   • \ rS rSrSr\R                  S:X  a  S/rO/ rS	S jrS r	Sr
g)
r   éC   z:
A shared memory area backed by a temporary file (POSIX).
Úlinuxz/dev/shmc                 óÜ  • Xl         X l        US:X  aª  [        R                  " S[        R
                  " 5       -  U R                  U5      S9u  U l        n[        R                  " U5        [        R                  " U [        R                  U R                  45        [        R                  " U R                  U5        [        R                  " U R                  U R                   5      U l        g )Nr   zpym-%d-)ÚprefixÚdir)r   Úfdr4   Úmkstempr   r   Ú_choose_dirÚunlinkr   ÚFinalizer   Ú	ftruncater   r   )r    r   r>   r   s       r#   r$   r%   M   sš   € ØŒIØŒGØ�R‹xô !)× 0Ò 0Ø%¤b§i¢i£kÑ1Ø×)Ñ)¨$Ó/ñ!1‘�”˜ô —	’	˜$”Ü—’˜d¤B§H¡H¨t¯w©w¨jÔ9Ü—’˜TŸW™W dÔ+ÜŸ)š) D§G¡G¨T¯Y©YÓ7ˆD�Kr&   c                 óÀ   • U R                    H:  n[        R                  " U5      nUR                  UR                  -  U:¼  d  M8  Us  $    [
        R                  " 5       $ r(   )Ú_dir_candidatesr   ÚstatvfsÚf_bavailÚf_frsizer   Úget_temp_dir)r    r   ÚdÚsts       r#   r@   ÚArena._choose_dir[   sL   € ð ×)Ô)�Ü—Z’Z “]�Ø—;‘; §¡Ñ,°Õ4Ø’Hñ *ô ×$Ò$Ó&Ð&r&   )r   r>   r   N)r   )r/   r0   r1   r2   r3   ÚsysÚplatformrE   r$   r@   r6   r7   r&   r#   r   r   C   s+   † ñ	ð �<‰<˜7Ó"Ø)˜l‰Oà ˆOô	8õ	'r&   c                 óœ   • U R                   S:X  a  [        S5      e[        U R                  [        R
                  " U R                   5      44$ )Nr   zDArena is unpicklable because forking was enabled when it was created)r>   Ú
ValueErrorÚrebuild_arenar   r   ÚDupFd)Úas    r#   Úreduce_arenarT   d   sC   € Ø�4‰4�2‹:Üð Gó Hð Hä˜qŸv™v¤y§¢°q·t±tÓ'<Ð=Ð=Ð=r&   c                 ó4   • [        XR                  5       5      $ r(   )r   Údetach)r   Údupfds     r#   rQ   rQ   j   s   € Ü�TŸ<™<›>Ó*Ð*r&   c                   ó†   • \ rS rSrSrSrSr\R                  4S jr	\
S 5       rS rS rS rS	 rS
 rS rS rS rS rSrg)ÚHeapés   é   i  @ c                 ó  • [         R                  " 5       U l        [        R                  " 5       U l        Xl        / U l        0 U l        0 U l	        0 U l
        [        [        5      U l        / U l        / U l        SU l        SU l        g ©Nr   )r   r   Ú_lastpidÚ	threadingÚLockÚ_lockÚ_sizeÚ_lengthsÚ_len_to_seqÚ_start_to_blockÚ_stop_to_blockr   ÚsetÚ_allocated_blocksÚ_arenasÚ_pending_free_blocksÚ
_n_mallocsÚ_n_frees)r    r   s     r#   r$   ÚHeap.__init__{   sw   € ÜŸ	š	›ˆŒÜ—^’^Ó%ˆŒ
àŒ
àˆŒð ˆÔð  "ˆÔð !ˆÔô "-¬SÓ!1ˆÔØˆŒð %'ˆÔ!ð ˆŒØˆ�r&   c                 ó   • US-
  nX-   U) -  $ )Nr   r7   )ÚnÚ	alignmentÚmasks      r#   Ú_roundupÚHeap._roundup˜   s   € ð ˜1‰}ˆØ‘˜T˜EÑ!Ð!r&   c                 óL  • U R                  [        U R                  U5      [        R                  5      nU R                  U R
                  :  a  U =R                  S-  sl        [        R                  " SU5        [        U5      nU R                  R                  U5        USU4$ )Né   z"allocating a new mmap of length %dr   )rr   Úmaxrb   r   ÚPAGESIZEÚ_DOUBLE_ARENA_SIZE_UNTILr   Úinfor   ri   Úappend)r    r   ÚlengthÚarenas       r#   Ú
_new_arenaÚHeap._new_arenaž   sy   € à—‘œs 4§:¡:¨tÓ4´d·m±mÓDˆð �:‰:˜×5Ñ5Ó5Ø�JŠJ˜!‰O�JÜ�	Š	Ð6¸Ô?Ü�f“ˆØ�‰×Ñ˜EÔ"Ø�q˜&Ð!Ð!r&   c                 óš  • UR                   nX R                  :  a  g U R                  R                  U5      nU(       a   eU R                  US4	 U R
                  X4	 U R                  R                  U5        U R                  U   nUR                  USU45        U(       d)  U R                  U	 U R                  R                  U5        g g r]   )
r   Ú_DISCARD_FREE_SPACE_LARGER_THANrh   Úpopre   rf   ri   Úremoverd   rc   )r    r|   r{   ÚblocksÚseqs        r#   Ú_discard_arenaÚHeap._discard_arenaª   s¹   € à—‘ˆð ×8Ñ8Ó8ØØ×'Ñ'×+Ñ+¨EÓ2ˆÞÐˆzØ× Ñ  %¨ Ð,Ø×Ñ  Ð0Ø�‰×Ñ˜EÔ"Ø×Ñ˜vÑ&ˆØ�
‰
�E˜1˜fÐ%Ô&ÞØ× Ñ  Ð(Ø�M‰M× Ñ  Õ(ð r&   c                 ó|  • [         R                  " U R                  U5      nU[        U R                  5      :X  a  U R	                  U5      $ U R                  U   nU R
                  U   nUR                  5       nU(       d  U R
                  U	 U R                  U	 Uu  pgnU R                  Xg4	 U R                  Xh4	 U$ r(   )	ÚbisectÚbisect_leftrc   Úlenr}   rd   r�   re   rf   )	r    r   r!   r{   r„   Úblockr|   ÚstartÚstops	            r#   Ú_mallocÚHeap._malloc¼   s¬   € ä×Ò˜tŸ}™}¨dÓ3ˆØ”�D—M‘MÓ"Ó"Ø—?‘? 4Ó(Ð(à—]‘] 1Ñ%ˆFØ×"Ñ" 6Ñ*ˆCØ—G‘G“IˆEÞØ×$Ñ$ VÐ,¨d¯m©m¸AÐ.>à$Ñˆ�tØ× Ñ  % Ð0Ø×Ñ  Ð.Øˆr&   c                 óê  • Uu  p#n U R                   X#4   nU R                  U5      u  p6 U R                  X$4   nU R                  U5      u  pdX#U4nXC-
  n U R                  U   R                  U5        XR                  X#4'   XR                   X$4'   g ! [         a     Nvf = f! [         a     Nbf = f! [         a4    U/U R                  U'   [        R                  " U R                  U5         N|f = fr(   )	rf   Ú_absorbÚKeyErrorre   rd   rz   rˆ   Úinsortrc   )	r    r‹   r|   rŒ   r�   Ú
prev_blockÚ_Ú
next_blockr{   s	            r#   Ú_add_free_blockÚHeap._add_free_blockÍ   s
  € à$Ñˆ�tð	0Ø×,Ñ,¨e¨^Ñ<ˆJð —|‘| JÓ/‰HˆEð	/Ø×-Ñ-¨u¨mÑ<ˆJð —l‘l :Ó.‰GˆAà˜tÐ$ˆØ‘ˆð	1Ø×Ñ˜VÑ$×+Ñ+¨EÔ2ð
 05×Ñ˜e˜^Ñ,Ø-2×Ñ˜U˜MÒ*øô- ó 	Ùð	ûô ó 	Ùð	ûô ó 	1Ø(- wˆD×Ñ˜VÑ$Ü�MŠM˜$Ÿ-™-¨Ö0ð	1ús4   ‡B «B$ ÁB4 Â
B!Â B!Â$
B1Â0B1Â4;C2Ã1C2c                 óð   • Uu  p#nU R                   X#4	 U R                  X$4	 XC-
  nU R                  U   nUR                  U5        U(       d(  U R                  U	 U R                  R                  U5        X44$ r(   )re   rf   rd   r‚   rc   )r    r‹   r|   rŒ   r�   r{   r„   s          r#   r‘   ÚHeap._absorbë   sz   € à$Ñˆ�tØ× Ñ  % Ð0Ø×Ñ  Ð.à‘ˆØ×Ñ˜vÑ&ˆØ�
‰
�5ÔÞØ× Ñ  Ð(Ø�M‰M× Ñ  Ô(àˆ{Ðr&   c                 ó‚   • Uu  p#nU R                   U   nUR                  X445        U(       d  U R                  U5        g g r(   )rh   r‚   r…   )r    r‹   r|   rŒ   r�   rƒ   s         r#   Ú_remove_allocated_blockÚHeap._remove_allocated_blockú   s@   € Ø"Ñˆ�dØ×'Ñ'¨Ñ.ˆØ�‰�u�mÔ$Þà×Ñ Õ&ð r&   c                 ó¢   •   U R                   R                  5       nU R                  U5        U R	                  U5        M?  ! [         a     g f = fr(   )rj   r�   Ú
IndexErrorr—   rœ   ©r    r‹   s     r#   Ú_free_pending_blocksÚHeap._free_pending_blocks  sU   € àðØ×1Ñ1×5Ñ5Ó7�ð × Ñ  Ô'Ø×(Ñ(¨Ô/ñ øô ó Ùðús   ƒA Á
AÁAc                 ó4  • [         R                  " 5       U R                  :w  a8  [        SR	                  [         R                  " 5       U R                  5      5      eU R
                  R                  S5      (       d  U R                  R                  U5        g  U =R                  S-  sl	        U R                  5         U R                  U5        U R                  U5        U R
                  R                  5         g ! U R
                  R                  5         f = f)Nz$My pid ({0:n}) is not last pid {1:n}Fr   )r   r   r^   rP   Úformatra   Úacquirerj   rz   rl   r¡   r—   rœ   Úreleaser    s     r#   ÚfreeÚ	Heap.free  sÉ   € ô �9Š9‹;˜$Ÿ-™-Ó'ÜØ6×=Ñ=Ü—I’I“K §¡ó/ó0ð 0ð �z‰z×!Ñ! %×(Ñ(ð ×%Ñ%×,Ñ,¨UÕ3ð%Ø—’ Ñ"•Ø×)Ñ)Ô+Ø×$Ñ$ UÔ+Ø×,Ñ,¨UÔ3à—
‘
×"Ñ"Õ$ø�—
‘
×"Ñ"Õ$ús   ÂAC; Ã;Dc                 óŽ  • US:  a  [        SR                  U5      5      e[        R                  U::  a  [	        SR                  U5      5      e[
        R                  " 5       U R                  :w  a  U R                  5         U R                     U =R                  S-  sl
        U R                  5         U R                  [        US5      U R                  5      nU R                  U5      u  p#nX1-   nXT:  a  U R!                  X%U45        U R"                  U   R%                  X545        X#U4sS S S 5        $ ! , (       d  f       g = f)Nr   úSize {0:n} out of rangeúSize {0:n} too larger   )rP   r¤   rM   ÚmaxsizeÚOverflowErrorr   r   r^   r$   ra   rk   r¡   rr   rv   Ú
_alignmentrŽ   r—   rh   Úadd)r    r   r|   rŒ   r�   Ú	real_stops         r#   ÚmallocÚHeap.malloc(  sü   € à�!‹8ÜÐ6×=Ñ=¸dÓCÓDÐDÜ�;‰;˜$ÓÜÐ 6× =Ñ =¸dÓ CÓDÐDÜ�9Š9‹;˜$Ÿ-™-Ó'Ø�M‰MŒOØ�Z‹ZØ�OŠO˜qÑ �Oà×%Ñ%Ô'Ø—=‘=¤ T¨1£¨t¯©Ó?ˆDØ#'§<¡<°Ó#5Ñ ˆU˜4Ø™ˆIØÓð ×$Ñ$ e¸Ð%=Ô>Ø×"Ñ" 5Ñ)×-Ñ-¨uÐ.@ÔAØ )Ð,÷ �Z�Zús   ÂBD6Ä6
E)rh   ri   r^   rd   rc   ra   rl   rk   rj   rb   re   rf   N)r/   r0   r1   r2   r®   r€   rx   r   rw   r$   Ústaticmethodrr   r}   r…   rŽ   r—   r‘   rœ   r¡   r§   r±   r6   r7   r&   r#   rY   rY   s   sb   † ð €Jà&3Ð#Ø,Ðà ŸM™Mô ð: ñ"ó ð"ò

"ò)ò$ò"3ò<ò'ò0ò%õ8-r&   rY   c                   ó.   • \ rS rSr\" 5       rS rS rSrg)r   iB  c                 óL  • US:  a  [        SR                  U5      5      e[        R                  U::  a  [	        SR                  U5      5      e[
        R                  R                  U5      nX!4U l        [        R                  " U [
        R                  R                  U4S9  g )Nr   rª   r«   )Úargs)rP   r¤   rM   r¬   r­   r   Ú_heapr±   r   r   rB   r§   )r    r   r‹   s      r#   r$   ÚBufferWrapper.__init__F  s€   € Ø�!‹8ÜÐ6×=Ñ=¸dÓCÓDÐDÜ�;‰;˜$ÓÜÐ 6× =Ñ =¸dÓ CÓDÐDÜ×#Ñ#×*Ñ*¨4Ó0ˆØ�mˆŒÜ�Š�dœM×/Ñ/×4Ñ4¸E¸8ÓDr&   c                 óX   • U R                   u  u  pp4[        UR                  5      X"U-    $ r(   )r   Ú
memoryviewr   )r    r|   rŒ   r�   r   s        r#   Úcreate_memoryviewÚBufferWrapper.create_memoryviewO  s+   € Ø%)§[¡[Ñ"Ñˆ�tÜ˜%Ÿ,™,Ó'¨°D©jÐ9Ð9r&   )r   N)	r/   r0   r1   r2   rY   r·   r$   r»   r6   r7   r&   r#   r   r   B  s   † á‹F€EòEõ:r&   )rˆ   Úcollectionsr   r   r   rM   r4   r_   Úcontextr   r   Ú r   Ú__all__rN   r   Úobjectr   rT   rQ   ÚregisterrY   r   r7   r&   r#   Ú<module>rÃ      sŽ   ðó Ý #Û Û 	Û 
Û Û ç /Ý àÐ
€ð ‡<�<�7ÓãôF�õ FôH'�ô 'òB>ò+ð ×Ò�u˜lÔ+ôI-ˆ6ô I-ô^:�Fõ :r&   