
    3j]J                     .   % S SK r S SKrS SKJr  S SKJr  S SK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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/r)\r*\r+\S\4   r,\\R                  RZ                  /\"S-  4   r.\R^                  \R`                  \Rb                  \Rd                  \Rf                  \Rh                  \Rj                  1r6\7\   \8S'    " S S\95      r: " S S\!5      r;g)    N)Callable)nullcontext)Any)fx)enable_python_dispatcher)NodeMetadata)
ProxyValue)_unstack_pytree)
FakeTensorUnsupportedFakeTensorException)FakeTensorMode)	traceback)PythonKeyTracer)compute_unbacked_bindingsPropagateUnbackedSymInts)CodeGen)PassBase
PassResult)_extract_tensor_metadataTensorMetadata)_pytree!_ExportPassBaseDeprecatedDoNotUse._TORCH_SYM_OPSc                       \ rS rSrSrg)ExportPassBaseError0    N)__name__
__module____qualname____firstlineno____static_attributes__r       Q/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_export/pass_base.pyr   r   0   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   4   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_metadata:   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__r3   torchnnModulerootr   Graphgraphset_codegentensor_attrsfake_tensor_mode
submodules)selfr3   r4   	__class__s      r$   r9   7_ExportPassBaseDeprecatedDoNotUse.ExportTracer.__init__?   sb     G$M)DI)DJJJ""7+9;D;?D!:<DOr#   c                     [        S5      e)Nz%ExportTracer doesn't support trace().r   rD   s    r$   trace4_ExportPassBaseDeprecatedDoNotUse.ExportTracer.traceK   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<   rC   lenr=   
add_moduler   hasattrrO   r   r8   
create_argTensorr   Nodeopset_metadatar3   on_attrr	   )rD   rL   name_submodulenoderE   s       r$   rU   9_ExportPassBaseDeprecatedDoNotUse.ExportTracer.create_argN   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U 4S jjn[        R                  " X25      UR                  S'   S[         S[        S -  4U 4S jjn[        R                  " XB5      UR                  S'   g )Nxr5   c           
        > [        U [        5      (       a  U $ [        U [        R                  5      (       a  U R                  (       a  [        R
                  " U 5      n  TR                  c  [        S5      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)N!fake_tensor_mode must not be NoneT)static_shapeszvFakeifying a Tensor subclass is not supported                             right now. Instead a TensorMetadata is used.)rQ   r   r:   rV   is_quantized
dequantizerB   AssertionErrorr;   	Parameterfrom_tensorr   printSymIntSymFloatSymBoolintfloatboolstr)r`   fake_tensorrD   s     r$   make_valM_ExportPassBaseDeprecatedDoNotUse.ExportTracer.set_metadata.<locals>.make_valh   s,    a,,H5<<00~~!,,Q/+008"01T"UU &a););<<*.*?*?*K*K ! +L +K '& +/*?*?*K*KA*NK '&  H/ : + J '+&&+s    AD0 =D0 0E
Evalc                 d  > [        U [        5      (       d~  [        U [        R                  5      (       a_  U R                  (       a  [        R
                  " U 5      n  TR                  c  [        S5      eTR                  R                  U 5      nS nU$ g ! [         a    [        U 5      n U$ f = f)Nrb   )rQ   r   r:   rV   rd   re   rB   rf   rh   r   r   )r`   _tensor_metarD   s      r$   make_tensor_metaU_ExportPassBaseDeprecatedDoNotUse.ExportTracer.set_metadata.<locals>.make_tensor_meta   s    !!Z00Z5<<5P5P~~!,,Q/B008"01T"UU 11==a@&*
 '& : B '?q&A&&	Bs   5B B/.B/rw   )Argumentr   r:   rj   rk   rl   rm   rn   ro   rp   pytreetree_mapmetar   )rD   r\   r^   rr   rx   s   `    r$   rY   ;_ExportPassBaseDeprecatedDoNotUse.ExportTracer.set_metadatab   s    6 6  ,,..! --  	
    6 p  &x?DIIe H  $1F  & (.7G'ODIIm$r#   )r3   rB   r?   r=   rC   rA   r5   N)r   r   r    r!   r   r9   rJ   rz   r:   r   rW   rU   rY   r"   __classcell__rE   s   @r$   ExportTracerr1   >   sy    
	=?
	=JQ
	=
	=	O	 	UXX]] 	(T	P((--T	P T	P 	T	P T	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   r3   r   gmr5   Nc                    > [         TU ]  U5        Xl        [        [	        UR
                  R                  5      5      U l        g r7   )r8   r9   r3   nextiterr?   nodesr\   )rD   r3   r   rE   s      r$   r9   <_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.__init__   s0     GR $M'+D,@'ADIr#   targetargs.kwargsc                    > [         TU ]  XU5      nU R                  R                  X[        U R                  R
                  5      5      $ r7   )r8   placeholderr3   r   r\   r}   )rD   r   r   r   argrE   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   )r3   outputr   r\   r}   datarD   r   r   r   s       r$   r   :_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.output   s2     ==''Qdiinn1MNSSSr#   c                 T   [        U R                  R                  5      nU[        R                  L a   Uu  pVU R
                  R                  XVU5      $ [        USS 5      S;   a:  [        U5      (       d  [        SU 35      eU R
                  R                  XU5      $ U[        ;   a:  [        U5      (       d  [        SU 35      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(                  L a"  Uu  pxpU R
                  R+                  XxXU5      $ U[        R$                  R&                  R,                  L a!  Uu  pnU R
                  R/                  XX5      $ [        U[        R                  R0                  5      (       a  U R
                  R3                  SUUUU5      $ [5        SU 35      e)Nr   >   mathbuiltins	_operatorzexpected callable target, got call_functionzUnsupported target type: )r   r\   r}   operatorgetitemr3   call_getitemgetattrcallablerf   call_symr   rQ   r:   _ops
OpOverloadOpOverloadPacketcall_operatoropshigher_ordercond	call_condmap_implcall_mapHigherOrderOperator_fxr   )rD   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4 9 
  ''(+I&)RSS}}--fDAA>)''(+I&)RSS}}--fDAA..

0K0KL  }}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      $ r7   )r8   rP   )rD   r   r   r   rE   s       r$   rP   <_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.get_attr  s     7#F&99r#   c                     [        S5      e)Nzcall_module is not supported.rH   r   s       r$   call_module?_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.call_module       &&EFFr#   c                     [        S5      e)Nzcall_method is not supported.rH   r   s       r$   call_method?_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.call_method  r   r#   nc                 l   > Xl         UR                  5       U R                  l        [        TU ]  U5      $ r7   )r\   format_noder3   node_debug_strr8   run_node)rD   r   rE   s     r$   r   <_ExportPassBaseDeprecatedDoNotUse.ExportInterpreter.run_node  s*    I+,==?DMM(7#A&&r#   )r3   r\   )r   r   r    r!   r   GraphModuler9   rp   tuplerz   dictr	   r   r:   r\   Targetr   r   rP   r   r   rW   r   r"   r   r   s   @r$   ExportInterpreterr      s   	B?	BEG^^	B	B	X	X #&	X h'		X
 	X	THHMM((	T #&	T h'		T
 	T0	PHHMM((0	P #&0	P h'	0	P
 0	Pd	:	: #&	: h'		:
 	:	GHHMM((	G #&	G h'		G
 	G	G	G #&	G h'		G
 	G	'ehhmm 	' 	' 	'r#   r   r5   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   tracerrB   _initializedr   rI   s    r$   r9   *_ExportPassBaseDeprecatedDoNotUse.__init__!  si    3HH  !2EHHNN4DE
 ''gi87; *.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                   $ r7   r   r`   s    r$   <lambda>7_ExportPassBaseDeprecatedDoNotUse._fx.<locals>.<lambda>3  s    !&&r#   c                     U R                   $ r7   )proxyr   s    r$   r   r   7  s    !''r#   )nameunbacked_bindings)r{   tree_map_onlyr	   r   r   rQ   r:   r   r   r   r?   _target_to_stroverloadpacketr   create_proxyr\   r}   updater   rB   	shape_envr   rY   )rD   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,,* - 
	 	""499-  43H3H3R3R&Ri&R!:9!OO~O;I##$78  :(..r#   graph_modulec                 :  ^ ^ TR                   R                  SS 5      =nb  [        U5      $ S[        R                  R
                  S[        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\   r5   c                 2  > SU R                   ;   a;  U R                   S   n[        US5      (       a  UR                  b  UR                  $ U$ U R                   R                  S5      =n(       a  TR                  c  [        S5      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   rO   rw   rb   r}   )dtypedevicerequires_gradmemory_formatcpur   z,Cannot construct an input for graph module: .)r}   rT   rO   getrB   rf   r   r:   emptyshaper   r   r   r   rR   usersr   )r\   fakerw   r   rD   s      r$   extract_input?_ExportPassBaseDeprecatedDoNotUse.inputs.<locals>.extract_inputN  s    		!yy'4,,1J==( $		m <<<((0()LMM!))KK#)))//%&1&?&?&1&?&? LL'
 
 TZZA%%>|nAN r#   r   )
r}   r   listr:   r   rW   r   r?   r   rX   )rD   r   r   r   r\   s   ``   r$   r   (_ExportPassBaseDeprecatedDoNotUse.inputsH  s     !%%))&$77DD:	 	*t2C 	 	8 %**00
0ww-'  M$0
 	
 
s   1B	Battrc                     g r7   r   )rD   r   s     r$   rZ   )_ExportPassBaseDeprecatedDoNotUse.on_attrn  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}   rY   r	   )rD   r   r   r}   	arg_proxys        r$   r   -_ExportPassBaseDeprecatedDoNotUse.placeholderq  sO    KK,,]D"bI	"ii	  5#))r#   c                 (    U R                  SXX45      $ Nr   r   )rD   rX   r   r   r}   s        r$   r   /_ExportPassBaseDeprecatedDoNotUse.call_operatorw  s     xx6@@r#   c                 *    U R                  SX0 U5      $ r  r  )rD   r   r   r}   s       r$   r   *_ExportPassBaseDeprecatedDoNotUse.call_sym  s     xxr4@@r#   r   r   r   r   c           
      T   U R                  U[        U5      5      nU R                  U[        U5      5      nUc  [        S5      eUc  [        S5      eU R                  S[        R
                  R                  R                  XR                  UR                  [        U5      40 U5      $ )Nztrue_branch must not be Nonezfalse_branch must not be Noner   )
call_submoduler   rf   r   r:   r   r   r   r   r   )rD   r   r   r   r   r}   true_branchfalse_branchs           r$   r   +_ExportPassBaseDeprecatedDoNotUse.call_cond  s     ))'5=A**8U6]C !?@@ !@AAxxII""''++\-F-FVU
 	
