add-determinism 0.7.3

RPM buildroot helper to strip nondeterministic bits in files
Documentation
U


/�^zc
@s:dddddddddd	d
ddg
Zd
dlZd
dlZd
dlZd
dlZd
dlZd
dlmZd
dlZd
dl	Z	d
dl
Z
d
dlZd
dlm
Z
d
dlmZejdded�Ze��ej�ejdd��Zdd�Zdd�Zdd�Zdd�ZGdd�d�ZGdd�d�ZdZe
�d�Z dKd d!�Z!d"d#�Z"e
�d$e
j#�Z$d%d&�Z%d'd(�Z&d)d*�Z'Gd+d,�d,�Z(Gd-d.�d.�Z)Gd/d0�d0e)�Z*d1d2�Z+Gd3d�de,�Z-d4d5d6d7d8�Z.e/�Z0Gd9d:�d:�Z1d;d<�Z2e3e4e5eje6fZ7Gd=d>�d>e/�Z8d?d@�Z9e:e;e+e(e*dA�e<e;e9e1e8dA�iZ=ddBe;dC�dDd�Z>ddBe;dC�dEd
�Z?e:dBdFdG�dHd	�Z@e:dFdBdI�dJd�ZAdS)L�	readPlist�
writePlist�readPlistFromBytes�writePlistToBytes�Data�InvalidFileException�FMT_XML�
FMT_BINARY�load�dump�loads�dumps�UID�N)�BytesIO)�warn)�ParserCreate�PlistFormatzFMT_XML FMT_BINARY)Zmodulec	cs2t|t�r(t||��}|VW5QRXn|VdS�N)�
isinstance�strZopen)�
pathOrFileZmode�fp�r� /usr/lib64/python3.8/plistlib.py�_maybe_openOs
rc
Cs<tdtd�t|d��}t|ddd�W5QR�SQRXdS)Nz8The readPlist function is deprecated, use load() instead�ZrbF��fmt�use_builtin_types)r�DeprecationWarningrr)rrrrrrYs�c	Cs8tdtd�t|d��}t||tddd�W5QRXdS)Nz9The writePlist function is deprecated, use dump() insteadrZwbTF�r�	sort_keys�skipkeys)rrrr	r)�valuerrrrrrfs�cCstdtd�tt|�ddd�S)NzBThe readPlistFromBytes function is deprecated, use loads() insteadrFr)rrrr��datarrrrss
�cCs,tdtd�t�}t||tddd�|��S)NzAThe writePlistToBytes function is deprecated, use dumps() insteadrTFr)rrrr	r�getvalue)r"�frrrr~s�c@s:eZdZdd�Zedd��Zd
dd�Zdd	�Zd
d�ZdS)rcCst|t�std��||_dS)Nzdata must be as bytes)r�bytes�	TypeErrorr$��selfr$rrr�__init__�s
z
Data.__init__cCs|t|��Sr)�_decode_base64)Zclsr$rrr�
fromBase64�szData.fromBase64�LcCst|j|�Sr)�_encode_base64r$)r*�
maxlinelengthrrr�asBase64��z
Data.asBase64cCs4t||j�r|j|jkSt|t�r,|j|kStSdSr)r�	__class__r$r'�NotImplemented�r*Zotherrrr�__eq__�s


zData.__eq__cC�d|jjt|j�fS�Nz%s(%s)�r3�__name__�reprr$�r*rrr�__repr__�r2z
Data.__repr__N�r.)	r:�
__module__�__qualname__r+Zclassmethodr-r1r6r=rrrrr�s

