
    jj)                        d dl Zd dlZd dlZd dl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  ej        d          Zh d	Zg d
Z G d de          Zd Zd Z e            Zd-dZ e            Z ed          Zd Z e            d-d            ZdddZd Zd Z  e            d             Z!ddddZ"dddZ#d Z$d Z%d  Z&d! Z'd" Z(d# Z)d$ Z*d% Z+d.d'Z,d.d(Z-d) Z.d* Z/d+ Z0d, Z1dS )/    N)defaultdict)	lru_cachewraps)Requirement)Version   )loggingzG(?:;|and)*[ \t]*extra[ \t]*==[ \t]*['\"]([a-z0-9]+(?:-[a-z0-9]+)*)['\"]>   allbaseplugins)zfastdeploy-serverzvllm-serverzsglang-serverc                       e Zd ZdS )DependencyErrorN)__name__
__module____qualname__     b/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddlex/utils/deps.pyr   r   #   s        Dr   r   c                     t                               |           }|rN|                    d          | d |                                         | |                                d          z   fS d | fS )Nr   )_EXTRA_PATTERNsearchgroupstartend)dep_specms     r   '_get_extra_name_and_remove_extra_markerr   '   sc    h''A wwqzz8KaggiiK08AEEGGII3FFFFX~r   c                     t           j                            d          } i }|                     dg           D ]"}|t          vrt	          t
                    ||<   #t           j                            d          D ]v}t          |          \  }}|`|t          vrW|                                }t          |          }||v s
J |            ||         |j
                                     |           w|S )NpaddlexzProvides-Extra)	importlibmetadataget_all_COLLECTIVE_EXTRA_NAMESr   listrequiresr   rstripr   nameappend)r!   extrasr'   r   
extra_namereqs         r   _get_extrasr,   0   s    !**955HF  !1266 - -...&t,,F4L&//	:: : :FxPP
H!j8O&O&O((Hh''C'''''':sx(//999Mr   Fc                 8   t          t                    }t          j                            d          D ]e}t          |          \  }}| r|
| sK||dk    rC|                                }t          |          }||j                 	                    |           f|S )Nr   r   )
r   r$   r    r!   r%   r   r&   r   r'   r(   )required_only	dep_specsr   r*   r+   s        r   _get_base_dep_specsr0   D   s    D!!I&//	:: 1 1FxPP
H 	1j0 1#-#5v9M9M((Hh''Cch&&x000r   T)r.   c                 x    	 t           j                            |           S # t           j        j        $ r Y d S w xY wN)r    r!   versionPackageNotFoundError)deps    r   get_dep_versionr6   U   sF    !))#...2   tts   ! 99c                   | dv r|rt          d          | dk    r!t          j                            d          d uS | dk    r!t          j                            d          d uS | dk    r!t          j                            d          d uS | d	k    r!t          j                            d	          d uS | d
k    r!t          j                            d
          d uS t	          |           }|dS |rP| t
          vrt          d          t
          |          D ](}t          |          t          |          j        v r dS )d S dS )N)paddlepaddlepaddle-custom-deviceultra-infer
