
    ti                         U d dl Z d dlZd dlmZmZ d dlmZmZ  ed      ZdZ	e
ed<   dgZdZ G d	 d
      Z G d d      Z G d dee         Zy)    N)CallableIterable)GenericTypeVarT   _ENCODING_VERSIONAppendingByteSerializer   c                   P    e Zd ZddZdeddfdZdeddfdZdeddfd	Z	defd
Z
y)BytesWriterreturnNc                 ,    t        t              | _        y N)	bytearrayCHECKSUM_DIGEST_SIZE_dataselfs    l/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/utils/_appending_byte_serializer.py__init__zBytesWriter.__init__   s    34
    ic                 ^    | j                   j                  |j                  ddd             y N   bigF	byteordersigned)r   extendto_bytes)r   r   s     r   write_uint64zBytesWriter.write_uint64   s#    

!**Q%*FGr   sc                 n    t        j                  |j                  d            }| j                  |       y Nzutf-8)base64	b64encodeencodewrite_bytes)r   r$   payloads      r   	write_strzBytesWriter.write_str   s)    ""188G#45!r   bc                 n    | j                  t        |             | j                  j                  |       y r   )r#   lenr   r!   )r   r-   s     r   r*   zBytesWriter.write_bytes!   s&    #a&!

!r   c                     t        j                  | j                  t        d        j	                  ddd      }t        |      t        k7  rt        d      || j                  dt         t        | j                        S )Nr   r   Fr   ,Computed checksum digest has unexpected sizer   )zlibcrc32r   r   r"   r/   AssertionErrorbytes)r   digests     r   r"   zBytesWriter.to_bytes%   sp    DJJ';'<=>GGu H 
 v;.. !OPP-3

1)*TZZ  r   r   N)__name__
__module____qualname__r   intr#   strr,   r5   r*   r"    r   r   r   r      sO    5Hc Hd H"3 "4 "U t !% !r   r   c                   L    e Zd ZdeddfdZdefdZdefdZde	fdZ
defdZy)	BytesReaderdatar   Nc                 @   t        |      t        k  rt        d      t        j                  |t        d        j                  ddd      }t        |      t        k7  rt        d      |dt         |k7  rt        d|dt         d	|      || _        t        | _        y )
Nz+Input data is too short to contain checksumr   r   Fr   r1   r   z>Bytes object is corrupted, checksum does not match. Expected: z, Got: )	r/   r   r4   r2   r3   r"   RuntimeErrorr   _i)r   r@   r6   s      r   r   zBytesReader.__init__0   s    t9++ !NOOD!5!678AAu B 
 v;.. !OPP&'61!!$89<GF:O 
 
&r   c                 F    t        | j                        | j                  k(  S r   )r/   r   rC   r   s    r   is_finishedzBytesReader.is_finishedB   s    4::$''))r   c                     t         j                  | j                  | j                  | j                  dz    dd      }| xj                  dz  c_        |S r   )r;   
from_bytesr   rC   )r   results     r   read_uint64zBytesReader.read_uint64E   sG    JJtww1-u   
 	1r   c                 f    t        j                  | j                               j                  d      S r&   )r'   	b64decode
read_bytesdecoder   s    r   read_strzBytesReader.read_strL   s%     1299'BBr   c                     | j                         }| j                  | j                  | j                  |z    }| xj                  |z  c_        |S r   )rI   r   rC   )r   sizerH   s      r   rL   zBytesReader.read_bytesO   s>    !DGGdggn54r   )r8   r9   r:   r5   r   boolrE   r;   rI   r<   rN   rL   r=   r   r   r?   r?   /   sG    'U 't '$*T *S C# CE r   r?   c                       e Zd ZU dZeeegdf   ed<   eed<   deeegdf   ddfdZddZ	d	eddfd
Z
dee   ddfdZdefdZed	edeegef   dee   fd       Zy)r
   z
    Provides efficient serialization and deserialization of list of bytes
    Note that this does not provide any guarantees around byte order
    N_serialize_fn_writerserialize_fnr   c                2    || _         | j                          y r   )rS   clear)r   rU   s     r   r   z AppendingByteSerializer.__init__d   s    
 *

r   c                 `    t               | _        | j                  j                  t               y r   )r   rT   r#   r	   r   s    r   rW   zAppendingByteSerializer.clearl   s    "}!!"34r   r@   c                 <    | j                  | j                  |       y r   )rS   rT   )r   r@   s     r   appendzAppendingByteSerializer.appendq   s    4<<.r   elemsc                 4    |D ]  }| j                  |        y r   )rZ   )r   r[   elems      r   r!   zAppendingByteSerializer.extendt   s     	DKK	r   c                 6    | j                   j                         S r   )rT   r"   r   s    r   r"   z AppendingByteSerializer.to_bytesx   s    ||$$&&r   deserialize_fnc                    t        |       }|j                         t        k7  rt        d|j                                g }|j	                         s(|j                   ||             |j	                         s(|S )NzVEncoding version mismatch in AppendingByteSerializer.to_list,                     got )r?   rI   r	   r4   rE   rZ   )r@   r_   readerrH   s       r   to_listzAppendingByteSerializer.to_list{   s{    T"#44 ++-.0 
 $$&MM.01 $$&r   r7   )r8   r9   r:   __doc__r   r   r   __annotations__r   rW   rZ   r   r!   r5   r"   staticmethodr?   listrb   r=   r   r   r
   r
   [   s    
 [!,d233 Q/56 
	5
/1 / /HQK D '% ' e +9I0J tTUw  r   )r'   r2   collections.abcr   r   typingr   r   r   r	   r;   rd   __all__r   r   r?   r
   r=   r   r   <module>rj      s\      . # CL 3 $
%  ! !4$ $X,gaj ,r   