o
    >c                     @   sL  	 d dl mZ d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlZd dlmZ d dlmZmZ d dlZd dlZd dlZd dlZg d	Zzd d
lmZ ed dZW n eyc   dZY nw eefZdZg dZdZdZ G dd de!Z"G dd de"Z#G dd de"Z$G dd de!Z%zd dl&m'Z' W n ey   dZ'Y nw dZ(dZ)dZ*dZ+dZ,d Z-d!Z.d"Z/d#Z0d$Z1d%Z2d&Z3d'Z4d(Z5d)Z6d*Z7d+Z8d,Z9d-Z:d.Z;d/Z<d0Z=d1Z>d2Z?d3Z@d4ZAd5ZBd6ZCd7ZDd8ZEd9ZFd:ZGd;ZHd<ZId=ZJd>ZKd?ZLd@ZMdAZNdBZOdCZPdDZQdEZRdFZSdGZTdHZUdIZVdJZWdKZXdLZYdMZZdNZ[dOZ\dPZ]dQZ^eNeXeYeZgZ_dRZ`dSZadTZbdUZcdVZddWZedXZfdYZgdZZhd[Zid\Zjd]Zkd^Zld_Zmd`Zneodadb ep D  G dcdd ddZqG dedf dfZrdgdh Zsdidj Ztdkdl Zudmdn ZvG dodp dpZwG dqdr drZxddddsdtduZyddddsdvdwZzddxdyddzd{d|Z{ddxdyddzd}d~Z|zd d	lm"Z"m#Z#m$Z$m}Z}m~Z~mZmZmZmZ W n ey   ewexZ}Z~eyeze{e|f\ZZZZY nw dd Zedkr"d dlZejddZejdedddd ejddddd ejdddd e Zejre  dS ejse  dS d dlZejD ]ZeeZee qdS dS )    )FunctionType)dispatch_table)_extension_registry_inverted_registry_extension_cache)islice)partialN)maxsize)packunpack)	PickleErrorPicklingErrorUnpicklingErrorPickler	Unpicklerdumpdumpsloadloads)PickleBufferr   TF4.0)z1.0z1.1z1.2z1.3z2.0z3.0r   z5.0      c                   @      e Zd Z	 dS )r   N__name__
__module____qualname__ r   r   Z/Volumes/Data/workspace/med-macos-weekly/build/ExtProjs/pyncpp/python/source/Lib/pickle.pyr   I   s    r   c                   @   r   )r   Nr   r   r   r   r   r   M   s    r   c                   @   r   )r   Nr   r   r   r   r   r   T   s    r   c                   @   s   e Zd Zdd ZdS )_Stopc                 C   s
   || _ d S N)valueselfr"   r   r   r   __init__b   s   
z_Stop.__init__N)r   r   r   r%   r   r   r   r   r    a   s    r    )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   Gs   I01
s   I00
                                       B   C                                       c                 C   s   g | ]
}t d |r|qS )z[A-Z][A-Z0-9_]+$)rematch).0xr   r   r   
<listcomp>   s    ro   c                   @   sF   e Zd ZdZdZdd Zdd Zdd Zdd
dZdd Z	dd Z
dS )_Framerr   i   c                 C   s   || _ d | _d S r!   )
file_writecurrent_frame)r$   rq   r   r   r   r%      s   
z_Framer.__init__c                 C   s   t  | _d S r!   )ioBytesIOrr   r$   r   r   r   start_framing      z_Framer.start_framingc                 C   s2   | j r| j  dkr| jdd d | _ d S d S d S )Nr   Tforce)rr   tellcommit_frameru   r   r   r   end_framing   s   
z_Framer.end_framingFc                 C   sn   | j r3| j }| | jks|r5| }| j}t|| jkr(|ttdt|  || t	
 | _ d S d S d S )N<Q)rr   rz   _FRAME_SIZE_TARGET	getbufferrq   len_FRAME_SIZE_MINFRAMEr
   rs   rt   )r$   ry   fdatawriter   r   r   r{      s   z_Framer.commit_framec                 C   s   | j r	| j |S | |S r!   )rr   r   rq   r$   r   r   r   r   r      s   
z_Framer.writec                 C   s,   | j }| jr| jdd || || d S )NTrx   )rq   rr   r{   )r$   headerZpayloadr   r   r   r   write_large_bytes   s
   z_Framer.write_large_bytesN)F)r   r   r   r   r~   r%   rv   r|   r{   r   r   r   r   r   r   rp      s    
rp   c                   @   s6   e Zd ZdddZdd Zdd Zdd	 Zd
d ZdS )	_UnframerNc                 C   s   || _ || _d | _d S r!   )	file_readfile_readlinerr   )r$   r   r   Z	file_tellr   r   r   r%   	  s   
z_Unframer.__init__c                 C   s   | j r1| j |}|dkr%t|dkr%d | _ t|}| ||d d < |S |t|k r/td|S t|}| ||d d < |S Nr   $pickle exhausted before end of frame)rr   readintor   r   r   )r$   bufnr   r   r   r     s   z_Unframer.readintoc                 C   sP   | j r#| j |}|s|dkrd | _ | |S t||k r!td|S | |S r   )rr   readr   r   r   r$   r   r   r   r   r   r     s   

