
    .`i              
       F   U d Z ddlmZmZ ddlmZ ddlmZmZm	Z	m
Z
mZ er
ddlZddlmZ  e
d          Z e
d          Zeed	f         ed	         z  ed
         z  ez  Ze	ed<   	 eed	f         ed	         z  ed
         z  eeef         z  ee         z  eedf         z  ez  Ze	ed<   	 dee         dee         fdZededgdf         ddddfd            Zedeegef         deeeef         z  deeeef         z  fd            Zedeegef         deee         z  deee         z  fd            Zedeegef         deeedf         z  deeedf         z  fd            Zedeegef         dee         dee         fd            Zdeegef         deddee         z  fdZedeeegef         deeeef         z  defd            Zedeeegef         deee         z  defd            Zedeeegef         deeedf         z  defd            Zedeeegef         dee         defd            Zedeeegef         dee         dedefd            Z	 d"deeegef         eeegef         z  dee         dedeez  fd Zdee         defd!ZdS )#z5Helper functions to work with nested JSON structures.    )CallableIterable)reduce)TYPE_CHECKINGAny	TypeAliasTypeVaroverloadN)BatchedTensorInputs_T_UJSONTree[_T])r   .JSONTree.	_JSONTreevaluereturnc              #     K   t          | t                    r.|                                 D ]}t          |          E d{V  dS t          | t          t
          f          r| D ]}t          |          E d{V  dS | V  dS )z5Iterate through each leaf in a nested JSON structure.N)
isinstancedictvaluesjson_iter_leaveslisttuple)r   vs     g/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/utils/jsontree.pyr   r   $   s      %  	+ 	+A'**********	+ 	+	ED%=	)	)  	+ 	+A'**********	+ 	+     funcztorch.Tensorr   c                     d S N r   r   s     r   json_map_leavesr"   0   s	      Cr   c                     d S r   r    r!   s     r   r"   r"   7   s	     r   c                     d S r   r    r!   s     r   r"   r"   >   s	     Cr   c                     d S r   r    r!   s     r   r"   r"   E   s	     #r   c                     d S r   r    r!   s     r   r"   r"   L   s	     3r   c                 *    t          |t                    r  fd|                                D             S t          |t                    r fd|D             S t          |t                    rt	           fd|D                       S   |          S )z9Apply a function to each leaf in a nested JSON structure.c                 8    i | ]\  }}|t          |          S r    r"   ).0kr   r   s      r   
<dictcomp>z#json_map_leaves.<locals>.<dictcomp>Y   s)    FFF1?4++FFFr   c                 0    g | ]}t          |          S r    r)   r*   r   r   s     r   
<listcomp>z#json_map_leaves.<locals>.<listcomp>[   s#    888Qa((888r   c              3   8   K   | ]}t          |          V  d S r   r)   r.   s     r   	<genexpr>z"json_map_leaves.<locals>.<genexpr>]   s-      ==!_T1--======r   )r   r   itemsr   r   r!   s   ` r   r"   r"   S   s    
 % FFFFFFFF	E4	 	  8888%8888	E5	!	! ====u======tE{{r   c                    d S r   r    r!   s     r   json_reduce_leavesr4   b   	    
 
r   c                    d S r   r    r!   s     r   r4   r4   j   r5   r   c                    d S r   r    r!   s     r   r4   r4   r   r5   r   c                    d S r   r    r!   s     r   r4   r4   z   r5   r   initialc                    d S r   r    r   r   r9   s      r   r4   r4      s	     
r   c                    |du rt          | t          |                    S t          | t          |          |          S )z
    Apply a function of two arguments cumulatively to each leaf in a
    nested JSON structure, from left to right, so as to reduce the
    sequence to a single value.
    .)r   r   r;   s      r   r4   r4      sA     #~~d,U33444$(//999r   c                 N    t          d t          |           D                       S )z6Count the number of leaves in a nested JSON structure.c              3      K   | ]}d V  dS )   Nr    )r*   _s     r   r1   z$json_count_leaves.<locals>.<genexpr>   s"      22Qq222222r   )sumr   )r   s    r   json_count_leavesrB      s(    22*511222222r   ).)__doc__collections.abcr   r   	functoolsr   typingr   r   r   r	   r
   torchvllm.multimodal.inputsr   r   r   r   strr   r   r   __annotations__r   r   r"   r4   intrB   r    r   r   <module>rL      s   < ; ; . . . . . . . .       C C C C C C C C C C C C C C ;LLL::::::WT]]WT]] 	n	^ 44u=P7QQTVV 	)    N 	n	
> ! 37m 2h	
 BGn 		 
9   
	HRL 	Xb\ 	 	 	 	 
 
N#^3
4          
  

B48
S"W $sBw-   
 

B48
R= $r(]   
 

B48
b#g %C.   
 

B48
B< b\   

B48
 Yr]*    

B8R<
 S"W 	   
 

B8R<
 R= 	   
 

B8R<
 b#g 	   
 

B8R<
 B< 	   
 

B8R<
 B< 
    
 : :
B8R<
 8RHbL#9
9:R=: :
 "W: : : :"3Xb\ 3c 3 3 3 3 3 3r   