add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
3

�
�^��c@sxddlZddlZddlmZddlmZddl	m
Z
ddlmZ
mZyddlmZWn ek
rtddlmZYnXddd	d
ddd
ddddddddddddddgZejZejZejZejZejZy
ejZWne k
r�dZYnXej!Z![da"da#dd�Z$dd�Z%eZ&dd�ZGdd �d �Z'e'Z(Gd!d	�d	�Z)Gd"d�d�Z*Gd#d�de*�Z+Gd$d�d�Z,Gd%d�d�Z-Gd&d�de.�Z/e�j0Z1e1�d?d(d)�Z2e�a3iZ4iZ5e
�Z6Gd*d�d�Z7Gd+d�de7�Z8Gd,d-�d-e7�Z9Gd.d/�d/e7�Z:d0d
�Z;e;Z<d1d�Z=e=Z>d2d3�Z?d4d�Z@dd5lmAZAe9�aBd6d7�ZCd8d9�ZDd:d�ZEydd;lmFZGWn"ek
�rjdd<lHmGZGYnXd=d>�ZIdS)@�N)�	monotonic)�
format_exc)�WeakSet)�islice�count)�deque�	get_ident�active_count�	Condition�current_thread�	enumerate�main_thread�TIMEOUT_MAX�Event�Lock�RLock�	Semaphore�BoundedSemaphore�Thread�Barrier�BrokenBarrierError�Timer�ThreadError�
setprofile�settrace�local�
stack_sizecC�|adS�N)�
_profile_hook�Zfunc�r �!/usr/lib64/python3.6/threading.pyr2�cCrr)�_trace_hookrr r r!r<r"cOstdkrt||�St||�Sr)�_CRLock�_PyRLock)�args�kwargsr r r!rJs	
c@sReZdZdd�Zdd�Zddd�ZeZd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�_RLockcCst�|_d|_d|_dS�Nr)�_allocate_lock�_block�_owner�_count��selfr r r!�__init__asz_RLock.__init__cCs^|j}yt|j}Wntk
r(YnXd|jj�r:dnd|jj|jj||j	t
t|��fS)Nz)<%s %s.%s object owner=%r count=%d at %s>�lockedZunlocked)r,�_active�name�KeyErrorr+r1�	__class__�
__module__�__qualname__r-ZhexZid)r/�ownerr r r!�__repr__fsz_RLock.__repr__T�cCsDt�}|j|kr"|jd7_dS|jj||�}|r@||_d|_|S�Nr:)rr,r-r+�acquire)r/�blocking�timeoutZme�rcr r r!r<us
z_RLock.acquirecCs<|jt�krtd��|jd|_}|s8d|_|jj�dS)N�cannot release un-acquired lockr:)r,r�RuntimeErrorr-r+�release)r/rr r r!rB�sz_RLock.releasecC�|j�dSr�rB�r/�tZvZtbr r r!�__exit__��z_RLock.__exit__cCs|jj�|\|_|_dSr)r+r<r-r,)r/Zstater r r!�_acquire_restore�s
z_RLock._acquire_restorecCs<|jdkrtd��|j}d|_|j}d|_|jj�||fS)Nrr@)r-rAr,r+rB)r/rr8r r r!�
_release_save�s

z_RLock._release_savecCs|jt�kSr)r,rr.r r r!�	_is_owned�rHz_RLock._is_ownedN������TrL)�__name__r6r7r0r9r<�	__enter__rBrGrIrJrKr r r r!r(Ws

$
r(c@speZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	ddd�Z
ddd�Zddd�Zdd�Z
e
ZdS)r	NcCs�|dkrt�}||_|j|_|j|_y|j|_Wntk
rDYnXy|j|_Wntk
rfYnXy|j|_Wntk
r�YnXt�|_	dSr)
r�_lockr<rBrJ�AttributeErrorrIrK�_deque�_waiters�r/�lockr r r!r0�s$zCondition.__init__cCs
|jj�Sr)rPrOr.r r r!rO�rHzCondition.__enter__cGs|jj|�Sr)rPrG)r/r&r r r!rG�rHzCondition.__exit__cCsd|jt|j�fS)Nz<Condition(%s, %d)>)rP�lenrSr.r r r!r9�rHzCondition.__repr__cC�|jj�dSr)rPrBr.r r r!rJ�rHzCondition._release_savecCrWr)rPr<)r/Zxr r r!rI�rHzCondition._acquire_restorecCs"|jjd�r|jj�dSdSdS)NrFT)rPr<rBr.r r r!rK�s
zCondition._is_ownedcCs�|j�std��t�}|j�|jj|�|j�}d}z:|dkrN|j�d}n |dkrd|jd|�}n
|jd�}|S|j|�|s�y|jj|�Wnt	k
r�YnXXdS)Nzcannot wait on un-acquired lockFTr)
rKrAr*r<rSZappendrJrI�remove�
ValueError)r/r>�waiterZsaved_stateZgotitr r r!�waits*

