o
    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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   )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   w/var/www/html/construction_image-detection-poc/venv/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: complete	heartbeat	HeartbeatzUnknown status )
iter_linesdecode
startswithloggerdebug)_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   safetensors_convert_space_urlsse_urlr,   r-   resultr0   sse_connectioner   r   r   spawn_conversion   s&   


 "r>   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   SFconvertbotzSafetensors PR existszrefs/pr/)	
model_infor    r(   r2   r5   r   authorr>   num)r
   r   kwargsr    r   r   prshar   r   r   get_conversion_pr_reference:   s   


rF   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   _commit_hashzmodel.safetensors.index.jsonr   zmodel.safetensors)r   r5   r   rF   file_existsr   r6   )	rG   ignore_errors_during_conversioncached_file_kwargsr
   rE   shardedfilenameresolved_archive_filer=   r   r   r   auto_conversionQ   s,   rP   )F)typingr   r3   huggingface_hubr   r   r   utilsr   r   r	   
get_logger__name__r(   strr   boolr>   rF   rP   r   r   r   r   <module>   s    
"#