o
    0jg                     @   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 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dlmZ ddlmZmZ deeeef  deeef deeef fddZ G dd deZ!G dd deZ"dS )zPaddle engines.    )Path)AnyDictOptionalTupleType   )MODEL_FILE_PREFIX)logging)is_dep_available   )get_hpi_info)PaddleDynamicRunnerPaddleStaticRunner)InferenceRunnerPaddleDynamicRunnerConfigPaddleStaticRunnerConfig)LocalModelFormat   )RunnerBuilderRunnerEnginemodel_configengine_configreturnc                 C   s   t | }|d u r
|S d }|jr|jj}|d u r|S |dd u r5|jd ur5td|j i |d|ji}|dd u rQ|jd urQtd|j i |d|ji}|S )Ntrt_dynamic_shapesz!TensorRT dynamic shapes set to %strt_dynamic_shape_input_dataz+TensorRT dynamic shape input data set to %s)r   Zbackend_configsZpaddle_infergetr   r
   debugr   )r   r   Zhpi_infoZpaddle_info r    h/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddlex/inference/models/engines/paddle.py_inject_trt_info    s<   

r"   c                   @   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dd	d
eeef dee dee 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 )PaddleStaticEnginez)Engine for Paddle static-graph inference.paddle_staticr   c                 C      dS )Nr$   r    selfr    r    r!   nameK      zPaddleStaticEngine.namec                 C      t S Nr   r&   r    r    r!   engine_config_modelO   r)   z&PaddleStaticEngine.engine_config_modelN
model_namedevicerawr.   r/   c                   s2   ~t tj  fdd| D }| || |S )Nc                    s   i | ]\}}| v r||qS r    r    ).0keyvalueZvalid_fieldsr    r!   
<dictcomp>\   s    z:PaddleStaticEngine.prepare_config_dict.<locals>.<dictcomp>)setr   Zmodel_fieldsitems_apply_devicer'   r0   r.   r/   r    r4   r!   prepare_config_dictS   s
   
z&PaddleStaticEngine.prepare_config_dictc                 C      t dstdd S )NpaddlepaddlezYEngine 'paddle_static' is unavailable because dependency 'paddlepaddle' is not installed.r   RuntimeErrorr&   r    r    r!   ensure_environment`   
   z%PaddleStaticEngine.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_dirr   r   rA   r   c                 S   s0   ~|d u r	t dt|t|}t| |t|dS )Nz3`model_dir` is required for engine='paddle_static'.)r.   rB   Zmodel_file_prefixconfig)
ValueErrorr"   dictr   r	   )r.   rB   r   r   rA   Zrunner_configr    r    r!   runner_builderh   s   zEPaddleStaticEngine.get_default_runner_builder.<locals>.runner_builder)strr   r   r   r   r   r   )r'   rF   r    r    r!   get_default_runner_builderg   s   

z-PaddleStaticEngine.get_default_runner_builderrunnerc                 C   $   t |tstdt|j dd S )Nz@Engine 'paddle_static' must build a PaddleStaticRunner, but got .)
isinstancer   	TypeErrortype__name__r'   rI   r    r    r!   validate_runner}      
z"PaddleStaticEngine.validate_runnerr   N)rO   
__module____qualname____doc__entitiespropertyrG   r(   r   r   r,   r   r   r   r:   r?   r   rH   r   rQ   r    r    r    r!   r#   F   s*    



r#   c                   @   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ddZdee fddZdeddfddZdS )PaddleDynamicEnginez*Engine for Paddle dynamic-graph inference.paddle_dynamicr   c                 C   r%   )NrZ   r    r&   r    r    r!   r(      r)   zPaddleDynamicEngine.namec                 C   r*   r+   r   r&   r    r    r!   r,      r)   z'PaddleDynamicEngine.engine_config_model.c                 C   r%   )N)ZsafetensorsZ
paddle_dynr    r&   r    r    r!   get_supported_model_formats   s   z/PaddleDynamicEngine.get_supported_model_formatsNr-   r0   r.   r/   c                C   s   ~|  || |S r+   )r8   r9   r    r    r!   r:      s   z'PaddleDynamicEngine.prepare_config_dictc                 C   r;   )Nr<   zZEngine 'paddle_dynamic' is unavailable because dependency 'paddlepaddle' is not installed.r=   r&   r    r    r!   r?      r@   z&PaddleDynamicEngine.ensure_environmentc                 C   s   d S r+   r    r&   r    r    r!   rH      s   z.PaddleDynamicEngine.get_default_runner_builderrI   c                 C   rJ   )NzBEngine 'paddle_dynamic' must build a PaddleDynamicRunner, but got rK   )rL   r   rM   rN   rO   rP   r    r    r!   rQ      rR   z#PaddleDynamicEngine.validate_runnerrS   )rO   rT   rU   rV   rW   rX   rG   r(   r   r   r,   r   r   r   r[   r   r   r:   r?   r   rH   r   rQ   r    r    r    r!   rY      s0    
	



rY   N)#rV   pathlibr   typingr   r   r   r   r   	constantsr	   utilsr
   Z
utils.depsr   Zhpir   Zrunnersr   r   Zrunners.inference_runnerr   Zrunners.paddle_dynamic_runnerr   Zrunners.paddle_staticr   Zutils.model_pathsr   Z_baser   r   rG   r"   r#   rY   r    r    r    r!   <module>   s,   


&?