a
    ½Àhê  ã                   @   s–   d dl mZ d dlZd dlmZmZmZ ddlmZm	Z	m
Z
 e
 e¡Zeeeeed dœdd	„Zeeed
œdd„Zeedœdd„Zdedœdd„ZdS )é    )ÚOptionalN)Ú
DiscussionÚHfApiÚget_repo_discussionsé   )Úcached_fileÚhttp_user_agentÚloggingr   )ÚapiÚmodel_idÚpr_titleÚtokenÚreturnc                 C   sl   | j ||dd j}t||dD ]F}|j|kr |jdkr |jr | j ||j|d}||d jkr |  S q d S )N©r   r   )Zrepo_idr   Úopen©Úrevisionr   r   )Zlist_repo_commitsÚ	commit_idr   ÚtitleÚstatusZis_pull_requestZgit_reference)r
   r   r   r   Zmain_commitZ
discussionZcommits© r   ú_/var/www/html/assistant/venv/lib/python3.9/site-packages/transformers/safetensors_conversion.pyÚprevious_pr   s    
r   )r   Úprivater   c                 C   sÖ   t  d¡ d}|› d}dd„ }d||| gi}tj|d|d ¡ }|d	 }tj|› d
|› dd`}	zt  d¡ ||	ƒ W n8 ty² }
 z t  dt	|
ƒ› ¡ W Y d }
~
n
d }
~
0 0 W d   ƒ n1 sÈ0    Y  d S )Nz;Attempting to convert .bin model on the fly to safetensors.z$https://safetensors-convert.hf.spacez	/call/runc                 S   s~   |   ¡ D ]p}| ¡ }| d¡rn|dd … }t d|› ¡ |dkrH d S |dkr\t d¡ qxt d|› ¡ qt |¡ qd S )Nzevent:é   zSafetensors conversion status: ZcompleteÚ	heartbeatZ	HeartbeatzUnknown status )Ú
iter_linesÚdecodeÚ
startswithÚloggerÚdebug)Z_sse_connectionÚliner   r   r   r   Ústart   s    
zspawn_conversion.<locals>.startÚdataT)ÚstreamÚjsonÚevent_idú/)r$   z*Spawning safetensors automatic conversion.zError during conversion: )
r   ÚinfoÚrequestsÚpostr%   Úgetr    Ú	ExceptionÚwarningÚrepr)r   r   r   Zsafetensors_convert_space_urlZsse_urlr"   r#   Úresultr&   Zsse_connectionÚer   r   r   Úspawn_conversion   s    


r1   )r
   r   c                 K   s‚   |   |¡j}t d¡ d}| d¡}t| |||d}|d u sJ|sh|jdkrht|||ƒ t| |||d}n
t d¡ d|j› }|S )Nz(Attempting to create safetensors variantz*Adding `safetensors` variant of this modelr   r   ZSFconvertbotzSafetensors PR existszrefs/pr/)	Z
model_infor   r   r(   r+   r   Úauthorr1   Únum)r
   r   Úkwargsr   r   r   ÚprÚshar   r   r   Úget_conversion_pr_reference:   s    


r7   F)Úpretrained_model_name_or_pathc           	   
   K   sº   zˆt | d¡dtƒ id}t|| fi |¤Ž}|d u r:W dS ||d< |d= |j| d|| d¡d}|rhdnd	}t| |fi |¤Ž}|||fW S  ty´ } z|s |‚W Y d }~n
d }~0 0 d S )
Nr   z
user-agent)r   Úheaders)NNr   Z_commit_hashzmodel.safetensors.index.jsonr   zmodel.safetensors)r   r+   r   r7   Zfile_existsr   r,   )	r8   Zignore_errors_during_conversionZcached_file_kwargsr
   r6   ZshardedÚfilenameZresolved_archive_filer0   r   r   r   Úauto_conversionQ   s&    ür;   )F)Útypingr   r)   Zhuggingface_hubr   r   r   Úutilsr   r   r	   Z
get_loggerÚ__name__r   Ústrr   Úboolr1   r7   r;   r   r   r   r   Ú<module>   s   
#