
    ȅi\                        S SK r S SKrS SKrS SKrS SKJr  S SKJrJr  S SK	J
r
JrJrJrJr  S SKJrJr  S SKrS SKJs  J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 J!r!J"r"  S S
K#J$r$  S SK%J&r&  S SK'J(r(  \" S\RR                  \RT                  5      r+S\,S\-4S jr.\ R^                   " S S5      5       r0 " S S\Rb                  5      r2 " S S5      r3\" S\45      r5 " S S\Rl                  5      r7 " S S5      r8 " S S5      r9 " S S5      r: " S  S!5      r; " S" S#5      r< " S$ S%5      r= " S& S'5      r> " S( S)\>5      r? " S* S+\>5      r@ " S, S-\>5      rA " S. S/\>5      rB " S0 S1\>5      rC " S2 S35      rD " S4 S55      rEg)6    N)abstractmethod)CallableSequence)AnyNewTypeOptionalTypeVarUnion)overrideSelf)TracingContext)AOTCompiledArtifact)
FakeTensorFakeTensorModeTensor)MetaConverterMetaTensorDescMetaTensorDescriber)SymNode)ShapeEnv)no_dispatch	_SymNodeTnamereturnc                 $    U R                  S5      $ )z
An ops filter which allows pickle-safe ops. Pickle-safe ops are built-in
ones where it will be possible to unpickle on any machine which has PyTorch.
)ztorch.ops.atenztorch.ops.fbgemm)
startswithr   s    Q/home/james-whalen/.local/lib/python3.13/site-packages/torch/fx/_graph_pickler.py_ops_filter_safer      s     ??	
     c                   f    \ rS rSr% \r\\\/\	4      \
S'   \R                  " \S9r\\   \
S'   Srg)Options*   
ops_filter)default_factoryignore_metadata_fields N)__name__
__module____qualname____firstlineno__r   r$   r   r   strbool__annotations__dataclassesfieldtupler&   r   __static_attributes__r'   r    r   r"   r"   *   s9     3CJ3%+./B,7,=,=e,THSMTr    r"   c            	          ^  \ rS rSrSrSS\R                  S\\   SS4U 4S jjjr	\
S\S\\S	\4   \\S	4   4   4S
 j5       r\
