
    g:                     \    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y	)
    )NumpyHelper)
ModelProtoTensorProto)set_external_data)	OnnxModel)OrtValuemodelc                 x   g }t        |       }|j                         D ]  }|j                  D ]  }|j                  }|j	                  d      s!t        j                  |      }t        j                  |      }|j                  ||f       t        |d       ||_        |j                  d         t        | 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)r   graphsinitializernameHasFieldr   to_arrayr   ortvalue_from_numpyappendr   
ClearFieldzip)r	   external_data
onnx_modelgraphr   r   numpy_tensor	ort_values           X/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/transformers/onnx_utils.pyextract_raw_data_from_modelr      s     M5!J""$ ,,K##D##J/*33K@$88F	$$dI%67!+	B#' &&z2 - %     c                     t        |       }|j                         D ]E  }|j                  D ]4  }|j                  d      s|j                  t
        j                  k(  s3  y G y)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9R9RVaVjVj9j - % r   N)fusion_utilsr   onnxr   r   onnx.external_data_helperr   r   r   onnxruntimer   r   r!    r   r   <module>r'      s.   
 % ( 7    z 8Z r   