add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
a

Z��^�6c@s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	gd�Z
dZdZdZ
dZd	Zd
ZdZdadad
d�Zdd�Zdd�Zdd�Zdd�Zd?dd�Zdd�Zdd�Ze�Zdd�Zdd �Ze��Z e�!�Z"d!d"�Z#d#d$�Z$iZ%e�!�Z&Gd%d&�d&e'�Z(d@d'd(�Z)d)d*�Z*da+eee)e	j,e	j-fd+d,�Z.e�/e.�Gd-d.�d.e'�Z0Gd/d0�d0ej1�Z2ze�3d1�Z4Wne5�y�d2Z4Yn0d3d4�Z6d5d6�Z7d7d8�Z8d9d:�Z9d;d<�Z:d=d>�Z;dS)A�N)�_args_from_interpreter_flags�)�process)�	sub_debug�debug�info�sub_warning�
get_logger�
log_to_stderr�get_temp_dir�register_after_fork�
is_exiting�Finalize�ForkAwareThreadLock�ForkAwareLocal�close_all_fds_except�SUBDEBUG�
SUBWARNINGii
ii�multiprocessingz+[%(levelname)s/%(processName)s] %(message)sFcG�trtjt|g|�R�dS�N)�_logger�logr�Zmsg�args�r�,/usr/lib64/python3.9/multiprocessing/util.pyr,�rcGrr)rr�DEBUGrrrrr0rrcGrr)rr�INFOrrrrr4rrcGrr)rrrrrrrr8rrcCs�ddl}|��zdtsj|�t�adt_ttd�rFt�t	�t�
t	�n$tj�t	dif�tj�
t	dif�W|��n
|��0tS)z0
    Returns logger used by multiprocessing
    rN�
unregisterr)�loggingZ_acquireLockrZ	getLogger�LOGGER_NAMEZ	propagate�hasattr�atexitr�_exit_function�registerZ
_exithandlersZremoveZappendZ_releaseLock)r rrrr<s


rcCsJddl}t�}|�t�}|��}|�|�|�|�|rB|�|�dat	S)zB
    Turn on logging and add a handler which prints to stderr
    rNT)
r rZ	Formatter�DEFAULT_LOGGING_FORMATZ
StreamHandlerZsetFormatterZ
addHandlerZsetLevel�_log_to_stderrr)Zlevelr ZloggerZ	formatterZhandlerrrrr	Ws



r	cCs tjdkrdSttd�rdSdS)NZlinuxTZgetandroidapilevelF)�sysZplatformr"rrrr�#_platform_supports_abstract_socketsls


r)cCs@|sdSt|t�r|ddkSt|t�r4|ddkStd��dS)NFrzz(address type of {address!r} unrecognized)�
isinstanceZbytes�str�	TypeError)Zaddressrrr�is_abstract_socket_namespacets

r-cCs&||�t��}|dur"d|jd<dS)N�tempdir)r�current_process�_config)�rmtreer.r/rrr�_remove_temp_dir�sr2cCsft��j�d�}|durbddl}ddl}|jdd�}td|�tdt	|j
|fdd�|t��jd<|S)Nr.rzpymp-)Zprefixzcreated temp directory %si����)r�exitpriority)rr/r0�get�shutil�tempfileZmkdtemprr
r2r1)r.r5r6rrrr
�s
�r
cCshtt���}|��|D]J\\}}}}z||�Wqty`}ztd|�WYd}~qd}~00qdS)Nz after forker raised exception %s)�list�_afterfork_registry�items�sort�	Exceptionr)r9ZindexZident�func�objZerrr�_run_after_forkers�sr>cCs|ttt�t|�|f<dSr)r8�next�_afterfork_counterZid)r=r<rrrr��rc@sFeZdZdZddd�Zdeeejfdd�Z	dd	�Z
d
d�Zdd
�ZdS)r
zA
    Class which supports object finalization using weakrefs
    rNcCs�|dur&t|t�s&td�|t|����|dur>t�||�|_n|durNtd��||_	||_
|p`i|_|tt
�f|_t��|_|t|j<dS)Nz3Exitpriority ({0!r}) must be None or int, not {1!s}z+Without object, exitpriority cannot be None)r*�intr,Zformat�type�weakrefZref�_weakref�
ValueError�	_callback�_args�_kwargsr?�_finalizer_counter�_key�os�getpid�_pid�_finalizer_registry)�selfr=ZcallbackrZkwargsr3rrr�__init__�s ��

zFinalize.__init__cCs�z||j=Wnty&|d�Ynf0|j|�krB|d�d}n(|d|j|j|j�|j|ji|j��}d|_|_|_|_|_|SdS)zQ
        Run the callback unless it has already been called or cancelled
        zfinalizer no longer registeredz+finalizer ignored because different processNz/finalizer calling %s with args %s and kwargs %s)rK�KeyErrorrNrGrHrIrE)rPZwrrOrrMZresrrr�__call__�s��zFinalize.__call__cCsBzt|j=WntyYn 0d|_|_|_|_|_dS)z3
        Cancel finalization of the object
        N)rOrKrRrErGrHrI�rPrrr�cancel�s��zFinalize.cancelcCs