c@�<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)rcCs<t|t�std��|dkr"td��|dkr2td��||_dS)Nzdata must be an int�zUIDs cannot be >= 2**64r
�UIDs must be positive)r�intr(�
ValueErrorr$r)rrrr+�s
zUID.__init__cCs|jSrr#r<rrr�	__index__�r2z
UID.__index__cCr7r8r9r<rrrr=�r2zUID.__repr__cCs|j|jffSr)r3r$r<rrr�
__reduce__�r2zUID.__reduce__cCst|t�stS|j|jkSr)rrr4r$r5rrrr6�s
z
UID.__eq__cCs
t|j�Sr)Zhashr$r<rrr�__hash__�r2zUID.__hash__N)	r:r?r@r+rFr=rGr6rHrrrrr�s	s�<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
zv[\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f]r.cCsP|dd}g}tdt|�|�D]$}||||�}|�t�|��q d�|�S)N��r
�)�range�len�append�binasciiZ
b2a_base64�join)�sr0Z
maxbinsizeZpieces�iZchunkrrrr/�sr/cCs(t|t�rt�|�d��St�|�SdS)N�utf-8)rrrOZ
a2b_base64�encode)rQrrrr,�s
r,z{(?P<year>\d\d\d\d)(?:-(?P<month>\d\d)(?:-(?P<day>\d\d)(?:T(?P<hour>\d\d)(?::(?P<minute>\d\d)(?::(?P<second>\d\d))?)?)?)?)?ZcCsLd}t�|���}g}|D]&}||}|dkr2qB|�t|��qtj|�S)N�ZyearZmonthZdayZhourZminuteZsecond)�_dateParserZmatchZ	groupdictrNrD�datetime)rQZorderZgdZlst�keyZvalrrr�_date_from_string�srYcCs d|j|j|j|j|j|jfS)Nz%04d-%02d-%02dT%02d:%02d:%02dZrU)�drrr�_date_to_strings�r[cCsZt�|�}|dk	rtd��|�dd�}|�dd�}|�dd�}|�dd�}|�d	d
�}|S)Nz<strings can't contains control characters; use bytes insteadz
Z
z
z&z&amp;z<z&lt;�>z&gt;)�_controlCharPatZsearchrE�replace)Ztext�mrrr�_escapes
r`c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'S)(�_PlistParsercCs"g|_d|_d|_||_||_dSr)�stack�current_key�root�_use_builtin_types�
_dict_type�r*r�	dict_typerrrr+s
z_PlistParser.__init__cCs8t�|_|j|j_|j|j_|j|j_|j�|�|j	Sr)
r�parser�handle_begin_elementZStartElementHandler�handle_end_elementZEndElementHandler�handle_dataZCharacterDataHandlerZ	ParseFilerd)r*Zfileobjrrr�parses


z_PlistParser.parsecCs*g|_t|d|d�}|dk	r&||�dS)NZbegin_)r$�getattr)r*�element�attrs�handlerrrrrj#sz!_PlistParser.handle_begin_elementcCs"t|d|d�}|dk	r|�dS)NZend_)rn)r*rorqrrrrk)sz_PlistParser.handle_end_elementcCs|j�|�dSr)r$rNr)rrrrl.r2z_PlistParser.handle_datacCs�|jdk	rFt|jdti��s.td|jj��||jd|j<d|_nB|jsT||_n4t|jdtg��sxtd|jj��|jd�|�dS)N�����zunexpected element at line %d)	rcrrb�typerEri�CurrentLineNumberrdrN�r*r"rrr�
add_object1s
��z_PlistParser.add_objectcCsd�|j�}g|_|S)NZ)rPr$r)rrr�get_dataAsz_PlistParser.get_datacCs"|��}|�|�|j�|�dSr)rfrvrbrN)r*rprZrrr�
begin_dictHs
z_PlistParser.begin_dictcCs*|jrtd|j|jjf��|j��dS)Nz%missing value for key '%s' at line %d)rcrErirtrb�popr<rrr�end_dictMs
�z_PlistParser.end_dictcCs8|jst|jdti��s*td|jj��|��|_dS)Nrrzunexpected key at line %d)rcrrbrsrErirtrwr<rrr�end_keySs
�z_PlistParser.end_keycCsg}|�|�|j�|�dSr)rvrbrN)r*rpZarrr�begin_arrayYs
z_PlistParser.begin_arraycCs|j��dSr)rbryr<rrr�	end_array^r2z_PlistParser.end_arraycC�|�d�dS)NT�rvr<rrr�end_truear2z_PlistParser.end_truecCr~)NFrr<rrr�	end_falsedr2z_PlistParser.end_falsecC�|�t|����dSr)rvrDrwr<rrr�end_integergr2z_PlistParser.end_integercCr�r)rv�floatrwr<rrr�end_realjr2z_PlistParser.end_realcCs|�|���dSr)rvrwr<rrr�
end_stringmr2z_PlistParser.end_stringcCs2|jr|�t|����n|�t�|����dSr)rervr,rwrr-r<rrr�end_datapsz_PlistParser.end_datacCr�r)rvrYrwr<rrr�end_datewr2z_PlistParser.end_dateN)r:r?r@r+rmrjrkrlrvrwrxrzr{r|r}r�r�r�r�r�r�r�rrrrras&rac@s8eZdZddd�Zdd�Zdd�Zdd
d�Zdd
�Zd	S)�_DumbXMLWriterr
�	cCs||_g|_||_||_dSr)�filerb�
_indent_level�indent)r*r��indent_levelr�rrrr+|sz_DumbXMLWriter.__init__cCs,|j�|�|�d|�|jd7_dS)Nz<%s>�)rbrN�writelnr��r*rorrr�
begin_element�sz_DumbXMLWriter.begin_elementcCs |jd8_|�d|�dS)Nr�z</%s>)r�r�r�rrr�end_element�sz_DumbXMLWriter.end_elementNcCs8|dk	r&t|�}|�d|||f�n|�d|�dS)Nz<%s>%s</%s>z<%s/>)r`r�)r*ror"rrr�simple_element�sz_DumbXMLWriter.simple_elementcCsH|r8t|t�r|�d�}|j�|j|j�|j�|�|j�d�dS)NrS�
)rrrTr��writer�r�)r*�linerrrr��s

