
    =pj                         S r SSKJrJr  SSKJr  SSKJrJrJ	r	J
r
JrJrJr  SSKJrJr  SSKJr  SSKJr  SS	KJr  S
SKJr  S
SKJr  S
SKJr  S
SKJrJr  \S\4   r  " S S\\S9r! " S S\!5      r"g)z#Base classes for inference engines.    )ABCabstractmethod)Path)AnyCallableDictOptionalTupleTypeUnion)	BaseModelValidationError   )MODEL_FILE_PREFIXparse_device)AutoRegisterABCMetaClass   )Binding)InferenceRunner)PaddlePredictorOption)LocalModelFormatget_model_paths.c                      \ rS rSrSrSr\S\\\	      4S j5       r
\\S\4S j5       5       r\S\4S j5       rS\\\S4      4S	 jrS
S
S.S\\\\\4   \\	4      S\\   S\\   S\\\4   4S jjrS
S
S.S\\\4   S\\   S\\   S\\\4   4S jjrS\\\4   S\\\4   4S jrS\\\4   4S jrS\\\4   S\\\4   4S jrS\\\4   S\\\4   4S jrS\S\4S jrS\SS
4S jrS!S jr \!S\\\4   S\\   SS
4S j5       r"\!S\S\\\4   4S j5       r#\$S\\\\\4   \\	4      S\\\4   4S j5       r%S r&g
)"InferenceEngine#   z!Base class for inference engines.Treturnc                     g N selfs    b/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddlex/inference/models/engines/_base.pyengine_config_model#InferenceEngine.engine_config_model(           c                     [         er   NotImplementedErrorr!   s    r#   nameInferenceEngine.name,   s
     "!r'   c                     g)NTr    r!   s    r#   needs_local_model!InferenceEngine.needs_local_model1   r&   r'   .c                     g r   r    r!   s    r#   get_supported_model_formats+InferenceEngine.get_supported_model_formats5   s     r'   N
model_namedevicecfgr4   r5   c                    U R                  U5      nU R                  UUUS9nU R                  U5      nU R                  U5      $ )Nr3   )_engine_config_to_dictprepare_config_dictvalidate_config_dictpost_normalize_config)r"   r6   r4   r5   rawprepared	validateds          r#   normalize_config InferenceEngine.normalize_config:   sU     ))#.++! , 

 --h7	)))44r'   r<   c                
    AAU$ r   r    )r"   r<   r4   r5   s       r#   r9   #InferenceEngine.prepare_config_dictJ   s     
r'   c                     U R                   nUc  U$  UR                  U5      nUR
                  " S0 U R                  5       D6$ ! [         a!  n[        SU R                   SU 35      UeS nAff = f)NzInvalid z engine_config: r    )r$   model_validater   
ValueErrorr+   
model_dumpget_config_dump_kwargs)r"   r<   config_modelr>   es        r#   r:   $InferenceEngine.validate_config_dictT   s    //J	O$33C8I ##Dd&A&A&CDD  	Ox		{2B1#FGQN	Os   A 
A/A**A/c                 
    SS0$ )Nexclude_noneTr    r!   s    r#   rG   &InferenceEngine.get_config_dump_kwargs^   s    %%r'   r>   c                     U$ r   r    )r"   r>   s     r#   r;   %InferenceEngine.post_normalize_configa   s    r'   engine_configc                     [        U5      $ r   )dict)r"   rP   s     r#   to_predictor_config#InferenceEngine.to_predictor_configd   s    M""r'   	model_dirc                     AU R                   $ r   )r+   )r"   rU   s     r#   resolve_engine_from_model_dir-InferenceEngine.resolve_engine_from_model_dirg   s    yyr'   c                    ^ U R                  5       nUc  g [        U[        5      m[        U4S jU 5       5      (       d  [	        SU R
                  < S35      eg )Nc              3   ,   >#    U  H	  oT;   v   M     g 7fr   r    ).0model_formatmodel_pathss     r#   	<genexpr>5InferenceEngine.ensure_model_files.<locals>.<genexpr>p   s     Q=<;.=s   z+No valid model files were found for engine .)r1   r   r   anyrE   r+   )r"   rU   model_formatsr]   s      @r#   ensure_model_files"InferenceEngine.ensure_model_filesk   s[    88: %i1BCQ=QQQ=dii]!L  Rr'   c                     g)z/Check that required dependencies are installed.Nr    r!   s    r#   ensure_environment"InferenceEngine.ensure_environmentu   s    r'   c                 P    U(       a  [        U5      u  p#X S'   Ub  US   OSU S'   gg)zEApply device_type and device_id from a device string into raw config.device_typeNr   	device_idr   )r<   r5   ri   
