
    wi                       d dl mZ d dlZd dlZd dlZd dlZd dlZ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mZ d dlZd dlZd dlZd dlmZ d dlmZmZmZ d dlmZ d d	lm Z  d d
l!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 erd dl4m5Z5m6Z6  G d d          Z7 G d d          Z8 G d d          Z9 G d d          ZdS )    )annotationsN)defaultdict)Queue)TYPE_CHECKINGLiteralcast)run_sync)route_utilsroutes
wasm_utils)PredictBodyInternal)Error)TrackedIterable)	EstimationMessageEventMessage
LogMessageProcessCompletedMessageProcessGeneratingMessageProcessStartsMessageProgressMessageProgressUnitServerMessage)LRUCacheerror_payloadrun_coro_in_backgroundsafe_aclose_iteratorsafe_get_lockset_task_name)BlockFunctionBlocksc                  B    e Zd ZddZed	             Zed
             ZdS )Eventsession_hash
str | Nonefnr   requestfastapi.Requestusernamec                "   t          j                    j        | _        |p| j        | _        || _        || _        || _        |j        | _        d | _	        d | _
        d| _        d| _        d| _        d| _        t          j                    | _        d S )NFTr   )uuiduuid4hex_idr#   r%   r&   r(   concurrency_iddataprogressprogress_pendingaliven_callsrun_timeasyncior"   signal)selfr#   r%   r&   r(   s        _/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/gradio/queueing.py__init__zEvent.__init__2   s     :<<#!-!9  /04	04&+
 moo    c                "    | j         j        dk    S )Nstream)r%   
connectionr7   s    r8   	streamingzEvent.streamingG   s    w!X--r:   c                t    | j         st          d          | j        j        dS | j        | j        j        k    S )Nz6Cannot access if_finished during a non-streaming eventF)r?   
ValueErrorr%   
time_limitr4   r>   s    r8   is_finishedzEvent.is_finishedK   s>    ~ 	WUVVV7%5} 222r:   N)r#   r$   r%   r   r&   r'   r(   r$   )__name__
__module____qualname__r9   propertyr?   rC    r:   r8   r"   r"   1   s^        & & & &* . . X. 3 3 X3 3 3r:   r"   c                      e Zd ZddZdS )
EventQueuer.   strconcurrency_limit
int | Nonec                p    g | _         || _        || _        d| _        t	          t
                    | _        d S Nr   )queuer.   rL   current_concurrencyr   setstart_times_per_fn)r7   r.   rL   s      r8   r9   zEventQueue.__init__U   s>    "$
,!2#$ JUK
 K
r:   N)r.   rK   rL   rM   )rD   rE   rF   r9   rH   r:   r8   rJ   rJ   T   s(        
 
 
 
 
 
r:   rJ   c                      e Zd Zd ZddZdS )ProcessTimec                0    d| _         d| _        d| _        d S rO   process_timecountavg_timer>   s    r8   r9   zProcessTime.__init__`   s    
r:   timefloatc                n    | xj         |z  c_         | xj        dz  c_        | j         | j        z  | _        d S )N   rW   )r7   r[   s     r8   addzProcessTime.adde   s:    T!

a

)DJ6r:   N)r[   r\   )rD   rE   rF   r9   r_   rH   r:   r8   rU   rU   _   s7          
7 7 7 7 7 7r:   rU   c                  2   e Zd Z	 dWdXdZd Zd ZdYdZd ZdZdZd[dZ	d Z
d\d$Zd% Zd]d(Zd^d)Zd_d+Zd`d-Zd`d.Zdad3Z	 	 dbdcd=Zd>d>d?dddAZd`dBZ	 dedfdEZdgdGZedhdH            ZedidJ            ZedjdL            ZedkdR            ZdldUZdmdVZd>S )nr   not_setlive_updatesboolconcurrency_countintupdate_intervalsr\   max_sizerM   blocksr    default_concurrency_limitint | None | Literal['not_set']c                    t          d          | _        i | _        i | _        t	                      | _        i | _        d| _        || _        || _	        g | _
        t	                      | _        d | _        t          t                    | _        || _        d| _        d| _        || _        || _        g | _        |                     |          | _        i | _        di i| _        d| _        t7          t9          j        dd                    | _        d S )	Ni  Fg?g?	functionsr    GRADIO_ANALYTICS_CACHE_FREQUENCY1)r   pending_messages_per_sessionpending_event_ids_sessionevent_ids_to_eventsr   pending_message_lockevent_queue_per_concurrency_idstoppedmax_thread_countrf   active_jobsdelete_lock
