
    N j+                        % S SK r S SKrS SKrS SKJr  S SKJrJrJr  S SK	r	S SK
r	S rS rS rS rSS jrS	 rSS
.S jr\	R$                  R&                  \\	R$                  R(                  \\	R*                  \\	R$                  R,                  R*                  \\	R$                  R.                  \\	R0                  \\	R2                  \0r\\\4   \S'   S r " S S\	R<                  R>                  5      r  " S S\ 5      r! " S S\!5      r"S r# " S S\	R<                  RH                  5      r%  SS\\	R$                  RL                  \S\4   4   S\\\'\	RP                  4      S\\\'\4      S\	R<                  RR                  4S jjr*g)    N)Callable)AnyOptionalUnionc                 z    [         R                  " / UR                  QU R                  R                  S   P7SS06$ )Ndevicemeta)torchemptyshapeweightselfinputs     r/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/fx/experimental/meta_tracer.pyembedding_overrider      s1    ;;JJT[[%6%6r%:J6JJ    c                     U$ N r   s     r   nn_layernorm_overrider      s    Lr   c                     U $ r   r   )xs    r   torch_relu_overrider          Hr   c                     U$ r   r   )r   r   s     r   torch_nn_relu_overrider      r   r   c                 *    U(       a  [        S5      eU $ )Nz<dont support inplace functional.relu for metatensor analysisAssertionError)r   inplaces     r   functional_relu_overrider#      s    J
 	
 Hr   c                 `    U R                  SS9UR                  SS9-   UR                  SS9-   $ )Nr
   r	   )to)	conditionr   ys      r   torch_where_overrider)   $   s5     <<v<&V)<<qtt6t?RRRr   )outc                "    Ub  [        S5      eU $ )Nz1Dont support in-place abs for MetaTensor analysisr    )r   r*   s     r   torch_abs_overrider,   *   s    
PQQLr   manual_meta_overridesc                 J   ^  [         R                  " T 5      U 4S j5       nUT 4$ )Nc                  
  >^ S mU4S jn[         R                  R                  R                  X5        [         R                  R                  R                  X5        Tb  TR                  R                  STX5      $ T" U 0 UD6$ )Nc                 ^   > [        U [        R                  R                  5      (       a  U mg g r   )
isinstancer   fxProxy)vproxys    r   check_has_proxyAgen_constructor_wrapper.<locals>.wrapper.<locals>.check_has_proxy@   s"    !UXX^^,, -r   call_function)r   r2   nodemap_aggregatetracercreate_proxy)argskwargsr6   r5   targets      @r   wrapper(gen_constructor_wrapper.<locals>.wrapper<   sj    	
 	##D:##F<<<,,_fdSS4*6**r   )	functoolswraps)r?   r@   s   ` r   gen_constructor_wrapperrD   ;   s*    __V+ +  F?r   c                   `    \ rS rSrS rSS jrS r\S 5       r\S 5       r	\S 5       r
S	 rS
rg)	MetaProxyP   c                     Xl         g r   _tensor_meta)r   tensor_metas     r   install_tensor_metaMetaProxy.install_tensor_metaQ   s    'r   Nc                     [        U S5      (       a1  U R                  b$  U R                  R                  " U(       a  U/6 $ / 6 $ U R                  R	                  SSU(       a  X40 5      $ U 40 5      $ )NrJ   call_methodsize)hasattrrJ   rP   r;   r<   )r   dims     r   rP   MetaProxy.sizeT   sr    4((T->->-J$$))CC5@@R@@{{''6#D;B
 	
<@7B
 	
r   c                     [        U S5      (       a'  U R                  b  U R                  R                  5       $ U R                  R	                  SSU 40 5      $ )NrJ   rO   rR   )rQ   rJ   rR   r;   r<   r   s    r   rR   MetaProxy.dim[   sL    4((T->->-J$$((**{{''utgrJJr   c                     [        U S5      (       a#  U R                  b  U R                  R                  $ U R                  R	                  S[
        R                  U S40 5      $ )NrJ   r8   r   )rQ   rJ   r   r;   r<   builtinsgetattrrU   s    r   r   MetaProxy.shape`   V    4((T->->-J$$***{{''X--g
 	
r   c                     [        U S5      (       a#  U R                  b  U R                  R                  $ U R                  R	                  S[
        R                  U S40 5      $ )NrJ   r8   dtype)rQ   rJ   r]   r;   r<   rX   rY   rU   s    r   r]   MetaProxy.dtypeh   r[   r   c                     [        U S5      $ )Nr	   )MetaDeviceAttributerU   s    r   r	   MetaProxy.devicep   s     #422r   c                 F    US:X  a  U R                  U5      $ [        X5      $ )NrJ   )__getattribute__MetaAttribute)r   ks     r   __getattr__MetaProxy.__getattr__v   s(    ((++ T%%r   rI   r   )__name__
__module____qualname____firstlineno__rL   rP   rR   propertyr   r]   r	   rf   __static_attributes__r   r   r   rF   rF   P   sS    (
K
 
 
 
 
 3 3
&r   rF   c                   8    \ rS rSrS\4S jr\S 5       rS rSr	g)rd   ~   attrc                 L    Xl         X l        UR                  U l        S U l        g r   )rootrp   r;   _node)r   rr   rp   s      r   __init__MetaAttribute.__init__   s    		kk
r   c                     U R                   cG  U R                  R                  S[        U R                  U R
                  40 5      R                  U l         U R                   $ )Nr8   )rs   r;   r<   rY   rr   rp   r9   rU   s    r   r9   MetaAttribute.node   sN     ::11499dii*@"d J zzr   c                 n    U R                   R                  SU R                  U R                  4U-   U5      $ )NrO   )r;   r<   rp   rr   )r   r=   r>   s      r   __call__MetaAttribute.__call__   s1    {{''499tyylT&96
 	