z_Unframer.readc                 C   sB   | j r| j  }|sd | _ |  S |d dkrtd|S |  S )N
   r   )rr   readliner   r   r   r   r   r   r   ,  s   
z_Unframer.readlinec                 C   s2   | j r| j  dkrtdt| || _ d S )N    z4beginning of a new frame before end of current frame)rr   r   r   rs   rt   r   r$   Z
frame_sizer   r   r   
load_frame9  s
   z_Unframer.load_framer!   )r   r   r   r%   r   r   r   r   r   r   r   r   r     s    
r   c              	   C   sb   | dD ]'}|dkrtd|| z	| }t| |} W q ty,   td|| d w | |fS )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nameZsubpathparentr   r   r   _getattributeB  s    r   c              	   C   s   	 t | dd }|d ur|S tj  D ]*\}}|dks$|dks$|d u r%qzt||d | u r4|W   S W q ty>   Y qw dS )Nr   __main____mp_main__r   )r   sysmodulescopyitemsr   r   )r   r   module_namemoduler   r   r   whichmoduleO  s"   
r   c                 C   sj   	 | dkrdS |   d? d }| j|ddd}| dk r3|dkr3|d d	kr3|d
 d@ dkr3|d d }|S )Nr   r         littleT	byteorderZsignedr         )
bit_lengthto_bytes)rn   nbytesresultr   r   r   encode_longb  s   r   c                 C   s   	 t j| dddS )Nr   Tr   )int
from_bytes)r   r   r   r   decode_long  s   r   c                   @   s  e Zd Zd<dddddZdd Zdd	 Zd
d Zdd Zdd Zd=ddZ	dd Z
dd Z		d>ddddZi Zdd Zeeed< dd Zeee< dd Zeee< dd  Zeee< d!d" Zeee< d#d$ Zeee< ervd%d& Zeee< d'd( Zeee< d)d* Zeee < d+d, Z!e!ee"< d-Z#d.d/ Z$d0d1 Z%e%ee&< e'dure%ee'< d2d3 Z(d4d5 Z)e)ee*< d6d7 Z+e+ee,< d<d8d9Z-d:d; Z.e-ee/< e.ee< dS )?_PicklerNTfix_importsbuffer_callbackc                C   s   	 |d u rt }|dk rt}nd|  krtksn tdt |d ur+|dk r+td|| _z|j| _W n ty?   tdw t| j| _	| j	j| _| j	j
| _i | _t|| _|dk| _d| _|oe|dk | _d S )Nr   zpickle protocol must be <= %dr   z#buffer_callback needs protocol >= 5z"file must have a 'write' attributer   r   )DEFAULT_PROTOCOLHIGHEST_PROTOCOL
ValueError_buffer_callbackr   _file_writer   	TypeErrorrp   framerr   _write_large_bytesmemor   protobinfastr   )r$   fileprotocolr   r   r   r   r   r%     s.   !



z_Pickler.__init__c                 C   s   	 | j   d S r!   )r   clearru   r   r   r   
clear_memo  s   z_Pickler.clear_memoc                 C   st   	 t | dstd| jjf | jdkr| ttd| j  | jdkr)| j	  | 
| | t | j  d S )Nr   z2Pickler.__init__() was not called by %s.__init__()   <Br   )hasattrr   	__class__r   r   r   PROTOr
   r   rv   saveSTOPr|   r$   r   r   r   r   r     s   





z_Pickler.dumpc                 C   s<   	 | j rd S t| j}| | | ||f| jt|< d S r!   )r   r   r   r   putid)r$   r   idxr   r   r   memoize  s   
z_Pickler.memoizec                 C   sN   | j dkrtS | jr|dk rttd| S ttd| S tt|d d S )Nr      r   <Iascii   
)	r   MEMOIZEr   BINPUTr
   LONG_BINPUTPUTreprencode)r$   r   r   r   r   r     s   
z_Pickler.putc                 C   s@   | j r|dk rttd| S ttd| S tt|d d S )Nr   r   r   r   r   )r   BINGETr
   LONG_BINGETGETr   r   r$   ir   r   r   get  s
   z_Pickler.getc           
      C   s  | j   | |}|d ur|r| | d S | jt|}|d ur/| | |d  d S t}t	| dd }|d ur?||}|tu rt
|}| j|}|d urX|| | d S t	| dt|}|d urj||}n3t|t
rv| | d S t	|dd }|d ur|| j}nt	|dd }|d ur| }n	td|j|f t|tr| || d S t|tstd| t|}	d|	  krd	ksn td
| | j|d|i d S )Nr   Zreducer_overrider   __reduce_ex__
__reduce__zCan't pickle %r object: %rz%s must return string or tupler      z2Tuple returned by %s must have two to six elementsr   )r   r{   persistent_id	save_persr   r   r   r   NotImplementedr   typedispatchr   
issubclasssave_globalr   r   r   
isinstancestrtupler   save_reduce)
r$   r   save_persistent_idpidrn   Zrvreducetr   lr   r   r   r     sZ   








