
    N j"             
          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
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  SSKJrJrJrJr  SSKJr  SSKrSSKrSSKJ r J!r!  SSK"J#r#  SS	K$J%r%J&r&J'r'  SS
K(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7J8r8  SSK9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrC  SSKDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrYJZrZ  SSK[J\r\J]r]J^r^J_r_  SSK`JaraJbrbJcrc   SSKdre SSKgJhrh  \(       a   SSKkJlrl  SSKmJnrn  SSKoJprp  SSKqJrrr  SSKsJtrtJuru  S\vS\w4S jrxS\vS\w4S jryS\vS\w4S jrzS \vS\w4S! jr{ " S" S#\_5      r| " S$ S%\|5      r} " S& S'\}5      r~ " S( S)\}5      r " S* S+5      r " S, S-5      rS.S/S0\S1\4   S2\\_   S3\\\_4   S\_4
S4 jr " S5 S6\|5      r " S7 S8\5      r " S9 S:\5      r " S; S<\5      r " S= S>\5      r " S? S@\5      r " SA SB\5      r " SC SD\_5      r " SE SF\5      r " SG SH\5      r " SI SJ\5      r " SK SL\5      r " SM SN\5      r " SO SP\5      rg! \f a    Sre GNTf = f! \i a    \j" S5      rh GNbf = f)Qam  
This module contains variable classes for handling user-defined objects in Dynamo's tracing system.

The key classes are:
- UserDefinedVariable: Base class for representing custom Python objects
- UserDefinedClassVariable: Handles Python class objects/types
- UserDefinedObjectVariable: Fallback class for instance objects, with support for method calls,
  attribute access, and other Python object behaviors.
- Specialized subclasses for common patterns:
  - UserDefinedDictVariable: For dict subclasses
  - UserDefinedSetVariable: For set subclasses
  - UserDefinedTupleVariable: For tuple subclasses
  - UserDefinedExceptionObjectVariable: For exception subclasses
  - FrozenDataClassVariable: Special handling of frozen dataclasses
  - MutableMappingVariable: For collections.abc.MutableMapping subclasses

Dynamo specializes to VariableTracker subclasses like FrozenDataClassVariable if available; if no
subclass qualifies, it falls back to UserDefinedObjectVariable.

These classes help Dynamo track and handle arbitrary Python objects during tracing,
maintaining proper semantics while enabling optimizations where possible.
    N)CallableIterableSequence)AnyLiteralTYPE_CHECKINGUnion)is_typeddict)SourceTracingContext)"is_traceable_wrapper_subclass_type   )graph_break_hints	polyfills	variables)create_call_function)$do_not_convert_to_tracable_parameter)handle_observed_exceptionObservedAttributeErrorObservedKeyErrorObservedTypeErrorObservedUserStopIterationraise_observed_exceptionunimplemented)get_external_object_by_index)GuardBuilderinstall_guard)

AttrSourceCallFunctionNoArgsSourceDataclassFieldsSourceDictGetItemSourceGetItemSourceRandomValueSourceTypeDictSourceTypeMROSource
TypeSourceUnspecializedParamBufferSource)check_constant_argscmp_name_to_op_mappingdict_methodsenum_type_methodsfrozenset_methodsget_custom_getattrhas_torch_functionis_frozen_dataclassis_lru_cache_wrapped_functionis_namedtuple_clsis_wrapper_or_member_descriptoristypelist_methodsnamedtuple_fieldsobject_has_getattributeproxy_args_kwargsraise_args_mismatchraise_on_overridden_hashset_methodstensortype_to_dtypetuple_methodsunpatched_nn_module_getattr   )MutationTyperaise_type_error_excValueMutationNewVariableTracker)ConstDictVariableDefaultDictVariableSetVariable)
PyTreeSpec)	PyCodegenSideEffectsInstructionTranslatorConstantVariable)ListVariableTupleVariablevalreturnc                 H    U [         R                  [        R                  4;   $ N)object__setattr__BaseExceptionrP   s    u/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrrY   {       6%%}'@'@AAA    c                 H    U [         R                  [        R                  4;   $ rS   )rT   __delattr__rV   rW   s    rX   is_standard_delattrr^      rZ   r[   ctxc                    / n SSK Jn  SSKJn  UR	                  U5        UR	                  U5        [        R                  R                  S5      =n(       a  UR	                  UR                  5        X;   $ ! [
         a     NQf = f)Nr   )RaisesContext)WarningsCheckerz!torch.testing._internal.jit_utils)
_pytest.python_apira   _pytest.recwarnrb   appendImportErrorsysmodulesget&_AssertRaisesRegexWithHighlightContext)r_   f_ctxsra   rb   ms        rX   is_forbidden_context_managerrm      ss    F43m$o& KKOO?@@q@a>>?=  s   .A7 7
BBobjc                     [        U 5      =(       a4    [        [        U 5      S5      =(       a    [        U 5      R                  S:H  $ )N__name__cython_function_or_method)callablehasattrtyperp   rn   s    rX   is_cython_functionrv      s9     	>DIz*	>I"==r[   c                   2    \ rS rSr% \\S'   S\S\4S jrSr	g)UserDefinedVariable   valuenamerQ   c                     U[        U R                  S0 5      ;  a+   [        R                  " [	        U R                  5      U5      $ g! [
         a     gf = f)zEGet method from the base class if not overridden in value's __dict__.__dict__N)getattrrz   inspectgetattr_staticrt   AttributeError)selfr{   s     rX   _maybe_get_baseclass_method/UserDefinedVariable._maybe_get_baseclass_method   sT    wtzz:r::--d4::.>EE  " s   )A 
AA N)
rp   
__module____qualname____firstlineno__rT   __annotations__strr   r   __static_attributes__r   r[   rX   rx   rx      s    M  r[   rx   c            
         ^  \ rS rSr% \\   \S'   S\\   S\SS4U 4S jjrS\\   4S jr	S\4S jr
S\4S	 jr\\R                  S\\\      4S
 j5       5       r\\R                  S\\\      4S j5       5       r\\R                  S\\   4S j5       5       r\S\S\4S j5       rS\4S jrSSS\S\4S jrSSS\S\4U 4S jjrSSS\\   S\\\4   S\4S jrSSS\S\\   S\\\4   S\4
U 4S jjrSSS\\   S\\\4   S\4U 4S jjrS\4S jr SSS\SS4U 4S jjr!SSS\S\4U 4S jjr"S\#S   4S jr$S\%4S jr&S \S\4S! jr'S"r(U =r)$ )#UserDefinedClassVariable   rz   kwargsrQ   Nc                 @   > [         TU ]  " S0 UD6  Xl        SU l        g )NFr   )super__init__rz   ban_mutationr   rz   r   	__class__s      rX   r   !UserDefinedClassVariable.__init__   s"    "6"
 "r[   c                     U R                   $ rS   rz   r   s    rX   as_python_constant+UserDefinedClassVariable.as_python_constant       zzr[   c                     U R                   $ rS   r   r   s    rX   as_proxy!UserDefinedClassVariable.as_proxy   r   r[   c                 N    U R                   R                   SU R                   S3$ N())r   rp   rz   r   s    rX   __repr__!UserDefinedClassVariable.__repr__   s$    ..))*!DJJ<q99r[   c                  ~    [         R                  [         R                  [         R                  [         R                  1$ rS   )torchdevicefinfoiinfoSizer   r[   rX   _constant_fold_classes/UserDefinedClassVariable._constant_fold_classes   s*     LLKKKKJJ	
 	
r[   c                     [         R                  [         R                  R                  [         R                  R                  [         R                  R
                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  [         R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  1n [        [         S5      (       aC  U R!                  [         R"                  R                  [         R"                  R                  15        [%        [&        R(                  " 5       5      U -  $ )Nhpu)r   TensorcudaFloatTensorDoubleTensor
HalfTensorBFloat16Tensor
ByteTensor
CharTensor	IntTensorShortTensor
LongTensorStreamEventxpurs   updater   setr;   keys)_in_graph_class_lists    rX   _in_graph_classes*UserDefinedClassVariable._in_graph_classes   s    LLJJ""JJ##JJ!!JJ%%JJ!!JJ!!JJ  JJ""JJ!!LLKKJJJJIIIIOO! 
$ 5%   ''II$$IIOO &++-.1EEEr[   c            	         [        [        5       V s1 s Hg  n [        [        [        U 5      [        5      (       d  M(  [        [        [        U 5      [        5      (       d  MM  [        [        U 5      R                  iMi     nn [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  1nUR                  U5      $ s  sn f rS   )dirbuiltins
isinstancer~   rt   
issubclassrV   __new__rT   dictr   	frozensettuplelistunion)r{   
exceptions	c_new_fnss      rX   supported_c_new_functions2UserDefinedClassVariable.supported_c_new_functions   s    
 H 
%'(D148 , 78T2MB ,GHd#++% 	  
 NNLLKKMMLL
	 z** 
s   'C/!C/"C/c                 0    U [         R                  5       ;   $ rS   )r   r   r   s    rX   is_supported_new_method0UserDefinedClassVariable.is_supported_new_method   s     0JJLLLr[   c                 <    U R                   U R                  5       ;   $ rS   )rz   r   r   s    rX   can_constant_fold_through2UserDefinedClassVariable.can_constant_fold_through  s    zzT88:::r[   txrK   keyc                    UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[	        U[
        R                  5      (       + $ X R                  R                  ;   $ NT
deleted_ok	outputside_effectshas_pending_mutation_of_attr	load_attrr   r   DeletedVariablerz   r}   r   r   r   mutated_attrs       rX   has_key_in_generic_dict0UserDefinedClassVariable.has_key_in_generic_dict  f    99!!>>tII9911;;DRV;WL!,	0I0IJJJjj))))r[   r{   c           
       
  > SSK JnJn  U R                  b  [	        U R                  U5      OS nUS:X  a&  UR
                  " U R                  R                  5      $ US:X  a&  UR
                  " U R                  R                  5      $ US:X  a  SU0n[        R                  " XS 40 UD6$ US:X  aS  U R                  =(       a    [        U R                  5      n[        R                  " XR                  R                  U5      $ U R                  [        R                   [        R"                  1;   a  US:X  a  [$        TU ]M  X5      $ S n [(        R*                  " U R                  U5      nUS:X  a)  [2        R5                  U5      (       a  [$        TU ]M  X5      $ U[6        ;   a5  [9        U[:        R<                  5      (       d  [        R                  " XS US9$ [9        U[>        5      (       a0  [        R                  " XRA                  U R                  5      U5      $ [9        U[B        5      (       a{  [9        URD                  [F        5      (       a=  [        R                  " XRD                  RH                  5      n	U	RK                  X/0 5      $ [        RL                  " URD                  XS9$ [9        U[:        RN                  5      (       a3  URA                  S U R                  5      n
[        R                  " XU5      $ U(       aK  [(        RP                  " U5      (       a0  [        R                  " XRA                  U R                  5      U5      $ URR                  " U5      (       a  UR
                  " U5      $ [9        U[T        RV                  5      (       a  U" U5      $ U R                  [        R                   L a  [        R                  " X5      $ U[Y        U R                  S0 5      ;   dD  U R                  RZ                  R]                  S5      (       d  U R                  RZ                  S:X  a  U(       a  [        R                  " XU5      $ U(       aB  [(        R^                  " U5      (       d'  [a        U5      (       d  [        R                  " XU5      $ [$        TU ]M  X5      $ ! [,         aK    [/        U R                  5      [.        L a+  [1        [,        US	U R                  R                   S
U S3/S9   GNf = f)Nr>   )rM   EnumVariablerp   r   r}   source__mro__fromkeysztype object 'z' has no attribute ''argsr   r   ztorch.r   )1 rM   r   r   r   createrz   rp   r   r   GetAttrVariabler%   rB   buildr   collectionsOrderedDictdefaultdictr   var_getattrr   r   r   rt   r   r   r   r)   r   typesFunctionTypestaticmethod__get__classmethod__func__propertyfgetcall_functionUserMethodVariableClassMethodDescriptorTypeismemberdescriptor
is_literalenumEnumr~   r   
startswithismethoddescriptorr2   )r   r   r{   rM   r   r   optionsattr_sourcern   fget_vtfuncr   s              rX   r   $UserDefinedClassVariable.var_getattr  s   426++2IDKK.t:#**4::+>+>??^##**4::+B+BCCZ(G,,TIIIY++D-*DK"((ZZ-?-?MM JJ;22K4K4KLL
"7&r00
	((T:C 9!9!Q!QRU!V!V7&r00))*S%BTBT2U2U,,TfMMc<(("(([[-DfMM[))#,,11)//LL4E4EF,,R<<//dRRU<<== ;;tTZZ0D"((6::))#..&,,RTZZ1H&QQ&&s++#**3//TYY''$$ZZ;222,,T88WTZZR88JJ!!,,X66zz$$/&,,Rf== ..s333C88"((&99w"2,,i  	DJJ4'("'

(;(;'<<PQUPVVWX	s   !R( (AS=<S=r   c                   ^^^	^
^^^ SSK JnJn  UUUR                  " S5      UUR                  " S5      UR                  " S5      4S[        S[        S[        S	[        S
[        S[        S[
        [        S4   4S jjnU" U0 UD6u  mmmm
mm	S[        S[        S[        4UU	U
UUUU4S jjn[        R                  " U5      $ )a:  
functional: input, target, weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean',
label_smoothing=0.0

non functional ctor: weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean',
label_smoothing=0.0

non functional loss call: input, target, optional_output
r>   )CONSTANT_VARIABLE_NONErM   imeang        weightsize_averageignore_indexreduce	reductionlabel_smoothingrQ   .c                     U UUUUU4$ rS   r   )r  r  r  r  r  r  s         rX   normalize_argsIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_argsp  s       r[   inputtargetc                    > SSK Jn  U" TTR                  R                  " S[        R
                  R                  R                  /[        U UT	TTTTT/0 5      Q76 S9$ )Nr>   )wrap_fx_proxyr  r   proxy)	builderr   r   create_proxyr   nn
functionalcross_entropyr7   )
r  r  r   r  r  
reduce_argr  r  r   r  s
      rX   fake_cross_entropy_lossRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_loss  sq     / ii,,#HH''55 '!""((&%+	  r[   )r   r  rM   r   rB   r   r   LambdaVariable)r   r   r   r   r  rM   r  r)  r  r  r(  r  r  r  s    `      @@@@@@rX   _call_cross_entropy_loss1UserDefinedClassVariable._call_cross_entropy_loss_  s     	? '=,B,<,C,CD,I&<)9)@)@)H/?/F/Fs/K	#	)	 *	 $		
 '	 -	 ?C'(	0 D+F+	
	"	,;		 	4 ''(?@@r[   c           
        > SSK Jn  US:X  a  [        U5      S:X  a  U(       d  SU R                  R                  ;  am  U R
                  nU R
                  (       a!  [        U R
                  S5      n[        U5      n[        R                  " XR                  R                  5       U5      $ U R                  [        R                  [        R                  1;   a4  US:X  a.  [        R                  R                   " XR                  /UQ70 UD6$ U R                  [        R                  L a!  US:X  a  US   R#                  X/ USS  QU5      $ US:X  aS  [        U5      S:X  aD  [%        US   S5      (       a0  [        R&                  " U R                  US   R                  :H  5      $ US	:X  aS  [        U5      S:X  aD  [%        US   S5      (       a0  [        R&                  " U R                  US   R                  :g  5      $ [)        U R                  [*        5      (       a,  US
:w  a&  UR-                  U[*        5      R#                  XX45      $ [)        U R                  [.        [0        45      (       a,  US
:w  a&  UR-                  U[.        5      R#                  XX45      $ US
:X  a  U R                  [        R                  L a  [3        US   [4        5      (       a}  US   R                  [        R                  L a]  U(       a5  [        U5      S:w  a&  [7        UUS[        U5       S[        U5       S35        [9        0 [        R                  [;        5       S9$ [        U5      S:X  a<  [3        US   [        R<                  5      (       a  US:X  a  US   R?                  U5      $ US
:X  a[  [4        RA                  U R                  RB                  5      (       a-  URD                  RF                  RI                  U US   USS  5      $ US:X  a>  U RJ                  (       a-  [M        S[O        U R                  5      S[P        RR                  S9  [T        TU ]E  XX45      $ )Nr>   SourcelessBuilder__subclasses__r   r   move_to_end__eq__rz   __ne__r   1 args and 0 kwargs
 args and  kwargsmutation_type	__enter__rU   zCClass attribute mutation when the __dict__ was already materializedzVDyanmo does not support tracing mutations on a class when its __dict__ is materializedgb_typecontextexplanationhints)+r#  r0  lenrz   r}   r   r   r   rB   r   r1  r   r   r   r   BuiltinVariablecall_custom_dict_fromkeyscall_methodrs   rM   r   r   r   r   r   r   r   r8   rC   rA   GenericContextWrappingVariableenterr   r   r   r   track_new_user_defined_objectr   r   r   r   SUPPORTABLEr   )r   r   r{   r   r   r0  r   r   s          rX   rC  $UserDefinedClassVariable.call_method  s    	/ $$D	Q 

(;(;;[[F{{#DKK1AB1&9"((ZZ-F-F-H&QQJJ;22K4K4KLL
",,FFJJ!%)/  ZZ;222t}7L7&&r48fEEX#d)q.WT!Wg5N5N--djjDGMM.IJJX#d)q.WT!Wg5N5N--djjDGMM.IJJ

D))di.?$++B5AA$  

S)$455$):K$++B4@@4XXI

k55547$<==Q!8!88#d)q.#)4ykCK=@	 %K++;K;M  IN47I$L$LMM#7==$$Y#;#S#SJJ$
 $
 99))GGQQR 
 ]"t'8'8]DJJt'33	 w"2T::r[   c                 $  > SSK Jn  SSKJnJn  SSKJn  [        X#5      nU R                  5       (       a  U(       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 R                  [        R                   R"                  L a  U R%                  XU5      $ U R                  [&        R(                  L a  SSKJn  U" U0 UD6$ U R                  [,        R.                  L a9  UR1                  [2        R4                  " U[6        R8                  5      U /UQU5      $ U R                  [,        R:                  L a  [=        U5      S:X  a  [        R>                  nOJ[=        U5      S:X  a8  [@        RB                  " US   5      (       d  [E        [F        XS   /S9  US   n/ nOUtp[        RH                  RJ                  " U[L        /UQ70 UD6n[A        UR                  [,        R:                  U[O        5       S	9$ [Q        U R                  5      (       au  U R                  RR                  (       a0  [U        S
[W        U R                  5      SS/[X        RZ                  QS9  UR                  U[L        5      R\                  " U/UQ70 UD6$ U R                  [,        R^                  L Ga"  [        R>                  n S@S[`        [b           S -  S[d        S -  S[b        4S jjnS n [f        Rh                  " U5      Rj                  " U0 UD6nUc   eSURn                  ;   ae  URn                  S   Rq                  U5      (       d#  [U        SSU SU 3SS/[X        Rl                  QS9  URn                  S   Rs                  U5      nO/ nSURn                  ;   a  URn                  S   n[        Rt                  Rw                  UU[O        5       S9$ U R                  [x        Rz                  L a  [=        U5      S:X  a  [}        US   [        R~                  5      (       a  [}        US   U5      (       ap  US   R                  5       S;   aY  US   R                  n[        UUS   R                  5       5      R                  n[        R                  " UUS   U R                  S9$ U R                  [        R                  L a?  [=        U5      S:  a  US   nO[        R>                  n[        R                  " US   U5      $ U R                  [        R                  L aM  U(       d  [U        SSS S!/[X        Rl                  QS9  US   nUSS  n[        R                  R                  UUUS"9$ U R                  [        R                  L a&  U(       d  [        R                  R                  X5      $ U R                  [        R                  R                  L aj  U(       dc  [=        U5      S:X  aT  US   R                  5       (       d  [        US#5        [        R                  R                  XS   R                  5       5      $ [        [        U R                  5      [        5      (       Gae  [        U R                  S$5      (       GaI  [        U R                  S%5      (       Ga-  U R                  5       (       Ga  UR                  " U R                  5      (       Ga  U R                  (       Ga  [        U R                  5      (       Gd  SS&K[J\n  SS'KKJ]nJ^n  U R                  [&        R                  [&        R                  [&        R                  [&        R                  [&        R                  4;   a4  [U        S(U R                   U R                   S)3/ [X        RZ                  QS9  UnU R                  [&        R                  L a  [}        US   UU45      (       a  [        R                  R                  R                  (       d  [U        S*SU 3S+S,/S9  [}        US   U5      (       a:  US   nUS   R                  nUS   R                  5       nUR                  UUU5      $ U" US   US   R                  S9/USS  -   nUR                  R                   R                  UR                  U[        5      U U5      nUR                  US-UU5        U$ [        U R                  5      (       Ga  [        U R                  5      nU R                  R                  S.:X  aQ  U(       d  [=        U5      S:w  a&  [        US.S/[=        U5       S0[=        U5       S135        US   Rs                  U5      nOU R                  R                  n [        U5      nUR                  S /[=        U5      [=        U5      -
  -  5        0 n![        UU5       H>  u  n"n#U#b  M  U"U;   a  UU"   n$O"U"U ;   d   e[2        R4                  " UU U"   5      n$U$U!U"'   M@     U!R                  5        H"  u  n%n&U%U;   d   eU&UUR                  U%5      '   M$     [        S2 U 5       5      (       d   eSS3KxJyn'  SS4K:Jzn(  U(" UU R                  U'" 5       S	9$ U R                  [        R                  L a>  SS5K:J|n)  UR                  U[        5      R                  XU5      n*U)" U*R                  5      $ [        U R                  5      (       Ga  U R                  5       (       Ga  [        GR                   " U R                  5      nU R                  c   eG[        U R                  5      n+[        U5      nUR                  S /[=        U5      [=        U5      -
  -  5        0 n,[        G[        GR                  " 5       UU5       GH  u  n-n.n#U#b  M  U.GR                  U;   a  UU.GR                     n#OU.GR
                  (       d  MC  U.GR                  [        GR                  La8  [2        R4                  " UU.GR                  G[        G[        U+U-5      S65      S9n#OWU.GR                  [        GR                  La6  [2        R4                  " UU.GR                  5      n/U/R                  U/ 0 5      n#OM  U#U,U.GR                  '   GM     UGR                  U,5        UR                  R                   R                  UR                  U[        5      U U5      n0U0R                  US-X#5        U0$ U R                  U GR                  5       ;   d  G[        U R                  5      (       Ga  SS7K:Jn1  G[        (       a  U R                  G[         ;   a  [=        U5      S:X  a  [}        US   U15      (       a  [=        US   R                  5      S:  ad  [        S8 US   R                   5       5      (       a@  U" UUR                  GR"                  " S9[        GR$                  /G['        X#5      Q76 S:9n2U2/n[        U R                  [        GR(                  5      (       a  SS;KJ
n3  SS<K:Jn4  G[/        UR                  5        V
Vs0 s H  u  pU3" U
5      U_M     snn
5      n5U4" [        U5      5      n6U R                  " U6R                  5       0 U5R                  5       D6n7SS=KJn8  SS>KJn9  U8" U7U9GR9                  U6U55      5      n-U" UUR                  GR#                  S9G[:        U-40 5      S:9n:U:$ [        U R                  [        GR<                  5      (       a  SS;KJ
n3  SS<K:Jn4  G[/        UR                  5        V
Vs0 s H  u  pU3" U
5      U_M     snn
5      n5U4" [        U5      5      n6U R                  " U6R                  5       0 U5R                  5       D6n;SS=KJn8  SS?KJn<  U8" U;U<GRA                  U6U55      5      n-U" UUR                  GR#                  S9G[:        U-40 5      S:9n:U:$ U" UUR                  GR"                  " S9U R                  /G['        X#5      Q76 S:9n:U:$ U R                  G[B        GRD                  L aa  [=        U5      S:X  a,  US   R                  5       (       a  US   R                  5       n=OS n=G[B        GRD                  " U=5      n>G[G        U>5      $ U R                  [x        GRH                  L aB  [=        U5      S:X  a3  [}        US   G[.        5      (       a  [        GRJ                  " US   5      $ UR                  " U R                  5      (       a`  U R                  (       aO  G[M        5          UR1                  [2        R4                  " U[6        GRN                  5      U /UQU5      sS S S 5        $ G[P        T?U G]  XU5      $ s  sn	f s  snn
f ! [F         a/  n[U        SSU SU 3SS/[X        Rl                  QUS9   S nAGNS nAff = fs  snn
f s  snn
f ! , (       d  f       Ns= f)ANr   rH   r>   )r0  r   )rD  )NullContextVariabler   r   r8  zTypedDict with optional keysz<Dyanmo does not support tracing TypedDict with optional keysz(Avoid using TypedDict with optional keysr;  iterablemaxlenrQ   c                     g rS   r   )rK  rL  s     rX   deque_signature?UserDefinedClassVariable.call_function.<locals>.deque_signature;  s     r[   z&collections.deque() with bad argumentszargs=	, kwargs=z8Detected call to collections.deque() with bad arguments.z$Fix the call to collections.deque().)r<  r=  r>  r?  from_excz.collections.deque() with bad iterable argumentzZCall to collections.deque() has an iterable argument that Dynamo cannot convert to a list.zeUse a simpler sequence type that Dynamo can convert to a list (e.g. list, tuple, list iterator, etc.))rL  r9  )r:  __exit__r   z!missing args to functools.partialr   z0functools.partial requires at least one argumentzFix the functools.partial call.)r   keywordsz0torch.cuda.device() requires a constant argumentr:  rR  )TorchCtxManagerClassVariable)BaseUserFunctionVariable3FunctionDecoratedByContextlibContextManagerVariablezunsupported contextlib.* APIz not supported. This may be due to its use of context-specific operations that are not supported in Dynamo yet (i.e. Exception handling)z,attempted to trace contextlib.contextmanagerz.Tracing contextlib.contextmanager is disabled.z7Set torch._dynamo.config.enable_trace_contextlib = Truer   ztorch.return_typesr5  r6  r7  c              3   (   #    U  H  oS Lv   M
     g 7frS   r   .0xs     rX   	<genexpr>9UserDefinedClassVariable.call_function.<locals>.<genexpr>  s     8%QD=%s   )AttributeMutationNew)NamedTupleVariable)SizeVariabledefaultrN   c              3   @   #    U  H  oR                  5       v   M     g 7frS   )	is_tensorrX  s     rX   r[  r\  b  s     =}!}   r  r!  rL   rO   )register_graph_created_object)StreamVariable)EventVariableNN)r   rI   r#  r0  r   ctx_managerrD  r(   r   r   rM   r   r   itemsrz   r   r%  CrossEntropyLossr,  
contextlibnullcontextrJ  r   r   inline_user_function_returnrB   r   r   construct_dictr   r@  r  rD   is_supported_argr   	TypeErrorrA  call_custom_dictr   rA   r
   __optional_keys__r   r   r   rG  	call_dictdequer   r   intr   	signaturebind
USER_ERROR	argumentshas_force_unpack_var_sequenceforce_unpack_var_sequencelistsDequeVariabler   
MethodTyper   UserFunctionVariableget_namecm_objr~   r   r  r   weakrefrefWeakRefVariable	functoolspartial	functionsFunctoolsPartialVariablewarningscatch_warningsCatchWarningsCtxManagerVariabler   r   is_python_constantr@   CUDADeviceVariabler   rt   rs   is_standard_new"cls_supports_mutation_side_effectsrm   r   rT  rU  rV  _AsyncGeneratorContextManagerclosingredirect_stdoutredirect_stderrAsyncExitStack_GeneratorContextManager_dynamoconfigenable_trace_contextlibkeys_as_python_constantr  r   rF  rT   rC  r1   r5   r   r8   _field_defaultsr   extendzipindexallbaser]  r^  r   r_  r   r/   dataclassesfieldsr    	itertoolscountr{   initr`  MISSINGr   r"   default_factoryr   r   r   rN   npr;   r$  stackr7   r   constantrO   rC   graph_bytecode_inputsrf  streamsrg  !make_construct_in_graph_stream_fnr   r   rh   make_construct_in_graph_event_fnrandomRandomRandomVariableMappingProxyTypeMappingProxyVariabler   %instantiate_user_defined_class_objectr   )@r   r   r   r   rI   r0  r   rD  constant_argsrZ  kvrJ  r  dict_vtrL  rN  
bound_argserk  r  fncallback	rest_argsrT  rU  rV  arg_newfn_var	args_listkwargs_dictr  field_defaultsvar_tracker_kwargs
field_namevar_tracker	field_varr{   rz   r]  r^  r_  tupfields_sourcedefault_kwargsindfield
factory_fnvarrN   stackedrM   rO   
var_kwargsvar_argsstreamrf  rg  tensor_variableeventrh  seedrandom_objectr   s@                                                                  rX   r  &UserDefinedClassVariable.call_function  s    	/=?+D9))++--44'')6:;d**,d;=C\\^L^TQq..00^L  ZZ588444006BBZZ:1118&777ZZ;22211%%b)*B*BC 
 ZZ;2224yA~"+"B"BTa +;;DGDD,Yq'K"&q')-&//@@D#)G '''.0	  $**%%zz++:

O ^B*66	 %++B5??TTTVTTZZ;,,,55F MQ"3-$.?BTz
 J$..?DDdUfU
 )))Z111!++J7UU  " P"'vYvh ?%-F /99
 #,,Z8RRSUV :///#--h7??00f4D4F 1  
 JJ%***D	Q47I$B$BCC47$BCCQ  "&??!W^^Fa!1!1!34==B//DGDKKPPZZ7;;&4y1}7$;;,,T!Wh??ZZ9,,,? R9*55	 aBQRI &&??V @   ZZ82224<<CCBOOZZ5::,,,VD	Q7--//$J //66r7;U;U;WXXtDJJ'..

K  

J  $$&&>>tzzJJ0<<6 zz88""****))  :#zzl#'::, /; !;*66	 GzzZ@@@ZQ24PQF F }}++CC! N"'v$TU	2 d1g'CDD!!WF $QI"&q'"A"A"CK!//I{KK HQQ H	 YY++II!((V4F
 r:w?Mtzz**&tzz2Fzz$$(<<SY!^',-t9+ZF}GD	 Q99"=!%!;!;T
dVs6{SZ'?@AAC"/265/A+J"*%/(.z(:I#-#??#?(7(=(= "N:$>)I :C*:6 0B $6#;#;#=KD%6>)>05E&,,t,- $> 8%88888 31%

24 
 ZZ5::%+#**2u5CCBfUC		** ,,1E1E1G1G ''

3F;;***1$++>MJELL$3v;U#;<=N+.y/@&%+P'UK&zzV+&,UZZ&8$zzz$ ==0C0CC*9*?*? " %'1$1-$Ey("+K #22+:M:MM)8)>)> "E$9$9*J +5*B*B2r2*NK %1<N5::.5 ,Q6 MM.)))((FF!((V4C
 OOB
D9JJJ$00221$**== , JJ"55INtAw55Q&*=tAw}}=== ())00' +48  y$**ell3360.8>G%a(!+G
 )d4113!446 R33"DD * #0))00')Evr#X #"M DJJ4460 /8>G%a(!+G
 )d4

113!446 R23!BB * #0))00')Evr#  #" #0))00'

 +48# #"ZZ6==(4yA~$q'"<"<">">Aw113"MM$/M!-00JJ%000D	Q47$566 11$q'::;;DJJGGDKK5755#))IKK MDM 87 w$Rv66G <Lx  
D#D66(; Z>*55 	 	
b	 H8 Hb 87sK   *AHAH
<&AH -AI
*AI
F/:AIH
AI	H$AIIAI	I
AI&c                     [         R                  " U R                  SS5      n[        U[        5      (       a  UR
                  nU[        R                  L $ )z"Check for __new__ being overriddenr   N)r   r   rz   r   r   r   rT   r   )r   new_fns     rX   r  (UserDefinedClassVariable.is_standard_new  s?    ''

ItDfl++__F''r[   rM   c                   > U R                   (       ah  [        U R                   U5      n[        UR                  [        R
                  5      5        [        R                  " [        U R                  U5      5      $ [        TU ]-  X5      $ rS   )r   r   r   
make_guardr   HASATTRr   rM   rs   rz   r   call_obj_hasattr)r   r   r{   r   r   s       rX   r  )UserDefinedClassVariable.call_obj_hasattr  sa     ;;T2F&++L,@,@AB--gdjj$.GHHw'11r[   c                 Z   > US:X  a  U R                   R                  $ [        TU ]  X5      $ )Nrp   )rz   rp   r   const_getattrr   r   r{   r   s      rX   r  &UserDefinedClassVariable.const_getattr  s+    :::&&&w$R..r[   Tc                     gNTr   r   s    rX   is_python_hashable+UserDefinedClassVariable.is_python_hashable  s    r[   c                 ,    [        U R                  5      $ rS   hashrz   r   s    rX   get_python_hash(UserDefinedClassVariable.get_python_hash  s    DJJr[   otherc                 t    [        U[        R                  5      =(       a    U R                  UR                  L $ rS   )r   r   r   rz   r   r  s     rX   is_python_equal(UserDefinedClassVariable.is_python_equal  s,    ui@@A *

ekk)	
r[   )r   rz   )*rp   r   r   r   rt   rT   r   r   r   r   r   r   r   r   r  cacher   r   r   r   boolr   r   r   rB   r   r   r   r,  r   rC  r  r  r  r  r   r  rw  r  r  r   __classcell__r   s   @rX   r   r      s   <"d6l "c "d "DL & :# : __
CV$5 
  
 __Fs4<0 F  F: __+s3x +  +" Mv M$ M M
;4 ;**A * *PT *R-5 R-S R-_ R-hEA#EA 'EA S/)*	EA
 
EANN;#N; N; ?#	N;
 S/)*N; 
N;`S7#S7 'S7 S/)*	S7
 
S7j( (2)2142	2/ 7 /s /s /
GDM    
V 
 
 
r[   r   c                   2    \ rS rSr\S\\   4S j5       rSrg)!UserDefinedExceptionClassVariablei  rQ   c                     U R                   $ rS   r   r   s    rX   r  $UserDefinedExceptionClassVariable.fn  s    zzr[   r   N)	rp   r   r   r   r  rt   rT   r  r   r   r[   rX   r  r    s    DL  r[   r  c            
       z   ^  \ rS rSr% Sr\\R                     \S'   SSS\	S\
\   S\\	\4   S	\4
U 4S
 jjrSrU =r$ )UserDefinedEnumClassVariablei  a  
Represents Enum class objects (the class itself, not instances).

Handles Enum metaclass methods like __contains__ by checking if the method
is from the standard EnumType metaclass and executing it directly.

Not yet supported:
- __iter__: iteration over enum members (e.g., `for x in SomeEnum`)
- __reversed__: reversed iteration
- Flag enum membership checks (e.g., `Flag.A in combined_flags`)
rz   r   rK   r{   r   r   rQ   c                   > U R                  U5      nU[        ;   a  US:X  a  [        U5      S:X  a  U(       d  US   n[        U[        R
                  5      (       a6  [        R                  R                  UR                  U R                  ;   5      $ UR                  5       (       a:  [        R                  R                  UR                  5       U R                  ;   5      $ [        TU ]1  XX45      $ )N__contains__r>   r   )r   r+   r@  r   r   r   rM   r   rz   r  r   r   rC  )r   r   r{   r   r   methodargr   s          rX   rC  (UserDefinedEnumClassVariable.call_method  s     11$7&&~%#d)q.1gc9#9#9::$55<<SYY$**=TUU++--$55<<..0DJJ>  w"2T::r[   r   )rp   r   r   r   __doc__rt   r  r	  r   r   r   rB   r   rC  r   r  r  s   @rX   r  r    sa    
 		?;#; ; ?#	;
 S/)*; 
; ;r[   r  c                       \ rS rSrSrg)NO_SUCH_SUBOBJi  r   Nrp   r   r   r   r   r   r[   rX   r  r        r[   r  c                       \ rS rSrSrg)RemovableHandleClassi  r   Nr  r   r[   rX   r  r    s     	r[   r  r   rK   r  .r   r   c                    SSK Jn  U Vs/ s H  oUR                  5       PM     nnUR                  5        VVs0 s H  u  pgXgR                  5       _M     nnn[	        U R
                  R                  5      nU" U0 UD6n	[        U5      n
U R
                  R                  R                  XU45        U" X
5      R                  U	5      $ s  snf s  snnf )Nr>   )VariableBuilder)
r#  r	  r   rk  r@  r   random_callsr#   re   wrap_unspecialized_primitive)r   r  r   r   r	  rZ  r  r  random_call_indexexample_valuer   s              rX   call_random_fnr  %  s     ),01Dq  "DD14:LLNCNDAa%%''NFCBII223''M01FII!!2V"45 2&CCMRR 2Cs
   CCc                     ^  \ rS rSrSrSSS1\R                  krSSSSS.S\S\S-  S\	S-  S	\
S-  S
\\
   S-  S\SS4U 4S jjjrS\4S jrS\4S jrSSS\4S jrS\4S jrS\4U 4S jjrS\4U 4S jjrS>S jrSSS\
4S jrSSS\
SSS\\   S\\\4   S\
4S jr\\R8                  S\\   4S j5       5       rSSS \S\\   S\\\4   S\
4
U 4S! jjr  S?SSS \
S\
S"\S\
4
S# jjr!S\4S$ jr"SSS\\
   4U 4S% jjr#SSS\4S& jr$SSS\\
   4S' jr%SSS\
4S( jr&S\4S) jr'SSS\\
   S\\\
4   S\
4U 4S* jjr(S\4S+ jr)S,\S\4S- jr*S \S\4S. jr+S/\S\4S0 jr,S/\S\-\\4   S-  4S1 jr.SSS2\S\4S3 jr/S \S\04S4 jr1SSS \S\
4S5 jr2SSS \SS64S7 jr3S\4S8 jr4S\54S9 jr6S:\S\4S; jr7            S@S< jr8S=r9U =r:$ )AUserDefinedObjectVariablei9  zW
Mostly objects of defined type.  Catch-all for something where we only know the type.
rz   
value_typeattrs_directly_modifed_on_dictN)r  
cls_sourcebase_cls_vt	init_argsr  r  r  r   rQ   c                  > [         TU ]  " S0 UD6  Xl        U=(       d    [        U5      U l        [        U5      U R                  L d   eX0l        Uc'  U R                  b  [        U R                  5      U l        X@l        XPl	        [        5       U l        0 U l        0 U l        SS KJs  Jn  UR#                  U R                  5      U l        UR#                  U R                  5      (       aC  U R                  (       a2  ['        U R                  R)                  [*        R,                  5      5        [/        U R                  5      U l        g )Nr   r   )r   r   rz   rt   r  r  r   r&   r  r  r   r  _looked_up_attrs_subobj_from_classtorch.utils._pytreeutils_pytreeis_constant_classis_pytree_constant_classr   r  r   EQUALS_MATCHr6   _object_has_getattribute)	r   rz   r  r  r  r  r   pytreer   s	           rX   r   "UserDefinedObjectVariable.__init__E  s     	"6"
$3UE{doo---$$++"9(5DO '" 9<+
 46 68,,(.(@(@(Q%##DOO44$++001J1JKL(?

(K%r[   c                     U R                   R                  nUS;   a   [        [        U R                  SS 5      5      nU R
                  R                   SU S3$ )N)builtin_function_or_methodgetset_descriptormethod_descriptorr  rp   r   r   )r  rp   r   r~   rz   r   )r   inners     rX   __str__!UserDefinedObjectVariable.__str__v  sU    (( 
 
 

J=>E..))*!E7!44r[   c                 b    U R                   R                   SU R                  R                   S3$ r   r   rp   r  r   s    rX   r   "UserDefinedObjectVariable.__repr__  +    ..))*!DOO,D,D+EQGGr[   r   rI   c                     gNFr   r   r   s     rX   is_underlying_vt_modified3UserDefinedObjectVariable.is_underlying_vt_modified  s    r[   c                     U R                   $ rS   r  r   s    rX   python_type%UserDefinedObjectVariable.python_type  s    r[   c                   > U R                   (       a  U R                  (       a  U R                  $ SSKJn  [        U R                  U5      (       ak  SSKJn  UR                  " 5       nUbQ  UR                  (       a@  UR                  R                  R                  U SSS9nUb  UR                  5       nU" U5      $ [        TU ]5  5       $ )Nr   )_MaskModWrapperrJ   r  Tr   )r  r   rz   !torch.nn.attention.flex_attentionr7  r   torch._dynamo.symbolic_convertrK   
current_txexportr   r   r   r   r   )r   r7  rK   r   fn_vtr  r   s         rX   r   ,UserDefinedObjectVariable.as_python_constant  s    ((T[[ :: 	Fdjj/22L&113B~"))		..88tPT8U$ 113B*2..w)++r[   c                    > U R                   (       a>  [        U R                   R                  [        R                  5      5        U R
                  $ [        TU ]  5       $ rS   )r   r   r  r   ID_MATCHrz   r   guard_as_python_constant)r   r   s    rX   r@  2UserDefinedObjectVariable.guard_as_python_constant  s?    ;;$++001F1FGH::w/11r[   c                 8    [        U 5      (       d
   SU  35       eg )Nz<calling torch function on object without __torch_function__ )r.   r   s    rX   torch_function_check.UserDefinedObjectVariable.torch_function_check  s$    !$'' 	
J4&Q	
'r[   r   rK   c                 >    U R                  5         SSKJn  U" X5      $ )Nr>   )get_torch_function_fn)rC  torch_functionrF  )r   r   rF  s      rX   get_torch_fn&UserDefinedObjectVariable.get_torch_fn  s    !!#9$R..r[   r  r   rO   r   c                 f    U R                  5         SSKJn  U" UU R                  U5      UUUU5      $ )Nr>   )call_torch_function)rC  rG  rK  rH  )r   r   r  r   r   r   rK  s          rX   rK  -UserDefinedObjectVariable.call_torch_function  s=     	!!#7"b!
 	
r[   c                      [         R                   [         R                  [         R                  [         R                  1n U $ rS   )r  randint	randrangeuniform)fnss    rX   _supported_random_functions5UserDefinedObjectVariable._supported_random_functions  s0     MMNNNN	
 
r[   r{   c                   > SSK JnJnJn  U R	                  U5      nUGb  U[
        R                  L a  U$ [        U5      (       d)  [        U R                  [        R                  5      (       a  U R                  " U/UQ70 UD6$ [        U5      (       a(  U R                  XS   [        R                  " 5       5      $ U[
        R                   L a{  [#        U5      S:X  al  U(       de  US   n	[        U	[$        5      (       d#  [        R                  R'                  [(        5      $ UR&                  " U R                  U	R                  L 5      $ [*        R,                  R.                  R0                  (       aL  [        U R                  [2        R4                  5      (       a#  [7        SSU R                   SU SU SU 3S	S
/S9  [        U[2        R8                  5      (       al  U R:                  n
S nU
(       a  U R=                  U5      nSSKJ n  U[*        RB                  RD                  R                  L a  UnU" XXS9RG                  XU5      $ U[H        RJ                  L al  U R:                  (       a[  U(       dT  U(       dM  [M        U R:                  RO                  [P        RR                  5      5        U" [#        U R                  5      5      $ [T        TU ]  XX45      $ )Nr>   )r  rM   r  r   zcall_method on generatorobject=	, method=, args=rP  zWDetected a method call to a user-defined generator object. This is not fully supported.zSet `torch._dynamo.config.enable_faithful_generator_behavior = False`. Note that this may cause silent incorrectness, since we will eagerly unpack generators instead of lazily evaluating them.r;  r   unpatched_nn_module_init	source_fnr   ),r   r  rM   r  r   rT   r   rY   r   rz   	threadinglocalmethod_setattr_standardr^   r   r   r3  r@  r  r   NotImplementedr   r  r  "enable_faithful_generator_behaviorr   GeneratorTyper   r   r   get_source_by_walking_mromutation_guardrY  r%  Moduler  r   __len__r   r  r   SEQUENCE_LENGTHr   rC  )r   r   r{   r   r   r  rM   r  r  r  r   r[  rY  r   s                rX   rC  %UserDefinedObjectVariable.call_method  s@    	SR11$7(--"6**jY__.U.U33BHHHH"6**33Q!:!:!<  &3t9>&Q!%)BCC$55<<^LL (..tzzU[[/HII}}##FF:

E//L L 6%djj\4&vYW]V^_!3+
 &%"4"455 	 $ > >t DIEUXX__5555F)I-&12 %$++tvdkk44\5Q5QRS'DJJ88w"2T::r[   directly_update_dictc           
         Sn UR                  5       nUR                  R                  R                  U 5      (       d   S	5       eUS
:X  a  [        SSU  SU 3SS/S9  U(       a  U R                  R                  U5        OU R                  U5      nU(       a  Uu  pxS n	S n
U R                  (       a&  U R                  U5      n	[        [        U	5      S5      n
[        R                  " XU	5      n[        R                  " XU
SS9nXU/nUR                  X0 5      $ UR                  R                  R!                  XU5        ["        R$                  $ ! [         a    [        SSU  SU SU 3SS/S9   GN`f = f)Nr   z-non-const setattr name on user-defined objectrU  , name=z, value=zODetected a call to `setattr` of a user-defined object with a non-constant name.z!Ensure that the name is a string.r;  z`Attempted setattr on a user-defined object that does not have an AttributeMutation mutation_typer   z+__class__ assignment on user-defined objectzFDynamo does not support reassigning __class__ on user-defined objects.zBMove the __class__ assignment outside of the torch.compile region.__set__Trealize)r   NotImplementedErrorr   r   r   is_attribute_mutationr  add$try_get_descritor_and_setter_py_funcr  rb  r   r&   rB   r   r  
store_attrr   r  )r   r   r{   rz   rh  name_strtmp
descriptorsetterdesc_sourcefunc_sourcedesc_varfunc_varr   s                 rX   r^  1UserDefinedObjectVariable.method_setattr_standard  s    	..0H yy%%;;DAA 	
1	
A
 {"E!$xw7dX	  //33H=;;HEC%("
 #"??"&"@"@"JK",Z-Di"PK*00M*00[RVW .--b;;
 			))$%@///[ # 	G!$wtfHUGDm:;		s   E  E54E5c                     [        [        R                  " U R                  SS 5      5      (       + =(       a)    [	        U R                  [
        R                  5      (       + $ )NrU   )rY   r   r   rz   r   r\  r]  r   s    rX   needs_slow_setattr,UserDefinedObjectVariable.needs_slow_setattrR  sD    &""4::}dC
 
 :TZZ99	:r[   c           
      X  > U R                   (       Ga  U R                  S5      [        R                  L a  U R                  S5      [        R                  L a  U R                  S5      [        R
                  L a  [        U R                   R                  [        R                  5      5        [        [        U R                  5      5       Vs/ s HB  n[        R                  R                  U R                  U   [!        U R                   U5      S9PMD     sn$ ["        TU ]I  U5      $ s  snf )N__iter__re  __getitem__r   )r   r   r   r  re  r  r   r  r   rf  ranger@  rz   r   LazyVariableTrackerr   r"   r   unpack_var_sequence)r   r   r  r   s      rX   r  -UserDefinedObjectVariable.unpack_var_sequenceW  s    KKK00<M00;t||K00?4CSCSS$++001M1MNO s4::/
 0A	 --44JJqM(a8 5  0  w*2..s   A	D'c                     SSK Jn   UR                  U[        5      R	                  X/0 5        g! [
         a    [        U5         gf = f)Nr>   r/  TF)r#  r0  r   iterr  r   r   )r   r   r0  s      rX   r|  7UserDefinedObjectVariable.has_force_unpack_var_sequenceh  sF    .	$$R.<<RL  	%b)	s   '0 AAc                     SSK Jn  / nUR                  U[        5      R	                  X/0 5      n  UR                  U5      nUR                  U5        M%  ! [         a    [        U5         U$ f = f)Nr>   r/  )	r#  r0  r   r  r  next_variablere   r   r   )r   r   r0  resultiter_rs         rX   r}  3UserDefinedObjectVariable.force_unpack_var_sequencer  sw     	/!((T2@@VRP''+a   - )"-s   "A A/.A/c                 *    U R                  US/ 0 5      $ )N__next__)rC  r   r   s     rX   r  'UserDefinedObjectVariable.next_variable  s    JB77r[   c                 ^     U R                   U R                  5       ;   $ ! [         a     gf = fr.  )rz   rR  rr  r   s    rX   is_supported_random-UserDefinedObjectVariable.is_supported_random  s1    	::!A!A!CCC 		s    
,,c                   > U R                  5       (       aR  [        S U 5       5      (       a;  [        S UR                  5        5       5      (       a  [        XR                  X#5      $ [        U R                  [        R                  5      (       Ga8  U R                  R                  nU R                  R                  nU[        R                  R                  R                  R                  L al  [        R                   R#                  UR$                  5      (       a>  U(       d7  U(       d0  [        R                   " UR$                  5      R'                  XU5      $ U[        R(                  R*                  R,                  R                  L a  UR$                  [        R(                  R*                  R,                  L aQ  [        R.                  " UR0                  5      n[        R                   " UR$                  5      R'                  X/U5      $ U R2                  c1  [5        SSU R                   SU SU SU 3SS	U R                   S
3/S9  U R2                  c   e[7        U R2                  S5      n[8        R:                  " XUSS9n[7        U R2                  S5      n	[8        R:                  " XU	5      n
UR'                  X/U-   U5      $ [=        U R                  5      (       aq  U R2                  (       aM  U R>                  c   e[7        U R>                  S5      n[A        URC                  [D        RF                  5      5        U RI                  USX#5      $ [J        TU ]M  XU5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7frS   r  )rY  r  s     rX   r[  :UserDefinedObjectVariable.call_function.<locals>.<genexpr>  s     9Dq((**Drd  c              3   @   #    U  H  oR                  5       v   M     g 7frS   r  )rY  r  s     rX   r[  r    s     DOq((**Ord  z<attempted to call sourceless user-defined object as a methodrU  z, function=rW  rP  zDynamo does not support this.zEnsure the user-defined object z, is constructed outside the compiled region.r;  r   Trl  __self____call__)&r  r  valuesr  rz   r3   r   r  r   r  r   r  _contextlib_DecoratorContextManagercloner   rT  is_matching_clsr   r  autograd	grad_modeinference_moderM   moder   r   r   rB   r   rr   r  r   r  r   CLOSURE_MATCHrC  r   )r   r   r   r   r  rn   r  func_srcrz  obj_srcobj_varsource_attrr   s               rX   r  'UserDefinedObjectVariable.call_function  s    $$&&9D999DFMMODDD!"jj$??DJJ 0 011::&&D**%%C//HHNNN::JJMM   ==MM-&12
 00??EEEMMU^^%=%=%L%LL  00: ==MM-E623 {{"Z%djj\TF'$yY_X`a ?9$**Eqr	 ;;***!$++z:H&,,RxNH j9G%++BW=G))"i$.>GGdjj!!{{222(*Ek44\5O5OPQ##B
DAAw$Rv66r[   c                 ,    [        U R                  5      $ rS   )r-   rz   r   s    rX   _check_for_getattr,UserDefinedObjectVariable._check_for_getattr  s    !$**--r[   subobjc                     [        U[        5      (       d  g[        UR                  [        R                  5      =(       d=    [
        R                  R                  R                  R                  UR                  5      $ r.  )
r   r  r  r   BuiltinFunctionTyper   _Cr  r  is_instancemethod)r   r  s     rX   _is_c_defined_property0UserDefinedObjectVariable._is_c_defined_property  sY    &(++ KK22
 CXX##55fkkB	Cr[   c                    XR                   ;   a  U R                   U   $ [        R                  " U R                  U[        5      nU R
                  (       d  U[        L dL  [        R                  " U5      (       d1  [        R                  " U5      (       d  U R                  U5      (       a0  [        U R                  5      R                  U R                  U5      nO U R
                  (       a  U[        L a  [        eX R                   U'   U$ rS   )r  r   r   rz   r  r  r  isgetsetdescriptorr  rt   __getattribute__r   )r   r{   r  s      rX   _getattr_static)UserDefinedObjectVariable._getattr_static  s    (((((..''

D.I ,,n$))&11))&11**622 $**%66tzz4HF**v/G ! &,d#r[   	attr_namec                    [         R                  " [        U R                  5      US 5      n[         R                  " [        U5      SS 5      nU(       a,  [         R                  " U5      (       a  gXR
                  ;   a  gg)Nrk  TF)r   r   rt   rz   
isfunctionr  r   r  ru  rv  s       rX   should_skip_descriptor_setter7UserDefinedObjectVariable.should_skip_descriptor_setter  sc    ++D,<iN
''Z(8)TJ!!&)) AAAr[   c                     [         R                  " [        U R                  5      US 5      n[         R                  " [        U5      SS 5      n[         R                  " U5      (       a  X#4$ g )Nrk  )r   r   rt   rz   r  r  s       rX   rq  >UserDefinedObjectVariable.try_get_descritor_and_setter_py_func  sW     ++D,<iN
''Z(8)TJf%%''r[   r   c                    UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[	        U[
        R                  5      (       + $ X R                  R                  ;   $ r   r   r   s       rX   r   1UserDefinedObjectVariable.has_key_in_generic_dict  r   r[   c                 Z   U R                   c   e[        [        U R                  5      R                  5       GHe  u  p#XR
                  ;   d  M  US:w  a!  [        U R                   5      n[        XB5      nOU R                   n[        U5      n[        Xa5      n[        SU5       Hj  n[        U R                   5      n[        XH5      n[        U5      n[        UR                  [        R                  " [        R                   USS95      5        Ml     U R"                  (       ay  [%        U R                  S5      (       a^  XR                  R
                  ;  aE  [        U R"                  R                  [        R                  " [        R&                  US95      5        Us  $    [)        SSU S	[        U R                  5       S
[        U R                  5      R                   3SU S[        U R                  5      R                   3SU SU R                   S3/[*        R,                  QS9  g )Nr   r>   T)r   invertr}   )attrz#could not find name in object's mrozname=z, object type=z, mro=zCould not find name `z	` in mro zEnsure the name `z` is defined somewhere in z's type hierarchy.r;  )r  	enumeratert   rz   r   r}   r%   r"   r$   r!   r  r   r  r  r  r   DICT_CONTAINSr   rs   NOT_PRESENT_IN_GENERIC_DICTr   r   rz  )	r   r{   idxklass
mro_sourceklass_sourcedict_source
out_source
absent_idxs	            rX   rb  3UserDefinedObjectVariable.get_source_by_walking_mro  s   ***#D$4$<$<=JC~~%!8!.t!?J+8+IL#'??L,\:.{A
"'3-J!.t!?J#0#HL"0">K!#..%-- , : :T #0 KK

J77JJ$7$77!..%-- , H Ht "!G >J 	9D6TZZ0@/ATZZHXH`H`Gab/vYtDJJ?O?W?W>XY#D6)CDJJ<Oab"--		
r[   c                    SSK Jn  U R                  (       a  [        U R                  U5      OS nU R                  (       a  [
        R                  " [        U R                  5      S5      nU R                  (       a  [        U R                  S5      OS n [        R                  " UU US9R                  XR                  " U5      /0 5      $ UR                  R                   R#                  X5      (       ay  UR                  R                   R%                  XSS9n['        U[        R(                  5      (       a4  [+        [,        US[        U R                  5      R.                   SU S3/S	9  U$ US
:X  a  SU0n[        R0                  " XS 40 UD6$ US:X  a7  Un	Uc  U R2                  n	OUn	SU	0n
[5        [        U R                  5      40 U
D6$  U R7                  U5      nSSK0J1n  U[P        RR                  RT                  Rd                  L a  UnX Rf                  ;   a  U Rf                  U   nO>[
        R                  " U R                  Rh                  U[8        5      nXRf                  U'   XL =(       a_    U R2                  S L=(       aJ    U R                  S L=(       a5    [k        U R                  S
5      =(       a    X R                  Rl                  ;  n['        U[n        5      (       a_  U R                  (       a  [        U Rq                  U5      S5      n[r        Rt                  " XRv                  USS9nUR                  X/0 5      $ ['        U[x        Rz                  5      (       aF  UR}                  5       u  nu  nn['        U [~        5      (       d   eU R                  R                  U   $ ['        U[        5      (       aU  U(       a  [        U Rq                  U5      S5      nUR                  U R                  5      n[r        Rt                  " UUU5      $ ['        U[        5      (       aU  S nU(       a  [        U Rq                  U5      S5      n[        R                  " UR                  U R                  US5      UUS9$ ['        U[<        R                  5      (       a4  UR                  U R                  S 5      n[r        Rt                  " UUU5      $ [        U5      (       a  [        R                  " USXS9$ [
        R                  " [        U5      S[8        5      [8        La  [        [        U5      R                  5      (       d  S nS nU R2                  (       a>  U Rq                  U5      n[        [        U5      S5      n[r        Rt                  " XU5      nO[        U5      n[5        [        U R                  5      5      n[        R                  " UR                  R                  UUS9R                  XU/0 5      $ ['        U[<        R>                  5      (       dT  ['        U[<        R                  5      (       GaZ  ['        U R                  [P        RR                  RT                  5      (       Ga&  [        U R                  U5      nUUL aL  [k        US 5      (       a;  UR                  nUnU(       a  [        US 5      OS nUUL a  [k        US 5      (       a  M;  ['        U[<        R                  5      (       a  UR                  U R                  La  ['        UR                  [<        R>                  5      (       d[  [_        S!SU R                   SU S"U S#UR                   S$UR                   3
S%U S&U S'U R                   S(UR                   S)3	S*/S9  S nUb  [        US+5      n[r        Rt                  " UUR                  U5      n[        R                  " UR                  U5      $ UR                  nO#['        U[<        R>                  5      (       d   eUn[
        R                  " U5      (       a1  S nU(       a  U Rq                  U5      n[        R                  " UU UUS9$ [
        R                  " U5      (       a  [r        Rt                  " UUU5      $ [P        R                  R                  R                  (       d  ['        U [        R                  5      (       a  U(       a  ['        U [        RB                  5      (       a  UR                  R                  (       a)  [P        R                  R                  R                  (       a<  US,;   a%  U R                  c   e[        U R                  U5      nU R                  U5      nU[8        LGa?  [        U5      (       dH  [P        R                  R                  R                  R                  U5      (       d  [        U5      (       a  SU0n
[        R0                  " XS 40 U
D6$ U(       a7  U(       a  U Rq                  U5      n[        R                  R                  X5      $ U R2                  bj  [
        R                  " U R                  Rh                  U[8        5      nXL a6  [        U R2                  U5      n[        R                  R                  UU5      $ [r        Rt                  " X5      $ [+        [,        US[        U R                  5      R.                   SU S3/S	9  g ! [         a    [        U5         G
NSf = f! [,         Ga    [8        nU R;                  5       n['        U[<        R>                  5      (       Ga  U[@        L a  ['        U [        RB                  5      (       a  [E        U R                  RF                  [H        5      (       ad  [E        U R                  RJ                  [H        5      (       a;  [E        U R                  RL                  [H        5      (       a  U RO                  X5      nO_S nU R                  (       a  [        U R                  S5      n[        R                  " XUS9R                  XR                  " U5      /0 5      nU R                  (       a  U[P        RR                  RT                  RV                  L aX  ['        U[        RB                  [        RX                  45      (       a)  UR[                  [        U R]                  5       U5      5        Us $ Ub4  [_        SSU R                   SU SU 3SU SU R                   SU S3S/S9   GNff = f)-Nr>   rL   r  r   Tr   r   z' object has no attribute 'r   r}   r   r   __getattr__z1User-defined object with non-function __getattr__rU  rj  z, getattr_fn=z!Found a non-function __getattr__ z from a user-defined object z  when attempting to getattr ``z3Ensure the object's __getattr__ is a function type.r;  r   rX  r  )r   rm  r   rZ  __wrapped__r   _torchdynamo_inlinez5User-defined object method with non-function __func__rV  z, method.__self__=z, method.__func__=zMethod z (name=z) of user-defined object z has a __func__ (z) that is not a function type.z5Ensure that the method's __func__ is a function type.r  )_buffers_parameters)`r   rM   r   r   r  r   r   rt   rz   r   r  r  r   r   r   r   r   r   r   r   r   r   r   rp   r   r  r   r  r  r  r   r   r=   UnspecializedNNModuleVariabler3   r  r   r  _modules manually_trace_nn_module_getattrr   r%  rd  r  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   rc  rY  r   r  r   rs   r}   r  rb  rB   r   r  _collections_tuplegetter
__reduce__UserDefinedTupleVariable	_tuple_vtrk  r   r   r   r   r   r  r0   WrapperUserMethodVariabler2   r&   r  r  r~   r  r  ismethodr  r  r  inline_inbuilt_nn_modulesFSDPManagedNNModuleVariabler;  install_free_tensorsr'   _wrap_sourcer  r  r  rv   r  )r   r   r{   rM   r   getattribute_fn
new_sourcer  options_dictr  r  r  
getattr_fnoutrY  subobj_from_classis_accessible_from_type_mror  _r  r  r[  descriptor_sourcedescriptor_get_sourcedescriptor_var	owner_vardynamic_subobjself_source	object_vt
var_sourcesrc_from_classs                                  rX   r   %UserDefinedObjectVariable.var_getattrF  sN   &AE
4;; =RV((%44TZZ "4O @D{{
4;;(:;PT 	. 33#%	
  -%<%<T%B$CRHI 99!!>>tJJYY++55dT5RF&)";";<<("D,5566QRVQWWXY M:$f-L,,TNNN
 ;(.J~!__
#
,G+D,<HHH3	))$/Fh 	>UXX__----F *** $ 7 7 = ' 6 6

$$dN! ->##D) ' 0t+04'0 

J/0 JJ/// 	$ fh''{{#D$B$B4$H&Q%++KKG ((VR88 9 9:: !++-KAxQ d$<====>>'',,-- + $D$B$B4$H*U>>$**-D"((T6::,,I* 't'E'Ed'KZX	//  [1#	   ? ?@@>>$**d3D"((T6::*622 66t  ##L)^
 (GL  )
 )
 !%$(! %)$B$B4$H!(2019)% "1!6!6rCT!U ";6!B 1djj1ABI//'', mBy 126	7
  2 233vu//004::uxx77
 %TZZ6N F*wv?T/U/U33!'FLF,ABRV !F*wv?T/U/U
 &%"2"233!**$**<%n&=&=u?Q?QRR%$[&-djj\iP^O_ `//=/F/F.GGYZhZqZqYr%t*1.1ANghlhrhrgs t))7)@)@(AA_)a !X#	 #'K)&0&D / 5 5N33[!I %77&//!  !&%*<*<====//!
.!%!?!?!EJ 33$*V  ##N33&,,Rv>> $$>>dI$I$IJJ4!H!HII YY%%)=)=)R)R 22{{...7TJ&&v.F'/7788##));;FCC%f--#V, 00TMWMM.!;;DAF 44;;FKK ??.(/(>(>

,,dN)% )2)3DOOT)J(<<CC-~   ',,R88 	!d4::&//00KD6QRST	
Q	 * .)"-.D  1	#F002J*e&8&899 "=="4)P)PQQtzz55t<<tzz22D99tzz22D99 ??IC!%J{{%/]%K
#66"#mB)@)@)F(GL  ;;:1L1L#L!%CC%66  66&t'F'F'H$O 
'O%djj\mJ<X"CJ<Oklplvlvkw x4486!< NS1	s+   6l l# l l #G'u7uurM   c                    U R                   (       a<  [        [        U R                   U5      R                  [        R
                  5      5         U R                  X5      n[        R                  R                  [        U[        R                  5      (       + 5      $ ! [         a-    [        U5        [        R                  R                  S5      s $ f = fr.  )r   r   r   r  r   r  r   r   rM   r   r   r   r   r   )r   r   r{   var_vts       rX   r  *UserDefinedObjectVariable.call_obj_hasattr  s     ;;4;;-889M9MN	<%%b/F--44vy'@'@AA  & 	<%b)--44U;;	<s   AB 4CCc                 0    [        U R                  U 5        gr  r9   rz   r   s    rX   r  ,UserDefinedObjectVariable.is_python_hashable  s     T2r[   c                 ,    [        U R                  5      $ rS   r  r   s    rX   r  )UserDefinedObjectVariable.get_python_hash  s    DJJr[   r  c                 ^    [        U[        5      (       d  gU R                  UR                  L $ r.  )r   rx   rz   r  s     rX   r  )UserDefinedObjectVariable.is_python_equal  s&    %!455zzU[[((r[   c                    [        [        USS5      SS5      nUR                  S5      nU(       a   SSKnSSKJn	  U R
                  U	;   =(       d=    UR                  U R
                  5      =(       d    UR                  U R
                  5      n
U
(       d7  UR                  S5      nUb#   UR                  5       nUU R
                  4U	;   n
OgOfSSKJs  Jn  U R
                  UR(                  ;   =(       d=    UR                  U R
                  5      =(       d    UR                  U R
                  5      n
U
(       d  UR+                  X/UQ0 5      $ U R                  UUUUU5      $ ! [         a    U R                  UUUUU5      s $ f = f! [         aB    SSKnUR                  [        5      nUR!                  S	5        U R                  UUUUU5      s $ f = f)
a  Emulate tree_map behavior for user-defined objects.

In pytree, a type is a leaf if it is NOT in SUPPORTED_NODES.
User-defined objects (that are not registered with register_pytree_node)
are always treated as leaves. This works for both torch.utils._pytree
and optree implementations.
r  Nr   r   optreer   )_NODETYPE_REGISTRY	namespacezYFailed to import optree.registry._NODETYPE_REGISTRY, falling back to tracing for tree_map)r~   r
  r  optree.registryr	  r  is_namedtuple_classis_structseq_classri   r   rn  _tree_map_fallbackrf   logging	getLoggerrp   warningr  r  r  SUPPORTED_NODESr  )r   r   tree_map_fnmap_fnresttree_map_kwargstree_map_module	is_optreer  r	  is_registerednamespace_varr
  r  logr   s                   rX   call_tree_map_branch.UserDefinedObjectVariable.call_tree_map_branch  s     "'+tT"BLRTU#..x8	/>
 OO'99 B11$//BB00A  %$3$7$7$DM$0(5(H(H(JI !* $- "4-4M> 10 6#9#99 >--doo>>,,T__=  ''MDM2>>
 &&
 	
W  3 #'#:#: " + & $ /$   ''1; ..# s1   A8F
 +!E% %FF
 FF
 
A	GG)
r  r  r  r  r  r  r  r  rz   r  rQ   NF)r   rK   r  z(variables.functions.UserFunctionVariabler  rB   r  z)collections.abc.Sequence[VariableTracker]r  zdict[str, VariableTracker]rQ   rB   );rp   r   r   r   r  rx   _nonvar_fieldsrT   rt   r&   rB   r   r   r   r   r'  r   r  r0  r4  r   r@  rC  rH  r   rK  r   r  r  r   rR  r   rC  r^  r}  r  r|  r}  r  r  r  r  r  r  r  r   rq  r   r!   rb  r   r  r  rw  r  r  r  r   r  r  s   @rX   r  r  9  s
   
 	( 
	+	+	N #'(,.26:/L/L 4K	/L
 %/L %t+/L O,t3/L /L 
/L /Lb	5 	5H# Hm  T ,F ,62& 2

/6 /? /
#
 
 	

 sm
 S#X
 

* __S   A;#A; A; 3i	A;
 S#XA; 
A;P &+70#70 70 	70
 #70 
70r:D :
/&= /$BW /"0G D )	o	"8 7 8O 8T :7#:7 ':7 S/)*	:7
 
:7x.F .
CV 
C 
CC F <s t 	vv~		%**A * *PT *0
c 0
6G 0
d@
5 @
S @
_ @
D
<)<14<	<"D    )V ) )_
#_
 @_
 "	_

 :_
 6_
 
_
 _
r[   r  c                     ^  \ rS rSr\SSS\S\SS 4S j5       r SS\S	\\	\
4   S-  S
\
SS4U 4S jjjrS\4S jrS\4S jrSS jr SSSS\S\S\S\4
U 4S jjjrS\	4S jrS\S   4S jrS\4S jrS\S\4S jrSrU =r$ )FrozenDataClassVariablei	  r   rK   rz   r   rQ   c           	      F   SSK Jn  [        U5      (       d   e0 nU" U5       Hr  n[        XR                  5      (       d  M  [
        R                  " U [        XR                  5      U=(       a    [        X%R                  5      5      XER                  '   Mt     [        XUS9$ )Nr   r  )r  r   )
r  r  r/   rs   r{   rB   r   r~   r   r"  )r   rz   r   r  	field_mapr  s         rX   r   FrozenDataClassVariable.create
  s     	'"5))))	E]Eujj))(7(=(=E::.=z&**=)	**% # 'uvNNr[   Nr  r   c                 >   > [         TU ]  " U40 UD6  Uc  0 nX l        g rS   )r   r   r  )r   rz   r  r   r   s       rX   r    FrozenDataClassVariable.__init__  s&     	)&)>Fr[   c                 \   SSK Jn  SS KJs  Jn  [        U R                  UR                  UR                  UR                  45      (       d  [        S5      e[        U R                  UR                  5      (       a  UR                  5       $ / n0 nU" U R                  5       Hp  nUR                  (       d  M  U R                  UR                     R                  5       n[        USS5      (       a  XdUR                  '   M_  UR!                  U5        Mr     U R#                  5       nU" U0 UD6$ )Nr   r$  z@currently can't reconstruct arbitrary frozen dataclass instanceskw_onlyF)r  r  r  r  r  r3   rz   TreeSpecLeafSpecConstantNodern  treespec_leafr  r{   r   r~   re   r4  )r   r  r   r   r   r  datactors           rX   r   *FrozenDataClassVariable.as_python_constant%  s     	',,JJ&//6;N;NO
 
 &R 
 $**foo..''))DJJ'Ezzz{{5::.AAC5)U33)-5::&KK% ( !T$V$$r[   c                 L   SSK Jn  / n0 nU" U R                  5       Hm  nU R                  UR                     R	                  5       n[        US5      (       a!  UR                  (       a  XSUR                  '   M\  UR                  U5        Mo     U R                  5       nU" U0 UD6$ )Nr   r$  r*  )	r  r  rz   r{   r   rs   r*  re   r4  )r   r  r   r   r  r"  r0  s          rX   r    FrozenDataClassVariable.as_proxyG  s    &DJJ'EKK

+446Eui((U]]%*uzz"E" ( !T$V$$r[   c                   ^^ SSK Jn  SS KJs  Jn  [        U R                  UR                  5      (       aP  U R                  R                  5       (       a1  TR                  U4S j5        TR                  [        SS5      5        g U R                  5       m[        TS5      (       a*  [        SSTR                   3SS	/[         R"                  QS
9  / n/ nU" T5       H  nUR$                  (       d  M  U R                  R'                  UR(                  5      nUcD  [        SSTR                   SUR(                   3SUR(                   S3/ [         R"                  QS
9  [+        USS5      (       a  UR-                  UR(                  U45        M  UR-                  U5        M     TR                  UU4S j5        U H  nT" U5        M     U H  u  pT" U5        M     [/        U5      [/        U5      -   n
U(       a2  [1        S U 5       5      nTR                  TR3                  XSS95        g TR                  [        U
S5      5        g )Nr   r$  c                  (   > T R                  SS5      $ )Nztorch.utils._pytreer,  load_import_fromcodegens   rX   <lambda>5FrozenDataClassVariable.reconstruct.<locals>.<lambda>d  s    001F
Sr[   F__post_init__z#Frozen dataclass with __post_init__z
dataclass=z~Cannot reconstruct frozen dataclass with __post_init__ method, as it may have side effects that would be incorrectly replayed.z:Remove the __post_init__ method from the frozen dataclass.r;  z#Frozen dataclass with missing fieldz, field=z,Cannot reconstruct frozen dataclass: field 'z!' was not tracked during tracing.r*  c                  D   > T R                  T R                  T5      5      $ rS   )append_outputcreate_load_const_unchecked)r9  dataclass_clss   rX   r:  r;    s    G))33MBr[   c              3   *   #    U  H	  u  pUv   M     g 7frS   r   )rY  r{   r  s      rX   r[  6FrozenDataClassVariable.reconstruct.<locals>.<genexpr>  s     9gdTs   )	push_null)r  r  r  r  r  r   rz   r+  is_leafadd_push_nullextend_outputr   r4  rs   r   rp   r   rG  r  ri   r{   r~   re   r@  r   create_call_function_kw)r   r9  r  r   pos_argskw_argsr  field_vtarg_vtr  
total_argskw_namesr@  s    `          @rX   reconstruct#FrozenDataClassVariable.reconstruct[  s   & 	-,djj&//22tzz7I7I7K7K!!S !!"6q%"@A ((*=/22=$]%;%;$<=R Q&22	 M*E::{{uzz2HA()?)?(@U"Nuzzl [6 !6:-99: ui//

H56) +$ 		
 FFO  IAFO ! ]S\1
999H!!//
PU/V !!"6z5"IJr[   r{   rh  c                 \   > X0R                   UR                  5       '   [        TU ]  XX45      $ rS   )r  r   r   r^  )r   r   r{   rz   rh  r   s        rX   r^  /FrozenDataClassVariable.method_setattr_standard  s,     27D++-.w.rUUr[   c                 b    U R                   R                   SU R                  R                   S3$ r   r*  r   s    rX   r    FrozenDataClassVariable.__repr__  r,  r[   Tc                     gr  r   r   s    rX   r  *FrozenDataClassVariable.is_python_hashable  s    r[   c                 h    [        [        S U R                  R                  5        5       5      5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7frS   )r  )rY  r  s     rX   r[  :FrozenDataClassVariable.get_python_hash.<locals>.<genexpr>  s     P;OC--//;Ord  )r  r   r  r  r   s    rX   r  'FrozenDataClassVariable.get_python_hash  s%    EP4;;;M;M;OPPQQr[   r  c                    [        U[        5      (       d  gU R                  5       UR                  5       L nU R                  R	                  5       UR                  R	                  5       :H  n[        S [        U R                  R                  5       UR                  R                  5       5       5       5      nU=(       a    U=(       a    U$ )NFc              3   H   #    U  H  u  pUR                  U5      v   M     g 7frS   )r  )rY  value_avalue_bs      rX   r[  :FrozenDataClassVariable.is_python_equal.<locals>.<genexpr>  s(      "
$T  ##G,,$Ts    ")r   r"  r4  r  r   r  r  r  )r   r  is_class_sameis_field_name_sameis_field_value_sames        rX   r  'FrozenDataClassVariable.is_python_equal  s    %!899((*e.?.?.AA![[--/5<<3D3D3FF! "
$'(:(:(<ell>Q>Q>S$T"
 
 K!3K8KKr[   r$  rS   r9  rG   rQ   Nr  )rp   r   r   r   r   rT   r   r   r   r   r   r   r   r   rN  rB   r  r^  r   r   r  rw  r  r  r   r  r  s   @rX   r"  r"  	  s'   O#O,2O<BO	"O O& >B%)#s(^d%:MP	  %F  %D%& %(FK^ &+V#V V 	V
 #V 
V VH# HGDM R R	LV 	L 	L 	Lr[   r"  c            
       f   ^  \ rS rSrS\S\SS4U 4S jjrSSS	\S
\\	   S\
\\	4   S\	4
S jrSrU =r$ )SourcelessGraphModuleVariablei  rz   r   rQ   Nc                 (   > [         TU ]  " U40 UD6  g rS   )r   r   r   s      rX   r   &SourcelessGraphModuleVariable.__init__  s    
 	)&)r[   r   rK   r{   r   c                     [         R                  " XR                  R                  R                  5      nU /U-   nUR                  UUU5      $ rS   )rB   r   rz   forwardr   ro  )r   r   r{   r   r   fn_variables         rX   rC  )SourcelessGraphModuleVariable.call_method  sK     &++B

0B0B0K0KLv}--
 	
r[   r   )rp   r   r   r   rT   r   r   r   r   rB   r   rC  r   r  r  s   @rX   re  re    sm    ** * 
	*
#
 
 ?#	

 S/)*
 

 
r[   re  c            
       b  ^  \ rS rSrS\S\SS4U 4S jjr\S\S\4   4S j5       r	S	S
S\
S\\   S\\
\4   S\4
U 4S jjr\SS j5       r\S\\S4   4S j5       rSS jr\S\\   4S j5       r\S\R.                  S-  4S j5       r\R2                  S\R.                  SS4S j5       rSrU =r$ )"UserDefinedExceptionObjectVariablei  rz   r   rQ   Nc                 t   > [         TU ]  " U40 UD6  [        R                  " U R                  S5      U l        g Nr   )r   r   r   ExceptionVariabler  exc_vtr   s      rX   r   +UserDefinedExceptionObjectVariable.__init__  s-    )&)11$//2Fr[   .c                     U R                   $ rS   r3  r   s    rX   r  %UserDefinedExceptionObjectVariable.fn  s    r[   r   rK   r{   r   c                   > US:X  a|  U R                  U5      =n(       ad  [        R                  " U5      (       aI  [        U5      S:X  a:  [	        U5      U R
                  l        X0R                  l        [        R                  $ US:X  aN  [        U5      S:X  a?  US   R                  SSSS5      (       a#  U R
                  R                  XS   US	   5        O"US
:X  a  U R
                  R                  XX45      $ [        TU ]1  XX45      $ )Nr   r   rU   r   	__cause____context____suppress_context____traceback__r>   with_traceback)r   r   r  r@  r   rq  r   rz   r   r  is_constant_matchcall_setattrrC  r   r   r   r{   r   r   r  r   s         rX   rC  .UserDefinedExceptionObjectVariable.call_method  s     J;;DAAA**622Fq $T{DKK"JJO333M!D	QQ))],BO  KK$$Ra$q':%%;;**2TBBw"2T::r[   c                 .    U R                   R                  $ rS   )rq  rw  r   s    rX   rw  .UserDefinedExceptionObjectVariable.__context__	  s     {{&&&r[   c                 .    U R                   R                  $ rS   )rq  r   r   s    rX   r   'UserDefinedExceptionObjectVariable.args	  s    {{r[   c                 8    U R                   R                  U5      $ rS   )rq  set_context)r   r=  s     rX   r  .UserDefinedExceptionObjectVariable.set_context	  s    {{&&w//r[   c                 .    U R                   R                  $ rS   )rq  exc_typer   s    rX   r  +UserDefinedExceptionObjectVariable.exc_type	  s    {{###r[   c                 .    U R                   R                  $ rS   rq  python_stackr   s    rX   r  /UserDefinedExceptionObjectVariable.python_stack	  s    {{'''r[   c                 $    XR                   l        g rS   r  )r   rz   s     rX   r  r  	  s    #( r[   )rq  )rQ   rM   )r=  zvariables.ExceptionVariablerQ   N)rp   r   r   r   rT   r   r   r  r   r  r   r   rB   r   rC  rw  r   r   r  rt   rV   r  	tracebackStackSummaryr  rv  r   r  r  s   @rX   rm  rm    s;   Gf G G G HS&[)  ;#; ; ?#	;
 S/)*; 
;: ' '  eOS01    0 $$}- $ $ (i44t; ( ( ))"8"8 )T ) )r[   rm  c                      ^  \ rS rSr% Sr\R                  SS0\R                  SSS.0r\	\
\	\\4   4   \S'   \S	\S
\4S j5       r\S	\S
\4S j5       rSSS\S
\4U 4S jjrSrU =r$ )InspectVariablei	  zHandles inspect.Signature and inspect.Parameter objects.

Short-circuits property accesses to avoid tracing property getters,
redirecting them to the underlying private attributes directly.

parametersr  _kind_name)kindr{   _PROPERTY_REDIRECTSrn   rQ   c                 :    [        U 5      [        R                  ;   $ rS   )rt   r  r  ru   s    rX   is_matching_object"InspectVariable.is_matching_object(	  s    CyO????r[   c                 (    U [         R                  ;   $ rS   )r  r  ru   s    rX   is_matching_class!InspectVariable.is_matching_class,	  s    o9999r[   r   rK   r{   c                    > U R                   R                  [        U R                  5      0 5      nX#;   a  [        TU ]  XU   5      $ [        TU ]  X5      $ rS   )r  ri   rt   rz   r   r   )r   r   r{   	redirectsr   s       rX   r   InspectVariable.var_getattr0	  sN    ,,00djj1A2F	7&rT?;;w"2,,r[   r   )rp   r   r   r   r  r   	Signature	Parameterr  r   rt   r   r   r   rT   r  r  r  rB   r   r   r  r  s   @rX   r  r  	  s     	L-8GW=7dDcN23 
 @ @4 @ @ :v :$ : :-5 -S -_ - -r[   r  c                   p   ^  \ rS rSr\S\S\4S j5       rS\S\SS4U 4S jjr	S	S
S\
S\4U 4S jjrSrU =r$ )KeyedJaggedTensorVariablei7	  rn   rQ   c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorchrec.sparse.jagged_tensor)rg   rh   ri   rt   KeyedJaggedTensorrn   mods     rX   r  ,KeyedJaggedTensorVariable.is_matching_object8	  s3    kkoo=>$E490E0E#EEr[   rz   r   Nc                 T   > SSK Jn  [        U5      UL d   e[        TU ]  " U40 UD6  g )Nr   )r  )torchrec.sparse.jagged_tensorr  rt   r   r   )r   rz   r   r  r   s       rX   r   "KeyedJaggedTensorVariable.__init__=	  s/    	
 E{////)&)r[   r   rK   r{   c                   > [         R                  R                  R                  (       a@  U R                  b3  US;   a-  [
        R                  " SS9   [        TU ]!  X5      sS S S 5        $ [        TU ]!  X5      $ ! , (       d  f       N= f)N)_length_per_key_offset_per_keyT)#force_unspec_int_unbacked_size_like)	r   r  r  3force_unspec_int_unbacked_size_like_on_torchrec_kjtr   r   patchr   r   r  s      rX   r   %KeyedJaggedTensorVariable.var_getattrE	  sg    MM  TT'>>%%$Ow*24 POw"2,, POs   A::
Br   )rp   r   r   r   r   rT   r  r  r   r   r   rB   r   r   r  r  s   @rX   r  r  7	  sa    F F4 F F*f * * *-5 -S -_ - -r[   r  c                   0    \ rS rSr\S\S\4S j5       rSrg)IntWrapperVariableiP	  rn   rQ   c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorch.export.dynamic_shapes)rg   rh   ri   rt   _IntWrapperr  s     rX   r  %IntWrapperVariable.is_matching_objectS	  s1    kkoo;<$?49#??r[   r   N)	rp   r   r   r   r   rT   r  r  r   r   r[   rX   r  r  P	  s(     @ @4 @ @r[   r  c            
          ^  \ rS rSrSr  SS\S-  S\S-  S\SS4U 4S jjjrS	S
S\	S\
\   S\\	\4   S\4
U 4S jjrSU 4S jjrS\\   4S jrSrU =r$ )RemovableHandleVariableiY	  Nr9  r  r   rQ   c                 >   > [         TU ]  " S0 UD6  Xl        X l        g ro  )r   r   r9  r  )r   r9  r  r   r   s       rX   r    RemovableHandleVariable.__init__\	  s      	"6"*r[   r   rK   r{   r   c                 "  > US:X  ay  U R                   U R                  :w  aO  U R                   c   eUR                  R                  R	                  U R                   5        U R                  U l         [
        R                  $ [        TU ]!  XX45      $ )Nremove)	r  REMOVEDr   r   remove_hookr   r  r   rC  )r   r   r{   r   r   r   s        rX   rC  #RemovableHandleVariable.call_methodg	  sr     8xx4<<'xx+++		&&22488<<<333w"2T::r[   c                    >^ U R                   U R                  :X  a1  TR                  U4S j5        TR                  [	        SS5      5        g [
        TU ]  T5        g )Nc                  (   > T R                  SS5      $ )Nztorch._dynamo.utilsinvalid_removeable_handler6  r8  s   rX   r:  5RemovableHandleVariable.reconstruct.<locals>.<lambda>z	  s    00)+Fr[   r   F)r  r  rE  rF  r   r   rN  )r   r9  r   s    `rX   rN  #RemovableHandleVariable.reconstructv	  sN    88t||#!!
 !!"6q%"@AG$r[   c                     [         $ rS   )r  r   s    rX   r4  #RemovableHandleVariable.python_type	  s    ##r[   )r  r9  ri  rc  )rp   r   r   r   r  r?   rw  r   r   r   r   rB   r   rC  rN  rt   rT   r4  r   r  r  s   @rX   r  r  Y	  s    G .2		#d*	 4Z		
 	 
	 	;#; ; ?#	;
 S/)*; 
;%$T&\ $ $r[   r  c            
       $  ^  \ rS rSrSr SS\S\S-  S\SS4U 4S jjjrS	S
S\	S\
\   S\\	\4   S\4
U 4S jjrS	S
S\
\   4S jrSSS\4S jr\S\\   4S j5       r\S\\\4   4S j5       rSS jrS	S
S\
\   SS4S jrS\S   4S jrSrU =r$ )UserDefinedDictVariablei	  z
Represents user defined objects that are subclasses of dict/OrderedDict.

Internally, it uses a ConstDictVariable to represent the dict part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
Nrz   r  r   rQ   c                    > [         TU ]  " U40 UD6  Uc6  U R                  b   S5       e[        0 [	        U5      [        5       S9U l        OX l        [        U l        g )Nz@dict_vt must be constructed by builder.py when source is presentr8  )	r   r   r   rC   rt   rA   _dict_vtr*   _dict_methods)r   rz   r  r   r   s       rX   r    UserDefinedDictVariable.__init__	  sb     	)&)?;;& R& .DK/?/ADM $M)r[   r   rK   r{   r   c                 d  > U R                  U5      nXPR                  ;   a   U R                  R                  XX45      $ [        TU ]  XX45      $ ! [         aV    US:X  aN  [        U R                  5       [        5      (       a+  U R                  S5      (       a  U R                  USX45      s $ e f = f)Nr  __missing__)	r   r  r  rC  r   r   r4  r   r   r}  s         rX   rC  #UserDefinedDictVariable.call_method	  s     11$7'''
}}004HH w"2T:: $ M)"4#3#3#5t<<88GG++BtLLs   A AB/-B/c                     [        U R                  5      R                  [        R                  [        R
                  R                  4;   a  U R                  R                  U5      $ [        erS   )	rt   rz   r  r   r   r   r  r  rn  r  s     rX   r  +UserDefinedDictVariable.unpack_var_sequence	  sQ    

$$MM##,,)
 
 ==44R88!!r[   r   rI   c                 8    UR                  U R                  5      $ rS   )is_modifiedr  r/  s     rX   r0  1UserDefinedDictVariable.is_underlying_vt_modified	      ''66r[   c                 .    U R                   R                  $ rS   )r  user_clsr   s    rX   r   UserDefinedDictVariable.user_cls	  s    }}%%%r[   c                 .    U R                   R                  $ rS   )r  rk  r   s    rX   rk  UserDefinedDictVariable.items	  s    }}"""r[   c                 6    U R                   R                  5       $ rS   )r  install_dict_keys_match_guardr   s    rX   r  5UserDefinedDictVariable.install_dict_keys_match_guard	  s    }}::<<r[   c                 8    U R                   R                  X5      $ rS   )r  install_dict_contains_guardr   r   r   s      rX   r  3UserDefinedDictVariable.install_dict_contains_guard	  s     }}88BBr[   Fc                 0    [        U R                  U 5        gr.  r  r   s    rX   r  *UserDefinedDictVariable.is_python_hashable	       T2r[   )r  r  rS   r  )rp   r   r   r   r  rT   rC   r   r   r   r   rB   r   rC  r  r  r0  r  rt   r  rk  r  r  r   r  r   r  r  s   @rX   r  r  	  s6    -1** #T)* 	*
 
* *$;#; ; ?#	;
 S/)*; 
;2"&= "$BW "7m 7 7 &$v, & & #tO_<= # #=C)C15o1FC	C
GEN  r[   r  c            
       H  ^  \ rS rSrSr SS\S\S-  S\SS4U 4S jjjrS	S
S\	S\
\   S\\	\4   S\4
U 4S jjrS\4S jrS	S
S\
\   4S jr\S\\   4S j5       r\S\
\   4S j5       rSSS\4S jrSS jrS	S
S\
\   SS4S jrS\4S jrS\4S jrS\S\4S jrSrU =r$ )UserDefinedSetVariablei	  z
Represents user defined objects that are subclasses of set.

Internally, it uses a SetVariable to represent the set part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
Nrz   set_vtr   rQ   c                 L  > SSK Jn  UR                  SS 5      n[        TU ]  " U40 UD6  [        U[        5      (       a  [        O[        nU[        L a  [        O[        U l
        Uc  U R                  b   S5       eU[        L a+  [        R                  " [        5       [        5       S9U l        g UR!                  S0 5      nUc2  ["        R$                  R&                  R(                  R+                  5       nUR-                  XV5      R/                  XW0 5      U l        g X l        g )Nr>   r/  r   z?set_vt must be constructed by builder.py when source is presentr8  r  )r#  r0  popr   r   r   r   r   r:   r,   _set_methodsr   r   rE   rA   _set_vtri   r   r  symbolic_convertrK   r:  r   r  )	r   rz   r  r   r0  r   r4  r  r   s	           rX   r   UserDefinedSetVariable.__init__	  s     	/ZZd#)&)'s33c+6#+=KCT>;;& Q& c!(44E"2"4 
 #JJ{B7	:77MMXXZB077HVV2  "Lr[   r   rK   r{   r   c                    > U R                  U5      nXPR                  ;   a  U R                  R                  XX45      $ [        TU ]  XX45      $ rS   )r   r  r  rC  r   r}  s         rX   rC  "UserDefinedSetVariable.call_method
  sJ     11$7&&&<<++BdCCw"2T::r[   c                 6    U R                   R                  5       $ rS   )r  r   r   s    rX   r   )UserDefinedSetVariable.as_python_constant
  s    ||..00r[   c                     [         R                  " U R                  S5      [        R                  [
        R                  4;   a  U R                  R                  U5      $ [        e)Nr  )	r   r   rz   r   r  r   r  r  rn  r  s     rX   r  *UserDefinedSetVariable.unpack_var_sequence
  sM    !!$**j9LL>
 
 <<33B77!!r[   c                 .    U R                   R                  $ rS   )r  	set_itemsr   s    rX   r   UserDefinedSetVariable.set_items
  s    ||%%%r[   c                 .    U R                   R                  $ rS   )r  rk  r   s    rX   rk  UserDefinedSetVariable.items
  s    ||!!!r[   r   rI   c                 8    UR                  U R                  5      $ rS   )r  r  r/  s     rX   r0  0UserDefinedSetVariable.is_underlying_vt_modified"
  s    ''55r[   c                 6    U R                   R                  5       $ rS   )r  r  r   s    rX   r  4UserDefinedSetVariable.install_dict_keys_match_guard%
  s    ||99;;r[   c                 8    U R                   R                  X5      $ rS   )r  r  r  s      rX   r  2UserDefinedSetVariable.install_dict_contains_guard(
  s     ||77AAr[   c                 b    [        U R                  U 5        U R                  R                  5       $ rS   )r9   rz   r  r  r   s    rX   r  )UserDefinedSetVariable.is_python_hashable-
  s#     T2||..00r[   c                 6    U R                   R                  5       $ rS   )r  r  r   s    rX   r  &UserDefinedSetVariable.get_python_hash1
  s    ||++--r[   r  c                 z    [        U[        5      =(       a%    U R                  R                  UR                  5      $ rS   )r   r  r  r  r  s     rX   r  &UserDefinedSetVariable.is_python_equal4
  s0    )
 :ll**5==9	:r[   )r  r  rS   r  )rp   r   r   r   r  rT   rE   r   r   r   r   rB   r   rC  r   r  r  r   r  rk  r  r0  r  r  r  rw  r  r  r   r  r  s   @rX   r  r  	  sR    ;?""%04%7"JM"	" ">
;#
; 
; ?#	
;
 S/)*
; 

;1F 1"&= "$BW " &3s8 & & "tO, " "6m 6 6<B)B15o1FB	B
1D 1. .:V : : :r[   r  c            
          ^  \ rS rSrSr SS\S\S   S\SS4U 4S	 jjjrS
SS\	S\
\   S\\	\4   S\4
U 4S jjrS
SS\
\   4S jrSSS\4S jrS\S   4S jrSrU =r$ )UserDefinedListVariablei:
  z
Represents user defined objects that are subclasses of lists.

Internally, it uses a ListVariable to represent the list part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
Nrz   list_vt)rN   Nr   rQ   c                    > SSK Jn  [        TU ]  " U40 UD6  Uc)  U R                  b   S5       eU" / [        5       S9U l        g X l        g )Nr>   ra  z@list_vt must be constructed by builder.py when source is presentr8  )r~  rN   r   r   r   rA   _list_vt)r   rz   r	  r   rN   r   s        rX   r    UserDefinedListVariable.__init__C
  sR     	()&)?;;& R& );K;MNDM#Mr[   r   rK   r{   r   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ rS   )r  r   r4   rC  r   r}  s         rX   rC  #UserDefinedListVariable.call_methodQ
  sV     }}(((11$7\!==,,RtDDw"2T::r[   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        erS   )r  rt   rz   r  r   r  rn  r  s     rX   r  +UserDefinedListVariable.unpack_var_sequence^
  sH    }}(((

$$5==44R88!!r[   r   rI   c                 8    UR                  U R                  5      $ rS   )r  r  r/  s     rX   r0  1UserDefinedListVariable.is_underlying_vt_modifiedd
  r  r[   Fc                 0    [        U R                  U 5        gr.  r  r   s    rX   r  *UserDefinedListVariable.is_python_hashableg
  r  r[   )r  rS   )rp   r   r   r   r  rT   r	   r   r   r   r   rB   r   rC  r  r  r0  r   r  r   r  r  s   @rX   r  r  :
  s     EI$$&+,@&A$TW$	$ $;#; ; ?#	;
 S/)*; 
;"&= "$BW "7m 7 7GEN  r[   r  c            
          ^  \ rS rSrSr\R                  rSU 4S jjrSSS\S\	\
   S\\\
4   S	\
4
U 4S
 jjrSSS	\	\
   4S jrS	\4S jrS	\4S jrS\S	\4S jrSrU =r$ )r  il
  z
Represents user defined objects that are subclasses of tuple.

Internally, it uses a TupleVariable to represent the tuple part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
c                 8  > SSK Jn  UR                  SS 5      n[        T	U ]  " U4SU0UD6  Uce  U R
                  b   S5       eU(       d   S5       eUc  SSKJn  UR                  " 5       nUS   R                  U5      nU" U[        5       S	9U l        g X l        g )
Nr>   re  r   r  zAtuple_vt must be constructed by builder.py when source is presentz0init_args must be provided when tuple_vt is Noner   rJ   r8  )r~  rO   r  r   r   r   r9  rK   r:  r}  rA   r  )
r   rz   tuple_vtr  r   rO   r   rK   elemsr   s
            rX   r   !UserDefinedTupleVariable.__init__w
  s    (ZZd#>)>v>;;& S& PPP9
 zP*557aL::2>E*5@P@RSDN%Nr[   r   rK   r{   r   r   rQ   c                   > U R                   c   eUS:X  aI  [        U5      S:w  d  U(       a  [        S5      e[        R                  " U R                  US   5      5      $ US:X  aN  [        U5      S:w  d  U(       a  [        S5      e[        R                  " U R                  US   5      (       + 5      $ U R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]!  XX45      $ )Nr3  r>   zImproper arguments for method.r   r4  )
r  r@  
ValueErrorr   rM   r  r   r<   rC  r   r}  s         rX   rC  $UserDefinedTupleVariable.call_method
  s     ~~)))84yA~ !ABB--d.B.B47.KLLX4yA~ !ABB--$2F2FtAw2O.OPP11$7]">>--bEEw"2T::r[   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        erS   )r  rt   rz   r  r   r  rn  r  s     rX   r  ,UserDefinedTupleVariable.unpack_var_sequence
  sH    ~~)))

$$6>>55b99!!r[   c                 b    [        U R                  U 5        U R                  R                  5       $ rS   )r9   rz   r  r  r   s    rX   r  +UserDefinedTupleVariable.is_python_hashable
  s#     T2~~0022r[   c                 6    U R                   R                  5       $ rS   )r  r  r   s    rX   r  (UserDefinedTupleVariable.get_python_hash
  s    ~~--//r[   r  c                 z    [        U[        5      =(       a%    U R                  R                  UR                  5      $ rS   )r   r  r  r  r  s     rX   r  (UserDefinedTupleVariable.is_python_equal
  s0    +
 >nn,,U__=	>r[   )r  ri  )rp   r   r   r   r  r  r   r   r   r   rB   r   rC  r  r  r  rw  r  rT   r  r   r  r  s   @rX   r  r  l
  s     /==N&.;#; ; ?#	;
 S/)*; 
;*"&= "$BW "3D 30 0>V > > >r[   r  c                   ~   ^  \ rS rSrS\S\SS4U 4S jjr SSSS	\S\S
\S\4
U 4S jjjr	SSS	\
S\4U 4S jjrSrU =r$ )MutableMappingVariablei
  rz   r   rQ   Nc                 H   > [         TU ]  " U40 UD6  [        0 5      U l        g rS   )r   r   rC   generic_dict_vtr   s      rX   r   MutableMappingVariable.__init__
  s"    )&)04r[   r   rK   r{   rh  c                   > [        U[        R                  5      (       a  [        UR                  [        5      (       a  UR                  n[
        R                  " [        U R                  5      US5      n[        U[        5      (       ar  UR                  be  SnU R                  (       a  U R                  U5      n[        US5      n[        R                  " XR                  U5      n	U	R                  XU/0 5      $ [         T
U ]E  XX45      $ )a  Override to handle property setters on MutableMapping subclasses.

This is needed because property.__set__ is a slot wrapper (C function),
not a Python function, so the base class's try_get_descritor_and_setter_py_func
returns None for properties. But property.fset IS a Python function we can trace.

Without this, property setters on newly created MutableMapping objects fail
when accessing nested objects (which haven't been initialized yet on the
example value). By tracing the fset, we capture the setter logic in the graph
instead of running it on uninitialized example objects.

TODO(compiler): This fix is scoped to MutableMapping only because tracing
property setters on ALL UserDefinedObjectVariable can cause failures when
the fset calls untraceable C++ functions (e.g., pybind functions). Ideally,
this should be extended to all user-defined classes with a graceful fallback
when tracing the fset hits an untraceable function.
See: https://github.com/pytorch/pytorch/issues/172000
Nfset)r   r   rM   rz   r   r   r   rt   r  r+  r  rb  r   rB   r   r  r   r^  )r   r   r{   rz   rh  rs  ru  fset_sourcerw  fset_vtr   s             rX   r^  .MutableMappingVariable.method_setattr_standard
  s    2 dI6677JtzzSV<W<WzzH //TZZ0@(DQJ*h//JOO4O"??"&"@"@"JK",[&"AK)//OO[Q,,RCCw.rUUr[   c                 r  > US:X  az  [        U R                  5      R                  [        R                  R
                  R                  [        R                  4;   a%  [        R                  " [        R                  U 5      $ US:X  aj  U R                  (       aY  [        R                  R                  U R                  R                  [        U R                  S5      5      U l        U R                   $ U R                   R#                  [        R$                  " U5      5      =n(       a  U$ [&        TU ]Q  X5      $ )Nri   r}   )rt   rz   ri   r   abcMappingr   r   r  r   mapping_getr   r  r   r}   r   r(  maybe_getitem_constrM   r   r   )r   r   r{   r  r   s       rX   r   "MutableMappingVariable.var_getattr
  s     5=T$**-11OO##''HH6
 
 //	0E0EtLLZDKK#,#@#@#G#G

##ZZ%H$D  '''((<<&&t,
 
S 
 J7&r00r[   )r(  r  )rp   r   r   r   rT   r   r   rB   r  r^  r   r   r   r  r  s   @rX   r&  r&  
  s    5f 5 5 5 &+$V#$V $V 	$V
 #$V 
$V $VL15 1S 1_ 1 1r[   r&  c                       \ rS rSrSrg)r  i
  r   Nr  r   r[   rX   r  r  
  r  r[   r  )r  r  r   r   rm  r  r  r  r   r  r  rg   r\  r  r   r  r  collections.abcr   r   r   typingr   r   r   r	   typing_extensionsr
   torch._dynamo.configr   torch.nntorch._guardsr   r   torch.utils._python_dispatchr   r   r   r   r   bytecode_transformationr   create_parameter_opr   excr   r   r   r   r   r   r   r  r   guardsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r  r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r  r?   r@   rA   rB   dictsrC   rD   rE   numpyr  ModuleNotFoundErrortorch.utils._cxx_pytreerF   rf   rt   torch._dynamo.codegenrG   torch._dynamo.side_effectsrI   r9  rK    torch._dynamo.variables.constantrM   r~  rN   rO   rT   r  rY   r^   rm   rv   rx   r   r  r  r  r  r   r   r  r  r"  re  rm  r  r  r  r  r  r  r  r  r&  r  r   r[   rX   <module>rH     s  .           
      8 8 5 5 *   0 K 6 6 : F   A 0       0 X W F F2
 /6DA2BV B BBV B Bf  $F t 
/ 
@
2 @
F(@ $;#; $;N	 		 	SScS ?
#S o%&	S
 S(M
 3 M
`yL7 yLx
$= 
0<))B <)~-/ -6- 9 -2@2 @+$o +$\Q7 Qh\:6 \:~/7 /dG>8 G>TB16 B1J	. 	eT  	B
  dJs$   
I I& I#"I#&I87I8