
    辙h
C                         d Z ddlZddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
mZ dd	lmZ dd
lmZ ddlmZ dZdZdZd Zd Zd Zd Zd Zd Zd Zd Zej:                  eiZ G d d      Zy)zeConvert between bytestreams and higher-level AMQP types.

2007-11-05 Barry Pederson <bp@barryp.org>

    N)datetime)Decimal)BytesIO)packunpack_from   )FrameSyntaxError)Basic)bytes_to_str)str_to_bytesz*    Table type {0!r} not handled by amqp.
zCTable type {0!r} for key {1!r} not handled by amqp. [value: {2!r}]
z9    Table type {0!r} not handled by amqp. [value: {1!r}]
c                    t        | |         }|dz  }|dk(  r/t        d| |      \  }|dz  }	 t        | |||z          }||z  }||fS |dk(  r.t        d| |      \  }|dz  }t        | |||z          }||z  }||fS |dk(  r%t        d| |      \  }|dz  }| |||z    }||z  }||fS |dk(  rt        d| |      \  }|dz  }||fS |d	k(  rt        d
| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rt        d| |      \  }|dz  }||fS |dk(  rFt        d| |      \  }|dz  }t        d| |      \  }|dz  }t	        |      t	        d|z        z  }||fS |dk(  rft        d| |      \  }|dz  }||z   }	i }||	k  rBt        d| |      \  }
|dz  }t        | |||
z          }||
z  }t        | |      \  ||<   }||	k  rB||fS |dk(  rJt        d| |      \  }|dz  }||z   }	g }||	k  r&t        | |      \  }}|j                  |       ||	k  r&||fS |d k(  r#t        d| |      \  }t        |      }|dz  }||fS |d!k(  r-t        d| |      \  }|dz  }t        j                  |      }||fS |d"k(  rd }||fS t        d#j                  |t        |                  # t        $ r | |||z    }Y *w xY w)$Nr   S>I   s>BxbBz>bUz>h   u>HIz>iiLz>q   l>Qf>fdz>dD
   FAtTVz#Unknown value in table: {!r} ({!r}))chrr   pstr_tUnicodeDecodeErrorr   
_read_itemappendboolr   utcfromtimestampr	   formattype)bufoffsetftypeslenvalblenr"   ntlenlimitkeylenkeyalenvs                 N/var/www/Befach/backend/env/lib/python3.12/site-packages/amqp/serialization.pyr-   r-       s   FE
aKF |D#v.!	,VFTM23C 	$D ;A 
#D#v.!S./$x ;u 
#D#v.!&$'$l ;i 
#4f-!d ;a 
#4f-!\ ;Y 
#4f-!T ;Q 
#4f-!L ;I 
#4f-!D ;A 
#4f-!| ;y 
#4f-!t ;q 
#4f-!l ;i 
#4f-!d ;a 
#4f-!\ ;Y 
#sF+!sF+!aj727++N ;K 
#D#v.!un!$V4GFaKFVFVO45CfF)#v6CHf un@ ;3 
#D#v.!un"3/IAvJJqM un( ;! 
#4f-3i! ; 
#4f-!'', ; 
#
 ; 188tE{$% 	%E " 	,fVd]+C	,s   M M*)M*c                 \   dx}}g }|j                   }t        |       } | D ]  }|dk(  r.|st        |||dz          }|dz  }d}|dz  dk(  }|dz  }|dz  }nH|dk(  rdx}}t        d||      \  }|dz  }n)|dk(  rdx}}t        d||      \  }|d	z  }n
|d
k(  rdx}}t        d||      \  }|dz  }n|dk(  rdx}}t        d||      \  }|dz  }n|dk(  rdx}}t        d||      \  }|dz  }n|dk(  r7dx}}t        d||      \  }	|dz  }||||	z    j	                  dd      }||	z  }nq|dk(  r7dx}}t        d||      \  }	|dz  }||||	z    j	                  dd      }||	z  }n5|dk(  r#t        d||      \  }
|dz  }||||
z    }||
z  }n|dk(  rgdx}}t        d||      \  }|dz  }||z   }i }||k  rt        d||      \  }|dz  }t        ||||z          }||z  }t        ||      \  ||<   }||k  rBn|dk(  rKdx}}t        d||      \  }|dz  }||z   }g }||k  rxt        ||      \  }}|j                  |       ||k  r&nQ|dk(  r.dx}}t        d||      \  }|dz  }t        j                  |      }nt        t        j                  |             ||        ||fS )zDeserialize amqp format.

    bit = b
    octet = o
    short = B
    long = l
    long long = L
    float = f
    shortstr = s
    longstr = S
    table = F
    array = A
    timestamp = T
    r   r   r   r   or   r   r   r   r   r   r   r   r   r    r!   r   utf-8surrogatepassr   r   r%   r&   r(   )r.   r+   ordr   decoder-   r   r0   r	   ILLEGAL_TABLE_TYPEr1   )r1   r3   r4   bitcountbitsvaluesr.   pr7   r6   r8   r:   r;   r<   r=   r>   avals                    r@   loadsrM      s    HtF]]FF^F83vfqj12!!8/CQJDMH#XHttS&1DCaKF#XHttS&1DCaKF#XHttS&1DCaKF#XHttS&1DCaKF#XHttS&1DCaKF#XHtS&1EDaKFfVd]+227OLCdNF#XHtc62EDaKFfVd]+227OLCdNF#Xc62EDaKFfVd]+CdNF#XHtc62EDaKFTMEC5.%dC8!S89& #-c6#: C& 5. #XHtc62EDaKFTMEC5.)#v6f

