
    u-jlG              !       	   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	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 d dlmZ d d	lmZ d d
lmZmZmZmZ d dlT d dl m!Z! ej"        dk     rd dl#Z#nd dlm$Z#  e!ej%                  Z&de'fdZ(d Z)de*de'de+fdZ,dddZ-d Z.h dZ/e/0                    dh          Z1ej2        3                    dd          4                                Z5ej2        3                    dd          4                                Z6dZ7e6e1v r`e5e/vr\ej8        9                    d          duZ:e:r=	  e#j;        d          Z7e&<                    de7 d            n*# e#j=        $ r dZ:Y nw xY wne&<                    d!           dZ:ej8        9                    d"          duZ>	  e#j;        d"          Z?e&@                    d#e?            n# e#j=        $ r dZ>Y nw xY wdZAe5e1v re6e/vrej8        9                    d$          duZBeBr/d%ZCdZAeCD ]$ZD	  e#j;        eD          ZA n# e#j=        $ r Y !w xY weAduZBeBrBd d&lEm;Z;  e;jF        eA           e;jF        d'          k     rn1e&<                    d(eA d            ne&<                    d)           dZBd* ZGd+ ZHd, ZId- ZJd. ZKd/ ZLd0 ZMd1 ZNd2 ZOd3 ZPd4 ZQd5 ZRd6 ZSd7 ZTd8 ZUd9 ZVd: ZWd; ZXd< ZYd= ZZed>e'fd?            Z[ed>e'fd@            Z\ edAeJe]ffdBeIe^ffdCeHe_ffdDeQe`ffd$eQe`ffd"eLeaffdEeKebffdeMecffdFeOede                    dGe7          ffdHeGefffdIeRegffdJeSehffdK eUdL          eiffdMeVeje                    dNdO          ffdOeVeje                    dNdO          ffdP eUdP          ekffdQ eUdQ          ekffdR eUdR          elffdS eUdS          emffdT eUdT          enffdU eUdU          eoffdV eUdV          epffdW eUdW          eqffdX eUdX          erffdY eUdY          esffdZ eUdZ          etffd[ eUd[          euffd\ eUd\          evffg          Zw exg d]          Zyd^ Zzd_ Z{d` Z| G da dbe          Z}de+fdcZ~dS )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                 n   t           j                            |           \  }}|dk    rt          j                    }t          j        |          d         }t          j                            d|           t          |            t          |          }t          j                            d           ||fS )zw Import 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/banglarbhumi/venv/lib/python3.11/site-packages/modelscope/utils/import_utils.pyimport_modules_from_filer&   $   s     g..GX"}}(**,x((+KHOOAww

