ó
    Eñiƒ  ã                   ó<  • S SK r S SKJrJr  S SKJrJrJr  S SKrS SK	r	SSK
JrJr  \\\\\4         r " S S\5      r\\\	R"                  R$                  \\\	R&                  4   r\ R*                  " S5      S\S	\S
\4S j5       rS\\   S
\4S jr " S S5      rg)é    N)ÚCallableÚSequence)ÚOptionalÚProtocolÚUnioné   )ÚOpsValueÚVc                   ó,   • \ rS rSr\S\4S j5       rSrg)ÚShapeVaré   Úreturnc                 ó   • g ©N© )Úselfs    Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/shape_propagation.pyÚshapeÚShapeVar.shape   s   € Ø'*ó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚpropertyÚBlockShapeTyper   Ú__static_attributes__r   r   r   r   r      s   † ØØ*�~Ó*ó Û*r   r   ÚaÚbr   c           	      ó$  ^• [        U [        5      (       d   e[        U[        5      (       d   e[        U 5      [        U5      :”  a*  [        U / S/[        U 5      [        U5      -
  -  QUQ75      $ [        U 5      [        U5      :  a,  Xp[        U / S/[        U 5      [        U5      -
  -  QUQ75      $ S[        [
        [        4   S[        [
        [        4   S[        [
        [        4   4S jm[        U4S j[        X5       5       5      $ )Nr   Úd1Úd2r   c                 ó~   • [        U 5      S:X  a  U$ [        U5      S:X  a  U $ [        U 5      [        U5      :X  d   eU $ )NÚ1)Ústr)r!   r"   s     r   Ú_get_broadcasted_dimÚ3get_broadcasted_shape.<locals>._get_broadcasted_dim%   s?   € ô �2‹w˜#‹~Ø�	Ü�R“˜C“Ø�	Ü�r“7œc "›gÓ%Ð%Ð%ØˆIr   c              3   ó8   >#   • U  H  u  pT" X5      v •  M     g 7fr   r   )Ú.0r!   r"   r&   s      €r   Ú	<genexpr>Ú(get_broadcasted_shape.<locals>.<genexpr>/   s   øé € ÐJÂ	±f°bÑ)¨"×1Ð1Â	ùs   ƒ)	Ú
isinstancer   ÚlenÚget_broadcasted_shaper   Úintr%   ÚtupleÚzip)r   r   r&   s     @r   r.   r.      sî   ø€ ä�aœ×"Ñ"Ð"Ð"Ü�aœ×"Ñ"Ð"Ð"Ü
ˆ1ƒv”�A“ƒÜ$ QÐ(F¨1¨#´°Q³¼#¸a»&±Ñ*AÐ(FÀAÑ(FÓGÐGÜ	ˆQ‹”#�a“&‹Øˆ1Ü$ QÐ(F¨1¨#´°Q³¼#¸a»&±Ñ*AÐ(FÀAÑ(FÓGÐGð	Ü”cœ3�h‘ð	Ü%*¬3´¨8¡_ð	ä”3œ�8‰_ô	ô ÔJÄÀAÄ	ÓJÓJÐJr   Úargsc                 ó¤  • S nU  HÇ  n[        US5      (       a8  UR                  nUc    g Uc  [        U5      nM5  [        U[        U5      5      nML  [	        U[
        [        45      (       a	  Uc  SnMn  Mp  [	        U[        R                  5      (       a  M‘  SSK	J
nJn  [	        X%U[        45      (       a    g [        S[        U5       35      e   U$ )Nr   r   r   )ÚLoopBodyÚLoopBodyBlockzUnknown type: )Úhasattrr   r0   r.   r,   r/   ÚfloatÚtorchÚdtypeÚtorch._inductor.loop_bodyr4   r5   r	   Ú	TypeErrorÚtype)r2   Úresult_shapeÚargr   r4   r5   s         r   Úbroadcast_shapes_for_argsr?   2   s¹   € Ø#'€LãˆÜ�3˜× Ñ Ø—I‘IˆEØ‰}ÙØÑ%Ü$ U›|’ä4°\Ä5ÈÃ<ÓP’Ü˜œc¤5˜\×*Ñ*ØÑ#Ø!’ñ $ä˜œUŸ[™[×)Ñ)ÙçIä˜#¨x¼ÐB×CÑCáÜ˜n¬T°#«Y¨KÐ8Ó9Ð9ñ) ð, Ðr   c                   óÜ  • \ rS rSrSr\S\R                  R                  S\R                  S\
4S j5       r\S\S\S\SS	4S
 j5       r\S\R                  S\R                  S\S\\\\S4   4   S\\
\\
S4   4   4
S j5       r\ S$S\S\S\S\\   SS	4
S jj5       r\  S%S\S\R                  S\\R                     S\S\
4
S jj5       r\S\R2                  S\R2                  S\
4S j5       r\S\R2                  S\R                  S\
4S j5       r\S\S\S\
4S j5       r\  S&S\S\\R2                  \4   S\S\SS	4
S jj5       rS\S\S\
4   4S jr\S \S!\SS	4S" j5       r S#r!g	)'ÚShapePropagationOpsHandleréN   z%
Propagate shape from args to output
Úvaluer9   r   c                 ó¨   • SSK Jn  [        [        R                  U5      (       a-  [        R                  R                  5       n[        S/U-  5      $ g)Nr   ©ÚTritonKernelr   r   )Útorch._inductor.codegen.tritonrF   r,   r
   ÚkernelÚtriton_tensor_ndimr0   )rC   r9   rF   Úndims       r   ÚconstantÚ#ShapePropagationOpsHandler.constantS   s?   € õ 	@ä”a—h‘h ×-Ñ-Ü—8‘8×.Ñ.Ó0ˆDÜ˜!˜˜t™Ó$Ð$àr   ÚnameÚindexNc                 ó   • g r   r   )rM   rN   rC   s      r   Ústore_reductionÚ*ShapePropagationOpsHandler.store_reduction^   ó   € àr   Ú	src_dtypeÚreduction_type.c                 ó   • [         er   )ÚNotImplementedError)r9   rS   rT   rC   s       r   Ú	reductionÚ$ShapePropagationOpsHandler.reductionb   s
   € ô "Ð!r   Úmodec                 ó   • g r   r   )rM   rN   rC   rY   s       r   ÚstoreÚ ShapePropagationOpsHandler.storek   s   € ð r   Úuse_compute_typesc                 ó   • U R                   $ r   )r   )rC   r9   rS   r]   s       r   Úto_dtypeÚ#ShapePropagationOpsHandler.to_dtypeq   s   € ð �{‰{Ðr   r   r   c                 ó\   • SSK Jn  [        [        R                  U5      (       d   S5       eg)Nr   rE   zdot supports Triton only)ÚYBLOCKÚXBLOCK)rG   rF   r,   r
   rH   )r   r   rF   s      r   ÚdotÚShapePropagationOpsHandler.dotz   s%   € å?äœ!Ÿ(™( L×1Ñ1ÐMÐ3MÓMÐ1Ø#r   Úexprc                 ó   • g r   r   )rf   r9   s     r   Ú
index_exprÚ%ShapePropagationOpsHandler.index_expr�   s   € ð r   Úoffsetc                 ó   • g)Nr   r   )rM   rj   s     r   Ú	load_seedÚ$ShapePropagationOpsHandler.load_seed†   s   € àr   ÚvarÚsizeÚcheckÚwrap_negc                 ó   • g r   r   )rn   ro   rp   rq   s       r   Úindirect_indexingÚ,ShapePropagationOpsHandler.indirect_indexingŠ   s   € ð r   c                 ó   • S $ )Nc                  ó   • [        U 5      $ r   )r?   )r2   Úkwargss     r   Ú<lambda>Ú8ShapePropagationOpsHandler.__getattr__.<locals>.<lambda>”   s
   € Ô'@ÀÔ'Fr   r   )r   rM   s     r   Ú__getattr__Ú&ShapePropagationOpsHandler.__getattr__“   s   € ÙFÐFr   ÚcondÚmsgc                 ó   • g r   r   )r|   r}   s     r   Údevice_assert_asyncÚ.ShapePropagationOpsHandler.device_assert_async–   rR   r   r   r   )NT)TT)"r   r   r   r   Ú__doc__Ústaticmethodr8   ÚtypesÚNumberr9   r   rK   r%   r/   ÚShapeArgrP   r   r0   rW   r   r[   r   Úboolr_   ÚsympyÚExprrd   rh   rl   rs   r   rz   r   r   r   r   r   rA   rA   N   s¤  † ñð ð˜Ÿ™×*Ñ*ð °5·;±;ð À>ó ó ðð ð˜cð ¨#ð °hð À4ó ó ðð ð"Ø�{‰{ð"à—;‘;ð"ð ð"ð �X˜u X¨s ]Ñ3Ð3Ñ4ð	"ð
 
ˆ~˜u ^°SÐ%8Ñ9Ð9Ñ	:ó"ó ð"ð àFJñØðØðØ&.ðØ6>¸s±mðà	ôó ðð
 ð ,0Ø"&ñ	Øðà�{‰{ðð ˜EŸK™KÑ(ðð  ð	ð
 
ôó ðð ð$ˆu�z‰zð $˜eŸj™jð $¨^ó $ó ð$ð ð˜Ÿ™ð ¨E¯K©Kð ¸Nó ó ðð ð˜ð  Sð ¨^ó ó ðð ð Øñ	Øðà�E—J‘J �OÑ$ðð ðð ð	ð
 
ôó ððG ð G¨°°nÐ1DÑ(Eô Gð ð (ð °ð ¸ó ó ór   rA   )Ú	functoolsÚcollections.abcr   r   Útypingr   r   r   r‡   r8   Úvirtualizedr	   r
   r/   r%   r   r   rƒ   r„   r9   r…   Ú	lru_cacher.   r?   rA   r   r   r   Ú<module>rŽ      sÁ   ðÛ ß .ß ,Ñ ,ã ã ç $ð ˜( 5¨¨c¨¡?Ñ3Ñ4€ô+ˆxô +ð
 �˜5Ÿ;™;×-Ñ-¨s°H¸e¿k¹kÐIÑJ€ð ×Ò�TÓðK˜^ð K°ð KÀ>ó Kó ðKð. H¨XÑ$6ð ¸>ô ÷8Jò Jr   