
    ChE)                         S SK r S SKrS SKJr  S SKJr  S SKJrJrJ	r	J
r
Jr  S SKJr  S SKJrJrJrJrJrJrJrJr  S SKJr  SS	KJr  SS
KJrJrJrJrJ r J!r!   " S S\5      r" " S S\#5      r$ " S S5      r%g)    N)crc32)Iterable)LiteralOptionalUnioncastoverload)Self)gzip_decodehas_gziphas_lz4
has_snappyhas_zstd
lz4_decodesnappy_decodezstd_decode)UnsupportedCodecError   )Struct)BytesInt8Int32Int64SchemaUInt32c                   2   \ rS rSrS\4S\4S\44rS\4S\44rS\	4S\4S\44r
\" / \Q\Q76 \" / \Q\
Q76 /r\S   rS	rSrS
rSrSrSrSr\S\\   S\\   S\S   S\S\SS4S j5       r\S\\   S\\   S\S   S\S\S\SS4S j5       rSS.S\\   S\\   S\S   S\S\S\\   SS4S jjr\S\\S      4S j5       rS"S\S\4S jjr\S\ \!RD                  \4   S\#4S j5       r$S\4S jr%S\4S jr&S\'\ \(\\S 4   \(S   4      4S jr)S\4S  jr*S!r+g)#Message   crcmagic
attributeskeyvalue	timestampr                     r   returnNc                    g N )selfr#   r"   r    r!   r   s         ^C:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\aiokafka/protocol/message.py__init__Message.__init__?   s         c                    g r-   r.   r/   r#   r"   r    r!   r   r$   s          r0   r1   r2   J   s     r3   )r$   )r   r   c                J   Ub  [        U[        5      (       d   S5       eUb  [        U[        5      (       d   S5       eUS:  d
  Ub   S5       eUS:  a$  Uc!  [        [        R                  " 5       S-  5      nX`l        XPl        S U l        X0l        X@l        X l	        Xl
        g )Nzvalue must be byteszkey must be bytesr   ztimestamp not supported in v0i  )
