
    IЦi                     0   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	r	S SK
JrJrJrJr  S SKrS SKJr  S SKJ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!  SSK"J#r#J$r$  SS	K%J&r&  SS
K'J(r(J)r)J*r*J+r+J,r,J-r-  SSKJ.r.J/r/J0r0J1r1J2r2  SSK3J4r4  SSK5J6r6J7r7J8r8J9r9  SSK:J;r;  SSK<J=r=J>r>J?r?  \(       a  S SK@JArA   " S S5      rB " S S\45      rC " S S\45      rD " S S\45      rE " S S\E5      rF " S S\45      rG " S S\45      rH " S  S!\45      rI " S" S#\45      rJ " S$ S%\45      rK " S& S'\45      rLS( rM " S) S*\45      rN\R                   " S+ S,5      5       rP " S- S.\?5      rQ " S/ S0\?5      rR " S1 S2\45      rS " S3 S4\45      rT " S5 S6\45      rU " S7 S8\45      rV " S9 S:\45      rW " S; S<\45      rX\R                  " SS=9S> 5       rZ " S? S@\45      r[ " SA SB\45      r\ " SC SD\45      r] " SE SF\45      r^ " SG SH\45      r_ " SI SJ\45      r` " SK SL\45      ra " SM SN\a5      rb " SO SP\a5      rc " SQ SR\a5      rd " SS ST\a5      re " SU SV\a5      rf\R                  \e\R                  \e\R                  \f0rj " SW SX\45      rk " SY SZ\45      rl " S[ S\\45      rmg)]    N)DictListOptionalTYPE_CHECKING   )config	variables)create_call_functioncreate_instruction)$do_not_convert_to_tracable_parameterunimplemented)GuardBuilderinstall_guard)unpatched_nn_module_init)
AttrSourceDefaultsSourceGetItemSourceODictGetItemSource
TypeSourceWeakRefCallSource)check_unspec_or_constant_argsidentityis_tensor_base_attr_getterproxy_args_kwargsset_example_value   )VariableTracker)NestedUserFunctionVariableUserFunctionVariableUserMethodVariablewrap_bound_arg)UnspecializedNNModuleVariable)call_random_fnis_standard_setattrUserDefinedObjectVariable)InstructionTranslatorc                       \ rS rSrSrg)NO_SUCH_SUBOBJ6    N)__name__
__module____qualname____firstlineno____static_attributes__r+       [/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/_dynamo/variables/misc.pyr)   r)   6   s    r1   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U 4S jjrSrU =r$ )SuperVariable:   returnc                 >   > [         TU ]  " S0 UD6  Xl        X l        g Nr+   )super__init__typevarobjvar)selfr;   r<   kwargs	__class__s       r2   r:   SuperVariable.__init__?   s!    "6" 
 r1   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	   BuiltinVariabler9   )r?   codegens   r2   <lambda>+SuperVariable.reconstruct.<locals>.<lambda>L   s    gi.G.G.N&Or1   r   Fr   )add_push_nullr;   r<   extend_outputr
   )r=   rE   r?   s    `r2   reconstructSuperVariable.reconstructK   s`    OP;;"DKK !!"6q%"@A!!"6q%"@Ar1   txr'   c           	      B  > 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S nS nUR                  n	 U	R                  U5      S-   n
