o
    Zh                     @   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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   )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   R/var/www/auris/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j| d
| dd9}	zt d ||	 W n tyY }
 zt dt	|
  W Y d }
~
nd }
~
ww W d    d S W d    d S 1 smw   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 ]8}| }|dr7|dd  }td|  |dkr$ d S |dkr.td qt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   c                 K   s   |  |j}td d}|d}t| |||d}|d u s%|s4|jdkr4t||| 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   Zauthorr1   num)r
   r   kwargsr   r   r   prshar   r   r   get_conversion_pr_reference:   s   


r6   Fpretrained_model_name_or_pathc           	   
   K   s   zDt |ddt id}t|| fi |}|d u rW dS ||d< |d= |j| d||dd}|r4dnd	}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   Z_commit_hashzmodel.safetensors.index.jsonr   zmodel.safetensors)r   r+   r   r6   Zfile_existsr   r,   )	r7   Zignore_errors_during_conversionZcached_file_kwargsr
   r5   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   r6   r:   r   r   r   r   <module>   s    
"#