
    j                     d   d dl Z d dlZd dlmZ d dlmZ d dl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dZ G d de          Z G d de          Z G d de          Z G d de          Z G d d          Z	 d dedededee         dedz  dedeeez  ez  ez           fdZdS )!    N)deque)Iterator)Literal	TypedDict   )build_hf_headers)hf_raise_for_status   )	SSEClient)ApiGetReloadEventSourceDataApiGetReloadRequesti     c                   0    e Zd ZU ed         ed<   eed<   dS )MultiReplicaStreamWarningwarningkindmessageN__name__
__module____qualname__r   __annotations__str     e/var/www/html/Carbon-Document/venv/lib/python3.11/site-packages/huggingface_hub/_hot_reload/client.pyr   r   "   s*         
)
LLLLLr   r   c                   0    e Zd ZU ed         ed<   eed<   dS )MultiReplicaStreamEventeventr   N)r   r   r   r   r   r   r   r   r   r   r   '   s/         
'
&&&&&&r   r   c                   0    e Zd ZU ed         ed<   eed<   dS )MultiReplicaStreamReplicaHashreplicaHashr   hashNr   r   r   r   r!   r!   ,   s*         
-
    
IIIIIr   r!   c                   &    e Zd ZU ed         ed<   dS )MultiReplicaStreamFullMatch	fullMatchr   N)r   r   r   r   r   r   r   r   r%   r%   1   s#         
+
r   r%   c            	       N    e Zd Zdededededz  fdZdedee         ez  fd	ZdS )
ReloadClienthost	subdomainreplica_hashtokenNc                    |                     || dt                     }|| _        t          j        | d| t          |          t                    | _        d S )Nz--z/--replicas/+)r,   )base_urlheaderstimeout)replaceHOT_RELOADING_PORTr+   httpxClientr   CLIENT_TIMEOUTclient)selfr)   r*   r+   r,   	base_hosts         r   __init__zReloadClient.__init__6   sl     LLy,P,P<N,P,PQQ	(l!>>>>$5111"
 
 
r   	reload_idreturnc              #     K   t          |          }| j                            dd|          5 }|j        dk    r|j        cd d d            S t	          |           t          |                                                                          D ](}|j        dk    rt          j
        |j                  V  )	 d d d            n# 1 swxY w Y   d S )N)reloadIdPOSTz/get-reload)json   r   )r   r6   streamstatus_coder	   r   
iter_byteseventsr   r?   loadsdata)r7   r:   reqresr   s        r   
get_reloadzReloadClient.get_reloadF   s.     !9555[C@@ 	1C#%%	1 	1 	1 	1 	1 	1 	1 	1  $$$"3>>#3#344;;== 1 1;)++*UZ000001		1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 ts   CA+CCC)	r   r   r   r   r9   r   r   intrI   r   r   r   r(   r(   5   s        
 
 	

 
 Tz
 
 
 
 	C 	H5P,QTW,W 	 	 	 	 	 	r   r(   
   
commit_shar)   r*   replica_hashesr,   max_retriesr;   c              #   0  K   fd|D             }i }t          |          D ]m\  }}	t          |          dk    rd|	j        dV  d}
t          |	                    |           x}t
                    r|
dz   x}
|k    rt          d          |x}dvrt          d|d	          |d
k    rdnd}dd| ddV  t          j        d           t          |	                    |           x}t
                    d}t                      }t          |          D ]h\  }}|dk    r|||<   n3|o|
                    |          |k    x}r|                    |           D|rd|                                dV  |d|dV  i|dk    r|rddiV  od S )Nc                 6    g | ]}t          |           S ))r)   r*   r+   r,   )r(   ).0r#   r)   r*   r,   s     r   
<listcomp>z/multi_replica_reload_events.<locals>.<listcomp>\   sF         			
 	
 	
  r   r
   r"   )r   r#   r   zToo many retries reached)r@      zUnexpected status_code=z on `ReloadClient.get_reload`rS   r=   replicar   zRetrying on unexpected z
 not found)r   r   r   Tr   )r   r   r   r&   )	enumeratelenr+   
isinstancerI   rJ   	Exceptiontimesleepr   getappendpopleft)rL   r)   r*   rM   r,   rN   clientsfirst_client_eventsclient_indexr6   retriesrD   rB   subject
full_matchreplayevent_indexr   s    `` `             r   multi_replica_reload_eventsrf   R   s_           #  G CE )' 2 2 ( (fw<<!(&2EFFFFFF$5$5j$A$AA&CHH 	"Q;&+55 :;;;%%j88 Yk Y Y YZZZ$/3$6$6jjIG$1^71^1^1^_____JqMMM F$5$5j$A$AA&CHH 	 
5:WW"+F"3"3 	4 	4Kq  38#K00)[.A.E.Ek.R.RV[.[[ e$$$ C&1A1ABBBBB  C"U333333!
;''''7( (r   )rK   )r?   rY   collectionsr   collections.abcr   typingr   r   r3   utils._headersr   utils._httpr	   
sse_clientr   typesr   r   r2   r5   r   r   r!   r%   r(   r   listrJ   rf   r   r   r   <module>ro      s            $ $ $ $ $ $ % % % % % % % %  - - - - - - - - - - - - ! ! ! ! ! ! C C C C C C C C      	   
' ' ' ' 'i ' ' '
    I   
    )          F 0( 0(0(
0( 0( I	0(
 :0( 0(  77:WWZuu0( 0( 0( 0( 0( 0(r   