
    h#                     F   S SK r S SKrS SK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	  SSKJ
r
  SSKJr  SSKJrJr  S/r\R                   S    S:H  r\R$                  S	:X  a   " 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   )context)	reduction)util)	_billiardwin32BufferWrapper   r   c                   H    \ rS rSr\R
                  " 5       rS rS rS r	Sr
g)Arena#   c                    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    O6UR                  5         Mr     [        S5      n[        R                  Ul        UeX0l        X@l        U R                   U R                  4U l        g )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         5D:\TimeStamps\venv\Lib\site-packages\billiard/heap.py__init__Arena.__init__'   s    I3Z"biik4

3C%DDiiD7%%'1,		   =>!LL		IK99dii0DK    c                 F    [         R                  " U 5        U R                  $ N)r   assert_spawningr!   r"   s    r&   __getstate__Arena.__getstate__8   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__<   s3    166 DIty4;))B		499EDKr)   )r!   r    r   r   N)__name__
__module____qualname____firstlineno__tempfile_RandomNameSequencer   r'   r.   r2   __static_attributes__ r)   r&   r   r   #   s     ,,.	1"		Fr)   r   c                       \ rS rSrSS jrSrg)r   E   c                 P   Xl         X l        US:X  Ga  [        (       Ga  [        R                  " S[
        R                  " 5       4-  [        R                  " 5       S9u  U l        n[
        R                  " U5        [        R                  " U [
        R                  U R                  45        [        R                  " U R                  SSS9 nSnX:  a+  SU-  n[        X-  5       H  nUR                  U5        M     AUR                  SX-  -  5        UR!                  5       U:X  d   e S S S 5        O[        R                  " S[
        R                  " 5       4-  [        R                  " 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 ! , (       d  f       N?= f)	Nr   zpym-%d-)prefixdirwbF)closefdi       )r   fdPY3r8   mkstempr   r   r   get_temp_dirunlinkFinalizer   ioopenr   writetell	ftruncater   r    )r"   r   rD   r   fbszeros_s           r&   r'   r(   G   sx   IGRx3$,$4$4(BIIK>9 --/%MDGT
 IIdOMM$477*=$>!(:$)BJE%*4:%6 ! &7 % 34 vvx4/// ?> %-$4$4(BIIK>9 --/%MDGT IIdOMM$477*=LL$/))DGGTYY7DK# ?>s   AH
H%)r    rD   r   N)r   )r4   r5   r6   r7   r'   r:   r;   r)   r&   r   r   E   s    	8r)   c                     U R                   S:X  a  [        S5      e[        U R                  [        R
                  " U R                   5      44$ )Nr   zCArena is unpicklable becauseforking was enabled when it was created)rD   
ValueErrorrebuild_arenar   r   DupFd)as    r&   reduce_arenarX   f   sC    442: G H Hqvvyqtt'<===r)   c                 4    [        XR                  5       5      $ r+   )r   detach)r   dupfds     r&   rU   rU   l   s    T<<>**r)   c                   l    \ 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g)Heapv      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        g 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'   Heap.__init__z   sZ    		^^%

! !$$&!r)   c                     US-
  nX-   U) -  $ Nr   r;   )n	alignmentmasks      r&   _roundupHeap._roundup   s     1}TE!!r)   c                 p   [         R                  " U R                  U5      nU[        U R                  5      :X  a  U R	                  [        U R                  U5      [        R                  5      nU =R                  S-  sl        [        R                  " SU5        [        U5      nU R                  R                  U5        USU4$ 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$ )N   z"allocating a new mmap of length %dr   )bisectbisect_leftrf   lenrt   maxre   r   PAGESIZEr   infor   rl   appendrg   poprh   ri   )	r"   r   r#   lengtharenaseqblockstartstops	            r&   _malloc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                    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+   )	ri   _absorbKeyErrorrh   rg   r~   rx   insortrf   )	r"   r   r   r   r   
prev_blockrR   
next_blockr   s	            r&   _free
Heap._free   s
   $t	0,,e^<J ||J/HE	/--um<J ll:.GAt$	1V$++E2
 05e^,-2UM*-  		  		  	1(-wDV$MM$--0	1s4   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+   )rh   ri   rg   removerf   )r"   r   r   r   r   r   r   s          r&   r   Heap._absorb   sz    $t  %0.v&

5  (MM  ({r)   c                       U R                   R                  5       nU R                  R	                  U5        U R                  U5        MI  ! [         a     g f = fr+   )rm   r   
IndexErrorrk   r   r   r"   r   s     r&   _free_pending_blocksHeap._free_pending_blocks   sY    11557 ""))%0JJu   s   A 
AAc                    [         R                  " 5       U R                  :X  d   eU R                  R	                  S5      (       d  U R
                  R                  U5        g  U R                  5         U R                  R                  U5        U R                  U5        U R                  R                  5         g ! U R                  R                  5         f = f)NF)r   r   ra   rd   acquirerm   r~   r   rk   r   r   releaser   s     r&   free	Heap.free   s     yy{dmm+++zz!!%(( %%,,U3%))+&&--e4

5!

""$

""$s   #<B: :Cc                    SUs=::  a  [         R                  :  d   e   e[        R                  " 5       U R                  :w  a  U R                  5         U R                     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        X#U4nU R                  R                  U5        UsS S S 5        $ ! , (       d  f       g = f)Nr   r   )sysmaxsizer   r   ra   r'   rd   r   rt   r{   
_alignmentr   r   rk   add)r"   r   r   r   r   new_stopr   s          r&   mallocHeap.malloc   s    D&3;;&&&&&99;$--'MMOZZ%%'==T1t?D#'<<#5 U4|H

ET238,E""&&u- ZZs    BC11
C?)
rk   rl   ra   rg   rf   rd   rm   re   rh   ri   N)r4   r5   r6   r7   r   r   r|   r'   staticmethodrt   r   r   r   r   r   r   r:   r;   r)   r&   r]   r]   v   sE    J MM ' " "
,3<%2r)   r]   c                   :    \ rS rSr\" 5       rS rS rS rS r	Sr
g)r	   i  c                     SUs=::  a  [         R                  :  d   e   e[        R                  R	                  U5      nX!4U l        [        R                  " U [        R                  R                  U4S9  g )Nr   )args)	r   r   r	   _heapr   r!   r   rI   r   )r"   r   r   s      r&   r'   BufferWrapper.__init__  s\    D&3;;&&&&&##**40mdM//44E8Dr)   c                 ~    U R                   u  u  pp4[        R                  " UR                  5      u  pVXF::  d   eXR-   $ r+   )r!   r   address_of_bufferr    )r"   r   r   r   r   addressr   s          r&   get_addressBufferWrapper.get_address  s;    %)[["t#55ellC~~r)   c                      U R                   S   $ rp   r!   r-   s    r&   get_sizeBufferWrapper.get_size  s    {{1~r)   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_memoryview  s+    %)[["t%,,'dl;;r)   r   N)r4   r5   r6   r7   r]   r   r'   r   r   r   r:   r;   r)   r&   r	   r	     s    FEE<r)   )rx   r   rJ   r   r   r   rb   r8    r   r   r   _extr   r   __all__version_inforE   platformr   rX   rU   registerr]   r	   r;   r)   r&   <module>r      s      	  	 
      "
	qQ <<7F FD8 8B>+ ul+K Kd< <r)   