server_appr   rU   process_time_per_fnrb   sleep_when_freeprogress_update_sleep_when_freerg   rh   _asyncio_tasks_resolve_concurrency_limitri   event_analyticscached_event_analytics_summaryevent_count_at_last_cachere   osgetenvANAYLTICS_CACHE_FREQUENCY)r7   rb   rd   rf   rg   rh   ri   s          r8   r9   zQueue.__init__l   s    TNN 	) ?A&57 $1OO!EG+ 1 057(??LWM
 M
  )#/2, 24)-)H)H%*
 *
& JL/:B.?+)*&),I8#>>*
 *
&&&r:   c                0   t          |          | j        z
  | j        k    rot          j        dd          5  t          j        t          |                                                                        t          j
                                      d          }d d d            n# 1 swxY w Y   t          |          | _        |                    d          }di i}|D ]\  }}|d         j        }t          j        |d	k              }t          j        |d
k              }	||	z   }
|
dk    r||
z  nd }t          j        |d         j        g d          }||d         |d         |d         d|j        d         d|d         |<   || _        | j        S )Nzfuture.no_silent_downcastingT)valueF)copyfunctionrl   statussuccessfailedr   rX   )2   Z   c   r^      )50th90th99th)success_rateprocess_time_percentilestotal_requests)lenr   r   pdoption_context	DataFramelistvaluesfillnanpnaninfer_objectsgroupbysum
percentileshaper   )r7   r~   dfgroupedmetricsfn_namefn_dfr   r   failuretotalr   percentiless                r8   compute_analytics_summaryzQueue.compute_analytics_summary   s     4#AA-. . "#A4HH  Lo&<&<&>&>!?!?@@V"&V))"]]..                .1-A-AD*jj,,G"B'G")  x/&9!455&8!344')27!))w mE.,A,H,,,WW$0 +A +A +A1 1
 ',k!n1 1$W-- 3:D/22s   A&B))B-0B-c                    d g| j         z  | _        t          | j                   t          | j                   | j        st          | j                   d S d S N)ru   rv   r   start_processingstart_progress_updatesrb   notify_clientsr>   s    r8   startzQueue.start   sb     6D$99t4555t:;;;  	8"4#677777	8 	8r:   block_fnr   c                    |j         }|j        dk    r| j        }n|j        }|| j        vrt	          ||          | j        |<   d S |(| j        |         }|j        ||j        k     r||_        d S d S d S )Ndefault)r.   rL   ri   rs   rJ   )r7   r   r.   rL   existing_event_queues        r8   create_event_queue_for_fnzQueue.create_event_queue_for_fn   s    !0%22 $ > ( :!DDDBL 1C CD/??? )#'#F~#V $6>$';'MMM9J$666 *)
 NMr:   c                    d| _         d S )NT)rt   r>   s    r8   closezQueue.close   s    r:   eventr"   event_messager   c                ~    |j         sd S |j        |_        | j        |j                 }|                    |           d S r   )r2   r-   event_idro   r#   
put_nowait)r7   r   r   messagess       r8   send_messagezQueue.send_message   sG    
 { 	F!&4U5GHM*****r:   returnc                    |dk    r|S t           j                            d          x}r)|                                dk    rdS t	          |          S dS )a  
        Handles the logic of resolving the default_concurrency_limit as this can be specified via a combination
        of the `default_concurrency_limit` parameter of the `Blocks.queue()` or the `GRADIO_DEFAULT_CONCURRENCY_LIMIT`
        environment variable. The parameter in `Blocks.queue()` takes precedence over the environment variable.
        Parameters:
            default_concurrency_limit: The default concurrency limit, as specified by a user in `Blocks.queu()`.
        ra    GRADIO_DEFAULT_CONCURRENCY_LIMITnoneNr^   )r   environgetlowerre   )r7   ri   default_concurrency_limit_envs      r8   r}   z Queue._resolve_concurrency_limit   sj     %	11,,,.JNN.-
 -
 
