
    yf                     D   S SK Jr  SSK7  SSKJr  SSKJr  SSKJr	  SSKJ
r  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  \r " S S\5      r " S S\5      r " S S\5      rSSS.S jrSSS.S jr " S S\5      r
SSSS.S jrSSSS.S jrS rS  rS! rS" rS# rg)$   )
StableDict   )*    )Packer)packb)pack)Unpacker)unpackb)unpack)version)ExtType)	OutOfDatac                       \ rS rSrSrSrg)PackException#   zException while msgpack packing N__name__
__module____qualname____firstlineno____doc____static_attributes__r       6/usr/lib/python3/dist-packages/borg/helpers/msgpack.pyr   r   #   s    )r   r   c                       \ rS rSrSrSrg)UnpackException'   z!Exception while msgpack unpackingr   Nr   r   r   r   r   r   '   s    +r   r   c                   F   ^  \ rS rSrSSSSSSS.U 4S jjrU 4S jrSrU =r$ )	r   +   NFTdefaultunicode_errorsuse_single_float	autoresetuse_bin_typestrict_typesc          	      0   > Ub   e[         TU ]  XX4UUS9  g )Nr"   )super__init__)selfr#   r$   r%   r&   r'   r(   	__class__s          r   r+   Packer.__init__,   s.     %%%*:^j&2 	 	4r   c                 ^   >  [         TU ]  U5      $ ! [         a  n[        U5      eS nAff = fN)r*   r	   	Exceptionr   )r,   objer-   s      r   r	   Packer.pack4   s2    	#7<$$ 	#""	#s    
,',r   )r   r   r   r   r+   r	   r   __classcell__r-   s   @r   r   r   +   s&    "&t"'4e#4 4# #r   r   FNr'   r$   c                d    Ub   e [        U 4XS.UD6$ ! [         a  n[        U5      eS nAff = fNr7   )mp_packbr1   r   )or'   r$   kwargsr3   s        r   r   r   ;   sD    !!!^^W]^^ A    
/*/c                d    Ub   e [        X4X#S.UD6$ ! [         a  n[        U5      eS nAff = fr9   )mp_packr1   r   )r;   streamr'   r$   r<   r3   s         r   r	   r	   C   sD    !!!qe|e^dee Ar=   c                   b   ^  \ rS rSrSSSSSSSSS\SS.
U 4S jjjrU 4S jrU 4S	 jr\rS
r	U =r
$ )r
   K   Nr   TF)
	read_sizeuse_listrawobject_hookobject_pairs_hook	list_hookr$   max_buffer_sizeext_hookstrict_map_keyc       
         \   > USL d   eUb   e[        XX4XVUXU
US9n[        TU ]  " S0 UD6  g )NT)	file_likerC   rD   rE   rF   rG   rH   r$   rI   rJ   rK   r   )dictr*   r+   )r,   rM   rC   rD   rE   rF   rG   rH   r$   rI   rJ   rK   kwr-   s                r   r+   Unpacker.__init__L   sL    
 d{{%%%IX)Zc!/#!/	1
 	2r   c                 p   >  [         TU ]  5       $ ! [         a    e [         a  n[	        U5      eS nAff = fr0   )r*   r   r   r1   r   r,   r3   r-   s     r   r   Unpacker.unpackZ   s;    	%7>## 	 	%!!$$	%    505c                 p   >  [         TU ]  5       $ ! [         a    e [         a  n[	        U5      eS nAff = fr0   )r*   __next__StopIterationr1   r   rR   s     r   rV   Unpacker.__next__b   s<    	%7#%% 	 	%!!$$	%rT   r   r0   )r   r   r   r   r   r+   r   rV   nextr   r5   r6   s   @r   r
   r
   K   s;    A$!TT $a! %	 %% Dr   r
   TrE   r$   rK   c                    Ub   e [        XUS9nUR                  U5        [        U 40 UD6$ ! [         a  n[	        U5      eS nAff = fNrZ   )rN   update
mp_unpackbr1   r   )packedrE   r$   rK   r<   rO   r3   s          r   r   r   m   sV    !!!!cX
		&&'B'' !a  !   &. 
AAAc                    Ub   e [        XUS9nUR                  U5        [        U 40 UD6$ ! [         a  n[	        U5      eS nAff = fr\   )rN   r]   	mp_unpackr1   r   )r@   rE   r$   rK   r<   rO   r3   s          r   r   r   w   sV    !!!!cX
		&&2&& !a  !r`   c                  V    SS K n SS Kn U R                  U R                  R                  L $ )Nr   )msgpackmsgpack.fallbackr   fallbackrd   s    r   is_slow_msgpackrh      s#    >>W--4444r   c                  t    SS K n SU R                  s=:*  =(       a    S:*  Os  =(       a    U R                  S;  $ )Nr   )r   r      )r   r   r   r   )rd   r   rg   s    r   is_supported_msgpackrk      s/    4494 %??"$%r   c                     [        SS[        [        [        5      -  S9nU S;   a  O/U S;   a  UR	                  [        S[
        S95        O[        S5      e[        S	0 UD6$ )
zWreturn a limited Unpacker because we should not trust msgpack data received from remoteFrj   )rD   rI   )serverclient)manifestarchivekeyT)rD   rF   z?kind must be "server", "client", "manifest", "archive" or "key"r   )rN   maxBUFSIZEMAX_OBJECT_SIZEr]   r   
ValueErrorr
   )kindargss     r   get_limited_unpackerrx      s^     C4Q0QRD##	/	/D$J?@Z[[dr   c                 Z    [        U [        5      (       a  [        R                  U SSS9$ U $ )zConvert bytearray to int
    littleTsigned)
isinstancebytesint
from_bytes)mtimes    r   bigint_to_intr      s+     %~~eXd~;;Lr   c                 x    U R                  5       S:  a%  U R                  U R                  5       S-   S-  SSS9$ U $ )zSConvert integers larger than 64 bits to bytearray

Smaller integers are left alone
?   	      rz   Tr{   )
bit_lengthto_bytes)values    r   int_to_bigintr      sB    
 B~~u//1A5!;Xd~SSLr   )
datastructr   	constantsrd   r   	mp_Packerr   r:   r	   r?   r
   mp_Unpackerr   r^   r   rb   r   
mp_versionr   r   r1   r   r   rh   rk   rx   r   r   r   r   r   <module>r      s    " $ ( % # + ) ' )   *I *,i ,#Y #  #4  %*$ { D  U ! tE !5%r   