fastdeployzx`check_version` is not allowed to be `True` for `paddlepaddle`, `paddle-custom-device`, `ultra-infer`, and `fastdeploy`.r8   paddler9   paddle_custom_devicer:   ultra_inferr;   onnxruntimeFzHCurrently, `check_version=True` is supported only for base dependencies.T)	
ValueErrorr    util	find_specr6   BASE_DEP_SPECSr   r   	specifier)r5   check_versionr3   r   s       r   is_dep_availablerF   \   s    	TTT 	U  G
 
 	
 n~''11==	&	&	&~''(>??tKK			~''66dBB			~''55TAA			~''66dBBc""Gu 	n$$[   's+ 	 	Hw;x#8#8#BBBtt C	 	 tr   )obj_namec                     d |D             }t          |          dk    r5| d|  d}nd}|dd                    |          z   z  }t          |          d S )Nc                 0    g | ]}t          |          |S r   rF   .0r5   s     r   
<listcomp>z require_deps.<locals>.<listcomp>   s&    III3CC3H3HIIIIr   r   `z#` is not ready for use, because theThez+ following dependencies are not available:

)lenjoinr   )rG   depsunavailable_depsmsgs       r   require_depsrV      s    IItIII
q  ChCCCCCC=		A
 A
 
 	
 c""" ! r   c                        fd}|S )Nc                 f     t                      fd            }t                     _        |S )Nc                  @    t          j        dj        i  | i |S NrG   rV   _deps_r   )argskwargsfuncs     r   _wrapperz7function_requires_deps.<locals>._deco.<locals>._wrapper   s/    $+>>>>4((((r   )r   setr\   )r_   r`   rS   s   ` r   _decoz%function_requires_deps.<locals>._deco   sA    	t	) 	) 	) 	) 
	) $iir   r   rS   rb   s   ` r   function_requires_depsrd      s#         Lr   c                        fd}|S )Nc                 N    t           j                   fd            }t                     _        t	          j                   dd         D ]1}t          |d          r j                            |j                   2d j        v r j        n fd}|| _         S )Nc                 H    t          j        dj        i  | g|R i |S rZ   r[   )selfr]   r^   clsold_init_funcs      r   r`   z4class_requires_deps.<locals>._deco.<locals>._wrapper   s:    #*<s|<<< =7777777r   r   r\   __init__c                 :     t          |           j        |i |S r2   )superrl   )rh   r]   r^   ri   s      r   _forwardz4class_requires_deps.<locals>._deco.<locals>._forward   s%    0uS$''0$A&AAAr   )	r   rl   ra   r\   inspectgetmrohasattrupdate__dict__)ri   r`   base_clsro   rj   rS   s   `   @r   rb   z"class_requires_deps.<locals>._deco   s    	s|			8 	8 	8 	8 	8 
		8 YY
s++AbD1 	3 	3Hx** 3
!!(/222%%LMMB B B B B %M
r   r   rc   s   ` r   class_requires_depsrv      s#        * Lr   c                     d t           |          D             }t          |          rdS t          j        dd t	          t           |          |          D                        dS )Nc                 ,    g | ]}t          |          S r   rJ   rK   s     r   rM   z&is_extra_available.<locals>.<listcomp>   s!    <<<sc""<<<r   Tz(These dependencies are not available: %sc                     g | ]	\  }}||
S r   r   )rL   dfs      r   rM   z&is_extra_available.<locals>.<listcomp>   s!    :::tq!::::r   F)EXTRASr
   r	   debugzip)extraflagss     r   is_extra_availabler      si    <<fUm<<<E
5zz tM2::s6%=%00:::   5r   rG   altc                    t          |           s|t          |          rd S |d| d}nd}|d|  d|  dz  }|	|d| dz  }t          |          )	NrN   z#` requires additional dependencies.z%Additional dependencies are required.z, To install them, run `pip install "paddlex[ul   ]==<PADDLEX_VERSION>"` if you’re installing `paddlex` from an index, or `pip install -e "/path/to/PaddleX[u-   ]"` if you’re installing `paddlex` locally.z) Alternatively, you can install `paddlex[z]` instead.)r   r   )r   rG   r   rU   s       r   require_extrar      s    %   S_9KC9P9P_?(???5  b%  b  b  ns  b  b  b  bC
K3KKKK
#

r   )r   c                      fd}|S )Nc                     t          | j                  fd            }| j        | j        t          t                    r%t                    dk    s
J             d         || _        | S )Nc                 @    t                      | g|R i |S )Nr   )r   )rh   r]   r^   r   r   rj   pipeline_names      r   r`   z8pipeline_requires_extra.<locals>._deco.<locals>._wrapper   s8    %-SAAAA =7777777r   r   r   )r   rl   entities
isinstancer$   rQ   )pipeline_clsr`   rj   r   r   r   s     @@r   rb   z&pipeline_requires_extra.<locals>._deco   s    	|$	%	%	8 	8 	8 	8 	8 	8 	8 
&	%	8 %-$-mT** 	-}%%***M***)!,M (r   r   )r   r   rb   s   `` r   pipeline_requires_extrar      s)          Lr   c                       t          d          S )Nr:   rJ   r   r   r   is_hpip_availabler          M***r   c                  @    t                      st          d          d S )NzSThe high-performance inference plugin is not available. Please install it properly.)r   r   r   r   r   require_hpipr      s/     
a
 
 	

 
r   c                       t          d          S Nservingr   r   r   r   is_serving_plugin_availabler      s    i(((r   c                  @    t                      st          d          d S )Nz@The serving plugin is not available. Please install it properly.)r   r   r   r   r   require_serving_pluginr      s/    &(( 
N
 
 	

 
r   c                  X    g } t           d                                         D ]}| |z  } | S r   r|   valuesr/   items     r   get_serving_dep_specsr      s9    Iy!((**  T		r   c                       t          d          S Npaddle2onnxrJ   r   r   r   is_paddle2onnx_plugin_availabler      r   r   c                  @    t                      st          d          d S )NzDThe Paddle2ONNX plugin is not available. Please install it properly.)r   r   r   r   r   require_paddle2onnx_pluginr      s/    *,, 
R
 
 	

 
r   c                  X    g } t           d                                         D ]}| |z  } | S r   r   r   s     r   get_paddle2onnx_dep_specsr     s9    I}%,,..  T		r   anyc                 :   | dk    r| t           vrt          d|            | dk    rt           D ]}t          |          r dS dS d| v rt          d          S t	          d|            r0ddlm}  |            rt          d	          ot          d
          S dS dS )Nr   zUnknown backend type: TFr;   genai-r   )is_cuda_availablexformersz
flash-attn) _SUPPORTED_GENAI_ENGINE_BACKENDSr@    is_genai_engine_plugin_availablerF   r   envr   )backendber   s      r   r   r     s    %G+KKK;';;<<<%2 	 	B/33 ttu7""#L111 2 2 233 	......  "" W'
33V8H8V8VV4ur   c                     t          |           s.| dk    rd}ndt          |            d}t          | d          d S )Nr   z$The generative AI engine plugins arezThe generative AI z engine plugin isz+ not available. Please install it properly.)r   reprRuntimeError)r   prefixs     r   require_genai_engine_pluginr      s^    +G44 Se;FFJ$w--JJJFfQQQRRRS Sr   c                       t          d          S )Nzgenai-clientr   r   r   r    is_genai_client_plugin_availabler   )  s    n---r   c                  @    t                      st          d          d S )NzMThe generative AI client plugin is not available. Please install it properly.)r   r   r   r   r   require_genai_client_pluginr   -  s/    +-- 
[
 
 	

 
r   c                 P    d}| |vrt          d|            | dk    rdS t          )N)gpuzUnsupported device type: r   zfastdeploy-gpu == 2.3.0)r@   AssertionError)device_typeSUPPORTED_DEVICE_TYPESs     r   get_genai_fastdeploy_specr   4  sB    %000B[BBCCCe((r   c                     | dk    r| t           vrt          d|            d| v rt          t          |            d          g }t          d|                                           D ]}||z  }|S )NclientzInvalid type: r;   z is not supportedr   )r   r@   r   r|   r   )typer/   r   s      r   get_genai_dep_specsr   >  s    xD(HHH0$00111tDJJ999:::I'..00  T		r   )F)r   )2importlib.metadatar    importlib.utilrp   recollectionsr   	functoolsr   r   packaging.requirementsr   packaging.versionr    r	   compiler   r#   r   	Exceptionr   r   r,   r|   r0   rC   REQUIRED_DEP_SPECSr6   rF   rV   rd   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s	            				 # # # # # # & & & & & & & & . . . . . . % % % % % %      N  544 #X#X#X  	 	 	 	 	i 	 	 	    " 

 
 
 
 %$&&((t<<<       D "& 
# 
# 
# 
# 
#
 
 
  2    &*t 
 
 
 
 
 +/     $+ + +
 
 
) ) )
 
 
  + + +
 
 
     (S S S S. . .
 
 
  	 	 	 	 	r   