o
    i                     @   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dededed	ed
ed f
ddZd	ededefddZdedefddZ			ddedededefddZdS )    )OptionalN)
DiscussionHfApiget_repo_discussions   )cached_filehttp_user_agentloggingapimodel_idpr_titletokenreturnr   c                 C   sl   | j ||dd j}t||dD ]#}|j|kr3|jdkr3|jr3| j ||j|d}||d jkr3|  S qd S )Nr   r   )repo_idr   openrevisionr   r   )list_repo_commits	commit_idr   titlestatusis_pull_requestgit_reference)r
   r   r   r   main_commit
discussioncommits r   e/sda-disk/www/egybert/egybert_env/lib/python3.10/site-packages/transformers/safetensors_conversion.pyprevious_pr   s   r   privatec                 C   s   t d d}| d}dd }d||| gi}tj|d|d }|d	 }td
| d| 9}	zt d ||	 W n tyX }
 zt dt	|
  W Y d }
~
nd }
~
ww W d    d S W d    d S 1 slw   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 ]=}t|ts| }|dr<|dd  }td|  |dkr) d S |dkr3td qtd|  qt| qd S )Nzevent:   zSafetensors conversion status: complete	heartbeat	HeartbeatzUnknown status )
iter_lines
isinstancestrdecode
startswithloggerdebug)_sse_connectionliner   r   r   r   start   s   

zspawn_conversion.<locals>.startdataT)follow_redirectsjsonevent_idGET/z*Spawning safetensors automatic conversion.zError during conversion: )
r*   infohttpxpostr1   streamr+   	Exceptionwarningrepr)r   r    r   safetensors_convert_space_urlsse_urlr.   r/   resultr2   sse_connectioner   r   r   spawn_conversion   s&   


 "rA   c                 K   s   |  |j}td d}|d}t| |||d}|d u s%|s4|jdkr4t||| t| |||d}ntd |d u rAtdd|j	 }|S )	Nz(Attempting to create safetensors variantz*Adding `safetensors` variant of this modelr   r   SFconvertbotzSafetensors PR existszCould not create safetensors conversion PR. The repo does not appear to have a file named pytorch_model.bin or model.safetensors.If you are loading with variant, use `use_safetensors=False` to load the original model.zrefs/pr/)

model_infor    r*   r5   getr   authorrA   OSErrornum)r
   r   kwargsr    r   r   prshar   r   r   get_conversion_pr_reference;   s   


rK   Fmodel.safetensorsmodel.safetensors.index.jsonpretrained_model_name_or_pathignore_errors_during_conversionsafe_weights_namesafe_weights_index_namec              
   K   s   zDt |ddt id}t|| fi |}|d u rW dS ||d< |d= |j| |||dd}|r4|n|}t| |fi |}	|	||fW S  ty[ }
 z|sP|
W Y d }
~
d S d }
~
ww )Nr   z
user-agent)r   headers)NNr   _commit_hashr   )r   rD   r   rK   file_existsr   r9   )rN   rO   rP   rQ   cached_file_kwargsr
   rJ   shardedfilenameresolved_archive_filer@   r   r   r   auto_conversionW   s,   rY   )FrL   rM   )typingr   r6   huggingface_hubr   r   r   utilsr   r   r	   
get_logger__name__r*   r'   r   boolrA   rK   rY   r   r   r   r   <module>   s(    
"$