$
$CHLLOOO    c                     t          |t                    s
J d            t          |t                    s|j        }t          ||           }t          ||           }||k    S )a  Check 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   st     j$'' I IHI I' mT** 0%/*f--K]F33N[((r'   objr-   returnc                 \    t          | |          ot          t          | |                    S )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-A$B$BBr'   Fc                    | sdS d}t          | t                    rd}| g} t          | t                    st          dt	          |                      g }| D ]}t          |t                    s"t          | dt	          |           d          	 t          |          }n9# t          $ r, |r t                              | d           d}nt          Y nw xY w|	                    |           |r|d         }|S )	aA  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   sV   &  M'3 )gt$$ KI$w--IIK K 	KH & &#s## 	IGGDIIGGGI I I	"(--LL 	" 	" 	"# "#HHHIII#!! 	" 	%%%% A;Os   B##3CCc                     t          | dd          5 }|                                }d d d            n# 1 swxY w Y   	 t          j        |           d S # t          $ r}t	          d|  d|           d }~ww xY w)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      s    	hg	.	.	. !&&((              3	' 3 3 3 2"*2 2./2 2 3 3 	33s$   488 A 
A: A55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    t           j                            d          d uS )Nscipy	importlibutil	find_spec r'   r%   is_scipy_availablerg          >##G,,D88r'   c                      t           j                            d          dS t                      ot           j                            d          S )NsklearnFzsklearn.metrics)rc   rd   re   rg   rf   r'   r%   is_sklearn_availablerk      s?    ~	**2uOIN$<$<=N$O$OOr'   c                  D    t           j                            d          d uS )Nsentencepiecerb   rf   r'   r%   is_sentencepiece_availablern      s    >##O44D@@r'   c                      t           j                            d          dS t           j                            d          d uS )NgoogleFzgoogle.protobufrb   rf   r'   r%   is_protobuf_availablerq      s9    ~))1u>##$566dBBr'   c                  D    t           j                            d          d uS )N
tokenizersrb   rf   r'   r%   is_tokenizers_availablert      s    >##L11==r'   c                      t           S N)_timm_availablerf   r'   r%   is_timm_availablerx      s    r'   c                      t           S rv   )_torch_availablerf   r'   r%   is_torch_availabler{      s    r'   c                  \    t                      rdd l} | j                                        S dS )Nr   F)r{   r[   cudais_available)r[   s    r%   is_torch_cuda_availabler      s2     z&&(((ur'   c                  D    t           j                            d          d uS )Nwenetruntimerb   rf   r'   r%   is_wenetruntime_availabler          >##N334??r'   c                  D    t           j                            d          d uS )Nswiftrb   rf   r'   r%   is_swift_availabler      rh   r'   c                      t           S rv   )_tf_availablerf   r'   r%   is_tf_availabler     s    r'   c                  D    t           j                            d          d uS )Ncv2rb   rf   r'   r%   is_opencv_availabler     s    >##E**$66r'   c                  D    t           j                            d          d uS )Nz	PIL.Imagerb   rf   r'   r%   is_pillow_availabler   	      >##K00<<r'   c                 D    t           j                            |           d uS rv   rb   pkg_names    r%   _is_package_available_fnr     s    >##H--T99r'   c                 6    t          j        t          |           S rv   )	functoolspartialr   r   s    r%   is_package_availabler     s    5x@@@r'   c                     t           j                            d          d uot           j                            d          S )Nespnet2espnetrb   r   s    r%   is_espnet_availabler     s7    >##I..d: /N$$X../r'   c                  D    t           j                            d          d uS )Nvllmrb   rf   r'   r%   is_vllm_availabler     s    >##F++477r'   c                  D    t           j                            d          d uS )Ntransformersrb   rf   r'   r%   is_transformers_availabler     r   r'   c                  D    t           j                            d          d uS )N	diffusersrb   rf   r'   r%   is_diffusers_availabler   "  r   r'   c                  D    t           j                            d          d uS )Ntensorrt_llmrb   rf   r'   r%   is_tensorrt_llm_availabler   &  r   r'   packagec                 H   t          |           }|j        }	 t          j                            |          }|j        r7|j                            |          st          d| d| d|j                   d S d S # t          j        j        $ r t          d| d          w xY w)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xHM%.66x@@= 	9=))*;<< 9!8 8 84E 8 8(+8 89 9 9	9 	99 9 2 M M MKxKKKLLLMs   AA9 9(B!c                 H    	 t          |            dS # t          $ r Y dS w xY w)NTF)r   r=   )r   s    r%   existsr   9  s<    't   uu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                    t          |t          t          f          s|g}t          | t                    r| n#t	          | d          r| j        n| j        j        g }|D ]l}|dk    s	|t          v r|t          v rt          |         }n.t          |          }t                              d|          }||f}|                    |           mfd|D             }|r"t          d                    |                    d S )N__name__r   r   c                 T    g | ]$\  }} |            |                               %S rf   )format).0	availablemsgr   s      r%   
<listcomp>zrequires.<locals>.<listcomp>  s4    OOO>9c99;;OcjjOOOr'   )r)   r;   tupler:   r6   r   r+   SYSTEM_PACKAGEREQUIREMENTS_MAAPINGr   GENERAL_IMPORT_ERRORreplacer@   r=   join)	r3   requirementschecksr   checkcheck_fnerr_msgfailedr   s	           @r%   requiresr   k  s+   lT5M22 &$~#s O&s'1 3  3 Os||8;8N 	F 	 	"99~--&&&(-EE+C00H*225#>>Gw'EeOOOOVOOOF +"''&//***+ +r'   c                 F     t          j                    fd            }|S )Nc                  `    t                      r | i |S t          dj         d          )NMethod `z` requires PyTorch.)r{   r=   r   argskwargsfuncs     r%   wrapperztorch_required.<locals>.wrapper  sC     	M4((((KKKKLLLr'   r   wrapsr   r   s   ` r%   torch_requiredr     s=    _TM M M M M Nr'   c                 F     t          j                    fd            }|S )Nc                  `    t                      r | i |S t          dj         d          )Nr   z` requires TF.)r   r=   r   r   s     r%   r   ztf_required.<locals>.wrapper  sC     	H4((((FFFFGGGr'   r   r   s   ` r%   tf_requiredr     s=    _TH H H H H Nr'   c                        e Zd ZdZ	 	 	 	 d fd	Zd Z fdZdedefdZ	d	efd
Z
d Zed             Zed             Z xZS )LazyImportModuleNFc                 j   t                                          |           t          |                                          | _        i | _        |                                D ]\  }}	|	D ]}
|| j        |
<   t          |                                          t          t          |	                                           z   | _
        || _        || _        t          j                            |          g| _        |i n|| _        || _        || _        || _        |r|                                  d S d S 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   zLazyImportModule.__init__  s?    	,113344 "+1133 	3 	3KC 3 3/2%e,,3 ,113344t#**,,-8/ 8/ /##556+3
