
     #e                        d dl m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 erd dlmZ d dlmZ ddZdd	Zdd
ZddZddZddZddZ	 	 	 	 	 	 	 	 	 	 ddZe G d deeef                Zy)    )annotations)TYPE_CHECKINGAnyDictMappingUnioncast)DATA_LIB_KEY)serde)Type)	ConverterLibc                <    t        | t              r| S t        |       S N)
isinstancer   values    5/usr/lib/python3/dist-packages/ufoLib2/objects/lib.py_convert_Libr      s    uc*5:E
:    c                6    t        t        | j                        S r   )r	   r   _libselfs    r   _get_libr      s    TYYr   c                $    t        |      | _        y r   )r   r   r   r   s     r   _set_libr   #   s    U#DIr   c                6    t        t        | j                        S r   )r	   r   _tempLibr   s    r   _get_tempLibr!   '   s    T]]##r   c                $    t        |      | _        y r   )r   r    r   s     r   _set_tempLibr#   +   s     'DMr   c                V    t        | t              xr d| v xr | d   t        k(  xr d| v S )Ntypedata)r   r   r
   r   s    r   is_data_dictr'   /   s<    5'" 	eO	&M\)	 eO	r   c           	     H   t        | t              rt        |j                  |       dS t        | t        t
        f      r| D cg c]  }t        ||       c}S t        | t              r.| j                         D ci c]  \  }}|t        ||       c}}S | S c c}w c c}}w )N)r%   r&   )	r   bytesr
   unstructurelisttuple_unstructure_datar   items)r   	convertervks       r   r-   r-   8   s    %$i.C.CE.JKK	ED%=	)9>?A!!Y/??	E7	#?D{{}Mtq!$Q	22MML @Ms   B<Bc                &   t        |t              r"t        |      D ]  \  }}t        ||||        y t	        |      r|j                  |d   t              || <   y t        |t              r'|j                         D ]  \  }}t        ||||        y y )Nr&   )	r   r+   	enumerate_structure_data_inplacer'   	structurer)   r   r.   )keyr   	containerr/   ir0   r1   s          r   r4   r4   B   s     %e$ 	<DAq#Aq%;	<	e	",,U6]EB	#	E7	#KKM 	<DAq#Aq%;	< 
$r   c                  6    e Zd ZddZe	 	 	 	 	 	 	 	 dd       Zy)r   c                    |j                  d      }t        |t              rt        |       S t        |t              st        t        |            t        | |      }|S )N    )r*   r   r)   dictstrNotImplementedErrorr%   r-   )r   r/   testr&   s       r   _unstructurezLib._unstructureQ   sP    $$U+dE":D#&%d4j110yAr   c                b     ||       }|j                         D ]  \  }}t        ||||        |S r   )r.   r4   )r&   clsr/   r   r1   r0   s         r   
_structurezLib._structure\   s9     4yJJL 	;DAq#Aq$	:	;r   N)r/   r   returnzdict[str, Any])r&   Mapping[str, Any]rB   z	Type[Lib]r/   r   rD   r   )__name__
__module____qualname__r@   staticmethodrC    r   r   r   r   O   s?    	   
	 r   N)r   rE   rD   r   )r   r   rD   r   )r   r   r   rE   rD   None)r   r   rD   bool)r   r   r/   r   rD   r   )
r6   zUnion[int, str]r   r   r7   r   r/   r   rD   rK   )
__future__r   typingr   r   r   r   r   r	   ufoLib2.constantsr
   ufoLib2.serder   r   cattrsr   r   r   r   r!   r#   r'   r-   r4   r=   r   rJ   r   r   <module>rR      s    " A A *  ;
 $$(
<	
<!$
<14
<AJ
<	
< $sCx.  r   