S\S\\   4S j5       r\SS\S\\   S\4S jj5       r\S\S\S\4S j5       rSrU =r$ )GraphPickler2   zV
GraphPickler is a Pickler which helps pickling fx graph - in particular
GraphModule.
Nfileoptionsr   c                    > [         TU ]  U5        U=(       d
    [        5       U l        [	        [        5       5      U l        [        SS9U l        g )NF)	copy_data)	super__init__r"   r7   _UnpickleStateTokenobject_unpickle_stater   _meta_tensor_describer)selfr6   r7   	__class__s      r   r;   GraphPickler.__init__8   s>    +')  368< ':E&J#r    obj.c                 X   [        U[        5      (       a  [        R                  X5      $ [        U[        R
                  R                  5      (       a  [        R                  X5      $ [        U[        R                  R                  [        R                  R                  45      (       a  [        R                  X5      $ [        U[        5      (       a  [        R                  X5      $ [        U[        R                  5      (       a  [        R                  X5      $ [        U[        R                   R"                  5      (       a  [$        R                  X5      $ [        U[        R
                  R&                  5      (       a   e[(        R                  X5      =n(       a  U$ [*        $ N)
isinstancer   _TensorPickleDatareduce_helpertorchfxGraphModule_GraphModulePickleData_opsOperatorBaseOpOverloadPacket_OpPickleDatar   _ShapeEnvPickleDataSymInt_SymNodePickleData_guardsr   _TracingContextPickleDataNode_TorchNumpyPickleDataNotImplemented)r@   rC   reduces      r   reducer_overrideGraphPickler.reducer_overrideF   s)   , c:&&$224==UXX1122)77BBejj55uzz7R7RSTT ..t99X&&&44T??U\\**%33D>>U]]99::,::4EE "#uxx}}5555.<<TGGvG "!r    c                 "    XR                   L a  gg )Nunpickle_stater>   )r@   rC   s     r   persistent_idGraphPickler.persistent_idr   s    &&&#r    c                     [         R                  " 5        nU " X25      nUR                  U5        UR                  5       sSSS5        $ ! , (       d  f       g= f)z
Pickle an object.
N)ioBytesIOdumpgetvalue)clsrC   r7   streampicklers        r   dumpsGraphPickler.dumpsy   s9    
 ZZ\V&*GLL??$ \\s   )A		
Adata	fake_modec                     [        U5      n[        R                  " U 5       n[        X25      nUR	                  5       sSSS5        $ ! , (       d  f       g= f)z
Unpickle an object.
N)_UnpickleStaterb   rc   _GraphUnpicklerload)rk   rl   staterg   	unpicklers        r   loadsGraphPickler.loads   s<    
 y)ZZ'6I>># s   A
A)r?   r>   r7   rE   )r(   r)   r*   r+   __doc__rb   rc   r   r"   r;   r   r=   r1   r   r   rZ   r,   r_   classmethodbytesri   staticmethodr   rs   r2   __classcell__rA   s   @r   r4   r4   2   s    
KRZZ K(72C Kt K K ("("	xS!5c?2	3(" ("T  HSM   % %'): %e % % $E $n $ $ $r    r4   c                   &    \ rS rSrS\SS4S jrSrg)rn      rl   r   Nc                 .    Xl         [        5       U l        g rE   )rl   r   meta_converter)r@   rl   s     r   r;   _UnpickleState.__init__   s    "9Fr    )rl   r~   )r(   r)   r*   r+   r   r;   r2   r'   r    r   rn   rn      s    I. IT Ir    rn   r<   c                   h   ^  \ rS rSrS\R
                  S\SS4U 4S jjr\S\	S\	4S j5       r
S	rU =r$ )
ro      rg   r]   r   Nc                 0   > [         TU ]  U5        X l        g rE   )r:   r;   r>   )r@   rg   r]   rA   s      r   r;   _GraphUnpickler.__init__   s     -r    pidc                 R    US:X  a  U R                   $ [        R                  " S5      e)Nr]   zInvalid persistent ID)r>   pickleUnpicklingError)r@   r   s     r   persistent_load_GraphUnpickler.persistent_load   s)    ""'''(()@AAr    r^   )r(   r)   r*   r+   rb   rc   rn   r;   r   r=   r   r2   ry   rz   s   @r   ro   ro      sG    .rzz .> .d . B6 Bf B Br    ro   c                       \ rS rSr% \\\4   \S'   \S\	S\
S\\\\/\
4   \\\4   4   4S j5       rS\
SS4S	 jrS
\S\
4S jrSrg)rQ      rk   rh   rC   r   c                 B    U R                   U " U5      UR                  44$ rE   unpickler>   rf   rh   rC   s      r   rH   !_ShapeEnvPickleData.reduce_helper   s"     ||c#h(?(?@@@r    envNc                     UR                   (       a   eUR                  R                  5       U l        U R                  S	 U R                  S	 g )Ntracked_fakesfake_tensor_cache)_translation_validation_enabled__dict__copyrk   )r@   r   s     r   r;   _ShapeEnvPickleData.__init__   s@     6666LL%%'	IIo&II)*r    r]   c                    UR                   (       d   eUR                   R                  (       d   eU R                  R                  5        H%  u  p#[	        UR                   R                  X#5        M'     UR                   R                  $ rE   )rl   	shape_envrk   itemssetattr)r@   r]   kvs       r   r   _ShapeEnvPickleData.unpickle   sg    ''''''1111IIOO%DAN,,66= & ''111r    )rk   )r(   r)   r*   r+   dictr,   r=   r.   rv   r4   r   r1   r   r   rn   r<   rH   r;   r   r2   r'   r    r   rQ   rQ      s    
sF{
A"A)1A	$'12E$@S:S4TT
A A+H + +2~ 2( 2r    rQ   c                       \ rS rSr\S\S\S\\\	\
/\4   \\	\4   4   4S j5       rS\SS4S jrS\4S	 jrS
\
S\R"                  4S jrSrg)rS      rh   rC   r   c                     U " UR                   5      UR                  4n[        U[        R                  5      (       a  [
        R                  U4$ [        S[        U5       35      e)NzUnhandled SymNode type )	noder>   rF   rI   rR   rS   unpickle_sym_intNotImplementedErrortype)rf   rh   rC   argss       r   rH    _SymNodePickleData.reduce_helper   sU     CHHw667c5<<((%66<<%(?S	{&KLLr    r   Nc                     UR                   U l        UR                  U l        UR                  U l        UR                  U l        g rE   )_exprexprr   pytype_hinthint)r@   r   s     r   r;   _SymNodePickleData.__init__   s.    JJ	kkJJ	r    c                     U R                   c   e[        U R                  U R                   U R                  U R                  5      $ rE   )r   r   r   r   r   )r@   s    r   _to_sym_node_SymNodePickleData._to_sym_node   s3    ~~)))tyy$..$++tyyIIr    r]   c                 J    [         R                  " U R                  5       5      $ rE   )rI   rR   r   r@   r]   s     r   r   #_SymNodePickleData.unpickle_sym_int   s    ||D--/00r    )r   r   r   r   )r(   r)   r*   r+   rv   r4   r   r1   r   r   rn   r<   rH   r   r;   r   rI   rR   r   r2   r'   r    r   rS   rS      s    MM M 
$'23U4AT;T5UU
	M MW  Jg J1~ 1%,, 1r    rS   c                       \ rS rSr% \\   \S'   \S\S\S\	\
\\/\4   \	\\4   4   4S j5       rS\S\SS	4S
 jrS\S\4S jrSrg	)rG      metadatarh   rC   r   c                 X    U R                   U " UR                  U5      UR                  44$ rE   )r   r?   r>   r   s      r   rH   _TensorPickleData.reduce_helper   s3     ||..4##
 
 	
r    	describertNc           	         UR                  U5      nUR                  (       a?  [        UR                  [        R                  R
                  R                  5      (       d   e[        R                  " US S9U l	        [        R                   HC  nUS;   a  M  [        U R                  U5      c  M$   SU S[        U R                  U5       35       e   g )Nrl   )rl   	view_funcz
not None: z: )describe_tensorr   rF   rI   _subclasses
meta_utils_FakeTensorViewFuncr/   replacer   r   _UNSERIALIZABLEgetattr)r@   r   r   r   r   s        r   r;   _TensorPickleData.__init__   s    
 ,,Q/ %% 1 1 < < P P*
 *
 	
 
 $++HE  //A..4==!,4 QCr'$--";!<=4 0r    r]   c                   ^ [         R                  " U R                  TR                  S9nUR                  (       aJ  UR
                  b=  [         R                  " UR
                  TR                  S9n[         R                  " X#S9nS[        / [        R                  4   S[        [        R                  [        4   S[        4U4S jjnTR                  R                  UTR                  R                  US S 5      $ )Nr   )basemake_meta_tdevicer   c                    > [        5          [        TR                  U " 5       U5      sS S S 5        $ ! , (       d  f       g = frE   )r   r   rl   )r   r   r]   s     r   	with_fake-_TensorPickleData.unpickle.<locals>.with_fake  s-     !",,M	 s	   2
A )r/   r   r   rl   is_viewr   r   rI   r   r
   r   r,   r   r~   meta_tensorr   )r@   r]   r   new_baser   s    `   r   r   _TensorPickleData.unpickle  s    &&MM$..
  9"**(22H #**8CH		!"ell"23		=B5<<QTCT=U				 ,,88$$..
 	
r    )r   )r(   r)   r*   r+   r   r   r.   rv   r4   r1   r   r   rn   r<   rH   r   r   r;   r   r2   r'   r    r   rG   rG      s    Z((
"
)3
	$'34eDBU<U6VV

 
"5 & T , 
~  
*  
r    rG   c                       \ rS rSr\S\S\S\\\	\
\/\4   \\
\4   4      4S j5       rS\S\SS4S	 jrS
\S\	S\4   4S jr\S\S\\
   4S j5       rSrg)rW   i*  rh   rC   r   c                 f    U R                  U5      =n(       a  U R                  X1R                  44$ g rE   )from_objectr   r>   )rf   rh   rC   rk   s       r   rH   #_TorchNumpyPickleData.reduce_helper+  s3     ??3''4'LL4)@)@"ABBr    modr   Nc                     Xl         X l        g rE   r   r   )r@   r   r   s      r   r;   _TorchNumpyPickleData.__init__8  s    	r    r]   .c                     [        [        R                  " U R                  5      U R                  5      n[
        R                  R                  R                  R                  5       U   $ rE   )
r   	importlibimport_moduler   r   rI   _dynamo	variablesmiscget_np_to_tnp_map)r@   r]   nps      r   r   _TorchNumpyPickleData.unpickle<  sE    Y,,TXX6		B}}&&++==?CCr    tnpc                    [        U5      (       d  g [        R                  R                  R                  R                  5       n UR                  U5      =n(       d  g  [        USS 5      =n(       d  Sn[        USS 5      =n(       d  g U[        [        R                  " U5      U5      :X  d   eU " XE5      $ ! [         a     g f = f)Nr)   numpyr(   )callablerI   r   r   r   get_tnp_to_np_mapget	TypeErrorr   r   r   )rf   r   	tnp_to_npr   r   r   s         r   r   !_TorchNumpyPickleData.from_object@  s    }}MM++00BBD		#--,,B, -
 r<666CJ555 WY44S94@@@@3~  		s   B8 8
CCr   )r(   r)   r*   r+   rv   r4   r=   r   r1   r   r   rn   r<   rH   r,   r;   r   r   r2   r'   r    r   rW   rW   *  s    
"
)/
	dN+V34eDBU<U6VV	


 
C s t D~ D(3;:O D f $  r    rW   c                      \ rS rSr\S\S\R                  R                  S\	\
\\/\R                  R                  4   \	\\4   4   4S j5       rS\R                  R                  S\SS4S	 jrS
\S\R                  R                  4S jrSrg)rL   iX  rh   rC   r   c                 V    U R                   U " X!R                  5      UR                  44$ rE   )r   r7   r>   r   s      r   rH   $_GraphModulePickleData.reduce_helperY  s/     ||__%##
 
 	
r    gmr7   Nc                 :   [        U[        R                  R                  R                  5      (       a  UR                  5       nOUR                  5       nUR                  R                  5       U l	        U R                  S	 [        UR                  U5      U l        g )N_graph)rF   rI   rJ   _lazy_graph_module_LazyGraphModule_real_recompile	recompiler   r   gm_dict_GraphPickleDatar   graph)r@   r   r7   _python_codes       r   r;   _GraphModulePickleData.__init__e  sj    b%((55FFGG--/L<<>L{{'')LL"%bii9
r    r]   c                     [         R                  R                  R                  [         R                  R                  5      nU R                  Ul        U R                  R                  X!5      Ul        U$ rE   )	rI   rJ   rK   __new__r   r   r   r   r   )r@   r]   r   s      r   r   _GraphModulePickleData.unpickleo  sL    XX!!))%((*>*>?llJJ'';		r    )r   r   )r(   r)   r*   r+   rv   r4   rI   rJ   rK   r1   r   r   rn   r<   rH   r"   r;   r   r2   r'   r    r   rL   rL   X  s    	
"	
).)=)=	
	$')=)==>d''(	*
	
 	
:588// :' :d :~ %((:N:N r    rL   c                   $   \ rS rSrS\R
                  R                  S\\R
                  R                  S 4   S\SS4S jr	S\R
                  R                  S\S \R
                  R                  4   S	\S\R
                  R                  4S
 jrSrg)_NodePickleDataiv  r   mappingr7   r   Nc                   ^ [         R                  " [        R                  R                  U4S jUR
                  5      U l        [         R                  " [        R                  R                  U4S jUR                  5      U l        UR                  U l        UR                  U l        [        R                  UR                  U5      U l        UR                  U l        UR                  U l        UR                  (       aO  U R                  R                  5       U l        UR                   H  nU R                  R!                  US 5        M!     g g )Nc                    > TU    $ rE   r'   nr  s    r   <lambda>*_NodePickleData.__init__.<locals>.<lambda>}  s	    '!*r    c                    > TU    $ rE   r'   r  s    r   r  r    s	    WQZr    )pytreetree_map_onlyrI   rJ   rV   r   kwargsr   oprP   r   targetr   metar&   r   pop)r@   r   r  r7   r   s     `  r   r;   _NodePickleData.__init__w  s     ((8LdiiX	**HHMM/
 II	''#**4;;@ II	 II	))		(DI33		a& 4 *r    r   r]   c                   ^ [         R                  " [        U4S jU R                  5      n[         R                  " [        U4S jU R                  5      nU R
                  R                  U5      n[        U5      (       d  [        U[        5      (       d   eUR                  U R                  XdXPR                  U R                  5      nU R                  Ul        U$ )Nc                    > TU    $ rE   r'   r  s    r   r  *_NodePickleData.unpickle.<locals>.<lambda>  s	    wqzr    c                    > TU    $ rE   r'   r  s    r   r  r    s	    wqzr    )r
  r  r  r   r  r  r   r   rF   r,   create_noder  r   r   r  )r@   r   r  r]   r   r  r  r   s     `     r   r   _NodePickleData.unpickle  s     ##O5I499U%%14;;
 %%n5:fc#:#:::  &		499UII	r    )r   r  r  r   r  r  r   )r(   r)   r*   r+   rI   rJ   rV   r   r"   r;   Graphrn   r   r2   r'   r    r   r  r  v  s    'hhmm' ehhmm%667' 	'
 
'2xx~~ '67 '	
 
r    r  c            
          \ rS rSr\S\S\S\\\	/\4   \\
   4   4S j5       r\S\S\SS 4S j5       r\S\S	\\S
   \S   4   S\SS 4S j5       r\S\	S\4S j5       r\S\S\4S j5       r\S\S\S\4S j5       rSrg)rP   i  rh   r  r   c                 j    U R                  X!R                  5      nUR                  UR                  44$ rE   )r   r7   r   r>   )rf   rh   r  results       r   rH   _OpPickleData.reduce_helper  s.     B0'"9"9!;<<r    r7   c                    [        U[        5      (       a  [        U5      $ [        [        USS 5      [        5      (       aA  [        US5      (       d   eUR                  n[        U[        5      (       d   e[        U5      $ [        R                  R                  R                  U5      n[        U[        R                  R                  5      (       a  U R                  U[        U5      $ [        U[        R                  R                   5      (       a  U R                  U["        U5      $ UR%                  [&        R(                  5      (       a  UR+                  SS5      u  pV['        XV5      $ [-        S[/        U5       SU SU 35      e)N__wrapped__.   zTARGET:  )rF   r,   _OpStrPickleDatar   r   hasattrr  _OpPrecompiledPickleDatarI   rJ   rV   _pretty_print_targetrM   
OpOverload
_pickle_op_OpOverloadPickleDatarO   _OpOverloadPacketPickleDatar   _OpFunctionPickleDataSUPPORTED_ROOTSsplitr   r   )rf   r  r7   artifactr   rootdetails          r   r   _OpPickleData.pickle  s1   b##B''gb-68KLL2}----~~Hh(;<<<<+H55xx}}11"5b%**//00>>$(=wGGEJJ7788>>$(CWMM__2BBCC::c1-LD(66 &b
!B4q&GHHr    r   dataclsr(  r)  c                 t    UR                   =n(       a  U" U 5      (       d  SSKJn  U" SU  35      eU" U 5      $ )Nr   )BypassFxGraphCachez"Unable to pickle non-standard op: )r$   torch._inductor.codecacher3  )r   r1  r7   r$   r3  s        r   r'  _OpPickleData._pickle_op  s?     ",,,J,j6F6FD$'I$%PQQt}r    r]   c                     g rE   r'   r   s     r   r   _OpPickleData.unpickle  s    r    c                     SU;   a2  UR                  SS5      u  p#[        5       U   nU R                  XC5      $ [        5       U   $ )z3
Like `globals()[name]` but supports dotted names.
r  r   )r,  globals_getattr_by_name)rf   r   r   restr.  s        r   _lookup_global_by_name$_OpPickleData._lookup_global_by_name  sE    
 $;

3*IC9S>D''339T?"r    r.  c                 r    SU;   a'  UR                  SS5      u  p![        X5      n SU;   a  M'  [        X5      $ )z7
Like `getattr(root, name)` but supports dotted names.
r  r   )r,  r   )r.  r   r   s      r   r:  _OpPickleData._getattr_by_name  s=    
 Tk

3*IC4%D Tk t""r    r'   N)r(   r)   r*   r+   rv   r4   r=   r1   r   rn   r<   rH   r"   r   rx   r,   r
   r   r'  r   r   r<  r:  r2   r'   r    r   rP   rP     s5   ="=(.=	x(&0159L3MM	N= = I I I_ I I. ()40M+NN

  
  ~ &   	## 	#& 	# 	# #v #S #V # #r    rP   c                   8    \ rS rSrS\SS4S jrS\S\4S jrSrg)	r"  i  r   r   Nc                     Xl         g rE   r   r@   r   s     r   r;   _OpStrPickleData.__init__      	r    r]   c                     U R                   $ rE   r   r   s     r   r   _OpStrPickleData.unpickle  s    yyr    r   )	r(   r)   r*   r+   r,   r;   rn   r   r2   r'   r    r   r"  r"    s(    S T ~ # r    r"  c                   `    \ rS rSrS\SS4S jrS\S\R                  R                  4S jr
Srg)	r(  i  r   r   Nc                     Xl         g rE   r   rB  s     r   r;   _OpOverloadPickleData.__init__  rD  r    r]   c                     U R                  U R                  5      n[        U[        R                  R
                  5      (       d   eU$ rE   )r<  r   rF   rI   rM   r&  r@   r]   rC   s      r   r   _OpOverloadPickleData.unpickle  s8    ))$))4#uzz445555
r    r   )r(   r)   r*   r+   r,   r;   rn   rI   rM   r&  r   r2   r'   r    r   r(  r(    s2    S T ~ %**:O:O r    r(  c                   `    \ rS rSrS\SS4S jrS\S\R                  R                  4S jr
Srg)	r)  i  r   r   Nc                     Xl         g rE   r   rB  s     r   r;   $_OpOverloadPacketPickleData.__init__  rD  r    r]   c                     U R                  U R                  5      n[        U[        R                  R
                  5      (       d   eU$ rE   )r<  r   rF   rI   rM   rO   rK  s      r   r   $_OpOverloadPacketPickleData.unpickle   s8    ))$))4#uzz::;;;;
r    r   )r(   r)   r*   r+   r,   r;   rn   rI   rM   rO   r   r2   r'   r    r   r)  r)    s2    S T ~ %**:U:U r    r)  c                   8    \ rS rSrS\SS4S jrS\S\4S jrSr	g)	r$  i  r-  r   Nc                 .    UR                  5       U l        g rE   )	serializecontents)r@   r-  s     r   r;   !_OpPrecompiledPickleData.__init__  s     **,r    r]   c                    ^ [         R                  " U R                  5      mSS KnUR	                  T5      S[
        S[
        4U4S jj5       nU$ )Nr   r   r   c                     > T" U 6 $ rE   r'   )r   precompiled_artifacts    r   wrapped2_OpPrecompiledPickleData.unpickle.<locals>.wrapped  s    '..r    )r   deserializerU  	functoolswrapsr   )r@   r]   r]  rZ  rY  s       @r   r   !_OpPrecompiledPickleData.unpickle
  sL    2>>t}}M	-	.	/3 	/3 	/ 
/	/ r    )rU  )
r(   r)   r*   r+   r   r;   rn   r=   r   r2   r'   r    r   r$  r$    s)    -!4 - -~ & r    r$  c                   D    \ rS rSrSrSrS\S\SS4S jrS	\S\	4S
 jr