z_DumbXMLWriter.writeln)r
r�r)r:r?r@r+r�r�r�r�rrrrr�{s


r�c@sFeZdZddd�Zdd	�Zd
d�Zdd
�Zdd�Zdd�Zdd�Z	dS)�_PlistWriterr
�	r�TFcCs.|r|�t�t�||||�||_||_dSr)r��PLISTHEADERr�r+�
_sort_keys�	_skipkeys)r*r�r�r�ZwriteHeaderr r!rrrr+�s

z_PlistWriter.__init__cCs"|�d�|�|�|�d�dS)Nz<plist version="1.0">z</plist>)r��write_valuerurrrr��s

z_PlistWriter.writecCs4t|t�r|�d|��n|dkr0|�d��n|dkrD|�d�n�t|t�r�d|krbdkrxnn|�dd	|�nt|��n�t|t�r�|�d
t|��n�t|t�r�|�|�n|t|t	�r�|�
|�nft|ttf�r�|�
|�nLt|tj��r|�dt|��n,t|ttf��r |�|�ntdt|���dS)
NZstringTZtrueFZfalsel����rBZintegerz%dZrealZdatezunsupported type: %s)rrr�rD�
OverflowErrorr�r;�dict�
write_dictr�
write_datar'�	bytearray�write_bytesrWr[�tuple�list�write_arrayr(rsrurrrr��s.





z_PlistWriter.write_valuecCs|�|j�dSr)r�r$r)rrrr��r2z_PlistWriter.write_datacCsz|�d�|jd8_tddt|j�dd�|j��}t||��d�D]}|rJ|�|�qJ|jd7_|�	d�dS)Nr$r��r.r�s        r�)
r�r�ZmaxrMr�r^r/Zsplitr�r�)r*r$r0r�rrrr��s
�z_PlistWriter.write_bytescCs�|rt|�d�|jr"t|���}n|��}|D]8\}}t|t�sP|jrHq.td��|�d|�|�	|�q.|�
d�n
|�d�dS)Nr��keys must be stringsrX)r�r��sorted�itemsrrr�r(r�r�r�)r*rZr�rXr"rrrr��s

z_PlistWriter.write_dictcCs<|r.|�d�|D]}|�|�q|�d�n
|�d�dS)N�array)r�r�r�r�)r*r�r"rrrr��s
z_PlistWriter.write_arrayN)r
r�r�TF)
r:r?r@r+r�r�r�r�r�r�rrrrr��s�

