
    {-jK                         d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ  G d de          ZdS )zONNX Runtime engine.    )Path)AnyDictOptionalTupleType   )MODEL_FILE_PREFIX)is_dep_available   )ONNXRuntimeRunner)InferenceRunnerONNXRuntimeRunnerConfig)LocalModelFormat   )RunnerBuilderRunnerEnginec                      e Zd ZdZdZedefd            Zedee	         fd            Z
deeedf                  fdZddd	d
eeef         dee         dee         deeef         fdZddZdeeef         ddfdZdefdZdeddfdZdS )ONNXRuntimeEnginez"Engine for ONNX Runtime inference.onnxruntimereturnc                     dS )Nr    selfs    l/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddlex/inference/models/engines/onnxruntime.pynamezONNXRuntimeEngine.name#   s    }    c                     t           S Nr   r   s    r   engine_config_modelz%ONNXRuntimeEngine.engine_config_model'   s    &&r   .c                     dS )N)onnxr   r   s    r   get_supported_model_formatsz-ONNXRuntimeEngine.get_supported_model_formats+   s	     yr   N)
model_namedevicerawr&   r'   c                4    ~|                      ||           |S r!   )_apply_device)r   r(   r&   r'   s       r   prepare_config_dictz%ONNXRuntimeEngine.prepare_config_dict0   s"     3'''
r   c                 B    t          d          st          d          d S )Nr   zVEngine 'onnxruntime' is unavailable because dependency 'onnxruntime' is not installed.)r   RuntimeErrorr   s    r   ensure_environmentz$ONNXRuntimeEngine.ensure_environment;   s3    .. 	2  	 	r   engine_configc                     |                     d          }||dk    rd S |dk    rt          d          dd l}t          |                                          }d|vr t          dt          |          d          d S )	Ndevice_typecpugpuz?`engine='onnxruntime'` currently only supports `cpu` and `gpu`.r   CUDAExecutionProviderzqONNX Runtime GPU inference is unavailable because `CUDAExecutionProvider` is not available. Available providers: .)get
ValueErrorr   setget_available_providersr-   sorted)r   r/   r1   ortavailable_providerss        r   _check_device_supportz'ONNXRuntimeEngine._check_device_supportB   s    #''66+"6"6F%Q   	"!!!!#"="="?"?@@"*===I(./B(C(CI I I   >=r   c                      d ddt           dt          t                   dt          t          t           t          f                  dt          t           t          f         dt          t
                   dt          f fd}|S )	N)default_builderr&   	model_dirmodel_configr/   r?   r   c                     ~ ~~|t          d                              |           t          |t          |          S )Nz1`model_dir` is required for engine='onnxruntime'.)r@   model_file_prefixconfig)r7   r=   r   r
   )r&   r@   rA   r/   r?   r   s        r   runner_builderzDONNXRuntimeEngine.get_default_runner_builder.<locals>.runner_builderU   sU     L/  !TUUU&&}555$#"3$   r   )strr   r   r   r   r   r   )r   rE   s   ` r   get_default_runner_builderz,ONNXRuntimeEngine.get_default_runner_builderT   s     8<	 	 		  ~	 #4S>2		
  S>	 &m4	 	 	 	 	 	 	$ r   runnerc                 z    t          |t                    s%t          dt          |          j         d          d S )Nz>Engine 'onnxruntime' must build an ONNXRuntimeRunner, but got r5   )
isinstancer   	TypeErrortype__name__)r   rH   s     r   validate_runnerz!ONNXRuntimeEngine.validate_runneri   sQ    &"344 	4<<04 4 4  	 	r   )r   N)rM   
__module____qualname____doc__entitiespropertyrF   r   r   r   r"   r   r   r   r%   r   r   r+   r.   r=   r   rG   r   rN   r   r   r   r   r      s|       ,,Hc    X 'T*A%B ' ' ' X'	%(#-.	/    %) $	 	 	#s(^	 SM		
 	 
c3h	 	 	 	   4S> d    $M    *o $      r   r   N)rQ   pathlibr   typingr   r   r   r   r   	constantsr
   
utils.depsr   runnersr   runners.inference_runnerr   runners.onnxruntime_runnerr   utils.model_pathsr   _baser   r   r   r   r   r   <module>r]      s            3 3 3 3 3 3 3 3 3 3 3 3 3 3 + + + + + + + + + + + + ' ' ' ' ' ' 6 6 6 6 6 6 @ @ @ @ @ @ 0 0 0 0 0 0 . . . . . . . .P P P P P P P P P Pr   