r#   r   r   r   c           
      v   [        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  [	        S5      eU R                  S[        R                  R                  R                  UR                  X#40 U5      $ s  snf s  snf )Nr   zf_branch must not be Noner   )r
   r   r	  r   rf   r   r:   r   r   r   r   )rD   r   r   r   r}   r   xsf_branchs           r$   r   *_ExportPassBaseDeprecatedDoNotUse.call_map  s     +>+3hh+>?B&&q%(5S(3hh(5S0S*TU !<==xxII""++""K:
 	
	 ?5Ss
   B1B6r^   r   c                 J    U R                  S[        R                  X40 U5      $ r  )r   r   r   )rD   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  )rD   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                   $ r7   r   r   s    r$   r   B_ExportPassBaseDeprecatedDoNotUse.call_submodule.<locals>.<lambda>  s    r#   T)r   r   r?   _codegenrB   r   r   r:   r   Interpreterr   r;   r<   r>   r{   r   r	   fx_tracebackpreserve_node_metarunr=   r   )rD   r   r   prev_tracerr   prev_interpreterinputs_datanew_graph_modules           r$   r	  0_ExportPassBaseDeprecatedDoNotUse.call_submodule  s,    KKd$6$6$?$?@ 	![ (3'C'C$,,T@ HH  $$UXX__%68HI 	+* **:7GP,,.OO[) / !88//0@0@$++BSBST!+
 	
 /.s   F
F!c                 v   [        U SS5      (       d  [        S5      eU R                  U5      nS nU HB  n[        U[        5      (       d  M  Ub  X4R
                  La  [        S5      eUR
                  nMD     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   rQ   r   	fake_moderf   r   r   rB   r   r$  r   r	  r   )rD   r   r   rB   idispatcher_moderesults          r$   call&_ExportPassBaseDeprecatedDoNotUse.call  s
   t^U33%@  \*A!Z((#/4DKK4W()NOO#$;; 	 
 #+9PT+UDKK(*})mO592+;KK(68O $ < <((uV}EF  /   / s$   'D)*DD)
D&	"D))
D8)r   rB   r   r   r   r   )(r   r   r    r!   __doc__staticmethodr.   r   r   r   r  r   r9   rp   r:   r\   r   r   rz   r   r   r	   r   r   r   r   rZ   r   r   Fnr   r   r   rm   r   r   r   r	  r)  r"   r   r#   r$   r   r   4   s   
 W WxP xPtg'BNN g'R/// $$/ HcM"	/
 S(]#/ / 
/<$
588#7#7 $
DN $
L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
	
: J r#   )<r   r   collections.abcr   
contextlibr   typingr   r:   r   torch._dispatch.pythonr   &torch._export.pass_infra.node_metadatar   $torch._export.pass_infra.proxy_valuer	   torch._higher_order_ops.mapr
   torch._subclassesr   r   torch._subclasses.fake_tensorr   torch.fxr  "torch.fx.experimental.proxy_tensorr   %torch.fx.experimental.symbolic_shapesr   r   torch.fx.graphr   torch.fx.passes.infra.pass_baser   r   torch.fx.passes.shape_propr   r   torch.utilsr   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>rK     s      $ "    ; ? ; 7 H 8 . > # @ O ) /
/ c3hUXX))*J,==> 
MM	OO	MM	MM	MM	MM	NN!H 	, 	} }r#   