
    ⾙h#                     D   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y)    N   )context)	reduction)util)	_billiardwin32BufferWrapper   r   c                   @    e Zd Z ej                         Zd Zd Zd Zy)Arenac                    || _         t        d      D ]o  }dt        j                         t	        | j
                        fz  }t        j                  d||      }t        j                         dk(  r n4|j                          q t        d      }t        j                  |_        ||| _        || _        | j                   | j                  f| _        y )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         I/var/www/Befach/backend/env/lib/python3.12/site-packages/billiard/heap.py__init__zArena.__init__'   s    DI3Z"biik4

3C%DDiiD$7%%'1,		   =>!LL		DIDK99dii0DK    c                 D    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                        | _        y )Nr   r   )r   r   r    r   r   )r!   states     r%   __setstate__zArena.__setstate__<   s3    166 DIty4;))B		499EDKr'   N)	__name__
__module____qualname__tempfile_RandomNameSequencer   r&   r,   r/    r'   r%   r   r   #   s"    ,,,.	1"		Fr'   r   c                       e Zd ZddZy)r   c                 4   || _         || _        |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\  r*d|z  }t        ||z        D ]  }|j                  |        ~|j                  d||z  z         |j!                         |k(  sJ 	 d d d        nt        j                  dt        j                         fz  t        j                               \  | _        }t        j                  |       t        j                  | t
        j                  | j                  f       t        j"                  | j                  |       t%        j$                  | j                  | j                         | _        y # 1 sw Y   9xY w)	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Rx$,$4$4(BIIK>9 --/%MDGT
 IIdOMM$477*=$> 0!(2:$)BJE%*42:%6 ! &7 % 34 vvx4///0 0 %-$4$4(BIIK>9 --/%MDGT IIdOMM$477*=LL$/))DGGTYY7DK#0 0s   
AHHN)r   )r0   r1   r2   r&   r5   r'   r%   r   r   E   s    	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   sC    442: G H Hqvvyqtt'<===r'   c                 6    t        | |j                               S r)   )r   detach)r   dupfds     r%   rN   rN   l   s    T5<<>**r'   c                   b    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y
)Heap   c                     t        j                         | _        t        j                         | _        || _        g | _        i | _        i | _	        i | _
        t               | _        g | _        g | _        y 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   s\    		^^%

! !$$&!r'   c                     |dz
  }| |z   | z  S Nr   r5   )n	alignmentmasks      r%   _roundupzHeap._roundup   s     1}DTE!!r'   c                 f   t        j                  | j                  |      }|t        | j                        k(  r| j	                  t        | j                  |      t        j                        }| xj                  dz  c_        t        j                  d|       t        |      }| j                  j                  |       |d|fS | j                  |   }| 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DMM""]]3tzz4#8$--HFJJ!OJII:FC&MELL&1f%%]]1%F""6*CGGIE$$V,dmmA.>$t  %0.r'   c                    |\  }}}	 | j                   ||f   }| j                  |      \  }}	 | j                  ||f   }| j                  |      \  }}|||f}||z
  }	 | j                  |   j                  |       || j                  ||f<   || j                   ||f<   y # t        $ r Y }w xY w# t        $ r Y fw xY w# t        $ r3 |g| j                  |<   t        j                  | j                  |       Y |w xY wr)   )	ra   _absorbKeyErrorr`   r_   rt   rn   insortr^   )	r!   ry   rw   rz   r{   
prev_blockrK   
next_blockrv   s	            r%   _freez
Heap._free   s    $t	0,,eU^<J ||J/HE1	/--udm<J ll:.GAtt$	1V$++E2
 05eU^,-2UDM*-  		  		  	1(-wDV$MM$--0	1s4   B B. B= 	B+*B+.	B:9B:=9C98C9c                     |\  }}}| j                   ||f= | j                  ||f= ||z
  }| j                  |   }|j                  |       |s(| j                  |= | 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  (MM  (d{r'   c                     	 	 | j                   j                         }| j                  j	                  |       | j                  |       H# t        $ r Y y w xY wr)   )re   ru   
IndexErrorrc   r   r   r!   ry   s     r%   _free_pending_blockszHeap._free_pending_blocks   sY    11557 ""))%0JJu   s   A
 
	AAc                    t        j                         | j                  k(  sJ | j                  j	                  d      s| j
                  j                  |       y 	 | j                          | j                  j                  |       | j                  |       | j                  j                          y # | j                  j                          w xY w)NF)r   r   rY   r\   acquirere   rt   r   rc   r   r   releaser   s     r%   freez	Heap.free   s     yy{dmm+++zz!!%( %%,,U3%))+&&--e4

5!

""$

""$s   <B3 3Cc                    d|cxk  rt         j                  k  sJ  J t        j                         | j                  k7  r| j                          | j                  5  | j                          | j                  t        |d      | j                        }| j                  |      \  }}}||z   }||k  r| j                  |||f       |||f}| j                  j                  |       |cd d d        S # 1 sw Y   y xY w)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   s    D&3;;&&&&&99;$--'MMOZZ 		%%'==T1t?D#'<<#5 UE4t|H$

E8T23E8,E""&&u-		 		 		s   BC11C:N)r0   r1   r2   r   r   rr   r&   staticmethodrk   r|   r   r~   r   r   r   r5   r'   r%   rV   rV   v   sE    J MM ' " "
,3<%2r'   rV   c                   2    e Zd Z e       Zd Zd Zd Zd Zy)r	   c                     d|cxk  rt         j                  k  sJ  J t        j                  j	                  |      }||f| _        t        j                  | t        j                  j                  |f       y )Nr   )args)	r   r   r	   _heapr   r    r   rB   r   )r!   r   ry   s      r%   r&   zBufferWrapper.__init__  s^    D&3;;&&&&&##**40dmdM//44E8Dr'   c                     | 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  sE    %)[["td#55ell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  s1    %)[["td%,,'edl;;r'   N)	r0   r1   r2   rV   r   r&   r   r   r   r5   r'   r%   r	   r	     s    FE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D8 8B>+ Iul+K Kd< <r'   