Ë
    f^(h�  ã                   óL  — U d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 ddl
mZ ddlmZ ddlmZ g d	¢Zi aeeef   ed
<   da ed¬«       G d„ de«      «       Z ed¬«       G d„ d«      «       Z ed¬«      edd„«       «       Z ed¬«      dee   fd„«       Z ed¬«      d„ «       Z ed¬«      d„ «       Z ed¬«      dee   fd„«       Z ed¬«      defd„«       Z ed¬«      edd„«       «       Z  ed¬«      deeef   fd„«       Z! ed¬«      dedeeef   fd„«       Z"y)é    N)Úcontextmanager)ÚEnum)ÚAnyÚOptionalÚUnioné   )Úcompatibility)ÚGraph)ÚNode)Úpreserve_node_metaÚhas_preserved_node_metaÚset_stack_traceÚset_grad_fn_seq_nrÚreset_grad_fn_seq_nrÚformat_stackÚset_current_metaÚget_current_metaÚ
NodeSourceÚNodeSourceActionÚget_graph_provenance_jsonÚcurrent_metaF)Úis_backward_compatiblec                   ó   — e Zd ZdZdZy)r   ÚcreateÚreplaceN)Ú__name__Ú
__module__Ú__qualname__ÚCREATEÚREPLACE© ó    úP/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/fx/traceback.pyr   r      s   „ à€FØ�Gr"   r   c                   óø   — e Zd ZU dZ G d„ d«      Zeed<   ed   ed<   ed    ed<   ed   ed<   	 	 dd
ee	   dedee
ded   f      fd„Zedefd„«       Zedefd„«       Zedefd„«       Zd„ Zd„ Zdd„Zdefd„Zy	)r   z¼
    NodeSource is a data structure that contains the provenance information of a node.
    If node `a` is created from node `b`, then `a.meta["from_node"]` may contain NodeSource(b).
    c                   ó    — e Zd Zdededefd„Zy)úNodeSource.NodeInfoÚnameÚtargetÚgraph_idc                 ó.   — || _         || _        || _        y ©N©r'   r(   r)   )Úselfr'   r(   r)   s       r#   Ú__init__zNodeSource.NodeInfo.__init__-   s   € ØˆDŒIØ ˆDŒKØ$ˆD�Mr"   N)r   r   r   ÚstrÚintr.   r!   r"   r#   ÚNodeInfor&   ,   s   „ ð	% ð 	%¨cð 	%¸Sô 	%r"   r1   Ú	pass_namer   ÚactionÚ	from_nodeÚ	node_infoNÚnodec                 ó°  — || _         |€g }nt        |t        «      s|g}|D ]  }t        |t        «      rŒJ ‚ || _        |r‡| j                  |j                  t        |j                  «      t        |j                  «      ¬«      | _        d|j                  v r(t        j                  |j                  d   «      | _        y g | _        y d | _        g | _        y )Nr,   r4   )r2   Ú
