
    qiW                        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e      Z G d de      Z G d de      Z G d d      Zdedededee   dee   deeeeef      fdZy)    N)deque)IteratorLiteralOptional	TypedDictUnion   )build_hf_headers)hf_raise_for_status   )	SSEClient)ApiGetReloadEventSourceDataApiGetReloadRequesti  c                   (    e Zd ZU ed   ed<   eed<   y)MultiReplicaStreamEventeventkindN)__name__
__module____qualname__r   __annotations__r        T/opt/pipecat/venv/lib/python3.12/site-packages/huggingface_hub/_hot_reload/client.pyr   r      s    
'
&&r   r   c                   (    e Zd ZU ed   ed<   eed<   y)MultiReplicaStreamReplicaHashreplicaHashr   hashN)r   r   r   r   r   strr   r   r   r   r   $   s    
-
  
Ir   r   c                       e Zd ZU ed   ed<   y)MultiReplicaStreamFullMatch	fullMatchr   N)r   r   r   r   r   r   r   r   r!   r!   )   s    
+
r   r!   c            	       @    e Zd Zdedededee   fdZdedee   fdZy	)
ReloadClienthost	subdomainreplica_hashtokenc                    |j                  || dt               }|| _        t        j                  | d| t        |            | _        y )Nz--z/--replicas/+)r(   )base_urlheaders)replaceHOT_RELOADING_PORTr'   httpxClientr
   client)selfr%   r&   r'   r(   	base_hosts         r   __init__zReloadClient.__init__.   sO     LLyk<N;O,PQ	(ll!{-~>$51
r   	reload_idreturnc              #   \  K   t        |      }| j                  j                  dd|      5 }t        |       t	        |j                               j                         D ]3  }|j                  dk(  st        j                  |j                         5 	 d d d        y # 1 sw Y   y xY ww)N)reloadIdPOSTz/get-reload)jsonmessage)r   r0   streamr   r   
iter_byteseventsr   r9   loadsdata)r1   r4   reqresr   s        r   
get_reloadzReloadClient.get_reload=   s     !95[[C@ 	1C$"3>>#34;;= 1;;)+**UZZ001	1 	1 	1s#   +B,AB 3#B 	B, B)%B,N)	r   r   r   r   r   r3   r   r   rB   r   r   r   r$   r$   -   sL    
 
 	

 
 }
1C 1H5P,Q 1r   r$   
commit_shar%   r&   replica_hashesr(   r5   c           	   #     K   |D cg c]  }t        ||||       }}i }t        |      D ]  \  }}	t        |      dkD  rd|	j                  d d}
t	               }t        |	j                  |             D ]]  \  }}|dk(  r|||<   n,|
xr |j                  |      |k(  x}
r|j                  |       =|rd|j                         d |rd|d _ |dkD  s|
sd	d
i  y c c}w w)N)r%   r&   r'   r(   r   r   )r   r   Tr   r   )r   r   r   r"   )	r$   	enumeratelenr'   r   rB   getappendpopleft)rC   r%   r&   rD   r(   r   clientsfirst_client_eventsclient_indexr0   
full_matchreplayevent_indexr   s                 r   multi_replica_reload_eventsrQ   F   s-     #  			
G  CE )' 2 (fw<!(&2E2EFF
5:W"+F,=,=j,I"J 	4Kq 38#K0)[.A.E.Ek.RV[.[[[e$&1ABB "U33	4 !
;''(s"   C.C)B0C.C.C. C.)r9   collectionsr   typingr   r   r   r   r   r.   utils._headersr
   utils._httpr   
sse_clientr   typesr   r   r-   r   r   r!   r$   r   listrQ   r   r   r   <module>rY      s       @ @  - - ! C  'i '
I 
) 1 12!(!(
!( !( I	!(
 C=!( e+-JLgghi!(r   