
    ȅiS             
          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  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.J/r/J0r0J1r1J2r2  SSK3J4r4  SSK5J6r6J7r7  SSK8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrB  SSKCJDrDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrX  SSKYJZrZJ[r[J\r\J]r]  SSK^J_r_J`r`Jara  SSKbJcrcJdrdJere   SSKfrg SSKiJjrj  \(       a  SSKmJnrn  SSKoJprp  SSKqJrrr  SSKsJtrt  S\uS\v4S jrwS\uS\v4S jrxS\uS\v4S jryS \uS\v4S! jrz " S" S#\]5      r{ " S$ S%\{5      r| " S& S'\|5      r} " S( S)5      r~ " S* S+5      rS,S-S.\S/\4   S0\\]   S1\\\]4   S\]4
S2 jr " S3 S4\{5      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      rg! \h a    Srg GN6f = f! \k a    \l" S5      rj GNDf = f)Mam  
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)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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)ListVariableSizeVariableTupleVariable)
PyTreeSpec)	PyCodegenSideEffectsInstructionTranslatorConstantVariablevalreturnc                 H    U [         R                  [        R                  4;   $ N)object__setattr__BaseExceptionrO   s    ^/home/james-whalen/.local/lib/python3.13/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrrX   y       6%%}'@'@AAA    c                 H    U [         R                  [        R                  4;   $ rR   )rS   __delattr__rU   rV   s    rW   is_standard_delattrr]   }   rY   rZ   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_apir`   _pytest.recwarnra   appendImportErrorsysmodulesget&_AssertRaisesRegexWithHighlightContext)r^   f_ctxsr`   ra   ms        rW   is_forbidden_context_managerrl      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typero   )rm   s    rW   is_cython_functionrt      s9     	>DIz*	>I"==rZ   c                        \ rS rSr% \\S'   Srg)UserDefinedVariable   value N)ro   
__module____qualname____firstlineno__rS   __annotations____static_attributes__ry   rZ   rW   rv   rv      s    MrZ   rv   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   rx   kwargsrP   Nc                 @   > [         TU ]  " S0 UD6  Xl        SU l        g )NFry   )super__init__rx   ban_mutationselfrx   r   	__class__s      rW   r   !UserDefinedClassVariable.__init__   s"    "6"
 "rZ   c                     U R                   $ rR   rx   r   s    rW   as_python_constant+UserDefinedClassVariable.as_python_constant       zzrZ   c                     U R                   $ rR   r   r   s    rW   as_proxy!UserDefinedClassVariable.as_proxy   r   rZ   c                 N    U R                   R                   SU R                   S3$ N())r   ro   rx   r   s    rW   __repr__!UserDefinedClassVariable.__repr__   s$    ..))*!DJJ<q99rZ   c                  ~    [         R                  [         R                  [         R                  [         R                  1$ rR   )torchdevicefinfoiinfoSizery   rZ   rW   _constant_fold_classes/UserDefinedClassVariable._constant_fold_classes   s*     LLKKKKJJ	
 	