( 	 -2244>>t89991r:   c                p    d}| j                                         D ]}|t          |j                  z  }|S rO   )rs   r   r   rP   )r7   	total_lenevent_queues      r8   __len__zQueue.__len__   sB    	>EEGG 	0 	0K[.///IIr:   bodyr   r&   r'   r(   r$   tuple[bool, str]c                  K   |j         dS | j        5t          |           | j        k    rdd| j         dt          |            dfS |j        r/| j        j        |j                 }|j        j        |j                  }n| j        j        |j                  }t          j	        | j        d |          }| 
                    |           t          |j        |||          }||_        |j        |j        |_        | j        4 d {V  |j        | j        vrt                      | j        |j        <   |j        | j        vrt#                      | j        |j        <   	 d d d           d {V  n# 1 d {V swxY w Y   | j        |j                                     |j                   || j        |j        <   	 | j        |j                 }n"# t.          $ r}t/          d          |d }~ww xY w|j                            |           t5          j                    dd |j        |j        d| j        |j        <   |                     |j        t          |j                  d	z
             d
|j        fS )N)FzNo function index provided.FzQueue is full. Max size is z and size is .zEvent not found in queue. If you are deploying this Gradio app with multiple replicas, please enable stickiness to ensure that all requests from the same user are routed to the same instance.queued)r[   r   rX   r   r#   r^   T)fn_indexrg   r   r#   rh   state_holderblocks_configfnsr
   get_fnr   r"   r/   rr   ro   ThreadQueuerp   rR   r_   r-   rq   rs   r.   KeyErrorrP   appendr[   api_namer~   broadcast_estimations)	r7   r   r&   r(   session_stater%   r   r   es	            r8   pushz
Queue.push   s/      = 77=$Tdm)C)CVdmVV#d))VVV 
  	0 K4T5FGM,0?BB/BT488&&r***	
 
 
$ % 2D, 	J 	J 	J 	J 	J 	J 	J 	J (IIIGR}}1$2CD (FFFDGEE.t/@AI		J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J
 	&t'89==eiHHH.3 +	=e>RSKK 	 	 	 R 	 	  '''IKK  -+
 +
UY' 	""5#7[=N9O9ORS9STTTUYs+   AE))
E36E34G 
G&G!!G&c                P    | j         D ]}|                                 g | _         d S r   )r|   cancel)r7   tasks     r8   _cancel_asyncio_taskszQueue._cancel_asyncio_tasks2  s1    ' 	 	DKKMMMM r:   app
routes.Appc                    || _         d S r   )rx   )r7   r   s     r8   set_server_appzQueue.set_server_app7  s    r:   c                ,    d}| j         D ]	}||dz  }
|S )Nr   r^   )rv   )r7   rY   workers      r8   get_active_worker_countzQueue.get_active_worker_count:  s.    & 	 	F!
r:   $tuple[list[Event], bool, str] | Nonec                   t          | j                                                  }t          j        |           |D ]}| j        |         }t          |j                  r|j        |j        |j        k     rt|j        d         j	        }g}|j
        }|r.|fd|j        dd          D             d |j        dz
           z  }|D ]}|j                            |           |||fc S d S )Nr   c                4    g | ]}|j         j         k    |S rH   )r%   ).0r   first_events     r8   