4  5. #XHttS&1DCaKF++C0C"#5#<#<Q#?@@sU V 6>    c                 N    | r# |t        dt        |       z  g|         g | d d  y)Nr   r   )r   len)rI   writes     r@   
_flushbitsrR      s+    d3T?*T*+QrN   c                 D   d}g }t               }|j                  }t        |       } t        |      D ]Q  \  }}| |   }|dk(  r7|rdnd}|dz  }	|	dk(  r|j	                  d       |dxx   ||	z  z  cc<   |dz  }H|dk(  rt        ||      } |t        d|             l|dk(  r(t        ||      } |t        dt        |                   |d	k(  rt        ||      } |t        d
|             |dk(  rt        ||      } |t        d|             |dk(  r t        ||      } |t        d|             |dk(  rY|xs d}t        ||      }t        |t              r|j                  dd      } |t        dt        |                    ||       d|dk(  s|dk(  rY|xs d}t        ||      }t        |t              r|j                  dd      } |t        d
t        |                    ||       |dk(  rt        ||      }t        |xs i ||       |dk(  rt        ||      }t        |xs g ||       |dk(  s |t        dt        t        j                  |j!                                                  T t        ||       |j#                         S )zSerialize AMQP arguments.

    Notes:
        bit = b
        octet = o
        short = B
        long = l
        long long = L
        shortstr = s
        longstr = S
        byte array = x
        table = F
        array = A
    r   r   r   r   rB   r   r   r   r   r   r   r    r!   r    rC   rD   r   r   r%   r&   r(   )r   rQ   r+   	enumerater.   rR   r   int
isinstancestrencoderP   _write_table_write_arraycalendartimegmutctimetuplegetvalue)
r1   rJ   rH   rI   outrQ   r   r7   rK   shifts
             r@   dumpsrc      sf    HD
)CIIEF^FF#31I8!CqLEzAH&HMH#X!$.H$sC.!#X!$.H$tSX&'#X!$.H$tS/"#X!$.H$tS/"#X!$.H$tS/"#X)C!$.H#s#jj/:$sCH%&#J#Xc)C!$.H#s#jj/:$tSX&'#J#X!$.HE40#X!$.HE40#X$tS1A1A1C!DEFG[ $\ tU<<>rN   c           	         t               }|j                  }| j                         D ]X  \  }}t        |t              r|j                  dd      } |t        dt        |                    ||       	 t        |||       Z |j                         } |t        dt        |                    ||       y # t        $ r* t        t        j                  t        |      ||            w xY w)NrC   rD   r   r   )r   rQ   itemsrX   rY   rZ   r   rP   _write_item
ValueErrorr	   ILLEGAL_TABLE_TYPE_WITH_KEYr1   r2   r`   )r"   rQ   rI   ra   twritekr?   
table_datas           r@   r[   r[   E  s    
)CYYF	1a/2AtCQ !q		C64(  J	$tS_
%&	*  	C"+2247AqAC C	Cs   3B663C)c           	      *   t               }|j                  }| D ]  }	 t        |||        |j                         } |t        dt        |                    ||       y # t        $ r) t	        t
        j                  t        |      |            w xY w)Nr   )r   rQ   rf   rg   r	   ILLEGAL_TABLE_TYPE_WITH_VALUEr1   r2   r`   r   rP   )list_rQ   rI   ra   awriter?   
array_datas          r@   r\   r\   W  s    
)CYYF	B64(  J	$tS_
%&	*  	B"-44T!Wa@B B	Bs   A  2Bc                    t        | t        t        f      rGt        | t              r| j                  dd      }  |t	        ddt        |                     ||        y t        | t              r |t	        ddt        |                    y t        | t              r |t	        dd|              y t        | t              r2| d	kD  s| d
k  r |t	        dd|              y  |t	        dd|              y t        | t              r@| j                         \  }}}d} |D ]
  }| dz  |z   }  |r|  }  |t	        dd| |              y t        | t              r> |t	        ddt        t        j                  | j                                                  y t        | t              r |d       t!        | ||       y t        | t"        t$        f      r |d       t'        | ||       y | 	 |d       y t)               )NrC   rD   z>cI   Sz>cB   tz>cd   dii  z>cq   Lz>ci   Ir   r$   z>cBi   Dz>cQ   T   F   A   V)rX   rY   bytesrZ   r   rP   r/   rW   floatr   as_tupler   r]   r^   r_   dictr[   listtupler\   rg   )r?   rQ   rI   signdigitsexponentr"   s          r@   rf   rf   e  s   !c5\"a/2Ad5$A'(a	At	d5$A'(	Au	d5$"#	As	z>Q_$udA&'$udA&'	Aw	!"fhAR1A Ad64(A./	Ax	 c(//!..2B"CDE	G	At	dQt$	Ae}	%dQt$	
