
    Vhm                         U d dl mZ d dlmZmZmZ  ed      ZdZee	d<   dgZ
 G d d      Z G d	 d
      Z G d dee         Zy)    )Iterable)CallableGenericTypeVarT   _ENCODING_VERSIONAppendingByteSerializerc                   X    e Z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ddfd
Z	defdZ
y)BytesWriterpreallocate_sizereturnNc                 $    t        |      | _        y N)	bytearray_data)selfr   s     V/home/dcms/DCMS/lib/python3.12/site-packages/torch/utils/_appending_byte_serializer.py__init__zBytesWriter.__init__   s    /0
    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                 H    |j                  d      }| j                  |       y Nzutf-8)encodewrite_bytes)r   r!   payloads      r   	write_strzBytesWriter.write_str   s    ((7#!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                        S r   )bytesr   r   s    r   r   zBytesWriter.to_bytes    s    TZZ  r   )__name__
__module____qualname__intr   r    strr'   r,   r%   r    r   r   r   r      s]    1 1 1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                      || _         d| _        y )Nr   )r   _ir   r6   s     r   r   zBytesReader.__init__%   s    
r   c                 F    t        | j                        | j                  k(  S r   )r*   r   r8   r-   s    r   is_finishedzBytesReader.is_finished)   s    4::$''))r   c                     t         j                  | j                  | j                  | j                  dz    dd      }| xj                  dz  c_        |S r   )r1   
from_bytesr   r8   )r   results     r   read_uint64zBytesReader.read_uint64,   sG    JJtww1-u   
 	1r   c                 @    | j                         j                  d      S r#   )
read_bytesdecoder-   s    r   read_strzBytesReader.read_str3   s     ''00r   c                     | j                         }| j                  | j                  | j                  |z    }| xj                  |z  c_        |S r   )r?   r   r8   )r   sizer>   s      r   rA   zBytesReader.read_bytes6   s>    !DGGdggn54r   )r.   r/   r0   r,   r   boolr;   r1   r?   r2   rC   rA   r3   r   r   r5   r5   $   sE    U t *T *S 1# 1E r   r5   c                       e Zd ZU dZeeegdf   ed<   eed<   eed<   dddeeegdf   d	e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_preallocate_sizer   r   serialize_fnr   r   c                @    || _         || _        | j                          y r   )rH   rJ   clear)r   rL   r   s      r   r   z AppendingByteSerializer.__init__L   s     *!1

r   c                 x    t        | j                        | _        | j                  j                  t               y )NrK   )r   rJ   rI   r    r	   r-   s    r   rN   zAppendingByteSerializer.clearV   s'    "D4J4JK!!"34r   r6   c                 <    | j                  | j                  |       y r   )rH   rI   r9   s     r   appendzAppendingByteSerializer.append[   s    4<<.r   elemsc                 4    |D ]  }| j                  |        y r   )rQ   )r   rR   elems      r   r   zAppendingByteSerializer.extend^   s     	DKK	r   c                 6    | j                   j                         S r   )rI   r   r-   s    r   r   z AppendingByteSerializer.to_bytesb   s    ||$$&&r   deserialize_fnc                    t        |       }|j                         t        k(  sJ g }|j                         s(|j	                   ||             |j                         s(|S r   )r5   r?   r	   r;   rQ   )r6   rV   readerr>   s       r   to_listzAppendingByteSerializer.to_liste   sY    T"!!#'8888$$&MM.01 $$&r   )r   N)r.   r/   r0   __doc__r   r   r   __annotations__r1   r   rN   rQ   r   r   r,   r   staticmethodr5   listrY   r3   r   r   r
   r
   B   s    
 [!,d233 !"	 Q/56 	
 
5
/1 / /HQK D '% ' e +9I0J tTUw  r   N)collections.abcr   typingr   r   r   r   r	   r1   r[   __all__r   r5   r
   r3   r   r   <module>ra      sP    $ - - CL 3 $
%! !& <+gaj +r   