
    j                         d dl Z d dl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mZ dZd	 Zd
 Z G d de j                  Z G d de          ZdS )    N)create_pipeline)load_pipeline_config)AttrDict)DependencyError   )CLISubcommandExecutor)add_common_cli_optsparse_common_argsprepare_common_init_argsc                    |                                  }|                                D ]X\  }}||v rJt          ||         t                    r/t          |t                    rt	          ||         |          ||<   S|||<   Y|S N)copyitems
isinstancedict_merge_dicts)d1d2reskvs        i/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddleocr/_pipelines/base.pyr   r   !   s|    
''))C

  188
3q64008Z45H5H8!#a&!,,CFFCFFJ    c                    t          | t                    rd |                                 D             S t          | t                    rd |                                 D             S t          | t                    rd | D             S | S )Nc                 4    i | ]\  }}|t          |          S  _to_builtin.0r   r   s      r   
<dictcomp>z_to_builtin.<locals>.<dictcomp>-   $    :::da;q>>:::r   c                 4    i | ]\  }}|t          |          S r   r   r   s      r   r!   z_to_builtin.<locals>.<dictcomp>/   r"   r   c                 ,    g | ]}t          |          S r   r   )r    items     r   
<listcomp>z_to_builtin.<locals>.<listcomp>1   s     222dD!!222r   )r   r   r   r   list)objs    r   r   r   +   s    #x   ::ciikk::::	C		 ::ciikk::::	C		 22c2222
r   c                        e Zd Zdd fd
Zeej        d                         Zd Zd Z	e
ej        d                         Zd Zd	 Zd
 Z xZS )PaddleXPipelineWrapperN)paddlex_configc                    t                                                       || _        t          |t                    | _        |                                 | _        |                                 | _	        d S )N)default_enable_hpi)
super__init___paddlex_configr
   _DEFAULT_ENABLE_HPI_common_args_get_merged_paddlex_config_merged_paddlex_config_create_paddlex_pipelinepaddlex_pipeline)selfr+   common_args	__class__s      r   r/   zPaddleXPipelineWrapper.__init__7   sp     	--,?
 
 
 '+&E&E&G&G# $ = = ? ?r   c                     t           r   NotImplementedErrorr7   s    r   _paddlex_pipeline_namez-PaddleXPipelineWrapper._paddlex_pipeline_nameE   
     "!r   c                     t          |dd          5 }t          | j                  }t          j        ||           d d d            d S # 1 swxY w Y   d S )Nwzutf-8)encoding)openr   r4   yaml	safe_dump)r7   	yaml_pathfconfigs       r   export_paddlex_config_to_yamlz4PaddleXPipelineWrapper.export_paddlex_config_to_yamlJ   s    )S7333 	&q !<==FN61%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   *A

AAc                 8    | j                                          d S r   )r6   closer=   s    r   rK   zPaddleXPipelineWrapper.closeO   s    ##%%%%%r   c                     t           r   r;   )clss    r   get_cli_subcommand_executorz2PaddleXPipelineWrapper.get_cli_subcommand_executorR   r?   r   c                     i S r   r   r=   s    r   _get_paddlex_config_overridesz4PaddleXPipelineWrapper._get_paddlex_config_overridesW   s    	r   c                     | j         t          | j                  }n6t          | j         t                    rt          | j                   }n| j         }|                                 }t          ||          S r   )r0   r   r>   r   strrP   r   )r7   rH   	overridess      r   r3   z1PaddleXPipelineWrapper._get_merged_paddlex_configZ   sm    ')$*EFFFF,c22 	*)$*>??FF)F6688	FI...r   c                     t          d | j                  }	 t          dd| j        i|S # t          $ r}t          d          |d }~ww xY w)NrH   zA dependency error occurred during pipeline creation. Please refer to the installation documentation to ensure all required dependencies are installed.r   )r   r2   r   r4   r   RuntimeError)r7   kwargses      r   r5   z/PaddleXPipelineWrapper._create_paddlex_pipelinef   so    )$0ABB	"PP$*EPPPP 	 	 	 j 	s   * 
A	AA	)__name__
__module____qualname__r/   propertyabcabstractmethodr>   rI   rK   classmethodrN   rP   r3   r5   __classcell__)r9   s   @r   r*   r*   6   s         @ @ @ @ @ @ @ " "  X"& & &
& & & " "  ["  
/ 
/ 
/      r   r*   )	metaclassc                   d    e Zd Zeej        d                         Zd Zej        d             ZdS )PipelineCLISubcommandExecutorc                     t           r   r;   r=   s    r   subparser_namez,PipelineCLISubcommandExecutor.subparser_nameq   r?   r   c                     |                     | j                  }|                     |           t          |t          d           |                    dt          d           |S )N)nameT)r-   allow_multiple_devicesz--paddlex_configz,Path to PaddleX pipeline configuration file.)typehelp)
add_parserrd   _update_subparserr	   r1   add_argumentrR   )r7   
subparsers	subparsers      r   add_subparserz+PipelineCLISubcommandExecutor.add_subparserv   s    ))t/B)CC	y)))2#'	
 	
 	
 	

 	? 	 	
 	
 	

 r   c                     t           r   r;   )r7   rn   s     r   rk   z/PipelineCLISubcommandExecutor._update_subparser   s    !!r   N)	rX   rY   rZ   r[   r\   r]   rd   ro   rk   r   r   r   rb   rb   p   si        " "  X"   	" " " " "r   rb   )r\   rD   paddlexr   paddlex.inferencer   paddlex.utils.configr   paddlex.utils.depsr   	_abstractr   r2   r	   r
   r   r1   r   r   ABCMetar*   rb   r   r   r   <module>rw      s2   


  # # # # # # 2 2 2 2 2 2 ) ) ) ) ) ) . . . . . . - - - - - -               7 7 7 7 7s{ 7 7 7 7t" " " " "$9 " " " " "r   