
    .`i                        d 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mZ ddl	m
Z
 ddlmZ ddlZddlmZmZ ddlmZ dd	lmZmZmZmZmZ dd
lmZ ddlmZ  ee          Z ed          Z	 	 d(deg ef         dede de def
dZ!edddddededz  dedz  dee"z  dz  de#e         f
d            Z	 	 	 d)dede#e         dedz  dedz  dee"z  dz  de#e         fdZ$dddddedededz  dedz  dee"z  dz  de"fdZ%d ee
z  d!ededz  de"fd"Z&d*d ee
z  dedz  fd#Z'	 d+ded ee
z  dedz  de(dz  fd%Z)	 d+d ee
z  dededz  de
dz  fd&Z*	 d+ded ee
z  dedz  fd'Z+dS ),z%Utilities for model repo interaction.    N)Callable)cache)Path)TypeVar)hf_hub_downloadtry_to_load_from_cachelist_repo_files)EntryNotFoundErrorHfHubHTTPErrorLocalEntryNotFoundErrorRepositoryNotFoundErrorRevisionNotFoundError)envs)init_logger_R   funclog_msgmax_retriesretry_delayreturnc           	      J   t          |          D ]}	  |             c S # t          $ rj}||dz
  k    rt                              d||            t                              d|||dz   |           t	          j        |           |dz  }Y d }~~d }~ww xY wt          d          )N   z%s: %sz%s: %s, retrying %d of %dr   zShould not be reached)range	ExceptionloggererrortimesleepAssertionError)r   r   r   r   attemptes         v/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/transformers_utils/repo_utils.py
with_retryr%   "   s     %%  
	466MMM 	 	 	+/))Xw222LL+Wa1k   J{###1KKKKKK	 0
1
11s   	
BA BBrevision	repo_typetokenrepo_idr'   r(   r)   c                `     dt           t                   f fd}t          |d          S )Nr   c                  T   t                    x                                r!fd                    d          D             S 	 t          j        r'ddlm}   | t          j        dd                     S t                    S # t          j        j        $ r g cY S w xY w)Nc                 |    g | ]8}|                                 t          |                                        9S  )is_filestrrelative_to).0file
local_paths     r$   
<listcomp>z9list_repo_files.<locals>.lookup_files.<locals>.<listcomp>D   sM       <<>>D$$Z0011      *r   )modelscope_list_repo_filesMODELSCOPE_API_TOKEN)r'   r)   r&   )r   existsrglobr   VLLM_USE_MODELSCOPEvllm.transformers_utils.utilsr8   osgetenvhf_list_repo_fileshuggingface_huberrorsOfflineModeIsEnabled)r8   r4   r*   r(   r'   r)   s    @r$   lookup_filesz%list_repo_files.<locals>.lookup_filesA   s    w--'J//11 	   &,,S11   	' TTTTTT11%)$:DAA   
 &(iu    %: 	 	 	 III		s   2B ;B B'&B'zError retrieving file list)listr0   r%   )r*   r'   r(   r)   rD   s   ```` r$   r
   r
   9   sQ    $s)         6 l$@AAAr6   model_name_or_pathallow_patternsc                     	 t          | |||          }n,# t          $ r t                              d           g cY S w xY wg }|D ]#|                    fd|D                        $|S )N)r*   r'   r)   r(   zError retrieving file list. Please ensure your `model_name_or_path``repo_type`, `token` and `revision` arguments are correctly set. Returning an empty list.c                 x    g | ]6}t          j         t          j                            |                    4|7S r.   )fnmatchr>   pathbasename)r2   r3   patterns     r$   r5   z,list_filtered_repo_files.<locals>.<listcomp>y   sK       ?27#3#3D#9#97CC  r6   )r
   r   r   r   extend)rF   rG   r'   r(   r)   	all_files	file_listrM   s          @r$   list_filtered_repo_filesrQ   _   s    #&	
 
 
		    '	
 	
 	

 			 I! 
 
   %  	
 	
 	
 	
 s    &A A r(   r'   r)   	file_namec                0    t          | |||          }||v S )NrR   r	   )r*   rS   r(   r'   r)   rP   s         r$   file_existsrU      s.      9xu  I 	!!r6   modelconfig_namec                    t          |           x}                                r||z                                  S t          | ||          }t	          |t
                    rdS t          t          |           ||          S )Nr*   filenamer'   Tr'   )r   r:   r/   r   
