
    shE                     6   % 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Jr  S SK	r	S SK
Jr  S SK	Jr  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJrJ r   S SK!J"r"J#r#  S SK$J%r&  S SK'J(r(J)r)  S/r*\r+\r,\S\4   r-\\	R                  R\                  /\\    4   r/\	R`                  \	Rb                  \	Rd                  \	Rf                  \	Rh                  \	Rj                  \	Rl                  1r7\8\   \9S'    " S S\:5      r; " S S\5      r<g)    N)nullcontext)AnyCallableOptionalUnion)_unstack_pytree)fx)enable_python_dispatcher)NodeMetadata)
ProxyValue)
FakeTensorUnsupportedFakeTensorException)FakeTensorMode)	traceback)PythonKeyTracer)CodeGen)PassBase
PassResult)_extract_tensor_metadataTensorMetadata)_pytree)PropagateUnbackedSymIntscompute_unbacked_bindings!_ExportPassBaseDeprecatedDoNotUse._TORCH_SYM_OPSc                       \ rS rSrSrg)ExportPassBaseError-    N)__name__
__module____qualname____firstlineno____static_attributes__r       k/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/_export/pass_base.pyr   r   -   s    r%   r   c                      \ rS rSrSr\S 5       r " S S\5      r " S S\	R                  5      rS,S
 jrS\S\R                  R                  R                   S\\S4   S\\\4   S\S\4S jrS\R                  R.                  S\\   4S jrS\SS	4S jrS\S\S\S\4S jrS\\S4   S\\\4   S\S\4S jrS\S\\S4   S\S\4S jrS\S\R                  R.                  S\R                  R.                  S\\   S\S\4S jrS \R                  R.                  S!\\   S"\\   S\S\4
