
    9i+                     P   % 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
  S SKJr  SSKJr  SSKJr  SS	KJr  \R&                  " \5      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S j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   4S j5       r(g)     N)contextmanager)Enum)AnyOptionalUnion)signpost_event   )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       R/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/fx/traceback.pyr   r   $   s    FGr&   r   c                   t   \ rS rSr% Sr " S S5      r\\S'   \S   \S'   \S    \S'   \	S   \S	'   \	\
\\4      \S
'   \	\   \S'     SS\	\   S\S\	\S\S   4      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 rSS jrS\
4S jrS\4S jrS r\S\	\
   S\	S    4S j5       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.NodeInfo1   nametargetgraph_idc                 (    Xl         X l        X0l        g Nr-   r.   r/   )selfr-   r.   r/   s       r'   __init__NodeSource.NodeInfo.__init__2   s    I K$Mr&   )r/   r-   r.   N)r   r    r!   r"   strintr4   r%   r   r&   r'   NodeInfor+   1   s    	% 	%c 	%S 	%r&   r8   	pass_namer   action	from_node	node_info_dict_action_stringNnodec                    X l         Uc  / nO[        U[        5      (       d  U/nU H  n[        U[        5      (       a  M   e   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        OS U l        / U l        S U l        S U l        g )Nr2   r;   )r9   
isinstancelistr   r:   r8   r-   r6   r.   idgraphr<   metacopydeepcopyr;   r>   r=   )r3   r?   r9   r:   as        r'   r4   NodeSource.__init__>   s     #>FFD))XFAa!12222 !]]YYs4;;'7"TZZ. + DN
 $))+ dii45 N "DNDN .2/3
r&   returnc                 T    U R                   (       a  U R                   R                  $ S$ N )r<   r-   r3   s    r'   r-   NodeSource.name^   s    &*nnt~~""<"<r&   c                 T    U R                   (       a  U R                   R                  $ S$ rL   )r<   r.   rN   s    r'   r.   NodeSource.targetb   s    (,t~~$$>B>r&   c                 T    U R                   (       a  U R                   R                  $ S$ )N)r<   r/   rN   s    r'   r/   NodeSource.graph_idf   s    *...t~~&&@b@r&   c                 "    U R                  5       $ r1   )print_readablerN   s    r'   __repr__NodeSource.__repr__j   s    ""$$r&   c                     U R                   cH  SR                  U R                   Vs/ s H  oR                  R	                  5       PM     sn5      U l         U R                   $ s  snf )N+)r>   joinr:   r-   lower)r3   rH   s     r'   _get_action_stringNodeSource._get_action_stringm   sL    &"%((DKK+PKqFFLLNK+P"QD""" ,Qs   #A"c                     US:  a  gSnU R                  5       nUSU-  S-  SU R                   SU R                   SU SU R                   S	3	-   -  nU R                   H  nX$R                  US
-   5      -  nM     U$ )N	   rM       z(name=z, pass_name=z	, action=z, graph_id=z)
r	   )r]   r-   r9   r/   r;   rV   )r3   indentresultaction_stringitems        r'   rV   NodeSource.print_readabler   s    A://1&L1tyykdnn-=Y}oU`aeanan`oorst	
 NND))&1*55F #r&   c           
      8   U R                   cn  U R                  5       nU R                  U R                  U R                  U R
                  UU R                   Vs/ s H  o"R                  5       PM     snS.U l         U R                   c   eU R                   $ s  snf )N)r-   r.   r/   r9   r:   r;   )r=   r]   r-   r.   r/   r9   r;   to_dict)r3   re   r?   s      r'   ri   NodeSource.to_dict   s~    :: 335M		++ MM!^^'9=HllnHDJ zz%%%zz	 Is   Botherc                 p    [        U[        5      (       d  gU R                  5       UR                  5       :H  $ )NF)rA   r   ri   )r3   rk   s     r'   __eq__NodeSource.__eq__   s)    %,,||~00r&   c                 N   ^ U4S jm[        T" U R                  5       5      5      $ )Nc                    > [        U [        5      (       a,  [        [        U4S jU R	                  5        5       5      5      $ [        U [
        5      (       a  [        U4S jU  5       5      $ U $ )Nc              3   <   >#    U  H  u  pUT" U5      4v   M     g 7fr1   r   ).0kv_make_hashables      r'   	<genexpr>>NodeSource.__hash__.<locals>._make_hashable.<locals>.<genexpr>   s     #S{tqQq(9$:{s   c              3   4   >#    U  H  nT" U5      v   M     g 7fr1   r   )rr   rf   ru   s     r'   rv   rw      s     Bcd^D11cs   )rA   dicttuplesorteditemsrB   )objru   s    r'   ru   +NodeSource.__hash__.<locals>._make_hashable   sO    #t$$V#Ssyy{#SSTTC&&BcBBB
r&   )hashri   )r3   ru   s    @r'   __hash__NodeSource.__hash__   s     	 N4<<>233r&   dc                    Uc  g[        U[        5      (       d   S[        U5       35       e[        R	                  [        5      nSUl        SUl        UR                  SS5      Ul        UR                  SS5      n/ nU(       a  UR                  S5       Hm  nUR                  5       S:X  a!  UR                  [        R                  5        M8  UR                  5       S:X  d  MN  UR                  [        R                  5        Mo     XBl        S	U;   aZ  S
U;   aT  SU;   aN  [        R!                  UR                  S	S5      UR                  S
S5      UR                  SS5      5      nXbl        OSUl        UR                  SS5      b@  UR                  S/ 5       Vs/ s H  nU R%                  U5      =nc  M  UPM     snUl        U$ / Ul        U$ s  snf )z
Recursively deserialize from_node metadata from dictionary data.
It is used to deserialize the from_node field from serialized metadata.
Please use constructor NodeSource(node, ...) to create a NodeSource object.
NzExpected a dict, got r9   rM   r:   rZ   r#   r$   r-   r.   r/   rS   r;   )rA   ry   typer   __new__r>   r=   getr9   splitupperappendr   r#   r$   r:   r8   r<   
_from_dictr;   )	clsr   node_source
action_stractionsaction_namer<   fnrd   s	            r'   r   NodeSource._from_dict   s    9!T""E&;DG9$EE" !((4 &*"  !"k2 6 UU8R(
)//4$$&(2NN#3#:#:; &&(I5NN#3#;#;<	  5
 % Q;8q=Z1_"++fb!1552#6j"8MI %.!$(K! 55d#/ %%R0%0B!nnR00F 0%K!  %'K!%s   G8G)r>   r=   r:   r;   r<   r9   )rM   N)r   )r   r    r!   r"   __doc__r8   r6   __annotations__rB   r   ry   r   r   r   r4   propertyr-   r.   r7   r/   rW   r]   rV   ri   objectrm   r   classmethodr   r%   r   r&   r'   r   r   *   sF   
% % N#$$L!!
##DcN##SM!
 PT	4tn4 4 148J3KKLM	4@ =c = = ? ? ? A# A A%#
  1F 1
4 38D> 3h|.D 3 3r&   r   c              #      #    U (       d  S v   g [         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   rF   )enablesaved_should_preserve_node_metasaved_current_metas      r'   r   r      sJ      *C')..0	.(,%(G%-L )H%-Ls   '>5 >;>stackc                 \    [         (       a!  U (       a  SR                  U 5      [        S'   g g g )NrM   stack_trace)r   r[   r   )r   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	   r   r   r   )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 )Nr   r   r	   r   rS   r   )current_levels    r'   r   r      so    
 ! $((q9q   A\*-.)6):L&-9:J-KCR-PL)* !r&   rJ   c                      [         (       a  [        R                  SS5      /$ [        R                  " [        R
                  " 5       S S 5      $ )Nr   rM   rS   )r   r   r   	tracebackformat_listextract_stackr   r&   r'   r   r     sA        344 $$Y%<%<%>s%CDDr&   c                      [         $ r1   )r   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;   )r   rE   r   rF   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   5  s    r&   rD   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     U$ s  snf ! [
         a9  n[        SSS[        U5      [        R                  " 5       S.5        0 s SnA$ SnAff = f)zY
Given an fx.Graph, return a json that contains the provenance information of each node.
call_functionr;   inductorprovenance_tracking_errorr   )function	error_msgr   N)
nodesoprE   ri   r-   	Exceptionr   r6   r   
format_exc)rD   provenance_tracking_jsonr?   sourcees        r'   r   r   :  s    
#% KKDww/) #dii/ 59IIk4JK4J&^^%4JK )3   ('	 L
   	'7 V(335	
 	s4   A; !A; A6A; 6A; ;
B>.B93B>9B>)T)rM   ))rF   loggingr   
contextlibr   enumr   typingr   r   r   torch._utils_internalr   _compatibilityr
   rD   r   r?   r   	getLoggerr   log__all__r   ry   r6   r   r   r   r   r   rB   r   r   r   r   boolr   r   r   r   r   r&   r'   <module>r      s      %  ' ' 0 )   !  "d38n !!  e,t  -
 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,U tCH~  -r&   