
    "f                         d Z ddlmZmZmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZ eegef         Zeegef         Z G d d	e          Zd
S )z.Object to bytes and bytes to Object transform.    )AnyCallableListOptionalTuple   )getbytes)Record)InsufficientMemoryError)	Transformc                        e Zd ZU dZeed<   eeeef         ed<   	 	 ddededed	e	d
e	ddf fdZ
	 ddedee         dee         ddfdZ	 ddededee         deeef         fdZ xZS )ObjectXz.Object to bytes and bytes to object transform.
__nbytes____npu__objectr   packunpacknbytesnamehintreturnNc                 ~    t                                          ||           |dk    sJ || _        |||f| _        d S )Nr   )super__init__r   r   )selfr   r   r   r   r   	__class__s         O/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/plum/object.pyr   zObjectX.__init__   sE     	t$$${{{{ tV+    valuepiecesdumpc                     | j         \  }}}| |                     ||                     d S t          |          |_         ||          x}|_        |                    |           d S N)r   appendreprr   memory)r   r   r    r!   _nbytesr   _unpackpieces           r   __pack__zObjectX.__pack__(   sp     "&w<MM$$u++&&&&&eDJ"&$u++-EDKMM%     r   bufferoffsetc                    | j         \  }}}|<||z   }t          |          |k     rt          d           ||||                   |fS t          ||||          \  }} ||          }	t	          |	          |_        |	|fS )Nztoo few bytes to unpack)r   lenr   r	   r%   r   )
r   r+   r,   r!   r   _packr   endchunkr   s
             r   
__unpack__zObjectX.__unpack__6   s     !%v<6/C6{{S  -.GHHH6&,--s22ffdF;;
su%[[
czr   )r   r   r#   )__name__
__module____qualname____doc__int__annotations__r   PackType
UnpackTypestrr   r   bytesr   r
   r*   r2   __classcell__)r   s   @r   r   r      sC        88OOO3*,---- , ,, , 	,
 , , 
, , , , , ,  IM! !!"&u+!5=f5E!	! ! ! ! DH %(080@	sCx       r   r   N)r6   typingr   r   r   r   r   	_getbytesr	   r!   r
   
exceptionsr   	transformr   r<   r9   r:   r    r   r   <module>rC      s    5 4 7 7 7 7 7 7 7 7 7 7 7 7 7 7             / / / / / /             SE5L!ugsl#
7 7 7 7 7i 7 7 7 7 7r   