
    "f                     V    d Z ddlmZ ddlmZmZmZ ddlmZmZ  G d de	          Z
dS )$Bytes sequence incremental unpacker.   )Dump)ExcessMemoryErrorImplementationErrorUnpackError)ItemsFormatitemsc                   H    e Zd ZU dZeed<   d ZdefdZdefdZ	d Z
d Zd	S )
Bufferr   offsetc                 >    t          j        | g|R i |}d|_        |S )N    )bytes__new__r   )clsargskwargsinstances       O/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/plum/buffer.pyr   zBuffer.__new__   s-    =6t666v66    fmtc                     	 t          j        | | j        d|          \  }| _        n6# t          $ r)}|                     |           t                      |d}~ww xY w|S )zUnpack value from formatted bytes at current buffer offset.

        :raises: ``UnpackError`` if insufficient bytes or value error

        N)r	   
__unpack__r   	Exceptionunpack_and_dumpr   )selfr   valueexcs       r   unpackzBuffer.unpack   sp    	1!&!1$T3!O!OE4;; 	1 	1 	1  %%%%''S0	1
 s   $' 
A$AAc                 4   | j         }t          |          }	 t          j        | ||                                |          \  }| _         n7# t
          $ r*}|                                 t          ||          |d}~ww xY w|                                 ||fS )zUnpack value from bytes at current offset and produce a packed bytes summary.

        :raises: ``UnpackError`` if insufficient bytes or value error

        )r   N)r   r   r	   r   
add_recordr   trim_blank_recordr   )r   r   r   dumpr   r   s         r   r   zBuffer.unpack_and_dump&   s     6"""	2!&!1$@Q@QSV!W!WE4;; 	2 	2 	2""$$$dC((c1	2 	   d{s   1A 
A?%A::A?c                     | S N )r   s    r   	__enter__zBuffer.__enter__;   s    r   c                 N    | | | j         d          }|rt          |          d S d S r%   )r   r   )r   exc_type	exc_value	tracebackextra_bytess        r   __exit__zBuffer.__exit__>   s@    t{}}-K 5'444	 5 5r   N)__name__
__module____qualname____doc__int__annotations__r   r   r   r   r'   r-   r&   r   r   r   r      s         ..KKK  
+     ;    *  5 5 5 5 5r   r   N)r1   r#   r   
exceptionsr   r   r   r	   r   r   r   r&   r   r   <module>r5      s    + *       K K K K K K K K K K % % % % % % % %85 85 85 85 85U 85 85 85 85 85r   