§
    Ÿ²ÅjX  ã                   ó  — U d dl Z 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
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e¦  «        ¦   «         Z ed¬¦  «         G d„ d¦  «        ¦   «         Z ed¬¦  «        e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fd„¦   «         Z"dS )é    N)Úcontextmanager)ÚEnum)ÚAnyÚDictÚListÚOptionalé   )Ú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dS )r   ÚcreateÚreplaceN)Ú__name__Ú
__module__Ú__qualname__ÚCREATEÚREPLACE© ó    úCC:\Projects\Historical\venv\Lib\site-packages\torch/fx/traceback.pyr   r       s   € € € € € à€FØ€G€G€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d         fd„Z
edefd„¦   «         Zedefd„¦   «         Zedefd„¦   «         Zd„ Zdd„Zdefd„Zd
S )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dS )úNodeSource.NodeInfoÚnameÚtargetÚgraph_idc                 ó0   — || _         || _        || _        d S ©N©r(   r)   r*   )Úselfr(   r)   r*   s       r$   Ú__init__zNodeSource.NodeInfo.__init__.   s   € ØˆDŒIØ ˆDŒKØ$ˆDŒMˆMˆMr#   N)r   r   r   ÚstrÚintr/   r"   r#   r$   ÚNodeInfor'   -   s=   € € € € € ð	% ð 	%¨cð 	%¸Sð 	%ð 	%ð 	%ð 	%ð 	%ð 	%r#   r2   Ú	pass_namer   ÚactionÚ	from_nodeÚ	node_infoÚ NÚnodec                 ó0  — || _         || _        |rw|                      |j        t	          |j        ¦  «        t          |j        ¦  «        ¬¦  «        | _        d|j	        v rt          j        |j	        d         ¦  «        ng | _        d S d | _        g | _        d S )Nr-   r5   )r3   r4   r2   r(   r0   r)   ÚidÚgraphr6   ÚmetaÚcopyÚdeepcopyr5   )r.   r8   r3   r4   s       r$   r/   zNodeSource.__init__8   s™   € ð #ˆŒØˆŒØð 	 Ø!Ÿ]š]Ø”Y¥s¨4¬;Ñ'7Ô'7Å"ÀTÄZÁ.Ä.ð +ñ ô ˆDŒNð
  $¤)Ð+Ð+õ ”˜dœi¨Ô4Ñ5Ô5Ð5àð ŒNˆNˆNð "ˆDŒNØˆDŒNˆNˆNr#   Úreturnc                 ó,   — | j         r| j         j        ndS ©Nr7   )r6   r(   ©r.   s    r$   r(   zNodeSource.nameM   s   € à&*¤nÐ<ˆtŒ~Ô"Ð"¸"Ð<r#   c                 ó,   — | j         r| j         j        ndS rA   )r6   r)   rB   s    r$   r)   zNodeSource.targetQ   s   € à(,¬Ð>ˆtŒ~Ô$Ð$¸BÐ>r#   c                 ó,   — | j         r| j         j        ndS )Néÿÿÿÿ)r6   r*   rB   s    r$   r*   zNodeSource.graph_idU   s   € à*.¬.Ð@ˆtŒ~Ô&Ð&¸bÐ@r#   c                 ó*   — |                       ¦   «         S r,   )Úprint_readablerB   s    r$   Ú__repr__zNodeSource.__repr__Y   s   € Ø×"Ò"Ñ$Ô$Ð$r#   r   c                 óÂ   — |dk    rdS d}|d|z  dz  d| j         › d| j        › d| j        › d| j        › d	�	z   z  }| j        D ]}||                     |d
