
    [Thr                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
JrJr  SSKrSSKJr  SSKJs  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S	K!J"r"J#r#  SS
K$J%r%  SSK&J'r'J(r(J)r)J*r*  SSKJ+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9J:r:  SSK;J<r<J=r=J>r>  \(       a  SSK?J@r@   " S S5      rA " S S\55      rB " S S\55      rC " S S\55      rD " S S\D5      rE " S S\55      rF " S S \55      rG " S! S"\55      rHS# rI " S$ S%\55      rJ\R                   " S& S'5      5       rL " S( S)\>5      rM " S* S+\>5      rN " S, S-\55      rO " S. S/\55      rP " S0 S1\55      rQ " S2 S3\55      rR " S4 S5\55      rS " S6 S7\55      rT\R                  " SS89S9 5       rV\R                  " SS89S: 5       rW " S; S<\55      rX " S= S>\55      rY " S? S@\55      rZ " SA SB\55      r[ " SC SD\55      r\ " SE SF\55      r] " SG SH\55      r^ " SI SJ\^5      r_ " SK SL\^5      r` " SM SN\^5      ra " SO SP\^5      rb " SQ SR\^5      rc\R                  \b\R                  \b\R                  \c0rg " SS ST\55      rh " SU SV\55      ri " SW SX\55      rjg)Ya  
This module contains miscellaneous variable tracker implementations for various Python types
and features used in Dynamo's symbolic execution. These classes help track and propagate
information about different kinds of variables during graph capture.

Key classes include:
- SuperVariable: Handles super() calls and method resolution
- ExceptionVariable: Tracks exception objects
- RandomVariable: Manages random number generators
- GetAttrVariable: Tracks attribute access
- MethodWrapperVariable: Handles method wrappers
- PythonModuleVariable: Tracks Python modules
- NumpyVariable: Handles numpy functions and types
- StringFormatVariable: Manages string formatting
- DebuggingVariable: Handles print and logging
    N)OptionalTYPE_CHECKING   )config	variables)create_call_functioncreate_instruction)$do_not_convert_to_tracable_parameter)raise_observed_exceptionunimplemented)GuardBuilderinstall_guard)unpatched_nn_module_init)
AttrSourceGetItemSource
TypeSourceWeakRefCallSource)	check_unspec_or_constant_argscmp_name_to_op_mappingidentityis_tensor_base_attr_getteristypelist_methodsproxy_args_kwargsset_example_valuetuple_methods   )VariableTracker)ConstantVariable)NestedUserFunctionVariableUserFunctionVariable)call_random_fnis_standard_setattrUserDefinedObjectVariable)InstructionTranslatorc                       \ rS rSrSrg)NO_SUCH_SUBOBJ?    N)__name__
__module____qualname____firstlineno____static_attributes__r)       T/var/www/auris/envauris/lib/python3.13/site-packages/torch/_dynamo/variables/misc.pyr'   r'   ?   s    r/   r'   c                      ^  \ rS rSr1 \R
                  krSSU 4S jjjrU 4S jrSU 4S jjrSSS\	SS	4S
 jr
      SS jrSrU =r$ )SuperVariableC   returnc                 >   > [         TU ]  " S0 UD6  Xl        X l        g Nr)   )super__init__typevarobjvar)selfr9   r:   kwargs	__class__s       r0   r8   SuperVariable.__init__H   s!    "6" 
 r/   c                   >^ TR                  UU4S j5        T" U R                  5        U R                  b.  T" U R                  5        TR                  [	        SS5      5        g TR                  [	        SS5      5        g )Nc                  D   > T" [         R                  " [        5      5      $ N)r   BuiltinVariabler7   )r=   codegens   r0   <lambda>+SuperVariable.reconstruct.<locals>.<lambda>U   s    gi.G.G.N&Or/   r   Fr   )add_push_nullr9   r:   extend_outputr   )r;   rC   r=   s    `r0   reconstructSuperVariable.reconstructT   s`    OP;;"DKK !!"6q%"@A!!"6q%"@Ar/   txr%   c           	      :  > U R                   (       d   S5       eU R                  R                  5       nU R                   R                  5       nU R                   R                  (       a  [        U R                   R                  5      OS n[        U[        5      (       a,  U R                   R                  nU R                   R                  nS nUR                  n UR                  U5      S-   n[        U[        U5      5       Hc  n	Xy   R                   R#                  U[$        5      =n
(       d  M.  U
[$        Ld  M9  U(       a   ['        [)        ['        US5      U	5      U5      nX4s  $    [+        S5        g ! [         a    [        [        X45      U5      S 4s $ f = f)Nz1-arg super not implementedr   __mro__zUnable to resolve super getattr)r:   r9   as_python_constantpython_typesourcer   
issubclasstypevaluerL   index
ValueErrorgetattrr7   rangelen__dict__getr'   r   r   r   )r;   rJ   namesearch_typetype_to_usetype_to_use_sourcerO   
search_mrostart_indexrS   resolved_getattrr=   s              r0   _resolved_getattr_and_source*SuperVariable._resolved_getattr_and_source]   sc   {{999{ll557 kk--/.2kk.@.@Jt{{))*d 	 k4((++++K!%!3!3 ((
	H$**;7!;K ;J8E#-#4#=#=#A#A$#WWW#>9)!+) *+=y I5 !	" ,33 9 	78+  	H 5:DA4GG	Hs   E6 6!FFrZ   r   c                    U R                  X5      u  p4[        R                  R                  U5      (       d  [	        X5      $ U(       a(  [        UR                  [        R                  5      5        [        R                  R                  X4S9$ )NrO   )
ra   r   r   
is_literalGetAttrVariabler   
make_guardr   CONSTANT_MATCHcreate)r;   rJ   rZ   rR   rO   s        r0   var_getattrSuperVariable.var_getattr   sn     99$E))44U;;"4..&++L,G,GHI))000FFr/   c                 ^   U R                  X5      u  pVU[        R                  L a  [        [        5      $ U[
        R                  R                  R                  L a  U R                  nSSK	J
n  [        U[        R                  5      (       at  [        UR                  U5      (       aY  U(       dR  U(       dK  [        5          [        R                   " ["        US9R%                  XR                  /U-   U5      sS S S 5        $ ['        S5        GOU R                  R(                  (       a  [+        US5      (       a  UR,                  S:X  a  [        R.                  R1                  U5      (       aw  UR2                  n	[+        U	S5      (       a'  U	R4                  S:X  a  [        R6                  " U	5      n
O UR8                  n[        R.                  " XS9n
U
R;                  USX45      $ [        U[<        5      (       aX  [        UR>                  [@        RB                  5      (       a/  [        R                   " UR>                  US9R%                  XU5      $ [        U[D        5      (       ac  [        UR>                  [@        RB                  5      (       a:  [        RF                  " UR>                  U R                  US9R%                  XU5      $ [        U[@        RB                  5      (       a2  [        R                   " XVS9R%                  XR                  /U-   U5      $ [        U[@        RH                  5      (       a:  [        RF                  " UR>                  U R                  US9R%                  XU5      $ [K        U5      (       a?  [        U R                  [        5      (       a   U R                  RL                  " U/UQ70 UD6$ U[        RN                  L a  US	   n URQ                  5       nURT                  R                  RW                  U R                  5      (       d  ['        SU R                   SU S35        URT                  R                  RY                  U R                  U[        RZ                  " 5       5        [        R\                  " S 5      $ [        U R                  [        R^                  5      (       a?  XPR                  R`                  ;   a&  U R                  Rb                  R;                  XX45      $ [        U R                  [        Rd                  5      (       a0  U[f        ;   a&  U R                  Rh                  R;                  XX45      $ [        U R                  [        Rj                  5      (       a0  U[l        ;   a&  U R                  Rn                  R;                  XX45      $ U[        Rp                  L Ga  US	   Rr                  nURT                  R                  Ru                  U R                  U5      (       a`  URT                  R                  Rw                  U R                  USS9n[        U[        RZ                  5      (       a  [y        [z        U5        U$  U R                  Rr                  Rq                  U5      nU R(                  =(       a    [}        U R(                  U5      n[~        R                  " UWU5      $ ['        SU 35        g ! , (       d  f       N= f! [R         a    ['        S
U 35         GNf = f! [z         a    [y        [z        U5         Nf = f)Nr   )AttributeMutationNewrd   zsuper() nn.Module.__init__r*   __new__r+   builtinsr   znon-const delattr attr: zdelattr(, z, ...)T)
deleted_okznon-function or method super: )Ara   objectr8   LambdaVariabler   torchnnModuler:   side_effectsrm   
isinstancer   r$   mutation_typer
   r!   r   call_functionr   rO   hasattrr*   UserDefinedClassVariableis_supported_new_method__self__r+   rB   membercall_methodstaticmethod__func__typesFunctionTypeclassmethodUserMethodVariable
MethodTyper#   method_setattr_standard__delattr__rM   NotImplementedErroroutputis_attribute_mutation
store_attrDeletedVariabler   UserDefinedDictVariable_dict_methods_dict_vtUserDefinedTupleVariabler   	_tuple_vtUserDefinedListVariabler   _list_vt__getattribute__rR   has_pending_mutation_of_attr	load_attrr   AttributeErrorr   r   build)r;   rJ   rZ   argsr<   inner_fnrO   r:   rm   user_clsuser_cls_vtuser_cls_sourceattr	attr_nameresult
attr_values                   r0   r   SuperVariable.call_method   s     <<THv&!(++111[[F; 69#F#FGGv335IJJ9;$990#mB(<fE <;
 :;KK*--!!Y.22JJ8TT((Hx..83F3F*3T'77A"(--'@@ **2y$GG,//Ju115
 5
 11!!&mBf-. +..:u114
 4
 //!!4;;vmBf-. %"4"45511mB 4f=> %"2"233//!!4;;vmBf-. !**zKK20
 0
 ;;66rKDKFKK+++7DA..0 99))??LLRvVDEII""--T9#<#<#> --d33t{{I$E$EFFKK555;;''33BdKKt{{I$F$FGGM);;((44RtLLt{{I$E$EFFL(;;''33BdKK000 QIyy%%BBY  //99KKt :  fi&?&?@@,^R@=![[..??	J
 [[GZY%GF"((Z@@6xjAB <;b ' A 8?@AP " =(<=s0   7[[0 *%\ 
[-0\\\,+\,)r:   r9   rA   r4   NrJ   r%   r   list[VariableTracker]r<   dict[str, VariableTracker]r4   r   )r*   r+   r,   r-   r   _nonvar_fieldsr8   rH   ra   strrj   r   r.   __classcell__r=   s   @r0   r2   r2   C   s    		'	'N
 
B-9^G5 GS GEV G rC &	rC
 -rC 
rC rCr/   r2   c                   z   ^  \ rS rSrSU 4S jjrSS jrS rS rSSS\S	\4S
 jr	U 4S jr
U 4S jrS r\rSrU =r$ )ExceptionVariablei  c                    > [         TU ]  " S0 UD6  Xl        X l        [	        S 5      U l        [	        S 5      U l        [	        S5      U l        [	        S 5      U l        g )NFr)   )	r7   r8   exc_typer   r   __context__	__cause____suppress_context____traceback__)r;   r   r   r<   r=   s       r0   r8   ExceptionVariable.__init__  sV    "6" 	 ,D1 *$/$4U$;! .d3r/   c                     Xl         g rA   )r   )r;   contexts     r0   set_contextExceptionVariable.set_context$  s    "r/   c                   ^ ^ TR                  UU 4S j5        TR                  T R                  5        TR                  [	        T R                  5      S5        S[
        SS 4UU 4S jjnU" S5        U" S5        U" S5        g )	Nc                  P   > T R                  STR                  R                  5      $ )Nro   )load_import_fromr   r*   rC   r;   s   r0   rD   /ExceptionVariable.reconstruct.<locals>.<lambda>)  s    G,,Z9O9OPr/   FrZ   r4   c                 
  > [        TU 5      n[        U[        5      (       a  UR                  S;   d   U5       eg TR	                  5         T" U5        TR                  TR                  S5      5        TR                  U 5        g )N)TFNr   )rU   r   r   rR   dup_toprG   rot_nr   )rZ   r   rC   r;   s     r0   codegen_attr3ExceptionVariable.reconstruct.<locals>.codegen_attr.  sk    4&Dd,--zz%88>$>8!%%gmmA&67""4(r/   r   r   r   )rF   foreachr   rz   rW   r   )r;   rC   r   s   `` r0   rH   ExceptionVariable.reconstruct'  sq    P	
 			"c$))ne4	)s 	)t 	) 	) 	]#[!+,r/   c                     U R                   $ rA   )r   r;   s    r0   rN   ExceptionVariable.python_type<  s    }}r/   rJ   r%   name_varvalc                   ^ U4S jnUR                  5       nUS:X  a  U R                  U5        GO/US:X  a  [        U[        5      (       a  UR                  bM  [        U[
        R                  [
        R                  [
        R                  [
        R                  45      (       a"  X0l
        [
        R                  " S5      U l        OU" S5        OUS:X  a5  [        U[        5      (       a  UR                  S;   a  X0l        O]U" S5        OTUS:X  a<  [        U[        5      (       a  UR                  c  X0l        O%[        S	U S
U S35        O[        S	U S
U S35        [
        R                  " S 5      $ )Nc                 8   > [        [        T[        U 5      /S9  g )N)r   )r   	TypeErrorr   )msgrJ   s    r0   raise_error3ExceptionVariable.call_setattr.<locals>.raise_errorE  s    $Y:J3:O9PQr/   r   r   Tz9exception cause must be None or derive from BaseExceptionr   )TFr   zsetattr(ExceptionVariable, rp   ))rM   r   rx   r   rR   r   rB   r   !UserDefinedExceptionClassVariable"UserDefinedExceptionObjectVariabler   r   r   r   )r;   rJ   r   r   r   rZ   s    `    r0   call_setattrExceptionVariable.call_setattr?  sB   	R **,= S![ 3 011cii6GJ--//??@@	M M "%,5,F,Ft,L)WX++#/00SYY-5O,/)WX_$#/00SYY5F%(" ;H:RuANO7zC5JK))$//r/   c                    > US:X  a  U R                   " U/UQ76 $ US:X  a"  Uu  nU R                  U[        S5      U5        U $ [        TU ]  XX45      $ )N__setattr__with_tracebackr   )r   r   r7   r   )r;   rJ   rZ   r   r<   tbr=   s         r0   r   ExceptionVariable.call_methodg  s`    = $$R/$//%%DRb"2?"CRHK7&r>>r/   c                 $  > US:X  a  U R                   $ US:X  a  U R                  $ US:X  a  U R                  $ US:X  a  [        R                  " S 5      $ US:X  a)  [        R
                  " U R                  U R                  S9$ [        TU ]%  X5      $ )Nr   r   r   r   r   rd   )
r   r   r   r   r   ListVariabler   rO   r7   rj   )r;   rJ   rZ   r=   s      r0   rj   ExceptionVariable.var_getattrq  s    = ###[ >>!++,,,_$--d33V^))$))DKKHHw"2,,r/   c                 N    U R                   R                   SU R                   S3$ )N(r   )r=   r*   r   r   s    r0   __str__ExceptionVariable.__str__~  s$    ..))*!DMM?!<<r/   )r   r   r   r   r   r   r   )r   r   )r*   r+   r,   r-   r8   r   rH   rN   r   r   r   rj   r   __repr__r.   r   r   s   @r0   r   r     sO    4"#-*&0#&0 "&0 	&0P?-= Hr/   r   c                       \ rS rSrSrSrg)UnknownVariablei  z
It could be anything!
r)   Nr*   r+   r,   r-   __doc__r.   r)   r/   r0   r   r         r/   r   c                       \ rS rSrSrSrg)DelayGraphBreakVariablei  zV
Used to insert a dummy variable in the stack to do the graph break at CALL_FUNCTION.
r)   Nr   r)   r/   r0   r   r     r   r/   r   c                   N    \ rS rSrSrS rSSS\SS4S	 jr        SS
 jrSr	g)ComptimeVariablei  zU
This variable is special, it lets you execute arbitrary code at
Dynamo compile time
c                     [        S5      e)Nzcomptime is special form)r   r;   rC   s     r0   rH   ComptimeVariable.reconstruct  s    !"<==r/   rJ   r%   rZ   r4   r   c                 b    SSK J n  SSKJn  U" [        X25      [	        U R
                  U5      S9$ )Nr   )comptimer   )r!   rd   )r   	functionsr!   rU   r   rO   )r;   rJ   rZ   r   r!   s        r0   rj   ComptimeVariable.var_getattr  s,    ' 	4#H#Jt{{D,I
 	
r/   c                    SSK Jn  U(       a   e[        U5      S::  d   eUS   n[        U[        5      (       a  UR                  5       " U" U5      5        O[        U[        5      (       a  UR                  5       nUR                  (       a   SUR                   35       e[        R                  " UUR                  UR                  R                  5       UR                  (       a  [!        UR                  R"                  5      OS S5      nU" U" U5      5        O[%        S['        U5       35      e[(        R*                  R-                  S 5      $ )Nr   )ComptimeContextr   zOcomptime function must not have free variables, but these variables were free: r)   z"unsupported argument to comptime: )r   r   rW   rx   r!   get_functionr    get_codeclosureco_freevarsr   r   	f_globalsfn_namerM   defaultstupleitemsRuntimeErrorrQ   r   r   ri   )r;   rJ   r   r<   r   fncodefuncs           r0   rz   ComptimeVariable.call_function  s    	/ z4yA~~!Wb.//OOob12677;;=Dzz 2262B2B1CE> %%

--/,.KKbkk''(T D $%!CDH:NOO))0066r/   r)   NrJ   r%   r   r   r<   r   r4   r   )
r*   r+   r,   r-   r   rH   r   rj   rz   r.   r)   r/   r0   r   r     sS    
>
5 
S 
EV 
'7#'7 &'7 -	'7
 
'7r/   r   c                   f   ^  \ rS rSr% \\   \S'   Sr\\   \S'    SS\\   SS4U 4S jjjr	Sr
U =r$ )	CellVariablei  pre_existing_contentsN
local_namer4   c                 2   > [         TU ]  " S0 UD6  Xl        g r6   )r7   r8   r  )r;   r  r<   r=   s      r0   r8   CellVariable.__init__  s     	"6"%:"r/   )r  rA   )r*   r+   r,   r-   r   r   __annotations__r  r   r8   r.   r   r   s   @r0   r  r    sF     $O44 !%J$ BF;%-o%>;	; ;r/   r  c                   ,   ^  \ rS rSrSU 4S jjrSrU =r$ )NewGlobalVariablei  c                 &   > [         TU ]  " S0 UD6  g r6   r7   r8   r;   r<   r=   s     r0   r8   NewGlobalVariable.__init__      "6"r/   r)   r   )r*   r+   r,   r-   r8   r.   r   r   s   @r0   r  r    s    # #r/   r  c                 *   ^  U 4S jn[         Ul        U$ )Nc                  (   > TR                   " U 0 UD6$ rA   )apply)r   r<   fn_clss     r0   trampoline_autograd_applyDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_apply  s    ||T,V,,r/   )!produce_trampoline_autograd_apply_origin)r  r  s   ` r0   r  r    s    - )J%$$r/   c                   ~   ^  \ rS rSrSrS1\R                  krS
U 4S jjrSS jrSS jr	SS jr
    SS jrS	rU =r$ )AutogradFunctionVariablei  z-represents a torch.autograd.Function subclassr  c                 2   > [         TU ]  " S0 UD6  Xl        g r6   )r7   r8   r  )r;   r  r<   r=   s      r0   r8   !AutogradFunctionVariable.__init__  s    "6"r/   c           
        ^^ SmUU4S jn[         R                  " XBU45        T(       Gam  [        R                  " 5       (       GaR  [        R
                  SL a  [        R                  " S5        SSKJ	n  SSK
Jn  U R                  R                  nU" U R                  R                  5      nU(       a1  U" U R                  R                  U R                  R                  5      nU R                  R                  n	U	[        R                   R"                  R                  La  [%        S5        U R                  R&                  n
U
[        R                   R"                  R&                  La  [%        S5        S	S
KJn  U R,                  nUcC  [/        TR1                  U R                  R2                  5      U R                  R4                  5      nU" UU R                  R6                  U[/        USS9S9R9                  TX#5      nU R,                  (       a  [/        U R,                  S5      n[;        UR=                  [>        R@                  5      5        U(       a>  [/        U R,                  S5      n[;        UR=                  [>        R@                  5      5        U$ U R,                  (       a  [/        U R,                  S5      nOS nU R                  R                  n[B        RE                  TX#5      nU/UQn[G        U[H        RJ                  5      (       ae  [L        RN                  " U5      n[Q        U5      S	-
  [Q        URR                  5      :X  a  US	S  n[T        RV                  " UUS9R9                  TX#5      $ [G        U[H        RX                  5      (       aN  [T        RZ                  " UR\                  [T        R^                  " U R                  5      US9R9                  TX#5      $ [%        SU 35        g )NFc                    > [        U [        R                  5      (       a  U R                  SLa  Sm[        U [        R                  5      (       a  U R                  T5      (       a  Smg g g )NFT)rx   r   TensorVariablerequires_gradNNModuleVariableis_training)noder"  rJ   s    r0   visit2AutogradFunctionVariable.call_apply.<locals>.visit  s\    $	 8 899%%U2$(M$	 : :;;##B''$(M ( <r/   zNThe config.capture_autograd_function flag is deprecated, it's now always true.r   )#autograd_function_forward_rewritten)_is_setup_context_definedzNYI - User defind vjpzNYI - User defind jvpr   )AutogradFunctionApplyVariabler  )r   rd   forwardsetup_contextz?non-function or method in subclass of torch.autograd.Function: )0r   r&  rt   is_grad_enabledr   capture_autograd_functionwarningswarn"torch._functorch.autograd_functionr(  torch.autograd.functionr)  r  r+  r,  vjpautogradFunctionr   jvphigher_order_opsr*  rO   r   import_sourcer+   r*   backwardrz   r   rg   r   FUNCTION_MATCHAutogradFunctionContextVariableri   rx   r   r   inspect	signaturerW   _parametersr   r!   r   r   r   r|   )r;   rJ   r   r<   r&  r(  r)  
forward_fnis_setup_ctx_definedvjp_fnjvp_fnr*  rO   r   fwd_srcsetup_ctx_srcr   ctxsigr"  s    `                 @r0   
call_apply#AutogradFunctionVariable.call_apply  s   	) 	eF^4U2244//58d J,,J#<T[[=V=V#W # AKK'')B)B
 [[__FU^^4488856[[__FU^^4488856G[[F~#$$T[[%;%;<dkk>R>R 0$$!&9	
 mB-  {{$T[[)<g001L1LMN'$.t{{O$LM!-":":<;V;V"WXJ;;Y7FF[[  -44RF|d|b%,,--##B'C4y1}COO 44ABx11"VDRRD  E,,--//224;;? mB-	. QRTQUVr/   c                 b   U R                   R                  n[        US   R                  5      [        R
                  R                  R                  L d   e[        U[        R                  5      (       d   e[        U R                  S5      n[        R                  " XES9R                  XU5      $ )Nr   r9  rd   )r  r9  rQ   rR   rt   _dynamoexternal_utilsFakeBackwardCFunctionrx   r   r   r   rO   r   r!   rz   )r;   rJ   r   r<   r   	fn_sources         r0   call_backward&AutogradFunctionVariable.call_backward[  s    [[!!DGMM"emm&B&B&X&XXXX"e001111t{{J7	--bCQQf
 	
r/   c                 ,    [        U R                  5      $ rA   )r  r  r;   rJ   r   r<   s       r0   rz   &AutogradFunctionVariable.call_functione  s    '44r/   c           
         SSK Jn  SSKJn  US:X  aj  U" U R                  5      (       aA  [        U R                  5      nU" UUR                  R                  " SU/[        X45      Q76 S9$ U R                  XU5      $ US:X  a  U R                  XU5      $ SS	KJ n  U R                  b  [        U R                  U5      OS n	 [        R                  " U R                  U5      n
[#        U
[$        5      (       as  U
R'                  U R                  5      nU	b.  UR)                  U5      R+                  XS
9R-                  XU5      $ UR)                  U5      " U5      R-                  XU5      $ [#        U
[.        5      (       a/  [0        R2                  " U
R4                  X	S
9R-                  XU5      $ [7        SU 35        g ! [          a    S n
 Nf = f)Nr   )is_callable_allowedr   )wrap_fx_proxyr  rz   )rJ   proxyr9  )trace_rulesrd   zUnsupported method: )rW  rT  builderrU  r  r  r   create_proxyr   rG  rN   rO   r   r<  getattr_staticr   rx   r   __get__lookupcreate_with_sourcerz   r   r   r   r   r   )r;   rJ   rZ   r   r<   rT  rU  r  rW  rO   objr  s               r0   r   $AutogradFunctionVariable.call_methodh  s    	6*7?"4;;//,MKK-) %))00'1 +48  r88Z%%b77&6:kk6MZT2SWF,,T[[$? #|,,{{4;;/%#**40++D+@&r8 '--d3D9GG&  C-- 33LL$-&12  4TF;<) " s   !F= =GG)r  r   r   )r   r   r<   r   )r*   r+   r,   r-   r   r   r   r8   rG  rN  rz   r   r.   r   r   s   @r0   r  r    sT    7 			'	'N
_B
56= &	6=
 -6= 6=r/   r  c                   F    \ rS rSr% \R
                  " \S9r\\   \	S'   Sr
g)SavedTensorBoxi  )default_factorytensorsr)   N)r*   r+   r,   r-   dataclassesfieldlistrd  r   r  r.   r)   r/   r0   rb  rb    s    %0%6%6t%LGT/"Lr/   rb  c                      ^  \ rS rSrSrSSS1\R                  kr      S SU 4S jjjr\SSS jj5       r	S r
      SU 4S	 jjrSU 4S
 jjrSrU =r$ )r;  i  zR
Tracks an autograd.Function() context using mutation tracking in side_effects.py
rV  	inferencesaved_tensorsc                 f   > [         T	U ]  " SXS.UD6  X0l        X@l        XPl        X`l        Xpl        g N)rR   
value_typer)   )r7   r8   ri  rV  rj  needs_input_gradnon_differentiable)
r;   rR   rm  ri  rV  rj  rn  ro  r<   r=   s
            r0   r8   (AutogradFunctionContextVariable.__init__  s6     	FuFvF"
* 0"4r/   c                    S nU(       a  U(       d  [        S U 5       5      nU R                  R                  S[        R                  R
                  R                  S0 5      nU R                  R                  R                  S [        R                  R
                  R                  [        R                  " [        SU[        5       US90 5      n[        UR                  UR                  5        U$ )Nc              3   |   #    U  H2  n[        U[        R                  5      =(       a    UR                  v   M4     g 7frA   )rx   r   r!  r"  .0xs     r0   	<genexpr>9AutogradFunctionContextVariable.create.<locals>.<genexpr>  s0      %A 1i667KAOOKs   :<rz   r)   T)ri  rV  rj  rn  )r   r   rY  rt   r4  functionFunctionCtxrw   track_object_new	functoolspartialr;  rb  r   r%  rR   )rJ   r   r<   rn  rV  outs         r0   ri   &AutogradFunctionContextVariable.create  s    $ %%   		&&U^^44@@"b
 ii$$55NN##///,.!1 
 	%**cii0
r/   c                 J    U R                   c  [        S5        U R                   $ )Nzproxy not set)rV  r   r   s    r0   as_proxy(AutogradFunctionContextVariable.as_proxy  s    ::/*zzr/   c                   > US:X  a  [         TU ]  XX45      $ US:X  aD  [        U5      S:X  d   e[        U0 5      S   U l        [
        R                  R                  S 5      $ US:w  a  [        SU 35        U R                  c  [        S5        U R                  (       d?  U R                  (       a  U(       a   eUR                  R                  R                  X5        [        U R                  R                  5      S:  a  / U R                  l        U H(  nU R                  R                  R!                  U5        M*     [
        R                  R                  S 5      $ )Nr   mark_non_differentiabler   save_for_backwardz"autograd.Function context method: zCsave_for_backward only supported on a newly constructed FunctionCtx)r7   r   rW   r   ro  r   r   ri   r   rj  ri  rO   r   rw   track_save_for_backwardrd  append)r;   rJ   rZ   r   r<   argr=   s         r0   r   +AutogradFunctionContextVariable.call_method  s)    = 7&r>>..v;!###&7b&A!&DD#--44T::&&>tfEF%U ~~;;v--II""::4F t!!))*Q.)+D&C&&--c2 ))0066r/   c                   >^ ^^ TS;   a  [        UU U4S j5      $ TS:X  a@  T R                  b3  [        R                  " [	        T R                  R
                  5      5      $ TS:X  a  T R                  b)  [        R                  R                  T R                  5      $ T R                  (       aB  [        T R                  S5      n[        R                  " TT R                  R                  U5      $ [        TT ]=  TT5      $ )N)r  r  c                  *   > TR                  TTX5      $ rA   )r   )r   r<   rZ   r;   rJ   s     r0   rD   =AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>  s    (8(8T4(Pr/   rj  rn  )rs   rj  r   TupleVariablerg  rd  rn  r   ri   rO   r   r   r   rR   r7   rj   r;   rJ   rZ   rO   r=   s   ``` r0   rj   +AutogradFunctionContextVariable.var_getattr  s    CC!P  ?"t'9'9'E**40B0B0J0J+KLL%%$$0 11889N9NOO{{#DKK1CD&,,R1L1LfUUw"2t,,r/   )ri  rn  ro  rV  rj  )NFNNNNr   NNr   r   )r*   r+   r,   r-   r   r$   r   r8   r   ri   r  r   rj   r.   r   r   s   @r0   r;  r;    s    
 	 
#	1	1	N 5 
5 5$  4
7 &	7
 -7 
7@- -r/   r;  c                   N   ^  \ rS rSrSr S SU 4S jjjr      SS jrSrU =r$ )	AutogradEngineVariablei  z3
Represents a torch._C._ImperativeEngine instance.
c                 *   > [         TU ]  " SXS.UD6  g rl  r  )r;   rR   rm  r<   r=   s       r0   r8   AutogradEngineVariable.__init__  s     	FuFvFr/   c                    US:X  a  [         R                  R                  R                  (       a  UR                  (       d   S5       e[
        R                  " [         R                  R                  R                  R                  U R                  S9R                  UUR                  R                  R                  5       /UQ7U5      $ [        S5        g [        SU 35        g )Nqueue_callbackzXqueue_callback() is only supported when Compiled Autograd is enabled with fullgraph=Truerd   z#torch._C._ImperativeEngine method: )rt   rJ  compiled_autogradin_compiled_autograd_region	one_graphr   r!   rK  FakeCompiledAutogradEnginer  rO   rz   r   rw   get_ca_final_callbacks_varr   r;   rJ   rZ   r   r<   s        r0   r   "AutogradEngineVariable.call_method"  s     ##}}..JJ|| n| !55MM00KKZZ;;  -YY++FFHP4P n ?vFGr/   r)   rA   r   r   	r*   r+   r,   r-   r   r8   r   r.   r   r   s   @r0   r  r    sQ     G
 
G GH &	H
 -H 
H Hr/   r  c                   F   ^  \ rS rSrSU 4S jjr        SS jrSrU =r$ )rs   i>  c                 2   > [         TU ]  " S0 UD6  Xl        g r6   )r7   r8   r   )r;   r   r<   r=   s      r0   r8   LambdaVariable.__init__?  s    "6"r/   c                 &    U R                   " U0 UD6$ rA   r   rQ  s       r0   rz   LambdaVariable.call_functionC  s     ww'''r/   r  r   r  )r*   r+   r,   r-   r8   rz   r.   r   r   s   @r0   rs   rs   >  s8    (#( &( -	(
 
( (r/   rs   c                     ^  \ rS rSrSS1\R
                  krSSU 4S jjjrU 4S jrS\4S jr	\
S\R                  R                  4S	 j5       rS
 rS rSS jrS r        SS jrS\\   S\\\4   S\4U 4S jjrSrU =r$ )rf   iL  rZ   py_typer4   c                    > [         TU ]  " S0 UD6  [        U[        5      (       d   e[        U[        5      (       d   eXl        X l        X0l        g r6   )r7   r8   rx   r   r   r_  rZ   r  )r;   r_  rZ   r  r<   r=   s        r0   r8   GetAttrVariable.__init__S  sH    "6"#////$$$$$	r/   c                 R   > U R                   b  U R                   $ [        TU ]	  5       $ rA   )r  r7   rN   r;   r=   s    r0   rN   GetAttrVariable.python_type[  s%    <<#<<7&((r/   c                 h    U R                   R                   SU R                   SU R                   S3$ Nr   rp   r   )r=   r*   r_  rZ   r   s    r0   r   GetAttrVariable.__repr__a  s.    ..))*!DHH:R		{!DDr/   
base_proxyc                     [        X5      $ rA   )rU   )r  r   s     r0   create_getattr_proxy$GetAttrVariable.create_getattr_proxyd  s    z((r/   c                 r    [         R                  U R                  R                  5       U R                  5      $ rA   )rf   r  r_  r  rZ   r   s    r0   r  GetAttrVariable.as_proxyh  s&    33DHH4E4E4GSSr/   c                     U R                   R                  5       n [        XR                  5      $ ! [         a    [        U  S35      S ef = f)Nz is not a constant)r_  rM   rU   rZ   r   r   )r;   constants     r0   rM   "GetAttrVariable.as_python_constantk  sO    88..0	M8YY// 	M%.@&ABL	Ms	   1 Ac                    [        U R                  [        R                  5      (       d  [        eUR
                  R                  U R                  R                  5      nU R                  UR                  ;  a  [        e[        R                  " X0R                  5      nX$R                  ;  a  [        e[        R                  " XB5      $ rA   )rx   r_  r   r#  r   r   get_submodule
module_keyrZ   rX   r<  r[  )r;   rJ   rZ   step1step2s        r0   const_getattrGetAttrVariable.const_getattrr  s    $((I$>$>??%%		''(;(;<99ENN*%%&&uii8~~%%%%%e22r/   c                 |    U" U R                   5        UR                  UR                  U R                  5      5        g rA   )r_  rG   create_load_attrsrZ   r   s     r0   rH   GetAttrVariable.reconstruct}  s+    g77		BCr/   r   r<   c                 N    U R                   R                  XR                  X#5      $ rA   )r_  r   rZ   rQ  s       r0   rz   GetAttrVariable.call_function  s     xx##B		4@@r/   c                 @  > US;   a  U R                   S:X  a  U(       d  US   R                  5       (       a  [        U R                  [        R
                  [        R                  [        R                  45      (       ax  U R                  nUS   R                  5       nUR                  X5      (       a  UR                  X5      $ US:X  a*  [        U5      S:X  a  US   $ [        R                  " S 5      $ GOUS:X  a  U R                   S:X  a  [        U5      S:X  a  US   R                  5       (       a  U(       d  [        U R                  [        R
                  [        R                  [        R                  45      (       aa  U R                  nUS   R                  5       nUR                  X5      (       a  [        R                  " S5      $ [        R                  " S	5      $ US
:X  a  U R                   S:X  a  U(       d  [        U R                  [        R
                  5      (       a"  U R                  R                  XS   US   5      $ [        U R                  [        R                  5      (       a  U R                  R                  U5        [        TU ]A  XX45      $ )N)__getitem__rY   rX   r   rY   r   r   __contains__TF__setitem__)rZ   is_python_constantrx   r_  r   r$   r#  r|   rM   has_key_in_generic_dictrj   rW   r   r   convert_to_unspecializedr7   r   )r;   rJ   rZ   r   r<   r_  keyr=   s          r0   r   GetAttrVariable.call_method  s    **		Z'Q**,,77..66  ((Cq',,.C**233r// u}t9>7N$55d;;	  N"		Z'D	QQ**,,77..66  ((Cq',,.C**233 11$77 11%88]"tyyJ'>v$((I$G$GHHxx77GT!WMM$((I$>$>??11"5w"2T::r/   )rZ   r_  r  rA   r   r   r  )r*   r+   r,   r-   r   r   r8   rN   r   r   r   rt   fxProxyr  r  rM   r  rH   rz   rg  dictr   r.   r   r   s   @r0   rf   rf   L  s     
	'	'N )E# E ) ) )TM	3DA#A &A -	A
 
A@; ?#	@;
 S/)*@; 
@; @;r/   rf   c                   X   ^  \ rS rSrSU 4S jjr        SU 4S jjrS rS rSrU =r	$ )	MethodWrapperVariablei  c                 @   > [         TU ]  " S0 UD6  Xl        0 U l        g r6   )r7   r8   method_wrapper_builtin_fns)r;   r  r<   r=   s      r0   r8   MethodWrapperVariable.__init__  s!    "6",r/   c                 R  > [        U R                  5      (       at  [        US   [        R                  5      (       aR  [        U5      S:X  a  [        U5      S:X  d   eUS   R                  XR                  R                  R                  5      $ U R                  R                  nU R                  R                  nUS:X  aV  [        U5      R                  nU[        R                  L a.  [        R                  " [        5      R                  XU/UQU5      $ [        TU ]=  XU5        g )Nr   r   r8   )r   r  rx   r   r!  rW   rj   r~   r*   rQ   r8   rr   rB   r   r7   rz   )r;   rJ   r   r<   self_objwrapper_namefn_objr=   s          r0   rz   #MethodWrapperVariable.call_function  s     &d&9&9::zGY--@
 @
 t9>c&kQ&6667&&r+>+>+G+G+P+PQQ &&//**33 :%(^,,F( 008DDx&7$&7  	b/r/   c                     gNTr)   r   s    r0   r  (MethodWrapperVariable.is_python_constant      r/   c                     U R                   $ rA   )r  r   s    r0   rM   (MethodWrapperVariable.as_python_constant  s    """r/   )r  r  r   r  )
r*   r+   r,   r-   r8   rz   r  rM   r.   r   r   s   @r0   r  r    sB    
0#0 &0 -	0
 
0># #r/   r  c                   H   ^  \ rS rSrSU 4S jjrSU 4S jjrS rS rSrU =r	$ )	GetSetDescriptorVariablei  c                 2   > [         TU ]  " S0 UD6  Xl        g r6   )r7   r8   desc)r;   r  r<   r=   s      r0   r8   !GetSetDescriptorVariable.__init__  s    "6"	r/   c                    > US:X  aR  U R                   (       aA  [        U R                   S5      n[        R                  " XR                  R
                  U5      $ [        TU ]  X5      $ )Nr\  )rO   r   r   r   r  r\  r7   rj   r  s       r0   rj   $GetSetDescriptorVariable.var_getattr  sN    9Y7F"((YY->->GG7&r00r/   c                     gr  r)   r   s    r0   r  +GetSetDescriptorVariable.is_python_constant  r  r/   c                     U R                   $ rA   r  r   s    r0   rM   +GetSetDescriptorVariable.as_python_constant  s    yyr/   r  r   r   )
r*   r+   r,   r-   r8   rj   r  rM   r.   r   r   s   @r0   r  r    s    1 r/   r  c                      ^  \ rS rSrSS1\R
                  krS\R                  SS4U 4S jjrS r	S r
S\4S	 jrSS
 jrSS jrSrU =r$ )PythonModuleVariablei  rR   is_torchr4   Nc                    > [         TU ]  " S0 UD6  Xl        U R                  [        L =(       d%    U R                  R                  R                  S5      U l        g )Nztorch.r)   )r7   r8   rR   rt   r*   
startswithr  r;   rR   r<   r=   s      r0   r8   PythonModuleVariable.__init__  sB    "6"


e+Wtzz/B/B/M/Mh/Wr/   c                 "    [         R                  $ rA   )r   
ModuleTyper   s    r0   rN    PythonModuleVariable.python_type  s    r/   c                     U R                   $ rA   rR   r   s    r0   rM   'PythonModuleVariable.as_python_constant      zzr/   c                 "    SU R                    S3$ )NzPythonModuleVariable(r   r  r   s    r0   r   PythonModuleVariable.__repr__  s    &tzzl!44r/   c                 l    [        U R                  U5      n[        R                  R	                  U5      $ rA   )r{   rR   r   r   ri   r;   rJ   rZ   r   s       r0   call_obj_hasattr%PythonModuleVariable.call_obj_hasattr   s)    T*))0088r/   c                    UR                   R                  R                  X5      (       a%  UR                   R                  R                  X5      $ U R                  (       d  X R
                  R                  ;  a  [        U R
                  U5      nOU R
                  R                  U   nU R                  =(       a    [        U R                  U5      n[        R                  " XU5      $ rA   )r   rw   r   r   r  rR   rX   rU   rO   r   r   r   )r;   rJ   rZ   r   rO   s        r0   rj    PythonModuleVariable.var_getattr$  s    99!!>>tJJ99))33D??==D

(;(;; T2J,,T2J>DKK!>$$RV<<r/   )r  rR   r   )r*   r+   r,   r-   r   r   r   r  r8   rN   rM   r   r   r  rj   r.   r   r   s   @r0   r  r    sa     
	'	'NXe.. XT X
 5# 59
= 
=r/   r  c                   d   ^  \ rS rSrSU 4S jjr      SS jrSSS\4S jrS rSS	 jr	S
r
U =r$ )TypingVariablei1  c                 2   > [         TU ]  " S0 UD6  Xl        g r6   r7   r8   rR   r  s      r0   r8   TypingVariable.__init__2      "6"
r/   c                     US:X  a:  [        U5      S:X  a+  U R                  US   R                  5          n[        U5      $ [	        S5        g )Nr  r   r   z+unsupported method call on typing variablel)rW   rR   rM   r  r   )r;   rJ   rZ   r   r<   
new_typings         r0   r   TypingVariable.call_method6  sE     = SY!^DG$>$>$@AJ!*--CDr/   rJ   r%   rZ   c                    SSK JnJn  U[        ;   a  [        R
                  " X5      $ UR                  R                  R                  X5      (       a  UR                  R                  X5      $ [        U R                  U5      nU R                  (       a$  [        U R                  U5      nU" X5      " U5      $ UR                  X5      $ )Nr   )SourcelessBuilderVariableBuilder)rX  r  r  r   r   rf   r   rw   r   r   rU   rR   rO   r   ri   )r;   rJ   rZ   r  r  rR   attr_sources          r0   rj   TypingVariable.var_getattrC  s    ?)),,T8899!!>>tJJ??,,T88

D);;$T[[$7K"23E::$++B66r/   c                     U R                   $ rA   r  r   s    r0   rM   !TypingVariable.as_python_constantS  r  r/   c                 X    UR                  UR                  U R                  5      5        g rA   )append_outputcreate_load_constrR   r   s     r0   rH   TypingVariable.reconstructV  s!    0 	g77

CDr/   r  r   r   )rC   ztorch._dynamo.codegen.PyCodegenr4   N)r*   r+   r,   r-   r8   r   r   rj   rM   rH   r.   r   r   s   @r0   r  r  1  sT    E &	E
 -E 
E75 7S 7 E Er/   r  )maxsizec                      SSK Jn   0 nU R                  5        HS  u  p#UR                  R                  5        H0  u  pE[	        U5      (       d  M  [        X$S5      =n(       d  M,  XQU'   M2     MU     U$ )zX
This generates a mapping from numpy modules to their torch._numpy
modules equivalents.
r   )NP_TO_TNP_MODULEN)utilsr  r   rX   callablerU   )r  np_fn_to_tnp_fnnp_modtnp_modr   tnp_fnnp_fns          r0   get_np_to_tnp_mapr   q  sk     )O+113&//557OG $FT::5:-3E*  8 4 r/   c                  l    [        5       n U R                  5        VVs0 s H  u  pX!_M	     snn$ s  snnf )zs
This is just the reverse mapping of get_np_to_tnp_map() - mapping from
torch._numpy modules to numpy equivalents.
)r   r   )mkvs      r0   get_tnp_to_np_mapr%    s.     	AWWY'YTQADY'''s   0c                      ^  \ rS rSrSr\R                  4rSU 4S jjr\	S 5       r
\	S 5       r        SS jr      SS jrS rU 4S	 jrS
rU =r$ )NumpyVariablei  zr
Wrapper around `numpy.*`. Currently, is able to trace a small subset of numpy functions as well as numpy dtypes.
c                 2   > [         TU ]  " S0 UD6  Xl        g r6   r  r  s      r0   r8   NumpyVariable.__init__  r  r/   c                     UR                   R                  S5      n[        U5      S:  a  US S SS/:X  d   eXR                  ;   $ N.r   rt   _numpy)r+   splitrW   constant_fold_functionsclsr   mods      r0   can_constant_fold_through'NumpyVariable.can_constant_fold_through  sH    mm!!#&3x1}RaWh,?!???0000r/   c                     UR                   R                  S5      n[        U5      S:  a  US S SS/:X  d   e[        R	                  US 5      $ r+  )r+   r.  rW   np_constant_collections_maprY   r0  s      r0    get_constant_collection_for_func.NumpyVariable.get_constant_collection_for_func  sL    mm!!#&3x1}RaWh,?!???*..r488r/   c                 <   [         R                  (       d  [        SU R                   S35        SSKJn  SSKJn  [        5       R                  U R                  5      nUc  [        SU R                   S35        U R                  U5      =n bh   U" U R                  " U Vs/ s H  oR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pXR                  5       _M     sn
n	D65      $ UR                  S:X  aF  [         R                   (       a1  SUR"                   S3nUS[         R                    3-  n[        U5        UR%                  UR                  X#5      u  p#U R'                  U5      (       a  [)        X#5      (       a  [*        R,                  R/                  U R                  5       " U Vs/ s H  oR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pXR                  5       _M     sn
n	D65      $ UR0                  R2                  " SU" U5      /[5        X#5      Q76 nUR/                  X5      $ s  snf s  sn
n	f ! [         a*    [        U R                  R                   S	U S
U 35         g f = fs  snf s  sn
n	f )Nznumpy.z()r   )numpy_to_tensor_wrapperr   )NumpyNdarrayVariablezCan't find numpy function zM in torch._numpy.  Please file an issue to request support for this function.z with non-const args:  ztorch._numpy.randomz
delegate 'z' to NumPy itself via zconfg.use_numpy_random_stream=rz   )r   trace_numpyr   rR   r  r:  tensorr;  r   rY   r7  rM   r   r   r*   r+   use_numpy_random_streamr,   
patch_argsr3  r   r   r   ri   r   rY  r   )r;   rJ   r   r<   r:  r;  r  collection_variable_typru  r#  r$  r   rV  s                r0   rz   NumpyVariable.call_function  sd    !!F4::,b1230 "&&tzz2<,TZZL 9N N (,'L'LT'RR#
.JJ:>?$Q..0$?AGP12244P  #8822"4#4#4"55KL78V8V7WXXc"/::4==$WLD--d33-d;; !1188++-:>?$Q..0$?AGP12244P  II**'- #40E
 (..r99I @P ' zz**++A$qQ* @Ps<   I "I;I I-	I >J-JI 1JJc                     [        S5        g )Nnumpy)r   r  s        r0   r   NumpyVariable.call_method  s     	gr/   c                     U R                   $ rA   r  r   s    r0   rM    NumpyVariable.as_python_constant  r  r/   c                    > [         R                  (       a5  [        U R                  [        5      (       a  U R                  R
                  $ [        TU ]  5       $ rA   )r   r=  rx   rR   rQ   r*   r7   r  r  s    r0   r  NumpyVariable.as_proxy  s<    *TZZ">"> ::&&&w!!r/   r  r   r  r   )r*   r+   r,   r-   r   tnp
issubdtyper/  r8   r   r3  r7  rz   r   rM   r  r.   r   r   s   @r0   r'  r'    s      #~~/ 1 1
 9 9
>:#>: &>: -	>:
 
>:@ &	
 - 
" "r/   r'  c                   @   ^  \ rS rSrSU 4S jjrS\4S jrS rSrU =r	$ )NullVariablei  r4   c                 &   > [         TU ]  " S0 UD6  g r6   r  r  s     r0   r8   NullVariable.__init__  r  r/   c                     g)NrM  r)   r   s    r0   r   NullVariable.__repr__  s    r/   c                 v    [         R                  S:  a  [        S5        UR                  [	        S5      5        g )N)      z0cannot reconstruct NullVariable in < Python 3.11	PUSH_NULL)sysversion_infor   r  r	   r   s     r0   rH   NullVariable.reconstruct  s-    g%LM0=>r/   r)   r   )
r*   r+   r,   r-   r8   r   r   rH   r.   r   r   s   @r0   rM  rM    s    ## ? ?r/   rM  c                       \ rS rSrSrSrg)r   i  z"Marker used to implement delattr()r)   Nr   r)   r/   r0   r   r     s    ,r/   r   c                   r   ^  \ rS rSrSrS1\R                  kr\S 5       rS
U 4S jjr	S\
4S jrS rS	rU =r$ )StringFormatVariablei  zS
Represents a call to str.format(), we delay calling format until after the graph.
format_stringc                    [        S [        R                  " X#R                  5       5       5       5      (       a~  [        R
                  R                  UR                  " U Vs/ s H  oDR                  5       PM     sn0 UR                  5        VVs0 s H  u  pTXTR                  5       _M     snnD65      $ U " U[        U5      [        U5      5      $ s  snf s  snnf )Nc              3   B   #    U  H  nUR                  5       v   M     g 7frA   )r  rs  s     r0   rv  .StringFormatVariable.create.<locals>.<genexpr>  s#      
C   ""Cs   )all	itertoolschainvaluesr   r   ri   formatrM   r   rg  r  )r1  r\  sym_args
sym_kwargsr$  r#  s         r0   ri   StringFormatVariable.create  s     
__X/@/@/BC
 
 
 --44$$6>?h**,h?=G=M=M=OP=OTQq..00=OP  =$x.$z2BCC	 @Ps   #CCr4   c                 x   > [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        X l        X0l        g r6   )r7   r8   rx   r   r\  re  rf  )r;   r\  re  rf  r<   r=   s        r0   r8   StringFormatVariable.__init__$  s6    "6"-----* $r/   c                     U R                   R                   SU R                  < SU R                  < SU R                  < S3$ r  )r=   r*   r\  re  rf  r   s    r0   r   StringFormatVariable.__repr__+  sB    ..))*!D,>,>+ADMMCTTVW[WfWfViijkkr/   c                   ^ ^ TR                  UU 4S jSS9  T" [        R                  " T R                  5      5        T R                  R                  5        VVs0 s H%  u  p#[        R                  R                  U5      U_M'     nnnT" [        R                  " U5      5        TR                  [        SSS95        g s  snnf )Nc                  z   > T R                  T R                  TR                  5      T R                  S5      /5      $ )Nrd  )rG   r  r\  create_load_attrr   s   r0   rD   2StringFormatVariable.reconstruct.<locals>.<lambda>0  s7    G))--d.@.@A,,X6r/   T)call_function_exCALL_FUNCTION_EXr   )r  )rF   r   r  re  rf  r   r   ri   ConstDictVariabler  r	   )r;   rC   r#  r$  r<   s   ``   r0   rH    StringFormatVariable.reconstruct.  s     " 	 	
 		''67@D@U@U@W
@WI&&--a0!3@W 	 
 		++F3401CKL	
s   ,C )r\  re  rf  r   )r*   r+   r,   r-   r   r   r   r   ri   r8   r   r   rH   r.   r   r   s   @r0   r[  r[    sP     &G(F(FGND D%l# lM Mr/   r[  c                   d   ^  \ rS rSrSrS	U 4S jjr\S 5       rS
S jrS r	\SS j5       r
SrU =r$ )DebuggingVariablei@  zz
Represents a call to a debugging function like print(), or something
registered to config.reorderable_logging_functions.
c                 2   > [         TU ]  " S0 UD6  Xl        g r6   r  r  s      r0   r8   DebuggingVariable.__init__F  r  r/   c                     [        U 5      =(       aX    [        U [        R                  [        R                  45      =(       a'    U [
        R                  R                  R                  ;   $ rA   )	r  rx   r   r   BuiltinFunctionTypert   rJ  r   reorderable_logging_functions)r_  s    r0   is_reorderable_logging_function1DebuggingVariable.is_reorderable_logging_functionJ  sO     SM J3!3!3U5N5N OPJu}}++III	
r/   c           	          UR                   (       a  g U R                  U R                  X#5      (       d  [        SU R                   SU SU S35        UR                  R                  U [        U5      45        g )NzReordering debugging function z with inputs r<  z is not yet implemented.)exportcan_reorder_logsrR   r   debug_localsr  rg  rQ  s       r0   rz   DebuggingVariable.call_functionR  sl    99$$TZZ>>0 =#fAfX-EG
 	d4j12r/   c                 8    U R                   R                  U5      $ rA   )rO   rH   r   s     r0   rH   DebuggingVariable.reconstruct_  s    {{&&w//r/   c                     [         R                  [         R                  [        4n[        R
                  " X/5      nU H  n[        XS5      (       a  M    g   g)zU
Run some additional checks for what sort of function calls can we
actually reorder.
FT)r   r!  r   r[  pytreetree_leavesrx   )r   r   r<   allowed_input_types	flat_argsr  s         r0   r  "DebuggingVariable.can_reorder_logsb  sR     $$&& 
 &&~6	Cc77  r/   r  r   r   )r4   T)r*   r+   r,   r-   r   r8   r   r{  rz   rH   r  r.   r   r   s   @r0   ru  ru  @  s?    
 
 
30  r/   ru  c                   F   ^  \ rS rSrSrSU 4S jjr      SS jrSrU =r$ )LoggingLoggerVariableiw  z4
Represents a call to any of logging.Logger methods
c                 2   > [         TU ]  " S0 UD6  Xl        g r6   r  r  s      r0   r8   LoggingLoggerVariable.__init__|  r  r/   c                 6   UR                   (       a  g [        U R                  US 5      n[        USS 5      nXV1R                  [        R
                  R                  R                  5      (       a  [        R                  R                  S 5      $ [        S5        g )Nr   zLogger not supported for non-export cases. To avoid graph breaks caused by logger in compile-mode, it is recommended to disable logging by adding logging methods to config.ignore_logger_methods)r~  rU   rR   intersectionrt   rJ  r   ignore_logger_methodsr   r   ri   r   )r;   rJ   rZ   r   r<   methodrx  s          r0   r   !LoggingLoggerVariable.call_method  sw     99T406:t4**5==+?+?+U+UVV--44T::Y	
r/   r  r   r   r  r   s   @r0   r  r  w  s5    
 &	

 -
 

 
r/   r  c                      ^  \ rS rSrSrS r SSKJrJ	r
Jr  SU 4S jjrS	 rS
\\   S\\\4   S\4S jrSSS\S\4S jrSrU =r$ ! \ a    \" SS0 5      r
\" SS0 5      r NKf = f)ConstantLikeVariablei  z8self.value is a compile-time constant, but not a literalr   )dtypefloatinggenericinvalid_typer)   r4   c                 2   > [         TU ]  " S0 UD6  Xl        g r6   r  r  s      r0   r8   ConstantLikeVariable.__init__  r  r/   c                     U R                   $ rA   r  r   s    r0   rM   'ConstantLikeVariable.as_python_constant  r  r/   r   r<   c                 l    U Vs/ s H  oUR                  5       PM     nnUR                  5        VVs0 s H  u  pxXxR                  5       _M     n	nn[        U R                  U5      " W0 W	D6n
[        R                  R                  U
5      (       a  [        R                  R                  U
5      $ [        U
[        R                  5      (       a  [        U
5      $ [        U R                   SU SU
 35        g s  snf s  snnf ! [         a$    [        U R                   SU SU SU S35         Nf = f)Nr,  z(*z, **r   z() -> )rM   r   r   r   _error_prefixrU   rR   r   r   re   ri   rx   reMatchConstantRegexMatchVariable)r;   rJ   rZ   r   r<   ru  cargsr#  r$  ckwargsr   s              r0   r    ConstantLikeVariable.call_method  s   	O59:T))+TE:=C\\^L^TQq..00^GL T*E=W=%%0088--44V<<fbhh''-f55++,AdV6&BC ;L" 	OT//0$r$tF81MN	Os,   D C:D C?D :D +D32D3rJ   r%   rZ   c                    [        U R                  U5      n[        X0R                  5      (       a  [	        U5      n[        X0R
                  5      (       a  [        U5      $ [        U[        5      (       a%  [        X0R                  5      (       a  [        U5      $ [        R                  R                  U5      (       a  [        R                  R                  U5      $ [        X5      $ rA   )rU   rR   rx   np_floatingfloatnp_dtypeNumpyDTypeVariablerQ   rP   
np_genericr'  r   r   re   ri   rf   r  s       r0   rj    ConstantLikeVariable.var_getattr  s    T*f..//6]Ffmm,,%f--fd##
6??(K(K ((%%0088--44V<<t**r/   r  r   )r*   r+   r,   r-   r   r  rD  r  r  r  r  r  r  ImportErrorrQ   r8   rM   rg  r   r  r   r   rj   r.   r   r   s   @r0   r  r    s    B*M0	
 	
D ?#	D
 S/)*D 
D.+5 +S +_ + +E  0>2r2B/0s   
A A#"A#r  c                       \ rS rSrSrSrg)RegexPatternVariablei  z
re.Patternr)   Nr*   r+   r,   r-   r  r.   r)   r/   r0   r  r    s     Mr/   r  c                       \ rS rSrSrSrg)r  i  zre.Matchr)   Nr  r)   r/   r0   r  r    s    Mr/   r  c                   0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )TorchVersionVariablei  ztorch.__version__c                    > UR                  S[        R                  5        US   [        R                  L d   e[        TU ]  " S0 UD6  g )NrR   r)   )
setdefaultrt   __version__r7   r8   r  s     r0   r8   TorchVersionVariable.__init__  sA    '5#4#45g%"3"3333"6"r/   r)   r   )r*   r+   r,   r-   r  r8   r.   r   r   s   @r0   r  r    s    'M# #r/   r  c                       \ rS rSrSrSrg)NumpyTypeInfoVariablei  znp.iinfo/np.finfor)   Nr  r)   r/   r0   r  r    s    'Mr/   r  c                       \ rS rSrSrS rSrg)r  i  znp.dtype[...]c                 B    U R                   R                  R                  $ )a  Similar to how numpy dtype descriptors (e.g. np.float32 ) are handled by NumpyVariable:

np.dtype() objects are serialized as strings, torch._numpy wrappers will normalize to the torch dtype.
This also handles unsupported things nicely (i.e. structured arrays and object arrays).
)rR   rQ   r*   r   s    r0   r  NumpyDTypeVariable.as_proxy  s     zz'''r/   r)   N)r*   r+   r,   r-   r  r  r.   r)   r/   r0   r  r    s    #M(r/   r  c                   :   ^  \ rS rSrSrSU 4S jjrSS jrSrU =r$ )RandomClassVariablei  zrandom.Randomc                 &   > [         TU ]  " S0 UD6  g r6   r  r  s     r0   r8   RandomClassVariable.__init__  r  r/   c                    [        U5      S:  a  [        S5        OU(       a  [        S5        [        U5      S:X  a  [        R                  R	                  S 5      OUS   n[        U[        R                  R                  5       S9$ )Nr   zrandom.Random() with > 1 argzrandom.Random() with kwargsr   )seedry   )rW   r   r   r   ri   RandomVariablebaseValueMutationNew)r;   rJ   r   r<   r  s        r0   rz   !RandomClassVariable.call_function  sh    t9q=8978:=d)q.y))006dSTgY^^%D%D%F
 	
r/   r)   r   r   )	r*   r+   r,   r-   r   r8   rz   r.   r   r   s   @r0   r  r    s    #
 
r/   r  c                     ^  \ rS rSrSrS1\R                  kr1 Skr  SS\\	R                     S\\   SS4U 4S	 jjjrS
 rS r\S 5       r\S 5       r\S 5       r\S 5       rS\\   S\\\4   S\4U 4S jjrS rSrU =r$ )r  i  zrandom.Random()

Implemented by wrapping a VariableTracker around a random.Random object.
The supported methods for the random.Random object cannot be overriden.
Assumes that random objects behave the same given a set seed or state.
random>   r  randintuniform	randrangeNrandr  r4   c                 D  > [         TU ]  " S0 UD6  Ub\  U R                  U5      (       d   e[        R                  " 5       U l        U R                  R                  UR                  5       5        g Ub  UR                  5       OS n[        R                  " U5      U l        g r6   )r7   r8   is_supported_random_objr  RandomsetstategetstaterM   )r;   r  r  r<   r=   s       r0   r8   RandomVariable.__init__  s|     	"6"//5555 --/DKKK  1040@4**,dD ---DKr/   c                 "    [         R                  $ rA   )r  r  r   s    r0   rN   RandomVariable.python_type+  s    }}r/   c                     U R                   $ rA   r  r   s    r0   rM   !RandomVariable.as_python_constant.  s    {{r/   c                    [        U 5      [        R                  La  g[        R                  " [
        R                  S5       H  n[        X5      (       d    g[        X5      n[        R                  " U5      (       a1  U[        [        R                  U5      R                  U 5      :w  a    gMl  [        USS 5      [        [        R                  U5      Ld  M    g   g)NF)r  r  r  r   T)rQ   r  r  ra  rb  r  _supported_fn_namesr{   rU   r<  	isbuiltinr\  )r   rZ   meths      r0   r  &RandomVariable.is_supported_random_obj1  s    9FMM)OO..0P
D 3%%3%D  &&76==$7??DD  E 4T2'&--QU:VV 
 r/   c                     [        U 5      [        L d   e[        U S   5      [        L d   e[        U S   5      [        L d   e[        S U S    5       5      (       d   eU S   b  [        U S   5      [        L d   eg g )Nr   r   c              3   D   #    U  H  n[        U5      [        L v   M     g 7frA   )rQ   intrs  s     r0   rv  -RandomVariable.check_state.<locals>.<genexpr>I  s     48a47c>8s    r   )rQ   r   r  r`  r  )states    r0   check_stateRandomVariable.check_stateD  s    E{e###E!H~$$$E!H~&&&45844444Qx4a>U#:::#:r/   c                 r   [         R                  U 5        [        R                  " [        R                  R                  U S   5      [        R                  " U S    Vs/ s H"  n[        R                  R                  U5      PM$     sn5      [        R                  R                  U S   5      /5      $ s  snf )Nr   r   r   )r  r  r   r  r   ri   )r  ru  s     r0   
wrap_stateRandomVariable.wrap_stateL  s    ""5)&&**11%(;''CH8L8aY//66q98L **11%(;
 	
 Ms   )B4c                 P    U R                  5       n[        R                  U5        U$ rA   )rM   r  r  )r  	state_objs     r0   unwrap_stateRandomVariable.unwrap_stateY  s$    ,,.	""9-r/   r   r<   c                   >^^ TS:X  a  UR                   R                  R                  U 5        U R                  R                  " U Vs/ s H  oUR                  5       PM     sn0 UR                  5        VVs0 s H  u  pgXgR                  5       _M     snnD6  [        R                  R                  S 5      $ TS:X  a)  U R                  U R                  R                  5       5      $ TS:X  aq  UR                   R                  R                  U 5        U R                  R                  U R                  US   5      5        [        R                  R                  S 5      $ TU R                  ;   a  UR                   R                  R                  U 5        U R                  R                  5       mUU4S jn[        U R                  T5      " U Vs/ s H  oUR                  5       PM     sn0 UR                  5        V	V
s0 s H  u  pXR                  5       _M     sn
n	D6  [!        XX45      $ ["        TU ]I  UTX45      $ s  snf s  snnf s  snf s  sn
n	f )Nr  r  r  r   c                  t   > [         R                  " 5       nUR                  T5        [        UT5      " U 0 UD6$ rA   )r  r  r  rU   )r   r<   rrZ   r  s      r0   call_random_meth4RandomVariable.call_method.<locals>.call_random_methw  s1    MMO

5!q$'888r/   )r   rw   mutationr  r  rM   r   r   r   ri   r  r  r  r  r  rU   r"   r7   r   )r;   rJ   rZ   r   r<   ru  r  r   r  r#  r$  r  r=   s     `        @r0   r   RandomVariable.call_method_  s    6>II""++D1KK267$Q&&($7AGPXS3..00P --44T::Z??4;;#7#7#9::ZII""++D1KK  !2!247!;<--44T::T---II""++D1KK((*E9 DKK&267$Q&&($79?H1**,,H
 ""EEw"2tT::7 8P* 8Hs   	H=8II>Ic                 8  ^ TR                  U4S j5        TR                  SS5        TR                  5         TR                  S5        T" U R	                  U R
                  R                  5       5      5        TR                  SS5        TR                  5         g )Nc                  n   > T R                  T R                  [        5      T R                  S5      /5      $ )Nr  )rG   create_load_python_moduler  rn  rC   s   r0   rD   ,RandomVariable.reconstruct.<locals>.<lambda>  s1    G))55f=,,X6r/   r   Fr  r   T)rF   rz   r   r   r  r  r  pop_topr   s    `r0   rH   RandomVariable.reconstruct  sz    	
 	a' 	*% 4 4 678a&r/   r  r  )r*   r+   r,   r-   r   r   r   r  r   r  r  r8   rN   rM   r   r  r  r  r  rg  r  r   r   rH   r.   r   r   s   @r0   r  r    s     			'	'N
 )-*..v}}%. '.
 
. .  $ ; ; 

 

  
%; ?#	%;
 S/)*%; 
%;N r/   r  c                   X   ^  \ rS rSr\S 5       rU 4S jr        SS jrS rSr	U =r
$ )WeakRefVariablei  c                     UR                  SS 5      nU" 5       nU=(       a    [        U5      n[        R                  " XU5      nX2S'   [	        U40 UD6$ )NrO   )rY   r   r   r   r  )rJ   weakref_valueoptionsrO   referentreferent_vts         r0   r   WeakRefVariable.build  sS    Xt, ?5-f5%++B&A"{6g66r/   c                 2   > [         TU ]  " S0 UD6  Xl        g r6   )r7   r8   r  )r;   r  r  r=   s      r0   r8   WeakRefVariable.__init__  s    #7#&r/   c                     U R                   $ rA   r  rQ  s       r0   rz   WeakRefVariable.call_function  s     r/   c                    ^ TR                  U4S j5        T" U R                  5        TR                  [        SS5      5        g )Nc                  (   > T R                  SS5      $ )Nweakrefref)r   r  s   r0   rD   -WeakRefVariable.reconstruct.<locals>.<lambda>  s    g&>&>y%&Pr/   r   F)rF   r  rG   r   r   s    `r0   rH   WeakRefVariable.reconstruct  s6    PQ  !21e<=r/   r  r  )r*   r+   r,   r-   r   r   r8   rz   rH   r.   r   r   s   @r0   r  r    sO    7 7' #  &  -	 
 
 > >r/   r  )kr   re  r{  r<  ra  r  r  rV  r   r/  typingr   r   torch._Crt   torch._numpyr-  rJ  torch.utils._pytreer  _pytreer  rZ  r   r   bytecode_transformationr   r	   create_parameter_opr
   excr   r   guardsr   r   mutation_guardr   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r    r!   user_definedr"   r#   r$   torch._dynamo.symbolic_convertr%   r'   r2   r   r   r   r   r  r  r  r  	dataclassrb  r;  r  rs   rf   r  r  r  r  	lru_cacher   r%  r'  rM  r   r[  ru  r  r  r  r  r  r  r  finfoiinfor  r6  r  r  r  r)   r/   r0   <module>r     s  "      	 
   *   $ $   N F 9 0 5 M M
 
 
 " & G X X D	 	KCO KC\p pfo o :7 :7z;? ;(# #
%p= p=f M M Ml-&? l-^&H6 &HR(_ (};o };@)#O )#X &#=? #=L=E_ =E@ Q  ( Q(  (j"O j"\
?? 
?-o -.M? .Mb4 4n
O 
<7+? 7+t!/ !!5 #/ #(0 (	(- 	( II$II$II! 
/ 
"N_ Nb>o >r/   