
    9i7D              !       t   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JrJrJr  S S	K7  S S
KJr  \	R:                  S:  a  S SKrOS SKJ r  \" \RB                  S9r"S\#4S jr$S r%S\&S\#S\'4S jr(S_S jr)S r*1 Skr+\+RY                  S15      r-\R\                  R_                  SS5      Ra                  5       r1\R\                  R_                  SS5      Ra                  5       r2Sr3\2\-;   aT  \1\+;  aN  \Rh                  Rk                  S5      SLr6\6(       a)   \Rn                  " S5      r3\"Rq                  S\3 S35        OO\"Rq                  S5        Sr6\Rh                  Rk                  S 5      SLr: \Rn                  " S 5      r;\"Ry                  S!\; 35        Sr=\1\-;   a  \2\+;  a  \Rh                  Rk                  S"5      SLr>\>(       a$  S#r?Sr=\? H  r@ \Rn                  " \@5      r=  O   \=SLr>\>(       aB  S S$KAJ7r7  \7R                  " \=5      \7R                  " S%5      :  a  O)\"Rq                  S&\= S35        O\"Rq                  S'5        Sr>S( rCS) rDS* rES+ rFS, rGS- rHS. rIS/ rJS0 rKS1 rLS2 rMS3 rNS4 rOS5 rPS6 rQS7 rRS8 rSS9 rTS: rUS; rV\" S<\F\W44S=\E\X44S>\D\Y44S?\M\Z44S"\M\Z44S \H\[44S@\G\\44S\I\]44SA\K\^R                  SB\35      44SC\C\`44SD\N\a44SE\O\b44SF\Q" SG5      \c44SH\R\dR                  SISJ5      44SJ\R\dR                  SISJ5      44SK\Q" SK5      \e44SL\Q" SL5      \e44SM\Q" SM5      \f44SN\Q" SN5      \g44SO\Q" SO5      \h44SP\Q" SP5      \i44SQ\Q" SQ5      \j44SR\Q" SR5      \k44SS\Q" SS5      \l44ST\Q" ST5      \m44SU\Q" SU5      \n44SV\Q" SV5      \o44SW\Q" SW5      \p44/5      rq\r" / SXQ5      rsSY rtSZ ruS[ rv " S\ S]\5      rwS\'4S^ jrxg! \Rr                   a    Sr6 GNf = f! \Rr                   a    Sr: GN[f = f! \Rr                   a     GM;  f = f)`    N)OrderedDict)import_module)chain)Path)
ModuleType)Any)	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        ]/var/www/html/land-doc-ocr/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_overriddenr0   3   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*   )r1   r+   s     r#   
has_methodr6   F   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_modulesrE   S   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_availablere          >>##G,D88r%   c                      [         R                  R                  S5      c  g[        5       =(       a    [         R                  R                  S5      $ )NsklearnFzsklearn.metrics)ra   rb   rc   re   rd   r%   r#   is_sklearn_availableri      s8    ~~	*2OINN$<$<=N$OOr%   c                  D    [         R                  R                  S5      S L$ )Nsentencepiecer`   rd   r%   r#   is_sentencepiece_availablerl      s    >>##O4D@@r%   c                      [         R                  R                  S5      c  g[         R                  R                  S5      S L$ )NgoogleFzgoogle.protobufr`   rd   r%   r#   is_protobuf_availablero      s5    ~~)1>>##$56dBBr%   c                  D    [         R                  R                  S5      S L$ )N
tokenizersr`   rd   r%   r#   is_tokenizers_availablerr      s    >>##L1==r%   c                      [         $ N)_timm_availablerd   r%   r#   is_timm_availablerv      s    r%   c                      [         $ rt   )_torch_availablerd   r%   r#   is_torch_availablery      s    r%   c                  ^    [        5       (       a  SS Kn U R                  R                  5       $ g)Nr   F)ry   rY   cudais_available)rY   s    r#   is_torch_cuda_availabler}      s$    zz&&((r%   c                  D    [         R                  R                  S5      S L$ )Nwenetruntimer`   rd   r%   r#   is_wenetruntime_availabler          >>##N34??r%   c                  D    [         R                  R                  S5      S L$ )Nswiftr`   rd   r%   r#   is_swift_availabler      rf   r%   c                      [         $ rt   )_tf_availablerd   r%   r#   is_tf_availabler      s    r%   c                  D    [         R                  R                  S5      S L$ )Ncv2r`   rd   r%   r#   is_opencv_availabler      s    >>##E*$66r%   c                  D    [         R                  R                  S5      S L$ )Nz	PIL.Imager`   rd   r%   r#   is_pillow_availabler         >>##K0<<r%   c                 D    [         R                  R                  U 5      S L$ rt   r`   pkg_names    r#   _is_package_available_fnr     s    >>##H-T99r%   c                 8    [         R                  " [        U 5      $ rt   )	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espnetr`   r   s    r#   is_espnet_availabler     s5    >>##I.d: /NN$$X./r%   c                  D    [         R                  R                  S5      S L$ )Nvllmr`   rd   r%   r#   is_vllm_availabler     s    >>##F+477r%   c                  D    [         R                  R                  S5      S L$ )Ntransformersr`   rd   r%   r#   is_transformers_availabler     r   r%   c                  D    [         R                  R                  S5      S L$ )N	diffusersr`   rd   r%   r#   is_diffusers_availabler     r   r%   c                  D    [         R                  R                  S5      S L$ )Ntensorrt_llmr`   rd   r%   r#   is_tensorrt_llm_availabler   !  r   r%   protobufrk   rh   tfrq   r   	TORCH_VERr_   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'   r9   tupler8   r4   r   r)   SYSTEM_PACKAGEREQUIREMENTS_MAAPINGr   GENERAL_IMPORT_ERRORreplacer>   formatr;   join)r1   requirementsnamechecksreqcheckcheck_fnerr_msg	availablemsgfaileds              r#   requiresr   N  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.)ry   r;   r   argskwargsfuncs     r#   wrappertorch_required.<locals>.wrapperi  s5    (((7JKLLr%   r   wrapsr   r   s   ` r#   torch_requiredr   g  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>.wrapperu  s4    (((~FGGr%   r   r   s   ` r#   tf_requiredr   s  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 rt   )super__init__setkeys_modules_class_to_moduleitemsr9   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_modulerQ   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$ rt   )r   __dir__r   r>   )r   resultattrr)   s      r#   r  LazyImportModule.__dir__  s8    " LLD!d# ! r%   r   r2   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   ra   r   r   RuntimeError)r   r!   	ast_indexr   rQ   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$ rt   )r)   r   r   r   )r   s    r#   
__reduce__LazyImportModule.__reduce__  s-    ~~

