HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/env/lib64/python3.10/site-packages/billiard/__pycache__/heap.cpython-310.pyc
o

!we�#�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlm
Z
mZdgZejddkZejd	krQGd
d�d�ZnGdd�d�Zd
d�Zdd�Ze
�ee�Gdd�d�ZGdd�d�ZdS)�N�)�context)�	reduction)�util)�	_billiard�win32�
BufferWrapper�rc@s,eZdZe��Zdd�Zdd�Zdd�ZdS)�ArenacCs�||_td�D]!}dt��t|j�f}tjd||d�}t��dkr$n|�	�qt
d�}tj|_|�||_
||_|j|j
f|_dS)N�dz	pym-%d-%s�����tagnamerzCannot find name for new mmap)�size�range�os�getpid�next�_rand�mmapr�GetLastError�close�IOError�errno�EEXIST�name�buffer�_state)�selfr�ir�buf�exc�r"�F/home/arjun/projects/env/lib/python3.10/site-packages/billiard/heap.py�__init__'s
�Arena.__init__cCst�|�|jS�N)r�assert_spawningr�rr"r"r#�__getstate__8s
zArena.__getstate__cCs,|\|_|_|_tjd|j|jd�|_dS)Nrr
)rrrrr)r�stater"r"r#�__setstate__<szArena.__setstate__N)	�__name__�
__module__�__qualname__�tempfile�_RandomNameSequencerr$r)r+r"r"r"r#r
#s
r
c@seZdZddd�ZdS)r
rcCsD||_||_|dkr�trptjdt��ft��d�\|_}t�	|�t�
|tj|jf�tj
|jddd��2}d}||krOd|}t||�D]}|�|�qF~|�d||�|��|ks`J�Wd�n1sjwYn'tjdt��ft��d�\|_}t�	|�t�
|tj|jf�t�|j|�t�|j|j�|_dS)	Nrzpym-%d-)�prefix�dir�wbF)�closefdi�)r�fd�PY3r/�mkstemprrr�get_temp_dir�unlink�Finalizer�io�openr�write�tell�	ftruncaterr)rrr6r�f�bs�zeros�_r"r"r#r$Gs:�
��
�
r%N)r)r,r-r.r$r"r"r"r#r
EscCs(|jdkr	td��t|jt�|j�ffS)NrzCArena is unpicklable becauseforking was enabled when it was created)r6�
ValueError�
rebuild_arenarr�DupFd)�ar"r"r#�reduce_arenafs
rIcCst||���Sr&)r
�detach)r�dupfdr"r"r#rFlsrFc@sZeZdZdZejfdd�Zedd��Zdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�ZdS)�Heap�cCsJt��|_t��|_||_g|_i|_i|_	i|_
t�|_g|_
g|_dSr&)rr�_lastpid�	threading�Lock�_lock�_size�_lengths�_len_to_seq�_start_to_block�_stop_to_block�set�_allocated_blocks�_arenas�_pending_free_blocks)rrr"r"r#r$zs


z
Heap.__init__cCs|d}|||@S�Nrr")�n�	alignment�maskr"r"r#�_roundup�sz
Heap._roundupc	Cs�t�|j|�}|t|j�kr5|�t|j|�tj�}|jd9_t	�
d|�t|�}|j�
|�|d|fS|j|}|j|}|��}|sM|j|=|j|=|\}}}|j||f=|j||f=|S)N�z"allocating a new mmap of length %dr)�bisect�bisect_leftrS�lenr_�maxrRr�PAGESIZEr�infor
rY�appendrT�poprUrV)	rrr�length�arena�seq�block�start�stopr"r"r#�_malloc�s"



zHeap._mallocc	Cs�|\}}}z	|j||f}Wn	tyYnw|�|�\}}z	|j||f}Wn	ty1Ynw|�|�\}}|||f}||}z
|j|�|�Wntyb|g|j|<t�|j|�Ynw||j||f<||j||f<dSr&)	rV�KeyError�_absorbrUrTrgra�insortrS)	rrlrjrmrn�
prev_blockrD�
next_blockrir"r"r#�_free�s.
��
�z
Heap._freecCs^|\}}}|j||f=|j||f=||}|j|}|�|�|s+|j|=|j�|�||fSr&)rUrVrT�removerS)rrlrjrmrnrirkr"r"r#rq�s


zHeap._absorbcCs>	z|j��}Wn
tyYdSw|j�|�|�|�qr&)rZrh�
IndexErrorrXrvru�rrlr"r"r#�_free_pending_blocks�s�
�zHeap._free_pending_blockscCsjt��|jks	J�|j�d�s|j�|�dSz|��|j�	|�|�
|�W|j��dS|j��w)NF)rrrNrQ�acquirerZrgryrXrvru�releaserxr"r"r#�free�sz	Heap.freecCs�d|krtjksJ�J�t��|jkr|��|j�;|��|�t	|d�|j
�}|�|�\}}}||}||krD|�|||f�|||f}|j
�|�|Wd�S1s[wYdS)Nrr)�sys�maxsizerrrNr$rQryr_rd�
_alignmentrorurX�add)rrrjrmrn�new_stoprlr"r"r#�malloc�s
$�zHeap.mallocN)r,r-r.rrrer$�staticmethodr_rorurqryr|r�r"r"r"r#rLvs

rLc@s2eZdZe�Zdd�Zdd�Zdd�Zdd�Zd	S)
rcCsNd|krtjksJ�J�tj�|�}||f|_tj|tjj|fd�dS)Nr)�args)	r}r~r�_heapr�rrr;r|)rrrlr"r"r#r$s
zBufferWrapper.__init__cCs4|j\\}}}}t�|j�\}}||ksJ�||Sr&)rr�address_of_bufferr)rrjrmrnr�addressrir"r"r#�get_addressszBufferWrapper.get_addresscCs
|jdSr[)rr(r"r"r#�get_sizes
zBufferWrapper.get_sizecCs&|j\\}}}}t|j�|||�Sr&)r�
memoryviewr)rrjrmrnrr"r"r#�create_memoryviewszBufferWrapper.create_memoryviewN)	r,r-r.rLr�r$r�r�r�r"r"r"r#rs)rarr<rrr}rOr/�rrr�_extrr�__all__�version_infor7�platformr
rIrF�registerrLrr"r"r"r#�<module>s.	
"!