
    `ik                     H   d dl Z d dlmZ d dlmZmZmZmZ d dlZd dl	Z	ddl
mZmZ eeeeef                           Z G d de          Zeee	j        j        eee	j        f         Z e j        d          ded	ed
efd            Zdee         d
efdZ G d d          ZdS )    N)Sequence)CallableOptionalProtocolUnion   )OpsValueVc                   *    e Zd Zedefd            ZdS )ShapeVarreturnc                     d S N )selfs    u/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/_inductor/shape_propagation.pyshapezShapeVar.shape   s    '*s    N)__name__
__module____qualname__propertyBlockShapeTyper   r   r   r   r   r      s+        *~*** X***r   r   abr   c           	         t          | t                    sJ t          |t                    sJ t          |           t          |          k    r6t          | g dgt          |           t          |          z
  z  |R           S t          |           t          |          k     r:| |} }t          | g dgt          |           t          |          z
  z  |R           S dt          t
          t          f         dt          t
          t          f         dt          t
          t          f         fdt          fdt          | |          D                       S )Nr   d1d2r   c                     t          |           dk    r|S t          |          dk    r| S t          |           t          |          k    sJ | S )N1)str)r   r   s     r   _get_broadcasted_dimz3get_broadcasted_shape.<locals>._get_broadcasted_dim%   sN     2ww#~~	RC	r77c"gg%%%%Ir   c              3   6   K   | ]\  }} ||          V  d S r   r   ).0r   r   r"   s      r   	<genexpr>z(get_broadcasted_shape.<locals>.<genexpr>/   s5      JJfb"))"b11JJJJJJr   )	
isinstancer   lenget_broadcasted_shaper   intr!   tuplezip)r   r   r"   s     @r   r(   r(      s=   a"""""a"""""
1vvA$Q(F1#Q#a&&*A(FA(F(FGGG	Q#a&&!1$Q(F1#Q#a&&*A(FA(F(FGGG	c3h	%*38_	38_	 	 	 	 JJJJAq		JJJJJJr   argsc                    d }| D ]}t          |d          r<|j        }| d S |t          |          }0t          |t          |                    }Nt	          |t
          t          f          r|d}ot	          |t          j                  rddl	m
}m} t	          |||t          f          r d S t          dt          |                     |S )Nr   r   r   )LoopBodyLoopBodyBlockzUnknown type: )hasattrr   r*   r(   r&   r)   floattorchdtypetorch._inductor.loop_bodyr.   r/   r	   	TypeErrortype)r,   result_shapeargr   r.   r/   s         r   broadcast_shapes_for_argsr9   2   s    #'L : :3   	:IE}tt%$U||4\5<<PPc5\** 	:#!U[)) 	:IIIIIIII#xBCC tt8T#YY88999r   c                   v   e Zd ZdZedej        j        dej        de	fd            Z
ededededdfd	            Zedej        d
ej        dedeeeedf         f         dee	ee	df         f         f
d            Ze	 d dedededee         ddf
d            Ze	 	 d!dedej        d
eej                 dede	f
d            Zedej        dej        de	fd            Zededede	fd            Ze	 	 d"dedeej        ef         dededdf
d            Zdedede	f         fdZedededdfd            ZdS )#ShapePropagationOpsHandlerz-
    Propagate shape from args to output
    valuer3   r   c                     ddl m} t          t          j        |          r1t          j                                        }t          dg|z            S dS )Nr   )TritonKernelr   r   )torch._inductor.codegen.tritonr>   r&   r
   kerneltriton_tensor_ndimr*   )r<   r3   r>   ndims       r   constantz#ShapePropagationOpsHandler.constantS   sW     	@?????ah-- 	8..00D!t$$$2r   nameindexNc                     d S r   r   )rD   rE   r<   s      r   store_reductionz*ShapePropagationOpsHandler.store_reduction^       tr   	src_dtypereduction_type.c                     t           r   )NotImplementedError)r3   rI   rJ   r<   s       r   	reductionz$ShapePropagationOpsHandler.reductionb   s
     "!r   modec                     d S r   r   )rD   rE   r<   rN   s       r   storez ShapePropagationOpsHandler.storek   s	     tr   Tuse_compute_typesc                     | j         S r   )r   )r<   r3   rI   rQ   s       r   to_dtypez#ShapePropagationOpsHandler.to_dtypeq   s     {r   exprc                     d S r   r   )rT   r3   s     r   
index_exprz%ShapePropagationOpsHandler.index_exprz   s	     tr   offsetc                     dS )Nr   r   )rD   rW   s     r   	load_seedz$ShapePropagationOpsHandler.load_seed   s    rr   varsizecheckwrap_negc                     d S r   r   )rZ   r[   r\   r]   s       r   indirect_indexingz,ShapePropagationOpsHandler.indirect_indexing   s	     tr   c                     d S )Nc                       t          |           S r   )r9   )r,   kwargss     r   <lambda>z8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>   s    '@'F'F r   r   )r   rD   s     r   __getattr__z&ShapePropagationOpsHandler.__getattr__   s    FFFr   condmsgc                     d S r   r   )re   rf   s     r   device_assert_asyncz.ShapePropagationOpsHandler.device_assert_async   rH   r   r   )NT)TT)r   r   r   __doc__staticmethodr2   typesNumberr3   r   rC   r!   r)   ShapeArgrG   r   r*   rM   r   rP   r   boolrS   sympyExprrV   rY   r_   r   rd   rh   r   r   r   r;   r;   N   s         * 5; >    \ c # h 4    \ "{";" " XuXs]334	"
 
~u^S%899	:" " " \" FJ &.6>sm	   \
  ,0"&	 { EK(  	
 
   \  EK N    \  S ^    \  	 EJO$  	
 
   \G Gn1D(E G G G G (      \  r   r;   )	functoolscollections.abcr   typingr   r   r   r   ro   r2   virtualizedr	   r
   r)   r!   r   r   rk   rl   r3   rm   	lru_cacher(   r9   r;   r   r   r   <module>rv      s       $ $ $ $ $ $ 6 6 6 6 6 6 6 6 6 6 6 6   $ $ $ $ $ $ $ $ (5c?34+ + + + +x + + +
 5;-sHekIJ TK^ K K> K K K K.HX$6 >    8C C C C C C C C C Cr   