Srg)r*  i  z
Supports pickling a set of standard/common functions
These must be prefixed with the full namespace in order to properly
be pickled (i.e `einops.rearrange` and not `from einops import rearrange`)
)z	builtins.zmath.ztorch.z	operator.zeinops.r.  r   r   Nc                     Xl         X l        g rE   )r.  r   )r@   r.  r   s      r   r;   _OpFunctionPickleData.__init__  s    		r    r]   c                    U R                   S:X  a  [        R                  U R                  5      $ U R                   S:X  a  SS KnU R                  X R                  5      $ U R                   S:X  a   U R                  [        U R                  5      $ U R                   S:X  a  SS KnU R                  X0R                  5      $ U R                   S:X  a  SS KnU R                  X@R                  5      $ [        e)Nbuiltinsmathr   rI   operatoreinops)
r.  __builtins__r   r   re  r:  rI   rf  rg  r   )r@   r]   re  rf  rg  s        r   r   _OpFunctionPickleData.unpickle#  s    99
"##DII..YY& ((yy99YY'!((		::YY*$((99==YY("((;;%%r    )r   r.  )r(   r)   r*   r+   ru   r+  r,   r;   rn   r=   r   r2   r'   r    r   r*  r*    s<     OOS   &~ && &r    r*  c                       \ rS rSrS\R
                  R                  S\SS4S jrS\R
                  R                  S\
