add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
U

�AT^�.c@s�ddlZddlZdZdZdZdZdZdZdZ	d	Z
Gd
d�dejj�Z
Gdd
�d
�ZGdd�d�ZGdd�de
�ZdZddd�Zddd�ZdS)�N�
START_ELEMENT�END_ELEMENT�COMMENT�START_DOCUMENT�END_DOCUMENT�PROCESSING_INSTRUCTION�IGNORABLE_WHITESPACE�
CHARACTERSc@s�eZdZdZdZd$dd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�ZdS)%�PullDOMNcCszddlm}||_ddg|_|j|_g|_|jj|_z|jj|_Wnt	k
rVYnX|dig|_
|j
d|_g|_dS)Nr)�
XML_NAMESPACE�xml�����)
Zxml.domr
�documentFactory�
firstEvent�	lastEvent�elementStack�append�push�popZAttributeError�_ns_contexts�_current_context�pending_events)�selfr
r
�r�'/usr/lib64/python3.8/xml/dom/pulldom.py�__init__s

zPullDOM.__init__cCs|jd}|jd=|S�Nr)r)rZresultrrrr!�
zPullDOM.popcCs
||_dS�N)�_locator)rZlocatorrrr�setDocumentLocator&�zPullDOM.setDocumentLocatorcCsHt|d�sg|_|j�|pd|f�|j�|j���|p<d|j|<dS)N�_xmlns_attrs�xmlns)�hasattrr!rrrZcopy)r�prefix�urirrr�startPrefixMapping)s

zPullDOM.startPrefixMappingcCs|j��|_dSr)rrr)rr$rrr�endPrefixMapping0r zPullDOM.endPrefixMappingcCs�d}t|dd�}|dk	r:|D]\}}||j||f<qg|_|\}}	|r�|dkrn|j|}
|
rj|
d|	}n|	}|jr�|j�||�}q�|�||�}n |jr�|j�|	�}n|�d|	�}|��D]�\}}|\}}
||k�r|
dkr�|
}nd|
}|j�	||�}|�
|�nX|�rF|j|}
|
�r(|
d|
}n|
}|j�	||�}|�
|�n|j�|
�}|�|�||_
q�t|fdg|jd<|jd|_|�|�dS)Nzhttp://www.w3.org/2000/xmlns/r!z:r"zxmlns:�)ZgetattrZ_attrsr!r�documentZcreateElementNS�
buildDocument�
createElement�itemsZcreateAttributeNSZsetAttributeNodeNS�createAttribute�setAttributeNode�valuerrr)r�name�tagName�attrsZ	xmlns_uriZxmlns_attrs�anamer/r%Z	localnamer$�nodeZa_uriZa_localnameZqname�attrrrr�startElementNS3sP



zPullDOM.startElementNScC�&t|��fdg|jd<|jd|_dS�Nr(�rrr)rr0r1rrr�endElementNSl�zPullDOM.endElementNScCsz|jr|j�|�}n|�d|�}|��D]$\}}|j�|�}||_|�|�q(t|fdg|jd<|jd|_|�	|�dSr8)
r)r+r*r,r-r/r.rrr)rr0r2r4r3r/r5rrr�startElementpszPullDOM.startElementcCr7r8r9)rr0rrr�
endElementr;zPullDOM.endElementcCsN|jr2|j�|�}t|fdg|jd<|jd|_nt|fdg}|j�|�dSr8)r)�
createCommentrrrr)rZsr4�eventrrr�comment�szPullDOM.commentcCsR|jr4|j�||�}t|fdg|jd<|jd|_nt||fdg}|j�|�dSr8)r)�createProcessingInstructionrrrr)r�target�datar4r?rrr�processingInstruction�szPullDOM.processingInstructioncC�.|j�|�}t|fdg|jd<|jd|_dSr8)r)�createTextNoderr�r�charsr4rrr�ignorableWhitespace��zPullDOM.ignorableWhitespacecCrEr8)r)rFrrrGrrr�
characters�rJzPullDOM.characterscCs$|jdkr ddl}|jjjj|_dS)Nr)r
Zxml.dom.minidomZdomZminidomZDocumentZimplementation)rrrrr�
startDocument�rzPullDOM.startDocumentc	Cs�|j�||d�}||_t|fdg|jd<|jd|_|�|�|jD]�}|ddtkr�|d\}}}|j�||�}t|f|d<nD|ddt	kr�|j�
|dd�}t	|f|d<ntd|dd��||jd<||_qDd|_|jS)Nr(rzUnknown pending event )
r
ZcreateDocumentr)rrrrrrArr>ZAssertionErrorZ
firstChild)	rr%Ztagnamer4ZeZ_rBrCZnrrrr*�s$