isinstanceÚlistr   r3   r1   r'   r/   r(   ÚidÚgraphr5   ÚmetaÚcopyÚdeepcopyr4   )r-   r6   r2   r3   Úas        r#   r.   zNodeSource.__init__7   sÉ   € ð #ˆŒàˆ>Ø‰FÜ˜F¤DÔ)Ø�XˆFØò 	3ˆAÜ˜aÔ!1Õ2Ð2Ð2ð	3àˆŒÙØ!Ÿ]™]Ø—Y‘Y¤s¨4¯;©;Ó'7Ä"ÀTÇZÁZÃ.ð +ó ˆDŒNð
  $§)¡)Ñ+ô —‘˜dŸi™i¨Ñ4Ó5ð �Nð ð �Nð "ˆDŒNØˆD�Nr"   Úreturnc                 óJ   — | j                   r| j                   j                  S dS ©NÚ )r5   r'   ©r-   s    r#   r'   zNodeSource.nameS   s   € à&*§n¢nˆt�~‰~×"Ñ"Ð<¸"Ð<r"   c                 óJ   — | j                   r| j                   j                  S dS rB   )r5   r(   rD   s    r#   r(   zNodeSource.targetW   s   € à(,¯ªˆt�~‰~×$Ñ$Ð>¸BÐ>r"   c                 óJ   — | j                   r| j                   j                  S dS )Néÿÿÿÿ)r5   r)   rD   s    r#   r)   zNodeSource.graph_id[   s   € à*.¯.ª.ˆt�~‰~×&Ñ&Ð@¸bÐ@r"   c                 ó"   — | j                  «       S r+   )Úprint_readablerD   s    r#   Ú__repr__zNodeSource.__repr___   s   € Ø×"Ñ"Ó$Ð$r"   c                 óŽ   — dj                  | j                  D �cg c]  }|j                  j                  «       ‘Œ c}«      S c c}w )Nú+)Újoinr3   r'   Úlower)r-   r?   s     r#   Ú_get_action_stringzNodeSource._get_action_stringb   s-   € Ø�x‰x°·±Ö=¨A˜Ÿ™Ÿ™�Ò=Ó>Ð>ùÒ=s   š!Ac                 óø   — |dkD  ryd}| j                  «       }|d|z  dz  d| j                  › d| j                  › d|› d| j                  › d	�	z   z  }| j                  D ]  }||j                  |d
z   «      z  }Œ |S )Né	   rC   ú é   z(name=z, pass_name=z	, action=z, graph_id=z)
r   )rO   r'   r2   r)   r4   rI   )r-   ÚindentÚresultÚaction_stringÚitems        r#   rI   zNodeSource.print_readablee   sŸ   € Ø�AŠ:ØØˆØ×/Ñ/Ó1ˆØØ�&‰L˜1ÑØ�t—y‘y�k ¨d¯n©nÐ-=¸YÀ}ÀoÐU`Ðae×anÑanÐ`oÐorÐsñtñ	
ˆð —N‘Nò 	6ˆDØ�d×)Ñ)¨&°1©*Ó5Ñ5‰Fð	6àˆr"   c           
      óÚ   — | j                  «       }| j                  | j                  | j                  | j                  || j
                  D �cg c]  }|j                  «       ‘Œ c}dœS c c}w )N)r'   r(   r)   r2   r3   r4   )rO   r'   r(   r)   r2   r4   Úto_dict)r-   rV   r6   s      r#   rY   zNodeSource.to_dictr   sW   € à×/Ñ/Ó1ˆà—I‘IØ—k‘kØŸ™ØŸ™Ø#Ø59·^±^ÖD¨T˜$Ÿ,™,�.ÒDñ
ð 	
ùò Es   ÁA()rC   N)r   )r   r   r   Ú__doc__r1   r/   Ú__annotations__r9   r   r   r   r.   Úpropertyr'   r(   r0   r)   rJ   rO   rI   ÚdictrY   r!   r"   r#   r   r   %   sì   … ñ÷
%ñ %ð ƒNØÐ#Ñ$Ó$Ø�LÑ!Ó!Ø˜
Ñ#Ó#ð
 ØPTñ	 à�t‰nð ð ð ð ˜Ð1°4Ð8JÑ3KÐKÑLÑMó	 ð8 ð=�cò =ó ð=ð ð?˜ò ?ó ð?ð ðA˜#ò Aó ðAò%ò?óð

˜ô 