isinstancer0   rU   )rV   rW   r'   r4   cached_filepaths        r$   file_or_path_existsr^      s     5kk!
))++ 4[(11333 -h  O /3'' t s5zz;BBBBr6   c                     t           j                            |           r| S t          j        j        sJ t          j        j        |d}t          j        rddlm	}  |dd| i|S ddlm	}  |dd| i|S )N)local_files_onlyr'   r   )snapshot_downloadmodel_idr*   r.   )
r>   rK   r:   rA   	constantsHF_HUB_OFFLINEr   r<    modelscope.hub.snapshot_downloadra   )rV   r'   common_kwargsra   s       r$   get_model_pathrg      s    	w~~e $3333+5D M
  BFFFFFF  AA%A=AAA111111<<U<m<<<r6   mainc                    t          || |          }|!t          || |          }t          |          }|P|                                r<t	          |d          5 }|                                cddd           S # 1 swxY w Y   dS )z7Get file contents from HuggingFace repository as bytes.rV   rS   r'   Nr[   rb)try_get_local_filer   r   r/   openread)rS   rV   r'   	file_pathhf_hub_filer3   s         r$   get_hf_file_bytesrq      s     #)hWWWI%eYJJJ%%	!2!2!4!4)T"" 	d99;;	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4s   A==BBc                     t          |           |z  }|                                r|S 	 t          | ||          }t          |t                    rt          |          S n# t
          $ r Y nw xY wd S )NrY   )r   r/   r   r\   r0   
ValueError)rV   rS   r'   ro   r]   s        r$   rl   rl      s     Ui'I 
	4	H  O /3// -O,,,- 	 	 	C	4s   5A! !
A.-A.c                 .   t          || |          }|	 t          || |          }n# t          j        j        $ r Y dS t
          t          t          t          f$ r&}t          
                    d|           Y d}~dS d}~wt          $ r(}t                              d| |           Y d}~dS d}~ww xY wt          |          }|O|                                r;t          |          5 }t!          j        |          cddd           S # 1 swxY w Y   dS )a  
    Downloads a file from the Hugging Face Hub and returns
    its contents as a dictionary.

    Parameters:
    - file_name (str): The name of the file to download.
    - model (str): The name of the model on the Hugging Face Hub.
    - revision (str): The specific version of the model.

    Returns:
    - config_dict (dict): A dictionary containing
    the contents of the downloaded file.
    rj   Nr[   z/File or repository not found in hf_hub_downloadzDCannot connect to Hugging Face Hub. Skipping file download for '%s':)exc_info)rl   r   rA   rB   rC   r   r   r   r   r   debugr   warningr   r/   rm   jsonload)rS   rV   r'   ro   rp   r#   r3   s          r$   get_hf_file_to_dictrz      s   " #)hWWWI	)%XNNNKK%: 	 	 	44#!#	
 	 	 	 LLJANNN44444 	 	 	NNV    
 44444	 %%	!2!2!4!4)__ 	#9T??	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 4s9   ) B2 B2A==B2
B--B2)D

DD)r   r   )NNN)N)rh   ),__doc__rJ   rx   r>   r   collections.abcr   	functoolsr   pathlibr   typingr   rA   r   r   r
   r@   huggingface_hub.utilsr   r   r   r   r   vllmr   vllm.loggerr   __name__r   r   r0   intr%   boolrE   rQ   rU   r^   rg   bytesrq   rl   rz   r.   r6   r$   <module>r      sQ   , +   				  $ $ $ $ $ $                       C C C C C C C C A A A A A A                    # # # # # #	X		 WT]] 	2 2
2r6
22 2 	2
 2 2 2 2.    #"B "B "B"B Dj"B Tz	"B
 :"B 
#Y"B "B "B "BP   #    I  Dj  Tz	 
 :  
#Y       N !#" " """ Tz	"
 Dj" :" 
" " " ""C:C$'C36:C	C C C C*= =#* =d
 = = = =( ?E :14t
T\   $ ?E :"%14t	D[   & ?E- --:-14t- - - - - -r6   