ó
    >:j#  ã                  ó„   • S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJ	r	J
r
Jr  \R                  " \5      rSS jrSS jrg)	é    )ÚannotationsN)ÚPath)ÚPretrainedConfig)Ú_save_pretrained_wrapperÚbackend_should_exportÚbackend_warn_to_savec                ó@  •  SSK nSSKJnJnJnJnJn	  UUU	US.n
X*;  a0  SR                  U
R                  5       5      n[        SU SU 35      eX¢   nUR                  S	UR                  5       S   5      US	'   [        U 5      nUR                  5       nS
nSn[!        XÞX5UU5      u  nnU(       a  UR                  SS5        UR"                  " U 4UUS.UD6n[%        UR&                  SS9Ul        U(       a  [)        XU5        U$ ! [         a    [        S5      ef = f)aâ  
Load and perhaps export an ONNX model using the Optimum library.

Args:
    model_name_or_path (str): The model name on Hugging Face (e.g. 'naver/splade-cocondenser-ensembledistil')
        or the path to a local model directory.
    config (PretrainedConfig): The model configuration.
    task_name (str): The task name for the model (e.g. 'feature-extraction', 'fill-mask', 'sequence-classification').
    model_kwargs (dict): Additional keyword arguments for the model loading.
r   N)ÚONNX_WEIGHTS_NAMEÚORTModelForCausalLMÚORTModelForFeatureExtractionÚORTModelForMaskedLMÚ!ORTModelForSequenceClassification©zfeature-extractionz	fill-maskzsequence-classificationztext-generationú, úUnsupported task: ú. Supported tasks: z¾Using the ONNX backend requires installing Optimum and ONNX Runtime. You can install them with pip: `pip install sentence-transformers[onnx]` or `pip install sentence-transformers[onnx-gpu]`ÚproviderÚONNXz*.onnxÚ	file_name©ÚconfigÚexportÚonnx©Ú	subfolder)ÚonnxruntimeÚoptimum.onnxruntimer
   r   r   r   r   ÚjoinÚkeysÚ
ValueErrorÚModuleNotFoundErrorÚ	ExceptionÚpopÚget_available_providersr   Úexistsr   Úfrom_pretrainedr   Ú_save_pretrainedr   )Úmodel_name_or_pathr   Ú	task_nameÚmodel_kwargsÚortr
   r   r   r   r   Útask_to_model_mappingÚsupported_tasksÚ	model_clsÚ	load_pathÚis_localÚbackend_nameÚtarget_file_globr   Úmodels                      Ú_/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sentence_transformers/backend/load.pyÚload_onnx_modelr5      sf  € ð
Û!÷	
õ 	
ð #?Ø,Ø'HØ2ñ	!
Ðð Ó1Ø"Ÿi™iÐ(=×(BÑ(BÓ(DÓEˆOÜÐ1°)°Ð<OÐP_ÐO`ÐaÓbÐbà)Ñ4ˆ	ð  ,×/Ñ/°
¸C×<WÑ<WÓ<YÐZ[Ñ<\Ó]€L�ÑäÐ'Ó(€IØ×ÑÓ!€HØ€LØÐô 1Ø˜\Ð>NÐP\óÑ€FˆLö
 Ø×Ñ˜ dÔ+ð ×%Ò%ØðàØñð ñ	€Eô 6°e×6LÑ6LÐX^Ñ_€EÔö ÜÐ/¸<ÔHà€LøôQ ó 
Üð?ó
ð 	
ð
ús   ‚AD ÄDc                ó  •  SSK JnJnJnJnJn  UUUUS.n	X);  a0  SR                  U	R                  5       5      n
[        SU SU
 35      eX’   n[        U 5      nUR                  5       nSnS	n[        XÍX4Xþ5      u  nnU(       a  UR                  S
S5        SU;   aq  US   n[        U[         5      (       dV  [        U5      R                  5       (       d  [        S5      e[#        USS9 n[$        R&                  " U5      US'   SSS5        OO0 US'   UR(                  " U 4UUS.UD6n[+        UR,                  SS9Ul        U(       a  [/        XU5        U$ ! [         a    [        S5      ef = f! , (       d  f       Nk= f)aæ  
Load and perhaps export an OpenVINO model using the Optimum library.

Args:
    model_name_or_path (str): The model name on Hugging Face (e.g. 'naver/splade-cocondenser-ensembledistil')
        or the path to a local model directory.
    config (PretrainedConfig): The model configuration.
    task_name (str): The task name for the model (e.g. 'feature-extraction', 'fill-mask', 'sequence-classification').
    model_kwargs (dict): Additional keyword arguments for the model loading.
r   )ÚOV_XML_FILE_NAMEÚOVModelForCausalLMÚOVModelForFeatureExtractionÚOVModelForMaskedLMÚ OVModelForSequenceClassificationr   r   r   r   z‘Using the OpenVINO backend requires installing Optimum and OpenVINO. You can install them with pip: `pip install sentence-transformers[openvino]`ÚOpenVINOzopenvino*.xmlr   NÚ	ov_configzXov_config should be a dictionary or a path to a .json file containing an OpenVINO configzutf-8)Úencodingr   Úopenvinor   )Úoptimum.intel.openvinor7   r8   r9   r:   r;   r   r   r    r!   r"   r   r%   r   r#   Ú
isinstanceÚdictÚopenÚjsonÚloadr&   r   r'   r   )r(   r   r)   r*   r7   r8   r9   r:   r;   r,   r-   r.   r/   r0   r1   r2   r   r=   Úfr3   s                       r4   Úload_openvino_modelrG   \   sÁ  € ð
÷	
õ 	
ð #>Ø+Ø'GØ1ñ	!
Ðð Ó1Ø"Ÿi™iÐ(=×(BÑ(BÓ(DÓEˆOÜÐ1°)°Ð<OÐP_ÐO`ÐaÓbÐbà)Ñ4ˆ	ô Ð'Ó(€IØ×ÑÓ!€HØ€LØ&Ðô 1Ø˜\Ð=MóÑ€FˆLö
 Ø×Ñ˜ dÔ+ð �lÓ"Ø  Ñ-ˆ	Ü˜)¤T×*Ñ*Ü˜	“?×)Ñ)×+Ñ+Ü Ønóð ô �i¨'Ò2°aÜ,0¯IªI°a«L�˜[Ñ)÷ 3Ð2ð +ð %'ˆ�[Ñ!ð ×%Ò%ØðàØñð ñ	€Eô 6°e×6LÑ6LÐXbÑc€EÔö ÜÐ/¸<ÔHà€Løôc ó 
Üð[ó
ð 	
ð
ú÷: 3Õ2ús   ‚AE Ã+E1ÅE.Å1
E?)r(   Ústrr   r   r)   rH   )Ú
__future__r   rD   ÚloggingÚpathlibr   Ú transformers.configuration_utilsr   Ú#sentence_transformers.backend.utilsr   r   r   Ú	getLoggerÚ__name__Úloggerr5   rG   © ó    r4   Ú<module>rS      s7   ðÝ "ã Û Ý å =ç uÑ uà	×	Ò	˜8Ó	$€ôKõ\SrR   