%
r�cCs�d}|D]}|�|�rdSqtjdftjdftjdffD]N\}}|�|�sNq:|D]4}||�d��|�}|dt|��|krRdSqRq:dS)N)s<?xmls<plistTrSz	utf-16-bez	utf-16-le�asciiF)Z
startswith�codecsZBOM_UTF8ZBOM_UTF16_BEZBOM_UTF16_LE�decoderTrM)�headerZprefixesZpfxZbomZencodingZstartZprefixrrr�_is_fmt_xmls
�
r�c@seZdZddd�ZdS)r�Invalid filecCst�||�dSr)rEr+)r*Zmessagerrrr+'r2zInvalidFileException.__init__N)r�)r:r?r@r+rrrrr&sZBZHZLZQ)r�rrI�c@rA)�_BinaryPlistParsercCs||_||_dSr)rerfrgrrrr+6sz_BinaryPlistParser.__init__cCs�z~||_|j�dtj�|j�d�}t|�dkr6t��t�d|�\}|_	}}}|j�|�|�
||�|_tg||_
|�|�WStttjttfk
r�t��YnXdS)Ni����� z>6xBBQQQ)�_fp�seek�osZSEEK_END�readrMr�struct�unpack�	_ref_size�
_read_ints�_object_offsets�
_undefined�_objects�_read_objectZOSErrorZ
IndexError�errorr�ZUnicodeDecodeError)r*r�trailer�offset_size�num_objects�
top_object�offset_table_offsetrrrrm:s*
��z_BinaryPlistParser.parsecCsL|dkrH|j�d�dd@}d|>}dt|}t�||j�|��dS|S)N�r�r
rJr\)r�r��_BINARY_FORMATr�r�)r*�tokenLr_rQr&rrr�	_get_sizeSsz_BinaryPlistParser._get_sizecsr|j��|���tkr0t�dt�|��S�rDt���|krJt��t��fdd�td�|��D��SdS)Nr\c3s&|]}t��||��d�VqdS)�bigN)rD�
from_bytes)�.0rR�r$�sizerr�	<genexpr>ds�z0_BinaryPlistParser._read_ints.<locals>.<genexpr>r
)	r�r�r�r�r�rMrr�rL)r*�nr�rr�rr�]s�z_BinaryPlistParser._read_intscCs|�||j�Sr)r�r�)r*r�rrr�
_read_refsgr2z_BinaryPlistParser._read_refsc
s��j|}|tk	r|S�j|}�j�|��j�d�d}|d@|d@}}|dkr^d}�nT|dkrnd}�nD|dkr~d}�n4|dkr�d	}�n$|d
kr�tj�j�d|>�d|dkd
�}�n�|dkr�t�	d�j�d��d}�n�|dk�rt�	d�j�d��d}�n�|dk�rDt�	d�j�d��d}t
�
ddd�t
j|d�}�nn|dk�r���|�}�j
�rn�j�|�}nt�j�|��}�n0|dk�r���|�}�j�|��d�}�n|dk�r؈�|�}�j�|d��d�}n�|dk�rtt��j�d|�d��}n�|dk�rF��|�}��|�}	g}|�j|<|��fdd�|	D��nl|d k�r���|�}��|�}
��|�}	���}|�j|<t|
|	�D]\}}��|�|��|�<�q�nt��|�j|<|S)!Nr�r
i�r�r�Fi	TrKr�r�rJ�Zsignedi"z>frI�#z>d�3��)Zseconds�@�Pr��`r�utf-16be��c3s|]}��|�VqdSr)r�)r�Zxr<rrr��sz2_BinaryPlistParser._read_object.<locals>.<genexpr>��)r�r�r�r�r�r�rDr�r�r�rWZ	timedeltar�rerr�rr�ZextendrfZzipr�r)
r*�refZresultZoffset�tokenZtokenHr�r&rQZobj_refsZkey_refs�k�orr<rr�jsv

�



�
















z_BinaryPlistParser._read_objectN)	r:r?r@r+rmr�r�r�r�rrrrr�.s

r�cCs0|dkrdS|dkrdS|d>d>r(dSdSdS)N�r��rr�rIr�r)Zcountrrr�_count_to_size�sr�c@rA)�_BinaryPlistWritercCs||_||_||_dSr)r�r�r�)r*rr r!rrrr+�sz_BinaryPlistWriter.__init__c
Cs�g|_i|_i|_|�|�t|j�}dg||_t|�|_t|j|_	|j
�d�|jD]}|�|�qZ|�
|�}|j
��}t|�}dt||}|j
�tj|f|j���d}|||j|||f}	|j
�tjd|	���dS)Nr
�bplist00r\�	>5xBBBQQQ)r�)�_objlist�	_objtable�_objidtable�_flattenrMr�r�r�r��_ref_formatr�r��
_write_object�
_getrefnum�tellr��pack)
r*r"r�Zobjr�r�r�Z
offset_formatZsort_versionr�rrrr��s2





�z_BinaryPlistWriter.writec	Csrt|t�r"t|�|f|jkrZdSn8t|t�rHt|j�|jf|jkrZdSnt|�|jkrZdSt|j	�}|j	�
|�t|t�r�||jt|�|f<n0t|t�r�||jt|j�|jf<n||jt|�<t|t��rHg}g}|��}|j
r�t|�}|D]:\}}t|t��s|j�r
q�td��|�
|�|�
|�q�t�||�D]}|�|��q4n&t|ttf��rn|D]}|�|��q\dS)Nr�)r�_scalarsrsr�rr$�idr�rMr�rNr�r�r�r�rr�r(�	itertoolsZchainr�r�r�)	r*r"ZrefnumZkeys�valuesr�r��vr�rrrr�
sB





