add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
U

�AT^j-c@s�ddlZddlmZddlZddlZddlZddlZddlZddlm	Z	m
Z
ddlmZdgZ
ejdkr�ddlZGdd	�d	e�Zn,Gd
d	�d	e�Zdd�Zd
d�Ze	�ee�Gdd�de�ZGdd�de�ZdS)�N)�defaultdict�)�	reduction�assert_spawning)�util�
BufferWrapperZwin32c@s0eZdZdZe��Zdd�Zdd�Zdd�Z	dS)	�ArenazL
        A shared memory area backed by anonymous memory (Windows).
        cCsx||_td�D]B}dt��t|j�f}tjd||d�}t��dkrHqZ|�	�qt
d��||_||_|j|jf|_
dS)Nidz	pym-%d-%s������ZtagnamerzCannot find name for new mmap)�sizeZrange�os�getpidZnext�_rand�mmap�_winapiZGetLastError�closeZFileExistsError�name�buffer�_state)�selfr
�irZbuf�r�,/usr/lib64/python3.8/multiprocessing/heap.py�__init__&s
�Arena.__init__cCst|�|jS�N)rr)rrrr�__getstate__5szArena.__getstate__cCs,|\|_|_|_tjd|j|jd�|_dS)Nrr	)r
rrrr)rZstaterrr�__setstate__9szArena.__setstate__N)
�__name__�
__module__�__qualname__�__doc__�tempfileZ_RandomNameSequencer
rrrrrrrrs
rc@s8eZdZdZejdkrdgZngZd
dd�Zdd�Zd	S)rzJ
        A shared memory area backed by a temporary file (POSIX).
        Zlinuxz/dev/shmrcCsx||_||_|dkrbtjdt��|�|�d�\|_}t�|�t�	|tj
|jf�t�|j|�t�|j|j�|_
dS)Nrzpym-%d-)ZprefixZdir)r
�fdr!Zmkstemprr�_choose_dirZunlinkr�FinalizerZ	ftruncaterr)rr
r"rrrrrMs
�
rcCs6|jD]&}t�|�}|j|j|kr|Sqt��Sr)�_dir_candidatesrZstatvfsZf_bavailZf_frsizerZget_temp_dir)rr
ZdZstrrrr#[s



zArena._choose_dirN)r)	rrrr �sys�platformr%rr#rrrrrCs

cCs(|jdkrtd��t|jt�|j�ffS)NrzDArena is unpicklable because forking was enabled when it was created)r"�
ValueError�
rebuild_arenar
rZDupFd)Zarrr�reduce_arenads
r*cCst||���Sr)rZdetach)r
Zdupfdrrrr)jsr)c@szeZdZdZdZdZejfdd�Ze	dd��Z
dd�Zd	d
�Zdd�Z
d
d�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�Heapii@cCsXt��|_t��|_||_g|_i|_i|_	i|_
tt�|_
g|_g|_d|_d|_dS�Nr)rr�_lastpid�	threadingZLock�_lock�_size�_lengths�_len_to_seq�_start_to_block�_stop_to_blockrZset�_allocated_blocks�_arenas�_pending_free_blocks�
_n_mallocs�_n_frees)rr
rrrr{s


z
Heap.__init__cCs|d}|||@S)Nrr)ZnZ	alignmentZmaskrrr�_roundup�sz
Heap._roundupcCsZ|�t|j|�tj�}|j|jkr0|jd9_t�d|�t|�}|j	�
|�|d|fS)Niz"allocating a new mmap of length %dr)r:�maxr0r�PAGESIZE�_DOUBLE_ARENA_SIZE_UNTILrZinforr6�append)rr
�length�arenarrr�
_new_arena�szHeap._new_arenacCsz|j}||jkrdS|j�|�}|j|df=|j||f=|j�|�|j|}|�|d|f�|sv|j|=|j	�|�dSr,)
r
�_DISCARD_FREE_SPACE_LARGER_THANr5�popr3r4r6�remover2r1)rr@r?�blocks�seqrrr�_discard_arena�s

zHeap._discard_arenac	Cs|t�|j|�}|t|j�kr&|�|�S|j|}|j|}|��}|sV|j|=|j|=|\}}}|j||f=|j||f=|Sr)	�bisectZbisect_leftr1ZlenrAr2rCr3r4)	rr
rr?rF�blockr@�start�stoprrr�_malloc�s



zHeap._mallocc	Cs�|\}}}z|j||f}Wntk
r0YnX|�|�\}}z|j||f}Wntk
rfYnX|�|�\}}|||f}||}z|j|�|�Wn.tk
r�|g|j|<t�|j|�YnX||j||f<||j||f<dSr)	r4ZKeyError�_absorbr3r2r>rHZinsortr1)	rrIr@rJrKZ
prev_blockZ_Z
next_blockr?rrr�_add_free_block�s(

zHeap._add_free_blockcCs^|\}}}|j||f=|j||f=||}|j|}|�|�|sV|j|=|j�|�||fSr)r3r4r2rDr1)rrIr@rJrKr?rFrrrrM�s


zHeap._absorbcCs4|\}}}|j|}|�||f�|s0|�|�dSr)r5rDrG)rrIr@rJrKrErrr�_remove_allocated_block�s


zHeap._remove_allocated_blockcCsBz|j��}Wntk
r&Yq>YnX|�|�|�|�qdSr)r7rCZ
IndexErrorrNrO�rrIrrr�_free_pending_blockss

zHeap._free_pending_blockscCs~t��|jkr$td�t��|j���|j�d�s>|j�|�n<z.|j
d7_
|��|�|�|�
|�W5|j�	�XdS)Nz$My pid ({0:n}) is not last pid {1:n}Fr)rrr-r(�formatr/Zacquirer7r>Zreleaser9rQrNrOrPrrr�frees
��
z	Heap.freec
Cs�|dkrtd�|���tj|kr.td�|���t��|jkrD|��|j	��|j
d7_
|��|�t
|d�|j�}|�|�\}}}||}||kr�|�|||f�|j|�||f�|||fW5QR�SQRXdS)Nr�Size {0:n} out of range�Size {0:n} too larger)r(rRr&�maxsize�
OverflowErrorrrr-rr/r8rQr:r;�
_alignmentrLrNr5Zadd)rr
r@rJrKZ	real_stoprrr�malloc(s 
zHeap.mallocN)rrrrXrBr=rr<rZstaticmethodr:rArGrLrNrMrOrQrSrYrrrrr+ss

r+c@s"eZdZe�Zdd�Zdd�ZdS)rcCs^|dkrtd�|���tj|kr.td�|���tj�|�}||f|_t	j
|tjj|fd�dS)NrrTrU)Zargs)r(rRr&rVrWr�_heaprYrrr$rS)rr
rIrrrrFs

zBufferWrapper.__init__cCs&|j\\}}}}t|j�|||�Sr)rZ
memoryviewr)rr@rJrKr
rrr�create_memoryviewOszBufferWrapper.create_memoryviewN)rrrr+rZrr[rrrrrBs	)rHZcollectionsrrrr&r!r.ZcontextrrZrZ__all__r'rZobjectrr*r)Zregisterr+rrrrrZ<module>
s&
$!P