z_Pickler.savec                 C   s   d S r!   r   r   r   r   r   r   ]  s   z_Pickler.persistent_idc                 C   s\   | j r| j|dd | t d S z| tt|d d  W d S  ty-   tdw )NF)r   r   r   2persistent IDs in protocol 0 must be ASCII strings)	r   r   r   	BINPERSIDPERSIDr   r   UnicodeEncodeErrorr   r$   r   r   r   r   r   a  s   "z_Pickler.save_persr   c                C   s6  t |ts	tdt|std| j}| j}	t|dd}
| jdkrw|
dkrw|\}}}t|ds7td	|
|d urG||j
urGtd		|
| jd
kr]|| || || |	t n\t|j|g|R i |}|| |d |	t nB| jdkr|
dkr|d }t|dstd|d ur||j
urtd|dd  }|| || |	t n|| || |	t |d urt|| jv r|	t| | jt| d   n| | |d ur| | |d ur| | |d ur|d u r|| |	t d S || || || |	t |	t |	t d S d S )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   r   
__newobj__r   z+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_EXr   r  REDUCENEWOBJr   r   POPr   r   _batch_appends_batch_setitemsBUILDTUPLE2)r$   funcargsstateZ	listitemsZ	dictitemsZstate_setterr   r   r   Z	func_nameclskwargsr   r   r   r   m  s|   







"



z_Pickler.save_reducec                 C   s   |  t d S r!   )r   NONEr   r   r   r   	save_none  rw   z_Pickler.save_nonec                 C   s<   | j dkr| |rt d S t d S | |rtnt d S )Nr   )r   r   NEWTRUENEWFALSETRUEFALSEr   r   r   r   	save_bool  s   
z_Pickler.save_boolc                 C   s0  | j r?|dkr'|dkr| ttd|  d S |dkr'| ttd|  d S d|  kr1dkr?n n| ttd|  d S | jd	krlt|}t|}|d
k r^| t	td| |  d S | t
td| |  d S d|  krvdkrn n| tt|d d  d S | tt|d d  d S )Nr   r   r     <Hi   i<ir   r   r   r   s   L
)r   r   BININT1r
   BININT2BININTr   r   r   LONG1LONG4INTr   r   LONGr$   r   Zencodedr   r   r   r   	save_long  s,   
  z_Pickler.save_longc                 C   s>   | j r| ttd|  d S | tt|d d  d S )N>dr   r   )r   r   BINFLOATr
   FLOATr   r   r   r   r   r   
save_float  s    z_Pickler.save_floatc                 C   s   | j dk r!|s| jtd|d d S | jtjt|ddf|d d S t|}|dkr6| tt	d| |  n3|dkrK| j dkrK| 
tt	d	| | n|| jjkr]| 
tt	d
| | n| tt	d
| |  | | d S )Nr   r   r  latin1r   r       r   r}   r   )r   r   bytescodecsr   r   r   r   SHORT_BINBYTESr
   r   	BINBYTES8r   r~   BINBYTESr   r$   r   r   r   r   r   
save_bytes  s"   
z_Pickler.save_bytesc                 C   s   | j dk r|s| jtd|d d S | jtt|f|d d S t|}|| jjkr4| tt	d| | n| 
tt	d| |  | | d S )Nr   r   r  r}   )r   r   	bytearrayr/  r   r   r~   r   
BYTEARRAY8r
   r   r   r4  r   r   r   save_bytearray)  s   
z_Pickler.save_bytearrayc                 C   s   | j dk r	td| X}|jstdd}| jd ur#t| |}|r8|jr0| |  n-| 	|  n| 
t |jrM| 
t W d    d S W d    d S W d    d S W d    d S 1 shw   Y  d S )Nr   z0PickleBuffer can only pickled with protocol >= 5zHPickleBuffer can not be pickled when pointing to a non-contiguous bufferT)r   r   raw
contiguousr   boolreadonlyr5  tobytesr8  r   NEXT_BUFFERREADONLY_BUFFER)r$   r   mZin_bandr   r   r   save_picklebuffer9  s,   



"z_Pickler.save_picklebufferc                 C   s  | j rW|dd}t|}|dkr#| jdkr#| ttd| |  n^|dkr8| jdkr8| ttd| | nI|| j	j
krJ| ttd| | n7| ttd| |  n*|d	d
}|dd}|dd}|dd}|dd}| t|d d  | | d S )Nutf-8surrogatepassr   r   r   r.  r}   r   \z\u005c z\u0000
z\u000az\u000dz\u001araw-unicode-escaper   )r   r   r   r   r   SHORT_BINUNICODEr
   r   BINUNICODE8r   r~   