rZ   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xpurr   updater   setr9   keys)_in_graph_class_lists    rW   _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ErZ   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 rR   )dirbuiltins
isinstancegetattrrs   
issubclassrU   __new__rS   dictr   	frozensettuplelistunion)name
exceptions	c_new_fnss      rW   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       ;   $ rR   )r   r   r   s    rW   is_supported_new_method0UserDefinedClassVariable.is_supported_new_method   s     0JJLLLrZ   c                 <    U R                   U R                  5       ;   $ rR   )rx   r   r   s    rW   can_constant_fold_through2UserDefinedClassVariable.can_constant_fold_through   s    zzT88:::rZ   txrL   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   DeletedVariablerx   __dict__r   r   r   mutated_attrs       rW   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))))rZ   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<   )rN   EnumVariablero   r{   r   source__mro__fromkeysztype object 'z' has no attribute ''argsr   r   ztorch.r   )1 rN   r   r   r   createrx   ro   r{   r   GetAttrVariabler$   r@   buildr   collectionsOrderedDictdefaultdictr   var_getattrinspectgetattr_staticAttributeErrorrs   r   r   r   r(   r   typesFunctionTypestaticmethod__get__classmethod__func__propertyfgetcall_functionUserMethodVariableClassMethodDescriptorTypeismemberdescriptor
is_literalenumEnumr   rz   
startswithismethoddescriptorr0   )r   r   r   rN   r   r   optionsattr_sourcerm   fget_vtfuncr   s              rW   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  UR                  " S5      UR                  " S5      UR                  " S5      UR                  " S5      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<   rM   Nimeang        weightsize_averageignore_indexreduce	reductionlabel_smoothingrP   .c                     U UUUUU4$ rR   ry   )r  r  r  r  r  r  s         rW   normalize_argsIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_argse  s       rZ   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_entropyr5   )
r  r  r  r  r  
reduce_argr  r  r   r  s
      rW   fake_cross_entropy_lossRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_loss  sq     / ii,,#HH''55 '!""((&%+	  rZ   )r   rN   r   r@   r   r   LambdaVariable)r   r   r   r   rN   r  r#  r  r  r"  r  r  r  s    `     @@@@@@rW   _call_cross_entropy_loss1UserDefinedClassVariable._call_cross_entropy_lossT  s    	' '7&=&=d&C,<,C,CD,I,<,C,CD,I&6&=&=d&C)9)@)@)H/?/F/Fs/K	#	)	 *	 $		
 '	 -	 ?C'(	0 D+F+	
	"	,;		 	4 ''(?@@rZ   c           
        > 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      (       a0  US	:w  a*  [        R                  " [&        5      R                  XX45      $ [%        U R                  [(        [*        45      (       a0  US	:w  a*  [        R                  " [(        5      R                  XX45      $ US	:X  a  U R                  [        R                  L a  [-        US   [.        5      (       a}  US   R                  [        R                  L a]  U(       a5  [        U5      S:w  a&  [1        UUS
[        U5       S[        U5       S35        [3        0 [        R                  [5        5       S9$ [        U5      S:X  a<  [-        US   [        R6                  5      (       a  US:X  a  US   R9                  U5      $ US	:X  a[  [.        R;                  U R                  R<                  5      (       a-  UR>                  R@                  RC                  U US   USS  5      $ US:X  a>  U RD                  (       a-  [G        S[I        U R                  5      S[J        RL                  S9  [N        TU ]=  XX45      $ )N__subclasses__r   r   move_to_endr<   __eq__rx   __ne__r   1 args and 0 kwargs
 args and  kwargsmutation_type	__enter__rT   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)(lenrx   r   r   r   r   r@   r   r)  r   r   r   r   BuiltinVariablecall_custom_dict_fromkeyscall_methodrr   rN   r   r   r   r   r   r   r6   rA   r?   GenericContextWrappingVariableenterr   r   r   r   track_new_user_defined_objectr   r   strr   SUPPORTABLEr   )r   r   r   r   r   r   r   s         rW   r;  $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.?,,T2>>rVV

S)$455$):K,,S1==bUU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::rZ   c                 $  > SSK Jn  SSK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R/                  [0        R2                  " U[4        R6                  5      U /UQU5      $ U R                  [*        R8                  L a  [;        U5      S:X  a   [        R                  R                  S 5      nOUtp[        R<                  R>                  " U[@        /UQ70 UD6n[C        UR                  [*        R8                  U[E        5       S9$ [G        U R                  5      (       ay  U R                  RH                  (       a0  [K        S	[M        U R                  5      S
S/[N        RP                  QS9  [        R<                  " [@        5      RR                  " U/UQ70 UD6$ U R                  [*        RT                  L Ga1  [        R                  R                  S 5      n S;S[V        [X           S -  S[Z        S -  S[X        4S jjnS n [\        R^                  " U5      R`                  " U0 UD6nUc   eSURf                  ;   ae  URf                  S   Ri                  U5      (       d#  [K        SSU SU 3SS/[N        Rd                  QS9  URf                  S   Rk                  U5      nO/ nSURf                  ;   a  URf                  S   n[        Rl                  Ro                  UU[E        5       S9$ U R                  [p        Rr                  L a  [;        U5      S:X  a  [u        US   [        Rv                  5      (       a  [u        US   U5      (       ap  US   Ry                  5       S;   aY  US   Rz                  n[}        UUS   Ry                  5       5      R~                  n[        R                  " UUS   U R                  S9$ U R                  [        R                  L aN  [;        U5      S:  a  US   nO[        R                  R                  S 5      n[        R                  " US   U5      $ U R                  [        R                  L aM  U(       d  [K        SSSS /[N        Rd                  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ai  [        U R                  S#5      (       GaM  [        U R                  S$5      (       Ga1  U R                  5       (       Ga  UR                  " U R                  5      (       Ga  U R                  (       Ga  [        U R                  5      (       Gd  SS%KWJXn  SS&KGJYnJZn  U R                  [$        R                  [$        R                  [$        R                  [$        R                  [$        R                  4;   a4  [K        S'U R                   U R                   S(3/ [N        RP                  QS9  UnU R                  [$        R                  L a  [u        US   UU45      (       a  [        R                  R                  R                  (       d  [K        S)SU 3S*S+/S9  [u        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                  [        R<                  " [        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       S/[;        U5       S035        US   Rk                  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[0        R2                  " 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$     [        S1 U 5       5      (       d   eUnSS2KtJun'  [        R                  " UU R                  U'" 5       S9$ U R                  [        R                  L a?  [        R<                  " [        5      R                  XU5      n([        U(R                  5      $ [        U R                  5      (       Ga  U R                  5       (       Ga  [        R                  " U R                  5      nU R                  c   e[        U R                  5      n)[        U5      nUR                  S /[;        U5      [;        U5      -
  -  5        0 n*[        [        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  [0        R2                  " UU,GR                  G[	        G[        U)U+5      S35      S9n#OWU,GR                  [        GR                  La6  [0        R2                  " 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                  [        R<                  " [        5      U U5      n.U.R                  US,X#5        U.$ U R                  U GR                  5       ;   d  G[        U R                  5      (       Ga  G[        (       a  U R                  G[        ;   a  [;        U5      S:X  a  [u        US   [        GR                  5      (       a  [;        US   R                  5      S:  ad  [        S4 US   R                   5       5      (       a@  U" UUR                  GR                  " S5[        GR                  /G[        X#5      Q76 S69n/U//n[        U R                  [        GR                   5      (       a  SS7KJ	n0  G[%        UR                  5        V	V
s0 s H  u  pU0" U	5      U
_M     sn
n	5      n1G['        [        U5      5      n2U R                  " U2R                  5       0 U1R                  5       D6n3SS8KJn4  SS9KJn5  U4" U3U5GR1                  U2U15      5      n+U" UUR                  GR                  S5G[2        U+40 5      S69n6U6$ [        U R                  [        GR4                  5      (       a  SS7KJ	n0  G[%        UR                  5        V	V
s0 s H  u  pU0" U	5      U
_M     sn
n	5      n1G['        [        U5      5      n2U R                  " U2R                  5       0 U1R                  5       D6n7SS8KJn4  SS:KJn8  U4" U7U8GR9                  U2U15      5      n+U" UUR                  GR                  S5G[2        U+40 5      S69n6U6$ U" UUR                  GR                  " S5U R                  /G[        X#5      Q76 S69n6U6$ U R                  G[:        GR<                  L aa  [;        U5      S:X  a,  US   R                  5       (       a  US   R                  5       n9OS n9G[:        GR<                  " U95      n:G[?        U:5      $ U R                  [p        GR@                  L aB  [;        U5      S:X  a3  [u        US   G[$        5      (       a  [        GRB                  " US   5      $ UR                  " U R                  5      (       a`  U R                  (       aO  G[E        5          UR/                  [0        R2                  " U[4        GRF                  5      U /UQU5      sS S S 5        $ G[H        T;U G]  XU5      $ s  snf s  sn
n	f ! [b         a/  n[K        SSU SU 3SS/[N        Rd                  QUS9   S nAGNS nAff = fs  sn
n	f s  sn
n	f ! , (       d  f       Ns= f)<Nr   rI   r<   r  )r<  )NullContextVariabler   r0  zTypedDict with optional keysz<Dyanmo does not support tracing TypedDict with optional keysz(Avoid using TypedDict with optional keysr3  iterablemaxlenrP   c                     g rR   ry   )rD  rE  s     rW   deque_signature?UserDefinedClassVariable.call_function.<locals>.deque_signature%  s     rZ   z&collections.deque() with bad argumentszargs=	, kwargs=z8Detected call to collections.deque() with bad arguments.z$Fix the call to collections.deque().)r4  r5  r6  r7  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.))rE  r1  )r2  __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 argumentr2  rK  )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_typesr-  r.  r/  c              3   (   #    U  H  oS Lv   M
     g 7frR   ry   .0xs     rW   	<genexpr>9UserDefinedClassVariable.call_function.<locals>.<genexpr>  s     8%QD=%s   )AttributeMutationNewdefaultc              3   @   #    U  H  oR                  5       v   M     g 7frR   )	is_tensorrQ  s     rW   rT  rU  I  s     =}!}   r   r  rM   )register_graph_created_object)StreamVariable)EventVariableNN)r   rJ   r  r  ctx_managerr<  r'   r   r   rN   r   r   itemsrx   r   r  CrossEntropyLossr&  
contextlibnullcontextrC  r   r   inline_user_function_returnr@   r   r   construct_dictr   r8  r9  call_custom_dictr   rB   r?   r	   __optional_keys__r   r?  r   r@  	call_dictdequer   r   intr   	signaturebind	TypeError
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   rs   rr   is_standard_new"cls_supports_mutation_side_effectsrl   r   rM  rN  rO  _AsyncGeneratorContextManagerclosingredirect_stdoutredirect_stderrAsyncExitStack_GeneratorContextManager_dynamoconfigenable_trace_contextlibkeys_as_python_constantr   r   r>  rS   r;  r/   r3   rz   r6   _field_defaultsr   extendzipindexallbaserV  NamedTupleVariabler   r   rE   r-   dataclassesfieldsr   	itertoolscountr   initrW  MISSINGr   r!   default_factoryr   r   r   npr9   rD   r  stackr5   r   constantrA   rF   graph_bytecode_inputsr[  streamsr\  !make_construct_in_graph_stream_fnr   r   r]   make_construct_in_graph_event_fnrandomRandomRandomVariableMappingProxyTypeMappingProxyVariabler   %instantiate_user_defined_class_objectr   )<r   r   r   r   rJ   r  r<  constant_argsrS  kvrC  r  dict_vtrE  rG  
bound_argser`  rw  fncallback	rest_argsrM  rN  rO  arg_newfn_var	args_listkwargs_dictr  items_ret_typefield_defaultsvar_tracker_kwargs
field_namevar_tracker	field_varr   rx   rV  tupfields_sourcedefault_kwargsindfield
factory_fnvarstackedrN   
var_kwargsvar_argsstreamr[  r\  tensor_variableeventr]  seedrandom_objectr   s<                                                              rW   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~"+"<"<"C"CD"I)-&//@@D#)G '''.0	  $**%%zz++:

O ^B*66	 ,,T2<<RQ$Q&QQZZ;,,,//66t<F 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$55<<TB,,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))&1F
 r:w?Mtzz**&tzz2Fzz$$(<<SY!^',-t9+ZF}GD	 9=9++B/  "&!;!;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//

24 
 ZZ5::%++E2@@6RC		** ,,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))&1C
 OOB
D9JJJ$00221$**==
 JJ"55INtAw	(>(>??Q&*=tAw}}=== ())00' +48  y$**ell336.8>G%a(!+G
 )d4113!446 R33"DD * #0))00')Evr#V #"K DJJ446 /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6o <Lj  
D#D66(; Z>*55 	 	
Z	 H6 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   rx   r   r   r   rS   r   )r   new_fns     rW   r  (UserDefinedClassVariable.is_standard_new  s?    ''

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

ekk)	
rZ   )r   rx   )*ro   rz   r{   r|   rs   rS   r}   r   r   r   r   r?  r   r   r{  cacher   r   r   r   boolr   r   r   r@   r   r   r   r&  r   r;  r   r  r  r  r   r  rj  r  r  r~   __classcell__r   s   @rW   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J;#J; J; ?#	J;
 S/)*J; 
J;XG7#G7 'G7 S/)*	G7
 
G7R( (2)2142	2/ 7 /s /s /
GDM    
V 
 
 
rZ   r   c                   2    \ rS rSr\S\\   4S j5       rSrg)!UserDefinedExceptionClassVariablei  rP   c                     U R                   $ rR   r   r   s    rW   r  $UserDefinedExceptionClassVariable.fn  s    zzrZ   ry   N)	ro   rz   r{   r|   r   rs   rS   r  r~   ry   rZ   rW   r  r    s    DL  rZ   r  c                       \ rS rSrSrg)NO_SUCH_SUBOBJi  ry   Nro   rz   r{   r|   r~   ry   rZ   rW   r  r        rZ   r  c                       \ rS rSrSrg)RemovableHandleClassi  ry   Nr  ry   rZ   rW   r  r    s     	rZ   r  r   rL   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   r`  r8  r   random_callsr"   rd   wrap_unspecialized_primitive)r   r  r   r   r  rS  r  r  random_call_indexexample_valuer   s              rW   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\\\4   S\
4S jr\\R:                  S\\   4S j5       5       rS\S\\ RB                     S-  4S  j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r0S/\S\1\\4   S-  4S1 jr2SSS2\S\4S3 jr3S\S\44S4 jr5SSS\S\
4S5 jr6SSS\SS64S7 jr7S\4S8 jr8S\94S9 jr:S:\S\4S; jr;            S@S< jr<S=r=U =r>$ )AUserDefinedObjectVariablei  zW
Mostly objects of defined type.  Catch-all for something where we only know the type.
rx   
value_typeattrs_directly_modifed_on_dictN)r  
cls_sourcebase_cls_vt	init_argsr  r  r  r   rP   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   ry   )r   r   rx   rs   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_MATCHr4   _object_has_getattribute)	r   rx   r  r  r  r  r   pytreer   s	           rW   r   "UserDefinedObjectVariable.__init__  s     	"6"
$3UE{doo---$$++"9(5DO '" 9<+
 46 68,,(.(@(@(Q%##DOO44$++001J1JKL(?

(K%rZ   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_descriptormethodro   r   r   )r  ro   r?  r   rx   r   )r   inners     rW   __str__!UserDefinedObjectVariable.__str__4  sU    (( 
 
 

J=>E..))*!E7!44rZ   c                 b    U R                   R                   SU R                  R                   S3$ r   r   ro   r  r   s    rW   r   "UserDefinedObjectVariable.__repr__?  +    ..))*!DOO,D,D+EQGGrZ   r   rJ   c                     gNFry   r   r   s     rW   is_underlying_vt_modified3UserDefinedObjectVariable.is_underlying_vt_modifiedB  s    rZ   c                     U R                   $ rR   r  r   s    rW   python_type%UserDefinedObjectVariable.python_typeE  s    rZ   c                 |   > U R                   (       a  U R                  (       a  U R                  $ [        TU ]  5       $ rR   )r  r   rx   r   r   r   r   s    rW   r   ,UserDefinedObjectVariable.as_python_constantH  s.    ((T[[ :: w)++rZ   c                    > U R                   (       a>  [        U R                   R                  [        R                  5      5        U R
                  $ [        TU ]  5       $ rR   )r   r   r  r   ID_MATCHrx   r   guard_as_python_constantr&  s    rW   r*  2UserDefinedObjectVariable.guard_as_python_constantQ  s?    ;;$++001F1FGH::w/11rZ   c                 8    [        U 5      (       d
   SU  35       eg )Nz<calling torch function on object without __torch_function__ )r,   r   s    rW   torch_function_check.UserDefinedObjectVariable.torch_function_checkW  s$    !$'' 	
J4&Q	
'rZ   r   rL   c                 >    U R                  5         SSKJn  U" X5      $ )Nr<   )get_torch_function_fn)r-  torch_functionr0  )r   r   r0  s      rW   get_torch_fn&UserDefinedObjectVariable.get_torch_fn\  s    !!#9$R..rZ   r  r   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)r-  r1  r5  r2  )r   r   r  r   r   r   r5  s          rW   r5  -UserDefinedObjectVariable.call_torch_functionb  s=     	!!#7"b!
 	
rZ   c                      [         R                   [         R                  [         R                  [         R                  1n U $ rR   )r  randint	randrangeuniform)fnss    rW   _supported_random_functions5UserDefinedObjectVariable._supported_random_functionsw  s0     MMNNNN	
 
rZ   r   c                     U[        U R                  S0 5      ;  a+   [        R                  " [	        U R                  5      U5      $ g ! [
         a     g f = f)Nr   )r   rx   r   r   rs   r   )r   r   s     rW   _maybe_get_baseclass_method5UserDefinedObjectVariable._maybe_get_baseclass_method  sT    wtzz:r::--d4::.>EE  " s   )A 
AAc                   > SSK JnJn  U R                  U5      nUGb  U[        R
                  L a  UR                  " S 5      $ [        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,                  R.                  (       aL  [        U R                  [0        R2                  5      (       a#  [5        SSU R                   SU SU SU 3S	S
/S9  [        U[0        R6                  5      (       al  U R8                  n	S n
U	(       a  U R;                  U5      n
SSKJn  U[(        R@                  RB                  R
                  L a  UnU" XpXS9RE                  XU5      $ U[F        RH                  L al  U R8                  (       a[  U(       dT  U(       dM  [K        U R8                  RM                  [N        RP                  5      5        U" [#        U R                  5      5      $ [R        TU ]  XX45      $ )Nr<   )rN   r   r   zcall_method on generatorobject=	, method=, args=rI  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.r3  r   unpatched_nn_module_init	source_fnr   )+r   rN   r   r?  rS   r   r   rX   r   rx   	threadinglocalmethod_setattr_standardr]   r   r   r+  r8  r  NotImplementedr   r  r  "enable_faithful_generator_behaviorr   GeneratorTyper   r   r   get_source_by_walking_mromutation_guardrF  r  Moduler   r   __len__r   r  r   SEQUENCE_LENGTHr   r;  )r   r   r   r   r   rN   r   r  r  r   rH  rF  r   s               rW   r;  %UserDefinedObjectVariable.call_method  sG    	;11$7('..t44"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::rZ   directly_update_dictc           
         Sn UR                  5       nUR                  R                  R                  U 5      (       d   S	5       e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
5      nXU/nUR                  X0 5      $ UR                  R                  R!                  XU5        ["        R$                  " S 5      $ ! [         a    [        SSU  SU SU 3SS/S9   GNNf = f)Nr   z-non-const setattr name on user-defined objectrB  , 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.r3  z`Attempted setattr on a user-defined object that does not have an AttributeMutation mutation_type__set__)r   NotImplementedErrorr   r   r   is_attribute_mutationr   add$try_get_descritor_and_setter_py_funcr  rO  r   r%   r@   r   r   
store_attrr   rN   )r   r   r   rx   rU  name_strtmp
descriptorsetterdesc_sourcefunc_sourcedesc_varfunc_varr   s                 rW   rK  1UserDefinedObjectVariable.method_setattr_standard  s]    	..0H yy%%;;DAA 	
1	
A
  //33H=;;HEC%("
 #"??"&"@"@"JK",Z-Di"PK*00M*00[I .--b;;
 			))$%@))$//G # 	G!$wtfHUGDm:;		s   D? ? E#"E#c                     [        [        R                  " U R                  SS 5      5      (       + =(       a)    [	        U R                  [
        R                  5      (       + $ )NrT   )rX   r   r   rx   r   rI  rJ  r   s    rW   needs_slow_setattr,UserDefinedObjectVariable.needs_slow_setattr  sD    &""4::}dC
 
 :TZZ99	:rZ   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__rR  __getitem__r   )r   r?  r   rk  rR  rl  r   r  r   rS  ranger8  rx   r   LazyVariableTrackerr   r!   r   unpack_var_sequence)r   r   r  r   s      rW   ro  -UserDefinedObjectVariable.unpack_var_sequence  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                      [         R                  " [        5      R                  X/0 5        g! [         a    [        U5         gf = f)NTF)r   r9  iterr   r   r   r   r   s     rW   rp  7UserDefinedObjectVariable.has_force_unpack_var_sequence  sA    	%%d+99"fbI  	%b)	s   +. AAc                     / n[         R                  " [        5      R                  X/0 5      n  UR	                  U5      nUR                  U5        M%  ! [         a    [        U5         U$ f = frR   )r   r9  rr  r   next_variablerd   r   r   )r   r   resultiter_rs        rW   rq  3UserDefinedObjectVariable.force_unpack_var_sequence  sr     ))$/==b&"M''+a   - )"-s   "A A-,A-c                 *    U R                  US/ 0 5      $ )N__next__)r;  rs  s     rW   rv  'UserDefinedObjectVariable.next_variable)  s    JB77rZ   c                 ^     U R                   U R                  5       ;   $ ! [         a     gf = fr  )rx   r<  rm  r   s    rW   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a9  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5      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rR   r  )rR  r  s     rW   rT  :UserDefinedObjectVariable.call_function.<locals>.<genexpr>;  s     9Dq((**DrZ  c              3   @   #    U  H  oR                  5       v   M     g 7frR   r  )rR  r  s     rW   rT  r  <  s     DOq((**OrZ  z<attempted to call sourceless user-defined object as a methodrB  z, function=rD  rI  zDynamo does not support this.zEnsure the user-defined object z, is constructed outside the compiled region.r3  r   __self____call__)&r  r  valuesr  rx   r1   r   rt  r   r  r   r  _contextlib_DecoratorContextManagercloner   rM  is_matching_clsr   r   autograd	grad_modeinference_moderN   moder   r   r   r@   r   rq   r  r   r  r   CLOSURE_MATCHr;  r   )r   r   r   r   r	  rm   r  func_srcre  obj_srcobj_varsource_attrr   s               rW   r   'UserDefinedObjectVariable.call_function3  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@H 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6rZ   c                 ,    [        U R                  5      $ rR   )r+   rx   r   s    rW   _check_for_getattr,UserDefinedObjectVariable._check_for_getattro  s    !$**--rZ   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     rW   _is_c_defined_property0UserDefinedObjectVariable._is_c_defined_propertyr  sY    &(++ KK22
 CXX##55fkkB	CrZ   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$ rR   )r  r   r   rx   r  r  r   isgetsetdescriptorr  rs   __getattribute__r   )r   r   r  s      rW   _getattr_static)UserDefinedObjectVariable._getattr_static~  s    (((((..''

D.I ,,n$))&11))&11**622 $**%66tzz4HF**v/G ! &,d#rZ   	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)NrX  TF)r   r   rs   rx   
isfunctionr   r   r  r`  ra  s       rW   should_skip_descriptor_setter7UserDefinedObjectVariable.should_skip_descriptor_setter  sc    ++D,<iN
''Z(8)TJ!!&)) AAArZ   c                     [         R                  " [        U R                  5      US 5      n[         R                  " [        U5      SS 5      n[         R                  " U5      (       a  X#4$ g )NrX  )r   r   rs   rx   r  r  s       rW   r\  >UserDefinedObjectVariable.try_get_descritor_and_setter_py_func  sW     ++D,<iN
''Z(8)TJf%%''rZ   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       rW   r   1UserDefinedObjectVariable.has_key_in_generic_dict  r   rZ   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.r3  )r  	enumeraters   rx   r   r   r$   r!   r#   r    rm  r   r  r{  r|  r   DICT_CONTAINSr   rr   NOT_PRESENT_IN_GENERIC_DICTr   r   rn  )	r   r   idxklass
mro_sourceklass_sourcedict_source
out_source
absent_idxs	            rW   rO  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"--		
rZ   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      n [        R                  " UU W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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
NRf = 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Nef = f),Nr<   rM   r  r   Tr   r   z' object has no attribute 'r   r   r   r   __getattr__z1User-defined object with non-function __getattr__rB  rW  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.r3  r   rE  r   r   rG  __wrapped__r   _torchdynamo_inlinez5User-defined object method with non-function __func__rC  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   rN   r   r   r  r   r   rs   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   r   r  r   r  r  r  r   r   r;   UnspecializedNNModuleVariabler1   r  r   r  _modules manually_trace_nn_module_getattrr   r  rQ  r  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   rP  rF  r   r  r   rr   r   r   rO  r@   r   r   _collections_tuplegetter
__reduce__UserDefinedTupleVariable	_tuple_vtr`  r   r   r   r   r   r   r.   WrapperUserMethodVariabler0   r%   r  rt  r   r  r  ismethodr  r  r  inline_inbuilt_nn_modulesFSDPManagedNNModuleVariableexportinstall_free_tensorsr&   _wrap_sourcer  r  r  rt   rn  )r   r   r   rN   r   getattribute_fn
new_sourcerw  options_dictr  r  r  
getattr_fnoutrF  subobj_from_classis_accessible_from_type_mror  _r  r	  rH  descriptor_sourcedescriptor_get_sourcedescriptor_var	owner_vardynamic_subobjself_source	object_vt
var_sourcesrc_from_classs                                  rW   r   %UserDefinedObjectVariable.var_getattr  sC   &AE
4;; =RV((%44TZZ "4O {{0:KK!31
	. 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%++BFKG((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	
M	 * .)"-.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rN   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   rN   r   r   r   r   r   )r   r   r   var_vts       rW   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  r7   rx   r   s    rW   r  ,UserDefinedObjectVariable.is_python_hashable>  s     T2rZ   c                 ,    [        U R                  5      $ rR   r  r   s    rW   r  )UserDefinedObjectVariable.get_python_hashB  s    DJJrZ   r  c                 ^    [        U[        5      (       d  gU R                  UR                  L $ r  )r   rv   rx   r  s     rW   r  )UserDefinedObjectVariable.is_python_equalF  s&    %!455zzU[[((rZ   c                    [        [        USS5      SS5      nUR                  S5      nU(       aU   SSKJn  U R                  U;   n	U	(       d7  UR                  S5      n
U
b#   U
R                  5       nUU R                  4U;   n	O#O"SSKJs  Jn  U R                  UR"                  ;   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  Nrz   r   optreer   )_NODETYPE_REGISTRY	namespacezYFailed to import optree.registry._NODETYPE_REGISTRY, falling back to tracing for tree_map)r   r  optree.registryr  r  rh   r   rY  _tree_map_fallbackre   logging	getLoggerro   warningr  r  r	  SUPPORTED_NODESr   )r   r   tree_map_fnmap_fnresttree_map_kwargstree_map_module	is_optreer  is_registerednamespace_varr  r  logr  s                  rW   call_tree_map_branch.UserDefinedObjectVariable.call_tree_map_branchL  s~     "'+tT"BLRTU#..x8	)> !%3E E %$3$7$7$DM$0(5(H(H(JI !* $- "4-4M> 10 OOv/E/EEM ''MDM2>>
 &&
 	
M  3 #'#:#: " + & $ /$   ''1; ..# s0   0C> #!C C;8C> :C;;C> >A	E
	E
)
r  r  r  r   r  r  r  r  rx   r  rP   NF)r   rL   r  z(variables.functions.UserFunctionVariabler  r@   r  z)collections.abc.Sequence[VariableTracker]r   zdict[str, VariableTracker]rP   r@   )?ro   rz   r{   r|   __doc__rv   _nonvar_fieldsrS   rs   r%   r@   r   r   r   r?  r  r   r  r  r#  r   r*  r-  r2  rF   r   r5  r   r{  r  r   r<  r   r   r?  r   r;  rK  rh  ro  rp  rq  rv  r  r   r  r  r  r  r   r\  r   r    rO  r   r  r  rj  r  r  r  r~   r  r  s   @rW   r  r    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 ,2& 2

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

 sm
 S#X
 

* __S    E<N<N8ORV8V A;#A; A; 3i	A;
 S#XA; 
A;P &+-0#-0 -0 	-0
 #-0 
-0^: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 
_ 
B
<)<14<	<"D    )V ) )T
#T
 @T
 "	T

 :T
 6T
 
T
 T
rZ   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   rL   rx   r   rP   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-   rr   r   r@   r   r   r   r  )r   rx   r   r  	field_mapr  s         rW   r   FrozenDataClassVariable.create  s     	'"5))))	E]Eujj))(7(=(=E::.=z&**=)	**% # 'uvNNrZ   Nr  r   c                 >   > [         TU ]  " U40 UD6  Uc  0 nX l        g rR   )r   r   r  )r   rx   r  r   r   s       rW   r    FrozenDataClassVariable.__init__  s&     	)&)>FrZ   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	  r1   rx   TreeSpecLeafSpecConstantNoderY  treespec_leafr  r   r   r   rd   r#  )r   r  r  r   r   r  datactors           rW   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$$rZ   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  rx   r   r   rr   r  rd   r#  )r   r  r   r   r  r  r  s          rW   r    FrozenDataClassVariable.as_proxy  s    &DJJ'EKK

+446Eui((U]]%*uzz"E" ( !T$V$$rZ   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   rW   <lambda>5FrozenDataClassVariable.reconstruct.<locals>.<lambda>  s    001F
SrZ   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.r3  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      $ rR   )append_outputcreate_load_const_unchecked)r$  dataclass_clss   rW   r%  r&  )  s    G))33MBrZ   c              3   *   #    U  H	  u  pUv   M     g 7frR   ry   )rR  r   r  s      rW   rT  6FrozenDataClassVariable.reconstruct.<locals>.<genexpr>5  s     9gdTs   )	push_null)r  r  r  r  r	  r   rx   r  is_leafadd_push_nullextend_outputr   r#  rr   r   ro   r   r@  r  rh   r   r   rd   r8  r   create_call_function_kw)r   r$  r  r  pos_argskw_argsr  field_vtarg_vtr  
total_argskw_namesr+  s    `          @rW   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JrZ   r   rU  c                 \   > X0R                   UR                  5       '   [        TU ]  XX45      $ rR   )r  r   r   rK  )r   r   r   rx   rU  r   s        rW   rK  /FrozenDataClassVariable.method_setattr_standard>  s,     27D++-.w.rUUrZ   c                 b    U R                   R                   SU R                  R                   S3$ r   r  r   s    rW   r    FrozenDataClassVariable.__repr__H  r  rZ   Tc                     gr  ry   r   s    rW   r  *FrozenDataClassVariable.is_python_hashableK  s    rZ   c                 h    [        [        S U R                  R                  5        5       5      5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7frR   )r  )rR  args     rW   rT  :FrozenDataClassVariable.get_python_hash.<locals>.<genexpr>P  s     P;OC--//;OrZ  )r  r   r  r  r   s    rW   r  'FrozenDataClassVariable.get_python_hashO  s%    EP4;;;M;M;OPPQQrZ   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rR   )r  )rR  value_avalue_bs      rW   rT  :FrozenDataClassVariable.is_python_equal.<locals>.<genexpr>W  s(      "
$T  ##G,,$Ts    ")r   r  r#  r  r   r  r  r  )r   r  is_class_sameis_field_name_sameis_field_value_sames        rW   r  'FrozenDataClassVariable.is_python_equalR  s    %!899((*e.?.?.AA![[--/5<<3D3D3FF! "
$'(:(:(<ell>Q>Q>S$T"
 
 K!3K8KKrZ   r  rR   r$  rH   rP   Nr	  )ro   rz   r{   r|   r   rS   r
   r   r   r?  r   r   r   r   r9  r@   r  rK  r   r   r  rj  r  r  r~   r  r  s   @rW   r  r    s'   O#O,2O<BO	"O O& >B%)#s(^d%:MP	  %F  %D%& %(EK\ &+V#V V 	V
 #V 
V VH# HGDM R R	LV 	L 	L 	LrZ   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^  rx   r   rP   Nc                 (   > [         TU ]  " U40 UD6  g rR   )r   r   r   s      rW   r   &SourcelessGraphModuleVariable.__init___  s    
 	)&)rZ   r   rL   r   r   c                     [         R                  " XR                  R                  R                  5      nU /U-   nUR                  UUU5      $ rR   )r@   r   rx   forwardr   rd  )r   r   r   r   r   fn_variables         rW   r;  )SourcelessGraphModuleVariable.call_methodf  sK     &++B

0B0B0K0KLv}--
 	
rZ   ry   )ro   rz   r{   r|   rS   r   r   r?  r   r@   r   r;  r~   r  r  s   @rW   rQ  rQ  ^  sm    ** * 
	*
#
 
 ?#	

 S/)*
 

 
rZ   rQ  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$ )"UserDefinedExceptionObjectVariableiv  rx   r   rP   Nc                 t   > [         TU ]  " U40 UD6  [        R                  " U R                  S5      U l        g Nry   )r   r   r   ExceptionVariabler  exc_vtr   s      rW   r   +UserDefinedExceptionObjectVariable.__init__w  s-    )&)11$//2FrZ   .c                     U R                   $ rR   r"  r   s    rW   r  %UserDefinedExceptionObjectVariable.fn{  s    rZ   r   rL   r   r   c                    > US:X  a  U R                  U5      =n(       aj  [        R                  " U5      (       aO  [        U5      S:X  a@  [	        U5      U R
                  l        X0R                  l        [        R                  " S 5      $ 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   rT   r   	__cause____context____suppress_context____traceback__r<   with_traceback)r?  r   r  r8  r   r]  r   rx   r   rN   is_constant_matchcall_setattrr;  r   r   r   r   r   r   r  r   s         rW   r;  .UserDefinedExceptionObjectVariable.call_method  s     J;;DAAA**622Fq $T{DKK"JJO--d33M!D	QQ))],BO  KK$$Ra$q':%%;;**2TBBw"2T::rZ   c                 .    U R                   R                  $ rR   )r]  rc  r   s    rW   rc  .UserDefinedExceptionObjectVariable.__context__  s     {{&&&rZ   c                 .    U R                   R                  $ rR   )r]  r   r   s    rW   r   'UserDefinedExceptionObjectVariable.args  s    {{rZ   c                 8    U R                   R                  U5      $ rR   )r]  set_context)r   r5  s     rW   rp  .UserDefinedExceptionObjectVariable.set_context  s    {{&&w//rZ   c                 .    U R                   R                  $ rR   )r]  exc_typer   s    rW   rs  +UserDefinedExceptionObjectVariable.exc_type  s    {{###rZ   c                 .    U R                   R                  $ rR   r]  python_stackr   s    rW   rw  /UserDefinedExceptionObjectVariable.python_stack  s    {{'''rZ   c                 $    XR                   l        g rR   rv  )r   rx   s     rW   rw  rx    s    #( rZ   )r]  )rP   rN   )r5  zvariables.ExceptionVariablerP   N)ro   rz   r{   r|   rS   r   r   r   r   r  r?  r   r@   r   r;  rc  r   r   rp  rs   rU   rs  	tracebackStackSummaryrw  ra  r~   r  r  s   @rW   rY  rY  v  s;   Gf G G G HS&[)  ;#; ; ?#	;
 S/)*; 
;: ' '  eOS01    0 $$}- $ $ (i44t; ( ( ))"8"8 )T ) )rZ   rY  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$ )KeyedJaggedTensorVariablei  rm   rP   c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorchrec.sparse.jagged_tensor)rf   rg   rh   rs   KeyedJaggedTensorrm   mods     rW   is_matching_object,KeyedJaggedTensorVariable.is_matching_object  s3    kkoo=>$E490E0E#EErZ   rx   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  rs   r   r   )r   rx   r   r  r   s       rW   r   "KeyedJaggedTensorVariable.__init__  s/    	
 E{////)&)rZ   r   rL   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      rW   r   %KeyedJaggedTensorVariable.var_getattr  sg    MM  TT'>>%%$Ow*24 POw"2,, POs   A::
Bry   )ro   rz   r{   r|   r   rS   r  r  r   r   r?  r@   r   r~   r  r  s   @rW   r}  r}    sa    F F4 F F*f * * *-5 -S -_ - -rZ   r}  c                   0    \ rS rSr\S\S\4S j5       rSrg)IntWrapperVariablei  rm   rP   c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorch.export.dynamic_shapes)rf   rg   rh   rs   _IntWrapperr  s     rW   r  %IntWrapperVariable.is_matching_object  s1    kkoo;<$?49#??rZ   ry   N)	ro   rz   r{   r|   r   rS   r  r  r~   ry   rZ   rW   r  r    s(     @ @4 @ @rZ   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$ )RemovableHandleVariablei  Nr1  r  r   rP   c                 >   > [         TU ]  " S0 UD6  Xl        X l        g r[  )r   r   r1  r  )r   r1  r  r   r   s       rW   r    RemovableHandleVariable.__init__  s      	"6"*rZ   r   rL   r   r   c                 @  > US:X  a  U R                   U R                  :w  aO  U R                   c   eUR                  R                  R	                  U R                   5        U R                  U l         [
        R                  R                  S 5      $ [        TU ]%  XX45      $ )Nremove)
r  REMOVEDr   r   remove_hookr   rN   r   r   r;  )r   r   r   r   r   r   s        rW   r;  #RemovableHandleVariable.call_method  s}     8xx4<<'xx+++		&&22488<<<--44T::w"2T::rZ   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_handler!  r#  s   rW   r%  5RemovableHandleVariable.reconstruct.<locals>.<lambda>  s    00)+FrZ   r   F)r  r  r0  r1  r   r   r9  )r   r$  r   s    `rW   r9  #RemovableHandleVariable.reconstruct  sN    88t||#!!
 !!"6q%"@AG$rZ   c                     [         $ rR   )r  r   s    rW   r#  #RemovableHandleVariable.python_type	  s    ##rZ   )r  r1  r^  rO  )ro   rz   r{   r|   r  r=   rj  r   r   r?  r   r@   r   r;  r9  rs   rS   r#  r~   r  r  s   @rW   r  r    s    G .2		#d*	 4Z		
 	 
	 	;#; ; ?#	;
 S/)*; 
;%$T&\ $ $rZ   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.
Nrx   r  r   rP   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 presentr0  )	r   r   r   rA   rs   r?   _dict_vtr)   _dict_methods)r   rx   r  r   r   s       rW   r    UserDefinedDictVariable.__init__	  sb     	)&)?;;& R& .DK/?/ADM $M)rZ   r   rL   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)Nrl  __missing__)	r?  r  r  r;  r   r   r#  r   r   ri  s         rW   r;  #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rR   )	rs   rx   rk  r   r   r   r  ro  rY  rs  s     rW   ro  +UserDefinedDictVariable.unpack_var_sequence9	  sQ    

$$MM##,,)
 
 ==44R88!!rZ   r   rJ   c                 8    UR                  U R                  5      $ rR   )is_modifiedr  r  s     rW   r  1UserDefinedDictVariable.is_underlying_vt_modifiedA	      ''66rZ   c                 .    U R                   R                  $ rR   )r  user_clsr   s    rW   r   UserDefinedDictVariable.user_clsD	  s    }}%%%rZ   c                 .    U R                   R                  $ rR   )r  r`  r   s    rW   r`  UserDefinedDictVariable.itemsH	  s    }}"""rZ   c                 6    U R                   R                  5       $ rR   )r  install_dict_keys_match_guardr   s    rW   r  5UserDefinedDictVariable.install_dict_keys_match_guardL	  s    }}::<<rZ   c                 8    U R                   R                  X5      $ rR   )r  install_dict_contains_guardr   r   r   s      rW   r  3UserDefinedDictVariable.install_dict_contains_guardO	  s     }}88BBrZ   Fc                 0    [        U R                  U 5        gr  r  r   s    rW   r  *UserDefinedDictVariable.is_python_hashableT	       T2rZ   )r  r  rR   r  )ro   rz   r{   r|   r
  rS   rA   r   r   r?  r   r@   r   r;  ro  r  r  r   rs   r  r`  r  r  r   r  r~   r  r  s   @rW   r  r  	  s6    -1** #T)* 	*
 
* *$;#; ; ?#	;
 S/)*; 
;2"&= "$BW "7m 7 7 &$v, & & #tO_<= # #=C)C15o1FC	C
GEN  rZ   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$ )UserDefinedSetVariableiY	  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.
Nrx   set_vtr   rP   c                 J  > 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[        R(                  " U5      R+                  XF0 5      U l        g X l        g )Nr   z?set_vt must be constructed by builder.py when source is presentr0  r  )popr   r   r   r   r   r8   r*   _set_methodsr   r   rC   r?   _set_vtrh   r   r  symbolic_convertrL   
current_txr9  r   )r   rx   r  r   r   r#  r  r   s          rW   r   UserDefinedSetVariable.__init__b	  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(88ESS2  "LrZ   r   rL   r   r   c                    > U R                  U5      nXPR                  ;   a  U R                  R                  XX45      $ [        TU ]  XX45      $ rR   )r?  r  r  r;  r   ri  s         rW   r;  "UserDefinedSetVariable.call_method	  sJ     11$7&&&<<++BdCCw"2T::rZ   c                 6    U R                   R                  5       $ rR   )r  r   r   s    rW   r   )UserDefinedSetVariable.as_python_constant	  s    ||..00rZ   c                     [         R                  " U R                  S5      [        R                  [
        R                  4;   a  U R                  R                  U5      $ [        e)Nrk  )	r   r   rx   r   rk  r   r  ro  rY  rs  s     rW   ro  *UserDefinedSetVariable.unpack_var_sequence	  sM    !!$**j9LL>
 
 <<33B77!!rZ   c                 .    U R                   R                  $ rR   )r  	set_itemsr   s    rW   r   UserDefinedSetVariable.set_items	  s    ||%%%rZ   c                 .    U R                   R                  $ rR   )r  r`  r   s    rW   r`  UserDefinedSetVariable.items	  s    ||!!!rZ   r   rJ   c                 8    UR                  U R                  5      $ rR   )r  r  r  s     rW   r  0UserDefinedSetVariable.is_underlying_vt_modified	  s    ''55rZ   c                 6    U R                   R                  5       $ rR   )r  r  r   s    rW   r  4UserDefinedSetVariable.install_dict_keys_match_guard	  s    ||99;;rZ   c                 8    U R                   R                  X5      $ rR   )r  r  r  s      rW   r  2UserDefinedSetVariable.install_dict_contains_guard	  s     ||77AArZ   c                 b    [        U R                  U 5        U R                  R                  5       $ rR   )r7   rx   r  r  r   s    rW   r  )UserDefinedSetVariable.is_python_hashable	  s#     T2||..00rZ   c                 6    U R                   R                  5       $ rR   )r  r  r   s    rW   r  &UserDefinedSetVariable.get_python_hash	  s    ||++--rZ   r  c                 z    [        U[        5      =(       a%    U R                  R                  UR                  5      $ rR   )r   r  r  r  r  s     rW   r  &UserDefinedSetVariable.is_python_equal	  s0    )
 :ll**5==9	:rZ   )r  r  rR   r  )ro   rz   r{   r|   r
  rS   rC   r   r   r?  r   r@   r   r;  r   ro  r   r   r  r`  r  r  r  r  r  rj  r  r  r~   r  r  s   @rW   r  r  Y	  sR    ;?""%04%7"JM"	" ":
;#
; 
; ?#	
;
 S/)*
; 

;1F 1"&= "$BW " &3s8 & & "tO, " "6m 6 6<B)B15o1FB	B
1D 1. .:V : : :rZ   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.
Nrx   list_vtr   rP   c                    > [         TU ]  " U40 UD6  Uc7  U R                  b   S5       e[        R                  " / [        5       S9U l        g X l        g )Nz@list_vt must be constructed by builder.py when source is presentr0  )r   r   r   r   rD   r?   _list_vt)r   rx   r  r   r   s       rW   r    UserDefinedListVariable.__init__	  sU     	)&)?;;& R& &222EUEWXDM#MrZ   r   rL   r   r   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ rR   )r  r?  r2   r;  r   ri  s         rW   r;  #UserDefinedListVariable.call_method	  sV     }}(((11$7\!==,,RtDDw"2T::rZ   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        erR   )r  rs   rx   rk  r   ro  rY  rs  s     rW   ro  +UserDefinedListVariable.unpack_var_sequence	  sH    }}(((

$$5==44R88!!rZ   r   rJ   c                 8    UR                  U R                  5      $ rR   )r  r  r  s     rW   r  1UserDefinedListVariable.is_underlying_vt_modified	  r  rZ   Fc                 0    [        U R                  U 5        gr  r  r   s    rW   r  *UserDefinedListVariable.is_python_hashable	  r  rZ   )r  rR   )ro   rz   r{   r|   r
  rS   rD   r   r   r?  r   r@   r   r;  ro  r  r  r   r  r~   r  r  s   @rW   r  r  	  s     =A
$
$&2T&9
$LO
$	
$ 
$;#; ; ?#	;
 S/)*; 
;"&= "$BW "7m 7 7GEN  rZ   r  c                      ^  \ rS rSrSr  S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
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  i	  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.
Nrx   tuple_vtr  r   rP   c                 H  > UR                  SS 5      n[        TU ]  " U4SU0UD6  Ucs  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[        R                  " U[        5       S9U l        g X l        g )Nr   r  zAtuple_vt must be constructed by builder.py when source is presentz0init_args must be provided when tuple_vt is Noner   rK   r0  )r  r   r   r   torch._dynamo.symbolic_convertrL   r  rq  r   rF   r?   r  )	r   rx   r  r  r   r   rL   elemsr   s	           rW   r   !UserDefinedTupleVariable.__init__	  s     ZZd#>)>v>;;& S& PPP9
 zP*557aL::2>E&44%5%7DN &NrZ   r   rL   r   r   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ rR   )r  r?  r:   r;  r   ri  s         rW   r;  $UserDefinedTupleVariable.call_method
  sV     ~~)))11$7]">>--bEEw"2T::rZ   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        erR   )r  rs   rx   rk  r   ro  rY  rs  s     rW   ro  ,UserDefinedTupleVariable.unpack_var_sequence
  sH    ~~)))

$$6>>55b99!!rZ   c                 b    [        U R                  U 5        U R                  R                  5       $ rR   )r7   rx   r  r  r   s    rW   r  +UserDefinedTupleVariable.is_python_hashable
  s#     T2~~0022rZ   c                 6    U R                   R                  5       $ rR   )r  r  r   s    rW   r  (UserDefinedTupleVariable.get_python_hash#
  s    ~~--//rZ   r  c                 z    [        U[        5      =(       a%    U R                  R                  UR                  5      $ rR   )r   r  r  r  r  s     rW   r  (UserDefinedTupleVariable.is_python_equal&
  s0    +
 >nn,,U__=	>rZ   )r  r^  )ro   rz   r{   r|   r
  rS   rF   r   r@   r   r   r?  r   r;  ro  r  r  rj  r  r  r~   r  r  s   @rW   r  r  	  s     *.26	&&  $&& (4/	&
 & 
& &:;#; ; ?#	;
 S/)*; 
;"&= "$BW "3D 30 0>V > > >rZ   r  c                   T   ^  \ rS rS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$ )MutableMappingVariablei,
  rx   r   rP   Nc                 H   > [         TU ]  " U40 UD6  [        0 5      U l        g rR   )r   r   rA   generic_dict_vtr   s      rW   r   MutableMappingVariable.__init__-
  s"    )&)04rZ   r   rL   r   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      $ )Nrh   r   )rs   rx   rh   r   abcMappingr   r   r   r   mapping_getr   rn  r   r   r   r  maybe_getitem_constrN   r   r   )r   r   r   r  r   s       rW   r   "MutableMappingVariable.var_getattr1
  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0rZ   )r  )ro   rz   r{   r|   rS   r   r   r?  r@   r   r~   r  r  s   @rW   r  r  ,
  s=    5f 5 5 515 1S 1_ 1 1rZ   r  c                       \ rS rSrSrg)r  iK
  ry   Nr  ry   rZ   rW   r  r  K
  r  rZ   r  )r
  r  r   r   rb  r  r  r{  r   r  r  rf   rI  rz  r   r  rx  collections.abcr   r   r   typingr   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.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r  r=   r>   r?   r@   dictsrA   rB   rC   rr  rD   rE   rF   numpyr  ModuleNotFoundErrortorch.utils._cxx_pytreerG   re   rs   torch._dynamo.codegenrH   torch._dynamo.side_effectsrJ   r  rL    torch._dynamo.variables.constantrN   rS   r  rX   r]   rl   rt   rv   r   r  r  r  r   r?  r  r  r  rQ  rY  r}  r  r  r  r  r  r  r  r  ry   rZ   rW   <module>r     s  .           
      8 8 . . *   0 K 6 6 : F   A 0       . X W F F < <2
 /6DABV B BBV B Bf  $F t / p
2 p
f(@ 	 		 	SScS ?
#S o%&	S
 S(i
 3 i
XxL7 xLv
$= 
0<))B <)~- 9 -2@2 @+$o +$\Q7 QhZ:6 Z:z-7 -`C>8 C>L16 1>	. 	EO  	B
  dJs$   H? I ?I
II I 