z   ¦  «        z  }Œ|S )Né	   r7   ú é   z(name=z, pass_name=z	, action=z, graph_id=z)
r	   )r(   r3   r4   r*   r5   rG   )r.   ÚindentÚresultÚitems       r$   rG   zNodeSource.print_readable\   s—   € Ø�AŠ:ˆ:Ø�2ØˆØØ�&‰L˜1ÑØq�t”yÐqÐq¨d¬nÐqÐqÀtÄ{ÐqÐqÐ_cÔ_lÐqÐqÐqñrñ	
ˆð ”Nð 	6ð 	6ˆDØ�d×)Ò)¨&°1©*Ñ5Ô5Ñ5ˆFˆFØˆr#   c                 ód   — | j         | j        | j        | j        | j        d„ | j        D ¦   «         dœS )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r"   ©Úto_dict)Ú.0r8   s     r$   ú
<listcomp>z&NodeSource.to_dict.<locals>.<listcomp>p   s    € ÐDÐDÐD¨T˜$Ÿ,š,™.œ.ÐDÐDÐDr#   ©r(   r)   r*   r3   r4   r5   rV   rB   s    r$   rS   zNodeSource.to_dicth   s?   € ð ”IØ”kØœØœØ”kØDÐD°T´^ÐDÑDÔDð
ð 
ð 	
r#   )r7   N)r   )r   r   r   Ú__doc__r2   r0   Ú__annotations__r   r   r   r/   Úpropertyr(   r)   r1   r*   rH   rG   ÚdictrS   r"   r#   r$   r   r   &   s†  € € € € € € ðð ð
%ð %ð %ð %ð %ñ %ô %ð %ð €N€N�NØÐ'Ô(Ð(Ð(Ñ(Ø�LÔ!Ð!Ð!Ñ!Ø˜
Ô#Ð#Ð#Ñ#ð
 Ø/3ð	 ð  à�tŒnð ð ð ð Ð+Ô,ð	 ð  ð  ð  ð* ð=�cð =ð =ð =ñ „Xð=ð ð?˜ð ?ð ?ð ?ñ „Xð?ð ðA˜#ð Að Að Añ „XðAð%ð %ð %ð
ð 
ð 
ð 
ð	
˜ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
r#   r   c               #   ór   K  — t           } t                               ¦   «         }	 da d V — | a |ad S # | a |aw xY w)NT)Úshould_preserve_node_metar   r=   )Úsaved_should_preserve_node_metaÚsaved_current_metas     r$   r   r   t   s_   è è € õ '@Ð#å%×*Ò*Ñ,Ô,Ðð*Ø$(Ð!Øˆˆˆà$CÐ!Ø)ˆˆˆøð %DÐ!Ø)ˆÐ)Ð)Ð)Ð)s   ¤0 °6Ústackc                 óZ   — t           r!| r!d                     | ¦  «        t          d<   d S d S d S )Nr7   Ústack_trace)r\   Újoinr   )r_   s    r$   r   r   …   sA   € õ !ð 5 Uð 5Ø&(§g¢g¨e¡n¤n��]Ñ#Ð#Ð#ð5ð 5ð 5ð 5r#   c                 ó²   — t           rOt                               dg ¦  «        | gz   t          d<   t                               dd¦  «        dz   t          d<   d S d S )NÚgrad_fn_seq_nrÚ
in_grad_fnr   r	   ©r\   r   Úget)Úseq_nrs    r$   r   r   �   sj   € õ !ð Kå)5×)9Ò)9Ð:JÈBÑ)OÔ)OØðS
ñ *
�Ð%Ñ&õ &2×%5Ò%5°lÀAÑ%FÔ%FÈÑ%J��\Ñ"Ð"Ð"ðKð Kr#   c                  óâ   — t           rgt                               dd¦  «        } | dk    sJ ‚| dk    rt          d= t          d= d S | dz
  t          d<   t          d         d d…         t          d<   d S d S )Nre   r   r	   rd   rE   rf   )Úcurrent_levels    r$   r   r   ™   s�   € õ
 !ð QÝ$×(Ò(¨°qÑ9Ô9ˆØ˜qÒ Ð Ð Ð Ø˜AÒÐÝ˜\Ð*ÝÐ-Ð.Ð.Ð.à)6¸Ñ):�L˜Ñ&Ý-9Ð:JÔ-KÈCÈRÈCÔ-P�LÐ)Ñ*Ð*Ð*ðQð Qr#   r?   c                  ó¢   — t           rt                               dd¦  «        gS t          j        t          j        ¦   «         d d…         ¦  «        S )Nra   r7   rE   )r\   r   rg   Ú	tracebackÚformat_listÚextract_stackr"   r#   r$   r   r   ©   sI   € å ð EÝ× Ò  °Ñ3Ô3Ð4Ð4õ Ô$¥YÔ%<Ñ%>Ô%>¸sÀ¸sÔ%CÑDÔDÐDr#   c                  ó   — t           S r,   )r\   r"   r#   r$   r   r   ²   s   € å$Ð$r#   r7   c              #   óÖ   K  — t           r[| j        rTt          }	 | j                             ¦   «         at	          | |t
          j        ¦  «        gt          d<   d V — |ad S # |aw xY wd V — d S )Nr5   )r\   r<   r   r=   r   r   r    )r8   r3   Ú
