
    qi                     8   d dl Z d dlmZmZ d dl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y)    N)CallableSequence)OptionalProtocolUnion   )OpsValueVc                   "    e Zd Zedefd       Zy)ShapeVarreturnc                      y N )selfs    g/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/_inductor/shape_propagation.pyshapezShapeVar.shape   s    '*    N)__name__
__module____qualname__propertyBlockShapeTyper   r   r   r   r   r      s    *~* *r   r   abr   c           	         t        | t              sJ t        |t              sJ t        |       t        |      kD  r*t        | g dgt        |       t        |      z
  z  |      S t        |       t        |      k  r.| |} }t        | g dgt        |       t        |      z
  z  |      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                 x    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%   s?     2w#~	RC	r7c"g%%%Ir   c              3   6   K   | ]  \  }} ||        y wr   r   ).0r   r   r"   s      r   	<genexpr>z(get_broadcasted_shape.<locals>.<genexpr>/   s     Jfb")"b1Js   )	
isinstancer   lenget_broadcasted_shaper   intr!   tuplezip)r   r   r"   s     @r   r(   r(      s    a"""a"""
1vA$Q(F1#Q#a&*A(FA(FGG	Q#a&!1$Q(F1#Q#a&*A(FA(FGG	c3h	%*38_	38_	 JAq	JJJr   argsc                 l   d }| D ]  }t        |d      r4|j                  }| y |t        |      }-t        |t        |            }Ct	        |t
        t        f      r|\d}_t	        |t        j                        rzddl	m
}m} t	        |||t        f      r y 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 IIE}%$U|4\5<Pc5\*#!U[[)I#xBCnT#YK899):, r   c                      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j0                  dej0                  de	fd       Zedej0                  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j0                  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y)%ShapePropagationOpsHandlerz-
    Propagate shape from args to output
    valuer3   r   c                     ddl m}m}  ||      }t        t        j
                  |      r2|dk7  r-t        j
                  j                         }t        dg|z        S y)Nr   )triton_compute_typeTritonKernelz
tl.float32r   r   )torch._inductor.codegen.tritonr>   r?   r&   r
   kerneltriton_tensor_ndimr*   )r<   r3   r>   r?   triton_typendims         r   constantz#ShapePropagationOpsHandler.constantS   sM     	U)%0ahh-+2M88..0D!t$$r   nameindexNc                      y r   r   )rF   rG   r<   s      r   store_reductionz*ShapePropagationOpsHandler.store_reduction`       r   	src_dtypereduction_type.c                     t         r   )NotImplementedError)r3   rK   rL   r<   s       r   	reductionz$ShapePropagationOpsHandler.reductiond   s
     "!r   modec                      y r   r   )rF   rG   r<   rP   s       r   storez ShapePropagationOpsHandler.storem   s     r   use_compute_typesc                     | j                   S r   )r   )r<   r3   rK   rS   s       r   to_dtypez#ShapePropagationOpsHandler.to_dtypes   s     {{r   r   r   c                 R    ddl m} t        t        j                  |      sJ d       y)Nr   )r?   zdot supports Triton only)YBLOCKXBLOCK)r@   r?   r&   r
   rA   )r   r   r?   s      r   dotzShapePropagationOpsHandler.dot|   s"    ?!((L1M3MM1#r   exprc                      y r   r   )rZ   r3   s     r   
index_exprz%ShapePropagationOpsHandler.index_expr   s     r   offsetc                      y)Nr   r   )rF   r]   s     r   	load_seedz$ShapePropagationOpsHandler.load_seed   s    r   varsizecheckwrap_negc                      y r   r   )r`   ra   rb   rc   s       r   indirect_indexingz,ShapePropagationOpsHandler.indirect_indexing   s     r   c                     d S )Nc                      t        |       S r   )r9   )r,   kwargss     r   <lambda>z8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>   s    '@'F r   r   )r   rF   s     r   __getattr__z&ShapePropagationOpsHandler.__getattr__   s    FFr   condmsgc                      y r   r   )rk   rl   s     r   device_assert_asyncz.ShapePropagationOpsHandler.device_assert_async   rJ   r   r   )NT)TT) r   r   r   __doc__staticmethodr2   typesNumberr3   r   rE   r!   r)   ShapeArgrI   r   r*   rO   r   rR   r   boolrU   sympyExprrY   r\   r_   re   r   rj   rn   r   r   r   r;   r;   N   s    
** 
5;; 
> 
 
 c # h 4   "{{";;" " XuXs]334	"
 
~u^S%899	:" " FJ&.6>sm	 
  ,0"&	{{ EKK(  	
 
  $uzz $ejj $^ $ $  EKK N    S ^    	EJJO$  	
 
 G Gn1D(E G (    r   r;   )	functoolscollections.abcr   r   typingr   r   r   ru   r2   virtualizedr	   r
   r)   r!   r   r   rq   rr   r3   rs   	lru_cacher(   r9   r;   r   r   r   <module>r|      s     . , ,   $ (5c?34+x +
 5;;--sHekkIJ TK^ K K> K K.HX$6 > 8L Lr   