
    IЦix                        % S SK r S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJr  / S	Qr0 q\	\\4   \S
'   Sq\" SS9 " S S\\5      5       r\" SS9 " S S5      5       r\" SS9\S 5       5       r\" SS9S\
\   4S j5       r\" SS9S 5       r\" SS9S 5       r\" SS9S\
\   4S j5       r\" SS9S\4S j5       r\" SS9\SS j5       5       r \" SS9S\	\\4   4S j5       r!\" SS9S\S\4S j5       r"g)    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                       \ rS rSrSrSrSrg)r       createreplace N)__name__
__module____qualname____firstlineno__CREATEREPLACE__static_attributes__r       Q/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/fx/traceback.pyr   r       s    FGr&   r   c                       \ rS rSr% Sr " S S5      r\\S'   \S   \S'   \	S    \S'   \S   \S	'     SS\\
   S\S\S   4S jjr\S\4S j5       r\S\4S j5       r\S\4S j5       rS rSS jrS\4S jrSrg
)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                   *    \ rS rSrS\S\S\4S jrSrg)NodeSource.NodeInfo-   nametargetgraph_idc                 (    Xl         X l        X0l        g Nr-   r.   r/   )selfr-   r.   r/   s       r'   __init__NodeSource.NodeInfo.__init__.   s    I K$Mr&   )r/   r-   r.   N)r   r    r!   r"   strintr4   r%   r   r&   r'   NodeInfor+   -   s    	% 	%c 	%S 	%r&   r8   	pass_namer   action	from_node	node_infoNnodec                 H   X l         X0l        U(       a  U R                  UR                  [	        UR
                  5      [        UR                  5      S9U l        SUR                  ;   a#  [        R                  " UR                  S   5      O/ U l        g S U l        / U l        g )Nr2   r;   )r9   r:   r8   r-   r6   r.   idgraphr<   metacopydeepcopyr;   )r3   r=   r9   r:   s       r'   r4   NodeSource.__init__8   s     #!]]YYs4;;'7"TZZ. + DN
 $))+ dii45 N "DNDNr&   returnc                 T    U R                   (       a  U R                   R                  $ S$ N )r<   r-   r3   s    r'   r-   NodeSource.nameM   s    &*nnt~~""<"<r&   c                 T    U R                   (       a  U R                   R                  $ S$ rG   )r<   r.   rI   s    r'   r.   NodeSource.targetQ   s    (,t~~$$>B>r&   c                 T    U R                   (       a  U R                   R                  $ S$ )N)r<   r/   rI   s    r'   r/   NodeSource.graph_idU   s    *...t~~&&@b@r&   c                 "    U R                  5       $ r1   )print_readablerI   s    r'   __repr__NodeSource.__repr__Y   s    ""$$r&   c                     US:  a  gSnUSU-  S-  SU R                    SU R                   SU R                   SU R                   S	3	-   -  nU R                   H  nX#R                  US
-   5      -  nM     U$ )N	   rH       z(name=z, pass_name=z	, action=z, graph_id=z)
r	   )r-   r9   r:   r/   r;   rQ   )r3   indentresultitems       r'   rQ   NodeSource.print_readable\   s    A:&L1tyykdnn-=Yt{{mS^_c_l_l^mmpqr	
 NND))&1*55F #r&   c           
          U R                   U R                  U R                  U R                  U R                  U R
                   Vs/ s H  oR                  5       PM     snS.$ s  snf )N)r-   r.   r/   r9   r:   r;   )r-   r.   r/   r9   r:   r;   to_dict)r3   r=   s     r'   r]   NodeSource.to_dicth   sQ     IIkkkk59^^D^T,,.^D
 	
 Es   A$)r:   r;   r<   r9   )rH   N)r   )r   r    r!   r"   __doc__r8   r6   __annotations__r   r   r   r4   propertyr-   r.   r7   r/   rR   rQ   dictr]   r%   r   r&   r'   r   r   &   s    
% % N'((L!!
##
 /3	 tn    +,	 * =c = = ? ? ? A# A A%
	
 	
r&   r   c               #   h   #    [         n [        R                  5       n Sq S v   U q Uqg ! U q Uqf = f7f)NT)should_preserve_node_metar   rB   )saved_should_preserve_node_metasaved_current_metas     r'   r   r   t   sE      '@#%**,*$(!$C!) %D!)s   2) 2/2stackc                 \    [         (       a!  U (       a  SR                  U 5      [        S'   g g g )NrH   stack_trace)rd   joinr   )rg   s    r'   r   r      s&     ! U&(ggen]# &+ r&   c                     [         (       aB  [        R                  S/ 5      U /-   [        S'   [        R                  SS5      S-   [        S'   g g )Ngrad_fn_seq_nr
in_grad_fnr   r	   rd   r   get)seq_nrs    r'   r   r      sT     ! )5)9)9:JB)OS
 *
%& &2%5%5lA%F%J\" !r&   c                      [         (       aS  [        R                  SS5      n U S:  d   eU S:X  a  [        S	 [        S	 g U S-
  [        S'   [        S   S S [        S'   g g )Nrm   r   r	   rl   rN   rn   )current_levels    r'   r   r      so    
 ! $((q9q   A\*-.)6):L&-9:J-KCR-PL)* !r&   rE   c                      [         (       a  [        R                  SS5      /$ [        R                  " [        R
                  " 5       S S 5      $ )Nri   rH   rN   )rd   r   ro   	tracebackformat_listextract_stackr   r&   r'   r   r      sA        344 $$Y%<%<%>s%CDDr&   c                      [         $ r1   )rd   r   r&   r'   r   r      s    $$r&   c              #      #    [         (       a[  U R                  (       aJ  [        n U R                  R                  5       q[	        X[
        R                  5      /[        S'   S v   Uqg S v   g ! Uqf = f7f)Nr;   )rd   rA   r   rB   r   r   r#   )r=   r9   
saved_metas      r'   r   r      sa      ! TYY!
	&99>>+L 4,<,C,CD)L% %L &Ls   #A5A A. &A5.A22A5c                      [         $ r1   )r   r   r&   r'   r   r      s    r&   r@   c                    0 nU R                    H`  nUR                  S:X  d  M  SUR                  ;   a-  UR                  S    Vs/ s H  o3R                  5       PM     snO/ XR                  '   Mb     [
        R                  " U5      $ s  snf )z`
Given an fx.Graph, return a json string that contains the provenance information of each node.
call_functionr;   )nodesoprA   r]   r-   jsondumps)r@   provenance_tracking_jsonr=   sources       r'   r   r      s}    
  "77o% $))+ 15		+0FG0Ff!0FG %YY/  ::.//	 Hs   B	)rH   )#rB   r   rt   
contextlibr   enumr   typingr   r   r   r   _compatibilityr
   r@   r   r=   r   __all__r   r6   r`   rd   r   r   r   r   r   r   r   boolr   r   r   r   r   r&   r'   <module>r      s      %  , , )    "d38n !!  e,sD  -
 e,J
 J
 -J
Z e,*  -* e,549 5 -5 e,K -K e,Q -Q e,Ed3i E -E e,% % -% e,  -* e,$sCx.  - e,0U 0s 0 -0r&   