o
    0iW                     @   s   d dl Z d dlmZ d dlmZmZmZmZm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mZ d
ZG dd deZG dd deZG dd deZG dd dZdedededee dee deeeeef  fddZdS )    N)deque)IteratorLiteralOptional	TypedDictUnion   )build_hf_headers)hf_raise_for_status   )	SSEClient)ApiGetReloadEventSourceDataApiGetReloadRequesti  c                   @   s"   e Zd ZU ed ed< eed< dS )MultiReplicaStreamEventeventkindN)__name__
__module____qualname__r   __annotations__r    r   r   \/home/kim/smarthome/.venv/lib/python3.10/site-packages/huggingface_hub/_hot_reload/client.pyr         
 r   c                   @   s"   e Zd ZU ed ed< eed< dS )MultiReplicaStreamReplicaHashreplicaHashr   hashN)r   r   r   r   r   strr   r   r   r   r   $   r   r   c                   @   s   e Zd ZU ed ed< dS )MultiReplicaStreamFullMatch	fullMatchr   N)r   r   r   r   r   r   r   r   r   r   )   s   
 r   c                	   @   s@   e Zd Zdedededee fddZdedee fd	d
ZdS )ReloadClienthost	subdomainreplica_hashtokenc                C   s@   | || dt }|| _tj| d| t|dd| _d S )Nz--z/--replicas/+)r#   )base_urlheaders)replaceHOT_RELOADING_PORTr"   httpxZClientr	   client)selfr    r!   r"   r#   Z	base_hostr   r   r   __init__.   s   zReloadClient.__init__	reload_idreturnc                 c   sz    t |d}| jjdd|d$}t| t|  D ]}|jdkr*t	|j
V  qW d    d S 1 s6w   Y  d S )N)ZreloadIdPOSTz/get-reload)jsonmessage)r   r)   streamr
   r   Z
iter_byteseventsr   r/   loadsdata)r*   r,   reqresr   r   r   r   
get_reload=   s   

"zReloadClient.get_reloadN)	r   r   r   r   r   r+   r   r   r7   r   r   r   r   r   -   s    
r   
commit_shar    r!   replica_hashesr#   r-   c                 #   s     fdd|D }i }t |D ]Y\}}t|dkr#d|jdV  d}	t }
t || D ]0\}}|dkr<|||< n|	oD|||k }	rM|
| q/|
rYd|
 d	V  |
sOd|d	V  q/|dkrk|	rkd
diV  qd S )Nc                    s   g | ]
}t  |d qS ))r    r!   r"   r#   )r   ).0r   r    r!   r#   r   r   
<listcomp>M   s    z/multi_replica_reload_events.<locals>.<listcomp>r   r   )r   r   Tr   r   )r   r   r   r   )	enumeratelenr"   r   r7   getappendpopleft)r8   r    r!   r9   r#   ZclientsZfirst_client_eventsZclient_indexr)   Z
full_matchZreplayZevent_indexr   r   r;   r   multi_replica_reload_eventsF   s0   



rB   )r/   collectionsr   typingr   r   r   r   r   r(   Zutils._headersr	   Zutils._httpr
   Z
sse_clientr   typesr   r   r'   r   r   r   r   r   listrB   r   r   r   r   <module>   s4   