o
    0j                     @   s   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mZ 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mZ G dd deZdS )zHPI engine.    )Path)AnyDictOptionalTupleType   )MODEL_FILE_PREFIX)is_dep_available)get_default_deviceparse_device   )get_hpi_info)	HPIConfig	HPIRunner)InferenceRunner)LocalModelFormat   )RunnerBuilderRunnerEnginec                   @   s   e Zd ZdZdZedefddZedee	 fddZ
deeedf  fd	d
Zddddeeef dee dee deeef fddZdeeef fddZdddZdefddZdeddfddZdS )	HPIEnginez&Engine for HPI / UltraInfer inference.hpireturnc                 C      dS )Nr    selfr   r   e/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/models/engines/hpi.pyname$      zHPIEngine.namec                 C   s   t S )N)r   r   r   r   r   engine_config_model(   r   zHPIEngine.engine_config_model.c                 C   r   )N)ZpaddleZonnxomr   r   r   r   r   get_supported_model_formats,   s   z%HPIEngine.get_supported_model_formatsN)
model_namedevicerawr#   r$   c                C   s>   | d|pd | || |sd|vrtt \|d< }|S )Nr#    Zdevice_type)
setdefaultZ_apply_devicer   r   )r   r%   r#   r$   _r   r   r   prepare_config_dict1   s
   zHPIEngine.prepare_config_dictc                 C   s
   dddS )NT)Zexclude_noneZby_aliasr   r   r   r   r   get_config_dump_kwargs>   s   
z HPIEngine.get_config_dump_kwargsc                 C   s   t dstdd S )Nzultra-inferzNEngine 'hpi' is unavailable because dependency 'ultra-infer' is not installed.)r
   RuntimeErrorr   r   r   r   ensure_environmentA   s
   zHPIEngine.ensure_environmentc                 C   sH   d ddt dtt dttt tf  dtt tf dtt dtfdd	}|S )
N)default_builderr#   	model_dirmodel_configengine_configr-   r   c                 S   s^   ~|d u r	t dt|}|d|  d|vr#t|}|d ur#||d< t|}t|t|dS )Nz)`model_dir` is required for engine='hpi'.r#   hpi_info)r.   Zmodel_file_prefixconfig)
ValueErrordictr'   r   r   Zmodel_validater   r	   )r#   r.   r/   r0   r-   Zhpi_cfgr1   Z
hpi_configr   r   r   runner_builderI   s   
z<HPIEngine.get_default_runner_builder.<locals>.runner_builder)strr   r   r   r   r   r   )r   r5   r   r   r   get_default_runner_builderH   s   

z$HPIEngine.get_default_runner_builderrunnerc                 C   s$   t |tstdt|j dd S )Nz.Engine 'hpi' must build an HPIRunner, but got .)
isinstancer   	TypeErrortype__name__)r   r8   r   r   r   validate_runnerc   s   
zHPIEngine.validate_runner)r   N)r=   
__module____qualname____doc__entitiespropertyr6   r   r   r   r    r   r   r   r"   r   r   r)   r*   r,   r   r7   r   r>   r   r   r   r   r      s2    
	



r   N)rA   pathlibr   typingr   r   r   r   r   	constantsr	   Z
utils.depsr
   Zutils.devicer   r   r   r   Zrunners.hpir   r   Zrunners.inference_runnerr   Zutils.model_pathsr   Z_baser   r   r   r   r   r   r   <module>   s   