
    6pjlG              !          S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r
  S SK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  S S	KJr  S S
KJrJrJrJr  S SK7  S SK J!r!  \RD                  S:  a  S SK#r#OS SKJ$r#  \!" \RJ                  S9r&S\'4S jr(S r)S\*S\'S\+4S jr,SdS jr-S r.1 Skr/\/Ra                  S15      r1\Rd                  Rg                  SS5      Ri                  5       r5\Rd                  Rg                  SS5      Ri                  5       r6Sr7\6\1;   aT  \5\/;  aN  \Rp                  Rs                  S5      SLr:\:(       a)   \#Rv                  " S5      r7\&Ry                  S\7 S 35        OO\&Ry                  S!5        Sr:\Rp                  Rs                  S"5      SLr> \#Rv                  " S"5      r?\&R                  S#\? 35        SrA\5\1;   a  \6\/;  a  \Rp                  Rs                  S$5      SLrB\B(       a$  S%rCSrA\C H  rD \#Rv                  " \D5      rA  O   \ASLrB\B(       aB  S S&KEJ;r;  \;R                  " \A5      \;R                  " S'5      :  a  O)\&Ry                  S(\A S 35        O\&Ry                  S)5        SrBS* rGS+ rHS, rIS- rJS. rKS/ rLS0 rMS1 rNS2 rOS3 rPS4 rQS5 rRS6 rSS7 rTS8 rUS9 rVS: rWS; rXS< rYS= rZ\S>\'4S? j5       r[\S>\'4S@ j5       r\\" SA\J\]44SB\I\^44SC\H\_44SD\Q\`44S$\Q\`44S"\L\a44SE\K\b44S\M\c44SF\O\dR                  SG\75      44SH\G\f44SI\R\g44SJ\S\h44SK\U" SL5      \i44SM\V\jR                  SNSO5      44SO\V\jR                  SNSO5      44SP\U" SP5      \k44SQ\U" SQ5      \k44SR\U" SR5      \l44SS\U" SS5      \m44ST\U" ST5      \n44SU\U" SU5      \o44SV\U" SV5      \p44SW\U" SW5      \q44SX\U" SX5      \r44SY\U" SY5      \s44SZ\U" SZ5      \t44S[\U" S[5      \u44S\\U" S\5      \v44/5      rw\x" / S]Q5      ryS^ rzS_ r{S` r| " Sa Sb\5      r}S\+4Sc jr~g! \#Rz                   a    Sr: GNf = f! \#Rz                   a    Sr> GNsf = f! \#Rz                   a     GMS  f = f)e    N)OrderedDict)	lru_cache)import_module)chain)Path)
ModuleType)Any)Requirement)	INDEX_KEY
MODULE_KEYREQUIREMENT_KEY
load_index)*)
get_logger)      )	log_levelpy_filec                 \   [         R                  R                  U 5      u  pUS:X  a  [        R                  " 5       n[
        R                  " U5      S   n[        R                  R                  SU5        [        U 5        [        U5      n[        R                  R                  S5        X44$ )zfImport module from a certrain file

Args:
    py_file: path to a python file to be imported

Return:

 r   )ospathsplitr   cwdospsplitextsysinsertvalidate_py_syntaxr   pop)r   dirnamebasefilemodule_namemods        Y/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/modelscope/utils/import_utils.pyimport_modules_from_filer&   $   sz     g.G"}((*,,x(+KHHOOAww

