
    i                     H    S SK r S SKJr  Su  rrrrrr	r
/ SQr " S S5      rg)    N)json)r                     )CONNECT
DISCONNECTEVENTACKCONNECT_ERRORBINARY_EVENT
BINARY_ACKc                       \ rS rSrSrSr\r\SSSSS4S jr	S r
S rS r\S	 5       r\S
 5       r\S 5       r\S 5       r\S 5       rS rSrg)Packet
   zSocket.IO packet.TNc                    Xl         X l        X0l        X@l        U R                  (       au  U(       d#  Uck  U R                  U R                  5      (       aK  U R                   [        :X  a  [        U l         O+U R                   [        :X  a  [        U l         O[        S5      eSU l        / U l        U(       a   U R                  U5      =(       d    SU l        g g )Nz'Packet does not support binary payload.r   )packet_typedata	namespaceiduses_binary_eventsdata_is_binaryr   r   r   r   
ValueErrorattachment_countattachmentsdecode)selfr   r   r   r   binaryencoded_packets          L/home/admin/cozy_coffee/venv/lib/python3.13/site-packages/socketio/packet.py__init__Packet.__init__   s    &	"""FNt/B/BII0 05(#/ !!S(#-  !JKK !$(KK$?$D1D!     c                    [        U R                  5      nU R                  [        :X  d  U R                  [        :X  a8  U R	                  U R
                  5      u  p#U[        [        U5      5      S-   -  nOU R
                  nSnU R                  b!  U R                  S:w  a  XR                  S-   -  nU R                  b  U[        U R                  5      -  nUb  XR                  R                  USS9-  nUb  U/U-   nU$ )zEncode the packet for transmission.

If the packet contains binary elements, this function returns a list
of packets where the first is the original packet with placeholders for
the binary components and the remaining ones the binary attachments.
-N/,)r)   :)
separators)strr   r   r   deconstruct_binaryr   lenr   r   r   dumps)r   r!   r   r   s       r"   encodePacket.encode-   s     T--.|+t/?/?:/M $ 7 7		 BDc#k"23c99N99DK>>%$..C*?nns22N77c$''l*NiioodzoJJN",-;Nr%   c                    Un [        USS 5      U l        SU l        SU l        USS nUR                  S5      nSnUS:  a>  USU R                  5       (       a&  US:  a  [        S5      e[        USU 5      nX#S-   S nU(       ao  USS S:X  af  UR                  S	5      nUS
:X  a	  X l        SnOUSU U l        X%S-   S nU R                  R                  S5      nUS
:w  a  U R                  SU U l        U(       a  US   R                  5       (       a  Sn[        U5      nXx:  a*  X'   R                  5       (       a  US:  a  OUS-  nXx:  a  M*  [        USU 5      U l	        X'S n[        U5      S:  a#  US   R                  5       (       a  [        S5      eU(       a   U R                  R                  U5      U l        U$ ! [         a    X l        Sn GNf = f)zDecode a transmitted package.

The return value indicates how many binary attachment packets are
necessary to fully decode the packet.
r   r    Nr'   r   ztoo many attachmentsr(   r)   ?d   zid field is too long)intr   	TypeErrorr   r   findisdigitr   r.   r   r   loads)	r   r!   epdashr   sepqiends	            r"   r   Packet.decodeE   s    	"2a7|D 	Vwws|!81T
**,,by !788"2a:1HIB"Qq'S.''#,Cby!#!#Aca\##C(ABw!%!!4"Q%--//Ab'C'u}}!s(Q ' "Ra&kDGBB2w{r!u}} !788		+DIK  	!B	s   G GGc                 4   U R                   [        U R                  5      ::  a  [        S5      eU R                  R	                  U5        U R                   [        U R                  5      :X  a,  U R                  U R                  U R                  5      U l        gg)NzUnexpected binary attachmentTF)r   r.   r   r   appendreconstruct_binaryr   )r   
attachments     r"   add_attachmentPacket.add_attachmentu   sx      C(8(8$99;<<
+  C(8(8$99//		4;K;KLDIr%   c                 $    U R                  X5      $ )zIReconstruct a decoded packet using the given list of binary
attachments.
)_reconstruct_binary_internalclsr   r   s      r"   rE   Packet.reconstruct_binary~   s    
 //BBr%   c           	      d   [        U[        5      (       a"  U Vs/ s H  nU R                  X25      PM     sn$ [        U[        5      (       aX  UR	                  S5      (       a  SU;   a  X!S      $ UR                  5        VVs0 s H  u  pEX@R                  UU5      _M     snn$ U$ s  snf s  snnf )N_placeholdernum)
isinstancelistrJ   dictgetitemsrL   r   r   itemkeyvalues         r"   rJ   #Packet._reconstruct_binary_internal   s    dD!! $& $ 44TG $& &d##xx''ETM";// +/**,8*6JC ==e>IK K*68 8 K&8s   B'B,c                 .    / nU R                  X5      nX4$ )z(Extract binary components in the packet.)_deconstruct_binary_internalrK   s      r"   r-   Packet.deconstruct_binary   s"     //B  r%   c           	         [        U[        [        45      (       a"  UR                  U5        S[	        U5      S-
  S.$ [        U[
        5      (       a"  U Vs/ s H  nU R                  X25      PM     sn$ [        U[        5      (       a4  UR                  5        VVs0 s H  u  pEX@R                  XR5      _M     snn$ U$ s  snf s  snnf )NTr   )rO   rP   )	rQ   bytes	bytearrayrD   r.   rR   r\   rS   rU   rV   s         r"   r\   #Packet._deconstruct_binary_internal   s    dUI.//t$$([1AA1EFFd## $& $ 44TG $& &d##&*jjl4&2
 99%MM&24 4 K&4s   C Cc           	         [        U[        [        45      (       a  g[        U[        5      (       a9  [        R
                  " S U Vs/ s H  nU R                  U5      PM     snS5      $ [        U[        5      (       aG  [        R
                  " S UR                  5        Vs/ s H  nU R                  U5      PM     snS5      $ gs  snf s  snf )z-Check if the data contains binary components.Tc                     U =(       d    U$ N abs     r"   <lambda>'Packet.data_is_binary.<locals>.<lambda>   
    QV!Vr%   Fc                     U =(       d    U$ rd   re   rf   s     r"   ri   rj      rk   r%   )	rQ   r_   r`   rR   	functoolsreducer   rS   values)rL   r   rW   s      r"   r   Packet.data_is_binary   s     dUI.//d#####26&826$ '*&8&8&>26&89>@ @ d#####26++-&A2?$ '*&8&8&>2?&A 
 &8&As   C
$C
c                     U R                   U R                  U R                  S.nU R                  b  U R                  US'   U$ )N)typer   nspr   )r   r   r   r   )r   ds     r"   _to_dictPacket._to_dict   s>    $$II>>

 77ggAdGr%   )r   r   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   _jsonr   r   r#   r0   r   rG   classmethodrE   rJ   r-   r\   r   ru   __static_attributes__re   r%   r"   r   r   
   s     D#(ttTE(0. ` C C   ! !     r%   r   )rm   engineior   r|   r
   r   r   r   r   r   r   packet_namesr   re   r%   r"   <module>r      s7     "  K*eS-z.x xr%   