
    .`i#                         d dl mZ d dlmZmZmZmZmZmZ d dl	Z	d dl
mZ  ee          Z G d d          Z G d d          ZdS )	    )	UnionType)	AnnotatedAnyUnionget_args
get_originget_type_hintsN)init_loggerc                   |     e Zd Zdddeez  dee         dz  ddf fdZdedeeez  df         fd	Zdefd
Z	 xZ
S )TensorShapeN)dynamic_dimsdimsr   returnc                    t                                                       || _        |r|nt                      | _        d S N)super__init__r   setr   )selfr   r   	__class__s      l/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/utils/tensor_schema.pyr   zTensorShape.__init__   s=    
 		,8CLLcee    bindings.c                 
   t          t          t          z                       }| j        D ]L}t	          |t                    r ||v r|                    ||                    7|                    |           Mt          |          S r   )listintstrr   
isinstanceappendtuple)r   r   resolveddims       r   resolvezTensorShape.resolve   sz    c	?$$9 	% 	%C#s## %x....$$$$Xr   c                 *   g }| j         D ]q}t          |t                    r8|| j        v r|                    | d           9|                    |           O|                    t          |                     rdd                    |           dS )z3Return a string representation of the tensor shape.*(z, ))r   r   r   r   r   join)r   dim_strsr"   s      r   __str__zTensorShape.__str__!   s    9 	* 	*C#s## *$+++OOsIII....OOC((((C)))))499X&&))))r   )__name__
__module____qualname__r   r   r   r   r    r#   r*   __classcell__r   s   @r   r   r      s         )-D D DSyD #hoD 
	D D D D D D# %c	3*?    * * * * * * * * *r   r   c                       e Zd Zddddedeeef         dz  deddf fdZd	edefd
Z	dd	ededefdZ
deedf         deedf         deeez  df         dee         def
dZdeedf         defdZ	 d dededeeez  df         dee         deedf         deedf         fdZdeedf         deeez  df         dedeeef         dee         ddfdZd!dZd!dZ xZS )"TensorSchemaTN)validateresolve_bindingsr2   r3   kwargsr   c                    t                                                       |r|ni | _        |                                D ]\  }}t	          | ||           |r|                                  d S d S r   )r   r   _resolve_bindingsitemssetattrr2   )r   r2   r3   r4   keyvaluer   s         r   r   zTensorSchema.__init__0   s     	5E!M!1!12 ,,.. 	& 	&JCD#u%%%% 	MMOOOOO	 	r   r9   c                 "    t          | |          S r   getattr)r   r9   s     r   __getitem__zTensorSchema.__getitem__A   s    tS!!!r   defaultc                 $    t          | ||          S r   r<   )r   r9   r?   s      r   getzTensorSchema.getD   s    tS'***r   actual.	referenceexpected_shaper   c                 $   t          |          t          |          k    s t          |          t          |          k    rdS t          t          ||                    D ]/\  }\  }}|t          |           |z            }||v r&||k    r dS 0dS )NFT)len	enumeratezip)	r   rB   rC   rD   r   iarr"   s	            r   _match_shape_with_dynamicz&TensorSchema._match_shape_with_dynamicG   s     v;;#i..((CKK#n:M:M,M,M5"3vy#9#9:: 
	 
	IAv1
 !#f++!12Cl""Avvuu tr   idxsc                 B    |sdS t          t          |                    S )N )r   r   )r   rM   s     r   _fmt_indexerzTensorSchema._fmt_indexer^   s!     	24::r    r:   
field_nameleading_idxsc                    t          |t          t          f          rdS t          |t          j                  r|j        S t          |t          t          f          s6t          | | 	                    |           dt          |                     t          |          dk    r't          | | 	                    |           d          t          |          D ]|\  }}|                     |||dd         |||fz             }|dk    r|}	4|                     ||	||          s0t          | | 	                    |           d|	 d	| d
| d	          }t          |          f|	z   S )z-Validate a field and return the actual shape.rQ   zI is not one of the expected types: int, float, Tensor, list, tuple. Got: r   z is an empty sequence   N)rS   z contains inconsistent shapes: z (index 0) vs z (index r'   )r   r   floattorchTensorshaper   r    	TypeErrorrP   typerF   
ValueErrorrG   _validate_fieldrL   )
r   r:   rR   rD   r   rS   rI   vrY   first_shapes
             r   r]   zTensorSchema._validate_fieldd   s    ec5\** 	2eU\** 	;%$// 	 &t00>> & &U& &   u::??Ut00>>UUU   e$$ 	 	DAq((qrr")QD0 )  E Avv#33	  
 !! 84#4#4\#B#B 8 85@8 8$)8 8348 8 8  
 E

}{**r   actual_shape	shape_envc                    t          |          t          |          k    r7t          | dt          |           dt          |           d| d| 	          t          |          D ]\  }}||v r
t          |t                    r3||         |k    r&t          | d| d| d||          d| d|           Rt          |t
                    rL||v r<||         ||         k    r)t          | d| d| d	||          d||          	          ||         ||<   t          | d| d
t          |                     dS )zAValidate that the actual tensor shape matches the expected shape.z
 has rank z but expected z. Expected shape: z
, but got z dim[z] expected z, got z] expected 'z'=z] has unsupported type: N)rF   r\   rG   r   r   r   rZ   r[   )r   r`   rD   rR   ra   r   rI   r"   s           r   _validate_tensor_shape_expectedz,TensorSchema._validate_tensor_shape_expected   s    |N 3 333 * *\):): * * #N 3 3* *#1* * (* *    // 	 	FAsl""C%% ?c))$% 2 2A 2 22 2&21o2 2+92 2 $02 2   * C%% )###A)C.88() 1 1 1 1 #1 1'0~1 1+A1 1   9 &2!_IcNN!NNNN499NN  -	 	r   c           	         t          | j        d          }t          t          t          f                     }|                                D ];\  }}t          | |          rt          | |          |}t          |          t          u rt          |          }|d         }t          |          t          t          hv r!t          |          }t          d           |v rt          d| d          t          | |          }t          |          vt          |          }|D ]d}t          |t                     rM |j        di | j        }	|                     |||	|j                  }
|                     |
|	|||j                   e=d S )NTinclude_extrasr   zRequired field 'z' is missingrQ   )r	   r   dictr   r   r7   hasattrr=   r   r   r   r   r   r[   r\   r   r   r#   r6   r]   r   rc   )r   
type_hintsra   rR   
field_typeactual_typeargsr:   argrD   r`   s              r   r2   zTensorSchema.validate   s   #DN4HHH
cN$$	&0&6&6&8&8 (	 (	"J
4,, Nj0I0I0Q(j))Y66#J//D"&q'K k**ui.@@@#K00DDzzT))  !LJ!L!L!LMMM D*--E*%%1
++  C!#{33 )4)N)Nt7M)N)N'+';';!&*,	( ( <<(*&%,  E(	 (	r   c           	      r   t                               d| j        j                   t	          | j        d          }|                                D ]f\  }}t          |          Rt          |          }|D ]@}t          |t                    r)t                               d|t          |                     AgdS )z,Print TensorShape annotations for debugging.zShapes in %s:Tre   Nz  %s: %s)loggerdebugr   r+   r	   r7   r   r   r   r   r   )r   ri   rR   rj   rl   rm   s         r   print_shapeszTensorSchema.print_shapes   s    _dn&=>>>#DN4HHH
&0&6&6&8&8 	G 	G"J
*%%1
++ G GC!#{33 GZSXXFFF	G 	Gr   r   )rQ   )r   N)r+   r,   r-   boolrg   r   r   r   r   r>   rA   r    r   rL   rP   objectr]   rc   r2   rq   r.   r/   s   @r   r1   r1   /   s~        26	    sCx.4/	
  
     ""s "s " " " "+ +s +S +C + + + +c3h c? cCin-	
 #h 
   .sCx S     )+5+ 5+5+ 5+ cCin-	5+
 #h5+ CHo5+ 
sCx5+ 5+ 5+ 5+n*CHo* cCin-* 	*
 S>* #h* 
* * * *X, , , ,\
G 
G 
G 
G 
G 
G 
G 
Gr   r1   )typesr   typingr   r   r   r   r   r	   rW   vllm.loggerr
   r+   ro   r   r1   rQ   r   r   <module>rw      s          N N N N N N N N N N N N N N N N  # # # # # #	X		* * * * * * * *DPG PG PG PG PG PG PG PG PG PGr   