o
    eiW                     @   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/ubuntu/transcripts/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"   httpxClientr	   client)selfr    r!   r"   r#   	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)reloadIdPOSTz/get-reload)jsonmessage)r   r*   streamr
   r   
iter_byteseventsr   r2   loadsdata)r+   r.   reqresr   r   r   r   
get_reload=   s   

"zReloadClient.get_reloadN)	r   r   r   r   r   r-   r   r   r;   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   r;   getappendpopleft)r<   r    r!   r=   r#   clientsfirst_client_eventsclient_indexr*   
full_matchreplayevent_indexr   r   r?   r   multi_replica_reload_eventsF   s0   



rL   )r2   collectionsr   typingr   r   r   r   r   r(   utils._headersr	   utils._httpr
   
sse_clientr   typesr   r   r'   r   r   r   r   r   listrL   r   r   r   r   <module>   s4   