Your IP : 3.139.88.22


Current Path : /lib64/python3.6/__pycache__/
Upload File :
Current File : //lib64/python3.6/__pycache__/pickle.cpython-36.opt-2.pyc

3


 \���@sddlmZddlmZddlmZmZmZddlmZddl	m
Z
ddlZddlmZddl
mZmZddlZddlZddlZddlZd	d
ddd
ddddg	ZeefZdZdddddddgZdZdZGdd	�d	e�ZGdd
�d
e�ZGdd�de�ZGdd�de�Z ydd l!m"Z"Wne#k
�r.dZ"YnXd!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdWZZeJeTeUeVgZ[dXZ\dYZ]dZZ^d[Z_d\Z`d]Zad^Zbd_Zcd`ZddaZedbZfdcZgejhddde�ei�D��Gdfdg�dg�ZjGdhdi�di�Zkdjdk�Zldldm�Zmdndo�Zndpdq�ZoGdrds�ds�ZpGdtdu�du�Zqd�dvdw�dxdy�Zrd�dvdw�dzd{�Zsdvd|d}d~�dd��Ztdvd|d}d~�d�d��Zuy0dd�lvmZmZmZmwZwmxZxmyZymzZzm{Z{m|Z|Wn4e#k
�r^epeqZwZxereseteuf\ZyZzZ{Z|YnXd�d��Z}e~d�k�rddlZej�d�d��Z�e�j�d�ej�d��d�d�d��e�j�d�d�d�d�d��e�j�d�d�d�d��e�j��Z�e�j��r�e}�n>e�j��s�e�j��n,ddl�Z�x"e�j�D]Z�e{e��Z�e�j�e���q�WdS)��)�FunctionType)�dispatch_table)�_extension_registry�_inverted_registry�_extension_cache)�islice)�partialN)�maxsize)�pack�unpack�PickleError�
PicklingError�UnpicklingError�Pickler�	Unpickler�dump�dumps�load�loadsz4.0z1.0z1.1z1.2z1.3z2.0z3.0��c@seZdZdS)rN)�__name__�
__module__�__qualname__�rr�/usr/lib64/python3.6/pickle.pyr@sc@seZdZdS)r
N)rrrrrrrr
Dsc@seZdZdS)rN)rrrrrrrrKs	c@seZdZdd�ZdS)�_StopcCs
||_dS)N)�value)�selfrrrr�__init__Ysz_Stop.__init__N)rrrrrrrrrXsr)�PyStringMap�(�.�0�1�2�F�I�J�K�L�M�N�P�Q�R�S�T�U�V�X�a�b�c�d�}�e�g�h�i�j�l�]�o�p�q�r�s�t�)�u�GsI01
sI00
�������������������������B�C��������������������cCsg|]}tjd|�r|�qS)z[A-Z][A-Z0-9_]+$)�re�match)�.0�xrrr�
<listcomp>�srfc@s:eZdZdZdd�Zdd�Zdd�Zdd
d�Zdd
�ZdS)�_Framer�@icCs||_d|_dS)N)�
file_write�
current_frame)rrirrrr�sz_Framer.__init__cCstj�|_dS)N)�io�BytesIOrj)rrrr�
start_framing�sz_Framer.start_framingcCs*|jr&|jj�dkr&|jdd�d|_dS)NrT)�force)rj�tell�commit_frame)rrrr�end_framing�sz_Framer.end_framingFcCst|jrp|j}|j�|jks|rp|j��2}t|�}|j}|t�|td|��||�WdQRX|jd�|j	�dS)Nz<Qr)
rjro�_FRAME_SIZE_TARGET�	getbuffer�lenri�FRAMEr
�seek�truncate)rrn�f�data�n�writerrrrp�s

z_Framer.commit_framecCs |jr|jj|�S|j|�SdS)N)rjr{ri)rryrrrr{�sz
_Framer.writeNi)F)	rrrrrrrmrqrpr{rrrrrg�s

rgc@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�	_UnframerNcCs||_||_d|_dS)N)�	file_read�
file_readlinerj)rr}r~Z	file_tellrrrr�sz_Unframer.__init__cCsV|jrH|jj|�}|r0|dkr0d|_|j|�St|�|krDtd��|S|j|�SdS)Nrz$pickle exhausted before end of frame)rj�readr}rtr)rrzryrrrr�s
z_Unframer.readcCsF|jr:|jj�}|s"d|_|j�S|ddkr6td��|S|j�SdS)N��
rz$pickle exhausted before end of frame����
)rj�readliner~r)rryrrrr��s
z_Unframer.readlinecCs2|jr|jj�dkrtd��tj|j|��|_dS)N�z4beginning of a new frame before end of current frame)rjrrrkrlr})r�
frame_sizerrr�
load_frame�sz_Unframer.load_frame)N)rrrrrr�r�rrrrr|�s


