L i+UddlZddlZddlZddlmZddlmZddlmZm Z m Z ddl m Z ddl mZddlmZdd lmZej&eZgd Ziaeeefed <d aed GddeZed GddZed eddZed deefdZ ed dZ!ed dZ"ed deefdZ#ed de$fdZ%ed eddZ&ed deeeffdZ'ed dedeeeffdZ(y) N)contextmanager)Enum)AnyOptionalUnion)signpost_event) compatibility)Graph)Node) preserve_node_metahas_preserved_node_metaset_stack_traceset_grad_fn_seq_nrreset_grad_fn_seq_nr format_stackset_current_metaget_current_meta NodeSourceNodeSourceActionget_graph_provenance_json current_metaF)is_backward_compatibleceZdZdZdZy)rcreatereplaceN)__name__ __module__ __qualname__CREATEREPLACEX/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/fx/traceback.pyrr$s FGr#rc ZeZdZUdZGddZeed<eded<eded<eded<ee ee fed <eeed < dd ee dedee dedffd Z edefdZedefdZedefdZdZdZddZde fdZdefdZdZedee dedfdZy )rz 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 eZdZdededefdZy)NodeSource.NodeInfonametargetgraph_idc.||_||_||_yNr(r)r*)selfr(r)r*s r$__init__zNodeSource.NodeInfo.__init__2sDI DK$DMr#N)rrrstrintr/r"r#r$NodeInfor'1s % %c %S %r#r2 pass_nameraction from_node node_info_dict_action_stringNnodec||_|g}nt|ts|g}|D]}t|trJ||_|r|j |j t|jt|j|_ d|jvr"tj|jdng|_nd|_ g|_d|_d|_y)Nr-r5)r3 isinstancelistrr4r2r(r0r)idgraphr6metacopydeepcopyr5r8r7)r.r9r3r4as r$r/zNodeSource.__init__>s # >FFD)XF 3Aa!12 22 3 !]]YYs4;;'7"TZZ.+DN $))+ dii 45 N "DNDN.2/3 r#returncJ|jr|jjSdSN)r6r(r.s r$r(zNodeSource.name^s&*nnt~~""<"B>r#cJ|jr|jjSdS)N)r6r*rGs r$r*zNodeSource.graph_idfs*...t~~&&@b@r#c"|jSr,)print_readablerGs r$__repr__zNodeSource.__repr__js""$$r#c|jFdj|jDcgc]}|jj c}|_|jScc}w)N+)r8joinr4r(lower)r.rBs r$_get_action_stringzNodeSource._get_action_stringmsJ    &"%((DKK+PqAFFLLN+P"QD """,Qs!Ac |dkDryd}|j}|d|zdzd|jd|jd|d|jd zz }|jD]}||j |d zz }|S) N rF z(name=z , pass_name=z , action=z , graph_id=z) r )rRr(r3r*r5rL)r.indentresult action_stringitems r$rLzNodeSource.print_readablers A://1  &L1 tyykdnn-=Y}oU`aeanan`oors t NN 6D d))&1*5 5F 6 r#c 0|jl|j}|j|j|j|j ||j Dcgc]}|jc}d|_|jJ|jScc}w)N)r(r)r*r3r4r5)r7rRr(r)r*r3r5to_dict)r.rYr9s r$r\zNodeSource.to_dicts| ::  335M ++ MM!^^'9=HdllnH DJzz%%%zz IsBothercft|tsy|j|jk(S)NF)r;rr\)r.r]s r$__eq__zNodeSource.__eq__s&%,||~00r#cLfdt|jS)Nct|tr+ttfd|j DSt|t rtfd|DS|S)Nc38K|]\}}||fywr,r").0kv_make_hashables r$ z>NodeSource.__hash__.._make_hashable..s#Stq!Qq(9$:#Ssc3.K|] }|ywr,r")rcrZrfs r$rgz>NodeSource.__hash__.._make_hashable..sBd^D1Bs)r;dicttuplesorteditemsr<)objrfs r$rfz+NodeSource.__hash__.._make_hashablesI#t$V#Ssyy{#SSTTC&BcBBB r#)hashr\)r.rfs @r$__hash__zNodeSource.__hash__s  N4<<>233r#dct|yt|tsJdt|tj t}d|_d|_|jdd|_|jdd}g}|r||jdD]h}|jdk(r |jtj6|jdk(sJ|jtjj||_d |vrWd |vrSd |vrOtj!|jd d|jd d|jd d }||_nd|_|jd d:|jd gDcgc]}|j%|x}|c}|_|Sg|_|Scc}w)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. NzExpected a dict, got r3rFr4rOr r!r(r)r*rJr5)r;rityper__new__r8r7getr3splitupperappendrr r!r4r2r6 _from_dictr5) clsrp node_source action_stractions action_namer6fnrXs r$rxzNodeSource._from_dicts 9!T"E&;DG9$EE"!((4 &* " !"k2 6 UU8R(  )//4 = $$&(2NN#3#:#:; &&(I5NN#3#;#;<  = %  Q;8q=Z1_"++fb!1552#6j"8MI%.K !$(K ! 55d # /%% R0%!nnR00F=%K !%'K !%sF5)rFN)r)rrr__doc__r2r0__annotations__r<rrirr rr/propertyr(r)r1r*rMrRrLr\objectr_ro classmethodrxr"r#r$rr*sF %% N # $$L!! ## DcN ##SM! PT 4tn44148J3KKLM 4@=c==???A#AA%#  1F1 438D>3h|.D33r#rc#vK|sdyt}tj} dad|a|ay#|a|awxYww)NT)should_preserve_node_metarr@)enablesaved_should_preserve_node_metasaved_current_metas r$r r sK  *C')..0 .(, % (G %-L)H %-Ls"90969stackcHtr|rdj|td<yyy)NrF stack_trace)rrPr)rs r$rrs#!U&(ggen ]#&+ r#ctrBtjdg|gztd<tjdddztd<yy)Ngrad_fn_seq_nr in_grad_fnrr rrrt)seq_nrs r$rrsQ!)5)9)9:JB)O S * %&&2%5%5lA%F%J \" !r#ctrQtjdd}|dkDsJ|dk(rtd=td=y|dz td<tdddtd<yy)Nrrr rrJr) current_levels r$rrsl !$((q9 q   A \*-.)6):L &-9:J-KCR-PL) *!r#rCctrtjddgStjtj ddS)NrrFrJ)rrrt traceback format_list extract_stackr"r#r$rrs>   344$$Y%<%<%>s%CDDr#ctSr,)rr"r#r$rrs $$r#c#KtrW|jrKt} |jjat ||t j gtd<d|aydy#|awxYww)Nr5)rr?rr@rrr )r9r3 saved_metas r$rrsa!TYY!  &99>>+L4,<,C,CD)L % %L &LsA,AA%A,%A))A,ctSr,)rr"r#r$rr5s r#r>c p i}|jD]Z}|jdk(sd|jvr+|jdDcgc]}|jc}ng||j<\|Scc}w#t $r8}t dddt|tjdicYd}~Sd}~wwxYw)za Given an fx.Graph, return a json that contains the provenance information of each node. call_functionr5inductorprovenance_tracking_errorr)function error_msgrN) nodesopr?r\r( Exceptionrr0r format_exc)r>provenance_tracking_jsonr9sourcees r$rr:s #% KK Dww/)#dii/59IIk4JK&V^^%K)3 (' L     '7 V(335    s4 A4A4A/A4/A44 B5=-B0*B50B5)T)rF))r@loggingr contextlibrenumrtypingrrrtorch._utils_internalr_compatibilityr r>r r9r getLoggerrlog__all__rrir0rrrrr r<rrrrboolrrrrr"r#r$rs %''0)g!  " d38n!!e,t- e,jj-jZe,.-.$e,5495-5e,K-Ke, Q- Qe,Ed3iE-Ee,%%-%e,-*e,$sCx.-e,UtCH~-r#