S\R
                  R                  4S	 jrS
rg)r   i8  r   r7   r   Nc                     UR                   U l        UR                  U l        0 nUR                   H  n[        XCU5      X4'   M     [        UR                  5       5      U l        UR                  U l        g rE   )	_tracer_cls
tracer_cls_tracer_extrastracer_extrasnodesr  r1   values_codegen)r@   r   r7   rp  r   s        r   r;   _GraphPickleData.__init__9  s[    ++"1168KKD)$w?EK  5<<>*
r    r   r]   c                     [         R                  R                  XR                  U R                  5      n0 nU R
                   H  nUR                  X4U5      XE'   M     U R                  Ul        U$ rE   )rI   rJ   r  rm  ro  rp  r   rr  )r@   r   r]   r   rp  nds         r   r   _GraphPickleData.unpickleL  sW     r??D4F4FG68**BE.AEI r    )rr  rp  rm  ro  )r(   r)   r*   r+   rI   rJ   r  r"   r;   rK   rn   r   r2   r'   r    r   r   r   8  sS    'ehhnn 'w '4 '&
((&&
8F
	
r    r   c                       \ rS rSr\S\S\R                  R                  S\	\
\\/\R                  R                  4   \	\\4   4   4S j5       rS\SS4S jrS	\S\4S
 jrSrg)rU   iY  rh   rC   r   c                 B    U R                   U " U5      UR                  44$ rE   r   r   s      r   rH   '_TracingContextPickleData.reduce_helperZ  s*     LLC''
 	
r    contextNc                 6   UR                   U l         UR                  U l        UR                  U l        UR                  U l        UR                  U l        UR
                  U l        UR                  U l        UR                  U l        UR                  U l        g rE   )	module_contextframe_summary_stackloc_in_frameaot_graph_nameparams_flatparams_flat_unwrap_subclassesparams_unwrapped_to_flat_indexoutput_strides#force_unspec_int_unbacked_size_like)r@   rz  s     r   r;   "_TracingContextPickleData.__init__i  s    %44#*#>#> #00%44"..-4-R-R*.5.T.T+%4477 	0r    r]   c                 b   [        UR                  5      nU R                  Ul        U R                  Ul        U R                  Ul        U R
                  Ul        U R                  Ul        U R                  Ul        U R                  Ul        U R                  Ul	        U R                  Ul
        U$ rE   )r   rl   r|  r}  r~  r  r  r  r  r  r  )r@   r]   rz  s      r   r   "_TracingContextPickleData.unpickle  s     !9!9:!%!4!4&*&>&>##00!%!4!4"..040R0R-151T1T.!%!4!444 	3 r    )	r  r  r}  r~  r|  r  r  r  r  )r(   r)   r*   r+   rv   r4   rI   rT   r   r1   r   r   rn   r<   rH   r;   r   r2   r'   r    r   rU   rU   Y  s    
"
).)E)E
	$')E)EEFd''(	*

 

 
4 
,~ . r    rU   )Fr/   r   rb   r   abcr   collections.abcr   r   typingr   r   r   r	   r
   typing_extensionsr   r   rI   torch.utils._pytreeutils_pytreer
  torch._guardsr   "torch._inductor.standalone_compiler   torch._subclasses.fake_tensorr   r   r   torch._subclasses.meta_utilsr   r   r   torch.fx.experimental.sym_noder   %torch.fx.experimental.symbolic_shapesr   torch.utils._mode_utilsr   rR   SymFloatr   r,   r-   r   	dataclassr"   Picklerr4   rn   r=   r<   	Unpicklerro   rQ   rS   rG   rW   rL   r  rP   r"  r(  r)  r$  r*  r   rU   r'   r    r   <module>r     sz     	   . 9 9 ,  $ $ ( B L L 
 3 : / Ku~~>	3 4  U U UY$6>> Y$xI I 3V< 
Bf&& 
B2 2>1 1<D
 D
N+ +\ <( (VF# F#R} M - }  &M  &F B3 3r    