r"   r   c              #   óv   K  — | sd –— y t         }t        j                  «       }	 da d –— |a |ay # |a |aw xY w­w)NT)Úshould_preserve_node_metar   r=   )ÚenableÚsaved_should_preserve_node_metaÚsaved_current_metas      r#   r   r      sK   è ø€ ñ Üä*CÐ'ä)×.Ñ.Ó0Ðð	.Ø(,Ð%Ûà(GÐ%Ø-‰Løð )HÐ%Ø-‰Lüs   ‚"9¥0 «9°6¶9Ústackc                 óH   — t         r| rdj                  | «      t        d<   y y y )NrC   Ústack_trace)r_   rM   r   )rc   s    r#   r   r   “   s#   € õ !¡UØ&(§g¡g¨e£nŒ�]Ò#ð &+Ð r"   c                 ó”   — t         rBt        j                  dg «      | gz   t        d<   t        j                  dd«      dz   t        d<   y y )NÚgrad_fn_seq_nrÚ
in_grad_fnr   r   ©r_   r   Úget)Úseq_nrs    r#   r   r   ›   sQ   € õ !ä)5×)9Ñ)9Ð:JÈBÓ)OØðS
ñ *
ŒÐ%Ñ&ô &2×%5Ñ%5°lÀAÓ%FÈÑ%JŒ�\Ò"ð !r"   c                  ó²   — t         rQt        j                  dd«      } | dkD  sJ ‚| dk(  rt        d= t        d= y | dz
  t        d<   t        d   d d t        d<   y y )Nrh   r   r   rg   rG   ri   )Úcurrent_levels    r#   r   r   §   sl   € õ
 !Ü$×(Ñ(¨°qÓ9ˆØ˜qÒ Ð Ð Ø˜AÒÜ˜\Ð*ÜÐ-Ñ.à)6¸Ñ):ŒL˜Ñ&Ü-9Ð:JÑ-KÈCÈRÐ-PŒLÐ)Ò*ð !r"   r@   c                  ó�   — t         rt        j                  dd«      gS t        j                  t        j
                  «       d d «      S )Nre   rC   rG   )r_   r   rj   Ú	tracebackÚformat_listÚextract_stackr!   r"   r#   r   r   ·   s>   € å Ü× Ñ  °Ó3Ð4Ð4ô ×$Ñ$¤Y×%<Ñ%<Ó%>¸sÀÐ%CÓDÐDr"   c                  ó   — t         S r+   )r_   r!   r"   r#   r   r   À   s   € ä$Ð$r"   c              #   óÜ   K  — t         rW| j                  rKt        }	 | j                  j                  «       at	        | |t
        j                  «      gt        d<   d –— |ay d –— y # |aw xY w­w)Nr4   )r_   r<   r   r=   r   r   r   )r6   r2   Ú
saved_metas      r#   r   r   Å   sa   è ø€ õ ! T§Y¢YÜ!ˆ
ð	&ØŸ9™9Ÿ>™>Ó+ˆLô ˜4 Ô,<×,CÑ,CÓDð)ŒL˜Ñ%ó à%‰Läøð &‰Lüs   ‚A,œAA% ÁA,Á%A)Á)A,c                  ó   — t         S r+   )r   r!   r"   r#   r   r   Ü   s   € äÐr"   r;   c                 óæ   — i }| j                   D ]Z  }|j                  dk(  sŒd|j                  v r+|j                  d   D �cg c]  }|j                  «       ‘Œ c}ng ||j                  <   Œ\ |S c c}w )za
    Given an fx.Graph, return a json that contains the provenance information of each node.
    Úcall_functionr4   )ÚnodesÚopr<   rY   r'   )r;   Úprovenance_tracking_jsonr6   Úsources       r#   r   r   á   sv   € ð
  "ÐØ—‘ò ˆØ�7‰7�oÓ%ð  $§)¡)Ñ+ð 15·	±	¸+Ñ0FÖG f�—‘Õ!ÓGàð % T§Y¡YÒ/ðð $Ð#ùò	 Hs   ÁA.)T)rC   )#r=   ro   Ú
contextlibr   Úenumr   Útypingr   r   r   Ú_compatibilityr	   r;   r
   r6   r   Ú__all__r   r]   r/   r[   r_   r   r   r   r9   r   r   r   r   Úboolr   r   r   r   r!   r"   r#   ú<module>r‚      s½  ðä Û Ý %Ý ß 'Ñ 'å )Ý Ý ò€ð  "€ˆd�3˜�8‰nÓ !Ø!Ð ñ  eÔ,ô�tó ó -ðñ
  eÔ,÷V
ð V
ó -ðV
ñr  eÔ,Øò.ó ó -ð.ñ$  eÔ,ð5˜4 ™9ò 5ó -ð5ñ  eÔ,ñKó -ðKñ  eÔ,ñQó -ðQñ  eÔ,ðE�d˜3‘iò Eó -ðEñ  eÔ,ð% ò %ó -ð%ñ  eÔ,Øòó ó -ðñ*  eÔ,ð˜$˜s C˜x™.ò ó -ðñ  eÔ,ð$ Uð $¨t°C¸°H©~ò $ó -ñ$r"   