
    "f
                         d Z ddlmZ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  G d de          Z G d	 d
e          ZdS )2AttrDict to bytes and bytes to AttrDict transform.    )AnyDictListOptionalTupleUnion   )Record)	Transform)	SizeErrorc                   (     e Zd ZdZ fdZd Z xZS )AttrDictz.Dictionary with access to items as attributes.c                 H     t                      j        |i | | | _        d S N)super__init____dict__)selfargskwargs	__class__s      Q/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/plum/attrdict.pyr   zAttrDict.__init__   s*    $)&)))    c                 p    d |                                  D             }dd                    |           dS )Nc                 "    g | ]\  }}| d |S )= ).0keyvalues      r   
<listcomp>z%AttrDict.__repr__.<locals>.<listcomp>   s*    DDDeS$$5$$DDDr   z	AttrDict(z, ))itemsjoin)r   paramss     r   __repr__zAttrDict.__repr__   s:    DDtzz||DDD/499V,,////r   )__name__
__module____qualname____doc__r   r'   __classcell__r   s   @r   r   r      sM        88    0 0 0 0 0 0 0r   r   c                   
    e Zd ZU dZee         ed<   eee	f         ed<   	 dde
eee	f         eeee	f                  f         deddf fdZ	 dd	ed
edee         deeef         fdZ	 ddee         dee         ddfdZ xZS )	AttrDictXr   
__nbytes__membersr   namereturnNc                    t                                          |d           t          |          | _        d| _        | j                                        D ]1}	 | xj        |j        z  c_        # t          $ r d | _        Y  d S w xY wd S )Nr   )hintr   )r   r   dictr1   r0   valuesnbytesr   )r   r1   r2   	transformr   s       r   r   zAttrDictX.__init__"   s    
 	J///G}},,.. 	 	I9#33   "&	 	s   A22BBbufferoffsetdumpc                 p   t                      }|?| j                                        D ]$\  }}|                    |||          \  }}|||<   %nd| j        rV| j                                        D ];\  }}|                    ||          }|                    |||          \  }}|||<   <ni |_        ||fS N)accessfmt)r   r1   r$   
__unpack__
add_recordr!   )	r   r:   r;   r<   attrdictr2   r9   r!   subdumps	            r   rA   zAttrDictX.__unpack__3   s     ::<#'<#5#5#7#7 ' 'i ) 4 4VVT J Jv!&' \ 	#'<#5#5#7#7 ' 'i//9/EE ) 4 4VVW M Mv!&'
 DJr   piecesc                 P   |>| j                                         D ]"\  }}|                    ||         ||           #d S | j         rW| j                                         D ];\  }}|                    ||          }||         }|                    |||           <d S i |_        d S r>   )r1   r$   __pack__rB   r!   )r   r!   rE   r<   r2   r9   rD   member_values           r   rG   zAttrDictX.__pack__I   s     <#'<#5#5#7#7 > >i""5;====> > \ 	#'<#5#5#7#7 B Bi//9/EE$T{""<AAAAB B DJJJr   )r   r   )r(   r)   r*   r+   r   int__annotations__r   strr   r	   r   r   r   bytesr   r   rA   rG   r,   r-   s   @r   r/   r/      sA        <<#s(^
  tCH~tE#s(O'<<=  
	     * "&	       v	 
 
x}	       . DH !%[080@	       r   r/   N)r+   typingr   r   r   r   r   r	   r<   r   r9   r   
exceptionsr   r6   r   r/   r   r   r   <module>rO      s    9 8 : : : : : : : : : : : : : : : :                   ! ! ! ! ! !
0 
0 
0 
0 
0t 
0 
0 
0= = = = =	 = = = = =r   