isinstancebytesinttimer$   r   _validated_crcr    r!   r"   r#   r5   s          r0   r1   r2   V   s     }
5% 8 8O:OO8{je44I6II4qyI-N/NN- 19*DIIK$./I"-1
$
r3   c                 d    U R                   S:X  a  gU R                  U R                  -  (       a  gg)z0 for CreateTime; 1 for LogAppendTime; None if unsupported.

Value is determined by broker; produced messages should always set to 0
Requires Kafka >= 0.10 / message version >= 1
r   Nr   )r    r!   TIMESTAMP_TYPE_MASKr/   s    r0   timestamp_typeMessage.timestamp_typeo   s*     ::?__t777r3   
recalc_crcc                 j   U R                   nUS:X  ae  [        R                  U   R                  U R                  U R                   U R
                  U R                  U R                  U R                  45      nOnUS:X  aZ  [        R                  U   R                  U R                  U R                   U R
                  U R                  U R                  45      nO[        SU 35      eU(       d  U$ [        USS  5      U l        U R                  S   S   nUR                  U R                  5      USS  -   $ )Nr   r   Unrecognized message version: r(   )r    r   SCHEMASencoder   r!   r$   r"   r#   
ValueErrorr   BASE_FIELDS)r/   rA   versionmessage	crc_fields        r0   rE   Message.encode}   s   **a<oog.55HHJJOONNHHJJ	G \oog.554::t$**MG =gYGHHN%$$Q'*	)GABK77r3   datac           	      @   S n[        U[        5      (       a$  [        USS  5      n[        R                  " U5      nU R
                  S   S   R                  U5      U R
                  S   S   R                  U5      U R
                  S   S   R                  U5      pTnUS:X  a  [        [        S   U5      nU R                  S   S   R                  U5      U R                  S   S   R                  U5      U R                  S   S   R                  U5      pnU " UUUUUUS9n	OsUS:X  a_  [        [        S   U5      nU R                  S   S   R                  U5      U R                  S   S   R                  U5      pU " UUUUUS9n	O[        SU 35      eX)l        U	$ )Nr(   r   r   r&   )r#   r"   r    r!   r   r$   )r#   r"   r    r!   r   rC   )r7   r8   r   ioBytesIOrG   decoder   r   MAGIC1_FIELDSMAGIC0_FIELDSrF   r;   )
clsrL   r;   r   r    r!   r$   r"   r#   msgs
             r0   rP   Message.decode   s   (,dE"""48_N::d#D OOAq!((.OOAq!((.OOAq!((. 
 A:U+E!!!$Q'..t4!!!$Q'..t4!!!$Q'..t4 "I
 %#C aZU+E!!!$Q'..t4!!!$Q'..t4  %C =eWEFF+
r3   c                     U R                   c"  U R                  SS9n[        USS  5      U l         U R                  U R                   :H  $ )NFrA   r(   )r;   rE   r   r   )r/   raw_msgs     r0   validate_crcMessage.validate_crc   sF    &kkUk3G"'"4Dxx4....r3   c                 :    U R                   U R                  -  S:g  $ )Nr   )r!   
CODEC_MASKr>   s    r0   is_compressedMessage.is_compressed   s    0A55r3   )NNPartialMessagec                    U R                   c   eU R                  U R                  -  nUU R                  U R                  U R
                  U R                  4;   d   eXR                  :X  a,  [        5       (       d   S5       e[        U R                   5      nOXR                  :X  a,  [        5       (       d   S5       e[        U R                   5      nOXR
                  :X  aG  [        5       (       d   S5       eU R                  S:X  a  [        S5      e[        U R                   5      nOFXR                  :X  a,  [        5       (       d   S5       e[!        U R                   5      nO[#        S5      e[$        R'                  U[)        U5      S9$ )	NzGzip decompression unsupportedz Snappy decompression unsupportedzLZ4 decompression unsupportedr   z/LZ4 is not supported for broker version 0.8/0.9zZSTD decompression unsupportedzThis should be impossible)bytes_to_read)r#   r!   r\   
CODEC_GZIPCODEC_SNAPPY	CODEC_LZ4
CODEC_ZSTDr   r   r   r   r   r    r   r   r   r   AssertionError
MessageSetrP   len)r/   codec	raw_bytess      r0   
decompressMessage.decompress   sJ    zz%%%$//1OONNOO	
 
 	
 
 OO#::???:#DJJ/I'''<<C!CC<%djj1Inn$99===9zzQ+E  'tzz2	oo%::???:#DJJ/I !<==  #i. IIr3   c                 2    [        U R                  SS95      $ )NFrW   )hashrE   r>   s    r0   __hash__Message.__hash__   s    DKK5K122r3   )r;   r!   r   r"   r    r$   r#   T),__name__
__module____qualname____firstlineno__r   r   rG   r   rR   r   rQ   r   rD   SCHEMAr\   rb   rc   rd   re   r=   HEADER_SIZEr	   r   r8   r   r9   r1   propertyr?   boolrE   classmethodr   rN   rO   r
   rP   rY   r]   listtuplerk   ro   __static_attributes__r.   r3   r0   r   r      s    
	$	tK 
	%M
 
e		%M 	 	
	
	
 	 	
	
	
	G QZFJJLIJ
    e_	
 qz   
  	 	 e_		
 qz	 	 	 	 
	 	& $(  e_	
 t}   C= 
2  7  8 8 82 +%

E 12 +t + +Z/d /6t 6 J	eE#sI-.6R0SST	U JD3# 3r3   r   c                   "    \ rS rSrS\4S jrSrg)r_      r+   c                     SU < S3$ )NzPartialMessage()r.   r>   s    r0   __repr__PartialMessage.__repr__   s     **r3   r.   N)rr   rs   rt   ru   strr   r}   r.   r3   r0   r_   r_      s    +# +r3   r_   c                   Z   \ rS rSr\" S\4S\45      rSr\	 SS\
\R                  \\\\4      4   S\S\4S jj5       r\	 SS
\
\R                  \4   S\\   S\\
\\\\4   \S	S	\4   4      4S jj5       r\	S\
\R                  \\
\\\\4   \S	S	\4   4      4   S\4S j5       rSrg	)rg      offsetrI      itemsprepend_sizer+   c                    [        U[        R                  5      (       aU  [        R                  " U5      nU(       a'  UR                  UR                  5       S-
  5        US-  nUR                  U5      $ / nU HO  u  pVUR                  [        R                  " U5      5        UR                  [        R                  " U5      5        MQ     SR                  U5      nU(       a  [        R                  " U5      $ U$ )Nr(   r3   )r7   rN   rO   r   rP   seektellreadappendr   rE   r   join)rS   r   r   sizeencoded_valuesr   rI   encodeds           r0   rE   MessageSet.encode   s     eRZZ((<<&D

5::<!+,	::d##&($OF!!%,,v"67!!%,,w"78  % ((>*<<((Nr3   NrL   ra   c                 <   [        U[        5      (       a  [        R                  " U5      nUc  [        R
                  " U5      n[        R                  " UR                  U5      5      n/ n U(       a{  [        R
                  " U5      n[        R
                  " U5      nUc   eUS[        U5      -   -  nUR                  U[        U5      [        R                  U5      45        U(       a  M{  U$ ! [         a     UR                  SS[        5       45         U$ f = f)zlCompressed messages should pass in bytes_to_read (via message size)
otherwise, we decode from data as Int32
Nr   )r7   r8   rN   rO   r   rP   r   r   r   rh   r   r   rF   r_   )rS   rL   ra   rawr   r   	msg_bytess          r0   rP   MessageSet.decode  s     dE""::d#D !LL.M
 jj=12  		c*!LL-	 ,,,Y!77S^W^^I-FG  -   	LLt^-. 	s   -B C1 1&DDmessagesc                     [        U[        R                  5      (       a5  UR                  5       nU R	                  U5      nUR                  U5        UnOUn[        U Vs/ s H  oPR                  R                  U5      PM     sn5      $ s  snf r-   )	r7   rN   rO   r   rP   r   r   ITEMrepr)rS   r   r   decodeddecoded_messagesms         r0   r   MessageSet.repr9  sq     h

++]]_Fjj*GMM&!&'.>?.>HHMM!$.>?@@?s    $Br.   rq   r-   )rr   rs   rt   ru   r   r   r   r   rw   rz   r   rN   rO   r   r|   r9   r8   ry   rE   r   r{   r   r_   rP   r   r   r}   r.   r3   r0   rg   rg      s;   8U#i%78DK "RZZ%U
*;!<<=  
	 0 LP!U*+!<DSM!	eE#sG+,eD$4N.OOP	Q! !F AJJuS#w./tT>7Q1RRSTV
A 
A Ar3   rg   )&rN   r:   binasciir   collections.abcr   typingr   r   r   r   r	   typing_extensionsr
   aiokafka.codecr   r   r   r   r   r   r   r   aiokafka.errorsr   structr   typesr   r   r   r   r   r   r   r8   r_   rg   r.   r3   r0   <module>r      s`    	   $ ; ; "	 	 	 2  < <W3f W3t+U +
PA PAr3   