o
    ´©iJ,  ã                   @   sŽ   d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	 dd„ Z
dd„ Zdd	„ Zi fd
edefdd„Z			ddd„Z			ddd„ZdS )é    N)Ú	OmegaConfÚ
DictConfig)Úname_maps_msÚname_maps_hfÚname_maps_openaic                  K   sž   |   dd¡}|dks|dkrtd
i | ¤Ž} | S |dks|dkr(td
i | ¤Ž} | S |dkrM|   d¡}tj |¡rA|| d< d	| d< | S |tv rIt| }|| d< | S )NÚhubÚmsÚ
modelscopeÚhfÚhuggingfaceÚopenaiÚmodelÚ
model_pathÚWhisperWarp© )ÚgetÚdownload_from_msÚdownload_from_hfÚosÚpathÚexistsr   )Úkwargsr   Úmodel_or_pathr   r   ú[/home/ubuntu/.local/lib/python3.10/site-packages/funasr/download/download_model_from_hub.pyÚdownload_model	   s"   òô
ür   c               
   K   sº  |   d¡}|tv rt| }|   dd¡}tj |¡sKd| vrKzt|||   d¡|   dd¡d}W n tyJ } ztd	|› d
|› ƒ W Y d }~nd }~ww d| vrQ|n| d | d< | d }tj tj |d¡¡r³t	tj |d¡ddd8}t
 |¡}i }d|v r†t||d |ƒ t || ¡}d|v r£t |d ¡}t ||¡} |d | d< W d   ƒ n1 s­w   Y  nÍtj tj |d¡¡r€t tj |d¡¡}t || ¡} tj |d¡}d| vsâtj | d ¡sò|| d< tj | d ¡sòJ dƒ‚tj tj |d¡¡r	tj |d¡| d d< tj tj |d¡¡r tj |d¡| d d< tj tj |d¡¡r7tj |d¡| d d< tj tj |d¡¡rNtj |d¡| d d< |d | d< tj tj |d¡¡rktj |d¡| d d< tj tj |d¡¡r€tj |d¡| d< t| tƒrtj| dd } t d!|   d"d#¡› ¡ tj tj |d$¡¡rÄ|   d"d#¡rÄtj |d$¡}	td%|	› ƒ d&d'lm}
 |
|	ƒ |   d"d#¡rÛd&d(lm} |   d)d¡}||ƒ | S )*Nr   Úmodel_revisionÚmasterr   Úis_trainingÚcheck_latestT©r   r   ú
Download: ú
 failed!: úconfiguration.jsonÚrúutf-8©ÚencodingÚfile_path_metasÚconfigúconfig.yamlúmodel.ptÚ
init_paramzinit_param does not existú
tokens.txtÚtokenizer_confÚ
token_listútokens.jsonÚseg_dictú	bpe.modelÚbpemodelúam.mvnÚfrontend_confÚ	cmvn_fileÚjieba_usr_dict©Úresolveútrust_remote_code: Útrust_remote_codeFúrequirements.txtú0Detect model requirements, begin to install it: r   ©Úinstall_requirements)Úimport_module_from_pathÚremote_code)r   r   r   r   r   Úget_or_download_model_dirÚ	ExceptionÚprintÚjoinÚopenÚjsonÚloadÚadd_file_root_pathr   ÚmergeÚ
isinstancer   Úto_containerÚloggingÚwarningÚ'funasr.utils.install_model_requirementsr>   Úfunasr.utils.dynamic_importr?   )r   r   r   ÚeÚfÚ	conf_jsonÚcfgr(   r+   Úrequirementsr>   r?   Ú
model_coder   r   r   r      s†   


ü €ÿ
€õ€ÿr   c               
   K   sh  |   d¡}|tv rt| }|   dd¡}tj |¡sKd| vrKzt|||   d¡|   dd¡d}W n tyJ } ztd	|› d