saved_metas      r$   r   r   ·   s‡   è è € õ !ð  T¤Yð Ý!ˆ
ð	&Øœ9Ÿ>š>Ñ+Ô+ˆLõ ˜4 Õ,<Ô,CÑDÔDð)�L˜Ñ%ð ˆEˆEˆEà%ˆLˆLˆLø˜:ˆLÐ%Ð%Ð%Ð%àˆˆˆˆˆs   ™AA ÁA"c                  ó   — t           S r,   )r   r"   r#   r$   r   r   Î   s   € åÐr#   r;   c                 ó¬   — i }| j         D ]7}|j        dk    r*d|j        v rd„ |j        d         D ¦   «         ng ||j        <   Œ8t	          j        |¦  «        S )zh
    Given an fx.Graph, return a json string that contains the provenance information of each node.
    Úcall_functionr5   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r"   rR   )rT   Úsources     r$   rU   z-get_graph_provenance_json.<locals>.<listcomp>Ü   s"   € ÐGÐGÐG f�—’Ñ!Ô!ÐGÐGÐGr#   )ÚnodesÚopr<   r(   ÚjsonÚdumps)r;   Úprovenance_tracking_jsonr8   s      r$   r   r   Ó   sx   € ð
  "ÐØ”ð ð ˆØŒ7�oÒ%Ð%ð  $¤)Ð+Ð+ð HÐG°´	¸+Ô0FÐGÑGÔGÐGàð % T¤YÑ/øõ
 Œ:Ð.Ñ/Ô/Ð/r#   )r7   )#r=   ry   rl   Ú
contextlibr   Úenumr   Útypingr   r   r   r   Ú_compatibilityr
   r;   r   r8   r   Ú__all__r   r0   rX   r\   r   r   r   r   r   r   r   Úboolr   r   r   r   r"   r#   r$   ú<module>r‚      sW  ðà €€€€Ø €€€Ø Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,à )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð €ð  "€ˆd�3˜�8ŒnÐ !Ð !Ñ !Ø!Ð ð € eÐ,Ñ,Ô,ðð ð ð ð �s˜Dñ ô ñ -Ô,ðð
 € eÐ,Ñ,Ô,ðJ
ð J
ð J
ð J
ð J
ñ J
ô J
ñ -Ô,ðJ
ðZ € eÐ,Ñ,Ô,Øð*ð *ñ „ñ -Ô,ð*ð € eÐ,Ñ,Ô,ð5˜4 œ9ð 5ð 5ð 5ñ -Ô,ð5ð € eÐ,Ñ,Ô,ðKð Kñ -Ô,ðKð € eÐ,Ñ,Ô,ðQð Qñ -Ô,ðQð € eÐ,Ñ,Ô,ðE�d˜3”ið Eð Eð Eñ -Ô,ðEð € eÐ,Ñ,Ô,ð% ð %ð %ð %ñ -Ô,ð%ð € eÐ,Ñ,Ô,Øðð ð ñ „ñ -Ô,ðð* € eÐ,Ñ,Ô,ð˜$˜s C˜xœ.ð ð ð ñ -Ô,ðð € eÐ,Ñ,Ô,ð0 Uð 0¨sð 0ð 0ð 0ñ -Ô,ð0ð 0ð 0r#   