device_idss       r#   _apply_deviceInferenceEngine._apply_devicex   s6     &26&:#K!,0:0Fz!}DC r'   	pp_optionc                 b    0 nU R                   R                  5        H  u  p#Uc  M
  X1U'   M     U$ r   )__dict__items)rn   r6   keyvalues       r#   _pp_option_to_engine_config+InferenceEngine._pp_option_to_engine_config   s6    #,,224JC  C 5 
r'   c                 &   Uc  0 $ [        U[        5      (       a  [        U5      $ [        U[        5      (       a  U R                  U5      $ [        U[        5      (       a  UR                  SSS9$ [        S[        U5      R                   S35      e)NT)rL   by_aliaszP`engine_config` must be dict, Pydantic model, or PaddlePredictorOption, but got r`   )	
isinstancerR   r   rt   r   rF   	TypeErrortype__name__)clsr6   s     r#   r8   &InferenceEngine._engine_config_to_dict   s    
 ;Ic4  9c01122377c9%%>>td>CCCy))*!-
 	
r'   r    )r   N)'r{   
__module____qualname____firstlineno____doc___InferenceEngine__is_basepropertyr	   r   r   r$   r   strr+   boolr.   r
   r   r1   r   r   r   r   r?   r9   r:   rG   r;   rS   r   rW   rc   rf   staticmethodrl   rt   classmethodr8   __static_attributes__r    r'   r#   r   r   #   s   +IXd9o%>   "c "  " 4  	%(#-.	/ %) $5eDcN,A9LMN5 SM	5
 5 
c3h5( %) $#s(^ SM	
  
c3hES#X E4S> E&S#X &tCH~ $sCx. #c3h #DcN #t  D T > Q4S> Q8C= QT Q Q /D cSVh   
eDcN,A9LMN
 
c3h
 
r'   r   )	metaclassc                       \ rS rSrSrSrS\\   4S jr SS\\	   S\\   4S jjr
\S	\SS4S
 j5       rSS.S\S\\   S\\\\4      S\\\4   S\\	   S\4S jjrSrg)RunnerEngine   z4Inference engines that can build an InferenceRunner.Tr   c                     g r   r    r!   s    r#   get_default_runner_builder'RunnerEngine.get_default_runner_builder   s    r'   Nbindingc                     Ub5  UR                   b(  UR                   R                  n[        U5      (       a  U$ U R                  5       $ r   )runner_bindingrunner_buildercallabler   )r"   r   r   s      r#   get_runner_builderRunnerEngine.get_runner_builder   sF     7#9#9#E$33BBN''%%..00r'   runnerc                     [         er   r)   )r"   r   s     r#   validate_runnerRunnerEngine.validate_runner   s    !!r'   )r   r4   rU   model_configrP   c                    U R                  U5      n[        U5      (       d  [        SU< SU R                   S35      eU" UUUUU R	                  5       S9nU R                  U5        U$ )NzModel z does not provide z runner metadata.)r4   rU   r   rP   default_builder)r   r   RuntimeErrorr+   r   r   )r"   r4   rU   r   rP   r   r   r   s           r#   build_runnerRunnerEngine.build_runner   s}     009''&8CTU   !%' ;;=
 	V$r'   r    r   )r{   r~   r   r   r   _RunnerEngine__is_baser	   RunnerBuilderr   r   r   r   r   r   r   r   r   r   r   r   r    r'   r#   r   r      s    >IH],C  ,01(1	-	 1 "o "$ " " &*  D>	
 tCH~. CH~ '" 
 r'   r   N)#r   abcr   r   pathlibr   typingr   r   r   r	   r
   r   r   pydanticr   r   	constantsr   utils.devicer   utils.subclass_registerr   bindingsr   runners.inference_runnerr   runners.paddle_static.configr   utils.model_pathsr   r   r   r   r   r    r'   r#   <module>r      s^     * #  D D D / + ) @  6 @ Ao-.u
c%= u
p+? +r'   