§
    (¶Õij-  ã                   ó"  — d dl Z d dlm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mZ dgZej        dk    rd dlZ G d„ d	e¦  «        Zn% G d
„ d	e¦  «        Zd„ Zd„ Z e	j        ee¦  «          G d„ de¦  «        Z G d„ de¦  «        ZdS )é    N)Údefaultdicté   )Ú	reductionÚassert_spawning)ÚutilÚBufferWrapperÚwin32c                   óB   — e Zd ZdZ ej        ¦   «         Zd„ Zd„ Zd„ Z	dS )ÚArenazL
        A shared memory area backed by anonymous memory (Windows).
        c                 ót  — || _         t          d¦  «        D ]p}dt          j        ¦   «         t	          | j        ¦  «        fz  }t          j        d||¬¦  «        }t          j        ¦   «         dk    r n$| 	                    ¦   «          Œqt          d¦  «        ‚|| _        || _        | j         | j        f| _        d S )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.11/multiprocessing/heap.pyÚ__init__zArena.__init__&   s®   € ØˆDŒIÝ˜3‘Z”Zð Gð G�Ø"¥b¤i¡k¤kµ4¸¼
Ñ3CÔ3CÐ%DÑD�Ý”i  D°$Ð7Ñ7Ô7�ÝÔ'Ñ)Ô)¨QÒ.Ð.Ø�Eà—	’	‘”��å%Ð&EÑFÔFÐFØˆDŒIØˆDŒKØœ9 d¤iÐ0ˆDŒKˆKˆKó    c                 ó.   — t          | ¦  «         | j        S ©N)r   r   )r   s    r"   Ú__getstate__zArena.__getstate__5   s   € Ý˜DÑ!Ô!Ð!Ø”;Ðr$   c                 ó~   — |x\  | _         | _        | _        t          j        d| j         | j        ¬¦  «        | _        d S )Nr   r   )r   r   r   r   r   )r   Ústates     r"   Ú__setstate__zArena.__setstate__9   s7   € Ø16Ð6Ñ ˆDŒI�t”y 4¤;åœ) B¨¬	¸4¼9ÐEÑEÔEˆDŒKˆKˆKr$   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚtempfileÚ_RandomNameSequencer   r#   r'   r*   © r$   r"   r   r      sb   € € € € € ð	ð 	ð -�Ô,Ñ.Ô.ˆð	1ð 	1ð 	1ð	ð 	ð 	ð	Fð 	Fð 	Fð 	Fð 	Fr$   r   c                   óB   — e Zd ZdZej        dk    rdgZng Zdd„Zd„ ZdS )	r   zJ
        A shared memory area backed by a temporary file (POSIX).
        Úlinuxz/dev/shmr   c                 ó¨  — || _         || _        |dk    r™t          j        dt	          j        ¦   «         z  |                      |¦  «        ¬¦  «        \  | _        }t	          j        |¦  «         t          j	        | t          j
        | j        f¦  «         t	          j        | j        |¦  «         t          j        | j        | j         ¦  «        | _        d S )Nr   zpym-%d-)ÚprefixÚdir)r   Úfdr/   Úmkstempr   r   Ú_choose_dirÚunlinkr   ÚFinalizer   Ú	ftruncater   r   )r   r   r7   r   s       r"   r#   zArena.__init__M   s¯   € ØˆDŒIØˆDŒGØ�RŠxˆxõ !)Ô 0Ø%¥b¤i¡k¤kÑ1Ø×)Ò)¨$Ñ/Ô/ð!1ñ !1ô !1‘�”˜õ ”	˜$‘”�Ý”˜d¥B¤H¨t¬w¨jÑ9Ô9Ð9Ý”˜TœW dÑ+Ô+Ð+Ýœ) D¤G¨T¬YÑ7Ô7ˆDŒKˆKˆKr$   c                 ó’   — | j         D ]-}t          j        |¦  «        }|j        |j        z  |k    r|c S Œ.t          j        ¦   «         S r&   )Ú_dir_candidatesr   ÚstatvfsÚf_bavailÚf_frsizer   Úget_temp_dir)r   r   ÚdÚsts       r"   r9   zArena._choose_dir[   sT   € ð Ô)ð ð �Ý”Z ‘]”]�Ø”; ¤Ñ,°Ò4Ð4Ø�H�H�Hð 5åÔ$Ñ&Ô&Ð&r$   N)r   )	r+   r,   r-   r.   ÚsysÚplatformr>   r#   r9   r1   r$   r"   r   r   C   s^   € € € € € ð	ð 	ð Œ<˜7Ò"Ð"Ø)˜lˆOˆOà ˆOð	8ð 	8ð 	8ð 	8ð	'ð 	'ð 	'ð 	'ð 	'r$   c                 ó„   — | j         dk    rt          d¦  «        ‚t          | j        t	          j        | j         ¦  «        ffS )Nr   zDArena is unpicklable because forking was enabled when it was created)r7   Ú