zCondition.waitcCs\d}|}|�}xH|sV|dk	rD|dkr0t�|}n|t�}|dkrDP|j|�|�}qW|Sr))�_timer[)r/Z	predicater>�endtimeZwaittimeZresultr r r!�wait_for7s


zCondition.wait_forr:cCsj|j�std��|j}tt||��}|s,dSx8|D]0}|j�y|j|�Wq2tk
r`Yq2Xq2WdS)Nz!cannot notify on un-acquired lock)rKrArSrR�_islicerBrXrY)r/ZnZall_waitersZwaiters_to_notifyrZr r r!�notifyNs

zCondition.notifycCs|jt|j��dSr)r`rVrSr.r r r!�
notify_alleszCondition.notify_allrrr�r:)rNr6r7r0rOrGr9rJrIrKr[r^r`raZ	notifyAllr r r r!r	�s
	
0

	c@s4eZdZddd�Zd
dd�ZeZdd	�Zd
d�ZdS)rr:cCs&|dkrtd��tt��|_||_dS)Nrz$semaphore initial value must be >= 0)rYr	r�_cond�_value�r/Zvaluer r r!r0}szSemaphore.__init__TNc
Cs�|r|dk	rtd��d}d}|j�jxb|jdkrv|s8P|dk	rh|dkrTt�|}n|t�}|dkrhP|jj|�q(W|jd8_d}WdQRX|S)Nz.can't specify timeout for non-blocking acquireFrr:T)rYrcrdr\r[)r/r=r>r?r]r r r!r<�s$
zSemaphore.acquirec
Cs.|j�|jd7_|jj�WdQRXdSr;)rcrdr`r.r r r!rB�szSemaphore.releasecCrCrrDrEr r r!rG�rHzSemaphore.__exit__rb)TN)rNr6r7r0r<rOrBrGr r r r!rqs