<listcomp>z$Queue.get_events.<locals>.<listcomp>O  s2       ! 8{~55 555r:   r^   )r   rs   keysrandomshuffler   rP   rL   rQ   r%   batchmax_batch_sizeremove)	r7   concurrency_idsr.   r   r   eventsr   r   r   s	           @r8   
get_eventszQueue.get_eventsA  s>   tBGGIIJJ'''- 	5 	5N=nMK;$%% 5-52[5RRR)/2&>%  5    %0%6qrr%:   4/!33	5 5F $ 4 4E%,,U3333un4444)	5 	5r:   Nonec                p  K   	 | j         st          |           dk    r t          j        | j                   d {V  ;d | j        vr t          j        | j                   d {V  d| j        4 d {V  |                                 }d d d           d {V  n# 1 d {V swxY w Y   |r$|\  }}}|| j        | j                            d           <   | j	        |         }|xj
        dz  c_
        t          j                    }|j        |d         j                                     |           |D ]}d| j        |j                 d<   t#          | j        |||          }t'          ||d         j        |d         j        j        |d         j        |           | j                            |           | j        r|                     |           nt          j        | j                   d {V  | j         d| _         |                                  d S # d| _         |                                  w xY w)Nr   r^   
processingr   T)rt   r   r5   sleeprz   rv   rw   r   indexrs   rQ   r[   rS   r%   r_   r~   r-   r   process_eventsr   r#   r|   r   rb   r   r   )	r7   event_batchr   r   r.   r   
start_timer   process_event_tasks	            r8   r   zQueue.start_processingZ  s     )	)l %>t99>>!-(<=========t///!-(<=========  + 4 4 4 4 4 4 4 4"&//"3"3K4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4  >4?1FE>EKD$T%5%;%;D%A%AB"&"En"UK33q833!%J26!9<@DDZPPP!' Q QDP,UY7AA)?+VUJ* *& "*q	.q	(q	   '../ABBB( C22>BBB!-(<=========K l %>N  DL&&(((((  DL&&((((s1   A1H 5B
H 
B&&H )B&*EH H5c                Z  K   | j         sd | j        D             }t          |          dk    r t          j        | j                   d{V  K|D ]2}|j        r)|j        r"d|_        |                     ||j                   3t          j        | j                   d{V  | j         dS dS )ah  
        Because progress updates can be very frequent, we do not necessarily want to send a message per update.
        Rather, we check for progress updates at regular intervals, and send a message if there is a pending update.
        Consecutive progress updates between sends will overwrite each other so only the most recent update will be sent.
        c                     g | ]}||D ]}|S r   rH   r   jobevts      r8   r   z0Queue.start_progress_updates.<locals>.<listcomp>  s$    XXXcTWScr:   r   NF)	rt   rv   r   r5   r   r{   r1   r0   r   )r7   r   r   s      r8   r   zQueue.start_progress_updates  s       , 	FXXT%5XXXF6{{amD$HIIIIIIIII = =) =en =-2E*%%eU^<<<- DEEEEEEEEE , 	F 	F 	F 	F 	Fr:   r   rK   	iterableslist[TrackedIterable] | Nonec           
        |d S | j         D ]z}||D ]r}|j        |k    reg }|D ]D}t          |j        |j        |j        |j        |j                  }|                    |           Et          |          |_        d|_
        s{d S )N)r   lengthunitr0   desc)progress_dataT)rv   r-   r   r   r	  r
  r0   r  r   r   r1   )r7   r   r  r  r  r  iterableprogress_units           r8   set_progresszQueue.set_progress  s    
 F# 	0 	0C{ 0 07h&&8:M$- < <(4"*.#+?!)%-%6!)) ) ) &,,];;;;#2#O#O#OCL+/C(0	0 	0r:   
   Tlogtitlelevel%Literal['info', 'warning', 'success']durationfloat | Nonevisiblec                    d | j         D             }|D ]7}|j        |k    r*t          |||||          }	|                     ||	           8d S )Nc                     g | ]}||D ]}|S r   rH   r  s      r8   r   z%Queue.log_message.<locals>.<listcomp>  s$    TTT#S_PS__#____r:   )r  r  r  r  r  )rv   r-   r   r   )
r7   r   r  r  r  r  r  r   r   log_messages
             r8   r  zQueue.log_message  s}     UT!1TTT 		6 		6EyH$$(%#   !!%555		6 		6r:   N)r#   r   r#   c                 K   | j         D ]&}|r"|D ]}|j        |k    s|j        |k    rd|_         '| j        4 d {V  g }| j                                        D ]7}|j        D ]-}|j        |k    s|j        |k    r|                    |           .8|D ],}| j        |j	                 j        
                    |           -	 d d d           d {V  d S # 1 d {V swxY w Y   d S )NF)rv   r#   r-   r2   rw   rs   r   rP   r   r.   r   )r7   r#   r   job_setr  events_to_remover   r   s           r8   clean_eventszQueue.clean_events  s      ' 	* 	*G *" * *C'<7737h;N;N$)	# 
	 
	 
	 
	 
	 
	 
	 
	,.#BIIKK 7 7(. 7 7E)\99UY(=R=R(//6667 *  3E4HIOVV   
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   BC
C"Cc                   K   | j         sZt          j        | j                   d{V  t	          |           dk    r| j        D ]}|                     |           | j         XdS dS )zQ
        Notify clients about events statuses in the queue periodically.
        Nr   )rt   r5   r   rf   r   rs   r   )r7   r.   s     r8   r   zQueue.notify_clients  s       , 	?- 56666666664yy1}}&*&I ? ?N..~>>>>	 , 	? 	? 	? 	? 	?r:   r.   afterc                .   d}| j         |         }d}|j        |j        k    rg }|j                                        D ]J\  }}|| j        vrd } n9|j        dk    r
|j        pdn| j        |         j        |fd|D             z  }K|Ft          |          dk    r3t          |          }	t          |	t          j                    z
  d          }t          |j                  D ]\  }
}|j        | j        v r| j        |j                 j        nd }||
|||z   |z   nd }||
|k    r8|                     |t#          |
|t          |j                                       |j        d}|%|#||j        z  }|j        r|pd|j        z  }||z  }d }d S )Nr   r<   c                    g | ]}|z   S rH   rH   )r   r   rX   s     r8   r   z/Queue.broadcast_estimations.<locals>.<listcomp>  s+     ' ' '2<J-' ' 'r:   )rankrank_eta
queue_size)rs   rQ   rL   rS   itemsry   r=   rB   rZ   r   minmaxr[   	enumeraterP   r%   r   r   r?   )r7   r.   r   wait_so_farr   time_till_available_workerexpected_end_timesr%   start_timestime_of_first_completionr#  r   process_time_for_fnr$  deltarX   s                  @r8   r   zQueue.broadcast_estimations  sQ    9.I12"*k.KKK!##.#A#G#G#I#I 
 
KT55515.E=H,,#%=#5ALL#'#;B#?#HL" ' ' ' '@K' ' ' "" *5#>P:Q:QTU:U:U+./A+B+B(-0,ty{{:A. .* %[%677 &	# &	#KD% 8t777 (2;;   '2+.: $k14NNN   }!!%!H[EVAWAW     ,4(-@-L+k.KK? 627a#56E u$"M&	# &	#r:   r   c                <    t          t          |                     S )N)r%  )r   r   r>   s    r8   
get_statuszQueue.get_status)  s"     4yy
 
 
 	
r:   c                H   K   | j                                          d {V  dS )Nr6   )r6   wait)r   s    r8   wait_for_eventzQueue.wait_for_event.  s1      l!!!!!!!!!xr:   timeoutc                >   K   t          j        |            d {V  dS )Nr6  )r5   r   )r6  s    r8   r6  zQueue.timeout3  s-      mG$$$$$$$$$yr:   Literal['signal', 'timeout']c                  K   t          j        t                              |                     }t          j        t                              |                    }t          j        ||gt           j                   d {V \  }}d |D             }| j                                         t          t          d         |d                   S )Nreturn_whenc                6    g | ]}|                                 S rH   resultr   ds     r8   r   z3Queue.wait_for_event_or_timeout.<locals>.<listcomp>B       )))q

)))r:   )r6   r6  r   )r5   create_taskr   r5  r6  r4  FIRST_COMPLETEDr6   clearr   r   )r   r6  t1t2done_s         r8   wait_for_event_or_timeoutzQueue.wait_for_event_or_timeout8  s        !5!5e!<!<== w!7!788H/
 
 
 
 
 
 
 
 
a *)D)))G/0$q':::r:   r   list[Event]timeoutslist[float]tuple[list[Event], list[Event]]c           	       K   g }t          | |d          D ]E\  }}|                    t          j        t                              ||                               Ft          j        |t          j                   d {V \  }}d |D             }g }g }t          || d          D ]6\  }	}|	dk    r|                    |           !|                    |           7||fS )NF)strictr:  c                6    g | ]}|                                 S rH   r=  r?  s     r8   r   z(Queue.wait_for_batch.<locals>.<listcomp>S  rA  r:   r6   )zipr   r5   rB  r   rI  r4  ALL_COMPLETED)
r   rK  tasksr   r6  rG  rH  awake_eventsclosed_eventsr>  s
             r8   wait_for_batchzQueue.wait_for_batchF  s0      !&(5AAA 	 	NE7LL#E$C$CE7$S$STT     -
 
 
 
 
 
 
 
 
a *)D))) ve<<< 	, 	,MFE!!##E****$$U++++]**r:   r   
begin_timec                >  K   g }|d         j         }d}	 |D ]]}|j        rT|                     |t          || j        v r| j        |         j        nd                      |                    |           ^|s	 | j        |d         j                 }|xj	        dz  c_	        |j
        |         }	||	v r|	                    |           	 d | j        | j                            |          <   n# t          $ r Y nw xY w|D ]u}|                     |j                   d {V  ||v r|rdnd| j        |j                 d<   nd| j        |j                 d<   t%          | j        | j                   d {V  vd S |}|d         j        }
|
t          d	          |d         j        }|s|d         j        nd |
_        	 |d         j        |
_        n# t          $ r Y nw xY w|rAt1          t3          d
 |D             ddi          |
_        |d         j        |
_        d|
_        | j        }|t9          d          t;          j        |
||d           }|
j        J t;          j        |
j                  }t;          j         |
j        ||j!                  }d}	 tE          j#                    }t;          j$        ||
|||           d {V }tE          j#                    }||z
  }d }|D ]'}|xj%        ||z
  z  c_%        |j&        r|j'         |d<   (n# t8          $ r}tQ          |tR                    r|j*        rtW          j,                     d }|}|D ]}t[          ||.                                j/                  }ta          j1        |           |                     |te          ||3                    dd          d                     t%          | j        | j                   d {V  Y d }~nd }~ww xY w|r|3                    dd          r|}|}|r\|3                    dd          rEtE          j#                    }|}|}|D ]u}|                     |ti          |j&        stj          j6        ntj          j7        ||d u|j8        sd n%|j&        rts          tt          |j8                  |z
  nd                      vd |D             }|s	 | j        |d         j                 }|xj	        dz  c_	        |j
        |         }	||	v r|	                    |           	 d | j        | j                            |          <   n# t          $ r Y nw xY w|D ]u}|                     |j                   d {V  ||v r|rdnd| j        |j                 d<   nd| j        |j                 d<   t%          | j        | j                   d {V  vd S 	 tE          j#                    }|d         j&        r|tv          <                    |ts          tz          |j8        pd          |z
  gt}          |          z             d {V \  }}|D ]'}|                     |te          |d                     (|sn
ts          t~          |d         j                  }
|r(t1          t3          d |D             ddi          |
_        t;          j$        ||
|||           d {V }tE          j#                    }|D ]'}|xj%        ||z
  z  c_%        |j&        r|j'         |d<   (nJ# t8          $ r=}tQ          |tR                    r|j*        rtW          j,                     d }|}Y d }~nd }~ww xY w|r|3                    dd          E|rd}|}nAd}|p|}t[          ||.                                j/                  }ta          j1        |           |D ]'}|                     |te          ||                     (n|rt          jA        |          }t          |          D ]i\  }}|r9d|v r5t1          t3          |3                    d          ddi          |         |d<   |d u}|                     |te          ||                     jtE          j"                    }|Y|d         j&        s||z
  n|}| j        |d         j                  C                    |           |D ]}|| j        |j                 d<   nF# t8          $ r9}tQ          |tR                    r|j*        rtW          j,                     Y d }~nd }~ww xY w| j        |d         j                 }|xj	        dz  c_	        |j
        |         }	||	v r|	                    |           	 d | j        | j                            |          <   n# t          $ r Y nw xY w|D ]u}|                     |j                   d {V  ||v r|rdnd| j        |j                 d<   nd| j        |j                 d<   t%          | j        | j                   d {V  vd S # | j        |d         j                 }|xj	        dz  c_	        |j
        |         }	||	v r|	                    |           	 d | j        | j                            |          <   n# t          $ r Y nw xY w|D ]u}|                     |j                   d {V  ||v r|rdnd| j        |j                 d<   nd| j        |j                 d<   t%          | j        | j                   d {V  vw xY w)Nr   F)etar^   r   r   r   	cancelledzNo event datac                4    g | ]}|j         	|j         j         S rH   r/   r   r   s     r8   r   z(Queue.process_events.<locals>.<listcomp>  s#    LLLeL%*/LLLr:   rO  TServer app has not been set.)r   r%   r(   r&   )r&   )r&   
route_path	root_path)r   r   
gr_requestr%   r`  is_generatingr  r   )outputr  r   )msgrc  r   rB   c                     g | ]}|j         	|S rH   )r2   r]  s     r8   r   z(Queue.process_events.<locals>.<listcomp>  s    #S#S#Seu{#SE#S#S#Sr:      )rc  r   c                4    g | ]}|j         	|j         j         S rH   r\  r]  s     r8   r   z(Queue.process_events.<locals>.<listcomp>  s4     && && &&,1+0:&&(-
&& && &&r:   r/   rX   )Dr%   r2   r   r   ry   rZ   r   rs   r.   rQ   rS   r   rv   r   rA   reset_iteratorsr-   r~   r	   r   r/   r(   r   r&   r   rQ  batchedrx   	Exceptionr
   compile_gr_requestget_api_call_pathget_root_urlr`  r[   	monotoniccall_process_apir4   r?   rC   
isinstancer   print_exception	traceback	print_excr   
get_blocks
show_errorr   
send_errorr   r   r   r   process_generatingprocess_streamingrB   r   re   r   rV  r\   r   r   r   deepcopyr)  r_   )r7   r   r   rW  rT  r%   r   r   r   r-  r   r(   r   ra  api_route_pathr`  first_iterationr   responseenderrr   contentold_responseold_errrU  closed_eventrc  errorend_timer  s                                  r8   r   zQueue.process_events]  s      %'AY\i	U 
/ 
/; 	/%%,!T%=== !% 8 < E E!%     !''... D =fQi>VWK++q0++%8<K[(("":...CG !1!7!7!?!?@@   
    U U
 **59555555555L((%,:		( (3H== ALD(3H=t=t?STTTTTTTTTTU U[ "F!9>D| 111ay)H16@F1IMMDDM%ay0     $ LLvLLL$  	  &ay0#/C{ >???$7!	  J <+++(:4<PPPN#0)-  I
  O!Y((!,!=)'" " "       n&&"%+) J JENNcEk1NN J8=8I4I1J
  Y Y Y!!U++ *q/@ *')))) Y YE+C1A1A1LMMG)#...%%/#*")++gw"?"?$)     #4#A4CWXXXXXXXXXXY Y Y Y YY"  hHLL%@@ h' H 8<<#G#G H  N,,E#+L!G!-  ))!4',%EM$D$D%2%D'3(4D(@')},*44 $)?&*T#r}%=%=%O%O%)      $T#S|#S#S#SL' | =fQi>VWK++q0++%8<K[(("":...CG !1!7!7!?!?@@   
    U U
 **59555555555L((%,:		( (3H== ALD(3H=t=t?STTTTTTTTTTU UU1  $ 0 0'?4 "@E@T@T ,
 "&eR]-@b!A!AO!S T"%l"3"3!4A A ; ; ; ; ; ;7L- 1> " " $ 1 1$0$;/7%& %& %&!" !" !" !"  , "!#$7a9MNN  
(, #&& &&5;&& && &&!" ,1!" !"	) 	)DI *5)E #!%'1!&/* * * $ $ $ $ $ $ #n..%1 R RE!NNcEk9NN$ R@E@Q<Q 9R %      )!U33 2q7H 2%/111#'	 I  H 8<<#G#G H T  1"G%FF#GN7E*5#..2B2B2MNNF)%000)  E%%6fgVVV   
  x00 ), 7 7  HAu 6!1!1)-c8<<3G3G.VPU.V.V)W)W*v 'd2G%%/#)$+      y{{H# "!9.)Hz))( 
 (6::8DDD# O OEFND(3NCC 	& 	& 	&a'' &1+< &#%%%	& =fQi>VWK++q0++%8<K[(("":...CG !1!7!7!?!?@@   
    U U
 **59555555555L((%,:		( (3H== ALD(3H=t=t?STTTTTTTTTTU U =fQi>VWK++q0++%8<K[(("":...CG !1!7!7!?!?@@   
    U U
 **59555555555L((%,:		( (3H== ALD(3H=t=t?STTTTTTTTTTUs  A"c "C* *
C76C74Ac 8G 
c 
Gc GB<c A6L c 
O-CO(#c (O--Cc "T8 8
UUB\
 !c #B&\
 	c 

]3]c ]Fc h  
d!(/dh  d!!h  3"f 
f#"f# Al0"jl
j lj  A<lc                Z  K   | j         }|t          d          ||j        vrd S |j        4 d {V  	 t	          |j        |                    d {V  n# t          $ r Y nw xY w|j        |= |j                            |           d d d           d {V  n# 1 d {V swxY w Y   d S )Nr^  )rx   rj  	iteratorslockr   iterators_to_resetr_   )r7   r   r   s      r8   rh  zQueue.reset_iteratorsN  sa     o;:;;;3=((F8 	1 	1 	1 	1 	1 	1 	1 	1*3=+BCCCCCCCCCC   h'"&&x000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	s4   B AB
A# B"A##%B
B$'B$)ra   )rb   rc   rd   re   rf   r\   rg   rM   rh   r    ri   rj   )r   r   )r   r"   r   r   )ri   rj   r   rM   )r   r   r&   r'   r(   r$   r   r   )r   r   )r   re   )r   r   )r   r   )r   rK   r  r  )r  T)r   rK   r  rK   r  rK   r  r  r  r  r  rc   )r#   r$   r   r$   r   r   r   )r.   rK   r   rM   r   r   )r   r   )r   r"   r   rK   )r6  r\   r   rK   )r   r"   r6  r\   r   r8  )r   rJ  rK  rL  r   rM  )r   rJ  r   rc   rW  r\   r   r   )r   rK   )rD   rE   rF   r9   r   r   r   r   r   r}   r   r   r   r   r   r   r   r   r  r  r  r   r   r2  staticmethodr5  r6  rI  rV  r   rh  rH   r:   r8   r   r   k   s        FO'
 '
 '
 '
 '
R3 3 3B8 8 8K K K K*  	+ 	+ 	+ 	+   ,  3 3 3 3j! ! !
      5 5 5 52*) *) *) *)XF F F F(0 0 0 0> "$6 6 6 6 6, -1     *? ? ? ? 8<@# @# @# @# @#D
 
 
 

    \    \ ; ; ; \; + + + \+,oU oU oU oUb     r:   r   ):
__future__r   r5   r   r   r   r[   rr  r*   collectionsr   rP   r   r   typingr   r   r   fastapinumpyr   pandasr   anyio.to_threadr	   gradior
   r   r   gradio.data_classesr   gradio.exceptionsr   gradio.helpersr   gradio.server_messagesr   r   r   r   r   r   r   r   r   gradio.utilsr   r   r   r   r   r   gradio.blocksr   r    r"   rJ   rU   rH   r:   r8   <module>r     s   " " " " " "   				        # # # # # # & & & & & & / / / / / / / / / /          $ $ $ $ $ $ 2 2 2 2 2 2 2 2 2 2      $ # # # # # * * * * * *
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                 433333333 3  3  3  3  3  3  3  3F
 
 
 
 
 
 
 
	7 	7 	7 	7 	7 	7 	7 	7r r r r r r r r r rr:   