BINUNICODEreplaceUNICODEr   r'  r   r   r   save_strS  s&   z_Pickler.save_strc                 C   s<  |s| j r| t d S | tt  d S t|}| j}| j}|dkr[| jdkr[|D ]}|| q*t	||v rM| 
|t	| d }| t| |  d S | t|  | | d S | j}|t |D ]}|| qdt	||v r| 
|t	| d }| j r|t|  d S |t|d  |  d S |t | | d S )Nr   r   r   r   )r   r   EMPTY_TUPLEMARKTUPLEr   r   r   r   r   r   r  _tuplesize2coder   POP_MARK)r$   r   r   r   r   elementr   r   r   r   r   
save_tuplej  s@   



z_Pickler.save_tuplec                 C   s8   | j r	| t n| tt  | | | | d S r!   )r   r   
EMPTY_LISTrQ  LISTr   r  r   r   r   r   	save_list  s
   
z_Pickler.save_listi  c                 C   s   | j }| j}| js|D ]
}|| |t qd S t|}	 tt|| j}t|}|dkr?|t	 |D ]}|| q3|t
 n|rK||d  |t || jk rRd S qNTr   r   )r   r   r   APPENDiterlistr   
_BATCHSIZEr   rQ  APPENDS)r$   r   r   r   rn   ittmpr   r   r   r   r    s,   



z_Pickler._batch_appendsc                 C   s<   | j r	| t n| tt  | | | |  d S r!   )r   r   
EMPTY_DICTrQ  DICTr   r  r   r   r   r   r   	save_dict  s
   
z_Pickler.save_dictc           	      C   s   | j }| j}| js|D ]\}}|| || |t qd S t|}	 tt|| j}t|}|dkrK|t	 |D ]\}}|| || q9|t
 n|r_|d \}}|| || |t || jk rfd S q#rZ  )r   r   r   SETITEMr\  r]  r   r^  r   rQ  SETITEMS)	r$   r   r   r   kvr`  ra  r   r   r   r   r    s4   



z_Pickler._batch_setitemsc                 C   s   | j }| j}| jdk r| jtt|f|d d S |t | | t|}	 tt	|| j
}t|}|dkrG|t |D ]}|| q<|t || j
k rNd S q&)Nr   r  Tr   )r   r   r   r   setr]  	EMPTY_SETr   r\  r   r^  r   rQ  ADDITEMS)r$   r   r   r   r`  Zbatchr   itemr   r   r   save_set  s&   



z_Pickler.save_setc                 C   s   | j }| j}| jdk r| jtt|f|d d S |t |D ]}|| qt|| jv r>|t	| 
| jt| d   d S |t | | d S )Nr   r  r   )r   r   r   r   	frozensetr]  rQ  r   r   rT  r   	FROZENSETr   )r$   r   r   r   rl  r   r   r   save_frozenset	  s   

 z_Pickler.save_frozensetc              
   C   s<  | j }| j}|d u rt|dd }|d u r|j}t||}zt|dd tj| }t||\}}W n t	t
tfyD   td|||f d w ||urRtd|||f | jdkrt||f}	|	r|	dkro|ttd|	  d S |	d	kr~|ttd
|	  d S |ttd|	  d S |dd }
||u r|
}| jdkr| | | | |t nm||ur| t||
f n`| jdkr|tt|d d t|d d  nH| jrtj}tj}||f|v r|||f \}}n||v r|| }z|tt|d d t|d d  W n ty   td||| jf d w | | d S )Nr   r   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   r   r  r  r  r   r   r   rB  r   r   z?can't pickle global identifier '%s.%s' using pickle protocol %i) r   r   r   r   r   
__import__r   r   r   ImportErrorKeyErrorr   r   r   r   r   EXT1r
   EXT2EXT4
rpartitionr   STACK_GLOBALr   GLOBALr/  r   _compat_pickleZREVERSE_NAME_MAPPINGZREVERSE_IMPORT_MAPPINGr  r   )r$   r   r   r   r   r   r   Zobj2r   codeZlastnameZr_name_mappingZr_import_mappingr   r   r   r      s   