-c@seZdZddd�Zdd�ZdS)rr:cCstj||�||_dSr)rr0�_initial_valuerer r r!r0��zBoundedSemaphore.__init__c
CsB|j�2|j|jkrtd��|jd7_|jj�WdQRXdS)Nz!Semaphore released too many timesr:)rcrdrfrYr`r.r r r!rB�s

zBoundedSemaphore.releaseNrb)rNr6r7r0rBr r r r!r�s
c@sBeZdZdd�Zdd�Zdd�ZeZdd�Zd	d
�Zddd
�Z	dS)rcCstt��|_d|_dS�NF)r	rrc�_flagr.r r r!r0�rgzEvent.__init__cCs|jjt��dSr)rcr0rr.r r r!�_reset_internal_locks��zEvent._reset_internal_lockscC�|jSr)rir.r r r!�is_set�rkzEvent.is_setc	Cs&|j�d|_|jj�WdQRXdS�NT)rcrirar.r r r!�setsz	Event.setc	Cs|j�d|_WdQRXdSrh)rcrir.r r r!�clear�zEvent.clearNc	Cs,|j�|j}|s|jj|�}|SQRXdSr)rcrir[)r/r>Zsignaledr r r!r[s
z
Event.waitr)
rNr6r7r0rjrmZisSetrorpr[r r r r!r�s
c@s|eZdZddd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zedd��Z
edd��Zedd��ZdS)rNcCs.tt��|_||_||_||_d|_d|_dSr))r	rrc�_action�_timeout�_parties�_stater-)r/�partiesZactionr>r r r!r0?s	zBarrier.__init__cCs�|dkr|j}|j�b|j�|j}|jd7_z&|d|jkrL|j�n
|j|�|S|jd8_|j�XWdQRXdSr;)rsrc�_enterr-rt�_release�_wait�_exit)r/r>Zindexr r r!r[Os	

zBarrier.waitcCs,x|jdkr|jj�qW|jdkr(t�dS)Nr:rrL�rLr:)rurcr[rr.r r r!rwms

zBarrier._enterc	Cs>y"|jr|j�d|_|jj�Wn|j��YnXdSr;)rrrurcra�_breakr.r r r!rxxszBarrier._releasecs4�jj�fdd�|�s"�j�t��jdkr0t�dS)Ncs
�jdkSr)�rur r.r r!Z<lambda>�szBarrier._wait.<locals>.<lambda>r)rcr^r|rru�r/r>r r.r!ry�s
z
Barrier._waitcCs(|jdkr$|jdkr$d|_|jj�dS)Nrr:rLr{)r-rurcrar.r r r!rz�s

z
Barrier._exitc	CsT|j�D|jdkr6|jdkr$d|_q<|jdkr<d|_nd|_|jj�WdQRXdS)Nrr:�rL�����rL)rcr-rurar.r r r!�reset�s


z
Barrier.resetc	Cs|j�|j�WdQRXdSr)rcr|r.r r r!�abort�rqz
Barrier.abortcCsd|_|jj�dS�Nrr�)rurcrar.r r r!r|�szBarrier._breakcCrlr)rtr.r r r!rv��zBarrier.partiescCs|jdkr|jSdSr))rur-r.r r r!�	n_waiting�s
zBarrier.n_waitingcCs
|jdkSr�r}r.r r r!�broken�r�zBarrier.broken�NNr)rNr6r7r0r[rwrxryrzr�r�r|�propertyrvr�r�r r r r!r6s	


	c@seZdZdS)rN)rNr6r7r r r r!r�s�	Thread-%dcCs
|t�Sr)�_counter)Ztemplater r r!�_newname�rHr�c@seZdZdZejZdddfdfdd�dd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd2dd�Zd4dd�Zed d!��Zejd"d!��Zed#d$��Zd%d&�ZeZed'd(��Zejd)d(��Zd*d+�Zd,d-�Zd.d/�Zd0d1�ZdS)5rFN��daemoncCs~|dkri}||_t|pt��|_||_||_|dk	r>||_n
t�j|_d|_	d|_
t�|_d|_
d|_tj|_tj|�dS)NFT)�_target�strr��_name�_args�_kwargs�	_daemonicr
r��_ident�_tstate_lockr�_started�_is_stopped�_initialized�_sys�stderr�_stderr�	_danglingZadd)r/ZgroupZtargetr3r&r'r�r r r!r0�s 
zThread.__init__cCs(|jj�|r|j�nd|_d|_dSrn)r�rj�_set_tstate_lockr�r�)r/�is_aliver r r!rj"s


zThread._reset_internal_lockscCs^d}|jj�rd}|j�|jr$d}|jr2|d7}|jdk	rJ|d|j7}d|jj|j|fS)NZinitialZstartedZstoppedz daemonz %sz<%s(%s, %s)>)	r�rmr�r�r�r�r5rNr�)r/Zstatusr r r!r9.s

zThread.__repr__cCs�|jstd��|jj�r td��t�|t|<WdQRXyt|jf�Wn,tk
rtt�t|=WdQRX�YnX|jj	�dS)Nzthread.__init__() not calledz threads can only be started once)
r�rAr�rm�_active_limbo_lock�_limbo�_start_new_thread�
_bootstrapZ	Exceptionr[r.r r r!�start<s

zThread.startc
Cs.z|jr|j|j|j�Wd|`|`|`XdSr)r�r�r�r.r r r!�runUs	z
Thread.runc	Cs2y|j�Wn |jr&tdkr&dS�YnXdSr)�_bootstrap_innerr�r�r.r r r!r�fs
zThread._bootstrapcCst�|_dSr)rr�r.r r r!�
_set_identzrHzThread._set_identcCst�|_|jj�dSr)�
_set_sentinelr�r<r.r r r!r�}szThread._set_tstate_lockc2Cs��zT|j�|j�|jj�t�|t|j<t|=WdQRXtrLt	j
t�trZt	jt�z�y|j
�Wn�tk
r|Yn�t	r�t	jdk	r�td|jt�ft	jd�n�|jdk	�rH|j�\}}}zxtd|jd|jd�td|jd�x6|�r$td|jjj|j|jjjf|jd�|j}q�Wtd||f|jd�Wd~~~XYnXWdXWdt� ytt�=WnYnXWdQRXXdS)NzException in thread %s:
%s)ZfilezException in thread z2 (most likely raised during interpreter shutdown):z"Traceback (most recent call last):z  File "%s", line %s, in %sz%s: %s)r�r�r�ror�r2r�r�r#r�rrrr�Z
SystemExitr�Zprintr3�_format_excr��	_exc_infoZtb_frameZf_codeZco_filenameZ	tb_linenoZco_nameZtb_nextr)r/Zexc_typeZ	exc_valueZexc_tbr r r!r��sT




zThread._bootstrap_innercCs|j}|dk	rd|_d|_dSrn)r�r�rTr r r!�_stop�szThread._stopcCsByt�tt�=WdQRXWn tk
r<dtjkr8�YnXdS)NZdummy_threading)r�r2rr4r�Zmodulesr.r r r!�_delete�s
zThread._deletecCsZ|jstd��|jj�s td��|t�kr2td��|dkrD|j�n|jt|d�d�dS)N�Thread.__init__() not calledz'cannot join thread before it is startedzcannot join current threadr)r>)r�rAr�rmr
�_wait_for_tstate_lockZmaxr~r r r!�joins


