
    =pj                         S SK r S SKJr  S SKJrJrJrJr  SSKJ	r
  SSKJr  SSKJrJr  S	S
KJr   " S S\5      r " S S\5      r " S S\5      rg)    N)ThreadPoolExecutor)AnyDictOptionalUnion   )device   ImageBatchSampler)	HPIConfigPaddlePredictorOption   )BasePipelinec                   F   ^  \ rS rSrSS.U 4S jjr\S 5       rS rSrU =r	$ )"MultiDeviceSimpleInferenceExecutor   Npostprocess_resultc                F   > [         TU ]  5         Xl        X l        X0l        g N)super__init__
_pipelines_batch_sampler_postprocess_result)self	pipelinesbatch_samplerr   	__class__s       a/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/paddlex/inference/pipelines/_parallel.pyr   +MultiDeviceSimpleInferenceExecutor.__init__   s    #+#5     c                     U R                   $ r   )r   r   s    r!   r   ,MultiDeviceSimpleInferenceExecutor.pipelines    s    r#   c           	   /   h  #    [        [        U R                  5      S9 nU R                  U5      nSnU(       d  / nU R                   HC  n [	        U5      n	U	R                  n
UR                  S UU
UU5      nUR                  X45        ME     U Hd  u  pUR                  5       n[        U	R                  U5       H	  u  pXS'   M     U R                  (       a  U R                  X5      nU S h  vN   Mf     U(       d  M  S S S 5        g ! [
         a    Sn   M  f = f N.! , (       d  f       g = f7f)N)max_workersFTc                 @    [        U R                  " U/UQ70 UD65      $ r   )listpredict)pipelineinput_instancesargskwargss       r!   <lambda><MultiDeviceSimpleInferenceExecutor.execute.<locals>.<lambda>7   s"    $,,_NtNvNIr#   
input_path)r   lenr   r   nextStopIteration	instancessubmitappendresultzipinput_pathsr   )r   inputr.   r/   poolinput_batchesout_of_datainput_future_pairsr,   input_batchr-   futurer9   r2   result_items                  r!   execute*MultiDeviceSimpleInferenceExecutor.execute$   s.      C,@AT //6MK!%'" $H&*=&9 '2&;&;O![[ !'F '--{.CD! !0* ,>'K#]]_F36{7N7NPV3W/
4>L1 4X//!%!9!9&!N%%% ,>/ "k BA ) &*0 &A BAsM   D2,D!DBD!0D1D!	D2DD!DD!!
D/+D2)r   r   r   )
__name__
__module____qualname____firstlineno__r   propertyr   rD   __static_attributes____classcell__r    s   @r!   r   r      s.    GK 6 6  && &&r#   r   c                   (  ^  \ rS rSrSSSSSSS.S\S\\   S\\   S\\\\4      S	\\   S
\	S\\
\\\4   \4      SS4U 4S jjjr\S 5       rS rS r\R$                  S 5       r\R$                  S 5       r\R$                  S 5       rS rSrU =r$ )#AutoParallelSimpleInferencePipelineM   NFr	   engineengine_config	pp_optionuse_hpip
hpi_configconfigr	   rR   rS   rT   rU   rV   returnc          
      r  > [         TU ]  " SUUUUUUS.UD6  Xl        SU l        U R                  b  [
        R                  " U R                  5      u  pU