$CHHLLO    c                     [        U[        5      (       d   S5       e[        U[        5      (       d  UR                  n[        X5      n[        X 5      nXC:g  $ )zCheck if a method of base class is overridden in derived class.

Args:
    method (str): the method name to check.
    base_class (type): the class of the base class.
    derived_class (type | Any): the class or instance of the derived class.
z>base_class doesn't accept instance, Please pass class instead.)
isinstancetype	__class__getattr)method
base_classderived_classbase_methodderived_methods        r%   is_method_overriddenr2   8   sZ     j$'' IHI' mT**%//*-K]3N((r'   objr-   returnc                 N    [        X5      =(       a    [        [        X5      5      $ )zCheck whether the object has a method.

Args:
    method (str): The method name to check.
    obj (object): The object to check.

Returns:
    bool: True if the object has the method else False.
)hasattrcallabler,   )r3   r-   s     r%   
has_methodr8   K   s     3BHWS-A$BBr'   Fc                    U (       d  gSn[        U [        5      (       a  SnU /n [        U [        5      (       d  [        S[	        U 5       35      e/ nU  HO  n[        U[        5      (       d  [        U S[	        U5       S35      e [        U5      nUR                  U5        MQ     U(       a  US   nU$ ! [         a*    U(       a  [        R                  U S35        Sn NP[        ef = f)	a	  Import modules from the given list of strings.

Args:
    imports (list | str | None): The given module names to be imported.
    allow_failed_imports (bool): If True, the failed imports will return
        None. Otherwise, an ImportError is raise. Default: False.

Returns:
    list[module] | module | None: The imported modules.

Examples:
    >>> osp, sys = import_modules(
    ...     ['os.path', 'sys'])
    >>> import os.path as osp_
    >>> import sys as sys_
    >>> assert osp == osp_
    >>> assert sys == sys_
NFTz+custom_imports must be a list but got type z is of type z and cannot be imported.z! failed to import and is ignored.r   )
r)   strlist	TypeErrorr*   r   ImportErrorloggerwarningappend)importsallow_failed_importssingle_importimportedimpimported_tmps         r%   import_modulesrG   X   s    & M'3)gt$$9$w-IK 	KH#s##%|DI;.FGI I	"(-L 	%  A;O  	"##&GHI#!!	"s   B66+C*#C*c                     [        U SSS9 nUR                  5       nS S S 5         [        R                  " W5        g ! , (       d  f       N&= f! [         a  n[	        SU  SU 35      eS nAff = f)Nrzutf-8)encodingz'There are syntax errors in config file z: )openreadastparseSyntaxError)filenamefcontentes       r%   r   r      sm    	hg	.!&&( 
/3		'	 
/	.
  3 ""*2aS2 3 	33s    =A 
A
A.A))A.>   1ONYESTRUEAUTOUSE_TF	USE_TORCHzN/AtorchzPyTorch version z Found.z'Disabling PyTorch because USE_TF is settimmz#Successfully imported timm version 
tensorflow)
r]   ztensorflow-cpuztensorflow-gpuz
tf-nightlyztf-nightly-cpuztf-nightly-gpuzintel-tensorflowzintel-tensorflow-avx512ztensorflow-rocmztensorflow-macos)version2zTensorFlow version z-Disabling Tensorflow because USE_TORCH is setc                  D    [         R                  R                  S5      S L$ )Nscipy	importlibutil	find_spec r'   r%   is_scipy_availablerg          >>##G,D88r'   c                      [         R                  R                  S5      c  g[        5       =(       a    [         R                  R                  S5      $ )NsklearnFzsklearn.metrics)rc   rd   re   rg   rf   r'   r%   is_sklearn_availablerk      s8    ~~	*2OINN$<$<=N$OOr'   c                  D    [         R                  R                  S5      S L$ )Nsentencepiecerb   rf   r'   r%   is_sentencepiece_availablern      s    >>##O4D@@r'   c                      [         R                  R                  S5      c  g[         R                  R                  S5      S L$ )NgoogleFzgoogle.protobufrb   rf   r'   r%   is_protobuf_availablerq      s5    ~~)1>>##$56dBBr'   c                  D    [         R                  R                  S5      S L$ )N
tokenizersrb   rf   r'   r%   is_tokenizers_availablert      s    >>##L1==r'   c                      [         $ N)_timm_availablerf   r'   r%   is_timm_availablerx      s    r'   c                      [         $ rv   )_torch_availablerf   r'   r%   is_torch_availabler{      s    r'   c                  ^    [        5       (       a  SS Kn U R                  R                  5       $ g)Nr   F)r{   r[   cudais_available)r[   s    r%   is_torch_cuda_availabler      s$    zz&&((r'   c                  D    [         R                  R                  S5      S L$ )Nwenetruntimerb   rf   r'   r%   is_wenetruntime_availabler          >>##N34??r'   c                  D    [         R                  R                  S5      S L$ )Nswiftrb   rf   r'   r%   is_swift_availabler      rh   r'   c                      [         $ rv   )_tf_availablerf   r'   r%   is_tf_availabler     s    r'   c                  D    [         R                  R                  S5      S L$ )Ncv2rb   rf   r'   r%   is_opencv_availabler     s    >>##E*$66r'   c                  D    [         R                  R                  S5      S L$ )Nz	PIL.Imagerb   rf   r'   r%   is_pillow_availabler   	      >>##K0<<r'   c                 D    [         R                  R                  U 5      S L$ rv   rb   pkg_names    r%   _is_package_available_fnr     s    >>##H-T99r'   c                 8    [         R                  " [        U 5      $ rv   )	functoolspartialr   r   s    r%   is_package_availabler     s    5x@@r'   c                     [         R                  R                  S5      S L=(       a    [         R                  R                  S5      $ )Nespnet2espnetrb   r   s    r%   is_espnet_availabler     s5    >>##I.d: /NN$$X./r'   c                  D    [         R                  R                  S5      S L$ )Nvllmrb   rf   r'   r%   is_vllm_availabler     s    >>##F+477r'   c                  D    [         R                  R                  S5      S L$ )Ntransformersrb   rf   r'   r%   is_transformers_availabler     r   r'   c                  D    [         R                  R                  S5      S L$ )N	diffusersrb   rf   r'   r%   is_diffusers_availabler   "  r   r'   c                  D    [         R                  R                  S5      S L$ )Ntensorrt_llmrb   rf   r'   r%   is_tensorrt_llm_availabler   &  r   r'   packagec                 t   [        U 5      nUR                  n [        R                  R	                  U5      nUR
                  (       a?  UR
                  R                  U5      (       d  [        SU SU SUR
                   35      eg g ! [        R                  R                   a    [        SU S35      ef = f)Nz	Package 'z
' version z does not satisfy zRequired package 'z' is not installed)	r
   namerc   metadatar^   	specifiercontainsr=   PackageNotFoundError)r   reqr   installed_versions       r%   	_requiresr   *  s    
g
CxxHM%..66x@====))*;<<!z4E3F G((+89 9 = 
 22 M.xj8JKLLMs   A.B	 	.B7c                 <     [        U 5        g! [         a     gf = f)NTF)r   r=   )r   s    r%   existsr   9  s$    ' s    
protobufrm   rj   tfrs   r   	TORCH_VERra   r   PILzpai-easynlpeasynlpr   REQr   funasrkwsbpdecord	deepspeedfairseqfasttextmegatron_utiltext2sql_lgesqlmpi4py	open_cliptamingxformersr   )r   r   typingc                 V   [        U[        [        45      (       d  U/n[        U [        5      (       a  U nO3[	        U S5      (       a  U R
                  OU R                  R
                  n/ nU H^  nUS:X  d
  U[        ;   a  M  U[        ;   a
  [        U   nO$[        U5      n[        R                  SU5      nXg4nUR                  U5        M`     U VV	s/ s H$  u  pU" 5       (       a  M  U	R                  U5      PM&     n
nn	U
(       a  [        SR                  U
5      5      eg s  sn	nf )N__name__r   r   )r)   r;   tupler:   r6   r   r+   SYSTEM_PACKAGEREQUIREMENTS_MAAPINGr   GENERAL_IMPORT_ERRORreplacer@   formatr=   join)r3   requirementsr   checksr   checkcheck_fnerr_msg	availablemsgfaileds              r%   requiresr   k  s   lT5M22$~#s&s'1 3  3s||8;8N8N 	F"9~-&&(-E+C0H*225#>G'Ee  6<OV>99;cjjVFO"''&/**  Ps   D%+D%c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                  d   > [        5       (       a  T" U 0 UD6$ [        STR                   S35      e)NMethod `z` requires PyTorch.)r{   r=   r   argskwargsfuncs     r%   wrappertorch_required.<locals>.wrapper  s5    (((7JKLLr'   r   wrapsr   r   s   ` r%   torch_requiredr     s'    __TM M Nr'   c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc                  d   > [        5       (       a  T" U 0 UD6$ [        STR                   S35      e)Nr   z` requires TF.)r   r=   r   r   s     r%   r   tf_required.<locals>.wrapper  s4    (((~FGGr'   r   r   s   ` r%   tf_requiredr     s'    __TH H Nr'   c                      ^  \ rS rSrSr    SU 4S jjrS rU 4S jrS\S\	4S jr
S	\4S
 jrS r\S 5       r\S 5       rSrU =r$ )LazyImportModulei  Nc                   > [         TU ]  U5        [        UR                  5       5      U l        0 U l        UR                  5        H  u  pU	 H  n
XR
                  U
'   M     M     [        UR                  5       5      [        [        UR                  5       6 5      -   U l
        X l        X@l        [        R                  R                  U5      /U l        Uc  0 OUU l        Xl        X0l        Xpl        U(       a  U R+                  5         g g rv   )super__init__setkeys_modules_class_to_moduleitemsr;   r   values__all____file____spec__r   r   r!   __path___objects_name_import_structure_extra_import_func_try_to_import)selfr   module_fileimport_structuremodule_specextra_objectstry_to_pre_importextra_import_funckeyr   valuer+   s              r%   r   LazyImportModule.__init__  s     	,1134 "+113KC/2%%e,   4 ,1134t#**,-8/ /##56+3
!1"3! r'   c                     U R                   R                  5        H  n [        X5        M     g ! [         a&  n[        R                  SU SU 35         S nAM?  S nAff = f)Nzpre load module z error, please check )r   r   r,   	Exceptionr>   r?   )r   
sub_modulerS   s      r%   r   LazyImportModule._try_to_import  sa    //446JM) 7  M&zl2GsKM MMs   /
AAAc                 z   > [         TU ]  5       nU R                   H  nX!;  d  M
  UR                  U5        M     U$ rv   )r   __dir__r   r@   )r   resultattrr+   s      r%   r  LazyImportModule.__dir__  s8    " LLD!d# ! r'   r   r4   c                    XR                   ;   a  U R                   U   $ XR                  ;   a  U R                  U5      nOXR                  R	                  5       ;   a*  U R                  U R                  U   5      n[        X15      nOXU R                  b0  U R                  U5      nUc  [        SU R                   SU 35      eO[        SU R                   SU 35      e[        XU5        U$ )Nzmodule z has no attribute )
r   r   _get_moduler   r   r,   r   AttributeErrorr   setattr)r   r   r  modules       r%   __getattr__LazyImportModule.__getattr__  s    == ==&&== $$T*E**//11%%d&;&;D&ABFF)E$$0++D1E}$dmm_,>tfEG G  !$--(:4&AC C 	E"r'   r#   c           	      r  ^  U R                   S-   U-   m[        U4S jS 5       5      (       d5  U R                  5       nTU[           ;   a  U[           T   n[	        TU5        [
        R                  " SU-   U R                   5      $ ! [         a$  n[        SU R                    SU SU 35      UeS nAff = f)N.c              3   L   >#    U  H  nTR                  S U 35      v   M     g7f)zmodelscope.N)
startswith).0prefixmodule_name_fulls     r%   	<genexpr>/LazyImportModule._get_module.<locals>.<genexpr>  s.      I"G %//+fX0FGG"Gs   !$)hubutilsr^   fileiozFailed to import z@ because of the following error (look up to see its traceback):
)	r   anyget_ast_indexr   r   rc   r   r	  RuntimeError)r   r#   	ast_indexr   rS   r  s        @r%   r  LazyImportModule._get_module  s    	@#}}s2[@ I"GI I I !..0	#y'AA#,_#=>N#OL-|<**3+<dmmLL 	@#DMM?!K= A445389>?@	@s   BB 
B6B11B6c                 `    U R                   U R                  U R                  U R                  44$ rv   )r+   r   r   r   )r   s    r%   
__reduce__LazyImportModule.__reduce__  s-    ~~

DMM $ 6 6 8 8 	8r'   c                  j    [         R                  c  [        5       [         l        [         R                  $ rv   )r   
_AST_INDEXr   rf   r'   r%   r%  LazyImportModule.get_ast_index  s%    &&.*4,'***r'   c                    [         R                  5       nX[           ;   aO  U[           U    nU[           nX1[           ;   a  U[           U   n[        X45        [        R                  " U5        g[        R                  U  S35        g)zimport a lazy import module using signature

Args:
    signature (tuple): a tuple of str, (registry_name, registry_group_name, module_name)
z not found in ast index fileN)
r   r%  r   r   r   r   rc   r   r>   r?   )	signaturer'  	mod_indexr#   r   s        r%   r   LazyImportModule.import_module  sz     %224	),,!),Y7I#J/K88(9+F3##K0NNi[(DEFr'   )
r   r   r   r   r   r   r   r   r   r   )NNFN)r   
__module____qualname____firstlineno__r-  r   r   r  r:   r	   r  r  r*  staticmethodr%  r   __static_attributes____classcell__)r+   s   @r%   r   r     sv    J "##(#'"6M  (@s @"8 + +
 G Gr'   r   c                     U R                   n[        R                  " U5      nUR                  n[	        UR                  5       5      nX;   $ )z
Determine if attribute in specific class.

Args:
    cls: target class.
    attribute_name: the attribute name.

Returns:
    The attribute in the class or not.
)r   inspectr0  
parametersr;   r   )clsattribute_nameinit_methodr0  r;  param_namess         r%   has_attr_in_classr@    sB     ,,K!!+.I%%Jz()K((r'   )F)rM   r   rc   importlib.metadataimportlib.utilr:  loggingr   os.pathr   r   r   collectionsr   r   r   	itertoolsr   pathlibr   typesr   r   r	   packaging.requirementsr
   modelscope.utils.ast_utilsr   r   r   r   modelscope.utils.errormodelscope.utils.loggerr   version_infoimportlib_metadatar   WARNINGr>   r:   r&   r2   objectboolr8   rG   r   ENV_VARS_TRUE_VALUESunionENV_VARS_TRUE_AND_AUTO_VALUESenvirongetupperrY   rZ   _torch_versionrd   re   rz   r^   infor   rw   _timm_versiondebug_tf_versionr   
candidatespkg	packagingrN   rg   rk   rn   rq   rt   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   PROTOBUF_IMPORT_ERRORSENTENCEPIECE_IMPORT_ERRORSKLEARN_IMPORT_ERRORTENSORFLOW_IMPORT_ERRORTIMM_IMPORT_ERRORTOKENIZERS_IMPORT_ERRORPYTORCH_IMPORT_ERRORWENETRUNTIME_IMPORT_ERRORr   SCIPY_IMPORT_ERROROPENCV_IMPORT_ERRORPILLOW_IMPORT_ERROREASYNLP_IMPORT_ERRORr   AUDIO_IMPORT_ERRORDECORD_IMPORT_ERRORDEEPSPEED_IMPORT_ERRORFAIRSEQ_IMPORT_ERRORFASTTEXT_IMPORT_ERRORMEGATRON_UTIL_IMPORT_ERRORTEXT2SQL_LGESQL_IMPORT_ERRORMPI4PY_IMPORT_ERROROPENCLIP_IMPORT_ERRORTAMING_IMPORT_ERRORXFORMERS_IMPORT_ERRORSWIFT_IMPORT_ERRORr   r   r   r   r   r   r   r@  rf   r'   r%   <module>rx     s          	  
 #  #     .4 4 $ .f3	goo	.c ()&
CF 
CC 
CD 
C,^3 2  4 : :F8 D 	&	)	/	/	1JJNN;/557	--&@T2T ~~//8D	%/77@NKK*>*:'BC  KK9:..**62$>&..v6M
LL6}oFG 	**y@T/TNN,,\:$FM

 C088=  $4/%==%c(::KK-k]'BC
KK?@M9PAC>@97=:A/
8@=@ Ms M M C   #')>?@113 4%';<=	O456O%<=>!234+-DEF!#789''^DFG !#567
 "567
 "567))46JKL$%--eX>@ A#$,,UH=? @$X.0BCD#G,.@AB$X.0CDE'46LMN%i02FGH&z24IJK+O<13 4-.?@57 8$X.0CDE'46KLM$X.0CDE&z24IJK#G,.@ABG$$ $ L ,-+2		oGz oGd)d )_ "66 	%$	% .. O2 &:: s6   'P 1&P5 QP21P25Q
QQ#"Q#