zThread.joinTr:cCs0|j}|dkrn|j||�r,|j�|j�dSr)r�r<rBr�)r/Zblockr>rUr r r!r�&szThread._wait_for_tstate_lockcCrlr)r�r.r r r!r34s	zThread.namecCst|�|_dSr)r�r��r/r3r r r!r3?r�cCrlr)r�r.r r r!�identDs
zThread.identcCs(|js|jj�rdS|jd�|jSrh)r�r�rmr�r.r r r!r�Ps	
zThread.is_alivecCrlr)r�r.r r r!r�`sz
Thread.daemoncCs*|jstd��|jj�r td��||_dS)Nr�z)cannot set daemon status of active thread)r�rAr�rmr��r/Zdaemonicr r r!r�ps

cCrlrr�r.r r r!�isDaemonxrHzThread.isDaemoncC�
||_dSrr�r�r r r!�	setDaemon{rHzThread.setDaemoncCrlr�r3r.r r r!�getName~rHzThread.getNamecCr�rr�r�r r r!�setName�rHzThread.setNamerrLrM)rNr6r7r�r�Zexc_infor�r0rjr9r�r�r�r�r�r�r�r�r�r�r�r3Zsetterr�r�ZisAliver�r�r�r�r�r r r r!r�s6	,A#
&
c@s&eZdZddd�Zdd�Zdd�ZdS)	rNcCsFtj|�||_||_|dk	r"|ng|_|dk	r4|ni|_t�|_dSr)rr0�interval�functionr&r'r�finished)r/r�r�r&r'r r r!r0�s
zTimer.__init__cCrWr)r�ror.r r r!�cancel�rkzTimer.cancelcCs6|jj|j�|jj�s(|j|j|j�|jj�dSr)r�r[r�rmr�r&r'ror.r r r!r��s
z	Timer.runr�)rNr6r7r0r�r�r r r r!r�s	
c@seZdZdd�ZdS)�_MainThreadc
CsHtj|ddd�|j�|jj�|j�t�|t|j<WdQRXdS)NZ
MainThreadF�r3r�)	rr0r�r�ror�r�r2r�r.r r r!r0�s
z_MainThread.__init__N)rNr6r7r0r r r r!r��sr�c@s.eZdZdd�Zdd�Zdd�Zd
dd	�ZdS)�_DummyThreadc
CsDtj|td�dd�|jj�|j�t�|t|j<WdQRXdS)NzDummy-%dTr�)	rr0r�r�ror�r�r2r�r.r r r!r0�s

z_DummyThread.__init__cC�dSrr r.r r r!r��rHz_DummyThread._stopcCsdSrnr r.r r r!r��rkz_DummyThread.is_aliveNcCr�rr r~r r r!r��rHz_DummyThread.joinr)rNr6r7r0r�r�r�r r r r!r��sr�cCs&y
tt�Stk
r t�SXdSr)r2rr4r�r r r r!r
�s
c
Cs t�tt�tt�SQRXdSr)r�rVr2r�r r r r!r�scCsttj��ttj��Sr)�listr2�valuesr�r r r r!�
_enumerate�rkr�c
Cs(t�ttj��ttj��SQRXdSr)r�r�r2r�r�r r r r!r�s)rcCs8tj}|j�tj�t�}x|r2|j�t�}qWdSr)�_main_threadr�rBr��_pickSomeNonDaemonThreadr�)ZtlockrFr r r!�	_shutdown�sr�cCs(x"t�D]}|jr|j�r|SqWdSr)rr�r�)rFr r r!r�sr�cCstSr)r�r r r r!rs)�_local)rcCs�t�ai}t�}|at�|tt��}|jt�xF|D]>}||kr`|jd�t	�}||_
|||<q4|jd�|j�q4Wtj
�tj
�tj|�WdQRXdS)NTF)r*r�r
r�ror�Zupdater�rjrr�r�r�rpr2)Z
new_activeZcurrentZthreadsZthreadr�r r r!�_after_fork(s&






r�)r�)JZsysr�Z_threadZtimerr\Z	tracebackrr�Z_weakrefsetrZ	itertoolsrr_rr-Z_collectionsrrRZImportErrorZcollectionsZ__all__Zstart_new_threadr�Z
allocate_lockr*r�rZerrorrrr$rQr
rr#rrrr(r%r	rrrrrArZ__next__r�r�r�r2r�r�rrr�r�r
Z
currentThreadrZactiveCountr�rrr�r�r�rr�rZ_threading_localr�r r r r!Z<module>s�



q'P&O
'