r|cCslxb|jd�D]T}|dkr(tdj||���y|}t||�}Wqtk
r^tdj||���YqXqW||fS)N�.z<locals>z&Can't get local attribute {!r} on {!r}z Can't get attribute {!r} on {!r})�split�AttributeError�format�getattr)�obj�nameZsubpath�parentrrr�
_getattributes
r�cCszt|dd�}|dk	r|Sx\ttjj��D]J\}}|dks(|dkrBq(yt||�d|krZ|SWq(tk
rpYq(Xq(WdS)Nr�__main__r)r��list�sys�modules�itemsr�r�)r�r��module_name�modulerrr�whichmodules
r�cCsh|dkrdS|j�d?d}|j|ddd�}|dkrd|dkrd|ddkrd|dd
@dkrd|dd
�}|S)Nrr�rr��littleT)�	byteorder�signed���r����r�)�
bit_length�to_bytes)re�nbytes�resultrrr�encode_long$sr�cCstj|ddd�S)Nr�T)r�r�)�int�
from_bytes)ryrrr�decode_longBsr�c@sheZdZd7dd�dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Zd8dd�Z	dd�Z
dd�Zd9dd�ZiZ
dd�Zee
ed�<dd�Zee
e<dd�Zee
e<dd�Zee
e<d d!�Zee
e<d"d#�Zee
e<d$d%�Zee
e<d&d'�Zee
e<d(Zd)d*�Zd+d,�Z e e
e!<e"dk	�re e
e"<d-d.�Z#d/d0�Z$e$e
e%<d1d2�Z&e&e
e'<d:d3d4�Z(d5d6�Z)e(e
e*<e)e
e<dS);�_PicklerNT)�fix_importscCs�|dkrt}|dkrt}n$d|ko,tkns>tdt��y|j|_Wntk
rftd��YnXt|j�|_|jj|_i|_	t
|�|_|dk|_d|_
|o�|dk|_dS)Nrzpickle protocol must be <= %dz"file must have a 'write' attributer�r)�DEFAULT_PROTOCOL�HIGHEST_PROTOCOL�
ValueErrorr{�_file_writer��	TypeErrorrg�framer�memor��proto�bin�fastr�)r�file�protocolr�rrrr[s"


z_Pickler.__init__cCs|jj�dS)N)r��clear)rrrr�
clear_memo�sz_Pickler.clear_memocCsrt|d�std|jjf��|jdkr<|jttd|j��|jdkrP|jj	�|j
|�|jt�|jj�dS)Nr�z2Pickler.__init__() was not called by %s.__init__()r�z<Br)
�hasattrr
�	__class__rr�r{�PROTOr
r�rm�save�STOPrq)rr�rrrr�s





z
_Pickler.dumpcCs:|jr
dSt|j�}|j|j|��||f|jt|�<dS)N)r�rtr�r{�put�id)rr��idxrrr�memoize�s

z_Pickler.memoizecCsT|jdkrtS|jr:|dkr*ttd|�Sttd|�Sntt|�jd�dSdS)Nr�z<Bz<I�asciir�)	r��MEMOIZEr��BINPUTr
�LONG_BINPUT�PUT�repr�encode)rr�rrrr��s
z_Pickler.putcCs@|jr*|dkrttd|�Sttd|�Stt|�jd�dS)Nr�z<Bz<Ir�r�)r��BINGETr
�LONG_BINGET�GETr�r�)r�irrr�get�s
z_Pickler.getcCs�|jj�|j|�}|dk	r.|r.|j|�dS|jjt|��}|dk	r^|j|j|d��dSt|�}|j	j|�}|dk	r�|||�dSt
|dt�j|�}|dk	r�||�}n�yt|t�}	Wnt
k
r�d}	YnX|	r�|j|�dSt
|dd�}|dk	�r||j�}n0t
|dd�}|dk	�r&|�}ntd|j|f��t|t��rT|j||�dSt|t��sltd|��t|�}
d|
k�o�d	kn�s�td
|��|j|d|i�dS)NrrF�
__reduce_ex__�
__reduce__zCan't pickle %r object: %rz%s must return string or tupler��z3Tuple returned by %s must have two to five elementsr�)r�rp�
persistent_id�	save_persr�r�r�r{�type�dispatchr�r�
issubclassr��save_globalr�r
r�
isinstance�str�tuplert�save_reduce)rr��save_persistent_id�pidre�trx�reduce�rvZissc�lrrrr��sT