ValueErrorÚrebuild_arenar   r   ÚDupFd)Úas    r"   Úreduce_arenarL   d   sF   € ØŒ4�2Š:ˆ:Ýð Gñ Hô Hð Hå˜qœv¥y¤°q´tÑ'<Ô'<Ð=Ð=Ð=r$   c                 óF   — t          | |                     ¦   «         ¦  «        S r&   )r   Údetach)r   Údupfds     r"   rI   rI   j   s   € Ý�T˜5Ÿ<š<™>œ>Ñ*Ô*Ð*r$   c                   óz   — e Zd ZdZdZdZej        fd„Ze	d„ ¦   «         Z
d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚHeapé   i  @ c                 ó  — t          j        ¦   «         | _        t          j        ¦   «         | _        || _        g | _        i | _        i | _	        i | _
        t          t          ¦  «        | _        g | _        g | _        d| _        d| _        d S ©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#   zHeap.__init__{   s�   € Ýœ	™œˆŒÝ”^Ñ%Ô%ˆŒ
àˆŒ
àˆŒð ˆÔð  "ˆÔð !ˆÔõ "-­SÑ!1Ô!1ˆÔØˆŒð %'ˆÔ!ð ˆŒØˆŒˆˆr$   c                 ó   — |dz
  }| |z   | z  S )Nr   r1   )ÚnÚ	alignmentÚmasks      r"   Ú_roundupzHeap._roundup˜   s   € ð ˜1‰}ˆØ�D‘˜T˜EÑ!Ð!r$   c                 ó.  — |                       t          | j        |¦  «        t          j        ¦  «        }| j        | j        k     r| xj        dz  c_        t          j        d|¦  «         t          |¦  «        }| j	         
                    |¦  «         |d|fS )Né   z"allocating a new mmap of length %dr   )rh   ÚmaxrY   r   ÚPAGESIZEÚ_DOUBLE_ARENA_SIZE_UNTILr   Úinfor   r`   Úappend)r   r   ÚlengthÚarenas       r"   Ú