[        U
[        U	5      5       Hc  nX   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<   r;   as_python_constantpython_typesourcer   
issubclasstypevaluerN   index
ValueErrorgetattrr9   rangelen__dict__getr)   r   r   r   )r=   rL   namesearch_typetype_to_usetype_to_use_sourcerQ   resolved_classresolved_attr
search_mrostart_indexrU   resolved_getattrr?   s                r2   _resolved_getattr_and_source*SuperVariable._resolved_getattr_and_sourceT   sm   {{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   E: :!FFr\   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rQ   )
re   r	   ConstantVariable
is_literalGetAttrVariabler   
make_guardr   CONSTANT_MATCHcreate)r=   rL   r\   rT   rQ   s        r2   var_getattrSuperVariable.var_getattr   sn     99$E))44U;;"4..&++L,G,GHI))000FFr1   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O*U R                  R(                  (       aB  U[        R*                  L a/  UR,                  R                  R/                  U R                  5      $ [        U[0        5      (       aX  [        UR2                  [4        R6                  5      (       a/  [        R                   " UR2                  US9R%                  XU5      $ [        U[8        5      (       ac  [        UR2                  [4        R6                  5      (       a:  [        R:                  " UR2                  U R                  US9R%                  XU5      $ [        U[4        R6                  5      (       a2  [        R                   " XVS9R%                  XR                  /U-   U5      $ [        U[4        R<                  5      (       a:  [        R:                  " UR2                  U R                  US9R%                  XU5      $ U[>        R@                  RB                  L a  [        U R                  [        R                  5      (       a  U R                  R(                  (       a  [E        U5      S:X  a  [E        U5      S:X  a  US   RG                  5       (       a~  US   RI                  5       n	[>        R@                  RC                  U R                  RJ                  U	5      n
[M        U R                  R(                  U	5      n[N        RP                  " XU5      $ U[>        R@                  RR                  [        RT                  4;   aj  [        U R                  [        RV                  5      (       aA  U(       d  [E        U5      S:X  d   e[X        [        RV                  U R                  ]  USX45      $ U[>        R@                  RB                  L aR  [        U R                  [        RV                  5      (       a)  [X        [        RV                  U R                  ]  USX45      $ []        U5      (       a?  [        U R                  [        5      (       a   U R                  R^                  " U/UQ70 UD6$ U[        R`                  L a  US   n URI                  5       nUR,                  R                  Re                  U R                  5      (       d  ['        S
U R                   SU S35        UR,                  R                  Rg                  U R                  U[        Rh                  " 5       5        [        Rj                  " S 5      $ ['        SU 35        g ! , (       d  f       N= f! [b         a    ['        S	U 35         Nf = f)Nr   )AttributeMutationNewrh   zsuper() nn.Module.__init__r   r   __setitem____getitem__znon-const delattr attr: zdelattr(, z, ...)znon-function or method super: )6re   objectr:   LambdaVariabler   torchnnModuler<   side_effectsrr   
isinstancer	   r&   mutation_typer   r    r   call_functionr   rQ   __new__output(track_object_new_from_user_defined_classstaticmethod__func__typesFunctionTypeclassmethodr!   
MethodTypecollectionsOrderedDictrt   rY   is_python_constantrO   rT   r   r   buildrs   __setattr__CustomizedDictVariabler9   call_methodr%   method_setattr_standard__delattr__NotImplementedErroris_attribute_mutation
store_attrDeletedVariableri   )r=   rL   r\   argsr>   inner_fnrQ   r<   rr   keyrT   attrr?   s               r2   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 <;
 :;[[H$>99))RR  ,//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-. //;;;4;;	(K(KLL""D	QFq Q**,,q',,.C++778I8I3OE'(:(:C@F"((F;;##//
 
 i&F&FGG#d)q.00994;;SM4  00<<<KK99B
 B
 994;;SM4  !**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6xjABU <;@ ' A 8?@As   7Y	 Y 	
YY54Y5)r<   r;   rC   r6   NrL   r'   r   List[VariableTracker]r>   Dict[str, VariableTracker]r6   r   )r,   r-   r.   r/   r   _nonvar_fieldsr:   rJ   re   strro   r   r0   __classcell__r?   s   @r2   r4   r4   :   s    		'	'N
 
B/9bG5 GS GEV G ]C &	]C
 -]C 
]C ]Cr1   r4   c                   2   ^  \ rS rSrSU 4S jjrS rSrU =r$ )ExceptionVariable   c                 >   > [         TU ]  " S0 UD6  Xl        X l        g r8   )r9   r:   exc_typer   )r=   r   r   r>   r?   s       r2   r:   ExceptionVariable.__init__   s    "6" 	r1   c                    ^ ^ TR                  UU 4S j5        TR                  T R                  5        TR                  [	        T R                  5      S5        g )Nc                  P   > T R                  STR                  R                  5      $ )Nbuiltins)load_import_fromr   r,   rE   r=   s   r2   rF   /ExceptionVariable.reconstruct.<locals>.<lambda>   s    G,,Z9O9OPr1   F)rH   foreachr   r~   rY   r=   rE   s   ``r2   rJ   ExceptionVariable.reconstruct   s>    P	
 			"c$))ne4r1   )r   r   r   )r,   r-   r.   r/   r:   rJ   r0   r   r   s   @r2   r   r      s    
5 5r1   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__r0   r+   r1   r2   r   r         r1   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+   r1   r2   r   r   	  r   r1   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   s     r2   rJ   ComptimeVariable.reconstruct  s    !"<==r1   rL   r'   r\   r6   r   c                 b    SSK J n  SSKJn  U" [        X25      [	        U R
                  U5      S9$ )Nr   )comptimer   )r    rh   )r   	functionsr    rW   r   rQ   )r=   rL   r\   r   r    s        r2   ro   ComptimeVariable.var_getattr  s,    ' 	4#H#Jt{{D,I
 	
r1   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   rY   r|   r    get_functionr   get_codeclosureco_freevarsr   r   	f_globalsfn_namerO   defaultstupleitemsRuntimeErrorrS   r	   ri   rn   )r=   rL   r   r>   r   fncodefuncs           r2   r~   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6r1   r+   NrL   r'   r   r   r>   r   r6   r   )
r,   r-   r.   r/   r   rJ   r   ro   r~   r0   r+   r1   r2   r   r     sS    
>
5 
S 
EV 
'7#'7 &'7 -	'7
 
'7r1   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$ )	CellVariableiL  pre_existing_contentsN
local_namer6   c                 2   > [         TU ]  " S0 UD6  Xl        g r8   )r9   r:   r   )r=   r   r>   r?   s      r2   r:   CellVariable.__init__Y  s     	"6"%:"r1   )r   rC   )r,   r-   r.   r/   r   r   __annotations__r   r   r:   r0   r   r   s   @r2   r   r   L  sF     $O44 !%J$ BF;%-o%>;	; ;r1   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 r8   r9   r:   r=   r>   r?   s     r2   r:   NewGlobalVariable.__init__a      "6"r1   r+   r   )r,   r-   r.   r/   r:   r0   r   r   s   @r2   r   r   `  s    # #r1   r   c                      ^  \ rS rSrSrSS1\R                  kr\S 5       rS\SS4U 4S	 jjr	S
SS\
SS4U 4S jjr      SU 4S jjrS rSrU =r$ )InspectSignatureVariableie  z!represents inspect.signature(...)	signature
parametersc                 x    U(       a  [        SU 35        [        U [        R                  R	                  5       S9$ )Nzinspect.signature with r}   )r   r   r	   baseValueMutationNew)callabler>   s     r2   rn   InspectSignatureVariable.createn  s4    3F8<='INN$C$C$E
 	
r1   	inspectedr6   Nc                   > [         TU ]  " S0 UD6  Xl         [        U R                  S5      (       a   U R                  R	                  5       U l        O[[        U R                  [        5      (       a  U R                  R                  U l        O U R                  R                  5       U l         [        R                  " U R
                  5      U l        [        U R                  R                  R!                  5       5      U l        [        U R                  ["        5      (       a  U R                  SS  U l        g g ! [         a    [        S5         Nf = f)Nr   z,inspect.signature with non-constant functionr   r+   )r9   r:   r   hasattrr   r   r|   r#   rT   rO   r   r   inspectr   listr   r   r!   )r=   r   r>   r?   s      r2   r:   !InspectSignatureVariable.__init__v  s    "6""	Jt~~~66..557DNN,IJJ......;;= !**4773t~~88>>@Adnn&899"ooab1DO : # 	JHI	Js   :D; :D; D; ;EErL   r'   r\   r   c           
         > US:X  aa  [         R                  " U R                   Vs0 s H2  n[         R                  R	                  US   5      [        US   5      _M4     sn[        S9$ [        TU ]!  X5      $ s  snf )Nr   r   r   )user_cls)	r	   ConstDictVariabler   ri   rn   InspectParameterVariabledictr9   ro   )r=   rL   r\   paramr?   s       r2   ro   $InspectSignatureVariable.var_getattr  s    <..
 "&	 "1 ..55a/a9: "1	   w"2,,s   9A8c           
      ~  > US:X  Ga  [        U R                  S5      (       d  [        SU R                   S35        U R                  R                  " U0 UD6n0 nU R                  R
                  (       a  [        R                  " [        US9nU R                  R
                   Vs0 s H(  nUU R                  c  S O[        U R                  USS9_M*     n	nU R                  R
                  R                  5        VV
s0 s H  u  pX" XU   S9_M     nnn
[        UUU 5      $ [        TU ]9  XX45      $ s  snf s  sn
nf )	Nbind__kwdefaults__zinspect.signature.bind with z without __kwdefaults__)rL   T)is_kw)valrQ   )r   r   r   r   r   r   	functoolspartialr"   rQ   r   r   InspectBoundArgumentsVariabler9   r   )r=   rL   r\   r   r>   objr   wrapkkwdefaults_sourcesvr?   s              r2   r   $InspectSignatureVariable.call_method  sI    6>477$4552477);RS ..%%t6v6C Hww%% ((B? "WW33& 4 ;;. +DKK$GH
 4 # & !% 6 6 < < > > tQ*?@@ >  
 1 
 w"2T::%&s   '/D4?D9c                    ^ TR                  U4S j5        T" U R                  5        TR                  [        SS5      5        g )Nc                  n   > T R                  T R                  [        5      T R                  S5      /5      $ )Nr   )rI   create_load_python_moduler   create_load_attrrE   s   r2   rF   6InspectSignatureVariable.reconstruct.<locals>.<lambda>  s1    G))55g>,,[9r1   r   F)rH   r   rI   r
   r   s    `r2   rJ   $InspectSignatureVariable.reconstruct  s:    	
 	21e<=r1   )r   r   r   r   r   )r,   r-   r.   r/   r   r   r   r   rn   r:   r   ro   r   rJ   r0   r   r   s   @r2   r   r   e  s    + 	 
	'	'N 
 
2/ 2 2&-5 -S -EV -$; &	$;
 -$; 
$;L
> 
>r1   r   c                   F   ^  \ rS rSrSrSU 4S jjrSSS\SS4S	 jrS
rU =r	$ )r   i  z!represents inspect.Parameter(...)r6   c                 2   > [         TU ]  " S0 UD6  Xl        g r8   r9   r:   rT   r=   rT   r>   r?   s      r2   r:   !InspectParameterVariable.__init__      "6"
r1   rL   r'   r\   r   c                     [        U R                  U5      nU R                  =(       a    [        U R                  U5      n[        R
                  " XU5      $ ! [         a    [        SU R                   SU S35         g f = f)Nzgetattr(ru   ))rW   rT   rQ   r   r   r   AttributeErrorr   r=   rL   r\   
attr_valuerQ   s        r2   ro   $InspectParameterVariable.var_getattr  sm    	< T2J[[BZT%BF"((@@ 	<HTZZL4&:;	<s   AA &B BrT   r   )
r,   r-   r.   r/   r   r:   r   ro   r0   r   r   s   @r2   r   r     s,    +<5 <S <EV < <r1   r   c                      ^  \ rS rSrSrSS1\R                  krS\R                  S\	\
\4   S\4U 4S jjrS rS	S
S\
SS4U 4S jjr      SU 4S jjrS rSrU =r$ )r   i  z+represents inspect.signature(...).bind(...)bound_argumentspacked_varsr   r   c           
      z  > [         TU ]  " S0 UD6  Xl        X l        [	        5       U l        0 nUR                  R                  5        GH  u  pg[        R                  " U5      n[        U[        5      (       a>  [        R                  " [        U5      5      XX'   U R
                  R                  U5        Mo  [        U[        5      (       am  U R
                  R                  U5        [        R                   " UR                  5        V	V
s0 s H  u  p[        R                  " U	5      U
_M     sn
n	5      XX'   M  [        U["        5      (       a  XuU'   GM  [%        S5        GM     [        R                   " U['        UR                  5      [        R(                  R+                  5       S9U l        X0l        g s  sn
n	f )NzKinspect.signature(...).bind(...).arguments contains non-variable/tuple/dictr   r+   )r9   r:   r  r   setr  	argumentsr   r	   ri   r|   r   TupleVariabler   addr   r   r   r   rS   r   r   bound_arguments_varr   )r=   r  r   r   r>   arguments_dictr   r   key_varr  r  r?   s              r2   r:   &InspectBoundArgumentsVariable.__init__  sU    	"6". 5'11779HC005G#u%%*3*A*A$s)*L'  $$S)C&&  $$S)*3*E*EBE))+N+$!Y//2A5+N+' C11*-w'a :$ $-#>#>**+#..99;$
 
 # Os   #F7c                    U R                   R                  R                  5        H  u  pUnUR                  U R                  ;   a  [	        U[
        R                  5      (       a  [        UR                  5      nOd[	        U[
        R                  5      (       a:  UR                  R                  5        VVs0 s H  u  pEUR                  U_M     nnnO[        S5        X0R                  R                  UR                  '   M     g s  snnf )Nz>inspect.signature(...).bind(...) cannot update bound arguments)r!  r   underlying_valuer  r|   r	   r  r   r   r   r  r  )r=   r   r   true_valr  r  s         r2   _update_bound_arguments5InspectBoundArgumentsVariable._update_bound_arguments  s    0066<<>HCH##t'7'77c9#:#:;;$SYY/HY%@%@AABE))//BSTBS$! 2 2A 5BSHTH!X DL  **3+?+?@ ?  Us   7DrL   r'   r\   r6   r   c                   > US:X  a  U R                   $ US:X  aC  U R                  5         [        R                  " [	        U R
                  R                  5      5      $ US:X  as  U R                  5         U R
                  R                  R                  5        VVs0 s H  u  p4[        R                  " U5      U_M     nnn[        R                  " U5      $ US:X  a  U R                  $ [        TU ]5  X5      $ s  snnf )Nr  r   r>   r   )r!  r(  r	   r  r   r  r   r>   r   ri   r   r   r9   ro   )r=   rL   r\   r   r   kwr?   s         r2   ro   )InspectBoundArgumentsVariable.var_getattr  s    ;+++V^((***40D0D0I0I+JKKX((* !% 4 4 ; ; A A C CHC **3/4 C   ..r22[ >>!w"2,,s   #C7c                 N  > US:X  a  U R                   R                  5        HK  u  pV[        R                  " U5      nXpR                  ;  d  M,  U R                  R                  USXv/0 5        MM     U R                  5         [        R                  " S 5      $ [        TU ]  XX45      $ )Napply_defaultsrs   )r   r   r	   ri   r!  r   r(  r9   )	r=   rL   r\   r   r>   r   r   r#  r?   s	           r2   r   )InspectBoundArgumentsVariable.call_method+  s     ## MM//1#44S9":"::,,88MG>2 2 ((*--d33w"2T::r1   c                 6  ^ ^ T R                  5         UU 4S jnTR                  USS9  TR                  T R                  R                  5        TR                  [        S[        T R                  R                  5      S95        T R                  R                  R                  5        H-  u  p4TR                  TR                  U5      5        T" U5        M/     TR                  [        S[        T R                  R                  5      S9[        SSS9/5        g )	Nc                  j   > T " TR                   5        T R                  T R                  S5      5        g )Nr   )r   append_outputr  r   s   r2   gen_fn9InspectBoundArgumentsVariable.reconstruct.<locals>.gen_fnG  s(    DNN#!!'":":6"BCr1   Tcall_function_exBUILD_TUPLEarg	BUILD_MAPCALL_FUNCTION_EXr   )r(  rH   r   r  r   r2  r   rY   r>   r   create_load_constrI   )r=   rE   r3  r   r   s   ``   r2   rJ   )InspectBoundArgumentsVariable.reconstructA  s     	$$&	D 	ft<,,112}#d6J6J6O6O2PQ	
 ,,3399;HC!!'";";C"@ACL < 	";C8L8L8S8S4TU"#51=	
r1   )r  r!  r   r  r   r   )r,   r-   r.   r/   r   r   r   r   BoundArgumentsr   r   r   r:   r(  ro   r   rJ   r0   r   r   s   @r2   r   r     s    5 	 
	'	'N%# //%# sO+,%# ,	%#NL-5 -S -EV -"; &	;
 -; 
;,
 
r1   r   c                 *   ^  U 4S jn[         Ul        U$ )Nc                  (   > TR                   " U 0 UD6$ rC   )apply)r   r>   fn_clss     r2   trampoline_autograd_applyDproduce_trampoline_autograd_apply.<locals>.trampoline_autograd_apply^  s    ||T,V,,r1   )!produce_trampoline_autograd_apply_origin)rB  rC  s   ` r2   rE  rE  ]  s    - )J%$$r1   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$ )AutogradFunctionVariableie  z-represents a torch.autograd.Function subclassrB  c                 2   > [         TU ]  " S0 UD6  Xl        g r8   )r9   r:   rB  )r=   rB  r>   r?   s      r2   r:   !AutogradFunctionVariable.__init__m  s    "6"r1   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)r|   r	   TensorVariablerequires_gradNNModuleVariableis_training)noderN  rL   s    r2   visit2AutogradFunctionVariable.call_apply.<locals>.visitt  s\    $	 8 899%%U2$(M$	 : :;;##B''$(M ( <r1   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   )AutogradFunctionApplyVariablerA  )memberrh   forwardsetup_contextz?non-function or method in subclass of torch.autograd.Function: )0r   rR  rx   is_grad_enabledr   capture_autograd_functionwarningswarn"torch._functorch.autograd_functionrT  torch.autograd.functionrU  rB  rX  rY  vjpautogradFunctionr   jvphigher_order_opsrV  rQ   r   import_sourcer-   r,   backwardr~   r   rl   r   FUNCTION_MATCHAutogradFunctionContextVariablern   r|   r   r   r   r   rY   _parametersr	   r    r   r!   r   UserDefinedClassVariable)r=   rL   r   r>   rR  rT  rU  
forward_fnis_setup_ctx_definedvjp_fnjvp_fnrV  rQ   r   fwd_srcsetup_ctx_srcr   ctxsigrN  s    `                 @r2   
call_apply#AutogradFunctionVariable.call_applyq  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r1   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   rf  rh   )rB  rf  rS   rT   rx   _dynamoexternal_utilsFakeBackwardCFunctionr|   r   r   r   rQ   r	   r    r~   )r=   rL   r   r>   r   	fn_sources         r2   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
 	
r1   c                 ,    [        U R                  5      $ rC   )rH  rB  r=   rL   r   r>   s       r2   r~   &AutogradFunctionVariable.call_function  s    '44r1   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_proxyrA  r~   )rL   proxyrf  )trace_rulesrh   zUnsupported method: )r  r  builderr  rB  rE  r   create_proxyr   rs  rz   rQ   r   r   getattr_staticr  r|   r   __get__lookupcreate_with_sourcer~   r   r	   r!   r   r   )r=   rL   r\   r   r>   r  r  rC  r  rQ   r   r   s               r2   r   $AutogradFunctionVariable.call_method  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)rB  r   r   )r   r   r>   r   )r,   r-   r.   r/   r   r   r   r:   rs  rz  r~   r   r0   r   r   s   @r2   rH  rH  e  sT    7 			'	'N
_B
56= &	6=
 -6= 6=r1   rH  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fieldr   r  r   r   r   r0   r+   r1   r2   r  r    s    %0%6%6t%LGT/"Lr1   r  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$ )rh  i  zR
Tracks an autograd.Function() context using mutation tracking in side_effects.py
r  	inferencesaved_tensorsc                 f   > [         T	U ]  " SXS.UD6  X0l        X@l        XPl        X`l        Xpl        g N)rT   
value_typer+   )r9   r:   r  r  r  needs_input_gradnon_differentiable)
r=   rT   r  r  r  r  r  r  r>   r?   s
            r2   r:   (AutogradFunctionContextVariable.__init__)  s6     	FuFvF"
* 0"4r1   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rC   )r|   r	   rM  rN  .0xs     r2   	<genexpr>9AutogradFunctionContextVariable.create.<locals>.<genexpr>?  s0      %A 1i667KAOOKs   :<r~   r+   T)r  r  r  r  )r   r   r  rx   ra  functionFunctionCtxr{   track_object_newr   r   rh  r  r   rQ  rT   )rL   r   r>   r  r  outs         r2   rn   &AutogradFunctionContextVariable.create;  s    $ %%   		&&U^^44@@"b
 ii$$55NN##///,.!1 
 	%**cii0
r1   c                 J    U R                   c  [        S5        U R                   $ )Nzproxy not set)r  r   r=   s    r2   as_proxy(AutogradFunctionContextVariable.as_proxyV  s    ::/*zzr1   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)r9   r   rY   r   r  r	   ri   rn   r   r  r  rQ   r   r{   track_save_for_backwardr  append)r=   rL   r\   r   r>   r9  r?   s         r2   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6r1   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      $ rC   )r   )r   r>   r\   r=   rL   s     r2   rF   =AutogradFunctionContextVariable.var_getattr.<locals>.<lambda>~  s    (8(8T4(Pr1   r  r  )rw   r  r	   r  r   r  r  ri   rn   rQ   r   r   r   rT   r9   ro   r=   rL   r\   rQ   r?   s   ``` r2   ro   +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,,r1   )r  r  r  r  r  )NFNNNNr   NNr   r   )r,   r-   r.   r/   r   r&   r   r:   r   rn   r  r   ro   r0   r   r   s   @r2   rh  rh    s    
 	 
#	1	1	N 5 
5 5$  4
7 &	7
 -7 
7@- -r1   rh  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 r  r   )r=   rT   r  r>   r?   s       r2   r:   AutogradEngineVariable.__init__  s     	FuFvFr1   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=Truerh   z#torch._C._ImperativeEngine method: )rx   rv  compiled_autogradin_compiled_autograd_region	one_graphr	   r    rw  FakeCompiledAutogradEnginer  rQ   r~   r   r{   get_ca_final_callbacks_varr   r=   rL   r\   r   r>   s        r2   r   "AutogradEngineVariable.call_method  s     ##}}..JJLLnmn  55MM00KKZZ;;  -YY++FFHP4P n ?vFGr1   r+   rC   r   r   	r,   r-   r.   r/   r   r:   r   r0   r   r   s   @r2   r  r    sQ     G
 
G GH &	H
 -H 
H Hr1   r  c                   F   ^  \ rS rSrSU 4S jjr        SS jrSrU =r$ )rw   i  c                 2   > [         TU ]  " S0 UD6  Xl        g r8   )r9   r:   r   )r=   r   r>   r?   s      r2   r:   LambdaVariable.__init__  s    "6"r1   c                 &    U R                   " U0 UD6$ rC   r   r}  s       r2   r~   LambdaVariable.call_function  s     ww'''r1   r  r   r   )r,   r-   r.   r/   r:   r~   r0   r   r   s   @r2   rw   rw     s8    (#( &( -	(
 
( (r1   rw   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$ )rk   i  r\   py_typer6   c                    > [         TU ]  " S0 UD6  [        U[        5      (       d   e[        U[        5      (       d   eXl        X l        X0l        g r8   )r9   r:   r|   r   r   r   r\   r  )r=   r   r\   r  r>   r?   s        r2   r:   GetAttrVariable.__init__  sH    "6"#////$$$$$	r1   c                 T   > U R                   b  U R                   $ [        TU ]	  5         g rC   )r  r9   rP   r=   r?   s    r2   rP   GetAttrVariable.python_type  s"    <<#<<G!r1   c                 h    U R                   R                   SU R                   SU R                   S3$ N(ru   r  )r?   r,   r   r\   r  s    r2   __repr__GetAttrVariable.__repr__  s.    ..))*!DHH:R		{!DDr1   
base_proxyc                     [        X5      $ rC   )rW   )r  r   s     r2   create_getattr_proxy$GetAttrVariable.create_getattr_proxy  s    z((r1   c                 r    [         R                  U R                  R                  5       U R                  5      $ rC   )rk   r  r   r  r\   r  s    r2   r  GetAttrVariable.as_proxy  s&    33DHH4E4E4GSSr1   c                     U R                   R                  5       n [        XR                  5      $ ! [         a    [        U  S35      S ef = f)Nz is not a constant)r   rO   rW   r\   r  r   )r=   constants     r2   rO   "GetAttrVariable.as_python_constant  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      $ rC   )r|   r   r	   rO  r   r   get_submodule
module_keyr\   rZ   r   r  )r=   rL   r\   step1step2s        r2   const_getattrGetAttrVariable.const_getattr  s    $((I$>$>??%%		''(;(;<99ENN*%%&&uii8~~%%%%%e22r1   c                 |    U" U R                   5        UR                  UR                  U R                  5      5        g rC   )r   rI   create_load_attrsr\   r   s     r2   rJ   GetAttrVariable.reconstruct  s+    g77		BCr1   r   r>   c                 N    U R                   R                  XR                  X#5      $ rC   )r   r   r\   r}  s       r2   r~   GetAttrVariable.call_function  s     xx##B		4@@r1   c                   > US;   a  U R                   S:X  a  U(       d  US   R                  5       (       a  [        U R                  [        R
                  [        R                  [        R                  45      (       aw  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      $ 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      $ [        TU ]9  XX45      $ )
N)rt   r[   rZ   r   r[   r   r   __contains__TF)r\   r   r|   r   r	   r&   rO  rj  rO   has_key_in_generic_dictro   rY   ri   r9   r   )r=   rL   r\   r   r>   r   r   r?   s          r2   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w"2T::r1   )r\   r   r  rC   r   r   r   )r,   r-   r.   r/   r   r   r:   rP   r   r  r   rx   fxProxyr  r  rO   r  rJ   r~   r   r   r   r0   r   r   s   @r2   rk   rk     s     
	'	'N "E# E ) ) )TM	3DA#A &A -	A
 
A8; ?#	8;
 S/)*8; 
8; 8;r1   rk   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                 2   > [         TU ]  " S0 UD6  Xl        g r8   )r9   r:   method_wrapper)r=   r  r>   r?   s      r2   r:   MethodWrapperVariable.__init__<  s    "6",r1   c                 B  > [        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      $ [        TU ])  XU5        g )Nr   r   )r   r  r|   r	   rM  rY   ro   __self__r,   r9   r~   )r=   rL   r   r>   r?   s       r2   r~   #MethodWrapperVariable.call_function@  s     &d&9&9::zGY--@
 @
 t9>c&kQ&6667&&r+>+>+G+G+P+PQQb/r1   c                     gNTr+   r  s    r2   r   (MethodWrapperVariable.is_python_constantO      r1   c                     U R                   $ rC   r  r  s    r2   rO   (MethodWrapperVariable.as_python_constantR  s    """r1   r  r   r   )
r,   r-   r.   r/   r:   r~   r   rO   r0   r   r   s   @r2   r  r  ;  sB    -0#0 &0 -	0
 
0# #r1   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	$ )	GetSetDescriptorVariableiV  c                 2   > [         TU ]  " S0 UD6  Xl        g r8   )r9   r:   desc)r=   r  r>   r?   s      r2   r:   !GetSetDescriptorVariable.__init__W  s    "6"	r1   c                    > US:X  aR  U R                   (       aA  [        U R                   S5      n[        R                  " XR                  R
                  U5      $ [        TU ]  X5      $ )Nr  )rQ   r   r   r   r  r  r9   ro   r  s       r2   ro   $GetSetDescriptorVariable.var_getattr[  sN    9Y7F"((YY->->GG7&r00r1   c                     gr  r+   r  s    r2   r   +GetSetDescriptorVariable.is_python_constantb  r  r1   c                     U R                   $ rC   r  r  s    r2   rO   +GetSetDescriptorVariable.as_python_constante  s    yyr1   r  r   r   )
r,   r-   r.   r/   r:   ro   r   rO   r0   r   r   s   @r2   r  r  V  s    1 r1   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$ )PythonModuleVariableii  rT   is_torchr6   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+   )r9   r:   rT   rx   r,   
startswithr  r  s      r2   r:   PythonModuleVariable.__init__p  sB    "6"


e+Wtzz/B/B/M/Mh/Wr1   c                 "    [         R                  $ rC   )r   
ModuleTyper  s    r2   rP    PythonModuleVariable.python_typeu  s    r1   c                     U R                   $ rC   r  r  s    r2   rO   'PythonModuleVariable.as_python_constantx      zzr1   c                 "    SU R                    S3$ )NzPythonModuleVariable(r  r  r  s    r2   r  PythonModuleVariable.__repr__{  s    &tzzl!44r1   c                 l    [        U R                  U5      n[        R                  R	                  U5      $ rC   )r   rT   r	   ri   rn   r=   rL   r\   results       r2   call_hasattr!PythonModuleVariable.call_hasattr~  s)    T*))0088r1   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      $ rC   )r   r{   has_pending_mutation_of_attr	load_attrr  rT   rZ   rW   rQ   r   r   r   r  s        r2   ro    PythonModuleVariable.var_getattr  s    99!!>>tJJ99))33D??==D

(;(;; T2J,,T2J>DKK!>$$RV<<r1   )r  rT   r   )r,   r-   r.   r/   r   r   r   r  r:   rP   rO   r   r  r  ro   r0   r   r   s   @r2   r  r  i  sa     
	'	'NXe.. XT X
 5# 59
= 
=r1   r  c                   Z   ^  \ 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	r	U =r
$ )TypingVariablei  c                 2   > [         TU ]  " S0 UD6  Xl        g r8   r  r  s      r2   r:   TypingVariable.__init__  r  r1   c                     US:X  a:  [        U5      S:X  a+  U R                  US   R                  5          n[        U5      $ [	        S5        g )Nrt   r   r   z+unsupported method call on typing variablel)rY   rT   rO   r%  r   )r=   rL   r\   r   r>   
new_typings         r2   r   TypingVariable.call_method  sE     = SY!^DG$>$>$@AJ!*--CDr1   rL   r'   r\   c                 B   SSK JnJn  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" X5      $ )Nr   )SourcelessBuilderVariableBuilder)r  r,  r-  r   r{   r!  r"  rW   rT   rQ   r   )r=   rL   r\   r,  r-  rT   attr_sources          r2   ro   TypingVariable.var_getattr  sw    ?99!!>>tJJ??,,T88

D);;$T[[$7K"23E::$R//r1   c                     U R                   $ rC   r  r  s    r2   rO   !TypingVariable.as_python_constant  r  r1   r  r   r   )r,   r-   r.   r/   r:   r   r   ro   rO   r0   r   r   s   @r2   r%  r%    sM    E &	E
 -E 
E05 0S 0 r1   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$ )Nr   )NP_TO_TNP_MODULE)utilsr4  r   rZ   r   rW   )r4  np_fn_to_tnp_fnnp_modtnp_modr   tnp_fnnp_fns          r2   get_np_to_tnp_mapr;    si    (O+113&//557OG $FT::5:-3E*  8 4 r1   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 r8   r  r  s      r2   r:   NumpyVariable.__init__  r  r1   c                     UR                   R                  S5      n[        U5      S:  a  US S SS/:X  d   eXR                  ;   $ N.r   rx   _numpy)r-   splitrY   constant_fold_functionsclsr   mods      r2   can_constant_fold_through'NumpyVariable.can_constant_fold_through  sH    mm!!#&3x1}RaWh,?!???0000r1   c                     UR                   R                  S5      n[        U5      S:  a  US S SS/:X  d   e[        R	                  US 5      $ rA  )r-   rD  rY   np_constant_collections_mapr[   rF  s      r2    get_constant_collection_for_func.NumpyVariable.get_constant_collection_for_func  sL    mm!!#&3x1}RaWh,?!???*..r488r1   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=r~   )r   trace_numpyr   rT   r5  rP  tensorrQ  r;  r[   rM  rO   r   r   r,   r-   use_numpy_random_streamr.   
patch_argsrI  r   r	   ri   rn   r   r  r   )r=   rL   r   r>   rP  rQ  r   collection_variable_typr  r  r  msgr  s                r2   r~   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numpyr   r  s        r2   r   NumpyVariable.call_method  s     	gr1   c                     U R                   $ rC   r  r  s    r2   rO    NumpyVariable.as_python_constant#  r  r1   c                    > [         R                  (       a5  [        U R                  [        5      (       a  U R                  R
                  $ [        TU ]  5       $ rC   )r   rS  r|   rT   rS   r,   r9   r  r  s    r2   r  NumpyVariable.as_proxy&  s<    *TZZ">"> ::&&&w!!r1   r  r   r   r   )r,   r-   r.   r/   r   tnp
issubdtyperE  r:   r   rI  rM  r~   r   rO   r  r0   r   r   s   @r2   r=  r=    s      #~~/ 1 1
 9 9
>:#>: &>: -	>:
 
>:@ &	
 - 
" "r1   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	$ )NullVariablei1  r6   c                 &   > [         TU ]  " S0 UD6  g r8   r   r   s     r2   r:   NullVariable.__init__2  r   r1   c                     g)Nrd  r+   r  s    r2   r  NullVariable.__repr__5  s    r1   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   r2  r   r   s     r2   rJ   NullVariable.reconstruct8  s-    g%LM0=>r1   r+   r   )
r,   r-   r.   r/   r:   r   r  rJ   r0   r   r   s   @r2   rd  rd  1  s    ## ? ?r1   rd  c                       \ rS rSrSrSrg)r   i>  z"Marker used to implement delattr()r+   Nr   r+   r1   r2   r   r   >  s    ,r1   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$ )StringFormatVariableiB  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rC   )r   r  s     r2   r  .StringFormatVariable.create.<locals>.<genexpr>K  s#      
C   ""Cs   )all	itertoolschainvaluesr	   ri   rn   formatrO   r   r   r   )rG  rs  sym_args
sym_kwargsr  r  s         r2   rn   StringFormatVariable.createI  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r6   c                 x   > [         TU ]  " S0 UD6  [        U[        5      (       d   eXl        X l        X0l        g r8   )r9   r:   r|   r   rs  r|  r}  )r=   rs  r|  r}  r>   r?   s        r2   r:   StringFormatVariable.__init__W  s6    "6"-----* $r1   c                     U R                   R                   SU R                  < SU R                  < SU R                  < S3$ r  )r?   r,   rs  r|  r}  r  s    r2   r  StringFormatVariable.__repr__^  sB    ..))*!D,>,>+ADMMCTTVW[WfWfViijkkr1   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      $ )Nr{  )rI   r<  rs  r  r   s   r2   rF   2StringFormatVariable.reconstruct.<locals>.<lambda>c  s7    G))--d.@.@A,,X6r1   Tr5  r;  r   r8  )rH   r	   r  r|  r}  r   ri   rn   r   r2  r   )r=   rE   r  r  r>   s   ``   r2   rJ    StringFormatVariable.reconstructa  s     " 	 	
 		''67@D@U@U@W
@WI&&--a0!3@W 	 
 		++F3401CKL	
s   ,C )rs  r|  r}  r   )r,   r-   r.   r/   r   r   r   r   rn   r:   r   r  rJ   r0   r   r   s   @r2   rr  rr  B  sP     &G(F(FGND D%l# lM Mr1   rr  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$ )DebuggingVariableis  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 r8   r  r  s      r2   r:   DebuggingVariable.__init__y  r  r1   c                     [        U 5      =(       aX    [        U [        R                  [        R                  45      =(       a'    U [
        R                  R                  R                  ;   $ rC   )	r   r|   r   r   BuiltinFunctionTyperx   rv  r   reorderable_logging_functions)r   s    r2   is_reorderable_logging_function1DebuggingVariable.is_reorderable_logging_function}  sO     SM J3!3!3U5N5N OPJu}}++III	
r1   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 rR  z is not yet implemented.)exportcan_reorder_logsrT   r   debug_localsr  r   r}  s       r2   r~   DebuggingVariable.call_function  sl    99$$TZZ>>0 =#fAfX-EG
 	d4j12r1   c                 8    U R                   R                  U5      $ rC   )rQ   rJ   r   s     r2   rJ   DebuggingVariable.reconstruct  s    {{&&w//r1   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	   rM  ri   rr  pytreetree_leavesr|   )r   r   r>   allowed_input_types	flat_argsr9  s         r2   r  "DebuggingVariable.can_reorder_logs  sR     $$&& 
 &&~6	Cc77  r1   r  r   r   )r6   T)r,   r-   r.   r/   r   r:   r   r  r~   rJ   r  r0   r   r   s   @r2   r  r  s  s?    
 
 
30  r1   r  c                   F   ^  \ rS rSrSrSU 4S jjr      SS jrSrU =r$ )LoggingLoggerVariablei  z4
Represents a call to any of logging.Logger methods
c                 2   > [         TU ]  " S0 UD6  Xl        g r8   r  r  s      r2   r:   LoggingLoggerVariable.__init__  r  r1   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  rW   rT   intersectionrx   rv  r   ignore_logger_methodsr	   ri   rn   r   )r=   rL   r\   r   r>   methodr  s          r2   r   !LoggingLoggerVariable.call_method  sw     99T406:t4**5==+?+?+U+UVV--44T::Y	
r1   r  r   r   r  r   s   @r2   r  r    s5    
 &	

 -
 

 
r1   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+   r6   c                 2   > [         TU ]  " S0 UD6  Xl        g r8   r  r  s      r2   r:   ConstantLikeVariable.__init__  r  r1   c                     U R                   $ rC   r  r  s    r2   rO   'ConstantLikeVariable.as_python_constant  r  r1   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)NrB  z(*z, **r  z() -> )rO   r   r   r   _error_prefixrW   rT   r	   ri   rj   rn   r|   reMatchConstantRegexMatchVariable)r=   rL   r\   r   r>   r  cargsr  r  ckwargsr  s              r2   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rL   r'   r\   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      $ rC   )rW   rT   r|   np_floatingfloatnp_dtypeNumpyDTypeVariablerS   rR   
np_genericr=  r	   ri   rj   rn   rk   r  s       r2   ro    ConstantLikeVariable.var_getattr  s    T*f..//6]Ffmm,,%f--fd##
6??(K(K ((%%0088--44V<<t**r1   r  r   )r,   r-   r.   r/   r   r  r[  r  r  r  r  r  r  ImportErrorrS   r:   rO   r   r   r   r   r   ro   r0   r   r   s   @r2   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  r0   r+   r1   r2   r  r    s     Mr1   r  c                       \ rS rSrSrSrg)r  i  zre.Matchr+   Nr  r+   r1   r2   r  r    s    Mr1   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 )NrT   r+   )
setdefaultrx   __version__r9   r:   r   s     r2   r:   TorchVersionVariable.__init__  sA    '5#4#45g%"3"3333"6"r1   r+   r   )r,   r-   r.   r/   r  r:   r0   r   r   s   @r2   r  r  
  s    'M# #r1   r  c                       \ rS rSrSrSrg)NumpyTypeInfoVariablei  znp.iinfo/np.finfor+   Nr  r+   r1   r2   r  r    s    'Mr1   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).
)rT   rS   r,   r  s    r2   r  NumpyDTypeVariable.as_proxy  s     zz'''r1   r+   N)r,   r-   r.   r/   r  r  r0   r+   r1   r2   r  r    s    #M(r1   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 r8   r   r   s     r2   r:   RandomClassVariable.__init__-  r   r1   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   )seedr}   )rY   r   r	   ri   rn   RandomVariabler   r   )r=   rL   r   r>   r  s        r2   r~   !RandomClassVariable.call_function0  sh    t9q=8978:=d)q.y))006dSTgY^^%D%D%F
 	
r1   r+   r   r   )	r,   r-   r.   r/   r   r:   r~   r0   r   r   s   @r2   r  r  *  s    #
 
r1   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  r6   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 r8   )r9   r:   is_supported_random_objr  RandomsetstategetstaterO   )r=   r  r  r>   r?   s       r2   r:   RandomVariable.__init__O  s|     	"6"//5555 --/DKKK  1040@4**,dD ---DKr1   c                 "    [         R                  $ rC   )r  r  r  s    r2   rP   RandomVariable.python_type^  s    }}r1   c                     U R                   $ rC   r  r  s    r2   rO   !RandomVariable.as_python_constanta  s    {{r1   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)rS   r  r  rx  ry  r  _supported_fn_namesr   rW   r   	isbuiltinr  )r   r\   meths      r2   r  &RandomVariable.is_supported_random_objd  s    9FMM)OO..0P
D 3%%3%D  &&76==$7??DD  E 4T2'&--QU:VV 
 r1   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rC   )rS   intr  s     r2   r  -RandomVariable.check_state.<locals>.<genexpr>|  s     48a47c>8s    r   )rS   r   r  rw  r  )states    r2   check_stateRandomVariable.check_statew  s    E{e###E!H~$$$E!H~&&&45844444Qx4a>U#:::#:r1   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  ri   rn   )r  r  s     r2   
wrap_stateRandomVariable.wrap_state  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$ rC   )rO   r  r  )r  	state_objs     r2   unwrap_stateRandomVariable.unwrap_state  s$    ,,.	""9-r1   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$ rC   )r  r  r  rW   )r   r>   rr\   r  s      r2   call_random_meth4RandomVariable.call_method.<locals>.call_random_meth  s1    MMO

5!q$'888r1   )r   r{   mutationr  r  rO   r   r	   ri   rn   r  r  r  r  r  rW   r$   r9   r   )r=   rL   r\   r   r>   r  r   r   r  r  r  r  r?   s     `        @r2   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  )rI   r  r  r  r	  s   r2   rF   ,RandomVariable.reconstruct.<locals>.<lambda>  s1    G))55f=,,X6r1   r   Fr  r   T)rH   r~   dup_topr"  r  r  r  pop_topr   s    `r2   rJ   RandomVariable.reconstruct  sz    	
 	a' 	*% 4 4 678a&r1   r  r  )r,   r-   r.   r/   r   r   r   r  r   r  r  r:   rP   rO   r   r  r  r  r  r   r   r   r   rJ   r0   r   r   s   @r2   r  r  ;  s     			'	'N
 )-*..v}}%. '.
 
. .  $ ; ; 

 

  
%; ?#	%;
 S/)*%; 
%;N r1   r  c                   R   ^  \ rS rSr\S 5       rU 4S jr        SS j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$ )NrQ   )r[   r   r   r   r	  )rL   weakref_valueoptionsrQ   referentreferent_vts         r2   r   WeakRefVariable.build  sS    Xt, ?5-f5%++B&A"{6g66r1   c                 2   > [         TU ]  " S0 UD6  Xl        g r8   )r9   r:   r  )r=   r  r  r?   s      r2   r:   WeakRefVariable.__init__  s    #7#&r1   c                     U R                   $ rC   r  r}  s       r2   r~   WeakRefVariable.call_function  s     r1   r  r   )
r,   r-   r.   r/   r   r   r:   r~   r0   r   r   s   @r2   r	  r	    sJ    7 7' #  &  -	 
 
   r1   r	  )nr   r  r   r   rx  r  r  rm  r   r\  typingr   r   r   r   torch._Crx   torch._numpyrC  ra  torch.utils._pytreer5  _pytreer  r  r   r	   bytecode_transformationr
   r   create_parameter_opr   excr   guardsr   r   mutation_guardr   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   	nn_moduler#   user_definedr$   r%   r&   torch._dynamo.symbolic_convertr'   r)   r4   r   r   r   r   r   r   r   r   r   rE  rH  	dataclassr  rh  r  rw   rk   r  r  r  r%  	lru_cacher;  r=  rd  r   rr  r  r  r  r  r  r  r  r  finfoiinfor  rL  r  r  r	  r+   r1   r2   <module>r&     s         	 
   6 6   $ $   N F  0 5   "  5 X X D	 	xCO xCv5 5o o :7 :7z;? ;(# #
a> a>H< < A
O A
H%p= p=f M M Ml-&? l-^&H6 &HR(_ (u;o u;p#O #6 &#=? #=L _  F Q   j"O j"\
?? 
?-o -.M? .Mb4 4n
O 
<7+? 7+t!/ !!5 #/ #(0 (	(- 	( II$II$II! 
/ 
"N_ Nb o  r1   