
    i:                        S SK Jr  S SKrS SKrS SKrS SKJs  Jr	  S SK
Jr  S SKJrJr  S SKJrJr  SrSrS\S\S	S4S
 jrS\S	\4S jr S\S	\4S jrS\S	\4S jrSS\S\S	\4S jjrS\S	\4S jr SS\S\S	\4S jjrg)    N)ETDumpFlatCC)_DataclassEncoder_json_to_dataclass)_flatc_compile_flatc_decompileetdump_schema_flatccscalar_typedschema_namereturnc                    [         R                  R                  U SR                  U5      5      n[	        US5       nUR                  [        R                  " [        U S35      5        S S S 5        g ! , (       d  f       g = f)N{}.fbswbz.fbs)	ospathjoinformatopenwrite
_resourcesread_binaryetdump_package)r
   r   schema_pathschema_files       c/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/devtools/etdump/serialize.py_write_schemar      sZ    '',,q(//+">?K	k4	 K*00K=PTAUVW 
!	 	 s   .A33
Betdumpc                 6    [         R                  " U [        SS9$ )N   )clsindent)jsondumpsr   r   s    r   _serialize_from_etdump_to_jsonr%      s    ::f"3A>>    etdump_jsonc                 N    [         R                  " U 5      n [        U [        5      $ )N)r"   loadsr   r   )r'   s    r   '_deserialize_from_json_to_etdump_flatccr*   )   s    **[)Kk<88r&   c                    [         R                  " 5        n[        U[        5        [        U[        5        [
        R                  R                  USR                  [        5      5      n[
        R                  R                  USR                  [        5      5      n[        US5       nUR                  U R                  S5      5        S S S 5        [        XU5        [
        R                  R                  USR                  [        5      5      n[        US5       nUR                  5       sS S S 5        sS S S 5        $ ! , (       d  f       N|= f! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)Nr   z{}.jsonr   asciiz{}.etdprb)tempfileTemporaryDirectoryr   ETDUMP_FLATCC_SCHEMA_NAMESCALAR_TYPE_SCHEMA_NAMEr   r   r   r   r   r   encoder   read)r'   r
   r   	json_path	json_fileoutput_pathoutput_files          r   _convert_to_flatccr8   .   s   		$	$	&!a23a01ggll1hoo6O&PQGGLLI$4$45N$OP	)T"iOOK..w78 # 	qy1ggll1i&6&67P&QR+t$##% %$ 
'	& #"
 %$$ 
'	&	&s=   BE,)!E 
AE,E-	E, 
E	
E,
E	E,,
E:etdump_flatbuffersize_prefixedc                    [         R                  " 5        n[        U[        5        [        U[        5        [
        R                  R                  USR                  [        5      5      n[
        R                  R                  US5      n[        US5       nUR                  U 5        S S S 5        / nU(       a  S/n[        X#XF5        [
        R                  R                  US5      n[        US5       nUR                  5       sS S S 5        sS S S 5        $ ! , (       d  f       Nu= f! , (       d  f       O= f S S S 5        g ! , (       d  f       g = f)Nr   z
schema.binr   z--size-prefixedzschema.jsonr-   )r.   r/   r   r0   r1   r   r   r   r   r   r   r   r3   )	r9   r:   r
   r   bin_pathbin_fileadditional_argsr6   r7   s	            r   _convert_from_flatccr?   ?   s    		$	$	&!a23a01ggll1hoo6O&PQ77<<<0(D!XNN,- "01OCggll1m4+t$##% %$ 
'	& "! %$$ 
'	&	&s=   B ED(AE4D(	E
D%	!E(
D6	2E
Ec                 *    [        [        U 5      5      $ )a  
Given an ETdump python object this function will return a serialized object
that can then be written to a file using the FlatCC schema.
Args:
    etdump: ETDump python object that the user wants to serialize.
Returns:
    Serialized etdump binary blob using the FlatCC schema
)r8   r%   r$   s    r   serialize_to_etdump_flatccrA   Q   s     <VDEEr&   datac                 *    [        [        X5      5      $ )a  
Given an etdump binary blob (constructed using the FlatCC schema) this function will deserialize
it and return the FlatCC python object representation of etdump.
Args:
    data: Serialized etdump binary blob.
Returns:
    Deserialized ETDump python object.
)r*   r?   )rB   r:   s     r   deserialize_from_etdump_flatccrD   _   s     3T1 r&   )T)importlib.resources	resourcesr   r"   r   r.   executorch.devtools.etdumpdevtoolsr   r   (executorch.devtools.etdump.schema_flatccr   %executorch.exir._serialize._dataclassr   r   &executorch.exir._serialize._flatbufferr   r   r0   r1   strr   r%   bytesr*   r8   boolr?   rA   rD    r&   r   <module>rP      s    )  	  3 3 A W S 3 ' XS Xs Xt X?< ?C ?9 9< 9
&C &E &"&E &$ &RW &$FF
F (,
 $r&   