|› ƒ W Y d }~nd }~ww d| vrQ|n| d | d< tj tj |d¡¡r®t	tj |d¡ddd7}t
 |¡}i }d|v r‚t||d |ƒ | | ¡ d|v ržt |d ¡}t ||¡} |d | d< W d   ƒ n1 s¨w   Y  nÀtj tj |d¡¡rntj tj |d¡¡rnt tj |d¡¡}t || ¡} tj |d¡}|| d< tj tj |d¡¡r÷tj |d¡| d d< tj tj |d¡¡rtj |d¡| d d< tj tj |d¡¡r%tj |d¡| d d< tj tj |d¡¡r<tj |d¡| d d< |d | d< tj tj |d¡¡rYtj |d¡| d d< tj tj |d¡¡rntj |d¡| d< t| tƒr{tj| dd} t d |   d!d"¡› ¡ tj tj |d#¡¡r²|   d!d"¡r²tj |d#¡}	td$|	› ƒ d%d&lm}
 |
|	ƒ | S )'Nr   r   r   r   r   r   Tr   r    r!   r"   r#   r$   r%   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r9   r:   Fr;   r<   r   r=   )r   r   r   r   r   Úget_or_download_model_dir_hfrB   rC   rD   rE   rF   rG   rH   Úupdater   rI   rJ   r   rK   rL   rM   rN   r>   )r   r   r   rP   rQ   rR   rS   r(   r+   rT   r>   r   r   r   r   g   s|   


ü €ÿ

€ö€ÿÿr   r   r'   c                 C   s^  t |tƒr­t |tƒr| i ¡ | ¡ D ]™\}}t |tƒr?tj | |¡}tj 	|¡r>t |tƒr3|||< qt |tƒr>||d |< qt |tƒrZt |tƒrY||vrQi ||< t
| ||| ƒ qt |ttfƒr¬t|ƒD ]F\}}||vrqg ||< t |tƒržtj | |¡}tj 	|¡rt || tƒr|||< qet || tƒr||  |¡ qet |tƒr«t
| ||| ƒ qeq|S )Néÿÿÿÿ)rJ   ÚdictÚlistÚappendÚitemsÚstrr   r   rD   r   rH   ÚtupleÚ	enumerate)r   r'   rS   ÚkÚvÚpÚiÚvvr   r   r   rH   §   sD   






€

€

€
€rH   FTc           
      C   s¶   ddl m} ddlm} ddlm}m} |r|jn|j}t	j
 | ¡rL|rLt	j
 | ¡r,| nt	j
 | ¡}	z||	|j||jdid W |	S    tdƒ Y |	S || ||j||jdid}	|	S )	úäGet local model directory or download model if necessary.

    Args:
        model (str): model id or path to local model directory.
        model_revision  (str, optional): model version number.
        :param is_training:
    r   )Úcheck_local_model_is_latest©Úsnapshot_download)ÚInvokeÚ
ThirdPartyÚfunasr)Ú
user_agentz"could not check the latest version)Úrevisionrl   )Úmodelscope.hub.check_modelrf   Ú modelscope.hub.snapshot_downloadrh   Úmodelscope.utils.constantri   rj   ÚLOCAL_TRAINERÚPIPELINEr   r   r   ÚisdirÚdirnameÚKEYrC   )
r   r   r   r   rf   rh   ri   rj   ÚkeyÚmodel_cache_dirr   r   r   rA   Ò   s$   ÿ	ú
ýÿrA   c                 C   s   ddl m} || ƒ}|S )re   r   rg   )Úhuggingface_hubrh   )r   r   r   r   rh   rw   r   r   r   rV   õ   s   rV   )NFT)rL   r   rF   Ú	omegaconfr   r   Ú"funasr.download.name_maps_from_hubr   r   r   r   r   r   r]   rY   rH   rA   rV   r   r   r   r   Ú<module>   s"    I@-
ü%ü