add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
�

��VcJ/cs&�gd�ZddlZddlZddlZddlZddlZddlmZ	ej�	ej
����Zn
#e$rdZYnwxYwd�Z
d�Zd�Zd�ZGd�d	e��ZGd
�de��ZGd�d
e��ZGd�de��Zdae��aejd��ae��a[iZeej� ����D] \Z!Z"e!dd�dkr
de!vr	de!��ee"<�![!["e��Z#dS))�BaseProcess�current_process�active_children�parent_process�N)�WeakSetc��tS)z@
    Return process object representing the current process
    )�_current_process���0/usr/lib64/python3.11/multiprocessing/process.pyrr%s
���r	csF�t��tt��S)zN
    Return list of process objects corresponding to live child processes
    )�_cleanup�list�	_childrenrr	r
rr+s��
�J�J�J��	�?�?�r	cr)z?
    Return process object representing the parent process
    )�_parent_processrr	r
rr3s
���r	cs��tt��D]5}|j����t�|���6dS�N)rr
�_popen�poll�discard)Zp� r
rr=sH��
�)�_�_�!�!���8�=�=�?�?�	!����a� � � ��!�!r	csn�eZdZdZd�Zddddifdd�d�Zd�Zd�Zd	�Zd
�Z	d�Z
dd�Zd
�Zd�Z
ed���Zejd���Zed���Zejd���Zed���Zejd���Zed���Zed���ZeZed���Zd�Zdd�Zed���ZdS)rz�
    Process objects represent activity that is run in a separate process

    The class is analogous to `threading.Thread`
    cs�t�r)ZNotImplementedError��selfrr
�_PopenzBaseProcess._PopenMs��!�!r	Nr)�daemoncs6�tt��}tj|fz|_tj���|_t
j��|_tj	|_
d|_d|_||_
t|��|_t!|��|_|p;t%|��jdzd�d�|jD����z|_|�||_t.�|��dS)NF�-z:c3s4K�|]}t|��V��dSr)�str)Z.0Zi�  r
z	<genexpr>z'BaseProcess.__init__.<locals>.<genexpr>^s(����=�=��c�!�f�f�=�=�=�=�=�=r	)Znext�_process_counterr�	_identity�_configZcopy�os�getpid�_parent_pid�name�_parent_namer�_closed�_targetZtuple�_argsZdict�_kwargs�type�__name__�join�_namer�	_dangling�add)rZgroupZtargetr!ZargsZkwargsr�count�        r
�__init__zBaseProcess.__init__Ps����%�&�&��)�3�u�h�>���'�/�4�4�6�6����9�;�;���,�1�������������4�[�[��
��F�|�|����>�T�$�Z�Z�0�3�6��X�X�=�=�d�n�=�=�=�=�=�>��
��	!� �D�K��
�
�d�����r	cs2�|jrtd���dS)Nzprocess object is closed)r#�
ValueErrorrrr
�
_check_closedzBaseProcess._check_closedcs%���<�	9��7�8�8�8�	9�	9r	csF�|jr|j|ji|j��dSdS)zQ
        Method to be run in sub-process; can be overridden in sub-class
        N)r$r%r&rrr
�runzBaseProcess.rungs9���<�	6��D�L�$�*�5���5�5�5�5�5�	6�	6r	cs��|���t��|�|��|_|jj|_|`|`|`t�
|��dS)z%
        Start child process
        N)r1rrr�sentinel�	_sentinelr$r%r&r
r,rrr
�startzBaseProcess.startnsg��	
������	�
�
�
��k�k�$�'�'�����-���
�L�$�*�d�l��
�
�d�����r	c�`�|���|j���dS)zT
        Terminate process; sends SIGTERM signal or uses TerminateProcess()
        N)r1r�	terminaterrr
r7zBaseProcess.terminate�s0��	
��������������r	cr6)zT
        Terminate process; sends SIGKILL signal or uses TerminateProcess()
        N)r1r�killrrr
r8zBaseProcess.kill�s0��	
��������������r	cs��|���|j�|��}|�t�|��dSdS)z5
        Wait until child process terminates
        N)r1r�waitr
r)r�timeoutZres�   r
r)zBaseProcess.join�sY��	
�������k���w�'�'���	$����d�#�#�#�#�#�	$�	$r	cs��|���|turdS|j�dS|j���}|�dSt�|��dS)z1
        Return whether process is alive
        TNF)r1rrrr