S# jr S$\S%\!S\S\4S& jr"S'\\   S\S\4S( jr#S\	R.                  S\\S4   S\$4S) jr%S\	R.                  S\$4S* jr&S+r'g	)-r   1   z`
Interpreter-based pass class to help users maintain the IR spec while writing
transformations.
c            	      ^    [        SSR                  [        R                  " SS95      05      $ )Nstack_trace    )limit)r   joinr   format_stackr   r%   r&   _create_dummy_node_metadata=_ExportPassBaseDeprecatedDoNotUse._create_dummy_node_metadata7   s'    ]BGGI4J4JQR4S,TUVVr%   c                      ^  \ rS rSrSSS\SS4U 4S jjrSS jrS	\S\R                  R                  4U 4S
 jjrS\R                  R                  S\SS4S jrSrU =r$ )._ExportPassBaseDeprecatedDoNotUse.ExportTracer<   callbackr   codegenreturnNc                   > [         TU ]  5         Xl        [        R                  R                  5       U l        [        R                  R                  5       U l	        U R                  R                  U5        0 U l        S U l        0 U l        g N)super__init__r5   torchnnModulerootr	   Graphgraphset_codegentensor_attrsfake_tensor_mode
submodules)selfr5   r6   	__class__s      r&   r;   7_ExportPassBaseDeprecatedDoNotUse.ExportTracer.__init__=   s`    G$M)DI)DJJJ""7+9;D>BD!:<DOr%   c                     [        S5      e)Nz%ExportTracer doesn't support trace().r   rF   s    r&   trace4_ExportPassBaseDeprecatedDoNotUse.ExportTracer.traceG   s    %&MNNr%   ac                   > [        U[        R                  R                  5      (       aQ  XR                  ;  aA  S[        U R                  5       3nU R                  R                  X!5        X R                  U'   ON[        U[        5      (       a9  [        US5      (       a  UR                  c  [        SU S35      eUR                  n[        TU ]5  U5      n[        U[        R                  5      (       an  [        U[        R                  R                   5      (       aE  UR"                  S:X  a5  U R%                  X15        U R&                  R)                  [+        X5      5        U$ )N
submodule_constantzCannot add z
 to graph.get_attr)
isinstancer<   r=   r>   rE   lenr?   
add_moduler   hasattrrQ   r   r:   
create_argTensorr	   Nodeopset_metadatar5   on_attrr   )rF   rN   name_submodulenoderG   s       r&   rW   9_ExportPassBaseDeprecatedDoNotUse.ExportTracer.create_argJ   s   !UXX__--OO+'1#doo2F1G%HNII((;)7OOA&Az**q*--1C-A3j.IJJJJ7%a(D1ell++tUXX]]33GGz)!!$*%%j&9:Kr%   r^   valuec                   ^  S[         S[        [        [        R                  [        R
                  [        R                  [        [        [        [        S 4	   4U 4S jjn[        R                  " X25      UR                  S'   S[         S[        [           4U 4S jjn[        R                  " XB5      UR                  S'   g )Nxr7   c           
        > [        U [        5      (       a  U $ [        U [        R                  5      (       a  U R                  (       a  [        R
                  " U 5      n  TR                  c   e[        U [        R                  R                  5      (       a  TR                  R                  U SS9nU$ TR                  R                  U 5      n U$ [        U [        R                  [        R                  [        R                  [        [         ["        [$        45      (       a  U $ g ! [         a    [        S5        S n U$ f = f)NT)static_shapeszvFakeifying a Tensor subclass is not supported                             right now. Instead a TensorMetadata is used.)rS   r   r<   rX   is_quantized
dequantizerD   r=   	Parameterfrom_tensorr   printSymIntSymFloatSymBoolintfloatboolstr)rb   fake_tensorrF   s     r&   make_valM_ExportPassBaseDeprecatedDoNotUse.ExportTracer.set_metadata.<locals>.make_valb   s    a,,H5<<00~~!,,Q/+#44@@@ &a););<<*.*?*?*K*K ! +L +K '& +/*?*?*K*KA*NK '&ELL%..%--QTV[]acf#ghhH : + J '+&&+s    AD' 4D' 'EEvalc                 R  > [        U [        5      (       du  [        U [        R                  5      (       aV  U R                  (       a  [        R
                  " U 5      n  TR                  c   eTR                  R                  U 5      nS nU$ g ! [         a    [        U 5      n U$ f = fr9   )
rS   r   r<   rX   re   rf   rD   rh   r   r   )rb   _tensor_metarF   s      r&   make_tensor_metaU_ExportPassBaseDeprecatedDoNotUse.ExportTracer.set_metadata.<locals>.make_tensor_meta   s    !!Z00Z5<<5P5P~~!,,Q/B#44@@@ 11==a@&*
 '& : B '?q&A&&	Bs   ,B B&%B&rw   )Argumentr   r   r<   rj   rk   rl   rm   rn   ro   rp   pytreetree_mapmetar   r   )rF   r^   r`   rr   rx   s   `    r&   r[   ;_ExportPassBaseDeprecatedDoNotUse.ExportTracer.set_metadata^   s        z5<<PSUZ\`begkkl  D  &x?DIIe H  .1I  $ (.7G'ODIIm$r%   )r5   rD   rA   r?   rE   rC   r7   N)r    r!   r"   r#   r   r;   rL   rz   r<   r	   rY   rW   r[   r$   __classcell__rG   s   @r&   ExportTracerr3   <   sp    	=%H 	=SZ 	=_c 	=	O	 	UXX]] 	(;	P;	P.6;	P;	P ;	Pr%   r   c                   `  ^  \ rS rSrSSS\R
                  SS4U 4S jjrS\S	\\	S
4   S\
\\	4   S\4U 4S jjrS\R                  R                  R                  S	\\	S
4   S\
\\	4   S\4S jrS\R                  R                  R                  S	\\	S
4   S\
\\	4   S\4S jrS\S	\\	S
4   S\
\\	4   S\	4U 4S jjrS\R                  R                  R                  S	\\	S
4   S\
\\	4   SS4S jrS\S	\\	S
4   S\
\\	4   SS4S jrS\R                  R*                  S\	4U 4S jjrSrU =r$ )3_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter   r5   r   gmr7   Nc                    > [         TU ]  U5        Xl        [        [	        UR
                  R                  5      5      U l        g r9   )r:   r;   r5   nextiterrA   nodesr^   )rF   r5   r   rG   s      r&   r;   <_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.__init__   s.    GR $M'+D,@'ADIr%   targetargs.kwargsc                    > [         TU ]  XU5      nU R                  R                  X[        U R                  R
                  5      5      $ r9   )r:   placeholderr5   r   r^   r}   )rF   r   r   r   argrG   s        r&   r   ?_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.placeholder   s:     '%fF;C==,,V,tyy~~:VWWr%   c                     U R                   R                  US   [        U R                  R                  5      5      R
                  $ )Nr   )r5   outputr   r^   r}   datarF   r   r   r   s       r&   r   :_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.output   s2     ==''Qdiinn1MNSSSr%   c                 *   [        U R                  R                  5      nU[        R                  :X  a   Uu  pVU R
                  R                  XVU5      $ [        USS 5      S;   a.  [        U5      (       d   eU R
                  R                  XU5      $ U[        ;   a.  [        U5      (       d   eU R
                  R                  XU5      $ [        U[        R                  R                  [        R                  R                  45      (       a  U R
                  R!                  UUUU5      $ U[        R"                  R$                  R&                  :X  a"  Uu  pxpU R
                  R)                  XxXU5      $ U[        R"                  R$                  R*                  :X  a!  Uu  pnU R
                  R-                  XX5      $ [        U[        R                  R.                  5      (       a  U R
                  R1                  SUUUU5      $ [3        SU 35      e)Nr!   >   mathbuiltins	_operatorcall_functionzUnsupported target type: )r   r^   r}   operatorgetitemr5   call_getitemgetattrcallablecall_symr   rS   r<   _ops
OpOverloadOpOverloadPacketcall_operatoropshigher_ordercond	call_condmap_implcall_mapHigherOrderOperator_fxr   )rF   r   r   r   r}   r`   keypredtrue_fnfalse_fninputsfmapped_argsoperandss                 r&   r   A_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.call_function   s     		/D)))!
}}11%dCCt48YY''''}}--fDAA>)''''}}--fDAAFUZZ%:%:EJJ<W<W$XYY}}22	  5991166626/x}}..thPTUU59911:::+/(}}--ahMMFEJJ$B$BCC}}((#  *,EfX*NOOr%   c                 $   > [         TU ]  XU5      $ r9   )r:   rR   )rF   r   r   r   rG   s       r&   rR   <_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.get_attr   s     7#F&99r%   c                     [        S5      e)Nzcall_module is not supported.rJ   r   s       r&   call_module?_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.call_module   s     &&EFFr%   c                     [        S5      e)Nzcall_method is not supported.rJ   r   s       r&   call_method?_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.call_method   s     &&EFFr%   nc                 l   > Xl         UR                  5       U R                  l        [        TU ]  U5      $ r9   )r^   format_noder5   node_debug_strr:   run_node)rF   r   rG   s     r&   r   <_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.run_node   s*    I+,==?DMM(7#A&&r%   )r5   r^   )r    r!   r"   r#   r	   GraphModuler;   rp   tuplerz   dictr   r   r<   r^   Targetr   r   rR   r   r   rY   r   r$   r   r   s   @r&   ExportInterpreterr      s   	B%H 	Bbnn 	Bae 	B
	X	X #&	X h'		X
 	X	THHMM((	T #&	T h'		T
 	T(	PHHMM(((	P #&(	P h'	(	P
 (	PT	:	:%*8S=%9	:CGXCV	:	:
	GHHMM((	G #&	G h'		G
 	G	G	G%*8S=%9	GCGXCV	G	G
	'ehhmm 	' 	' 	'r%   r   r7   Nc                 8   [        [        R                  R                  [        R                  R                  5       [        R                  R                  5       5      5      U l        U R                  U [        5       5      U l
        S U l        SU l        S U l        g )NT)r   r<   r	   r   r=   r>   r@   interpreterr   r   tracerrD   _initializedr   rK   s    r&   r;   *_ExportPassBaseDeprecatedDoNotUse.__init__   si    3HH  !2EHHNN4DE
 ''gi8:> 48r%   kindr   r   .r   r}   c                 *   [         R                  " [        S X445      u  pg[        U R                  U5      " X&U5      n[         R                  " [        S X445      u  pS n[        U[        R                  R                  5      (       a9  U R                  R                  R                  UR                  R                  5      nU R                  R                  XXUS9nUR                  R                   R#                  UR$                  5        U R&                  (       aG  U R&                  R(                  =n(       a*  [+        X5      =n(       a  XR                  R                   S'   U R                  R-                  UR                  U5        [        X5      $ )Nc                     U R                   $ r9   r   rb   s    r&   <lambda>7_ExportPassBaseDeprecatedDoNotUse._fx.<locals>.<lambda>  s    !&&r%   c                     U R                   $ r9   )proxyr   s    r&   r   r   	  s    !''r%   )nameunbacked_bindings)r{   tree_map_onlyr   r   r   rS   r<   r   r   r   rA   _target_to_stroverloadpacketr    create_proxyr^   r}   updater   rD   	shape_envr   r[   )rF   r   r   r   r   r}   	args_datakwargs_datares_data
args_proxykwargs_proxyr   	res_proxyr   symbol_to_paths                  r&   r   %_ExportPassBaseDeprecatedDoNotUse._fx   s:    "(!5!5(4."
	 4++T26kR#)#7#7)D>$
 
 fejj3344;;$$33F4I4I4R4RSDKK,,T:Z^,_	""499-  43H3H3R3R&Ri&R!:9!OO~O;I##$78  :(..r%   graph_modulec                 B  ^ ^ TR                   R                  SS 5      =nb  [        U5      $ S[        R                  R
                  S[        [           4UU 4S jjnTR                  R                   Vs/ s H  nUR                  S:X  d  M  U" U5      PM     sn$ s  snf )Nr   r^   r7   c                    > SU R                   ;   a;  U R                   S   n[        US5      (       a  UR                  b  UR                  $ U$ U R                   R                  S5      =n(       ax  TR                  c   e[        TR                  [        R                  " UR                  UR                  SUR                  UR                  S9[        R                  " S5      5      $ [        U R                  5      S:X  a  g [        ST S	35      e)
Nrt   rQ   rw   r}   )dtypedevicerequires_gradmemory_formatcpur   z,Cannot construct an input for graph module: .)r}   rV   rQ   getrD   r   r<   emptyshaper   r   r   r   rT   usersr   )r^   fakerw   r   rF   s      r&   extract_input?_ExportPassBaseDeprecatedDoNotUse.inputs.<locals>.extract_input  s    		!yy'4,,1J==( $		m <<<,,888!))KK#)))//%&1&?&?&1&?&? LL'
 
 TZZA%%>|nAN r%   r   )r}   r   listr<   r	   rY   r   r   rA   r   rZ   )rF   r   r   r   r^   s   ``   r&   r   (_ExportPassBaseDeprecatedDoNotUse.inputs  s     !%%))&$77DD:	 	(:2F 	 	6 %**00
0ww-'  M$0
 	
 
s   5BBattrc                     g r9   r   )rF   r   s     r&   r\   )_ExportPassBaseDeprecatedDoNotUse.on_attr=  s    r%   r   r   c                     U R                   R                  SUS0 5      nUR                  UR                  l        U R                   R                  UR                  U5        [        X$5      $ )Nr   r   )r   r   r   r^   r}   r[   r   )rF   r   r   r}   	arg_proxys        r&   r   -_ExportPassBaseDeprecatedDoNotUse.placeholder@  sO    KK,,]D"bI	"ii	  5#))r%   c                 (    U R                  SXX45      $ Nr   r   )rF   rZ   r   r   r}   s        r&   r   /_ExportPassBaseDeprecatedDoNotUse.call_operatorF  s     xx6@@r%   c                 *    U R                  SX0 U5      $ r  r  )rF   r   r   r}   s       r&   r   *_ExportPassBaseDeprecatedDoNotUse.call_symO  s     xxr4@@r%   r   r   r   r   c           
      0   U R                  U[        U5      5      nU R                  U[        U5      5      nUc   eUc   eU R                  S[        R                  R
                  R                  XR                  UR                  [        U5      40 U5      $ r  )	call_submoduler   r   r<   r   r   r   r   r   )rF   r   r   r   r   r}   true_branchfalse_branchs           r&   r   +_ExportPassBaseDeprecatedDoNotUse.call_condW  s     ))'5=A**8U6]C&&&'''xxII""''++\-F-FVU
 	
r%   r   r   r   c           
      d   [        U Vs/ s H  oUR                  PM     sn5      S   nU R                  U[        Xc Vs/ s H  oUR                  PM     sn-   5      5      nUc   eU R	                  S[
        R                  R                  R                  UR                  X#40 U5      $ s  snf s  snf )Nr   r   )
r   r   r  r   r   r<   r   r   r   r   )rF   r   r   r   r}   r   xsf_branchs           r&   r   *_ExportPassBaseDeprecatedDoNotUse.call_mapk  s     +>+3hh+>?B&&q%(5S(3hh(5S0S*TU###xxII""++""K:
 	
 ?5Ss
   B(B-r`   r   c                 J    U R                  S[        R                  X40 U5      $ r  )r   r   r   )rF   r`   r   r}   s       r&   r   ._ExportPassBaseDeprecatedDoNotUse.call_getitem}  s#     xx)9)9E<TRRr%   resultsc                 .    U R                  SSU40 U5      $ )Nr   r  )rF   r  r}   s      r&   r   (_ExportPassBaseDeprecatedDoNotUse.output  s    xx(WJDAAr%   c                 H   U R                   U R                  XR                  R                  5      so0l         UR                  U R                   l        U R                  X5      nU R                  [        R                  R                  [        R                  R                  [        R                  R                  5       [        R                  R                  5       5      5      soPl        [        R                  " [         S U5      n["        R$                  " 5          UR&                  " U6   S S S 5        [        R                  R                  U R                   R(                  U R                   R                  5      nX0l         XPl        [+        US5      $ ! , (       d  f       Nn= f)Nc                     U R                   $ r9   r   r   s    r&   r   B_ExportPassBaseDeprecatedDoNotUse.call_submodule.<locals>.<lambda>  s    r%   T)r   r   rA   _codegenrD   r   r   r<   r	   Interpreterr   r=   r>   r@   r{   r   r   fx_tracebackpreserve_node_metarunr?   r   )rF   r   r   prev_tracerr   prev_interpreterinputs_datanew_graph_modules           r&   r  0_ExportPassBaseDeprecatedDoNotUse.call_submodule  s(    $(;;0A0A$$--1
 [ (3'C'C$,,T@-1-=-=uxx?S?SHH  !2EHHNN4DE@
** **:7GP,,.OO[) / !88//0@0@$++BSBST!+
 	
 /.s   F
F!c                 n   [        U SS5      (       d  [        S5      eU R                  U5      nS nU H>  n[        U[        5      (       d  M  Ub  X4R
                  L d   S5       eUR
                  nM@     Uc-  [        SS9U R                  l        [        5       n[        5       nO!SUl
        X0R                  l        [        5       nU R                  R                  U l        U   U   U R                  U[        U5      5      nS S S 5        S S S 5        W$ ! , (       d  f       N= f! , (       d  f       W$ = f)Nr   Fz.ExportPass is not initialized with __init__().z#Multiple fake tensor mode detected.T)allow_non_fake_inputs)r   r   r   rS   r   	fake_moder   r   rD   r   r#  r
   r  r   )rF   r   r   rD   idispatcher_moderesults          r&   call&_ExportPassBaseDeprecatedDoNotUse.call  s   t^U33%@  \*A!Z(($,0@KK0O989O#$;;   #+9PT+UDKK(*})mO592+;KK(68O $ < <((uV}EF  /   / s$   #D%&DD%
D"	D%%
D4)r   rD   r   r   r   r   )(r    r!   r"   r#   __doc__staticmethodr0   r   r   r	   r  r   r;   rp   r<   r^   r   r   rz   r   r   r   r   r   r   r   r\   r   r   Fnr   r   r   rm   r   r   r   r  r(  r$   r   r%   r&   r   r   1   s   
 W W]P ]P~V'BNN V'p9// $$/ HcM"	/
 S(]#/ / 
/8#
588#7#7 #
DN #
JJ 4 * *( *, *: *A HcM"A S(]#	A
 A 
AAA HcM"A 	A
 
A

 %%
 ((&&	

 X
 
 

(
88
 *%
 z"	

 
 

$SS&)S1=S	S
Bd8n BL BZ B
NN
49(C-4H
	
0 J r%   )=r   r   typing
contextlibr   r   r   r   r   r<   #functorch.experimental.control_flowr   r	   torch._dispatch.pythonr
   &torch._export.pass_infra.node_metadatar   $torch._export.pass_infra.proxy_valuer   torch._subclassesr   r   torch._subclasses.fake_tensorr   torch.fxr  "torch.fx.experimental.proxy_tensorr   torch.fx.graphr   torch.fx.passes.infra.pass_baser   r   torch.fx.passes.shape_propr   r   torch.utilsr   r{   %torch.fx.experimental.symbolic_shapesr   r   __all__rz   Valuer,  r   PassTypesym_int	sym_floatsym_itesym_maxsym_minsym_notsym_sqrtr   set__annotations__RuntimeErrorr   r   r   r%   r&   <module>rI     s       " 1 1  ?  ; ? ; H 8 . > " @ O ) e /
/ c3hUXX))*HZ,@@A 
MM	OO	MM	MM	MM	MM	NN!H 	, 	H Hr%   