
    .`i              
          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
mZ d dlmZ  ee          Zdedefd	Zdedefd
ZdedefdZ	 	 ddededz  deez  dz  dee         fdZdeez  deeef         fdZdeez  deeef         fdZededefd            Zdeez  deee	f         fdZdedefdZdS )    N)cache)PathLike)Path)Any)init_loggermodel_or_pathreturnc                 P    |                                                      d          S )Nzs3://lower
startswithr   s    q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/transformers_utils/utils.pyis_s3r      "      ++G444    c                 P    |                                                      d          S )Nzgs://r   r   s    r   is_gcsr      r   r   c                 >    t          |           pt          |           S N)r   r   r   s    r   is_cloud_storager      s    86-#8#88r   repo_idrevisiontokenc                     ddl m}  |            }|                    |           d |                    | |d          D             }|S )z List files in a modelscope repo.r   )HubApic                 6    g | ]}|d          dk    |d         S )Typeblobr    ).0files     r   
<listcomp>z.modelscope_list_repo_files.<locals>.<listcomp>)   s9        <6!!	 	V "!!r   T)model_idr   	recursive)modelscope.hub.apir   loginget_model_files)r   r   r   r   apifiless         r   modelscope_list_repo_filesr+      st     *)))))
&((CIIe ''x4 ( 
 
  E Lr   pathc                    t          |           5 }	 t          j        |                                          cd d d            S # t          $ r/ t          t          t          f                     cY cd d d            S w xY w# 1 swxY w Y   d S r   )openjsonloadsread	Exceptiondictstr)r,   fs     r   _maybe_json_dictr6   3   s    	d $q	$:affhh''$ $ $ $ $ $ $ $  	$ 	$ 	$S>####	$ $ $ $ $ $ $ $	$$ $ $ $ $ $ $ $ $ $s.   B %A*A=.B <A==B  BBc                 B   t          t          t          f                     }t          |           5 }|                                D ]A}	 |                                                                \  }}|||<   2# t          $ r Y >w xY w	 d d d            n# 1 swxY w Y   |S r   )r3   r4   r.   	readlinesstripsplitr2   )r,   parsed_dictr5   line
model_nameredirect_names         r   _maybe_space_split_dictr?   ;   s    sCx.""K	d qKKMM 	 	D,0JJLL,>,>,@,@)
M*7J''   		               s5   B.A76B7
BBBBBBmodelc                    t           j        }|s| S t          |                                          s| S t	          |          pt          |          }|                    |           x}rt                              d| |           |S | S )z
    Use model_redirect to redirect the model name to a local folder.

    :param model: hf model name
    :return: maybe redirect to a local folder
    z model redirect: [ %s ] -> [ %s ])	envsVLLM_MODEL_REDIRECT_PATHr   existsr6   r?   getloggerinfo)r@   model_redirect_pathredirect_dictredirect_models       r   maybe_model_redirectrK   G   s     7 #$$++-- $%899 =T> >M '**5111~ 6~NNNLr   c                 *   t          | d          5 }t          j        d|                    d                    d         }t	          j        |                    |                              d                    }|cd d d            S # 1 swxY w Y   d S )Nrbz<Q   r   zutf-8)r.   structunpackr1   r/   r0   decode)r,   r5   length_of_metadatametadatas       r   parse_safetensors_file_metadatarT   b   s    	dD		 Q#]4;;A>:aff%788??HHII                 s   A*BBB
model_repoc                     t           j        r!t          |                                           r| S ddlm} t          j                             |            |           S )zUWhen VLLM_USE_MODELSCOPE is True convert a model
    repository string to a Path str.r   )get_model_cache_root)	rB   VLLM_USE_MODELSCOPEr   rD   modelscope.utils.file_utilsrW   osr,   join)rU   rW   s     r   convert_model_repo_to_pathr\   i   sb     # tJ'7'7'>'>'@'@ @@@@@@7<<,,..
;;;r   )NN)r/   rZ   rO   	functoolsr   r   pathlibr   typingr   	vllm.envsrB   vllm.loggerr   __name__rF   r4   boolr   r   r   listr+   r3   r6   r?   rK   rT   r\   r    r   r   <module>re      s=    				                                # # # # # #	X		5 5 5 5 5 55# 5$ 5 5 5 59C 9D 9 9 9 9  # Dj : 
#Y	   *$3> $d38n $ $ $ $	#. 	T#s(^ 	 	 	 	      4#. T#s(^    <3 <3 < < < < < <r   