DMM $ 6 6 8 8 	8r%   c                  j    [         R                  c  [        5       [         l        [         R                  $ rt   )r   
_AST_INDEXr   rd   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   ra   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  r8   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   inspectr$  
parametersr9   r   )clsattribute_nameinit_methodr$  r/  param_namess         r#   has_attr_in_classr4    sB     ,,K!!+.I%%Jz()K((r%   )F)yrK   r   ra   r.  loggingr   os.pathr   r   r   collectionsr   r   	itertoolsr   pathlibr   typesr   r   r   modelscope.utils.ast_utilsr	   r
   r   r   modelscope.utils.errormodelscope.utils.loggerr   version_infoimportlib_metadataimportlib.metadatametadataWARNINGr<   r8   r$   r0   objectboolr6   rE   r   ENV_VARS_TRUE_VALUESunionENV_VARS_TRUE_AND_AUTO_VALUESenvirongetupperrW   rX   _torch_versionrb   rc   rx   r\   infoPackageNotFoundErrorru   _timm_versiondebug_tf_versionr   
candidatespkg	packagingrL   re   ri   rl   ro   rr   rv   ry   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   r4  rd   r%   r#   <module>rl     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@=@ #')>?@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 )o
 "66 	%$	% .. O2 &:: s6   'O0 &P	 ?P"0PP	PP"P76P7