r   )rs   rp   rr   r;   N)
rh   ri   rj   rk   strrt   rl   r9   ry   rm   r   r   r   rd   rd   ~   s'    3   
r   rd   c                       \ rS rSrSrg)r`      r   N)rh   ri   rj   rk   rm   r   r   r   r`   r`      s    r   r`   c                 ,   [        U [        5      (       a  g[        U [        R                  R                  5      (       aT  [        U [
        5      (       d  [        S[        U 5       35      e[        U S5      (       d  [        S5      eU R                  $ U $ )Nr
   zExpected MetaProxy but got rJ   z*MetaProxy does not have an associated meta)
r1   r`   r   r2   r3   rF   r!   typerQ   rJ   )r4   s    r   proxys_to_metasr      st    !())!UXX^^$$!Y'' #>tAwi!HIIq.)) !MNN~~Hr   c                     ^  \ rS rSr% Sr\\S'   / SQr   SU 4S jjrU 4S jr	U 4S jr
S\R                  R                  S	\4S
 jrS\R                  R                  S	\4U 4S jjrS rSS\\\R&                  4   4U 4S jjjrSrU =r$ )
MetaTracer   Tallow_insert_stateless_mods)arangezerosones	full_likeeyec           	      n  > [         TU ]  UUUUUUU5      nUS:X  a/  X R                  ;   a   UR                  U R                  U   5        U$ X R                  ;   a  SU;   a  SUS'    [
        R                  R                  R                  U[        5      n	[
        R                  R                  R                  U[        5      n
US:X  a  [        R                  X"5      nU" U	0 U
D6nGO9US:X  a  [        U	S   U5      nU" U	SS  0 U
D6nGOUS:X  a  [        U S	5      (       d  [        S
5      eSU l         U R                   R#                  U5      n[%        U5      nU[        ;   a  [        U   " U/U	Q70 U
D6nOU R&                  " U	0 U
D6nSU l        OUS:X  a  SU l         U R                   nUR)                  S5      nU H  n[        UU5      nM     [+        U[
        R,                  5      (       d  [        S[%        U5       35      eUR/                  SS9nSU l        OU$ [+        U[
        R                  R0                  5      (       d  [        S5      eUR                  U5        U$ ! SU l        f = f! SU l        f = f! [2         a*  n[4        R6                  " SU SU SU 35         S nAU$ S nAff = f)Nplaceholderr	   r
   r8   rO   r      call_moduleorig_forwardz$orig_forward not set for call_moduleTFget_attr.zExpected Tensor, got r%   z!Dont support composite output yetzCould not compute metadata for z target z: )superr<   	meta_argsrL   orig_fnsr   r2   r9   r:   r   r-   getrY   rQ   r!   _disable_module_getattrrr   get_submoduler   r   splitr1   Tensorr&   r3   	Exceptionwarningswarn)r   kindr?   r=   r>   name	type_exprproxy_factory_fnrv
args_metaskwargs_metasmeta_targetmeta_outmodmod_typeattr_itratomsatome	__class__s                      r   r<   MetaTracer.create_proxy   s    W!	
 = V~~%=""4>>&#9:I]]" 6!#)x .	Y44T?KJ 88==66vOL&377G&
ClC&%jmV<&
12G,G&t^44()OPP/3,
9))11&9C#CyH#88#8#B$",$0<$ $(#4#4j#QL#Q38D0#/3,	9#yyH"LL-E %#*8T#: !&%h==,/DT(^DT-UVV'{{&{9H38D0	 b%((..11$%HII""8, 	/ 49D0 49D0  	YMM;D6&QSTUSVWXX		YsR   'CJ  4AI( 
J   A7I4 	J  !AJ  (	I11J  4	I==J   
J4
J//J4c                 L   > [        U SS5      (       a  U$ [        TU ]  XU5      $ )Nr   F)rY   r   )r   rp   attr_valparameter_proxy_cacher   s       r   rY   MetaTracer.getattr   s*    42E::O7?43HIIr   c                 0   > X l         [        TU ]	  XX45      $ r   )r   r   r   )r   mforwardr=   r>   r   s        r   r   MetaTracer.call_module  s    #w"1t<<r   r   returnc                    SnUR                   R                  R                  5       nU SU 3n[        U R                  U5      (       a)  U SU 3nUS-  n[        U R                  U5      (       a  M)  U R                  R                  XA5        U$ )zR
Helper method which tries to insert a module that was not declared as submodule.
r   _r   )r   rh   lowerrQ   rr   
add_module)r   r   idxmod_namepaths        r   _insert_module_as_submodule&MetaTracer._insert_module_as_submodule  s     ==))//11SE"dii&&Zq&D1HC dii&& 			T'r   c                 2  >  [         TU ]  U5      $ ! [         az    U R                  (       ag  [	        [        UR                  5       5      5      S:X  aA  [	        [        UR                  5       5      5      S:X  a  U R                  U5      nX l	        Us $ e f = f)Nr   )
r   path_of_module	NameErrorr   lenlist
parametersbuffersr   prev_module)r   r   r   r   s      r   r   MetaTracer.path_of_module  s    	7)#.. 		00S^^-./14S[[]+,177<#' 		s    B BBc                     [        X5      $ r   )rF   )r   r9   s     r   r5   MetaTracer.proxy$  s    $$r   r   c           
        > [        U[        5      (       d  [        S[        U5       35      eX l        U R
                   Vs0 s H  nU[        [        [        U5      5      _M     snU l	        [        5       U l        U R                  R                  5        H3  u  nu  pg[        [        XV5        U R                  R                  U5        M5      [        T
U ]A  X5      nSU0Ul        UU R                  R                  5        H  u  nu  p[        [        XW5        M     $ s  snf ! U R                  R                  5        H  u  nu  p[        [        XW5        M     f = f)Nz!Expected dict for meta_args, got r   )r1   dictr!   r   r   _TORCH_METHODS_TO_PATCHrD   rY   r   patched_torch_methodssetr   itemssetattraddr   trace_tracer_extras)r   rr   r   concrete_argsr?   r   r@   origgraphr   r   s             r   r   MetaTracer.trace'  s/   )T** #DT)_DU!VWW" 66&
6 +GE6,BCC6&
" %)%?%?%E%E%G!D/7E4)MMd# &H	+GM$6E$/#;E #'#=#=#C#C#Eiqt* $F&
 $(#=#=#C#C#Eiqt* $Fs   $DD$ $8E)r   r   r   r   r   r   )NNNr   )rh   ri   rj   rk   r   bool__annotations__r   r<   rY   r   r   nnModuler{   r   r   r5   r   r   r   rm   __classcell__)r   s   @r   r   r      s    (,,M RhJ=uxx 3 %((// c %+T#u||*;%< + +r   r   rr   .r   r   r   c                 (   [        5       nUR                  XU5      n[        U [        R                  R
                  5      (       a  U R                  R                  OU R                  n[        R                  R                  UR                  XE5      nU$ r   )r   r   r1   r   r   r   r   rh   r2   GraphModulerr   )rr   r   r   r;   r   r   gms          r   symbolic_tracer   ?  sh    
 \FLL-8E#-dEHHOO#D#D$-- 	 
		fkk5	7BIr   )F)NN)+rX   rB   r   collections.abcr   typingr   r   r   r   torch.fxr   r   r   r   r#   r)   r,   r   	Embedding	LayerNormrelu
functionalReLUwhereabsr-   r   r   rD   r2   r3   rF   rd   r`   r   Tracerr   r   r{   r   r   r   r   r   r   <module>r      s      $ ' '  KS &*  
HH*	HH-	JJ#	HH6	HHMM)	KK%	II!3 tHh./ *+& +&\
I 
.	- 		W+ W+x 48.2
#s(!33
4S%,,./0 DcN+ XX	r   