§
    kŠtjH  ã                   ó^   — d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 defd„Zdefd„Zd	S )
é    )ÚNumpyHelper)Ú
ModelProtoÚTensorProto)Úset_external_data)Ú	OnnxModel)ÚOrtValueÚmodelc                 óŽ  — g }t          | ¦  «        }|                     ¦   «         D ]”}|j        D ]Š}|j        }|                     d¦  «        rlt          j        |¦  «        }t          j        |¦  «        }| 	                    ||f¦  «         t          |d¬¦  «         ||_        |                     d¦  «         Œ‹Œ•t          |ddiŽS )a”  
    Extract external data from model and return the external data as a list of tuples (name, value).
    Note this function does not handle external data that is not loaded into the model as raw data.

    Args:
        model (ModelProto): the model proto to extract external data from.
    Returns:
        (external_names, external_values): a tuple of two lists of external data names and values.
    Úraw_datazfoo.bin)ÚlocationÚstrictF)r   ÚgraphsÚinitializerÚnameÚHasFieldr   Úto_arrayr   Úortvalue_from_numpyÚappendr   Ú
ClearFieldÚzip)r	   Úexternal_dataÚ
onnx_modelÚgraphr   r   Únumpy_tensorÚ	ort_values           úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/transformers/onnx_utils.pyÚextract_raw_data_from_modelr      sä   € ð €MÝ˜5Ñ!Ô!€JØ×"Ò"Ñ$Ô$ð 3ð 3ˆØ Ô,ð 
	3ð 
	3ˆKØÔ#ˆDà×#Ò# JÑ/Ô/ð 3Ý*Ô3°KÑ@Ô@�Ý$Ô8¸ÑFÔF�	Ø×$Ò$ d¨IÐ%6Ñ7Ô7Ð7å! +¸	ÐBÑBÔBÐBØ#'�Ô Ø×&Ò& zÑ2Ô2Ð2øð
	3õ �Ð, eÐ,Ð,Ð,ó    c                 óÂ   — t          | ¦  «        }|                     ¦   «         D ]:}|j        D ]0}|                     d¦  «        r|j        t
          j        k    r  dS Œ1Œ;dS )zÓ
    Check if the model has external data.

    Args:
        model (ModelProto): the model proto to check for external data.
    Returns:
        bool: True if the model has external data, False otherwise.
    Údata_locationTF)r   r   r   r   r    r   ÚEXTERNAL)r	   r   r   r   s       r   Úhas_external_datar"   )   s{   € õ ˜5Ñ!Ô!€JØ×"Ò"Ñ$Ô$ð ð ˆØ Ô,ð 	ð 	ˆKØ×#Ò# OÑ4Ô4ð ¸Ô9RÕVaÔVjÒ9jÐ9jØ�t�t�tøð	ð ˆ5r   N)Úfusion_utilsr   Úonnxr   r   Úonnx.external_data_helperr   r   r   Úonnxruntimer   r   r"   © r   r   ú<module>r(      s§   ðð
 %Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø  Ð  Ð  Ð  Ð  Ð  à  Ð  Ð  Ð  Ð  Ð  ð- zð -ð -ð -ð -ð8˜Zð ð ð ð ð ð r   