!1"3 	"!!!!!	" 	"r'   c                     | j                                         D ]J}	 t          | |           # t          $ r*}t                              d| d|            Y d }~Cd }~ww xY wd S )Nzpre load module z error, please check )r   r   r,   	Exceptionr>   r?   )r   
sub_modulerS   s      r%   r   zLazyImportModule._try_to_import  s    /4466 	M 	MJMj)))) M M MKzKKKKM M M M M M M MM	M 	Ms   .
A" AA"c                     t                                                      }| j        D ]}||vr|                    |           |S rv   )r   __dir__r   r@   )r   resultattrr+   s      r%   r  zLazyImportModule.__dir__  sL    "" L 	$ 	$D6!!d###r'   r   r4   c                    || j         v r| j         |         S || j        v r|                     |          }n|| j                                        v r1|                     | j        |                   }t          ||          }nS| j        2|                     |          }|t          d| j         d|           nt          d| j         d|           t          | ||           |S )Nzmodule z has no attribute )
r   r   _get_moduler   r   r,   r   AttributeErrorr   setattr)r   r   r  modules       r%   __getattr__zLazyImportModule.__getattr__  s   4=  =&&4=  $$T**EET*//1111%%d&;D&ABBFFD))EE$0++D11E}$EdmEEtEEG G G  !A$-AA4AAC C C 	dE"""r'   r#   c           	      |   	 | j         dz   |z   t          fddD                       sF|                                 }|t                   v r#|t                            }t	          |           t          j        d|z   | j                   S # t          $ r#}t          d| j          d| d|           |d }~ww xY w)N.c              3   H   K   | ]}                     d |           V  dS )zmodelscope.N)
startswith)r   prefixmodule_name_fulls     r%   	<genexpr>z/LazyImportModule._get_module.<locals>.<genexpr>  sV       I I %//0Ff0F0FGGI I I I I Ir'   )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  zLazyImportModule._get_module  s   	@#}s2[@ I I I I"GI I I I I = !..00	#y'AAA#,_#=>N#OL-|<<<*3+<dmLLL 	@ 	@ 	@8DM 8 8K 8 8458 89 9>?@	@s   B
B 
B;B66B;c                 8    | j         | j        | j        | j        ffS rv   )r+   r   r   r   )r   s    r%   
__reduce__zLazyImportModule.__reduce__  s$    ~
DM $ 6 8 8 	8r'   c                  b    t           j        t                      t           _        t           j        S rv   )r   
_AST_INDEXr   rf   r'   r%   r   zLazyImportModule.get_ast_index  s!    &.*4,,'**r'   c                 `   t                                           }| |t                   v rh|t                   |          }|t                   }||t                   v r#|t                   |         }t          ||           t          j        |           dS t          	                    |  d           dS )z import 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   zLazyImportModule.import_module  s     %2244		),,,!),Y7I#J/Ki888(9+Fl333#K00000NNiEEEFFFFFr'   )NNFN)r   
__module____qualname__r&  r   r   r  r:   r	   r  r  r$  staticmethodr   r   __classcell__)r+   s   @r%   r   r     s	       J "##(#'" " " " " "6M M M         (@s @ @ @ @"8 8 8 + + \+
 G G \G G G G Gr'   r   c                     | j         }t          j        |          }|j        }t	          |                                          }||v S )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(  
parametersr;   r   )clsattribute_nameinit_methodr(  r0  param_namess         r%   has_attr_in_classr5    sE     ,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   r5  rf   r'   r%   <module>rm     s	   


                   				       



 # # # # # #       # # # # # #                         . . . . . .4 4 4 4 4 4 4 4 4 4 4 4 $ $ $ $ . . . . . .f333333	go	.	.	.c    () ) )&
CF 
CC 
CD 
C 
C 
C 
C, , , ,^3 3 3 211  4 : :F8 D D 	&	)	)	/	/	1	1JNN;//5577	---&@T2T2T ~//88D %	%7/7@@NKKB>BBBCCCC!6 	% 	% 	%$	%	% KK9:::.**622$>.&.v66M
LLF}FFGGGG.   OOO 	***y@T/T/TN,,\::$FM 0

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