z_Pickler.save_globalc                 C   s`   |t d u r| jt d|dS |t tu r| jt tf|dS |t du r+| jt d|dS | |S )Nr!   r  .).)r   r   r   r   r   r   r   r   	save_typeb  s   
z_Pickler.save_typer!   )T)NNNN)0r   r   r   r%   r   r   r   r   r   r   r   r   r   r   r  r   r  r;  r(  r   r,  floatr5  r/  r8  r6  _HAVE_PICKLE_BUFFERrA  r   rO  r   rV  r   rY  r]  r^  r  rd  dictr&   r  rm  ri  rp  rn  r   r~  r   r   r   r   r   r     sl    9

	Fu1		
B	r   c                   @   s  e Zd ZdddddddZdd	 Zd
d Zdd Zi Zdd Zeee	d < dd Z
e
eed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd  Zeeed < d!d" Zeeed < d#d$ Zeeed < d%d& Zeeed < d'd( Z e ee!d < d)d* Z"e"ee#d < d+d, Z$e$ee%d < d-d. Z&e&ee'd < d/d0 Z(d1d2 Z)e)ee*d < d3d4 Z+e+ee,d < d5d6 Z-e-ee.d < d7d8 Z/e/ee0d < d9d: Z1e1ee2d < d;d< Z3e3ee4d < d=d> Z5e5ee6d < d?d@ Z7e7ee8d < dAdB Z9e9ee:d < dCdD Z;e;ee<d < dEdF Z=e=ee>d < dGdH Z?e?ee@d < dIdJ ZAeAeeBd < dKdL ZCeCeeDd < dMdN ZEeEeeFd < dOdP ZGeGeeHd < dQdR ZIeIeeJd < dSdT ZKeKeeLd < dUdV ZMeMeeNd < dWdX ZOeOeePd < dYdZ ZQeQeeRd < d[d\ ZSeSeeTd < d]d^ ZUeUeeVd < d_d` ZWeWeeXd < dadb ZYdcdd ZZeZee[d < dedf Z\e\ee]d < dgdh Z^e^ee_d < didj Z`e`eead < dkdl Zbebeecd < dmdn Zdedeeed < dodp Zfefeegd < dqdr Zheheeid < dsdt Zjejeekd < dudv Zldwdx Zmdydz Zneneeod < d{d| Zpepeeqd < d}d~ Zrereesd < dd Zteteeud < dd Zveveewd < dd Zxexeeyd < dd Zzezee{d < dd Z|e|ee}d < dd Z~e~eed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dd Zeeed < dS )
_UnpicklerTASCIIstrictNr   encodingerrorsbuffersc                C   sJ   	 |d ur	t |nd | _|j| _|j| _i | _|| _|| _d| _	|| _
d S Nr   )r\  _buffersr   _file_readliner   
_file_readr   r  r  r   r   )r$   r   r   r  r  r  r   r   r   r%   s  s   %
z_Unpickler.__init__c              
   C   s   	 t | dstd| jjf t| j| j| _| jj| _| jj	| _	| jj
| _
g | _g | _| jj| _d| _| j}| j}z	 |d}|sDt||d  |  q< tya } z	|jW  Y d }~S d }~ww )Nr  z4Unpickler.__init__() was not called by %s.__init__()r   Tr   )r   r   r   r   r   r  r  	_unframerr   r   r   	metastackstackappendr   r   EOFErrorr    r"   )r$   r   r   keyZstopinstr   r   r   r     s4   




z_Unpickler.loadc                 C   s    | j }| j | _ | j j| _|S r!   )r  r  popr  r$   r   r   r   r   pop_mark  s   
z_Unpickler.pop_markc                 C   s   t d)Nz%unsupported persistent id encountered)r   r  r   r   r   persistent_load  s   z_Unpickler.persistent_loadc                 C   s:   |  dd }d|  krtksn td| || _d S )Nr   r   zunsupported pickle protocol: %d)r   r   r   r   )r$   r   r   r   r   
load_proto  s   
z_Unpickler.load_protor   c                 C   s8   t d| d\}|tjkrtd| | j| d S )Nr}      zframe size > sys.maxsize: %d)r   r   r   r	   r   r  r   r   r   r   r   r     s   
z_Unpickler.load_framec                 C   sF   z|   d d d}W n ty   tdw | | | d S )Nr   r   r   )r   decodeUnicodeDecodeErrorr   r  r  r  r   r   r   load_persid  s   z_Unpickler.load_persidc                 C   s   | j  }| | | d S r!   )r  r  r  r  r  r   r   r   load_binpersid  s   
z_Unpickler.load_binpersidc                 C   s   |  d  d S r!   r  ru   r   r   r   	load_none  rw   z_Unpickler.load_nonec                 C      |  d d S )NFr  ru   r   r   r   
load_false  rw   z_Unpickler.load_falsec                 C   r  )NTr  ru   r   r   r   	load_true  rw   z_Unpickler.load_truec                 C   sL   |   }|tdd  krd}n|tdd  krd}nt|d}| | d S )Nr   FTr   )r   r  r  r   r  )r$   r   valr   r   r   load_int  s   
z_Unpickler.load_intc                 C      |  td| dd  d S )Nr  r   r   r  r   r   ru   r   r   r   load_binint      z_Unpickler.load_binintc                 C   s   |  | dd  d S Nr   r   )r  r   ru   r   r   r   load_binint1  s   z_Unpickler.load_binint1c                 C   r  )Nr  r   r   r  ru   r   r   r   load_binint2  r  z_Unpickler.load_binint2c                 C   s@   |   d d }|r|d dkr|d d }| t|d d S )Nr   L   r   )r   r  r   )r$   r  r   r   r   	load_long  s   z_Unpickler.load_longc                 C   s*   |  dd }|  |}| t| d S r  )r   r  r   r   r   r   r   
load_long1  s   
z_Unpickler.load_long1c                 C   s>   t d| d\}|dk rtd| |}| t| d S )Nr  r   r   z#LONG pickle has negative byte count)r   r   r   r  r   r   r   r   r   
load_long4  s
   
