add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
B

�/g^!;c@s�ddlZddlZddlZddlZddlmZmZmZddddgZ	iZ
Gdd�d�ZGd	d�de�ZGd
d�de�Z
dd�Zdd
d�Zddd�Zddd�Zddd�Zdd�Zdd�Zdd�Zdd�Zedkr�e�dS) �N)�NAME�DEDENT�OP�
readmodule�
readmodule_ex�Class�Functionc@seZdZdd�Zdd�ZdS)�_ObjectcCs(||_||_||_||_||_i|_dS�N)�module�name�file�lineno�parent�children��selfr
rrr
r�r�/usr/lib64/python3.7/pyclbr.py�__init__6sz_Object.__init__cC�||j|<dSr	)r)rr�objrrr�	_addchild>�z_Object._addchildN)�__name__�
__module__�__qualname__rrrrrrr4src@seZdZddd�ZdS)rNcCst�||||||�dSr	)rrrrrrrDrzFunction.__init__r	)rrrrrrrrrBscs&eZdZd�fdd�	Zdd�Z�ZS)rNcs0t�||||||�|dkr gn||_i|_dSr	)rr�super�methods)rr
rrrr
r�Z	__class__rrrJszClass.__init__cCrr	)r)rrr
rrr�
_addmethodOrzClass._addmethodr	)rrrrrZ
__classcell__rrrrrHscCs:t|j||j||�}|�||�t|t�r6|�||�|Sr	)rr
rr�
isinstancerr)�ob�	func_namer
Znewfuncrrr�_nest_functionSs

r#cCs&t|j|||j||�}|�||�|Sr	)rr
rr)r!�
class_namer
rZnewclassrrr�_nest_class[sr%cCs:i}x0t||pg���D]\}}t|t�r|||<qW|Sr	)�_readmoduleZitemsr r)r
�pathZres�keyZvaluerrrras

cCst||p
g�Sr	)r&)r
r'rrrrmsc	Cs`|dk	rd||f}n|}|tkr*t|Si}|tjkrL|dkrL|t|<|S|�d�}|dkr�|d|�}||dd�}t|||�}|dk	r�d||f}d|kr�td�|���t||d|�Sd}	|dk	r�|}
n
|tj}
tj	�
||
�}|t|<|jdk	�r|j|d<y|j�
|�}|dk�r$|SWnttfk
�r@|SX|j�|�}
t|||
|||�S)Nz%s.%s�.r�Z__path__zNo package named {})�_modules�sysZbuiltin_module_namesZrfindr&�ImportError�formatr'�	importlibZutilZ_find_spec_from_pathZsubmodule_search_locationsZloaderZ
get_sourceZAttributeErrorZget_filename�_create_tree)r
r'�	inpackage�
fullmodule�treeZiZpackageZ	submoduler�fZsearch_pathZspec�source�fnamerrrr&vsF	



r&c!
Csjt�|�}g}t�|j�}�y*�x"|D�]\}	}
}}}
|	tkrh|\}}x|rd|dd|krd|d=qHWq&|
dk�r|\}}x|r�|dd|kr�|d=q|Wt|�dd�\}	}}|	tkr�q&d}|r�|dd}t|||�}nt	||||�}|||<|�
||f�q&|
dk�r�|\}}x$|�r8|dd|k�r8|d=�qWt|�dd�\}	}}|	tk�r\q&t|�dd�\}	}
}d}|
dk�r�g}d}g}�xt|�dd�\}	}
}|
dk�r2|dk�r2d	�|�}||k�r�||}nL|�d
�}t
|�dk�r$|d}|d}|tk�r$t|}||k�r$||}|�
|�g}|
dk�rF|d7}nX|
dk�rf|d8}|dk�r�Pn8|
d
k�r||dk�r|n"|	ttfk�r�|dk�r�|�
|
��q�W|}|�r�|dd}t||||�}nt|||||�}|||<|�
||f�q&|
dk�r�|ddk�r�t|�}xl|D]d\}}yL|dk�r8t||�n2yt|||�Wn tk
�rht|g�YnXWnYnX�qWq&|
dkr&|ddkr&t|�\}}
|r&|
dk�r�q&t|�}yt|||�}Wnw&YnXxd|D]\\}} ||k�r|||| �p|<n4|dk�r�x(|D] }|ddk�r||||<�qW�q�Wq&WWntk
�r\YnX|��|S)Ni����r*ZdefriZclassz()�)�,Zr)i����r7r8ZimportZfrom�*Z_)�ioZStringIO�tokenizeZgenerate_tokensZreadliner�nextrr#r�append�joinZsplitZlenr+rr%r�_getnamelistr&r-�_getnameZ
StopIterationZclose)!r2r'r6r5r3r1r4Zstack�g�	tokentype�tokenZstartZ_endZ_liner
Z
thisindentr"Zcur_funcZcur_objr$Zinherit�namesZlevelrZnZcZmZdZ	cur_classZmodules�modZ_mod2Zn2rrrr0�s�




















 r0cCstg}xjt|�\}}|sP|dkr.t|�\}}nd}|�||f�x |dkr`d|kr`t|�d}qBW|dkrPqW|S)NZasr8Z
r*)r@r=r<)rArDrrCZname2rrrr?Bsr?cCs�g}t|�dd�\}}|tkr0|dkr0d|fS|�|�xJt|�dd�\}}|dkrZPt|�dd�\}}|tkrxP|�|�q<Wd�|�|fS)Nr�r9r))r<rr=r>)rAZpartsrBrCrrrr@Xs
r@c
Csbddl}ytjd}Wnt}YnX|j�|�rj|j�|�g}|j�|�}|���	d�rn|dd�}ng}t
||�}dd�}t|��|dd�}d	}x�|�r\|�
�}t|t�r�q�t|d
�s�d|_t|t��rt|j��|dd�}x|D]}	|j||	_q�W|�|�t|t��r4td�d|j|j|j|j��q�t|t�r�td
�d|j|j|j��q�WdS)Nrr*z.pyi����cSst|dd�S)Nr
r)Zgetattr)ZarrrZ<lambda>ysz_main.<locals>.<lambda>T)r(ZreverserF�indentz{}class {} {} {}z z{}def {} {})�osr,ZargvZ__file__r'ZexistsZdirnameZbasenameZlowerZendswithrZsortedZvaluesZpopr ZlistZhasattrrGrrZextendrZprintr.rrr
r)
rHrEr'r3Z
lineno_keyZobjsZindent_levelrZnew_objsr!rrr�_mainjs@








rIZ__main__r	r	r	r	)r:r,Zimportlib.utilr/r;rCrrrZ__all__r+rrrr#r%rrr&r0r?r@rIrrrrrZ<module>)s*


	
=&