dlrN   c                    i }t        d| |      \  }|dz  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|d	z  rt        d
| |      \  }}|\  |d<   |dz  rt        d| |      \  |d<   |dz  }|dz  rt        d| |      \  |d<   |dz  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  rt        d| |      \  |d<   |dz  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d<   ||z  }|dz  r-t        d| |      \  }|dz  }t        | |||z          |d <   ||z  }|d!z  r-t        d| |      \  }|dz  }t        | |||z          |d"<   ||z  }||fS )#zDecode basic properties.r   r   i   r   r   content_typei @  content_encodingi    r%   application_headersi   delivery_modei   priorityi   correlation_idi   reply_to   
expiration   
message_id@   r   	timestampr       r2      user_idapp_idr   
cluster_id)r   r+   rM   )r3   r4   
propertiesflagsr6   _fs         r@   decode_properties_basicr     sd   JsF+FE
aKFv~D#v.!%+Cv},E%F
>"$v~D#v.!)/F6D=0I)J
%&$v~3V,
F-/*
()v~'24f'E$
?#!v~"-dC"@
:!v~D#v.!'-c&$.G'H
#$$v~D#v.!!'F6D=(A!B
:$v~D#v.!#)#fVd]*C#D
< $v~D#v.!#)#fVd]*C#D
< $v~#.tS&#A 
;!v~D#v.!#Cv}$=>
6$v~D#v.! &s6&4-'@ A
9$v~D#v.!%c&$&?@
8$v~D#v.!#)#fVd]*C#D
< $vrN   c                   F    e Zd ZdZdZdgZddZdZd Zd Z	d Z
dd	Zd
 Zy)GenericContentzdAbstract base class for AMQP content.

    Subclasses should override the PROPERTIES attribute.
    N)dummyr   c                 f    || _         || _        || _        g | _        d| _        d| _        d| _        y )Nr   F)frame_method
frame_argsr   _pending_chunksbody_received	body_sizeready)selfr   r   propss       r@   __init__zGenericContent.__init__  s6    ($!
rN   )	r   r   r   r   r   r   r   __dict____weakref__c                 r    |dk(  rt        d      || j                  v r| j                  |   S t        |      )N__setstate__)AttributeErrorr   )r   names     r@   __getattr__zGenericContent.__getattr__  s=     >! 004??"??4((T""rN   c                 8    t        |   ||      \  }}|| _        |S )zLoad AMQP properties.

        Given the raw bytes containing the property-flags and property-list
        from a content-frame-header, parse and insert into a dictionary
        stored in this object as an attribute named 'properties'.
        )PROPERTY_CLASSESr   )r   class_idr3   r4   r   s        r@   _load_propertieszGenericContent._load_properties  s%     )23?vrN   c                    d}d}g }g g }}| j                   }| j                  D ]p  \  }}|j                  |d      }	|	R|dk(  r|j                  |       d}d}|d|z  z  }|dk7  r+|j                  t	        |             |j                  |	       |dz  }r |j                  |       t               }
|
j                  }|D ]  } |t        d|               |t        dj                  |      |             |
j                         S )zSerialize AMQP properties.

        Serialize the 'properties' attribute (a dictionary) into
        the raw bytes making up a set of property flags and a
        property list, suitable for putting into a content frame header.
           r   Nr   bitr   rN   )r   
PROPERTIESgetr.   r   r   rQ   r   rc   joinr`   )r   rb   	flag_bitsr   sformatsvaluesr   r=   proptyper7   resultrQ   s               r@   _serialize_propertiesz$GenericContent._serialize_properties  s    	r!__MC))C&CA:LL+ !IEa5j)	u$NN<#9:NN3'QJE - 	YI$tY'( eCHHW%w/0  rN   c                     t        d||      \  }| _        |dz  }| j                  |||       | j                  sd| _        |S )Nz>HxxQ   T)r   r   r   r   )r   r3   r4   r   s       r@   inbound_headerzGenericContent.inbound_header2  sE    #.wV#D $."hV4~~DJrN   c                 F   | j                   }| xj                  t        |      z  c_        | j                  | j                  k\  rM|r<|j	                  |       t               j                  |      | _        g |d d  d| _        y || _        d| _        y |j	                  |       y )NT)	r   r   rP   r   r.   r|   r   bodyr   )r   r3   chunkss      r@   inbound_bodyzGenericContent.inbound_body:  s    %%c#h&/c"!GLL0	q	 DJ  	DJMM#rN   )NN)r   )__name__
__module____qualname____doc__CLASS_IDr   r   	__slots__r   r   r   r   r    rN   r@   r   r     s<    
 H !J
I	#
!!FrN   r   ) r   r]   r   decimalr   ior   structr   r   
exceptionsr	   specr
   utilsr   r+   r   rG   rh   rm   r-   rM   rR   rc   r[   r\   rf   r   r   r   r   r   rN   r@   <module>r      s        $ (  )   ! 
od`FFR$#LER 
NN+ 
n nrN   