z_Unpickler.load_long4c                 C   s   |  t|  d d  d S Nr   )r  r  r   ru   r   r   r   
load_float"  r  z_Unpickler.load_floatc                 C   r  )Nr)  r  r   r  ru   r   r   r   load_binfloat&  r  z_Unpickler.load_binfloatc                 C   s   | j dkr|S || j | jS )Nr/  )r  r  r  r#   r   r   r   _decode_string*  s   
z_Unpickler._decode_stringc                 C   sl   |   d d }t|dkr#|d |d kr#|d dv r#|dd }ntd| | t|d  d S )Nr   r   r   s   "'r   z)the STRING opcode argument must be quoted)r   r   r   r  r  r0  escape_decoder   r   r   r   load_string3  s
   (z_Unpickler.load_stringc                 C   s@   t d| d\}|dk rtd| |}| | | d S )Nr  r   r   z(BINSTRING pickle has negative byte count)r   r   r   r  r  r$   r   r   r   r   r   load_binstring=  s
   
z_Unpickler.load_binstringc                 C   :   t d| d\}|tkrtdt | | | d S )Nr   r   z2BINBYTES exceeds system's maximum size of %d bytesr   r   r	   r   r  r$   r   r   r   r   load_binbytesF     z_Unpickler.load_binbytesc                 C   s    |  t|  d d d d S )Nr   rI  )r  r   r   ru   r   r   r   load_unicodeN  s    z_Unpickler.load_unicodec                 C   B   t d| d\}|tkrtdt | t| |dd d S )Nr   r   z4BINUNICODE exceeds system's maximum size of %d bytesrB  rC  r   r   r	   r   r  r   r  r   r   r   load_binunicodeR     z_Unpickler.load_binunicodec                 C   r  )Nr}   r  z5BINUNICODE8 exceeds system's maximum size of %d bytesrB  rC  r  r  r   r   r   load_binunicode8Z  r  z_Unpickler.load_binunicode8c                 C   r  )Nr}   r  z3BINBYTES8 exceeds system's maximum size of %d bytesr  r  r   r   r   load_binbytes8b  r  z_Unpickler.load_binbytes8c                 C   sF   t d| d\}|tkrtdt t|}| | | | d S )Nr}   r  z4BYTEARRAY8 exceeds system's maximum size of %d bytes)r   r   r	   r   r6  r   r  )r$   r   br   r   r   load_bytearray8j  s   
z_Unpickler.load_bytearray8c                 C   sF   | j d u r	tdzt| j }W n ty   tdw | | d S )NzLpickle stream refers to out-of-band data but no *buffers* argument was givenznot enough out-of-band buffers)r  r   nextStopIterationr  )r$   r   r   r   r   load_next_buffert  s   
z_Unpickler.load_next_bufferc                 C   s\   | j d }t|}|js| | j d< W d    d S W d    d S 1 s'w   Y  d S r  )r  
memoryviewr<  
toreadonly)r$   r   r@  r   r   r   load_readonly_buffer  s   

"z_Unpickler.load_readonly_bufferc                 C   s,   |  dd }|  |}| | | d S r  )r   r  r  r  r   r   r   load_short_binstring  s   
z_Unpickler.load_short_binstringc                 C   s"   |  dd }| |  | d S r  )r   r  r  r   r   r   load_short_binbytes  s   z_Unpickler.load_short_binbytesc                 C   s*   |  dd }| t|  |dd d S )Nr   r   rB  rC  )r   r  r   r  r   r   r   load_short_binunicode  s   z _Unpickler.load_short_binunicodec                 C      |   }| t| d S r!   )r  r  r   r  r   r   r   
load_tuple     z_Unpickler.load_tuplec                 C   r  )Nr   r  ru   r   r   r   load_empty_tuple  rw   z_Unpickler.load_empty_tuplec                 C   s   | j d f| j d< d S r  r  ru   r   r   r   load_tuple1  s   z_Unpickler.load_tuple1c                 C   s$   | j d | j d fg| j dd < d S )Nr   r   r  ru   r   r   r   load_tuple2  s   $z_Unpickler.load_tuple2c                 C   s,   | j d | j d | j d fg| j dd < d S )Nr   r   r  ru   r   r   r   load_tuple3  s   ,z_Unpickler.load_tuple3c                 C   s   |  g  d S r!   r  ru   r   r   r   load_empty_list  rw   z_Unpickler.load_empty_listc                 C   s   |  i  d S r!   r  ru   r   r   r   load_empty_dictionary  rw   z _Unpickler.load_empty_dictionaryc                 C   s   |  t  d S r!   )r  ri  ru   r   r   r   load_empty_set  s   z_Unpickler.load_empty_setc                 C   r  r!   )r  r  rn  r  r   r   r   load_frozenset  r  z_Unpickler.load_frozensetc                 C   s   |   }| | d S r!   )r  r  r  r   r   r   	load_list  s   z_Unpickler.load_listc                    s4   |     fddtdt dD }| | d S )Nc                    s   i | ]} |  |d   qS )r   r   )rm   r   r   r   r   
<dictcomp>  s    z(_Unpickler.load_dict.<locals>.<dictcomp>r   r   )r  ranger   r  )r$   dr   r  r   	load_dict  s
   
