
    Yf
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dS )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    rXt          d| |          \  }|dz  }	 t          | |||z                      }n# t          $ r | |||z            }Y nw xY w||z  }n~|dk    r9t          d| |          \  }|dz  }t          | |||z                      }||z  }n?|dk    r,t          d| |          \  }|dz  }| |||z            }||z  }n|dk    rt          d| |          \  }|dz  }n|d	k    rt          d
| |          \  }|dz  }n|dk    rt          d| |          \  }|dz  }n|dk    rt          d| |          \  }|dz  }n|dk    rt          d| |          \  }|dz  }nm|dk    rt          d| |          \  }|dz  }nM|dk    rt          d| |          \  }|dz  }n-|dk    rt          d| |          \  }|dz  }n|dk    rt          d| |          \  }|dz  }n|dk    rt          d| |          \  }|dz  }n|dk    rTt          d| |          \  }|dz  }t          d| |          \  }|dz  }t	          |          t	          d|z            z  }ns|dk    ryt          d| |          \  }|dz  }||z   }	i }||	k     rSt          d| |          \  }
|dz  }t          | |||
z                      }||
z  }t          | |          \  ||<   }||	k     Sn|dk    rTt          d| |          \  }|dz  }||z   }	g }||	k     r.t          | |          \  }}|                    |           ||	k     .n|d k    r(t          d| |          \  }t          |          }|dz  }nl|d!k    r-t          d| |          \  }|dz  }t          j	        |          }n9|d"k    rd }n0t          d#                    |t          |                              ||fS )$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                 D/var/www/html/env/lib/python3.11/site-packages/amqp/serialization.pyr-   r-       s   FE
aKF ||D#v..!	,VFTM1233CC! 	, 	, 	,fVd]*+CCC	, 	$	#D#v..!S-.//$	#D#v..!&$&'$	#4f--!	#4f--!	#4f--!	#4f--!	#4f--!	#4f--!	#4f--!	#4f--!	#4f--!	#4f--!	#sF++!sF++!ajj727+++	#D#v..!unn!$V44GFaKFVFVO3455CfF)#v66CHf unn 
#D#v..!unn"3//IAvJJqMMM unn 
#4f--3ii!	#4f--!',,	#188tE{{$ $% % 	% ;s   A A/.A/c                 T   dx}}g }|j         }t          |           } | D ]}|dk    r8|s!t          |||dz                      }|dz  }d}|dz  dk    }|dz  }|dz  }n|dk    rdx}}t          d||          \  }|dz  }n|dk    rdx}}t          d||          \  }|d	z  }nq|d
k    rdx}}t          d||          \  }|dz  }nM|dk    rdx}}t          d||          \  }|dz  }n)|dk    rdx}}t          d||          \  }|dz  }n|dk    rDdx}}t          d||          \  }	|dz  }||||	z                                dd          }||	z  }n|dk    rDdx}}t          d||          \  }	|dz  }||||	z                                dd          }||	z  }nq|dk    r,t          d||          \  }
|dz  }||||
z            }||
z  }n?|dk    r}dx}}t          d||          \  }|dz  }||z   }i }||k     rSt          d||          \  }|dz  }t          ||||z                      }||z  }t          ||          \  ||<   }||k     Sn|dk    rXdx}}t          d||          \  }|dz  }||z   }g }||k     r.t          ||          \  }}|                     |           ||k     .n^|dk    r1dx}}t          d||          \  }|dz  }t          j        |          }n't          t          
                    |                     ||           ||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 J J88 3vfqj0122!!8/CQJDMHH#XXHttS&11DCaKFF#XXHttS&11DCaKFF#XXHttS&11DCaKFF#XXHttS&11DCaKFF#XXHttS&11DCaKFF#XXHtS&11EDaKFfVd]*+227OLLCdNFF#XXHtc622EDaKFfVd]*+227OLLCdNFF#XXc622EDaKFfVd]*+CdNFF#XXHtc622EDaKFTMEC5..%dC88!S!7899& #-c6#:#: C& 5.. #XXHtc622EDaKFTMEC5..)#v66f

4    5.. #XXHttS&11DCaKF+C00CC"#5#<#<Q#?#?@@@s6>    c                 d    | r- |t          dt          |           z  g| R             g | d d <   dS )Nr   r   )r   len)rI   writes     r@   
_flushbitsrR      sF     d3T?*T***+++QQQ1rN   c                    d}g }t                      }|j        }t          |           } t          |          D ]\  }}| |         }|dk    r?|rdnd}|dz  }	|	dk    r|                    d           |dxx         ||	z  z  cc<   |dz  }S|dk    r*t          ||          } |t          d|                     |dk    r7t          ||          } |t          dt          |                               |d	k    r*t          ||          } |t          d
|                     |dk    r+t          ||          } |t          d|                     !|dk    r+t          ||          } |t          d|                     R|dk    rr|pd}t          ||          }t          |t                    r|
                    dd          } |t          dt          |                                ||           |dk    s|dk    rr|pd}t          ||          }t          |t                    r|
                    dd          } |t          d
