
    Sf#                     P   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	 ddlm
Z
 ddlmZ ddlmZmZ dgZej        d          dk    Zej        d	k    r G d
 d          Zn$ G d d          Zd Zd Z e
j        ee            G d d          Z G d d          ZdS )    N   )context)	reduction)util)	_billiardwin32BufferWrapper   r   c                   >    e Zd Z ej                    Zd Zd Zd ZdS )Arenac                    || _         t          d          D ]p}dt          j                    t	          | j                  fz  }t          j        d||          }t          j                    dk    r n7|	                                 qt          d          }t          j        |_        ||| _        || _        | j         | j        f| _        d S )Nd   z	pym-%d-%stagnamer   zCannot find name for new mmap)sizerangeosgetpidnext_randmmapr   GetLastErrorcloseIOErrorerrnoEEXISTnamebuffer_state)selfr   ir   bufexcs         ?/var/www/html/env/lib/python3.11/site-packages/billiard/heap.py__init__zArena.__init__'   s    DI3ZZ 
 
"bikk4
3C3C%DDiD$777%''1,,E		=>>!L		DIDK9di0DKKK    c                 8    t          j        |            | j        S N)r   assert_spawningr    r!   s    r%   __getstate__zArena.__getstate__8   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__<   s7    166 DIty4;)B	49EEEDKKKr'   N)	__name__
__module____qualname__tempfile_RandomNameSequencer   r&   r,   r/    r'   r%   r   r   #   sV        ,,..	1 	1 	1"	 	 		F 	F 	F 	F 	Fr'   r   c                       e Zd ZddZdS )r   r   c                    || _         || _        |dk    rt          r!t          j        dt          j                    fz  t          j                              \  | _        }t          j	        |           t          j
        | t
          j        | j        f           t          j        | j        dd          5 }d}||k    r0d|z  }t          ||z            D ]}|                    |           ~|                    d||z  z             |                                |k    sJ 	 d d d            n# 1 swxY w Y   nt          j        dt          j                    fz  t          j                              \  | _        }t          j	        |           t          j
        | t
          j        | j        f           t          j        | j        |           t%          j        | j        | j                   | _        d S )	Nr   zpym-%d-)prefixdirwbF)closefdi       )r   fdPY3r3   mkstempr   r   r   get_temp_dirunlinkFinalizer   ioopenr   writetell	ftruncater   r   )r!   r   r=   r   fbszeros_s           r%   r&   zArena.__init__G   s   DIDGRxx 0$,$4(BIKK>9 -//% % %MDGT
 IdOOOM$47*===$>>> 0!(2::$)BJE%*42:%6%6 / / ! % 3444 vvxx4/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 %-$4(BIKK>9 -//% % %MDGT IdOOOM$47*===L$///)DGTY77DKKKs   8A.D33D7:D7N)r   )r0   r1   r2   r&   r5   r'   r%   r   r   E   s(        	8 	8 	8 	8 	8 	8r'   c                     | j         dk    rt          d          t          | j        t	          j        | j                   ffS )Nr   zCArena is unpicklable becauseforking was enabled when it was created)r=   
ValueErrorrebuild_arenar   r   DupFd)as    r%   reduce_arenarQ   f   sF    42:: G H H Hqvyqt'<'<===r'   c                 F    t          | |                                          S r)   )r   detach)r   dupfds     r%   rN   rN   l   s    T5<<>>***r'   c                   `    e 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
S )Heap   c                     t          j                    | _        t          j                    | _        || _        g | _        i | _        i | _	        i | _
        t                      | _        g | _        g | _        d S r)   )r   r   _lastpid	threadingLock_lock_size_lengths_len_to_seq_start_to_block_stop_to_blockset_allocated_blocks_arenas_pending_free_blocks)r!   r   s     r%   r&   zHeap.__init__z   se    	^%%

! !$$&!!!r'   c                     |dz
  }| |z   | z  S Nr   r5   )n	alignmentmasks      r%   _roundupzHeap._roundup   s     1}DTE!!r'   c                 *   t          j        | j        |          }|t          | j                  k    r|                     t          | j        |          t          j                  }| xj        dz  c_        t          j
        d|           t          |          }| j                            |           |d|fS | j        |         }| j        |         }|                                }|s| j        |= | j        |= |\  }}}| j        ||f= | j        ||f= |S )N   z"allocating a new mmap of length %dr   )bisectbisect_leftr^   lenrk   maxr]   r   PAGESIZEr   infor   rd   appendr_   popr`   ra   )	r!   r   r"   lengtharenaseqblockstartstops	            r%   _malloczHeap._malloc   s   t}d33DM""""]]3tz4#8#8$-HHFJJ!OJJI:FCCC&MMEL&&&1f%%]1%F"6*CGGIIE ?$V,dmA.>$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)   )	ra   _absorbKeyErrorr`   r_   rt   rn   insortr^   )	r!   ry   rw   rz   r{   
prev_blockrK   
next_blockrv   s	            r%   _freez
Heap._free   sY   $t	0,eU^<J ||J//HE11  	 	 	D	
	/-udm<J ll:..GAtt  	 	 	D	
 t$	1V$++E2222 	1 	1 	1(-wDV$M$-00000	1 05eU^,-2UDM***s0   0 
==A) )
A65A6 B% %/CCc                     |\  }}}| j         ||f= | j        ||f= ||z
  }| j        |         }|                    |           |s"| j        |= | j                            |           ||fS r)   )r`   ra   r_   remover^   )r!   ry   rw   rz   r{   rv   rx   s          r%   r~   zHeap._absorb   s    $t %0.v&

5 	) (M  (((d{r'   c                     	 	 | j                                         }n# t          $ r Y d S w xY w| j                            |           |                     |           \r)   )re   ru   
IndexErrorrc   r   r   r!   ry   s     r%   _free_pending_blockszHeap._free_pending_blocks   sr    	15577   "))%000JJu	s    
++c                    t          j                    | j        k    sJ | j                            d          s| j                            |           d S 	 |                                  | j        	                    |           | 
                    |           | j                                         d S # | j                                         w xY w)NF)r   r   rY   r\   acquirere   rt   r   rc   r   r   releaser   s     r%   freez	Heap.free   s     y{{dm++++z!!%(( 	% %,,U33333%))+++&--e444

5!!!
""$$$$$
""$$$$s   AB4 4Cc                    d|cxk    rt           j        k     sn J t          j                    | j        k    r|                                  | j        5  |                                  |                     t          |d          | j
                  }|                     |          \  }}}||z   }||k     r|                     |||f           |||f}| j                            |           |cd d d            S # 1 swxY w Y   d S )Nr   r   )sysmaxsizer   r   rY   r&   r\   r   rk   rq   
_alignmentr|   r   rc   add)r!   r   rw   rz   r{   new_stopry   s          r%   malloczHeap.malloc   sM   D&&&&3;&&&&&&9;;$-''MMOOOZ 		 		%%'''==T1t??D#'<<#5#5 UE4t|H$

E8T2333E8,E"&&u---		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   BC::C>C>N)r0   r1   r2   r   r   rr   r&   staticmethodrk   r|   r   r~   r   r   r   r5   r'   r%   rV   rV   v   s        J M ' ' ' ' " " \"
  ,3 3 3<    % % %2    r'   rV   c                   :    e Zd Z e            Zd Zd Zd Zd ZdS )r	   c                     d|cxk    rt           j        k     sn J t          j                            |          }||f| _        t          j        | t          j        j        |f           d S )Nr   )args)	r   r   r	   _heapr   r    r   rB   r   )r!   r   ry   s      r%   r&   zBufferWrapper.__init__  so    D&&&&3;&&&&&&#**400dmdM/4E8DDDDDDr'   c                 p    | j         \  \  }}}}t          j        |j                  \  }}||k    sJ ||z   S r)   )r    r   address_of_bufferr   )r!   rw   rz   r{   r   addressrv   s          r%   get_addresszBufferWrapper.get_address  sB    %)["td#5elCCv~~~~r'   c                     | j         d         S rg   )r    r+   s    r%   get_sizezBufferWrapper.get_size  s    {1~r'   c                 \    | j         \  \  }}}}t          |j                  |||z            S r)   )r    
memoryviewr   )r!   rw   rz   r{   r   s        r%   create_memoryviewzBufferWrapper.create_memoryview  s3    %)["td%,''edl(:;;r'   N)	r0   r1   r2   rV   r   r&   r   r   r   r5   r'   r%   r	   r	     s^        DFFEE E E    < < < < <r'   )rn   r   rC   r   r   r   rZ   r3    r   r   r   _extr   r   __all__version_infor>   platformr   rQ   rN   registerrV   r	   r5   r'   r%   <module>r      s     				  				 



                        " " " " " " " "
	qQ <7F F F F F F F F FD8 8 8 8 8 8 8 8B> > >+ + + Iul+++K K K K K K K Kd< < < < < < < < < <r'   