z_Unpickler.load_dictc              
   C   sv   |st |trt|dr/z|| }W n! ty. } ztd|jt|f t d d }~ww ||}| 	| d S )NZ__getinitargs__zin constructor for %s: %sr   )
r   r   r   r   r   r   r   exc_infor  r  )r$   klassr  r"   errr   r   r   _instantiate  s   

z_Unpickler._instantiatec                 C   sL   |   d d d}|   d d d}| ||}| ||   d S )Nr   r   )r   r  
find_classr  r  r$   r   r   r  r   r   r   	load_inst  s   z_Unpickler.load_instc                 C   s"   |   }|d}| || d S r  )r  r  r  )r$   r  r  r   r   r   load_obj  s   
z_Unpickler.load_objc                 C   s4   | j  }| j  }|j|g|R  }| | d S r!   r  r  r  r  )r$   r  r  r   r   r   r   load_newobj  s   

z_Unpickler.load_newobjc                 C   sD   | j  }| j  }| j  }|j|g|R i |}| | d S r!   r  )r$   r  r  r  r   r   r   r   load_newobj_ex  s
   


z_Unpickler.load_newobj_exc                 C   sF   |   d d d}|   d d d}| ||}| | d S )Nr   rB  )r   r  r  r  r  r   r   r   load_global  s   z_Unpickler.load_globalc                 C   sJ   | j  }| j  }t|tust|turtd| | || d S )NzSTACK_GLOBAL requires str)r  r  r   r   r   r  r  )r$   r   r   r   r   r   load_stack_global  s
   

z_Unpickler.load_stack_globalc                 C   s   |  dd }| | d S r  )r   get_extensionr$   r}  r   r   r   	load_ext1  s   z_Unpickler.load_ext1c                 C       t d| d\}| | d S )Nr  r   r   r   r  r  r   r   r   	load_ext2
     z_Unpickler.load_ext2c                 C   r  )Nr  r   r  r  r   r   r   	load_ext4  r  z_Unpickler.load_ext4c                 C   sp   g }t ||}||ur| | d S t|}|s(|dkr"tdtd| | j| }|t |< | | d S )Nr   zEXT specifies code <= 0zunregistered extension code %d)r   r   r  r   r   r   r  )r$   r}  Znilr   r  r   r   r   r    s   


z_Unpickler.get_extensionc                 C   s   t d|| | jdk r*| jr*||ftjv r tj||f \}}n
|tjv r*tj| }t|dd | jdkr?tt j	| |d S t
t j	| |S )Nzpickle.find_classr   r   rq  r   )r   auditr   r   r|  ZNAME_MAPPINGZIMPORT_MAPPINGrs  r   r   r   )r$   r   r   r   r   r   r  $  s   


z_Unpickler.find_classc                 C   s&   | j }| }|d }|| |d< d S r  r  r  )r$   r  r  r  r   r   r   load_reduce2  s   z_Unpickler.load_reducec                 C   s   | j r	| j d= d S |   d S r  )r  r  ru   r   r   r   load_pop9  s   z_Unpickler.load_popc                 C   s   |    d S r!   )r  ru   r   r   r   load_pop_mark@  s   z_Unpickler.load_pop_markc                 C   s   |  | jd  d S r  )r  r  ru   r   r   r   load_dupD  s   z_Unpickler.load_dupc                 C   sN   t |  d d }z| | j|  W d S  ty&   d| }t|d w )Nr   Memo value not found at index )r   r   r  r   ru  r   )r$   r   msgr   r   r   load_getH  s   

z_Unpickler.load_getc              
   C   sR   |  dd }z| | j|  W d S  ty( } z
d| }t|d d }~ww )Nr   r   r  )r   r  r   ru  r   r$   r   excr  r   r   r   load_bingetQ  s   

z_Unpickler.load_bingetc              
   C   sV   t d| d\}z| | j|  W d S  ty* } z
d| }t|d d }~ww )Nr   r   r  )r   r   r  r   ru  r   r  r   r   r   load_long_bingetZ  s   

z_Unpickler.load_long_bingetc                 C   s8   t |  d d }|dk rtd| jd | j|< d S )Nr   r   znegative PUT argument)r   r   r   r  r   r   r   r   r   load_putc  s   z_Unpickler.load_putc                 C   s2   |  dd }|dk rtd| jd | j|< d S )Nr   r   znegative BINPUT argumentr   )r   r   r  r   r   r   r   r   load_binputj  s   z_Unpickler.load_binputc                 C   s6   t d| d\}|tkrtd| jd | j|< d S )Nr   r   znegative LONG_BINPUT argumentr   )r   r   r	   r   r  r   r   r   r   r   load_long_binputq  s   z_Unpickler.load_long_binputc                 C   s   | j }| jd |t|< d S r  )r   r  r   )r$   r   r   r   r   load_memoizex  s   z_Unpickler.load_memoizec                 C   s$   | j }| }|d }|| d S r  )r  r  r  )r$   r  r"   r]  r   r   r   load_append}  s   z_Unpickler.load_appendc                 C   sX   |   }| jd }z|j}W n	 ty   Y nw || d S |j}|D ]}|| q#d S r  )r  r  extendr   r  )r$   r   Zlist_objr  r  rl  r   r   r   load_appends  s   