b  [        U
5      S:  a  SU l        / U l        U
 HE  nU R                  U[
        R                  " X/5      5      nU R                  R                  U5        MG     U R                  U5      nU R                  U5      n[        U R                  UU R                  S9U l        U R                  (       d!  U R                  XR                  5      U l        gg)a  Initializes the auto-parallel simple inference pipeline.

Args:
    config (Dict): Configuration dictionary containing various settings.
    device (Optional[str], optional): The device to use for prediction. Defaults to `None`.
    engine (Optional[str], optional): Inference engine. Defaults to `None`.
    engine_config (Optional[Dict[str, Any]], optional): Engine-specific config. Defaults to `None`.
    pp_option (Optional[PaddlePredictorOption], optional): Paddle predictor options.
        Defaults to `None`.
    use_hpip (bool, optional): Whether to use HPIP. Defaults to `False`.
    hpi_config (Optional[Union[Dict[str, Any], HPIConfig]], optional): HPIP configuration.
        Defaults to `None`.
rQ   FNr   Tr    )r   r   _init_kwargs_multi_device_inferencer	   device_utilsparse_devicer3   r   _create_internal_pipelineconstr_devicer8   _get_batch_size_create_batch_samplerr   r   	_executor	_pipeline)r   rW   r	   rR   rS   rT   rU   rV   r/   device_type
device_ids	device_idr,   
batch_sizer   r    s                  r!   r   ,AutoParallelSimpleInferencePipeline.__init__N   s,   2 	 	
'!	
 	
 #',$;;"&2&?&?&L#K%#j/A*=/3,"$!+I#==$22;L H OO**84 ", "11&9
 $ : :: F!COO!'+'?'?"
 ++!;;FKKPDN ,r#   c                     U R                   $ r   )r\   r%   s    r!   multi_device_inference:AutoParallelSimpleInferencePipeline.multi_device_inference   s    +++r#   c                     U R                   (       a$  U R                  R                  S   n[        X!5      $ [        U R                  U5      $ )Nr   )r\   rc   r   getattrrd   )r   namefirst_pipelines      r!   __getattr__/AutoParallelSimpleInferencePipeline.__getattr__   s;    ''!^^55a8N>004>>400r#   c              /      #    U R                   (       a)  U R                  R                  " U/UQ70 UD6 S h  vN   g U R                  R                  " U/UQ70 UD6 S h  vN   g  N. N7fr   )r\   rc   rD   rd   r+   )r   r<   r.   r/   s       r!   r+   +AutoParallelSimpleInferencePipeline.predict   s~      ''~~--    ~~--   s!   5A*A&(A* A(!A*(A*c                     [         er   NotImplementedError)r   rW   r	   s      r!   r_   =AutoParallelSimpleInferencePipeline._create_internal_pipeline       !!r#   c                     [         er   rv   )r   rW   s     r!   ra   3AutoParallelSimpleInferencePipeline._get_batch_size   ry   r#   c                     [         er   rv   r   rh   s     r!   rb   9AutoParallelSimpleInferencePipeline._create_batch_sampler   ry   r#   c                     U$ r   rZ   )r   r9   rA   s      r!   r   7AutoParallelSimpleInferencePipeline._postprocess_result   s    r#   )rc   r[   r\   rd   r   )rF   rG   rH   rI   r   r   strr   r   boolr   r   r   rJ   rk   rq   r+   abcabstractmethodr_   ra   rb   r   rK   rL   rM   s   @r!   rO   rO   M   s"   
 !% $2659AE9Q9Q 	9Q
 9Q  S#X/9Q 129Q 9Q U4S>9#<=>9Q 
9Q 9Qv , ,1& 	" " 	" " 	" " r#   rO   c                   T    \ rS rSr\\R                  S 5       5       rS rS r	S r
Srg)(AutoParallelImageSimpleInferencePipeline   c                     [         er   rv   r%   s    r!   _pipeline_cls6AutoParallelImageSimpleInferencePipeline._pipeline_cls   s
     "!r#   c           
          U R                   " U4UU R                  U R                  U R                  U R                  U R
                  S.U R                  D6nU$ )NrQ   )r   rR   rS   rT   rU   rV   r[   )r   rW   r	   r,   s       r!   r_   BAutoParallelImageSimpleInferencePipeline._create_internal_pipeline   sY    %%	
;;,,nn]]	
 	
 r#   c                     [        U5      $ r   r   r}   s     r!   rb   >AutoParallelImageSimpleInferencePipeline._create_batch_sampler   s     ,,r#   c                 L    [        UR                  U5       H	  u  p4X4S'   M     U$ )N
page_index)r:   page_indexes)r   r9   rA   r   items        r!   r   <AutoParallelImageSimpleInferencePipeline._postprocess_result   s*     #K$<$<f EJ!+ !Fr#   rZ   N)rF   rG   rH   rI   rJ   r   r   r   r_   rb   r   rK   rZ   r#   r!   r   r      s1    "  "-r#   r   )r   concurrent.futuresr   typingr   r   r   r   utilsr	   r]   common.batch_samplerr   modelsr   r   baser   objectr   rO   r   rZ   r#   r!   <module>r      sH     1 - - + 4 5 1& 1&hg, gT/R r#   