|jtvS)zS
        Return whether this finalizer is still waiting to invoke callback
        )rKrOrTrrr�still_active��zFinalize.still_activec	Cs�z|��}Wnttfy&d}Yn0|dur<d|jjSd|jjt|jd|j�f}|jrp|dt|j�7}|j	r�|dt|j	�7}|j
ddur�|dt|j
d�7}|dS)	Nz<%s object, dead>z<%s object, callback=%s�__name__z, args=z	, kwargs=rz, exitpriority=z>)rE�AttributeErrorr,Z	__class__rXZgetattrrGrHr+rIrK)rPr=Zxrrr�__repr__�s"
�zFinalize.__repr__)rNN)
rX�
__module__�__qualname__Z__doc__rQrOrrLrMrSrUrVrZrrrrr
�s
�
r
c	s�tdurdS�durdd��n�fdd���fdd�tt�D�}|jdd�|D]N}t�|�}|durPtd	|�z
|�WqPty�d
dl}|��YqP0qP�dur�t��dS)z�
    Run all finalizers whose exit priority is not None and at least minpriority

    Finalizers with highest priority are called first; finalizers with
    the same priority will be called in reverse order of creation.
    NcSs|dduS�Nrr��prrr�<lambda>�z!_run_finalizers.<locals>.<lambda>cs|dduo|d�kSr]rr^)�minpriorityrrr`racsg|]}�|�r|�qSrr)Z.0�key)�frrZ
<listcomp>#raz#_run_finalizers.<locals>.<listcomp>T)Zreversez
calling %sr)	rOr7r:r4rr;�	tracebackZ	print_exc�clear)rbZkeysrcZ	finalizerrer)rdrbr�_run_finalizerss$



rgcCstp
tduS)z6
    Returns true if the process is shutting down
    N)�_exitingrrrrr8rWrcCs�ts�da|d�|d�|d�|�durr|�D] }|jr0|d|j�|j��q0|�D]}|d|j�|��qX|d�|�dS)NTzprocess shutting downz2running all "atexit" finalizers with priority >= 0rz!calling terminate() for daemon %szcalling join() for process %sz)running the remaining "atexit" finalizers)rhZdaemonZnameZ_popenZ	terminateZjoin)rrrg�active_childrenr/r_rrrr$@s	



r$c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
rcCs.t��|_|jj|_|jj|_t|tj�dSr)�	threadingZLock�_lockZacquireZreleaserr�_at_fork_reinitrTrrrrQqs


zForkAwareThreadLock.__init__cCs|j��dSr)rkrlrTrrrrlwrAz#ForkAwareThreadLock._at_fork_reinitcC�
|j��Sr)rk�	__enter__rTrrrrnzrAzForkAwareThreadLock.__enter__cGs|jj|�Sr)rk�__exit__)rPrrrrro}rAzForkAwareThreadLock.__exit__N)rXr[r\rQrlrnrorrrrrpsrc@seZdZdd�Zdd�ZdS)rcCst|dd��dS)NcSrmr)Z__dict__rf)r=rrrr`�raz)ForkAwareLocal.__init__.<locals>.<lambda>)rrTrrrrQ�rAzForkAwareLocal.__init__cCst|�dfS)Nr)rCrTrrr�
__reduce__�rAzForkAwareLocal.__reduce__N)rXr[r\rQrprrrrr�srZSC_OPEN_MAXicCsNt|�dtg}|��tt|�d�D] }t�||d||d�q(dS)N�����r)r7�MAXFDr:ZrangeZlenrLZ
closerange)�fdsZirrrr�src	Cs�tjdurdSztj��Wnttfy2Yn0z@t�tjtj�}zt|dd�t_Wnt�|��Yn0Wnttfy�Yn0dS)NF)Zclosefd)	r(Zstdin�closeZOSErrorrFrLZopenZdevnullZO_RDONLY)�fdrrr�_close_stdin�s

rvc	CsPztj��Wnttfy$Yn0ztj��WnttfyJYn0dSr)r(ZstdoutZflushrYrFZstderrrrrr�_flush_std_streams�srwcCs�ddl}tttt|���}t��\}}zP|�|t�|�gd|dddddddd||ddddddd�Wt�	|�t�	|�St�	|�t�	|�0dS)NrTrqF)
�_posixsubprocessZtupleZsortedZmaprBrLZpipeZ	fork_execZfsencodert)ZpathrZpassfdsrxZerrpipe_readZ
errpipe_writerrr�spawnv_passfds�s �

��
rycGs|D]}t�|�qdS)z/Close each file descriptor given as an argumentN)rLrt)rsrurrr�	close_fds�srzcCsZddlm}t��ddlm}|j��ddlm}|j	��t
�|��|��dS)zKCleanup multiprocessing resources when multiprocessing tests
    completed.r)�support)�
forkserver)�resource_trackerN)
Ztestr{rZ_cleanuprr|Z_forkserverZ_stopr}Z_resource_trackerrgZ
gc_collectZ
reap_children)r{r|r}rrr�_cleanup_tests�s

r~rr)<rLZ	itertoolsr(rDr#rjZ
subprocessrZrZ__all__ZNOTSETrrrrr!r&rr'rrrrrr	r)r-Zabstract_sockets_supportedr2r
ZWeakValueDictionaryr8Zcountr@r>rrOrJZobjectr
rgrrhrir/r$r%rZlocalrZsysconfrrr;rrvrwryrzr~rrrrZ<module>
sn

		V
,�
*