z_Unpickler.load_appendsc                 C   s*   | j }| }| }|d }|||< d S r  r  )r$   r  r"   r  r  r   r   r   load_setitem  s
   z_Unpickler.load_setitemc                 C   s@   |   }| jd }tdt|dD ]}||d  ||| < qd S )Nr   r   r   r   )r  r  r  r   )r$   r   r  r   r   r   r   load_setitems  s
   
z_Unpickler.load_setitemsc                 C   sF   |   }| jd }t|tr|| d S |j}|D ]}|| qd S r  )r  r  r   ri  updateadd)r$   r   Zset_objr  rl  r   r   r   load_additems  s   


z_Unpickler.load_additemsc           
      C   s   | j }| }|d }t|dd }|d ur|| d S d }t|tr,t|dkr,|\}}|rN|j}tj}|	 D ]\}}	t
|tu rI|	|||< q8|	||< q8|r_|	 D ]\}}	t|||	 qTd S d S )Nr   __setstate__r   )r  r  r   r   r   r   __dict__r   internr   r   r   setattr)
r$   r  r  instsetstateZ	slotstateZ	inst_dictr  rg  rh  r   r   r   
load_build  s,   
z_Unpickler.load_buildc                 C   s"   | j | j g | _| jj| _d S r!   )r  r  r  ru   r   r   r   	load_mark  s   z_Unpickler.load_markc                 C   s   | j  }t|r!   )r  r  r    r#   r   r   r   	load_stop  s   
z_Unpickler.load_stop)r   r   r   r%   r   r  r  r   r  r   r   r   r  r   r  r   r  r  r  r  r  r  r  r%  r  r"  r  r   r  r!  r  r&  r  r#  r  r$  r  r+  r  r*  r  r  STRINGr  	BINSTRINGr  r3  r  rN  r  rL  r  rK  r  r2  r  r7  r  r>  r  r?  r  SHORT_BINSTRINGr  r1  r  rJ  r  rR  r  rP  r  TUPLE1r  r  r  TUPLE3r  rW  r  rb  r  rj  r  ro  r  rX  r  rc  r  r  INSTr  OBJr  r  r  r	  r  r{  r  rz  r  rv  r  rw  r  rx  r  r  r  r
  r  r  r  rT  r  DUPr  r   r  r   r  r   r  r   r  r   r  r   r  r   r  r[  r	  r_  r
  re  r  rf  r  rk  r  r  r  rQ  r  r   r   r   r   r   r  q  s(   0				r  r   c                C   s   t ||||d|  d S Nr   )r   r   )r   r   r   r   r   r   r   r   _dump  s   r!  c                C   s*   t  }t||||d|  | }|S r   )rs   rt   r   r   getvalue)r   r   r   r   r   resr   r   r   _dumps  s   r$  r  r  r  c                C   s   t | ||||d S )Nr   r  r  r  )r  r   )r   r   r  r  r  r   r   r   _load  s
   r&  c               C   s2   t | tr	tdt| }t|||||d S )Nz%Can't load pickle from unicode stringr%  )r   r   r   rs   rt   r  r   )sr   r  r  r  r   r   r   r   _loads  s   

r(  c                  C   s   dd l } |  S r  )doctestZtestmod)r)  r   r   r   _test  s   r*  r   z$display contents of the pickle files)Zdescriptionpickle_fileZbr*zthe pickle file)r   Znargshelpz-tz--testZ
store_truezrun self-test suite)actionr-  z-vz)run verbosely; only affects self-test runr!   )typesr   copyregr   r   r   r   	itertoolsr   	functoolsr   r   r	   Zstructr
   r   rk   rs   r0  r|  __all__Z_pickler   r  r  rt  r/  r6  Zbytes_typesZformat_versionZcompatible_formatsr   r   	Exceptionr   r   r   r    Zorg.python.corer&   rQ  r   r  rT  r  r+  r%  r"  r   r&  r!  r  r   r   r
  r  r  r  rN  rL  r[  r  r{  rc  rb  r_  r   r   r  r   rX  rW  r  r   r   r   re  rR  rP  rf  r*  r  r  r   r  rv  rw  rx  r  r  r  r  r  r#  r$  rS  r3  r1  rJ  rK  r2  rj  rk  ro  r	  rz  r   r   r7  r>  r?  r  dirrp   r   r   r   r   r   r   r  r!  r$  r&  r(  r   r   r   r   r   r   r*  r   ZargparseZArgumentParserZparserZadd_argumentZFileTypeZ
parse_argsr  testr+  Z
print_helpZpprintr   r   r   r   r   r   <module>   sN   
?;     _    i	0