t          |                                ||           H|dk    r%t          ||          }t          |pi ||           s|dk    r%t          ||          }t          |pg ||           |dk    rJ |t          dt          t          j        |                                                                         t          ||           |                                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IEF^^FF## -H -H31I88/!!CqLEzzAHHH&HHHMHH#XX!$..HE$sC..!!!!#XX!$..HE$tSXX&&''''#XX!$..HE$tS//""""#XX!$..HE$tS//""""#XX!$..HE$tS//""""#XX)C!$..H#s## ;jj/::E$sCHH%%&&&E#JJJJ#XXc)C!$..H#s## ;jj/::E$tSXX&&'''E#JJJJ#XX!$..HE40000#XX!$..HE40000#XXE$tS1A1A1C1C!D!DEEFFGGGtU<<>>rN   c           	      R   t                      }|j        }|                                 D ]\  }}t          |t                    r|                    dd          } |t          dt          |                                ||           	 t          |||           t# t          $ r7 t          t                              t          |          ||                    w xY w|                                } |t          dt          |                                ||           d S )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  s0   
))CYF		 	C 	C1a 	3/22AtCQ  !!!q				C64(((( 	C 	C 	C"+22477AqAAC C C	C J	E$tS__
%
%&&&	E*s   BACc           	      n   t                      }|j        }| D ]W}	 t          |||           # t          $ r6 t	          t
                              t          |          |                    w xY w|                                } |t          dt          |                                ||           d S )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YF B B	B64(((( 	B 	B 	B"-44T!WWa@@B B B	B J	E$tS__
%
%&&&	E*s
   -A A-c                    t          | t          t          f          r_t          | t                    r|                     dd          }  |t	          ddt          |                                 ||            d S t          | t                    r) |t	          ddt          |                                d S t          | t                    r |t	          dd|                      d S t          | t                    rD| d	k    s| d
k     r |t	          dd|                      d S  |t	          dd|                      d S t          | t                    rJ| 
                                \  }}}d} |D ]
}| dz  |z   } |r|  }  |t	          dd| |                      d S t          | t                    rM |t	          ddt          t          j        |                                                                          d S t          | t                    r |d           t!          | ||           d S t          | t"          t$          f          r |d           t'          | ||           d S |  |d           d S 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 	3/22Ad5$A''(((a	At		 d5$A''(((((	Au		 d5$""#####	As		 z>>Q__E$udA&&'''''E$udA&&'''''	Aw		 !"fh 	 	AR1AA 	Ad64(A../////	Ax	 	  c(/!..2B2B"C"CDDEE	G 	G 	G 	G 	G	At		 	dQt$$$$$	Ae}	%	% dQt$$$$$	
dll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     s   JsF++FE
aKFv~ D#v..!%+Cv}0D,E%F%F
>"$v~ D#v..!)/F6D=4H0I)J)J
%&$v~ 03V,,
F-/*
()v~ '24f'E'E$
?#!v~ "-dC"@"@
:!v~ D#v..!'-c&$2F.G'H'H
#$$v~ D#v..!!'F6D=,@(A!B!B
:$v~ D#v..!#)#fVd].B*C#D#D
< $v~ D#v..!#)#fVd].B*C#D#D
< $v~ #.tS&#A#A 
;!v~ D#v..!#Cv}(<$=>>
6$v~ D#v..! &s6&4-+?'@ A A
9$v~ D#v..!%c&$*>&?@@
8$v~ D#v..!#)#fVd].B*C#D#D
< $vrN   c                   H    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dS )GenericContentzdAbstract base class for AMQP content.

    Subclasses should override the PROPERTIES attribute.
    N)dummyr   c                 h    || _         || _        || _        g | _        d| _        d| _        d| _        d S )Nr   F)frame_method
frame_argsr   _pending_chunksbody_received	body_sizeready)selfr   r   propss       r@   __init__zGenericContent.__init__  s:    ($!


rN   )	r   r   r   r   r   r   r   __dict____weakref__c                 v    |dk    rt          d          || j        v r| j        |         S t          |          )N__setstate__)AttributeErrorr   )r   names     r@   __getattr__zGenericContent.__getattr__  sE     >!! 0004?""?4((T"""rN   c                 F    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                 P   d}d}g }g g }}| j         }| j        D ]\  }}|                    |d          }	|	d|dk    r|                    |           d}d}|d|z  z  }|dk    r7|                    t	          |                     |                    |	           |dz  }|                    |           t                      }
|
j        }|D ]} |t          d|                      |t          d	                    |          |                     |

                                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  sI    	r!_ 	 	MC))C&&CA::LL+++ !IEa5j)	u$$NN<#9#9:::NN3'''QJEEY 	) 	)IE$tY''((((eCHHW%%w//000   rN   r   c                     t          d||          \  }| _        |dz  }|                     |||           | j        sd| _        |S )Nz>HxxQ   T)r   r   r   r   )r   r3   r4   r   s       r@   inbound_headerzGenericContent.inbound_header2  sQ    #.wV#D#D $."hV444~ 	DJrN   c                 B   | j         }| xj        t          |          z  c_        | j        | j        k    rU|rC|                    |           t                                          |          | _        g |d d <   n|| _        d| _        d S |                    |           d S )NT)	r   r   rP   r   r.   r|   r   bodyr   )r   r3   chunkss      r@   inbound_bodyzGenericContent.inbound_body:  s    %c#hh&//  c"""!GGLL00	qqq			DJJJ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 o od` ` `F  F F FR  $  # # #LE E ER 
N+ 
n n n n n n n n n nrN   