z
_Pickler.savecCsdS)Nr)rr�rrrr�sz_Pickler.persistent_idcCsb|jr |j|dd�|jt�n>y |jtt|�jd�d�Wntk
r\td��YnXdS)NF)r�r�r�z2persistent IDs in protocol 0 must be ASCII strings)	r�r�r{�	BINPERSID�PERSIDr�r��UnicodeEncodeErrorr
)rr�rrrr�s z_Pickler.save_perscCst|t�std��t|�s"td��|j}|j}t|dd�}	|jdkr�|	dkr�|\}
}}t|
d�sntdj	|	���|dk	r�|
|j
k	r�td	j	|	���|jd
kr�||
�||�||�|t�n,t|
j
|
f|�|�}||�|f�|t�n�|jdko�|	dk�r\|d}
t|
d��std
��|dk	�r6|
|j
k	�r6td��|dd�}||
�||�|t�n||�||�|t�|dk	�r�t|�|jk�r�|t|j|jt|�d��n
|j|�|dk	�r�|j|�|dk	�r�|j|�|dk	�r�||�|t�dS)Nz'args from save_reduce() must be a tuplez(func from save_reduce() must be callabler�r��
__newobj_ex__�__new__z#args[0] from {} args has no __new__z(args[0] from {} args has the wrong classr�
__newobj__rz+args[0] from __newobj__ args has no __new__z0args[0] from __newobj__ args has the wrong classr�)r�r�r
�callabler�r{r�r�r�r�r��	NEWOBJ_EXrr��REDUCE�NEWOBJr�r��POPr�r��_batch_appends�_batch_setitems�BUILD)r�func�args�stateZ	listitemsZ	dictitemsr�r�r{Z	func_name�cls�kwargsrrrr�sd







"





z_Pickler.save_reducecCs|jt�dS)N)r{�NONE)rr�rrr�	save_none�sz_Pickler.save_nonecCs4|jdkr|j|rtnt�n|j|r*tnt�dS)Nr�)r�r{�NEWTRUE�NEWFALSE�TRUE�FALSE)rr�rrr�	save_bool�s
z_Pickler.save_boolcCs�|jr~|dkrN|dkr.|jttd|��dS|dkrN|jttd|��dSd
|ko`dknr~|jttd|��dS|jd	kr�t|�}t|�}|d
kr�|jt	td|�|�n|jt
td|�|�dS|jtt|�j
d�d�dS)Nrr�z<Bi��z<Hli���z<ir�r�r�sL
i�)r�r{�BININT1r
�BININT2�BININTr�r�rt�LONG1�LONG4�LONGr�r�)rr��encodedrzrrr�	save_long�s&
z_Pickler.save_longcCs<|jr|jttd|��n|jtt|�jd�d�dS)Nz>dr�r�)r�r{�BINFLOATr
�FLOATr�r�)rr�rrr�
save_float�sz_Pickler.save_floatcCs�|jdkr@|s |jtf|d�n|jtjt|d�df|d�dSt|�}|dkrj|jtt	d|�|�nD|dkr�|jdkr�|jt
t	d|�|�n|jtt	d	|�|�|j|�dS)
Nr)r��latin1r�z<Bl��rz<Qz<I)
r�r��bytes�codecsr�r�rtr{�SHORT_BINBYTESr
�	BINBYTES8�BINBYTESr�)rr�rzrrr�
save_bytes�s
z_Pickler.save_bytescCs�|jr�|jdd�}t|�}|dkrF|jdkrF|jttd|�|�q�|dkrr|jdkrr|jttd|�|�q�|jttd|�|�n0|j	d	d
�}|j	dd�}|jt
|jd
�d�|j|�dS)Nzutf-8�
surrogatepassr�rz<Bl��z<Qz<I�\z\u005c�
z\u000azraw-unicode-escaper�)r�r�rtr�r{�SHORT_BINUNICODEr
�BINUNICODE8�
BINUNICODE�replace�UNICODEr�)rr�rrzrrr�save_str�sz_Pickler.save_strcCsB|s(|jr|jt�n|jtt�dSt|�}|j}|j}|dkr�|jdkr�x|D]}||�qTWt	|�|kr�|j
|t	|�d�}|jt||�n|jt|�|j
|�dS|j}|t�x|D]}||�q�Wt	|�|k�r,|j
|t	|�d�}|j�r|t|�n|t|d|�dS|t�|j
|�dS)Nrr�rr�)r�r{�EMPTY_TUPLE�MARK�TUPLErtr�r�r�r�r�r��_tuplesize2coder��POP_MARK)rr�rzr�r��elementr�r{rrr�
save_tuple�s:


z_Pickler.save_tuplecCs8|jr|jt�n|jtt�|j|�|j|�dS)N)r�r{�
EMPTY_LISTr�LISTr�r�)rr�rrr�	save_lists

z_Pickler.save_listi�cCs�|j}|j}|js4x|D]}||�|t�qWdSt|�}xrtt||j��}t|�}|dkr�|t	�x|D]}||�qlW|t
�n|r�||d�|t�||jkr>dSq>WdS)Nr�r)r�r{r��APPEND�iterr�r�
_BATCHSIZErtr�APPENDS)rr�r�r{re�it�tmprzrrrr�s*



z_Pickler._batch_appendscCs<|jr|jt�n|jtt�|j|�|j|j��dS)N)r�r{�
EMPTY_DICTr�DICTr�r�r�)rr�rrr�	save_dict.s

z_Pickler.save_dictc	Cs�|j}|j}|js@x(|D] \}}||�||�|t�qWdSt|�}x�tt||j��}t|�}|dkr�|t	�x |D]\}}||�||�qxW|t
�n(|r�|d\}}||�||�|t�||jkrJdSqJWdS)Nr�r)r�r{r��SETITEMr"r�rr#rtr�SETITEMS)	rr�r�r{�k�vr%r&rzrrrr�;s2

z_Pickler._batch_setitemscCs�|j}|j}|jdkr0|jtt|�f|d�dS|t�|j|�t|�}xXtt	||j
��}t|�}|dkr�|t�x|D]}||�qzW|t
�||j
krLdSqLWdS)Nr)r�r)r�r{r�r��setr��	EMPTY_SETr�r"rr#rtr�ADDITEMS)rr�r�r{r%Zbatchrz�itemrrr�save_setZs$



z_Pickler.save_setcCs�|j}|j}|jdkr0|jtt|�f|d�dS|t�x|D]}||�q>Wt|�|jkr�|t	|j
|jt|�d��dS|t�|j|�dS)Nr)r�r)
r�r{r�r��	frozensetr�rr�r�rr��	FROZENSETr�)rr�r�r{r1rrr�save_frozensetrs

 z_Pickler.save_frozensetc
CsT|j}|j}|dkr t|dd�}|dkr.|j}t||�}y(t|dd�tj|}t||�\}}Wn,t	t
tfk
r�td|||f��YnX||k	r�td|||f��|j
dk�rtj||f�}	|	�r|	dkr�|ttd|	��n0|	d	k�r|ttd
|	��n|ttd|	��dS|jd�d}
||k�r4|
}|j
d
k�r^|j|�|j|�|t�n�||k	�rz|jt||
f�n�|j
dk�r�|tt|d�dt|d�d�n�|j�r�tj}tj}||f|k�r�|||f\}}n||k�r�||}y(|tt|d�dt|d�d�Wn*tk
�rDtd|||j
f��YnX|j|�dS)Nrr)�levelz(Can't pickle %r: it's not found as %s.%sz2Can't pickle %r: it's not the same object as %s.%sr�r�z<Bi��z<Hz<ir�rrzutf-8r�r�z?can't pickle global identifier '%s.%s' using pickle protocol %i) r{r�r�rr��
__import__r�r�r��ImportError�KeyErrorr�r
r�rr��EXT1r
�EXT2�EXT4�
rpartitionr��STACK_GLOBALr��GLOBALrr��_compat_pickleZREVERSE_NAME_MAPPINGZREVERSE_IMPORT_MAPPINGr�r�)
rr�r�r{r�r�r�Zobj2r��codeZlastnameZr_name_mappingZr_import_mappingrrrr��sn







$
&z_Pickler.save_globalcCs`|td�kr|jtd|d�S|tt�kr:|jttf|d�S|td�krV|jtd|d�S|j|�S)N)r�.)N).)r�r��NotImplementedr�)rr�rrr�	save_type�sz_Pickler.save_type)N)T)NNNN)N)+rrrrr�rr�r�r�r�r�r�r�r�r�r�r��boolrr�r�floatr
rrr�rr�r r�r#r�r)�dictr r�r2r.r5r3r�rCrrrrrr�YsV)
	