r)rZ
returncoderr
�is_alivezBaseProcess.is_alive�ss��	
�������#�#�	��4��;�	��5��[�%�%�'�'�
��	��4����d�#�#�#��5r	cs��|j�d|j����td���|j���d|_|`t
�|��d|_dS)z�
        Close the Process object.

        This method releases resources held by the Process object.  It is
        an error to call this method if the child process is still running.
        Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)rrr0�closer4r
rr#rrr
r=zBaseProcess.close�s���;�	$��{���!�!�
Q� �"P�Q�Q�Q��K�������D�K������d�#�#�#�����r	c��|jSr�r*rrr
r!�BaseProcess.name�s
���z�r	cs�||_dSrr?)rr!rr
r!r@�s����
�
�
r	cs8�|j�dd��S)z4
        Return whether process is a daemon
        rF)r�getrrr
r�BaseProcess.daemon�s��
�|����%�0�0�0r	cs�||jd<dS)z1
        Set whether process is a daemon
        rN�r)rZdaemonicrr
rrB�s��"*���X���r	cs�|jdS)N�authkeyrCrrr
rD�BaseProcess.authkey�s���|�I�&�&r	cs4�t|��|jd<dS)z2
        Set authorization key of process
        rDN)�AuthenticationStringr)rrDrr
rDrE�s��
#7�w�"?�"?���Y���r	csx�|���|j�|jS|j���S)zM
        Return exit code of process or `None` if it has yet to stop
        )r1rrrrr
�exitcodezBaseProcess.exitcode�s<��
	
�������;�	��;���{���!�!�!r	cs��|���|turtj��S|jo|jjS)zU
        Return identifier (PID) of process or `None` if it has yet to start
        )r1rrrr�pidrrr
�identzBaseProcess.ident�sA��
	
�������#�#�	3��9�;�;���;�2�4�;�?�2r	csv�|���	|jS#t$rtd��d�wxYw)z{
        Return a file descriptor (Unix) or handle (Windows) suitable for
        waiting for process termination.
        zprocess not startedN)r1r4ZAttributeErrorr0rrr
r3zBaseProcess.sentinel�sO��	
������	>��>�!���	>�	>�	>��2�3�3��=�	>���s��8cs��d}|turd}nS|jrd}nI|jtj��krd}n*|j�d}n |j���}|�d}nd}t|��jd|j	zg}|j�"|�
d|jjz��|�
d|jz��|�
|��|�3t�
||��}|�
d	|z��|jr|�
d
��dd�|��zS)
NZstartedZclosedZunknownZinitialZstoppedzname=%rzpid=%sz	parent=%szexitcode=%srz<%s>z )rr#r rrrrr'r(r*ZappendrH�_exitcode_to_namerArr))rrGZstatus�info�    r
�__repr__zBaseProcess.__repr__sR�����#�#�
	#��F�F�
�\�	#��F�F�
�
�����
,�		#��F�F�
�[�	#��F�F��{�'�'�)�)�H��
#�"���"���T�
�
�#�Y���%;�<���;�	4��K�K��4�;�?�2�3�3�3����K�$�"2�2�3�3�3����F�����	2�(�,�,�X�x�@�@�H��K�K�
��0�1�1�1��;�	"��K�K��!�!�!��������&�&r	cs��ddlm}m}	|j�|�|j��tjd��at��a	|�
��t}|at|j
|j|��at jr%t!j�����	|���~n#~wxYw|�d��	|���d}|���n#|���wxYwn�#t0$rl}|j�d}nXt5|jt6��r|j}n6t8j�t?|j��dz��d}Yd}~nKd}~wd}ddl }t8j�d|j!z��|�"��YnxYwt!j#��|�d|z��|�$��nD#t!j#��|�d|z��|�$��wxYw|S)N�)�util�contextz child process calling self.run()rz
zProcess %s:
z process exiting with exitcode %d)%�rOrPZ
_start_methodZ_force_start_method�	itertoolsr-r�setr
Z_close_stdinr�_ParentProcessr"r r�	threadingZ_HAVE_THREAD_NATIVE_IDZmain_threadZ_set_native_id�_after_forkrKr2Z_exit_functionZ
SystemExitZcodeZ
isinstanceZint�sysZstderrZwriter�	tracebackr!Z	print_excZ	_shutdownZ_flush_std_streams)rZparent_sentinelrOrPZold_processrGZerXr.r
�
_bootstrapzBaseProcess._bootstrap"s���#�#�#�#�#�#�#�#�(	&��!�
@��+�+�D�,>�?�?�?�(��q�1�1�����I�������*�K�#��,��!�4�#3�_�F�F�O��/�
9��%�'�'�6�6�8�8�8�
 �� � �"�"�"� �K��K������I�I�8�9�9�9�
&����
�
�
����#�#�%�%�%�%���#�#�%�%�%�%����%���	�	�	��v�
�����A�F�C�(�(�
��6����
� � ��Q�V���t�!3�4�4�4������������	"��H������J���_�t�y�8�9�9�9����!�!�!�!�!������!�!�!��I�I�8�8�C�D�D�D��#�#�%�%�%�%��
��!�!�!��I�I�8�8�C�D�D�D��#�#�%�%�%�%�����sc�B,D.�7C
�D.�
C�D.�)D�?D.�D*�*D.�-H*�.
G'�8A"F�H*�AG'�%H*�*AI+csl�ddlm}|j���|���dS)NrN�rO)rQrOZ_finalizer_registryZclearZ_run_after_forkersrZrr
rVzBaseProcess._after_forkRsA��������� �&�&�(�(�(����!�!�!�!�!r	r)r(�
__module__�__qualname__Z__doc__rr/r1r2r5r7r8r)r<r=�propertyr!ZsetterrrDrGrIrHr3rMrYZstaticmethodrVrr	r
rrGs��������
"�"�"�"�$�T��2��������&9�9�9�6�6�6����$ � � ����	$�	$�	$�	$����&���"����X��
�[����[���1�1��X�1��]�*�*��]�*��'�'��X�'�
�^�@�@��^�@��"�"��X�"��3�3��X�3��C�
�	>�	>��X�	>�'�'�'�>.�.�.�.�`�"�"��\�"�"�"r	rcs�eZdZd�ZdS)rFcsn�ddlm}|���td���tt	|��ffS)NrN)�get_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)rPr^Z	TypeErrorrF�bytes)rr^rr
�
__reduce__zAuthenticationString.__reduce__^sQ��/�/�/�/�/�/�����	��2���
�$�e�D�k�k�^�3�3r	N)r(r[r\r`rr	r
rFrF]s#������4�4�4�4�4r	rFcs<�eZdZd�Zd�Zed���Zdd�ZeZdS)rTcsv�d|_||_||_d|_d|_d|_||_i|_dS)NrF)rr*�_pidr rr#r4r)rr!rHr3rLr
r/z_ParentProcess.__init__ns?�������
���	����������!�������r	cs6�ddlm}||jgd���S)Nr�r9�r:�Zmultiprocessing.connectionr9r4)rr9rr
r<z_ParentProcess.is_alivexs1��3�3�3�3�3�3��4���(�!�4�4�4�4�4r	cr>r)rarrr
rIz_ParentProcess.ident|s
���y�r	Ncs8�ddlm}||jg|���dS)z6
        Wait until parent process terminates
        rrbrcNrd)rr:r9r;r
r)z_ParentProcess.join�s6��	4�3�3�3�3�3���d�n�
�w�/�/�/�/�/�/r	r)	r(r[r\r/r<r]rIr)rHrr	r
rTrTlsb���������5�5�5�����X��0�0�0�0��C�C�Cr	rTcs�eZdZd�Zd�ZdS)�_MainProcesscs��d|_d|_d|_d|_d|_tt
jd����dd�|_dS)NrZMainProcessFi z/mp)rDZ	semprefix)	rr*r rr#rFrZurandomrrrr
r/z_MainProcess.__init__�sN�����"��
����������#7��
�2���#G�#G�%*�,�,����r	cs�dSrrrrr
r=z_MainProcess.close�s���r	N)r(r[r\r/r=rr	r
rere�s2������,�,�,�$
�
�
�
�
r	rerNiZSIGZ_r)$Z__all__rrWZsignalrRrUZ_weakrefsetrZpathZabspathZgetcwdZORIGINAL_DIRZOSErrorrrrrZobjectrr_rFrTrerrr-rrSr
rJrZ__dict__Zitemsr!Zsignumr+rr	r
�<module>rfs@������
�	�	�	�
�
�
�
�
�
�
�
�����������������7�?�?�9�2�9�;�;�/�/�L�L�������L�L�L��������������!�!�!�O"�O"�O"�O"�O"�&�O"�O"�O"�l4�4�4�4�4�5�4�4�4������[����B
�
�
�
�
�;�
�
�
�0���<�>�>��"�9�?�1�%�%���C�E�E�	�����D���.�.�0�0�1�1�0�0�L�D�&��B�Q�B�x���0�3�d�?�0�%/��Z�Z��6�'�"���&�
�G�I�I�	�	�	s�'A�A�A