zPullDOM.buildDocumentcCs t|jfdg|jd<|��dSr8)rr)rr�rrrr�endDocument�szPullDOM.endDocumentcCs
d|_dS)z.clear(): Explicitly release parsing structuresN)r)rMrrr�clear�sz
PullDOM.clearr)�__name__�
__module__�__qualname__rr)rrrr&r'r6r:r<r=r@rDrIrKrLr*rNrOrrrrr	
s&
9		r	c@s$eZdZdd�Zdd�Zdd�ZdS)�ErrorHandlercCst|�dSr)Zprint�rZ	exceptionrrr�warning�r zErrorHandler.warningcC�|�dSrrrTrrr�error�r zErrorHandler.errorcCrVrrrTrrr�
fatalError�r zErrorHandler.fatalErrorN)rPrQrRrUrWrXrrrrrS�srSc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�DOMEventStreamcCs2||_||_||_t|jd�s&|j|_|��dS)N�feed)�stream�parser�bufsizer#�_slurp�getEvent�reset)rr[r\r]rrrr�szDOMEventStream.__init__cCs.t�|_|j�tjjjd�|j�|j�dSr8)	r	�pulldomr\Z
setFeaturer�saxZhandlerZfeature_namespacesZsetContentHandlerrMrrrr`�szDOMEventStream.resetcCs0ddl}|jdtdd�|��}|r(|St�dS)Nrz[DOMEventStream's __getitem__ method ignores 'pos' parameter. Use iterator protocol instead.i)Z
stacklevel)�warningsZwarnZDeprecationWarningr_Z
IndexError)rZposrc�rcrrr�__getitem__�s�zDOMEventStream.__getitem__cCs|��}|r|St�dSr)r_Z
StopIteration�rrdrrr�__next__�szDOMEventStream.__next__cCs|SrrrMrrr�__iter__�r zDOMEventStream.__iter__cCsl|��}|g}|rh|\}}||kr&dS|tkr<|d�|�|tkrP|�|�n|tkr^|d=|��}qdSr)r_r�appendChildrr)rr4r?ZparentsZtokenZcur_noderrr�
expandNode�szDOMEventStream.expandNodecCs~|jjds|jj|j_|jjdsR|j�|j�}|sD|j��dS|j�|�q|jjdd}|jjdd|jjd<|S)Nr(r)	rarrr[Zreadr]r\ZcloserZ)r�bufrdrrrr_s
zDOMEventStream.getEventcCs|j�|j�|j|_|��S)z� Fallback replacement for getEvent() using the
            standard SAX2 interface, which means we slurp the
            SAX events into memory (no performance gain, but
            we are compatible to all SAX parsers).
        )r\�parser[�_emitr_rMrrrr^szDOMEventStream._slurpcCs,|jjdd}|jjdd|jjd<|S)zn Fallback replacement for getEvent() that emits
            the events that _slurp() read previously.
        r(r)rarrfrrrrmszDOMEventStream._emitcCs|j��|`d|_d|_dS)z+clear(): Explicitly release parsing objectsN)rarOr\r[rMrrrrO!s
zDOMEventStream.clearN)
rPrQrRrr`rergrhrjr_r^rmrOrrrrrY�s

rYc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�SAX2DOMcCs2t�||||�|jd}|jd}|�|�dS�Nri����)r	r6rri)rr0r1r2�curNode�
parentNoderrrr6*s

zSAX2DOM.startElementNScCs0t�|||�|jd}|jd}|�|�dSro)r	r<rri)rr0r2rprqrrrr<0s

zSAX2DOM.startElementcCs4t�|||�|jdd}|jd}|�|�dS�Nrr(r)r	rDrrri)rrBrCr4rqrrrrD6s
zSAX2DOM.processingInstructioncC�2t�||�|jdd}|jd}|�|�dSrr)r	rIrrri�rrHr4rqrrrrI<�
zSAX2DOM.ignorableWhitespacecCrsrr)r	rKrrrirtrrrrKBruzSAX2DOM.charactersN)rPrQrRr6r<rDrIrKrrrrrn(s
rni�?cCs@|dkrt}t|t�r"t|d�}n|}|s4tj��}t|||�S)NZrb)�default_bufsizeZ
isinstanceZstrZopenrrb�make_parserrY)Zstream_or_stringr\r]r[rrrrlKs

rlcCs6ddlm}t|�}||�}|s*tj��}t|||�S)Nr)�StringIO)ZiorxZlenrrbrwrY)Zstringr\rxr]rkrrr�parseStringVs
ry)NNr)Zxml.saxrZxml.sax.handlerrrrrrrrrrbZContentHandlerr	rSrYrnrvrlryrrrrZ<module>s"8\!