B
c1		

B	r�c@sneZdZdddd�dd�Zdd�Zd	d
�Zdd�ZiZd
d�Zeee	d<dd�Z
e
eed<dd�Zeee
d<dd�Zeeed<dd�Zeeed<dd�Zeeed<dd�Zeeed<dd�Zeeed<dd�Zeeed<d d!�Zeeed<d"d#�Zeeed<d$d%�Zeeed<d&d'�Z e ee!d<d(d)�Z"e"ee#d<d*d+�Z$e$ee%d<d,d-�Z&e&ee'd<d.d/�Z(d0d1�Z)e)ee*d<d2d3�Z+e+ee,d<d4d5�Z-e-ee.d<d6d7�Z/e/ee0d<d8d9�Z1e1ee2d<d:d;�Z3e3ee4d<d<d=�Z5e5ee6d<d>d?�Z7e7ee8d<d@dA�Z9e9ee:d<dBdC�Z;e;ee<d<dDdE�Z=e=ee>d<dFdG�Z?e?ee@d<dHdI�ZAeAeeBd<dJdK�ZCeCeeDd<dLdM�ZEeEeeFd<dNdO�ZGeGeeHd<dPdQ�ZIeIeeJd<dRdS�ZKeKeeLd<dTdU�ZMeMeeNd<dVdW�ZOeOeePd<dXdY�ZQeQeeRd<dZd[�ZSd\d]�ZTeTeeUd<d^d_�ZVeVeeWd<d`da�ZXeXeeYd<dbdc�ZZeZee[d<ddde�Z\e\ee]d<dfdg�Z^e^ee_d<dhdi�Z`e`eead<djdk�Zbebeecd<dldm�Zdedeeed<dndo�Zfdpdq�Zgdrds�Zheheeid<dtdu�Zjejeekd<dvdw�Zleleemd<dxdy�Zneneeod<dzd{�Zpepeeqd<d|d}�Zrereesd<d~d�Zteteeud<d�d��Zveveewd<d�d��Zxexeeyd<d�d��Zzezee{d<d�d��Z|e|ee}d<d�d��Z~e~eed<d�d��Z�e�ee�d<d�d��Z�e�ee�d<d�d��Z�e�ee�d<d�d��Z�e�ee�d<d�d��Z�e�ee�d<d�d��Z�e�ee�d<d�d��Z�e�ee�d<d�S)��
_UnpicklerT�ASCII�strict)r��encoding�errorscCs2|j|_|j|_i|_||_||_d|_||_dS)Nr)	r��_file_readliner�
_file_readr�rJrKr�r�)rr�r�rJrKrrrr�sz_Unpickler.__init__cCs�t|d�std|jjf��t|j|j�|_|jj|_|jj	|_	g|_
g|_|jj|_d|_
|j}|j}y*x$|d�}|s|t�||d|�qlWWn"tk
r�}z|jSd}~XnXdS)NrMz4Unpickler.__init__() was not called by %s.__init__()rr�)r�rr�rr|rMrL�	_unframerrr��	metastack�stack�appendr�r��EOFErrorrr)rrr��keyZstopinstrrrrs(



z_Unpickler.loadcCs |j}|jj�|_|jj|_|S)N)rPrO�poprQ)rr�rrr�pop_marks
z_Unpickler.pop_markcCstd��dS)Nz%unsupported persistent id encountered)r)rr�rrr�persistent_load%sz_Unpickler.persistent_loadcCs<|jd�d}d|ko tkns2td|��||_dS)Nr�rzunsupported pickle protocol: %d)rr�r�r�)rr�rrr�
load_proto*sz_Unpickler.load_protorcCs8td|jd��\}|tjkr(td|��|jj|�dS)Nz<Q�zframe size > sys.maxsize: %d)rrr�r	r�rNr�)rr�rrrr�1s
z_Unpickler.load_framecCsLy|j�dd�jd�}Wntk
r6td��YnX|j|j|��dS)Nr�r�z2persistent IDs in protocol 0 must be ASCII stringsr�)r��decode�UnicodeDecodeErrorrrQrV)rr�rrr�load_persid8sz_Unpickler.load_persidcCs|jj�}|j|j|��dS)N)rPrTrQrV)rr�rrr�load_binpersidAs
z_Unpickler.load_binpersidcCs|jd�dS)N)rQ)rrrr�	load_noneFsz_Unpickler.load_nonecCs|jd�dS)NF)rQ)rrrr�
load_falseJsz_Unpickler.load_falsecCs|jd�dS)NT)rQ)rrrr�	load_trueNsz_Unpickler.load_truecCsL|j�}|tdd�krd}n |tdd�kr4d}n
t|d�}|j|�dS)Nr�FTr)r�r�r�r�rQ)rry�valrrr�load_intRs
z_Unpickler.load_intcCs|jtd|jd��d�dS)Nz<irr)rQrr)rrrr�load_binint]sz_Unpickler.load_binintcCs|j|jd�d�dS)Nr�r)rQr)rrrr�load_binint1asz_Unpickler.load_binint1cCs|jtd|jd��d�dS)Nz<Hr�r)rQrr)rrrr�load_binint2esz_Unpickler.load_binint2cCs@|j�dd�}|r,|ddkr,|dd�}|jt|d��dS)Nr�r*rr�r��Lr�)r�rQr�)rr`rrr�	load_longisz_Unpickler.load_longcCs*|jd�d}|j|�}|jt|��dS)Nr�r)rrQr�)rrzryrrr�
load_long1ps
z_Unpickler.load_long1cCs>td|jd��\}|dkr"td��|j|�}|jt|��dS)Nz<irrz#LONG pickle has negative byte count)rrrrQr�)rrzryrrr�
load_long4vs

z_Unpickler.load_long4cCs|jt|j�dd���dS)Nr�r�)rQrEr�)rrrr�
load_floatsz_Unpickler.load_floatcCs|jtd|jd��d�dS)Nz>drXr)rQrr)rrrr�
load_binfloat�sz_Unpickler.load_binfloatcCs"|jdkr|S|j|j|j�SdS)Nr)rJrYrK)rrrrr�_decode_string�s
z_Unpickler._decode_stringcCsl|j�dd�}t|�dkrF|d|dkrF|ddkrF|dd�}ntd��|j|jtj|�d��dS)	Nr�r�rs"'z)the STRING opcode argument must be quotedr�r�r�)r�rtrrQrkr	�
escape_decode)rryrrr�load_string�s
(z_Unpickler.load_stringcCs@td|jd��\}|dkr"td��|j|�}|j|j|��dS)Nz<irrz(BINSTRING pickle has negative byte count)rrrrQrk)rrtryrrr�load_binstring�s

z_Unpickler.load_binstringcCs:td|jd��\}|tkr&tdt��|j|j|��dS)Nz<Irz2BINBYTES exceeds system's maximum size of %d bytes)rrr	rrQ)rrtrrr�
load_binbytes�s
z_Unpickler.load_binbytescCs |jt|j�dd�d��dS)Nr�zraw-unicode-escaper�)rQr�r�)rrrr�load_unicode�sz_Unpickler.load_unicodecCsBtd|jd��\}|tkr&tdt��|jt|j|�dd��dS)Nz<Irz4BINUNICODE exceeds system's maximum size of %d byteszutf-8r)rrr	rrQr�)rrtrrr�load_binunicode�s
z_Unpickler.load_binunicodecCsBtd|jd��\}|tkr&tdt��|jt|j|�dd��dS)Nz<QrXz5BINUNICODE8 exceeds system's maximum size of %d byteszutf-8r)rrr	rrQr�)rrtrrr�load_binunicode8�s
z_Unpickler.load_binunicode8cCs:td|jd��\}|tkr&tdt��|j|j|��dS)Nz<QrXz3BINBYTES8 exceeds system's maximum size of %d bytes)rrr	rrQ)rrtrrr�load_binbytes8�s
z_Unpickler.load_binbytes8cCs,|jd�d}|j|�}|j|j|��dS)Nr�r)rrQrk)rrtryrrr�load_short_binstring�s
z_Unpickler.load_short_binstringcCs"|jd�d}|j|j|��dS)Nr�r)rrQ)rrtrrr�load_short_binbytes�sz_Unpickler.load_short_binbytescCs*|jd�d}|jt|j|�dd��dS)Nr�rzutf-8r)rrQr�)rrtrrr�load_short_binunicode�sz _Unpickler.load_short_binunicodecCs|j�}|jt|��dS)N)rUrQr�)rr�rrr�
load_tuple�sz_Unpickler.load_tuplecCs|jf�dS)N)rQ)rrrr�load_empty_tuple�sz_Unpickler.load_empty_tuplecCs|jdf|jd<dS)Nr�r�r�)rP)rrrr�load_tuple1�sz_Unpickler.load_tuple1cCs$|jd|jdfg|jdd�<dS)Nr�r�r�r�r�)rP)rrrr�load_tuple2�sz_Unpickler.load_tuple2cCs,|jd|jd|jdfg|jdd�<dS)Nrr�r����r�r�r{)rP)rrrr�load_tuple3�sz_Unpickler.load_tuple3cCs|jg�dS)N)rQ)rrrr�load_empty_list�sz_Unpickler.load_empty_listcCs|ji�dS)N)rQ)rrrr�load_empty_dictionary�sz _Unpickler.load_empty_dictionarycCs|jt��dS)N)rQr.)rrrr�load_empty_set�sz_Unpickler.load_empty_setcCs|j�}|jt|��dS)N)rUrQr3)rr�rrr�load_frozenset�sz_Unpickler.load_frozensetcCs|j�}|j|�dS)N)rUrQ)rr�rrr�	load_list�sz_Unpickler.load_listcs4|j���fdd�tdt��d�D�}|j|�dS)Ncsi|]}�|d�|�qS)r�r)rdr�)r�rr�
<dictcomp>sz(_Unpickler.load_dict.<locals>.<dictcomp>rr�)rU�rangertrQ)r�dr)r�r�	load_dicts
z_Unpickler.load_dictcCs�|st|t�st|d�rly||�}Wqvtk
rh}z&td|jt|�ftj�d��WYdd}~XqvXn
|j|�}|j	|�dS)NZ__getinitargs__zin constructor for %s: %sr�)
r�r�r�r�rr�r��exc_infor�rQ)r�klassr�r�errrrr�_instantiates
0
z_Unpickler._instantiatecCsL|j�dd�jd�}|j�dd�jd�}|j||�}|j||j��dS)Nr�r�r�r�)r�rY�
find_classr�rU)rr�r�r�rrr�	load_instsz_Unpickler.load_instcCs"|j�}|jd�}|j||�dS)Nr)rUrTr�)rr�r�rrr�load_obj!s
z_Unpickler.load_objcCs2|jj�}|jj�}|j|f|��}|j|�dS)N)rPrTr�rQ)rr�r�r�rrr�load_newobj(s

z_Unpickler.load_newobjcCs>|jj�}|jj�}|jj�}|j|f|�|�}|j|�dS)N)rPrTr�rQ)rr�r�r�r�rrr�load_newobj_ex/s



z_Unpickler.load_newobj_excCsF|j�dd�jd�}|j�dd�jd�}|j||�}|j|�dS)Nr�zutf-8r�r�)r�rYr�rQ)rr�r�r�rrr�load_global7sz_Unpickler.load_globalcCsJ|jj�}|jj�}t|�tk	s,t|�tk	r4td��|j|j||��dS)NzSTACK_GLOBAL requires str)rPrTr�r�rrQr�)rr�r�rrr�load_stack_global>s


z_Unpickler.load_stack_globalcCs|jd�d}|j|�dS)Nr�r)r�
get_extension)rrArrr�	load_ext1Fsz_Unpickler.load_ext1cCs td|jd��\}|j|�dS)Nz<Hr�)rrr�)rrArrr�	load_ext2Ksz_Unpickler.load_ext2cCs td|jd��\}|j|�dS)Nz<ir)rrr�)rrArrr�	load_ext4Psz_Unpickler.load_ext4cCspg}tj||�}||k	r&|j|�dStj|�}|sP|dkrDtd��td|��|j|�}|t|<|j|�dS)NrzEXT specifies code <= 0zunregistered extension code %d)rr�rQrrr�r�)rrAZnilr�rSrrrr�Us


z_Unpickler.get_extensioncCs�|jdkrF|jrF||ftjkr2tj||f\}}n|tjkrFtj|}t|dd�|jdkrpttj||�dSt	tj||�SdS)Nrr)r6r)
r�r�r@ZNAME_MAPPINGZIMPORT_MAPPINGr7r�r�r�r�)rr�r�rrrr�es


z_Unpickler.find_classcCs&|j}|j�}|d}||�|d<dS)Nr�r�r�)rPrT)rrPr�r�rrr�load_reducersz_Unpickler.load_reducecCs|jr|jd=n|j�dS)Nr�r�)rPrU)rrrr�load_popys
z_Unpickler.load_popcCs|j�dS)N)rU)rrrr�
load_pop_mark�sz_Unpickler.load_pop_markcCs|j|jd�dS)Nr�r�)rQrP)rrrr�load_dup�sz_Unpickler.load_dupcCs(t|j�dd��}|j|j|�dS)Nr�r�)r�r�rQr�)rr�rrr�load_get�sz_Unpickler.load_getcCs"|jd�d}|j|j|�dS)Nr�r)rrQr�)rr�rrr�load_binget�sz_Unpickler.load_bingetcCs&td|jd��\}|j|j|�dS)Nz<Ir)rrrQr�)rr�rrr�load_long_binget�sz_Unpickler.load_long_bingetcCs8t|j�dd��}|dkr$td��|jd|j|<dS)Nr�rznegative PUT argumentr�r�)r�r�r�rPr�)rr�rrr�load_put�sz_Unpickler.load_putcCs2|jd�d}|dkrtd��|jd|j|<dS)Nr�rznegative BINPUT argumentr�)rr�rPr�)rr�rrr�load_binput�sz_Unpickler.load_binputcCs6td|jd��\}|tkr"td��|jd|j|<dS)Nz<Irznegative LONG_BINPUT argumentr�r�)rrr	r�rPr�)rr�rrr�load_long_binput�sz_Unpickler.load_long_binputcCs|j}|jd|t|�<dS)Nr�r�)r�rPrt)rr�rrr�load_memoize�sz_Unpickler.load_memoizecCs$|j}|j�}|d}|j|�dS)Nr�r�)rPrTrQ)rrPrr�rrr�load_append�sz_Unpickler.load_appendcCsH|j�}|jd}t|t�r(|j|�n|j}x|D]}||�q4WdS)Nr�r�)rUrPr�r��extendrQ)rr�Zlist_objrQr1rrr�load_appends�s


z_Unpickler.load_appendscCs*|j}|j�}|j�}|d}|||<dS)Nr�r�)rPrT)rrPrrSrFrrr�load_setitem�s
z_Unpickler.load_setitemcCsD|j�}|jd}x,tdt|�d�D]}||d|||<q$WdS)Nr�rr�r�)rUrPr�rt)rr�rFr�rrr�
load_setitems�s
z_Unpickler.load_setitemscCsH|j�}|jd}t|t�r(|j|�n|j}x|D]}||�q4WdS)Nr�r�)rUrPr�r.�update�add)rr�Zset_objr�r1rrr�
load_additems�s


z_Unpickler.load_additemsc
Cs�|j}|j�}|d}t|dd�}|dk	r6||�dSd}t|t�rXt|�dkrX|\}}|r�|j}tj}x6|j	�D]*\}}	t
|�tkr�|	|||�<qr|	||<qrW|r�x |j	�D]\}}	t|||	�q�WdS)Nr��__setstate__r�r�)
rPrTr�r�r�rt�__dict__r��internr�r�r��setattr)
rrPr�Zinst�setstateZ	slotstateZ	inst_dictr�r,r-rrr�
load_build�s(z_Unpickler.load_buildcCs"|jj|j�g|_|jj|_dS)N)rOrQrP)rrrr�	load_mark�sz_Unpickler.load_markcCs|jj�}t|��dS)N)rPrTr)rrrrr�	load_stop�s
z_Unpickler.load_stopN)�rrrrrrUrVr�rWr�r�rur[r�r\r�r]r�r^r�r_r�ra�INTrbr�rcr�rdr�rfrrgr�rhrrirrjrrkrm�STRINGrn�	BINSTRINGrorrprrqrrrrrsrrt�SHORT_BINSTRINGrur
rvrrwrrxrry�TUPLE1rz�TUPLE2r|�TUPLE3r}rr~r'rr/r�r4r�rr�r(r�r��INSTr��OBJr�r�r�r�r�r?r�r>r�r:r�r;r�r<r�r�r�r�r�r�r�rr��DUPr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r�r$r�r*r�r+r�r0r�r�r�rr�r�rrrrrG�s$		
		rGT)r�cCst|||d�j|�dS)N)r�)r�r)r�r�r�r�rrr�_dumpsr�cCs(tj�}t|||d�j|�|j�}|S)N)r�)rkrlr�r�getvalue)r�r�r�rx�resrrr�_dumpssr�rHrI)r�rJrKcCst||||d�j�S)N)r�rJrK)rGr)r�r�rJrKrrr�_load
sr�cCs0t|t�rtd��tj|�}t||||d�j�S)Nz%Can't load pickle from unicode string)r�rJrK)r�r�r�rkrlrGr)�sr�rJrKr�rrr�_loadss


r�)	rr
rrrrrrrcCsddl}|j�S)Nr)�doctestZtestmod)r�rrr�_test*sr�r�z$display contents of the pickle files)Zdescription�pickle_file�br�*zthe pickle file)r��nargs�helpz-tz--test�
store_truezrun self-test suite)�actionr�z-vz)run verbosely; only affects self-test run)N)N)��typesr�copyregrrrr�	itertoolsr�	functoolsrr�r	Zstructr
rrbrkr	r@�__all__r�	bytearrayZbytes_typesZformat_versionZcompatible_formatsr�r��	Exceptionrr
rrZorg.python.corer r8rr�r�rr�rr�r�r�rr�r�r�r�r�r�r�r�rrr!r�r?r(r'r$r�r�r�r�rrr�r�r�r�r*rrr+rr�r�r�r�r:r;r<r�r�r�r�r�r�rrrr
rrrr/r0r4r�r>r�rur��dirrgr|r�r�r�r�r�rGr�r�r�r��_picklerrrrrrr�r�argparse�ArgumentParser�parser�add_argumentZFileType�
parse_argsr�Ztestr�Z
print_help�pprintrxr�rrrr�<module>s,

$*
-0