_new_arenazHeap._new_arenaž   s…   € à—’�s 4¤:¨tÑ4Ô4µd´mÑDÔDˆð Œ:˜Ô5Ò5Ð5ØˆJŒJ˜!‰OˆJŒJÝŒ	Ð6¸Ñ?Ô?Ð?Ý�f‘”ˆØŒ×Ò˜EÑ"Ô"Ð"Ø�q˜&Ð!Ð!r$   c                 ó\  — |j         }|| j        k     rd S | j                             |¦  «        }|rJ ‚| j        |df= | j        ||f= | j                             |¦  «         | j        |         }|                     |d|f¦  «         |s$| j        |= | j	                             |¦  «         d S d S rT   )
r   Ú_DISCARD_FREE_SPACE_LARGER_THANr_   Úpopr\   r]   r`   Úremover[   rZ   )r   rq   rp   ÚblocksÚseqs        r"   Ú_discard_arenazHeap._discard_arenaª   sÓ   € à”ˆð �DÔ8Ò8Ð8ØˆFØÔ'×+Ò+¨EÑ2Ô2ˆØÐÐÐØÔ  %¨ Ð,ØÔ ¨ Ð0ØŒ×Ò˜EÑ"Ô"Ð"ØÔ˜vÔ&ˆØ�
Š
�E˜1˜fÐ%Ñ&Ô&Ð&Øð 	)ØÔ  Ð(ØŒM× Ò  Ñ(Ô(Ð(Ð(Ð(ð	)ð 	)r$   c                 óH  — t          j        | j        |¦  «        }|t          | j        ¦  «        k    r|                      |¦  «        S | j        |         }| j        |         }|                     ¦   «         }|s| j        |= | j        |= |\  }}}| j        ||f= | j        ||f= |S r&   )	ÚbisectÚbisect_leftrZ   Úlenrr   r[   ru   r\   r]   )	r   r   r    rp   rx   Úblockrq   ÚstartÚstops	            r"   Ú_malloczHeap._malloc¼   s®   € åÔ˜tœ}¨dÑ3Ô3ˆØ•�D”MÑ"Ô"Ò"Ð"Ø—?’? 4Ñ(Ô(Ð(à”] 1Ô%ˆFØÔ" 6Ô*ˆCØ—G’G‘I”IˆEØð ?ØÔ$ VÐ,¨d¬m¸AÐ.>à$Ñˆ��tØÔ  %¨ Ð0ØÔ ¨ Ð.Øˆr$   c                 óè  — |\  }}}	 | j         ||f         }|                      |¦  «        \  }}n# t          $ r Y nw xY w	 | j        ||f         }|                      |¦  «        \  }}n# t          $ r Y nw xY w|||f}||z
  }	 | j        |                              |¦  «         n5# t          $ r( |g| j        |<   t          j        | j        |¦  «         Y nw xY w|| j        ||f<   || j         ||f<   d S r&   )	r]   Ú_absorbÚKeyErrorr\   r[   ro   r{   ÚinsortrZ   )	r   r~   rq   r   r€   Ú
prev_blockÚ_Ú
next_blockrp   s	            r"   Ú_add_free_blockzHeap._add_free_blockÍ   sY  € à$Ñˆ��tð	0ØÔ,¨e°U¨^Ô<ˆJð —|’| JÑ/Ô/‰HˆE�1�1øõ ð 	ð 	ð 	ØˆDð	øøøð
	/ØÔ-¨u°d¨mÔ<ˆJð —l’l :Ñ.Ô.‰GˆAˆtˆtøõ ð 	ð 	ð 	ØˆDð	øøøð
 ˜˜tÐ$ˆØ˜‘ˆð	1ØÔ˜VÔ$×+Ò+¨EÑ2Ô2Ð2Ð2øÝð 	1ð 	1ð 	1Ø(- wˆDÔ˜VÑ$ÝŒM˜$œ-¨Ñ0Ô0Ð0Ð0Ð0ð	1øøøð 05ˆÔ˜e U˜^Ñ,Ø-2ˆÔ˜U D˜MÑ*Ð*Ð*s0   ˆ0 °
=¼=ÁA) Á)
A6Á5A6Â B% Â%/CÃCc                 óÔ   — |\  }}}| j         ||f= | j        ||f= ||z
  }| j        |         }|                     |¦  «         |s"| j        |= | j                             |¦  «         ||fS r&   )r\   r]   r[   rv   rZ   )r   r~   rq   r   r€   rp   rx   s          r"   rƒ   zHeap._absorbë   s‡   € à$Ñˆ��tØÔ  %¨ Ð0ØÔ ¨ Ð.à˜‘ˆØÔ˜vÔ&ˆØ�
Š
�5ÑÔÐØð 	)ØÔ  Ð(ØŒM× Ò  Ñ(Ô(Ð(à�dˆ{Ðr$   c                 óŒ   — |\  }}}| j         |         }|                     ||f¦  «         |s|                      |¦  «         d S d S r&   )r_   rv   ry   )r   r~   rq   r   r€   rw   s         r"   Ú_remove_allocated_blockzHeap._remove_allocated_blockú   s]   € Ø"Ñˆˆu�dØÔ'¨Ô.ˆØ�Š�u˜d�mÑ$Ô$Ð$Øð 	'à×Ò Ñ&Ô&Ð&Ð&Ð&ð	'ð 	'r$   c                 ó²   — 	 	 | j                              ¦   «         }n# t          $ r Y d S w xY w|                      |¦  «         |                      |¦  «         ŒWr&   )ra   ru   Ú
IndexErrorr‰   rŒ   ©r   r~   s     r"   Ú_free_pending_blockszHeap._free_pending_blocks  sq   € ð	0ðØÔ1×5Ò5Ñ7Ô7��øÝð ð ð Ø��ðøøøà× Ò  Ñ'Ô'Ð'Ø×(Ò(¨Ñ/Ô/Ð/ð	0s   ƒ �
+ª+c                 ó(  — t          j        ¦   «         | j        k    r9t          d                     t          j        ¦   «         | j        ¦  «        ¦  «        ‚| j                             d¦  «        s| j                             |¦  «         d S 	 | xj	        dz  c_	        |  
                    ¦   «          |                      |¦  «         |                      |¦  «         | j                             ¦   «          d S # | j                             ¦   «          w xY w)Nz$My pid ({0:n}) is not last pid {1:n}Fr   )r   r   rU   rH   ÚformatrX   Úacquirera   ro   rc   r�   r‰   rŒ   Úreleaser�   s     r"   Úfreez	Heap.free  s  € õ Œ9‰;Œ;˜$œ-Ò'Ð'ÝØ6×=Ò=Ý”I‘K”K ¤ñ/ô /ñ0ô 0ð 0ð Œz×!Ò! %Ñ(Ô(ð 	%ð Ô%×,Ò,¨UÑ3Ô3Ð3Ð3Ð3ð%Ø�” Ñ"�”Ø×)Ò)Ñ+Ô+Ð+Ø×$Ò$ UÑ+Ô+Ð+Ø×,Ò,¨UÑ3Ô3Ð3à”
×"Ò"Ñ$Ô$Ð$Ð$Ð$ø�”
×"Ò"Ñ$Ô$Ð$Ð$øøøs   ÂAC6 Ã6Dc                 ó¸  — |dk     r"t          d                     |¦  «        ¦  «        ‚t          j        |k    r"t	          d                     |¦  «        ¦  «        ‚t          j        ¦   «         | j        k    r|                      ¦   «          | j	        5  | xj
        dz  c_
        |                      ¦   «          |                      t          |d¦  «        | j        ¦  «        }|                      |¦  «        \  }}}||z   }||k     r|                      |||f¦  «         | j        |                              ||f¦  «         |||fcd d d ¦  «         S # 1 swxY w Y   d S )Nr   úSize {0:n} out of rangeúSize {0:n} too larger   )rH   r’   rE   ÚmaxsizeÚOverflowErrorr   r   rU   r#   rX   rb   r�   rh   rk   Ú
_alignmentr�   r‰   r_   Úadd)r   r   rq   r   r€   Ú	real_stops         r"   ÚmalloczHeap.malloc(  s‘  € à�!Š8ˆ8ÝÐ6×=Ò=¸dÑCÔCÑDÔDÐDÝŒ;˜$ÒÐÝÐ 6× =Ò =¸dÑ CÔ CÑDÔDÐDÝŒ9‰;Œ;˜$œ-Ò'Ð'Ø�MŠM‰OŒOˆOØŒZð 	-ð 	-ØˆOŒO˜qÑ ˆOŒOà×%Ò%Ñ'Ô'Ð'Ø—=’=¥ T¨1¡¤¨t¬Ñ?Ô?ˆDØ#'§<¢<°Ñ#5Ô#5Ñ ˆU�E˜4Ø ™ˆIØ˜4ÒÐð ×$Ò$ e¨Y¸Ð%=Ñ>Ô>Ð>ØÔ" 5Ô)×-Ò-¨u°iÐ.@ÑAÔAÐAØ˜5 )Ð,ð	-ð 	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   ÂB0EÅEÅEN)r+   r,   r-   r›   rt   rm   r   rl   r#   Ústaticmethodrh   rr   ry   r�   r‰   rƒ   rŒ   r�   r•   rž   r1   r$   r"   rQ   rQ   s   sâ   € € € € € ð €Jà&3Ð#Ø,Ðà œMð ð ð ð ð: ð"ð "ñ „\ð"ð

"ð 
"ð 
"ð)ð )ð )ð$ð ð ð"3ð 3ð 3ð<ð ð ð'ð 'ð 'ð0ð 0ð 0ð%ð %ð %ð8-ð -ð -ð -ð -r$   rQ   c                   ó.   — e Zd Z e¦   «         Zd„ Zd„ ZdS )r   c                 óX  — |dk     r"t          d                     |¦  «        ¦  «        ‚t          j        |k    r"t	          d                     |¦  «        ¦  «        ‚t
          j                             |¦  «        }||f| _        t          j
        | t
          j        j        |f¬¦  «         d S )Nr   r—   r˜   )Úargs)rH   r’   rE   r™   rš   r   Ú_heaprž   r   r   r;   r•   )r   r   r~   s      r"   r#   zBufferWrapper.__init__F  s˜   € Ø�!Š8ˆ8ÝÐ6×=Ò=¸dÑCÔCÑDÔDÐDÝŒ;˜$ÒÐÝÐ 6× =Ò =¸dÑ CÔ CÑDÔDÐDÝÔ#×*Ò*¨4Ñ0Ô0ˆØ˜d�mˆŒÝŒ�d�MÔ/Ô4¸E¸8ÐDÑDÔDÐDÐDÐDr$   c                 ó\   — | j         \  \  }}}}t          |j        ¦  «        |||z   …         S r&   )r   Ú
memoryviewr   )r   rq   r   r€   r   s        r"   Úcreate_memoryviewzBufferWrapper.create_memoryviewO  s3   € Ø%)¤[Ñ"Ñˆ��t˜dÝ˜%œ,Ñ'Ô'¨¨e°D©jÐ(8Ô9Ð9r$   N)r+   r,   r-   rQ   r£   r#   r¦   r1   r$   r"   r   r   B  s@   € € € € € àˆD‰FŒF€EðEð Eð Eð:ð :ð :ð :ð :r$   )r{   Úcollectionsr   r   r   rE   r/   rV   Úcontextr   r   Ú r   Ú__all__rF   r   Úobjectr   rL   rI   ÚregisterrQ   r   r1   r$   r"   ú<module>r­      sœ  ðð €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð àÐ
€ð „<�7ÒÐà€N€N€NðFð Fð Fð Fð F�ñ Fô Fð Fð FðH'ð 'ð 'ð 'ð '�ñ 'ô 'ð 'ðB>ð >ð >ð+ð +ð +ð €IÔ�u˜lÑ+Ô+Ð+ðI-ð I-ð I-ð I-ð I-ˆ6ñ I-ô I-ð I-ð^:ð :ð :ð :ð :�Fñ :ô :ð :ð :ð :r$   