z_BinaryPlistWriter._flattencCsNt|t�r|jt|�|fSt|t�r<|jt|j�|jfS|jt|�SdSr)rr�r�rsrr$r�r�rurrrr�:s


z_BinaryPlistWriter._getrefnumcCs�|dkr"|j�t�d||B��n�|dkrH|j�t�d|dBd|��nh|dkrn|j�t�d|dBd|��nB|d	kr�|j�t�d
|dBd|��n|j�t�d|dBd
|��dS)Nr�z>Br�z>BBBr�r�z>BBH��z>BBL�z>BBQ�)r�r�r�r�)r*r�r�rrr�_write_sizeBsz_BinaryPlistWriter._write_sizecs���|�}�j���j|<|dkr2�j�d��nl|dkrJ�j�d��nT|dkrb�j�d��n<t|t��rl|dkr�z�j�t�dd|��Wn tj	k
r�t
|�d�YnXn�|d	krԈj�t�d
d|��n�|dkr�j�t�d
d|��nt|dk�r�j�t�dd|��nR|dk�r8�j�t�dd|��n0|dk�r`�j�d|jdddd��nt
|���n2t|t��r��j�t�dd|���nt|t
j
��r�|t
�
ddd���}�j�t�dd|���n�t|t��r��dt|j���j�|j��n�t|ttf��r0��dt|���j�|��nnt|t��r�z|�d�}��dt|��Wn4tk
�r�|�d �}��d!t|�d"�YnX�j�|��n�t|t��r^|jdk�r�td#��n�|jd	k�r�j�t�d
d$|��nt|jdk�r
�j�t�d
d%|��nP|jdk�r.�j�t�dd&|��n,|jdk�rR�j�t�dd'|��nt
|���n@t|ttf��r��fd(d)�|D�}t|�}��d*|��j�tjd+�j|f|���n�t|t��r�gg}}�j�r�t|� ��}	n|� �}	|	D]J\}
}t|
t��s�j!�r�q�t"d,��|�#��|
��|�#��|���q�t|�}��d-|��j�tjd+�j|f|����j�tjd+�j|f|���nt"|��dS).NsFsTr�r
z>Bqr�r�z>BBr�r�z>BHr�r�z>BLr�lz>BQrBsr�r�z>Bdr�r�r�r�r�r�r�r�r�rrCr�i�i�i�csg|]}��|��qSr)r�)r�r�r<rrZ
<listcomp>�sz4_BinaryPlistWriter._write_object.<locals>.<listcomp>r�r\r�r�)$r�r�r�r�r�rrDr�r�r�r�Zto_bytesr�rWZ
total_secondsrr�rMr$r'r�rrTZUnicodeEncodeErrorrrEr�r�r�r�r�r�r�r�r(rN)r*r"r�r&ZtZrefsrQZkeyRefsZvalRefsZ	rootItemsr�r�rr<rr�Rs�






$
"$z _BinaryPlistWriter._write_objectN)	r:r?r@r+r�r�r�r�r�rrrrr��s-0r�cCs|dd�dkS)Nr�r�r)r�rrr�_is_fmt_binary�r2r�)�detectri�writerT�rrrhcCsl|dkrJ|�d�}|�d�t��D]}|d|�r$|d}qVq$t��nt|d}|||d�}|�|�S)Nr�r
r�ri)rrh)r�r��_FORMATSr�rrm)rrrrhr�ZinfoZPZprrrr�s

cCst|�}t||||d�S)Nr�)rr)r"rrrhrrrrr
�s�FrcCs:|tkrtd|f��t|d|||d�}|�|�dS)NzUnsupported format: %rr�)r r!)r�rEr�)r"rrr r!r�rrrr	�s�rr!r cCs t�}t|||||d�|��S)Nr)rr	r%)r"rr!r rrrrr�sr>)BZ__all__rOr�Z
contextlibrWZenumZiorr�r�Zrer�ZwarningsrZxml.parsers.expatrZEnumr:rZglobalsZupdateZ__members__Zcontextmanagerrrrrrrrr�Zcompiler]r/r,ZASCIIrVrYr[r`rar�r�r�rErr�Zobjectr�r�r�rrDr�r'r�r�r�rr�rr�rr
r	rrrrrZ<module>1s��

	


'"�
	
h&d!
a	���