Ë
    ÄÓ^j  ã                   óT   — d dl Z d dlZd dlZdej                  j                  ddfd„Zy)é    NÚgraphÚreturnc           	      ó�  — | j                   D �]¶  }|j                  t        j                  u sŒ!|j                  \  }}|j
                  sŒ=t        |j
                  d«      rët        j                  |j
                  «      }|j
                  j                  dk(  rgt        |«      dk(  r#t        |d   t        d«      «      r|d   |_        Œ¼t        |«      |k  rt        d|› dt        |«      › d	�«      ‚||   }||_        Œò|j
                  j                  d
k(  s�Œt        |«      dk7  rt        dt        |«      › �«      ‚|d   |_        �Œ>t        |j
                  d«      rót        j                  |j
                  «      }|j
                  j                  t        u rit        |«      dk(  r$t        |d   t        d«      «      r|d   |_        �ŒÁt        |«      |k  rt        d|› dt        |«      › d	�«      ‚||   }||_        �Œø|j
                  j                  t        u s�Œt        |«      dk7  rt        dt        |«      › �«      ‚|d   |_        �ŒGt        |j
                  d«      s�Œ_|j
                  t         j"                  k(  r�Œ~|j
                  j$                  }|j
                  j&                  |   }||   |_        �Œ¹ y)aò  
    Annotate the type of getitem nodes, inferred from the type of sequence node.
    If sequence node is not annotated with a type, do nothing.
    Currently support getitem nodes from tuple, list, and NamedTuple sequence node.

    This is helpful since annotations on local names within function are lost during FX transforms.
    Adding back known type annotation for getitem nodes to improve jit scriptability.

    Args:
        graph (:class:`torch.fx.Graph`): The graph to be annotated
    Ú_nameÚTupleé   é   .r   zIndex z+ out of range for parameterized_types (len=ú)ÚListz#Expected 1 parameterized type, got Ú
__origin__Ú__annotations__N)ÚnodesÚtargetÚoperatorÚgetitemÚargsÚtypeÚhasattrÚtypingÚget_argsr   ÚlenÚ
isinstanceÚAssertionErrorr   ÚtupleÚlistÚtorchÚTensorr   Ú_fields)r   ÚnodeÚsequence_nodeÚ
index_nodeÚparameterized_typesÚ	node_typeÚsequence_node_field_typesÚ
field_names           úq/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/fx/passes/annotate_getitem_nodes.pyÚannotate_getitem_nodesr'      s¬  € ð —‘ó 7BˆØ�;‰;œ(×*Ñ*Ò*Ø(,¯	©	Ñ%ˆM˜:Ø ×%Ò%Øä�}×)Ñ)¨7Ô3Ü&,§o¡o°m×6HÑ6HÓ&IÐ#Ø ×%Ñ%×+Ñ+¨wÒ6ÜÐ.Ó/°1Ò4¼Ø+¨AÑ.´°S³	ô:ð %8¸Ñ$:˜�	äÐ2Ó3°zÒAÜ"0Ø"(¨¨ð 5(Ü(+Ð,?Ó(@Ð'AÀð!Dó#ð ð %8¸
Ñ$C˜	Ø$-˜�	Ø"×'Ñ'×-Ñ-°Ô7ÜÐ.Ó/°1Ò4Ü,ØAÄ#ÐFYÓBZÐA[Ð\óð ð !4°AÑ 6�D–Iä˜×+Ñ+¨\Ô:Ü&,§o¡o°m×6HÑ6HÓ&IÐ#Ø ×%Ñ%×0Ñ0´EÑ9ÜÐ.Ó/°1Ò4¼Ø+¨AÑ.´°S³	ô:ð %8¸Ñ$:˜ž	äÐ2Ó3°zÒAÜ"0Ø"(¨¨ð 5(Ü(+Ð,?Ó(@Ð'AÀð!Dó#ð ð %8¸
Ñ$C˜	Ø$-˜ž	Ø"×'Ñ'×2Ñ2´dÓ:ÜÐ.Ó/°1Ò4Ü,ØAÄ#ÐFYÓBZÐA[Ð\óð ð !4°AÑ 6�D–Iä˜×+Ñ+Ð->Ö?Ø ×%Ñ%¬¯©Ò5ÙØ,9×,>Ñ,>×,NÑ,NÐ)Ø*×/Ñ/×7Ñ7¸
ÑC�
Ø5°jÑA�–	ño7Bó    )r   r   r   ÚfxÚGraphr'   © r(   r&   ú<module>r,      s/   ðÛ Û ã ðCB %§(¡(§.¡.ð CB°Tô CBr(   