
    3j5                       % 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JrJrJr  SSKJrJrJrJr  SSKJr  SSKrSSKrSSKJrJ r   SSK!J"r"  SSK#J$r$J%r%  S	S
K&J'r'J(r(J)r)J*r*  S	SK+J,r,  S	SK-J.r.  S	SK/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7  S	SK8J9r9  S	SK:J;r;J<r<  S	SK=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrF  S	SKGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrPJQrQJRrRJSrSJTrTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[  SSK\J]r]J^r^J_r_J`r`  SSKaJbrbJcrc  SSKdJere  SSKfJgrg   SSKhri SSKkJlrl  \(       a&  SSKoJprp  SSKqJrrr  SSKsJtrt  SSKuJvrv  SSKaJwrw  SSKxJyryJzrz  S\{S\|4S  jr}S\{S\|4S! jr~S"\{S\|4S# jrS$\{S\|4S% jrS&\{S\|4S' jr\" \\GR                  \GR
                  \GR                  15      r\\n   \S('   S$\{S\|4S) jr " S* S+\`5      r " S, S-\5      r " S. S/\5      r " S0 S15      rS2S3S4\S5\4   S6\\`   S7\\\`4   S\`4
S8 j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\\\4r\ V Vs0 s H?  o U GR4                  GR7                  5        Vs1 s H  n\" U5      (       d  M  UiM     sn_MA     snn r\\n\\   4   \SE'    " SF SG\5      r " SH SI\5      r " SJ SK\`5      r " SL SM\5      r " SN SO\5      r " SP SQ\5      r " SR SS\5      r " ST SU\5      r " SV SW\5      r " SX SY\5      r " SZ S[\5      rg! \j a    Sri GNf = f! \m a    \n" S5      rl GNf = fs  snf s  snn f )\am  
This module contains variable classes for handling user-defined objects in Dynamo's tracing system.

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

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

These classes help Dynamo track and handle arbitrary Python objects during tracing,
maintaining proper semantics while enabling optimizations where possible.
    N)CallableIterableSequence)AnyLiteralTYPE_CHECKINGUnion)is_typeddict)SourceTracingContext)"is_traceable_wrapper_subclass_type)
GetAttrKeyis_structseq_class   )configgraph_break_hints	polyfills	variables)create_call_function)$do_not_convert_to_tracable_parameter)handle_observed_exceptionObservedAttributeErrorObservedKeyErrorObservedTypeErrorObservedUserStopIterationraise_observed_exceptionraise_type_errorunimplemented)get_external_object_by_index)GuardBuilderinstall_guard)	
AttrSourceCallFunctionNoArgsSource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_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NO_SUCH_SUBOBJValueMutationNewVariableTracker)ConstDictVariableDefaultDictVariable)HashableTracker)SetVariable)
PyTreeSpec)	PyCodegenSideEffectsInstructionTranslatorConstantVariable)DunderDictVariable)ListVariableTupleVariablevalreturnc                 H    U [         R                  [        R                  4;   $ N)object__setattr__BaseExceptionrS   s    ^/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrr\   |       6%%}'@'@AAA    c                 H    U [         R                  [        R                  4;   $ rV   )rW   __delattr__rY   rZ   s    r[   is_standard_delattrra      r]   r^   ctxc                    / n SSK Jn  SSKJn  UR	                  U5        UR	                  U5        [        R                  R                  S5      =n(       a  UR	                  UR                  5        X;   $ ! [
         a     NQf = f)Nr   )RaisesContext)WarningsCheckerz!torch.testing._internal.jit_utils)
_pytest.python_apird   _pytest.recwarnre   appendImportErrorsysmodulesget&_AssertRaisesRegexWithHighlightContext)rb   f_ctxsrd   re   ms        r[   is_forbidden_context_managerrp      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typers   rq   s    r[   is_cython_functionry      s9     	>DIz*	>I"==r^   valuec                     [         R                  " U 5      =(       a-    [        R                  " U 5      =(       a    S[	        U S0 5      ;   $ )N__is_pydantic_dataclass____dict__)inspectisclassdataclassesis_dataclassgetattrrz   s    r[   is_pydantic_dataclass_clsr      s>     	J$$U+	J'75*b+IIr^   KNOWN_DATA_DESCRIPTOR_TYPESc                     [        U 5      nU[        ;   a  g[        US5      =(       a    [        US5      =(       d    [        US5      $ )zTReturn True if *obj* is a data descriptor (has __get__ and (__set__ or __delete__)).T__get____set__
__delete__)rw   r   rv   )rq   tps     r[   is_data_descriptorr      sA    	cB	((2y! I;'"l";r^   c                   2    \ rS rSr% \\S'   S\S\4S jrSr	g)UserDefinedVariable   rz   namerT   c                     U[        U R                  S0 5      ;  a+   [        R                  " [	        U R                  5      U5      $ g! [
         a     gf = f)zEGet method from the base class if not overridden in value's __dict__.r}   N)r   rz   r~   getattr_staticrw   AttributeError)selfr   s     r[   _maybe_get_baseclass_method/UserDefinedVariable._maybe_get_baseclass_method   sT    wtzz:r::--d4::.>EE  " s   )A 
AA N)
rs   
__module____qualname____firstlineno__rW   __annotations__strr   r   __static_attributes__r   r^   r[   r   r      s    M  r^   r   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\4S jrS\S\4S jr    S2S jrSSS\S\4U 4S jjrSSS\S\S\S-  S\4
S jrSSS\S\S\S-  S\4
S jrSSS\S\S\S-  S\4
U 4S jjrSSS\S\S\S-  S\4
S jr SSS\4S jr!SSS\4S  jr"SSS\4S! 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% 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S) jr,SSS\S\4U 4S* jjr-S\.S+   4S, jr/S\04S- jr1S.\S\4S/ jr2S\4S0 jr3S1r4U =r5$ )3UserDefinedClassVariable   rz   kwargsrT   Nc                 @   > [         TU ]  " S0 UD6  Xl        SU l        g )NFr   )super__init__rz   ban_mutationr   rz   r   	__class__s      r[   r   !UserDefinedClassVariable.__init__   s"    "6"
 "r^   c                     U R                   $ rV   r   r   s    r[   as_python_constant+UserDefinedClassVariable.as_python_constant       zzr^   c                     U R                   $ rV   r   r   s    r[   as_proxy!UserDefinedClassVariable.as_proxy   r   r^   c                 N    U R                   R                   SU R                   S3$ N())r   rs   rz   r   s    r[   __repr__!UserDefinedClassVariable.__repr__   s$    ..))*!DJJ<q99r^   c                  ~    [         R                  [         R                  [         R                  [         R                  1$ rV   )torchdevicefinfoiinfoSizer   r^   r[   _constant_fold_classes/UserDefinedClassVariable._constant_fold_classes   s*     LLKKKKJJ	
 	
r^   c                     [         R                  [         R                  R                  [         R                  R                  [         R                  R
                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  [         R                  [         R                  R                  [         R                  R                  [         R                  R                  [         R                  R                  1n [        [         S5      (       aC  U R!                  [         R"                  R                  [         R"                  R                  15        [%        [&        R(                  " 5       5      U -  $ )Nhpu)r   TensorcudaFloatTensorDoubleTensor
HalfTensorBFloat16Tensor
ByteTensor
CharTensor	IntTensorShortTensor
LongTensorStreamEventxpurv   updater   setr<   keys)_in_graph_class_lists    r[   _in_graph_classes*UserDefinedClassVariable._in_graph_classes   s    LLJJ""JJ##JJ!!JJ%%JJ!!JJ!!JJ  JJ""JJ!!LLKKJJJJIIIIOO! 
$ 5%   ''II$$IIOO &++-.1EEEr^   c            	      B   [        [        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                  [        R                  [        R                  [         R                  1	nUR#                  U5      $ s  sn f rV   )dirbuiltins
isinstancer   rw   
issubclassrY   __new__rW   dictr   	frozensettuplelistintfloatr   union)r   
exceptions	c_new_fnss      r[   supported_c_new_functions2UserDefinedClassVariable.supported_c_new_functions	  s    
 H 
%'(D148 , 78T2MB ,GHd#++% 	  
 NNLLKKMMLLKKMMKK

	 z**# 
s   'D!D"Dc                     U [         R                  5       ;   a  g[        U SS 5      n[        U[        5      =(       a    [        U5      $ )NT__self__)r   r   r   r   rw   r   )rz   owners     r[   is_supported_new_method0UserDefinedClassVariable.is_supported_new_method  s=    ,FFHHz40%&D+=e+DDr^   c                     U R                   U R                  5       ;   a  g[        U R                   [        5      =(       a$    [	        U R                   [
        R                  5      $ NT)rz   r   r   rw   r   enumEnumr   s    r[   can_constant_fold_through2UserDefinedClassVariable.can_constant_fold_through'  sA    ::4466 $**d+Q
4::tyy0QQr^   r   c                     U R                   R                   H#  nXR                  ;   d  M  UR                  U   s  $    [        $ )z?Walk cls.__mro__ only (not the metaclass chain) to find *name*.)rz   __mro__r}   rA   r   r   bases      r[   lookup_cls_mro_attr,UserDefinedClassVariable.lookup_cls_mro_attr.  s7    JJ&&D}}$}}T** ' r^   c                     [        U R                  5      R                   H#  nXR                  ;   d  M  UR                  U   s  $    [        $ )z<Walk type(cls).__mro__ (the metaclass chain) to find *name*.)rw   rz   r   r}   rA   r   s      r[   lookup_metaclass_attr.UserDefinedClassVariable.lookup_metaclass_attr5  s<    $,,D}}$}}T** - r^   txrM   rC   c                     SSK Jn  [        U R                  5      n[	        US5      (       a  U[        La  U R                  US/ 0 5      $ UR                  " S5      $ )Nr?   rN   __bool__T)constantrO   rw   rz   rv   call_methodcreate)r   r   rO   	metaclasss       r[   	bool_impl"UserDefinedClassVariable.bool_impl<  sS     	/ $	9j))it.C##B
B;;&&t,,r^   c           	        > U R                   b  [        U R                   U5      OS nU R                  [        R                  [        R
                  1;   a  US:X  a  [        TU ]  X5      $ [        U R                  5      nU[        La:  SUR                  ;   a*  [        SSU R                   SU 3S[        R                  S9  U R                  U5      nU[        La"  [        U5      (       a  U R!                  XXS5      $ U R#                  U5      nU[        La>  [%        [        U5      S5      (       a  U R'                  XXc5      $ U R)                  XXc5      $ U[        La  [*        R,                  " X[        U5      US	9$ [        U R                  5      nU[        La~  U R                  S
5      nU[        Lad  [/        U[0        R2                  5      (       aE  [*        R4                  " Xp5      R7                  U[*        R8                  R;                  U5      /0 5      $ [=        [>        USU R                  R@                   SU S3/S9  g )Nfromkeys__getattribute__z&Custom metaclass with __getattribute__ztype(z) = z\Dynamo does not trace attribute access on classes whose metaclass overrides __getattribute__gb_typecontextexplanationhintsr   source__getattr__ztype object 'z' has no attribute ''args)!r  r"   rz   collectionsOrderedDictdefaultdictr   var_getattrrw   r}   r   r   SUPPORTABLEr   rA   r   resolve_meta_data_descriptorr   rv   resolve_cls_descriptorresolve_cls_plain_attrr   GetAttrVariabler   typesFunctionTypeUserMethodVariablecall_functionrO   r   r   r   rs   )	r   r   r   r  metacls	meta_attrcls_attrmeta_getattrr   s	           r[   r  $UserDefinedClassVariable.var_getattrI  s	   26++2IDKK.t JJ;22K4K4KLL
"7&r00 tzz"$#59I9I#I@

|4y97'33* ..t4	N*/A)/L/L44RyQQ ++D1>)tH~y11222XNN..rJJ N*,,TiQWXX tzz"$55mDL>1je007 7 !33LGUU33::4@A2 
 	!!$**"5"5!66J4&PQRS	
r^   r  r  c                    US:X  aQ  [         R                  " UU R                  R                  U R                  =(       a    [        U R                  S5      S9$ US:X  aS  U R                  =(       a    [        U R                  5      n[         R                  " XR                  R                  U5      $ [        R                  U R                  U5      nU(       a  [         R                  " XU5      $ SSK
Jn  UR                  " U5      (       a  [         R                  " X5      $ [        R                  " X[        U5      US9$ )zEHandle data descriptors from the metaclass MRO (type.__dict__ slots).r}   r
  r   r?   rN   )rC   buildrz   r}   r  r"   r(   r   rw   r   rO   
is_literalr   r  )r   r   r   r  r  attr_sourceresolvedrO   s           r[   r  5UserDefinedClassVariable.resolve_meta_data_descriptor  s     :"((

##{{Jz$++z'J 
 9++D-*DK"((ZZ-?-?MM ((T:"((v>>&&&x00"((66((T(^FSSr^   r  c                    [        U[        5      (       a0  [        R                  " XR	                  U R
                  5      U5      $ [        U[        5      (       a{  [        UR                  [        5      (       a=  [        R                  " XR                  R                  5      nUR                  X/0 5      $ [        R                  " UR                  XS9$ [        U[        R                  5      (       a3  UR	                  SU R
                  5      n[        R                  " XU5      $ [        U[        [        R                   45      (       a)  U(       a  [        R                  " XU5      $ [#        U5      $ U[$        ;   a>  [        U[        R&                  5      (       d  [        R(                  " X[+        U5      US9$ [,        R.                  " [+        U5      SS5      n[        U[        R&                  5      (       a  U(       av  U[1        U R
                  S0 5      ;   dD  U R
                  R2                  R5                  S5      (       d  U R
                  R2                  S:X  a  [        R                  " XU5      $ U R7                  XX45      $ [,        R8                  " U5      (       d  [;        U5      (       a  U(       a  U R
                  [<        R>                  Lav  U[1        U R
                  S0 5      ;   dD  U R
                  R2                  R5                  S5      (       d  U R
                  R2                  S:X  a  [        R                  " XU5      $ [        R(                  " X[+        U5      US9$ [        R                  " XU5      $ )z(Handle descriptors found in cls.__mro__.r
  N)py_typer  r   r}   ztorch.r   ) r   staticmethodrC   r#  r   rz   classmethod__func__propertyfgetr  r   r  r  ClassMethodDescriptorType_collections_tuplegetterUserDefinedObjectVariabler,   r  r  rw   r~   r   r   r   
startswithinvoke_cls_descriptor_getismethoddescriptorr3   r  r  )r   r   r   r  r  fget_vtfuncget_fns           r[   r  /UserDefinedClassVariable.resolve_cls_descriptor  s    h--"((-=-=djj-I6RRh,,(++X66)//4E4E4J4JK,,R<<//0A0A4WWh ? ?@@##D$**5D"((6::
 h<+D+D EFF&,,R6BB,X66 ))*e((3
 3
 ,,DN6  ''X	4Hfe0011

J;;::((33H==::((G3&,,R6BB11"HMM %%h//3R4
 4
 JJk&=&==GDJJ
B??zz,,77AAzz,,7 ',,R6BB,,ThPVWW $$R6::r^   c                   > US:X  a)  [         R                  U5      (       a  [        TU ]  X5      $ U R                  [
        R                  L a  [        R                  " X[        U5      S9$ [        R                  " XU5      $ )z2Handle non-descriptor attributes from cls.__mro__.r   )r*  )r   r   r   r  rz   r  r  r   r  rw   rC   r#  )r   r   r   r  r  r   s        r[   r  /UserDefinedClassVariable.resolve_cls_plain_attr  sq     9!9!Q!Q"
 "
 7&r00::000,,ThPP$$R6::r^   
descriptorc                 p   SSK Jn  SnSnU R                  (       aC  [        U R                  U5      n[        [	        U5      S5      n[
        R                  " XU5      nO[        U5      nUR                  " S5      n	[        R                  " UR                  R                  UUS9R                  XU /0 5      $ )z7Trace a class-MRO descriptor's __get__(None, cls) call.r?   rN   Nr   r
  )r   rO   r  r"   r)   rC   r#  r3  r   r   r  r   r-  r  )
r   r   r   r=  r  rO   descriptor_sourcedescriptor_get_sourcedescriptor_varnone_vars
             r[   r5  2UserDefinedClassVariable.invoke_cls_descriptor_get  s     	/  $;; *4;; =$.z:K/Li$X!,222CTUN6zBN#**40++''(
 -t,b
1		2r^   c                    U R                  S5      nU(       aO  U R                  =(       a    [        U R                  S5      n[        R                  " X US9R                  U/ 0 5      $ [        USU R                  5        S35        g )N__len__)	source_fnzobject of type z has no length)r   r  r"   r   r  r  r   python_type_name)r   r   ro   r  s       r[   len_impl!UserDefinedClassVariable.len_impl,  ss    ,,Y7[[GZY%GF//6mBB'( 	t/D/D/F.G~VWr^   c                 $    U R                  U5      $ rV   rH  r   r   s     r[   	sq_length"UserDefinedClassVariable.sq_length5      }}R  r^   c                 $    U R                  U5      $ rV   rK  rL  s     r[   	mp_length"UserDefinedClassVariable.mp_length8  rO  r^   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?   rN   Nimeang        weightsize_averageignore_indexreduce	reductionlabel_smoothingrT   .c                     U UUUUU4$ rV   r   )rU  rV  rW  rX  rY  rZ  s         r[   normalize_argsIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_argsL  s       r^   inputtargetc                    > SSK Jn  U" TTR                  R                  " S[        R
                  R                  R                  /[        U UT	TTTTT/0 5      Q76 S9$ )Nr?   )wrap_fx_proxyr  r   proxy)	builderra  outputcreate_proxyr   nn
functionalcross_entropyr8   )
r^  r_  ra  rW  rZ  
reduce_argrY  rV  r   rU  s
      r[   fake_cross_entropy_lossRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_lossf  sq     / ii,,#HH''55 '!""((&%+	  r^   )r$  rO   r   rC   r   r   LambdaVariable)r   r   r  r   rO   r\  rk  rW  rZ  rj  rY  rV  rU  s    `     @@@@@@r[   _call_cross_entropy_loss1UserDefinedClassVariable._call_cross_entropy_loss;  s    	' '7&=&=d&C,<,C,CD,I,<,C,CD,I&6&=&=d&C)9)@)@)H/?/F/Fs/K	#	)	 *	 $		
 '	 -	 ?C'(	0 D+F+	
	"	,;		 	4 ''(?@@r^   c           
      |
  > SSK Jn  US:X  a  [        U5      S:X  a  U(       d  SU R                  R                  ;  am  U R
                  nU R
                  (       a!  [        U R
                  S5      n[        U5      n[        R                  " XR                  R                  5       U5      $ U R                  [        R                  [        R                  1;   a4  US:X  a.  [        R                  R                   " XR                  /UQ70 UD6$ U R                  [        R                  L a!  US:X  a  US   R#                  X/ USS  QU5      $ US:X  a'  [        U5      S:X  a  U(       d  SSKJn  U" XS   5      $ US	:X  aS  [        U5      S:X  aD  [)        US   S
5      (       a0  [        R                  " XR                  US   R                  :H  5      $ US:X  aS  [        U5      S:X  aD  [)        US   S
5      (       a0  [        R                  " XR                  US   R                  :g  5      $ [+        U R                  [,        5      (       a,  US:w  a&  UR/                  U[,        5      R#                  XX45      $ [+        U R                  [0        [2        45      (       a,  US:w  a&  UR/                  U[0        5      R#                  XX45      $ US:X  a  U R                  [        R                  L a  [5        US   [6        5      (       a}  US   R                  [        R                  L a]  U(       a5  [        U5      S:w  a&  [9        UUS[        U5       S[        U5       S35        [;        0 [        R                  [=        5       S9$ [        U5      S:X  a<  [5        US   [        R>                  5      (       a  US:X  a  US   RA                  U5      $ US:X  a[  [6        RC                  U R                  RD                  5      (       a-  URF                  RH                  RK                  U US   USS  5      $ US:X  a>  U RL                  (       a-  [O        S[Q        U R                  5      S[R        RT                  S9  [W        U R                  5      nU[V        La  URX                   H  n	X)R                  ;   d  M  U	R                  U   n
[5        U
[Z        R\                  5      (       aP  U R
                  =(       a    [        U R
                  U5      n[        R^                  " XUS9Ra                  XU5      s  $   O   [b        TU ]E  XX45      $ )Nr?   SourcelessBuilder__subclasses__r   r  move_to_endrE  )generic_len__eq__rz   __ne__r   1 args and 0 kwargs
 args and  kwargsmutation_type	__enter__rX   zCClass attribute mutation when the __dict__ was already materializedzVDyanmo does not support tracing mutations on a class when its __dict__ is materializedr  r
  )2rd  rr  lenrz   r}   r  r"   r#   rC   r#  rs  r  r  r  r   DictBuiltinVariablecall_custom_dict_fromkeysr   object_protocolru  rv   r   r   r   r   r   r   r   r9   rD   rB   GenericContextWrappingVariableenterr   r   re  side_effectstrack_new_user_defined_objectr   r   r   r   r  rw   r   r  r  r  r  r   )r   r   r   r  r   rr  r  ru  r   klassmethodr   s              r[   r   $UserDefinedClassVariable.call_method  sI    	/ $$D	Q 

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

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

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

k55547$<==Q!8!88#d)q.#)4ykCK=@	 %K++;K;M  IN47I$L$LMM#7==$$Y#;#S#SJJ$
 $
 99))GGQQR 
 ]"t'8'8]DJJt'33	 $	D "**>>)"^^D1F!&%*<*<==!%!NDKK1N(;;" '-&9:  + w"2T::r^   c                 
   [        U R                  [        5      (       aZ  [        U R                  [        R
                  5      (       a1  U R                   Vs/ s H  n[        R                  " X5      PM     sn$ [        es  snf rV   )	r   rz   rw   r   r   r   rC   r#  NotImplementedError)r   r   items      r[   unpack_var_sequence,UserDefinedClassVariable.unpack_var_sequence  sY     djj$''Jtzz499,M,M@D

K
O))"3
KK!! Ls    B c                    > SSK Jn  SSKJnJn  SSKJn  [        X#5      n[        R                  R                  5       (       a  U R                  [        R                  R                  L a|  [        R                  (       d  [        SSSS	/S
9  UR                   R                   R#                  UR%                  U[&        5      U / 5      n	U	R)                  US[+        U5      U5        U	$ U R-                  5       (       a  U(       az  [.        R0                  " UU R3                  5       " U V
s/ s H  oR3                  5       PM     sn
0 UR5                  5        VVs0 s H  u  pXR3                  5       _M     snnD65      $ U R                  [        R6                  R8                  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                  [B        RD                  L a9  URG                  [.        R0                  " U[H        RJ                  5      U /UQU5      $ U R                  [B        RL                  L a  [O        U5      S:X  a   [P        RR                  R%                  S 5      nOJ[O        U5      S:X  a8  [T        RV                  " US   5      (       d  [Y        [Z        XS   /S9  US   n/ nOUtp[P        R\                  R^                  " U[`        /UQ70 UD6n[U        UR4                  [B        RL                  U[c        5       S9$ [e        U R                  5      (       at  U R                  Rf                  (       a0  [        S[i        U R                  5      SS/[j        Rl                  QS
9  [P        R\                  R^                  " U[`        /UQ70 UD6$ U R                  [B        Rn                  L Ga1  [P        RR                  R%                  S 5      n SAS[p        [r           S -  S[t        S -  S[r        4S jjnS n [v        Rx                  " U5      Rz                  " U0 UD6nUc   eSUR~                  ;   ae  UR~                  S   R                  U5      (       d#  [        SSU SU 3SS/[j        R|                  QS
9  UR~                  S   R                  U5      nO/ nSUR~                  ;   a  UR~                  S   n[P        R                  R                  UU[c        5       S 9$ U R                  [        R                  L a  [O        U5      S:X  a  [        US   [P        R                  5      (       a  [        US   U5      (       ap  US   R                  5       S!;   aY  US   R                  n[        UUS   R                  5       5      R                  n[P        R                  " UUS   U R                  S"9$ U R                  [        R                  L aN  [O        U5      S:  a  US   nO[P        RR                  R%                  S 5      n[P        R                  " US   U5      $ U R                  [        R                  L aM  U(       d  [        S#S$S%S&/[j        R|                  QS
9  US   nUSS  n[P        R                  R                  UUUS'9$ U R                  [        R                  L a&  U(       d  [P        R                  R%                  X5      $ U R                  [        R                  R                  L aj  U(       dc  [O        U5      S:X  aT  US   R                  5       (       d  [        US(5        [P        R                  R%                  XS   R3                  5       5      $ [        [        U R                  5      [        5      (       GaM  [        U R                  S)5      (       Ga1  [        U R                  S*5      (       Ga  U R                  5       (       Ga  UR                  " U R                  5      (       Ga  U R                  (       Ga  [        U R                  5      (       Gd  SS+KcJdn  SS,KSJenJfn  U R                  [<        R                  [<        R                  [<        R                  [<        R                  [<        R                  4;   a4  [        S-U R                   U R                   S.3/ [j        Rl                  QS
9  UnU R                  [<        R                  L a  [        US   UU45      (       a  [        R                  R                  R                  (       d  [        S/SU 3S0S1/S
9  [        US   U5      (       a:  US   nUS   R4                  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RG                  [.        R0                  " U[H        R                  5      U /UQU5      $ [        U R                  5      (       a  [        U R                  5      (       al  U(       d  [O        U5      S:w  a&  [        US2S3[O        U5       S4[O        U5       S535        UR                   R                   R#                  U U [+        U5      5      $ URG                  [.        R0                  " U[H        R                  5      U /UQU5      $ U R                  [        R                  L a>  SS6KBJvn   UR%                  U[        5      R                  XU5      n!U " U!R4                  5      $ [        U R                  5      (       a'  [        S7U R                   S8[j        Rl                  S
9  GOU R                  U R                  5       ;   d  [        U R                  5      (       Ga  SS9KBJ{n"  [        (       a  U R                  [        ;   a  [O        U5      S:X  a  [        US   U"5      (       a  [O        US   R4                  5      S:  ac  [        S: US   R4                   5       5      (       a?  U" UUR                   R                  " S;[        GR                   /G[        X#5      Q76 S<9n#U#/n[        U R                  [        GR                  5      (       a  SS=KBJn$  G[	        UR5                  5        VVs0 s H  u  p[.        R0                  " X5      U_M     snn5      n%U$" [+        U5      5      n&U R                  " U&R3                  5       0 U%R3                  5       D6n'SS>KJn(  SS?KJn)  U(" U'U)GR                  U&U%5      5      n*U" UUR                   R                  S;G[        U*40 5      S<9n+U+$ [        U R                  [        GR                  5      (       a  SS=KBJn$  G[	        UR5                  5        VVs0 s H  u  p[.        R0                  " X5      U_M     snn5      n%U$" [+        U5      5      n&U R                  " U&R3                  5       0 U%R3                  5       D6n,SS>KJn(  SS@KJn-  U(" U,U-GR                  U&U%5      5      n*U" UUR                   R                  S;G[        U*40 5      S<9n+U+$ U" UUR                   R                  " S;U R                  /G[        X#5      Q76 S<9n+U+$ U R                  G[        GR                  L aa  [O        U5      S:X  a,  US   R                  5       (       a  US   R3                  5       n.OS n.G[        GR                  " U.5      n/G[!        U/5      $ U R                  [        GR"                  L aB  [O        U5      S:X  a3  [        US   G[        5      (       a  [P        GR$                  " US   5      $ UR                  " U R                  5      (       a_  U R                  (       aN  G['        5          URG                  [.        R0                  " U[H        R                  5      U /UQU5      sS S S 5        $ G[(        T0U G]  XU5      $ s  sn
f s  snnf ! [Z         a/  n[        SSU SU 3SS/[j        R|                  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)BNr   rJ   r?   )rr  ra  )r  z/P2P compilation disabled for P2POp constructionztorch.distributed.P2POpzP2P compilation is disabled.z3Set TORCHDYNAMO_ENABLE_P2P_COMPILATION=1 to enable.r  r   )NullContextVariabler   r  r{  zTypedDict with optional keysz<Dyanmo does not support tracing TypedDict with optional keysz(Avoid using TypedDict with optional keysiterablemaxlenrT   c                     g rV   r   )r  r  s     r[   deque_signature?UserDefinedClassVariable.call_function.<locals>.deque_signatureG  s     r^   z&collections.deque() with bad argumentszargs=	, kwargs=z8Detected call to collections.deque() with bad arguments.z$Fix the call to collections.deque().)r  r  r  r	  from_excz.collections.deque() with bad iterable argumentzZCall to collections.deque() has an iterable argument that Dynamo cannot convert to a list.zeUse a simpler sequence type that Dynamo can convert to a list (e.g. list, tuple, list iterator, etc.))r  r|  )r}  __exit__r
  z!missing args to functools.partialr$  z0functools.partial requires at least one argumentzFix the functools.partial call.)r  keywordsz0torch.cuda.device() requires a constant argumentr}  r  )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 = Trueztorch.return_typesrx  ry  rz  )SizeVariablezPydantic dataclass constructorzwDynamo graph breaks on pydantic dataclass constructors because validation mutates the instance outside traced bytecode.rQ   c              3   @   #    U  H  oR                  5       v   M     g 7frV   )	is_tensor).0xs     r[   	<genexpr>9UserDefinedClassVariable.call_function.<locals>.<genexpr>9  s     =}!}   r  rb  rR   )register_graph_created_object)StreamVariable)EventVariableNN)r  rK   rd  rr  ra  ctx_managerr  r+   r   distributedis_availablerz   P2POpr   enable_p2p_compilationr   re  r  r   rW   r   r   r   rC   r#  r   itemsrg  CrossEntropyLossrn  
contextlibnullcontextr  r  r  inline_user_function_returnr   construct_dictr  r~  r   rO   rE   is_supported_argr   	TypeErrorr  call_custom_dictr   rB   r
   __optional_keys__r   r   r  dequer   r   r   r~   	signaturebind
USER_ERROR	argumentshas_force_unpack_var_sequenceforce_unpack_var_sequencelistsDequeVariabler  
MethodTyper   UserFunctionVariableget_namecm_objr   r-  r  r  weakrefrefWeakRefVariable	functoolspartial	functionsFunctoolsPartialVariablewarningscatch_warningsCatchWarningsCtxManagerVariabler   r   is_python_constantr   CUDADeviceVariabler   rw   rv   is_standard_new"cls_supports_mutation_side_effectsrp   r$  r  r  r  _AsyncGeneratorContextManagerclosingredirect_stdoutredirect_stderrAsyncExitStack_GeneratorContextManager_dynamoenable_trace_contextlibkeys_as_python_constantr  %instantiate_user_defined_class_objectr2   r   r9   r   r  r   r   r   r   rQ   npr<   allrf  stackr8   r   rR   rD   graph_bytecode_inputsr  streamsr  !make_construct_in_graph_stream_fnr   r   r   make_construct_in_graph_event_fnrandomRandomRandomVariableMappingProxyTypeMappingProxyVariabler   r   )1r   r   r  r   rK   rr  ra  r  constant_argsvarr  kvr  default_factorydict_vtr  r  
bound_argser  r  fncallback	rest_argsr  r  r  arg_newfn_var	args_listkwargs_dictr  tuprQ   stackedrR   
var_kwargsvar_argsstreamr  r  indtensor_variableeventr  seedrandom_objectr   s1                                                   r[   r  &UserDefinedClassVariable.call_function  sN    	/=?+D9))++

e>O>O>U>U0U00M5 >M	 ))((FF!((V4C
 OOB
DJ?J))++"(('')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Ta +;;DGDD,Yq'K"&q')-&33DDD#)G '''.0	  $**%%zz++:

O ^B*66	 00AAD#)  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--// %WX//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	 11%%	GG     tzz**!$**--SY!^',-t9+ZF}GD	 yy--KKJ  55#))IKK MDM  ZZ5::%+#**2u5CCBfUC		**&tzz22 8::,S'33 JJ$00221$**== , JJ"55INtAw55Q&*=tAw}}=== ())00' +48  y$**ell330.AGP_**2114P
 )d4113!446 R33"DD * #0))00')Evr#V #"K DJJ440 /AGP_**2114P
 )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6_ <L|  
D#D66(; Z>*55 	 	
v Q6 Qb 87sJ   (A@A@&A@# .#AA
2#AA%
9AA+@#
AA@-$AAAAAA+
AA9c                     [         R                  " U R                  SS5      n[        U[        5      (       a  UR
                  nU[        R                  L $ )z"Check for __new__ being overriddenr   N)r~   r   rz   r   r+  r-  rW   r   )r   new_fns     r[   r  (UserDefinedClassVariable.is_standard_new  s?    ''

ItDfl++__F''r^   rO   c           	         U R                   (       aE  [        U R                   R                  [        R                  " [
        R                  US95      5        [        R                  " U[        U R                  U5      5      $ )Nattr)r  r!   
make_guardr  r  r    HASATTRrC   r#  rv   rz   )r   r   r   s      r[   call_obj_hasattr)UserDefinedClassVariable.call_obj_hasattr  s[     ;;&&%%l&:&:F
 $$RT)BCCr^   c                 Z   > US:X  a  U R                   R                  $ [        TU ]  X5      $ )Nrs   )rz   rs   r   const_getattrr   r   r   r   s      r[   r  &UserDefinedClassVariable.const_getattr  s+    :::&&&w$R..r^   Tc                     gr   r   r   s    r[   is_python_hashable+UserDefinedClassVariable.is_python_hashable      r^   c                 ,    [        U R                  5      $ rV   )hashrz   r   s    r[   get_python_hash(UserDefinedClassVariable.get_python_hash  s    DJJr^   otherc                 t    [        U[        R                  5      =(       a    U R                  UR                  L $ rV   )r   r   r   rz   r   r  s     r[   is_python_equal(UserDefinedClassVariable.is_python_equal  s,    ui@@A *

ekk)	
r^   c                     U R                   $ rV   r   r   s    r[   get_real_python_backed_value5UserDefinedClassVariable.get_real_python_backed_value  r   r^   )r   rz   )r   rM   rT   rC   )6rs   r   r   r   rw   rW   r   r   r   r   r   r   r   r+  r  cacher   r   r   r   boolr   r   r   r   r   rC   r  r   r  r  r  r5  rH  rM  rQ  r   r   rn  r   r   r  r  r  r  r  r   r  r   r  r  r   r   __classcell__r   s   @r[   r   r      s   <"d6l "c "d "DL & :# : __
CV$5 
  
 __Fs4<0 F  F: __+s3x +  +( Ev E$ E ER4 R  # & -#- 
-Q
5 Q
S Q
_ Q
fT#T T 	T
 T 
T8H;#H; H; 	H;
 H; 
H;T;#; ; 	;
 ; 
; 2#2 2 	2
 2 
24X2 X X!3 ! !!3 ! !EA#EA 'EA S/)*	EA
 
EANb;#b; b; ?#	b;
 S/)*b; 
b;H")"		 "r7#r7 'r7 S/)*	r7
 
r7h( (	D)	D14	D		D/ 7 /s /s /
GDM    
V 
 
f  r^   r   c                   j   ^  \ rS rSr\S\\   4S j5       rSSS\\	   S\
\\	4   S\	4U 4S jjrS	rU =r$ )
!UserDefinedExceptionClassVariablei  rT   c                     U R                   $ rV   r   r   s    r[   r  $UserDefinedExceptionClassVariable.fn  s    zzr^   r   rM   r  r   c                 "  > SSK Jn  U R                  cl  UR                  R                  R                  UR                  U[        5      U [        U5      5      nUR                  US[        U5      [        U5      5        U$ [        TU ]1  XU5      $ )Nr?   rq  r   )rd  rr  r  re  r  r  r   rY   r   r   r   r   r  )r   r   r  r   rr  r  r   s         r[   r  /UserDefinedExceptionClassVariable.call_function  s{     	/;; ))((FF!((];T
C
 OOB
DJVEJw$Rv66r^   r   )rs   r   r   r   r.  rw   rW   r  r   rC   r   r   r  r   r$  r%  s   @r[   r'  r'    s_    DL  7#7 '7 S/)*	7
 
7 7r^   r'  c                       \ rS rSrSrg)RemovableHandleClassi  r   Nrs   r   r   r   r   r   r^   r[   r-  r-    s     	r^   r-  r   rM   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)
rd  r0  r   r  r~  re  random_callsr&   rh   wrap_unspecialized_primitive)r   r  r  r   r0  r  r  r  random_call_indexexample_valuer  s              r[   call_random_fnr5    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                   X  ^  \ rS rSr% SrSr\S-  \S'   Sr\	\
   S-  \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SSS jrSSS\4S jr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\4U 4S jjr    STS 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 SUS  jr!SSS\4S! jr"SSS"\S#S$S%\\
   S\#\\
4   S\4S& jr$\%\&RN                  S\	\
   4S' j5       5       r(SSS(\S\4U 4S) jjr)SSS*\S%\*\
   S\#\\
4   S\4
U 4S+ jjr+SSS\4S, jr,SSS\4S- jr-SSS\4S. jr. SVSSS*\S\S/\S\4
S0 jjr/S\4S1 jr0SSS\*\   4U 4S2 jjr1SSS\4S3 jr2SSS\*\   4S4 jr3SSS\4S5 jr4S\4S6 jr5SSS%\\   S\#\\4   S\4U 4S7 jjr6S\4S8 jr7S9\S\4S: jr8S*\S\4S; jr9S*\S\4S< jr:S=\S\4S> jr;S=\S\<\\4   S-  4S? jr=SSS(\S\4S@ jr>SSS*\S\?4SA jr@SSS*\S\4SB jrASSS*\SC\SD\BS-  S\4
SE jrCSSS*\SC\SD\BS-  S\4
SF jrDSSS*\SG\SD\BS-  S\4
SH jrESSS*\SD\BS-  S\BS-  4SI jrFSSS*\SSJ4SK jrGS\4SL jrHS\I4SM jrJSN\S\4SO jrK            SWSP jrL              SXSQ jrMSRrNU =rO$ )Yr3  i  zW
Mostly objects of defined type.  Catch-all for something where we only know the type.
N_base_vt_base_methodsrz   
value_type)r9  
cls_sourcebase_cls_vt	init_argsr:  r;  r<  r   rT   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	        S U l
        0 U l        0 U l        SS KJs  Jn  UR!                  U R                  5      U l        UR!                  U R                  5      (       aC  U R                  (       a2  [%        U R                  R'                  [(        R*                  5      5        [-        U R                  5      U l        g )Nr   r   )r   r   rz   rw   r9  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_MATCHr7   _object_has_getattribute)	r   rz   r9  r:  r;  r<  r   pytreer   s	           r[   r   "UserDefinedObjectVariable.__init__  s     	"6"
$3UE{doo---$$++"9(5DO '" 37
 46 68,,(.(@(@(Q%##DOO44$++001J1JKL(?

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

J=>E..))*!E7!44r^   c                 b    U R                   R                   SU R                  R                   S3$ r   r   rs   r9  r   s    r[   r   "UserDefinedObjectVariable.__repr__L  +    ..))*!DOO,D,D+EQGGr^   r   rM   c                 |    U R                   c$  [        R                  R                  X5      U l         U R                   $ rV   )r  r   rP   r   rL  s     r[   get_dict_vt%UserDefinedObjectVariable.get_dict_vtO  s.    <<$77>>rHDL||r^   r  rK   c                 T    U R                   b  UR                  U R                   5      $ gNF)r7  is_modified)r   r  s     r[   is_base_vt_modified-UserDefinedObjectVariable.is_base_vt_modifiedT  s$    ==$++DMM::r^   c                     U R                   $ rV   r9  r   s    r[   python_type%UserDefinedObjectVariable.python_typeY  s    r^   c                     U R                   $ rV   r   r   s    r[   r   6UserDefinedObjectVariable.get_real_python_backed_value\  r   r^   c                 d  > [        U R                  [        R                  [        R
                  [        R                  R                  R                  45      (       a  U R                  $ U R                  (       a  U R                  (       a  U R                  $ SSKJn  [        U R                  U5      (       ak  SSKJn  UR                  " 5       nUbQ  UR                   (       a@  UR"                  R$                  R'                  U SSS9nUb  UR)                  5       nU" U5      $ [*        TU ]Q  5       $ )Nr   )_MaskModWrapperrL   r  T
deleted_ok)r   rz   r   r   r   DispatchKey_C
_functorchTransformTyperD  r  !torch.nn.attention.flex_attentionrc  torch._dynamo.symbolic_convertrM   
current_txexportre  r  	load_attrr   r   )r   rc  rM   r   fn_vtr  r   s         r[   r   ,UserDefinedObjectVariable.as_python_constant_  s    JJYY))588+>+>+L+LM
 
 ::((T[[ :: 	Fdjj/22L&113B~"))		..88tPT8U$ 113B*2..w)++r^   c                    > [        U R                  [        R                  5      (       a@  [        U R                  [        5      (       a  [	        U R                  5      $ U R                  $ [
        TU ]  5       $ rV   )r   rz   r   r   r   r   r   r   r   s    r[   r   "UserDefinedObjectVariable.as_proxy  sO    djj$)),,$**c**4::&::w!!r^   c                    > U R                   (       a>  [        U R                   R                  [        R                  5      5        U R
                  $ [        TU ]  5       $ rV   )r  r!   r
  r    ID_MATCHrz   r   guard_as_python_constantrr  s    r[   rv  2UserDefinedObjectVariable.guard_as_python_constant  s?    ;;$++001F1FGH::w/11r^   c                    U R                  S5      (       av  U R                  US/ 0 5      nUR                  5       (       aK  UR                  5       n[	        U[
        5      (       d&  [        [        US[        U5      R                   3/S9  U$ g )Nr   z&__bool__ should return bool, returned r  )
r   r   r  r   r   r#  r   r  rw   rs   )r   r   resultresult_values       r[   r   #UserDefinedObjectVariable.bool_impl  s     ++J77%%b*b"=F((**%88:!,55,!DT,EWE`E`Dab Mr^   c           	        > [         R                  " [        U R                  5      SS 5      nUc  [        TU ]  U5      $ U R                  =(       a    U R                  US5      nU R                  USX#5      nUR                  U/ 0 5      nUR                  5       (       aX  [        UR                  5       [        5      (       d5  [        [        US[        UR                  5       5      R                    S3/S9  U$ )N	__index__z!__index__ returned non-int (type r   r  )r~   r   rw   rz   r   nb_index_implr  get_source_by_walking_mroresolve_type_attrr  r  r   r   r   r   r  rs   )r   r   	type_attrr  
method_varry  r   s         r[   r~  'UserDefinedObjectVariable.nb_index_impl  s     **4

+;[$O	7(,,P!?!?K!P++BYO
))"b"5 $$&&z%%'0
 0
 %7V=V=V=X8Y8b8b7ccde r^   c           	         U R                   =(       a    U R                  US5      nU R                  US[        R                  " [        U R                  5      S5      U5      nUR                  U/ 0 5      n[        UR                  5       [        5      (       d,  [        [        USUR                  5       R                   S3/S9  U$ )N__int__z__int__ returned non-int (type r   r  )r  r  r  r~   r   rw   rz   r  r   r^  r   r   r  rs   r   r   r  r  ry  s        r[   nb_int_impl%UserDefinedObjectVariable.nb_int_impl  s     N!?!?I!N++""4

#3Y?	

 ))"b"5&,,.44$5f6H6H6J6S6S5TTUV r^   c           	         U R                   =(       a    U R                  US5      nU R                  US[        R                  " [        U R                  5      S5      U5      nUR                  U/ 0 5      n[        UR                  5       [        5      (       d,  [        [        USUR                  5       R                   S3/S9  U$ )N	__float__z#__float__ returned non-float (type r   r  )r  r  r  r~   r   rw   rz   r  r   r^  r   r   r  rs   r  s        r[   nb_float_impl'UserDefinedObjectVariable.nb_float_impl  s     P!?!?K!P++""4

#3[A	

 ))"b"5&,,.66$9&:L:L:N:W:W9XXYZ r^   c                 8    [        U 5      (       d
   SU  35       eg )Nz<calling torch function on object without __torch_function__ )r0   r   s    r[   torch_function_check.UserDefinedObjectVariable.torch_function_check  s$    !$'' 	
J4&Q	
'r^   c                 >    U R                  5         SSKJn  U" X5      $ )Nr?   )get_torch_function_fn)r  torch_functionr  )r   r   r  s      r[   get_torch_fn&UserDefinedObjectVariable.get_torch_fn  s    !!#9$R..r^   r  r  rR   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  r  r  r  )r   r   r  r  r  r   r  s          r[   r  -UserDefinedObjectVariable.call_torch_function  s=     	!!#7"b!
 	
r^   c                      [         R                   [         R                  [         R                  [         R                  1n U $ rV   )r  randint	randrangeuniform)fnss    r[   _supported_random_functions5UserDefinedObjectVariable._supported_random_functions  s0     MMNNNN	
 
r^   keyc                   > U R                  S5      nU R                  b7  U R                  b*  X0R                  ;   a  U R                  R                  X5      $ [	        U[
        R                  5      (       aU  U R                  =(       a    U R                  US5      n[        R                  " X0X@R                  S9R                  X/0 5      $ [        TU ]  X5      $ )N__getitem__rF  r  )r   r7  r8  mp_subscript_implr   r  r  r  r  r   r  r  r   )r   r   r  r  rF  r   s        r[   r  +UserDefinedObjectVariable.mp_subscript_impl  s     11-@MM%"".,,,==222;;fe0011 (F(FM)I //	++mBr*+ w(11r^   r   c                 N  > SSK Jn  SSK Jn  SSKJn  U R                  U5      nUGbn  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 aw  ['        U5      S:X  ah  U(       da  US   n	[        U	[(        5      (       d  [*        R,                  " U[.        5      $ [*        R,                  " XR                  U	R                  L 5      $ [0        R2                  R4                  R6                  (       aL  [        U R                  [8        R:                  5      (       a#  [=        SSU R                   S	U S
U SU 3SS/S9  [        U R                  [0        R>                  R@                  5      (       a2  X%RB                  ;   a#  [=        SSU 3SU S3/ [D        RF                  QS9  U RH                  b8  U RJ                  b+  XRJ                  ;   a  U RH                  RM                  XX45      $ [        U[8        RN                  5      (       al  U RP                  n
S nU
(       a  U RS                  X5      nSSK*J+n  U[0        RX                  RZ                  R                  L a  UnU" XXS9R]                  XU5      $ U[^        R`                  L a{  U RP                  (       aj  U(       dc  U(       d\  [c        U RP                  Re                  [f        Rh                  5      5        [*        R,                  " U['        U R                  5      5      $ [j        TU ]  XX45      $ )Nr   trace_rulesr?   )r  rN   r   zcall_method on generatorobject=z	, method=, args=r  zWDetected a method call to a user-defined generator object. This is not fully supported.zSet `torch._dynamo.config.enable_faithful_generator_behavior = False`. Note that this may cause silent incorrectness, since we will eagerly unpack generators instead of lazily evaluating them.r  ztorch.Generator methodztorch.Generator.zM() is a stateful RNG operation that cannot be soundly traced in the FX graph.unpatched_nn_module_initr  )6r$  r  r  r   rO   r   rW   r   r   r\   r   rz   	threadinglocalmethod_setattr_standardra   r   DeletedVariablerv  r~  r3  rC   r#  NotImplementedr   r  r   "enable_faithful_generator_behaviorr  GeneratorTyper   rg  	Generator#_GENERATOR_METHODS_THAT_GRAPH_BREAKr   FUNDAMENTALr7  r8  r   r  r  r  mutation_guardr  rg  Moduler  r   rE  r!   r
  r    SEQUENCE_LENGTHr   )r   r   r   r  r   r  r  rO   r  r  r  rF  r  r   s                r[   r   %UserDefinedObjectVariable.call_method-  s    	#(.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*00^DD ',,Ru{{1JKK}}##FF:

E//L L 6%djj\4&vYW]V^_!3+
 4::uxx'9'9::KKK4.tf5"24& 9O !O:-99: )&&2000}}004HH &%"4"455 	 $ > >r HIEUXX__5555F)I-&12 %$++tvdkk44\5Q5QRS&,,RTZZAAw"2T::r^   c                    U R                  S5      nUb{  U R                  S5      nU R                  =(       a    U R                  US5      nU R	                  USX45      n[        U[        R                  5      (       d  UR                  U/ 0 5      $ [        SU R                  5        S3SU R                  5        S3/ [        R                  QS9  g )NrE  z!Cannot trace user-defined __len__z
.__len__()zDynamo cannot trace len() on zu because the __len__ method is either not traceable (e.g., defined in C or built-in) or returns a non-constant value.r  )r   lookup_class_mro_attrr  r  r  r   r   r  r  r   rG  r   r  )r   r   r  r  r  r  s         r[   rH  "UserDefinedObjectVariable.len_impl  s    11)<229=I[[RT%C%CB	%RF//IyQJj)*C*CDD!//B;;7,,./z:/0E0E0G/H I& &"..	
r^   c                     U R                   bG  U R                  b:  U R                  S5      U R                  ;   a  U R                   R                  U5      $ U R	                  U5      $ NrE  )r7  r8  r   rM  rH  rL  s     r[   rM  #UserDefinedObjectVariable.sq_length  U    MM%"".00;t?Q?QQ==**2..}}R  r^   c                     U R                   bG  U R                  b:  U R                  S5      U R                  ;   a  U R                   R                  U5      $ U R	                  U5      $ r  )r7  r8  r   rQ  rH  rL  s     r[   rQ  #UserDefinedObjectVariable.mp_length  r  r^   directly_update_dictc           
      $   Sn UR                  5       nUR                  R                  R                  U 5      (       d   S	5       e[        R                  R                  5       (       a  [        U R                  5      [        R                  R                  L aY  UR                  R                  R                  X5      (       d  XPR                  R                  ;   a  [        S
SU  SU SU 3SS/S9  US:X  a  [        SSU  SU 3SS/S9  U(       a"  U R                  U5      R                  XS5        GOaU R!                  U5      nU(       a  Uu  pxS n	S n
U R"                  (       a&  U R%                  X5      n	['        [)        U	5      S5      n
[*        R,                  " XU	5      n[*        R,                  " XU
SS9n[/        U[0        5      (       a  X/nOXU/nUR3                  X0 5      $ [4        R6                  " [        U R                  5      US 5      n[/        U[0        5      (       an  UR8                  ba  S nU R"                  (       a  ['        U R%                  X5      S5      n[*        R,                  " XR8                  US9nUR3                  XU/0 5      $ [;        U R                  S5      (       dw  U R=                  U5      n[4        R>                  " U5      (       dK  [*        R,                  " US[        U R                  5      R@                   SU S35      n[C        [D        UU/S9  UR                  R                  RG                  XU5        [H        RJ                  RM                  S 5      $ ! [         a    [        SSU  SU SU 3SS/S9   GNzf = f)Nr$  z-non-const setattr name on user-defined objectr  , name=z, value=zODetected a call to `setattr` of a user-defined object with a non-constant name.z!Ensure that the name is a string.r  z`Attempted setattr on a user-defined object that does not have an AttributeMutation mutation_typezP2POp mutationzCDynamo does not support mutating torch.distributed.P2POp instances.zaConstruct a new torch.distributed.P2POp instead of mutating an existing one inside torch.compile.r   z+__class__ assignment on user-defined objectzFDynamo does not support reassigning __class__ on user-defined objects.zBMove the __class__ assignment outside of the torch.compile region.r   Trealizefsetr
  r}   r  ' object has no attribute 'r  )'r   r  r   re  r  is_attribute_mutationr   r  r  rw   rz   r  has_pending_mutation_of_attrr}   rU  setitem$try_get_descritor_and_setter_py_funcr:  r  r"   r)   rC   r#  r   r.  r  r~   r   r  rv   r  ismemberdescriptorrs   r   r   
store_attrr   rO   r   )r   r   r   rz   r  name_strtmpr=  setterdesc_sourcefunc_sourcedesc_varfunc_varr  fset_sourcefset_var	error_msgs                    r[   r  1UserDefinedObjectVariable.method_setattr_standard  sD    	..0H yy%%;;DAA 	
1	
A **,,TZZ E$5$5$;$;;		&&CCDSSzz222 (!$wtfHUGDaw	 {"E!$xw7dX	  R ((9;;HEC%("
 #"??"&"@"@"NK",Z-Di"PK*00M*00[RVWj(33 =D$E2D--b;;
 !//TZZ0@(DQJ*h//JOO4O"??",66rDf#K +00  --b-DD tzz:..33H=J--j99+11TZZ(1122MhZWXY	 )9+N
		))$%@))0066} # 	G!$wtfHUGDm:;		s   M+ + NNc                     [        [        R                  " U R                  SS 5      5      (       + =(       a)    [	        U R                  [
        R                  5      (       + $ )NrX   )r\   r~   r   rz   r   r  r  r   s    r[   needs_slow_setattr,UserDefinedObjectVariable.needs_slow_setattr  sD    &""4::}dC
 
 :TZZ99	:r^   c           
        > U R                   bK  U R                  b>  U R                  S5      nUb*  X R                  ;   a  U R                   R                  U5      $ 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 ]  U5      $ s  snf )N__iter__rE  r  r
  )r7  r8  r   r  r  r   r  rE  r  r!   r
  r    r  ranger~  rz   r   LazyVariableTrackerr   r%   r   )r   r   iter_methodr  r   s       r[   r  -UserDefinedObjectVariable.unpack_var_sequence  s4   ==$););)G:::FK&;:L:L+L}}88<<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	E?c                     SSK Jn   UR                  U[        5      R	                  X/0 5        g! [
         a    [        U5         gf = f)Nr?   rq  TF)rd  rr  r   iterr  r   r   )r   r   rr  s      r[   r  7UserDefinedObjectVariable.has_force_unpack_var_sequence4  sF    .	$$R.<<RL  	%b)	s   '0 AAc                     SSK Jn  / nUR                  U[        5      R	                  X/0 5      n  UR                  U5      nUR                  U5        M%  ! [         a    [        U5         U$ f = f)Nr?   rq  )	rd  rr  r   r  r  next_variablerh   r   r   )r   r   rr  ry  iter_rs         r[   r  3UserDefinedObjectVariable.force_unpack_var_sequence>  sw     	/!((T2@@VRP''+a   - )"-s   "A A/.A/c                 *    U R                  US/ 0 5      $ )N__next__)r   rL  s     r[   r  'UserDefinedObjectVariable.next_variableO  s    JB77r^   c                 ^     U R                   U R                  5       ;   $ ! [         a     gf = frX  )rz   r  r  r   s    r[   is_supported_random-UserDefinedObjectVariable.is_supported_randomR  s1    	::!A!A!CCC 		s    
,,c                   > U R                  5       (       aR  [        S U 5       5      (       a;  [        S UR                  5        5       5      (       a  [        XR                  X#5      $ [        U R                  [        R                  5      (       Ga8  U R                  R                  nU R                  R                  nU[        R                  R                  R                  R                  L al  [        R                   R#                  UR$                  5      (       a>  U(       d7  U(       d0  [        R                   " UR$                  5      R'                  XU5      $ U[        R(                  R*                  R,                  R                  L a  UR$                  [        R(                  R*                  R,                  L aQ  [.        R0                  " XR2                  5      n[        R                   " UR$                  5      R'                  X/U5      $ U R4                  c1  [7        SSU R                   SU SU SU 3SS	U R                   S
3/S9  U R4                  c   e[9        U R4                  S5      n[.        R0                  " XUSS9n[9        U R4                  S5      n	[.        R0                  " XU	5      n
UR'                  X/U-   U5      $ [;        U R                  5      (       aq  U R4                  (       aM  U R<                  c   e[9        U R<                  S5      n[?        URA                  [B        RD                  5      5        U RG                  USX#5      $ [H        TU ]M  XU5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7frV   r  )r  r  s     r[   r  :UserDefinedObjectVariable.call_function.<locals>.<genexpr>a  s     9Dq((**Dr  c              3   @   #    U  H  oR                  5       v   M     g 7frV   r  )r  r  s     r[   r  r  b  s     DOq((**Or  z<attempted to call sourceless user-defined object as a methodr  z, function=r  r  zDynamo does not support this.zEnsure the user-defined object z, is constructed outside the compiled region.r  r-  Tr  r   __call__)%r  r  valuesr5  rz   r4   r  r  r-  r   r   rA  _contextlib_DecoratorContextManagercloner   r  is_matching_clsr   r  autograd	grad_modeinference_moderC   r#  moder  r   r"   ru   r:  r!   r
  r    CLOSURE_MATCHr   r   )r   r   r  r   r8  rq   r  func_srcr  obj_srcobj_varsource_attrr   s               r[   r  'UserDefinedObjectVariable.call_functionY  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 &++B9 ==MM-E623 {{"Z%djj\TF'$yY_X`a ?9$**Eqr	 ;;***!$++z:H&,,RxNH j9G%++BW=G))"i$.>GGdjj!!{{222(*Ek44\5O5OPQ##B
DAAw$Rv66r^   c                 ,    [        U R                  5      $ rV   )r/   rz   r   s    r[   _check_for_getattr,UserDefinedObjectVariable._check_for_getattr  s    !$**--r^   subobjc                     [        U[        5      (       d  g[        UR                  [        R                  5      =(       d=    [
        R                  R                  R                  R                  UR                  5      $ rX  )
r   r.  r/  r  BuiltinFunctionTyper   rg  r  rA  is_instancemethod)r   r
  s     r[   _is_c_defined_property0UserDefinedObjectVariable._is_c_defined_property  sY    &(++ KK22
 CXX##55fkkB	Cr^   c                    XR                   ;   a  U R                   U   $ [        R                  " U R                  U[        5      nU R
                  (       d  U[        L dL  [        R                  " U5      (       d1  [        R                  " U5      (       d  U R                  U5      (       a0  [        U R                  5      R                  U R                  U5      nO U R
                  (       a  U[        L a  [        eX R                   U'   U$ rV   )r>  r~   r   rz   rA   rF  r  isgetsetdescriptorr  rw   r  r   )r   r   r
  s      r[   _getattr_static)UserDefinedObjectVariable._getattr_static  s    (((((..''

D.I ,,n$))&11))&11**622 $**%66tzz4HF**v/G ! &,d#r^   c                     XR                   ;   a  U R                   U   $ [        nU R                  R                  R                   H#  nXR
                  ;   d  M  UR
                  U   n  O   X R                   U'   U$ )u  Walk type(obj).__mro__ to find *name* in the class hierarchy.

This only searches the class chain (type(obj).__mro__), NOT the
metaclass chain (type(type(obj)).__mro__).  The distinction matters
because inspect.getattr_static conflates both chains — it can return
metaclass descriptors (e.g. type.__dict__['__annotations__'], a
getset_descriptor) when the attribute doesn't exist on the class MRO.
Walking cls.__mro__ directly avoids that leak.
)r?  rA   rz   r   r   r}   )r   r   ry  r   s       r[   r  /UserDefinedObjectVariable.lookup_class_mro_attr  sp     *****400JJ((00D}}$t, 1 )/%r^   	attr_namec                 F   [         R                  " [        U R                  5      US 5      n[         R                  " [        U5      SS 5      nU(       aN  [         R                  " U5      (       a  gU R
                  (       a!  U R
                  R                  U5      (       a  gg)Nr   TF)r~   r   rw   rz   
isfunctionr  containsr   r  r=  r  s       r[   should_skip_descriptor_setter7UserDefinedObjectVariable.should_skip_descriptor_setter  sr    ++D,<iN
''Z(8)TJ!!&)) $,,"7"7	"B"Br^   c                 6   [         R                  " [        U R                  5      US 5      n[	        U[
        5      (       a  UR                  b  X"R                  4$ [         R                  " [        U5      SS 5      n[         R                  " U5      (       a  X#4$ g )Nr   )r~   r   rw   rz   r   r.  r  r  r  s       r[   r  >UserDefinedObjectVariable.try_get_descritor_and_setter_py_func  sz     ++D,<iN
j(++
0K00''Z(8)TJf%%''r^   c                    UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[	        U[
        R                  5      (       + $ X R                  R                  ;   $ )NTrd  )	re  r  r  rn  r   r   r  rz   r}   )r   r   r  mutated_attrs       r[   has_key_in_generic_dict1UserDefinedObjectVariable.has_key_in_generic_dict  sh    99!!>>tII9911;;DRV;WL!,	0I0IJJJ jj))))r^   c                    U R                   c   e[        [        U R                  5      R                  5       GH%  u  p4X$R
                  ;   d  M  UR
                  U   n[        SU5       H  n[        U R                  5      R                  U   n[        U5      U4nXR                  R                  ;   a  MM  UR                  R                  R                  U5        [        U R                   5      n	[        X5      n
[        U
5      n[        UR                  [         R"                  " [$        R&                  US95      5        M     U R(                  (       a  [+        U R                  S5      (       ao  X R                  R
                  ;  aV  [+        US5      (       dE  [        U R(                  R                  [         R"                  " [$        R,                  US95      5        [        U5      U4nUR                  R.                  nX;   a  X   s  $ US:w  a!  [        U R                   5      n	[        X5      n
OU R                   n
[        U
5      n[1        X5      nXU'   Us  $    [3        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/[4        R6                  QS9  g )Nr?   )r  r}   r   r  r   z#could not find name in object's mrozname=z, object type=z, mro=zCould not find name `z	` in mro zEnsure the name `z` is defined somewhere in z's type hierarchy.r  )r:  	enumeraterw   rz   r   r}   r  idre  guarded_mro_absent_keysaddr(   r%   r'   r!   r
  r  r  r    DICT_NOT_CONTAINSr  rv   NOT_PRESENT_IN_GENERIC_DICTmro_source_cacher$   r   r   r  )r   r   r   idxr  r=  
absent_idxabsent_klass	cache_key
mro_sourceklass_sourcedict_sourcer"  
out_sources                 r[   r  3UserDefinedObjectVariable.get_source_by_walking_mro  sl    ***#D$4$<$<=JC~~%"^^D1
 #(3-J#'

#3#;#;J#GL!#L!14 8I II$E$EE II5599)D!.t!?J+8+PL"0">K!#..%--l.L.LRVW #0, KK

J77JJ$7$77#J	::!..%-- , H Ht  
^T2			22% ++!8!.t!?J#0#AL#'??L,\:.{A
#-i !! >B 	9D6TZZ0@/ATZZHXH`H`Gab/vYtDJJ?O?W?W>XY#D6)CDJJ<Oab"--		
r^   c                    U R                   (       a  [        U R                   U5      OS nU R                  (       a  [        R                  " [        U R                  5      S5      nU R                   (       a  [        U R                   S5      OS n [        R                  " UU US9R                  U[        R                  " X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<  [/        U R                  S5      (       d  [)        [*        U5        U R1                  U5      $ US	:X  a?  UnUc  U R2                  nOUn[        R                  " U[        U R                  5      U5      $ S
SKJn  U R9                  U5      n	U	[:        R<                  R>                  R@                  L a  Un	U	[B        La"  [E        U	5      (       a  U RG                  XX5      $ [/        U R                  S5      (       a[  X R                  RH                  ;   aB  U R                  RH                  U   n
U RK                  XU5      n[        R                  " XU5      $ U	[B        La  U RM                  XX5      $ U R                  (       dY   [        U R                  5      RO                  U R                  U5      nU RK                  XU5      n[        R                  " XU5      $ U RQ                  5       n[%        U[R        RT                  5      (       Ga  U[V        L a  [%        U [        RX                  5      (       a  [[        U R                  R\                  [^        5      (       ad  [[        U R                  R`                  [^        5      (       a;  [[        U R                  Rb                  [^        5      (       a  U Re                  X5      nOmS nU R                   (       a  [        U R                   S5      n[        R                  " XUS9R                  U[        Rf                  Ri                  U5      /0 5      nU R                   (       a  U[:        R<                  R>                  Rj                  L aX  [%        U[        RX                  [        Rl                  45      (       a)  URo                  [        U Rq                  5       U5      5        U$ Ub4  [s        SSU R                   SU SU 3SU SU R                   SU S3S/S9  [)        [*        US[        U R                  5      R,                   SU S3/S9  g ! [         a    [        U5         GNf = f! [*         a     GNyf = f)Nr  r
  Trd  r  r  r  r}   r   r   r  r  z1User-defined object with non-function __getattr__r  r  z, getattr_fn=z!Found a non-function __getattr__ z from a user-defined object z  when attempting to getattr ``z3Ensure the object's __getattr__ is a function type.r  ):r  r"   rF  r~   r   rw   rz   r   r  r  rC   r#  r   r   re  r  r  rn  r   r  r   r   rs   rv   rU  r:  r  r  r  r   rg  r  r   rA   r   resolve_data_descriptorr}   (maybe_wrap_nn_module_source_for_instancer  r  r  r  r  r>   UnspecializedNNModuleVariabler4   _parametersr   _buffers_modules manually_trace_nn_module_getattrrO   r   r  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   )r   r   r   r  getattribute_fn
new_sourcery  r:  r  r  r
  r'  
getattr_fnouts                 r[   r  %UserDefinedObjectVariable.var_getattrH  s   AE
4;; =RV((%44TZZ "4O @D{{
4;;(:;PT . 33#%  -_%:%:2%D$ErJ	K 99!!>>tJJYY++55dT5RF&)";";<<("D,5566QRVQWWXY M:4::z22(<##B''
 ;(.J~!__
#
"((T$**-=zJJ=  ..t4	 0000I N*/A)/L/L//)LL
 4::z**tzz7J7J/JZZ((.FBB2VTF"((V<< N*))"IFF  ,,

+<<TZZNFFrQWX&,,R6BB
 ,,.
j%"4"45599tY%L%LMM4::114884::..554::..55;;BE!
;;!+DKK!GJ22Z-Y%?%?%F%Ft%L$MrR  {{zUXX__-H-HH!??!22  22"4#B#B#DdK J#K!$**WTF-
|T?
|Kghlhrhrgs t004vQ8 J 	!d4::&//00KD6QRST	
S * .)"-.t " s%   ;V+ AW +WW
WWr  r  c           
         [        U[        5      (       au  U R                  U5      (       d_  U R                  (       a  [	        U R                  X5      S5      n[        R                  " XR                  USS9nUR                  X/0 5      $ [        R                  " [        U5      SS5      n[        U[        R                  5      (       a  U R                  XX45      $  [        U R                   5      R#                  U R                   U5      n[        R                  " UWU5      $ ! [$         a7    ['        [$        US[        U R                   5      R(                   SU S3/S9   NXf = f)	zMHandle data descriptors found on the type MRO (property, _tuplegetter, etc.).r/  T)r  r  r   Nr  r  r  )r   r.  r  r  r"   r  rC   r#  r/  r  r~   r   rw   r  r  invoke_descriptor_getrz   r  r   r   rs   )r   r   r   r  r  r7  r9  r'  s           r[   r6  1UserDefinedObjectVariable.resolve_data_descriptor  s9    i**43N3N4
 4
 {{#D$B$B2$LfU%++NN64G ((VR88''YDIfe0011--b	JJ		DJJ'88TJH $$R6::  	$TZZ(1122MdVSTU	s   /D% %>E&%E&c                    SSK Jn  X5L d'  U[        R                  R                  R
                  L a  UnU R                  SL=(       a    U R                  SLn[        U[        5      (       aT  U(       a  [        U R                  X5      S5      nUR                  U R                  5      n[        R                  " XU5      $ [        U[         5      (       aU  SnU(       a  [        U R                  X5      S5      n["        R$                  " UR&                  U R)                  US5      UUS9$ [        U[*        R,                  5      (       a3  UR                  U R                  S5      n[        R                  " XU5      $ [/        U5      (       a  ["        R0                  " USXS9$ [        U[*        R2                  5      (       at  [5        US	5      (       a4  UR6                  nU(       a  [        US	5      OSn[5        US	5      (       a  M4  Sn	U(       a  U R                  X5      n	["        R$                  " X0XS9$ [8        R:                  " [=        U5      S
S5      n
[        U
[*        R2                  5      (       a  U R?                  XX45      $ [        U[*        R@                  [*        RB                  [*        RD                  45      (       dH  [        RF                  RH                  RJ                  RM                  U5      (       d  [O        U5      (       a  SSK(J)n  URU                  U5      (       aL  SSK+J,n  UR[                  5       nUR]                  U5      nUb"  UR^                  n["        R$                  " X5      $ ["        R`                  " X[=        U5      US9$ U(       a  U R                  X5      nO*U(       d#  U R                  b  [        U R                  U5      n[        R                  " XU5      $ )zIHandle non-data descriptors and plain class attributes from the type MRO.r   r  Nr-  r   r  __wrapped__r
  _torchdynamo_inliner   r  r?   )PolyfilledFunctionVariable)1r  r  r   rg  r  r   r:  r  r   r+  r"   r  r   rz   rC   r#  r,  r   r  r-  r  r  r0  r1   WrapperUserMethodVariabler  rv   rJ  r~   r   rw   rF  MethodDescriptorTypeWrapperDescriptorTypeMethodWrapperTyperg  r  rA  r  ry   r$  r  is_polyfilled_callabler  rK  _get_polyfill_handlersrl   __torch_dynamo_polyfill__r  )r   r   r   r  r  r  can_use_mro_sourcer8  rF  
var_sourcer9  r  rK  polyfill_handlerswrappedtraceable_fns                   r[   r  +UserDefinedObjectVariable.resolve_type_attr	  s;    	> 1EHHOO4440I!__D8TT[[PT=Ti.. "#222<j $$TZZ0D"((6::	;//I!&222<j	 //""  [1#	  	5#B#BCC$$TZZ6D"((6::*95566=$  	5#5#566)%:;;%99	FLF,ABRV )%:;; J!!;;BE
//:  ''YDIfe0011--b	JJ ..//++  xx%%77	BB!),,&11)<<A$>$U$U$W!044Y?&#*#D#DL$77KK,,TiQWXX 33B=FDOO76F$$RF;;r^   r=  c                 r   SnSnU R                   (       a>  U R                  X5      n[        [        U5      S5      n[        R
                  " XU5      nO[        U5      n[        [        U R                  5      5      n[        R                  " UR                  R                  UUS9R                  XU/0 5      $ )z3Trace a descriptor's __get__(instance, owner) call.Nr   r
  )r:  r  r"   r)   rC   r#  r3  r   rw   rz   r   r  r   r-  r  )	r   r   r   r=  r  r?  r@  rA  	owner_vars	            r[   rF  /UserDefinedObjectVariable.invoke_descriptor_gety	  s     ! $?? $ > >r H$.z:K/Li$X!,222CTUN6zBN,T$**-=>	++''(
 -9-r
2		3r^   c                 R   U(       a  [        U [        R                  5      (       a  UR                  R                  (       a)  [
        R                  R                  R                  (       a<  US;   a%  U R                  c   e[        U R                  U5      nU R                  U5      nU$ )zCWrap source for nn.Module instance dict attribute access if needed.)r:  r9  )r   r   r8  re  rm  r   r  r   install_free_tensorsr  r*   _wrap_source)r   r   r   r  s       r[   r7  BUserDefinedObjectVariable.maybe_wrap_nn_module_source_for_instance	  sw     4!H!HIIYY%%)=)=)R)R22{{...7TJ&&v.Fr^   rO   c           	         U R                   (       aE  [        U R                   R                  [        R                  " [
        R                  US95      5         U R                  X5      n[        R                  " U[        U[        R                  5      (       + 5      $ ! [         a-    [        U5        [        R                  R!                  S5      s $ f = f)Nr  F)r  r!   r
  r  r  r    r  r  rC   r#  r   r   r  r   r   rO   r   )r   r   r   var_vts       r[   r  *UserDefinedObjectVariable.call_obj_hasattr	  s     ;;&&%%l&:&:F	<%%b/F"((
69+D+DEE  & 	<%b)--44U;;	<s   AB 4CCc                 ~    [        U R                  U 5        U R                  b  U R                  R                  5       $ gr   )r:   rz   r7  r  r   s    r[   r  ,UserDefinedObjectVariable.is_python_hashable	  s0     T2==$==3355r^   c                 z    U R                   b  U R                   R                  5       $ [        U R                  5      $ rV   )r7  r  r  rz   r   s    r[   r  )UserDefinedObjectVariable.get_python_hash	  s.    ==$==0022DJJr^   r  c                    [        U[        5      (       aK  U R                  5       (       a6  UR                  5       (       a!  U R                  5       UR                  5       :H  $ [        U[        5      (       d  gU R
                  UR
                  L $ rX  )r   rC   r  r   r   rz   r  s     r[   r  )UserDefinedObjectVariable.is_python_equal	  sn    uo..''))((****,0H0H0JJJ%!455zzU[[((r^   c                    [        [        USS5      SS5      nUR                  S5      nU(       a   SSKnSSKJn	  U R
                  U	;   =(       d=    UR                  U R
                  5      =(       d    UR                  U R
                  5      n
U
(       d7  UR                  S5      nUb#   UR                  5       nUU R
                  4U	;   n
OgOfSSKJs  Jn  U R
                  UR(                  ;   =(       d=    UR                  U R
                  5      =(       d    UR                  U R
                  5      n
U
(       d  UR+                  X/UQ0 5      $ U R                  UUUUU5      $ ! [         a    U R                  UUUUU5      s $ f = f! [         aB    SSKnUR                  [        5      nUR!                  S	5        U R                  UUUUU5      s $ f = f)
a  Emulate tree_map behavior for user-defined objects.

In pytree, a type is a leaf if it is NOT in SUPPORTED_NODES.
User-defined objects (that are not registered with register_pytree_node)
are always treated as leaves. This works for both torch.utils._pytree
and optree implementations.
r  Nr   r$  optreer   _NODETYPE_REGISTRY	namespacezYFailed to import optree.registry._NODETYPE_REGISTRY, falling back to tracing for tree_map)r   r4  rj  optree.registryrl  r9  is_namedtuple_classr   rl   r   r  _tree_map_fallbackri   logging	getLoggerrs   warningr@  rA  rB  SUPPORTED_NODESr  )r   r   tree_map_fnmap_fnresttree_map_kwargstree_map_module	is_optreerj  rl  is_registerednamespace_varrm  rq  logrG  s                   r[   call_tree_map_branch.UserDefinedObjectVariable.call_tree_map_branch	  s     "'+tT"BLRTU#..x8	/>
 OO'99 B11$//BB00A  %$3$7$7$DM$0(5(H(H(JI !* $- "4-4M> 10 6#9#99 >--doo>>,,T__=  ''MDM2>>
 &&
 	
W  3 #'#:#: " + & $ /$   ''1; ..# s1   A8F
 +!E% %FF
 FF
 
A	GGc           	         UR                  5       nUR                  S5      nU(       a   SSKn	SSKJn
  U R
                  U
;   =(       d=    U	R                  U R
                  5      =(       d    U	R                  U R
                  5      nU(       d7  UR                  S5      nUb#   UR                  5       nUU R
                  4U
;   nOgOfSSKJs  Jn  U R
                  UR                   ;   =(       d=    UR                  U R
                  5      =(       d    UR                  U R
                  5      nU(       dR  ["        R$                  " U Vs/ s H  n[&        R(                  " X5      PM     sn5      nUR+                  UUU /UQ0 5      $ U R                  UUUUUU5      $ ! [         a    U R                  UUUUUU5      s $ f = f! [         a    U R                  UUUUUU5      s $ f = fs  snf )zEmulate tree_map_with_path behavior for user-defined objects.

Same logic as call_tree_map_branch but passes keypath to the map function.
rj  r   Nrk  rm  )
get_moduler4  rj  rn  rl  r9  ro  r   rl   r   r  _tree_map_with_path_fallbackri   r@  rA  rB  rt  r   rR   rC   r#  r  )r   r   ru  rv  rw  rx  keypathry  rz  rj  rl  r{  r|  rm  rG  r  keypath_vars                    r[   call_tree_map_with_path_branch8UserDefinedObjectVariable.call_tree_map_with_path_branch.
  s    &002#..x8	$> OO'99 B11$//BB00A  %$3$7$7$DM$0(5(H(H(JI ) $- "4-4M. 10 6#9#99 >--doo>>,,T__=  #117>?w!&&r-w?K ''[$,F,FKK00
 	
C  3 #'#D#D " + & $ / '$   88# ( @s6   A8G #!F  G' F>;G =F>>G  G$#G$)
r>  rF  r?  r;  r:  r  r<  rD  rz   r9  )r   rM   rT   rP   )r   rM   rT   zVariableTracker | None)rT   NFr   rM   ru  (variables.functions.UserFunctionVariablerv  rC   rw  )collections.abc.Sequence[VariableTracker]rx  dict[str, VariableTracker]rT   rC   r   rM   ru  r  rv  rC   rw  r  rx  r  r  ztuple[Any, ...]rT   rC   )Prs   r   r   r   __doc__r7  rC   r   r8  r   r   r   _nonvar_fieldsrW   rw   r)   r   r   r   rN  r   rU  r#  rZ  r^  r   r   r   rv  r   r~  r  r  r  r  r   r  r+  r  r"  r  r  r   r   rH  rM  rQ  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r!  r$   r  r  r   r6  r  rF  r7  r  r  r   r  r  r~  r  r   r$  r%  s   @r[   r3  r3    sb    (,Ho$+ &*M3s8d?) 	 
	+	+N #'(,.26:,L,L 4K	,L
 %,L %t+,L O,t3,L ,L 
,L ,L\	5 	5H# H
 $ 
T f ,F ,B"& "2& 2# 
"*# 
4# 
0# 
0

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

 sm
 S#X
 

* __S   2#2 2 
	2,Y;#Y; Y; 3i	Y;
 S#XY; 
Y;v
2 
 
,!3 ! !!3 ! ! &+h7#h7 h7 	h7
 #h7 
h7T: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 *N
)N
14N
	N
`^
5 ^
S ^
_ ^
@';#'; '; 	';
 '; 
';Rf<#f< f< 	f<
 f< 
f<P3#3 3 	3
 3 
30#  	
 
$$<)<14<	<&D    

)V 
) 
)_
#_
 @_
 "	_

 :_
 6_
 
_
BL
#L
 @L
 "	L

 :L
 6L
 #L
 
L
 L
r^   r3  c                       \ rS rSrSrS\S\4S jrS\4S jr	S\4S jr
SS	 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g)FrozenDataClassVariablei}
  a  Frozen dataclass variable for as_proxy/as_python_constant/hashability.

Construction is handled by the generic polyfill path (tracing through
the auto-generated __init__). Field values are retrieved dynamically
via var_getattr using InstructionTranslator.current_tx().

field_namerT   c                 R    SSK Jn  UR                  " 5       nU R                  X15      $ )Nr   rL   )rk  rM   rl  r  )r   r  rM   r   s       r[   _get_field_vt%FrozenDataClassVariable._get_field_vt
  s$    H"--///r^   c                 \   SSK Jn  SS KJs  Jn  [        U R                  UR                  UR                  UR                  45      (       d  [        S5      e[        U R                  UR                  5      (       a  UR                  5       $ / n0 nU" U R                  5       Hr  nUR                  (       d  M  U R                  UR                  5      R                  5       n[!        USS5      (       a  XdUR                  '   Ma  UR#                  U5        Mt     U R%                  5       " U0 UD6$ )Nr   fieldsz@currently can't reconstruct arbitrary frozen dataclass instanceskw_onlyF)r   r  r@  rA  rB  r4   rz   TreeSpecLeafSpecConstantNoder  treespec_leafinitr  r   r   r   rh   r^  )r   r  rG  r  r   fielddatas          r[   r   *FrozenDataClassVariable.as_python_constant
  s    &,,JJ&//6;N;NO
 
 &R  $**foo..''))$&DJJ'Ezzz))%**5HHJ5)U33)-5::&KK% ( !42622r^   c                 L   SSK Jn  / n0 nU" U R                  5       Ho  nU R                  UR                  5      R                  5       n[        US5      (       a!  UR                  (       a  XSUR                  '   M^  UR                  U5        Mq     U R                  5       " U0 UD6$ )Nr   r  r  )
r   r  rz   r  r   r   rv   r  rh   r^  )r   r  r  r   r  rc  s         r[   r    FrozenDataClassVariable.as_proxy
  s    &$&DJJ'E&&uzz2;;=Eui((U]]%*uzz"E" ( !42622r^   Nc                     U R                   b  U" U R                   5        g UR                  UR                  U R                  5       5      5        g rV   )r  append_outputcreate_load_const_uncheckedr   )r   codegens     r[   reconstruct#FrozenDataClassVariable.reconstruct
  s@    ;;"DKK //0G0G0IJ	
r^   c                 b    U R                   R                   SU R                  R                   S3$ r   rQ  r   s    r[   r    FrozenDataClassVariable.__repr__
  rS  r^   Tc                     gr   r   r   s    r[   r  *FrozenDataClassVariable.is_python_hashable
  r  r^   c                 l   ^  SSK Jn  [        [        U 4S jU" T R                  5       5       5      5      $ )Nr   r  c              3   v   >#    U  H.  nTR                  UR                  5      R                  5       v   M0     g 7frV   )r  r   r  )r  fr   s     r[   r  :FrozenDataClassVariable.get_python_hash.<locals>.<genexpr>
  s3      .A ""166*::<<.s   69)r   r  r  r   rz   )r   	dc_fieldss   ` r[   r  'FrozenDataClassVariable.get_python_hash
  s1    3 "4::. 
 	
r^   r  c                    ^ ^ [        T[        5      (       d  gT R                  5       TR                  5       La  gSSKJn  [        UU 4S jU" T R                  5       5       5      $ )NFr   r  c              3      >#    U  HH  nTR                  UR                  5      R                  TR                  UR                  5      5      v   MJ     g 7frV   )r  r   r  )r  r  r  r   s     r[   r  :FrozenDataClassVariable.is_python_equal.<locals>.<genexpr>
  sD      
* qvv&66u7J7J1667RSS*s   AA)r   r  r^  r   r  r  rz   )r   r  r  s   `` r[   r  'FrozenDataClassVariable.is_python_equal
  sW    %!899U%6%6%883 
tzz*
 
 	
r^   r   r  rI   rT   N)rs   r   r   r   r  r   rC   r  rW   r   r   r  r   r   r  r   r  r#  r  r   r   r^   r[   r  r  }
  st    0 0 03F 363& 3
H# HGDM 
 


V 

 

r^   r  c            
       f   ^  \ rS rSrS\S\SS4U 4S jjrSSS	\S
\\	   S\
\\	4   S\	4
S jrSrU =r$ )SourcelessGraphModuleVariablei
  rz   r   rT   Nc                 (   > [         TU ]  " U40 UD6  g rV   r   r   r   s      r[   r   &SourcelessGraphModuleVariable.__init__
  s    
 	)&)r^   r   rM   r   r  c                     [         R                  " XR                  R                  R                  5      nU /U-   nUR                  UUU5      $ rV   )rC   r#  rz   forwardr-  r  )r   r   r   r  r   fn_variables         r[   r   )SourcelessGraphModuleVariable.call_method
  sK     &++B

0B0B0K0KLv}--
 	
r^   r   )rs   r   r   r   rW   r   r   r   r   rC   r   r   r   r$  r%  s   @r[   r  r  
  sm    ** * 
	*
#
 
 ?#	

 S/)*
 

 
r^   r  c            
         ^  \ 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
S\
4U 4S jjr\SS j5       r\S\\   4S j5       rSS jr\S\\   4S j5       r\S\R.                  S-  4S j5       rS\
4S jr\R4                  S\R.                  SS4S j5       rSrU =r$ )"UserDefinedExceptionObjectVariablei
  rz   r   rT   Nc                    > [         TU ]  " U40 UD6  UR                  S/ 5      n[        R                  " U R
                  U5      U l        g )Nr<  )r   r   rl   r   ExceptionVariabler9  exc_vt)r   rz   r   r<  r   s       r[   r   +UserDefinedExceptionObjectVariable.__init__
  s=    )&)JJ{B/	11$//9Mr^   .c                     U R                   $ rV   r]  r   s    r[   r  %UserDefinedExceptionObjectVariable.fn
  s    r^   r   rM   r   r  c                   > US:X  aa  U R                  U5      =n(       aI  [        R                  " U5      (       a.  [        U5      S:X  a  [        R
                  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 ])  XX45      $ )Nr   r   rX   r   	__cause____context____suppress_context____traceback__r?   with_traceback)r   r~   r6  r~  r   rO   r   is_constant_matchr  call_setattrr   r   )r   r   r   r  r   r  r   s         r[   r   .UserDefinedExceptionObjectVariable.call_method
  s     J;;DAAA**622Fq --44T::M!D	QQ))],BO  KK$$Ra$q':%%;;**2TBBw"2T::r^   c                 d   > US;   a  U R                   R                  X5      $ [        TU ]  X5      $ )N)r  r  r  r  r  )r  r  r   r  s      r[   r  .UserDefinedExceptionObjectVariable.var_getattr  s7     
 
 ;;**244w"2,,r^   c                 .    U R                   R                  $ rV   )r  r  r   s    r[   r  .UserDefinedExceptionObjectVariable.__context__   s     {{&&&r^   c                 .    U R                   R                  $ rV   )r  r  r   s    r[   r  'UserDefinedExceptionObjectVariable.args%  s    {{r^   c                 8    U R                   R                  U5      $ rV   )r  set_context)r   r  s     r[   r  .UserDefinedExceptionObjectVariable.set_context)  s    {{&&w//r^   c                 .    U R                   R                  $ rV   )r  exc_typer   s    r[   r  +UserDefinedExceptionObjectVariable.exc_type,  s    {{###r^   c                 .    U R                   R                  $ rV   r  python_stackr   s    r[   r  /UserDefinedExceptionObjectVariable.python_stack0  s    {{'''r^   c                 6    U R                   R                  5       $ rV   )r  
debug_reprr   s    r[   r  -UserDefinedExceptionObjectVariable.debug_repr4  s    {{%%''r^   c                 $    XR                   l        g rV   r  )r   rz   s     r[   r  r  7  s    #( r^   )r  )rT   rO   )r  zvariables.ExceptionVariablerT   N)rs   r   r   r   rW   r   r   r.  r   r  r   r   rC   r   r   r  r  r  r  rw   rY   r  	tracebackStackSummaryr  r  r  r   r$  r%  s   @r[   r  r  
  sV   Nf N N N
 HS&[)  ;#; ; ?#	;
 S/)*; 
;4	-5 	-S 	- ' '  d?+    0 $$}- $ $ (i44t; ( ((C ( ))"8"8 )T ) )r^   r  c                      ^  \ rS rSr% Sr\R                  SS0\R                  SSS.0r\	\
\	\\4   4   \S'   \S	\S
\4S j5       r\S	\S
\4S j5       rSSS\S
\4U 4S jjrSrU =r$ )InspectVariablei<  zHandles inspect.Signature and inspect.Parameter objects.

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

parametersr9  _kind_name)kindr   _PROPERTY_REDIRECTSrq   rT   c                 :    [        U 5      [        R                  ;   $ rV   )rw   r  r  rx   s    r[   is_matching_object"InspectVariable.is_matching_objectH  s    CyO????r^   c                 (    U [         R                  ;   $ rV   )r  r  rx   s    r[   is_matching_class!InspectVariable.is_matching_classL  s    o9999r^   r   rM   r   c                    > U R                   R                  [        U R                  5      0 5      nX#;   a  [        TU ]  XU   5      $ [        TU ]  X5      $ rV   )r  rl   rw   rz   r   r  )r   r   r   	redirectsr   s       r[   r  InspectVariable.var_getattrP  sN    ,,00djj1A2F	7&rT?;;w"2,,r^   r   )rs   r   r   r   r  r~   	Signature	Parameterr  r   rw   r   r   r+  rW   r#  r  r  rC   r  r   r$  r%  s   @r[   r  r  <  s     	L-8GW=7dDcN23 
 @ @4 @ @ :v :$ : :-5 -S -_ - -r^   r  c                   p   ^  \ rS rSr\S\S\4S j5       rS\S\SS4U 4S jjr	S	S
S\
S\4U 4S jjrSrU =r$ )KeyedJaggedTensorVariableiW  rq   rT   c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorchrec.sparse.jagged_tensor)rj   rk   rl   rw   KeyedJaggedTensorrq   mods     r[   r  ,KeyedJaggedTensorVariable.is_matching_objectX  s3    kkoo=>$E490E0E#EEr^   rz   r   Nc                 T   > SSK Jn  [        U5      UL d   e[        TU ]  " U40 UD6  g )Nr   )r  )torchrec.sparse.jagged_tensorr  rw   r   r   )r   rz   r   r  r   s       r[   r   "KeyedJaggedTensorVariable.__init__]  s/    	
 E{////)&)r^   r   rM   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      r[   r  %KeyedJaggedTensorVariable.var_getattre  sg    MM  TT'>>%%$Ow*24 POw"2,, POs   A::
Br   )rs   r   r   r   r+  rW   r#  r  r   r   r   rC   r  r   r$  r%  s   @r[   r  r  W  sa    F F4 F F*f * * *-5 -S -_ - -r^   r  _constant_base_methodsc                   X   ^  \ rS rSrSrS\S\SS4U 4S jjrS\4S jrS\4S	 jr	S
r
U =r$ )UserDefinedConstantVariableiw  z
Represents user-defined objects that subclass immutable constant types
(int, float, str).

Uses a ConstantVariable as _base_vt for the underlying constant value.
rz   r   rT   Nc                    > SSK Jn  [        TU ]  " U40 UD6  [	        U5      R
                   H:  nU[        ;   d  M  UR                  " U" U5      5      U l        [        U   U l
          O   U R                  c   eg )Nr?   rN   )r   rO   r   r   rw   r   _CONSTANT_BASE_TYPESr   r7  r  r8  )r   rz   r   rO   r   r   s        r[   r   $UserDefinedConstantVariable.__init__  sm    .)&)K''D++ 0 7 7U D%;D%A"	 (
 }}(((r^   c                     U R                   $ rV   r   r   s    r[   r   .UserDefinedConstantVariable.as_python_constant  r   r^   c                 T    U R                   c   eU R                   R                  5       $ rV   )r7  r   r   s    r[   r   $UserDefinedConstantVariable.as_proxy  s%    }}(((}}%%''r^   r8  r7  )rs   r   r   r   r  r   r   r   rW   r   r   r$  r%  s   @r[   r  r  w  s?    	)c 	)S 	)T 	)C (& ( (r^   r  c                   0    \ rS rSr\S\S\4S j5       rSrg)IntWrapperVariablei  rq   rT   c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorch.export.dynamic_shapes)rj   rk   rl   rw   _IntWrapperr  s     r[   r  %IntWrapperVariable.is_matching_object  s1    kkoo;<$?49#??r^   r   N)	rs   r   r   r   r+  rW   r#  r  r   r   r^   r[   r  r    s(     @ @4 @ @r^   r  c            
          ^  \ rS rSrSr  SS\S-  S\S-  S\SS4U 4S jjjrS	S
S\	S\
\   S\\	\4   S\4
U 4S jjrSU 4S jjrS\\   4S jrSrU =r$ )RemovableHandleVariablei  Nr|  r+  r   rT   c                 >   > [         TU ]  " S0 UD6  Xl        X l        g )Nr   )r   r   r|  r+  )r   r|  r+  r   r   s       r[   r    RemovableHandleVariable.__init__  s      	"6"*r^   r   rM   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+  REMOVEDre  r  remove_hookr   rO   r   r   r   r   r   r   r  r   r   s        r[   r   #RemovableHandleVariable.call_method  s}     8xx4<<'xx+++		&&22488<<<--44T::w"2T::r^   c                    >^ U R                   U R                  :X  a1  TR                  U4S j5        TR                  [	        SS5      5        g [
        TU ]  T5        g )Nc                  (   > T R                  SS5      $ )Nztorch._dynamo.utilsinvalid_removeable_handle)load_import_from)r  s   r[   <lambda>5RemovableHandleVariable.reconstruct.<locals>.<lambda>  s    00)+Fr^   r   F)r+  r"  add_push_nullextend_outputr   r   r  )r   r  r   s    `r[   r  #RemovableHandleVariable.reconstruct  sN    88t||#!!
 !!"6q%"@AG$r^   c                     [         $ rV   )r-  r   s    r[   r^  #RemovableHandleVariable.python_type  s    ##r^   )r+  r|  r  r  )rs   r   r   r   r"  r@   r   r   r   r   r   rC   r   r   r  rw   rW   r^  r   r$  r%  s   @r[   r  r    s    G .2		#d*	 4Z		
 	 
	 	;#; ; ?#	;
 S/)*; 
;%$T&\ $ $r^   r  c            
          ^  \ rS rSrSr SS\S\S-  S\SS4U 4S jjjrS	S
S\	4S jr
S	S
S\	S\	4U 4S jjrS	S
S\S\\	   S\\\	4   S\	4
U 4S jjrSrU =r$ )UserDefinedDictVariablei  z
Represents user defined objects that are subclasses of dict/OrderedDict.

Internally, it uses a ConstDictVariable to represent the dict part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
Nrz   r  r   rT   c                 .  > [         TU ]  " U40 UD6  Uc`  U R                  b   S5       e[        0 [	        U[
        R                  5      (       a  [
        R                  O[        [        5       S9U l	        OX l	        [        U l        U R                  c   eg )Nz@dict_vt must be constructed by builder.py when source is present)user_clsr|  )r   r   r  rD   r   r  r  r   rB   r7  r-   r8  )r   rz   r  r   r   s       r[   r    UserDefinedDictVariable.__init__  s     	)&)?;;& R& . "%)@)@AA  ++.0DM $M)}}(((r^   r   rM   c                 $    U R                  U5      $ rV   )rQ  rL  s     r[   rM  !UserDefinedDictVariable.sq_length  s     ~~b!!r^   r  c                 v  > U R                  S5      nX0R                  ;   a+  U R                  c   e U R                  R                  X5      $ [        TU ]  X5      $ ! [         aR    [        U R                  5       [        5      (       a-  U R                  S5      (       a  U R                  USU/0 5      s $ e f = fNr  __missing__)
r   r8  r7  r  r   r   r^  r   r   r   )r   r   r  r  r   s       r[   r  )UserDefinedDictVariable.mp_subscript_impl  s     11-@'''==,,,}}66r?? w(11 $ $$& 66}EE++BubIIs   A AB86B8r   r  c                 N  > US:X  aa  U R                  S5      U R                  ;   aB  U R                  S5      (       a,  U R                  c   e U R                  R                  XX45      $ [        TU ]  XX45      $ ! [         a!    [        U5        U R                  USX45      s $ f = fr9  )r   r8  r7  r   r   r   r   r$  s        r[   r   #UserDefinedDictVariable.call_method  s     M!00?4CUCUU00??==,,,I}}004HH w"2T:: $ I)"-''M4HHIs   A9 9(B$#B$r  rV   )rs   r   r   r   r  rW   rD   r   r   rC   rM  r  r   r   r   r   r   r$  r%  s   @r[   r2  r2    s     -1)) #T)) 	)
 
) )2"3 " "
2#2 2 
	2*;#; ; ?#	;
 S/)*; 
; ;r^   r2  c            	          ^  \ rS rSrSr SS\S\S-  S\SS4U 4S jjjrS\4S	 jr	\
S\\   4S
 j5       r\
S\\\4   4S j5       rS\S\4S jrSrU =r$ )UserDefinedSetVariablei  z
Represents user defined objects that are subclasses of set.

Internally, it uses a SetVariable to represent the set part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
Nrz   set_vtr   rT   c                 j  > SSK Jn  UR                  SS 5      n[        TU ]  " U40 UD6  [        U[        5      (       a  [        O[        nU[        L a  [        O[        U l
        Uc  U R                  b   S5       eU[        L a+  [        R                  " [        5       [        5       S9U l        OtUR!                  S0 5      nUc2  ["        R$                  R&                  R(                  R+                  5       nUR-                  XV5      R/                  XW0 5      U l        OX l        U R                  c   eg )Nr?   rq  r   z?set_vt must be constructed by builder.py when source is presentr{  r<  )rd  rr  popr   r   r   r   r   r;   r.   r8  r  r   rG   rB   r7  rl   r   r  symbolic_convertrM   rl  r   r  )	r   rz   r@  r   rr  r   r^  r<  r   s	           r[   r   UserDefinedSetVariable.__init__&  s    	/ZZd#)&)'s33c,73,>[DU>;;& Q& c! ) 5 5E"2"4!
 #JJ{B7	:77MMXXZB 1 8 8 I W W2! #M}}(((r^   c                 T    U R                   c   eU R                   R                  5       $ rV   )r7  r   r   s    r[   r   )UserDefinedSetVariable.as_python_constantF  s%    }}(((}}//11r^   c                 L    U R                   c   eU R                   R                  $ rV   )r7  	set_itemsr   s    r[   rH   UserDefinedSetVariable.set_itemsJ  s"    }}(((}}&&&r^   c                 L    U R                   c   eU R                   R                  $ rV   r7  r  r   s    r[   r  UserDefinedSetVariable.itemsO  "    }}(((}}"""r^   r  c                     U R                   c   e[        U[        5      =(       a%    U R                   R                  UR                   5      $ rV   )r7  r   r?  r  r  s     r[   r  &UserDefinedSetVariable.is_python_equalT  s@    }}((()
 <mm++ENN;	<r^   r  rV   )rs   r   r   r   r  rW   rG   r   r   r   r.  r   rH  r   rF   rC   r  r#  r  r   r$  r%  s   @r[   r?  r?    s     ;?))%04%7)JM)	) )@2F 2 '3s8 ' ' #tO_<= # #<V < < <r^   r?  c            	       L   ^  \ rS rSrSr SS\S\S   S\SS4U 4S	 jjjrS
r	U =r
$ )UserDefinedListVariablei[  z
Represents user defined objects that are subclasses of lists.

Internally, it uses a ListVariable to represent the list part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
Nrz   list_vt)rQ   Nr   rT   c                    > SSK Jn  [        TU ]  " U40 UD6  Uc)  U R                  b   S5       eU" / [        5       S9U l        OX l        [        U l        U R                  c   eg )Nr?   r  z@list_vt must be constructed by builder.py when source is presentr{  )	r  rQ   r   r   r  rB   r7  r5   r8  )r   rz   rR  r   rQ   r   s        r[   r    UserDefinedListVariable.__init__d  sj     	()&)?;;& R& );K;MNDM#M)}}(((r^   r  rV   )rs   r   r   r   r  rW   r	   r   r   r   r$  r%  s   @r[   rQ  rQ  [  s?     EI))&+,@&A)TW)	) )r^   rQ  c            
         ^  \ rS rSrSrS1\R                  kr\S\S\S    4S j5       r	SU 4S jjr
\S\\   4S	 j5       rS
SS\S\\   S\\\4   S\4
U 4S jjrSS jrS\S\4   4S jrSSS\S    S-  4S jrS\\   SS 4S jrS\4S jr            S U 4S jjr              S!U 4S jjrS\S\4S jrSrU =r$ )"UserDefinedTupleVariableiu  ad  
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.

NamedTupleVariable and StructSequenceVariable are subclasses that handle
namedtuples and structseqs (torch.return_types.*) respectively.
	tuple_clsclsrT   c                 :    [        U 5      (       a  [        $ [        $ rV   )r   StructSequenceVariableNamedTupleVariable)rX  s    r[   
get_vt_cls#UserDefinedTupleVariable.get_vt_cls  s    c""))!!r^   Nc                   > SSK Jn  UR                  SS 5      n[        T	U ]  " U4SU0UD6  Uce  U R
                  b   S5       eU(       d   S5       eUc  SSKJn  UR                  " 5       nUS   R                  U5      nU" U[        5       S	9U l        OX l        [        U5      U l        [        U l        U R                  c   eg )
Nr?   r  r   r<  zAtuple_vt must be constructed by builder.py when source is presentz0init_args must be provided when tuple_vt is Noner   rL   r{  )r  rR   rB  r   r   r  rk  rM   rl  r  rB   r7  rw   rW  r=   r8  )
r   rz   tuple_vtr<  r   rR   r   rM   elemsr   s
            r[   r   !UserDefinedTupleVariable.__init__  s    (ZZd#>)>v>;;& S& PPP9
 zP*557aL::2>E)%?O?QRDM$Me*}}(((r^   c                 L    U R                   c   eU R                   R                  $ rV   rK  r   s    r[   r  UserDefinedTupleVariable.items  rM  r^   r   rM   r   r  r   c                 j  > US:X  aI  [        U5      S:w  d  U(       a  [        S5      e[        R                  " XR	                  US   5      5      $ US:X  aN  [        U5      S:w  d  U(       a  [        S5      e[        R                  " XR	                  US   5      (       + 5      $ [
        TU ]  XX45      $ )Nrv  r?   zImproper arguments for method.r   rw  )r~  
ValueErrorrC   r#  r  r   r   r$  s        r[   r   $UserDefinedTupleVariable.call_method  s     84yA~ !ABB"((-A-A$q'-JKKX4yA~ !ABB"((1E1Ed1g1N-NOOw"2T::r^   c                    ^^ U R                   b   eU R                  5       mTR                  UU4S j5        T" U R                  5        TR	                  [        SS5      5        g )Nc                  D   > T R                  T R                  T5      5      $ rV   )r  r  )r  	create_fns   r[   r*  6UserDefinedTupleVariable.reconstruct.<locals>.<lambda>  s    G))33I>r^   r?   F)r  get_construct_fnr,  r7  r-  r   )r   r  ri  s    `@r[   r  $UserDefinedTupleVariable.reconstruct  sZ     {{"""))+		

 	21e<=r^   .c                     [         erV   )r  r   s    r[   rk  )UserDefinedTupleVariable.get_construct_fn  s    !!r^   rw  r  c                     / n[        U R                  5      nU H]  n[        U[        5      (       a2  [        UR                  5      U:w  d  UR                  U R                  La    gUR                  U5        M_     U$ )z>Validate that rest args are compatible for tree_map fast-path.N)r~  r  r   rV  rW  rh   )r   rw  othersn	candidates        r[   _validate_rest_for_tree_map4UserDefinedTupleVariable._validate_rest_for_tree_map  sg     24

OIy*BCCy'1,&&dnn<MM)$  r^   	new_itemsc                 r    SSK Jn  U" U[        5       S9n[        U 5      " U R                  U[        5       S9$ )Nr?   r  r{  )r_  r|  )r  rR   rB   rw   rz   )r   ru  rR   r_  s       r[   _make_tree_map_result.UserDefinedTupleVariable._make_tree_map_result  s8     	) :J:LMDzJJ*,
 	
r^   c                 j    SSK Jn  U" U R                  5      =(       d    [        U R                  5      $ )Nr   )ro  )r@  ro  rW  r   )r   ro  s     r[   _is_pytree_node(UserDefinedTupleVariable._is_pytree_node  s#    ;"4>>2X6H6XXr^   c           
        > U R                  5       (       d  [        TU ]	  XX4U5      $ U R                  U5      nUc  U R	                  XX4U5      $ / n[        U R                  5       HE  u  pU V
s/ s H  oR                  U   PM     nn
UR                  U	R                  XX;U5      5        MG     U R                  U5      $ s  sn
f rV   )
rz  r   r~  rs  rp  r$  r  rh   call_tree_maprw  )r   r   ru  rv  rw  rx  rp  ru  r+  r  osibling_leavesr   s               r[   r~  -UserDefinedTupleVariable.call_tree_map_branch  s     ##%%7/  11$7>**  ,.	"4::.IC4:;FqggclFN;""V_ / )))44 <s   /C c                   > U R                  5       (       d  [        TU ]	  XX4XV5      $ U R                  U5      nUc  U R	                  XX4XV5      $ [        U R                  5      n/ n	[        U R                  5       HY  u  pU Vs/ s H  oR                  U
   PM     nnU[        X   5      4-   nU	R                  UR                  UUUUUU5      5        M[     U R                  U	5      $ s  snf rV   )rz  r   r  rs  r  r6   rW  r$  r  r   rh   call_tree_map_with_pathrw  )r   r   ru  rv  rw  rx  r  rp  r  ru  r+  r  r~  r  child_keypathr   s                  r[   r  7UserDefinedTupleVariable.call_tree_map_with_path_branch  s     ##%%79  11$7>44  #4>>2+-	"4::.IC4:;FqggclFN;#z&+'>&@@M,,"#!	 / )))44 <s   C)r  c                     U R                   c   e[        U[        5      (       a  UR                   OUnU R                   R                  U5      $ rV   )r7  r   rV  r  r  s     r[   r  (UserDefinedTupleVariable.is_python_equal5  s@    }}(((",U4L"M"MSX}},,U33r^   )r8  r7  rW  r  r  r  r  ) rs   r   r   r   r  r3  r  r+  rw   r\  r   r.  r   rC   r  r   r   r   r  r   r   rk  rs  rw  r#  rz  r~  r  rW   r  r   r$  r%  s   @r[   rV  rV  u  s   	 		"	1	1N
 " "&@!A " "
)4 #tO, # #;#; ; ?#	;
 S/)*; 
;">&"(38"4 "?	(	)D	0 

o.

	#

Y Y
5#5 @5 "	5
 :5 65 
5:#5##5 @#5 "	#5
 :#5 6#5 ##5 
#5J4V 4 4 4r^   rV  c            
       ~   ^  \ rS rSrSrSSS\S\S\S-  S	\4
U 4S
 jjr	S	\
S\4   4S jrS	\4S jrS	\4S jrSrU =r$ )r[  i;  zRepresents Python namedtuples (created via collections.namedtuple).

Namedtuples use _tuplegetter descriptors for field access and
Type(*args) / Type._make(iterable) for construction.
r   rM   r   r  r  NrT   c                    > [        U[        R                  5      (       a$  UR                  5       u  nu  peU R                  U   $ [
        TU ]  XX45      $ rV   )r   r1  r2  
__reduce__r  r   r6  )r   r   r   r  r  _r+  r   s          r[   r6  *NamedTupleVariable.resolve_data_descriptorB  sN     i!:!:;; $..0KAx::c?"w.rKKr^   .c                 .    U R                   R                  $ rV   )rW  _maker   s    r[   rk  #NamedTupleVariable.get_construct_fnQ  s    ~~###r^   c                 |    U R                    Vs/ s H  oR                  5       PM     nnU R                  " U6 $ s  snf rV   r  r   rW  r   r  r  s      r[   r   %NamedTupleVariable.as_python_constantT  s5    15<A%%'<~~u%% =   9c                 |    U R                    Vs/ s H  oR                  5       PM     nnU R                  " U6 $ s  snf rV   r  r   rW  r  s      r[   r   NamedTupleVariable.as_proxyX  s2    '+zz2z!z2~~u%% 3r  r   rs   r   r   r   r  r   rW   r   rC   r6  r   r   rk  r   r   r   r$  r%  s   @r[   r[  r[  ;  sy    L#L L 	L
 L 
L$(38"4 $&C &&# & &r^   r[  c            
       ~   ^  \ rS rSrSrSSS\S\S\S-  S	\4
U 4S
 jjr	S	\
S\4   4S jrS	\4S jrS	\4S jrSrU =r$ )rZ  i]  zRepresents C-implemented PyStructSequence types (torch.return_types.*).

Structseqs use Type(iterable) calling convention and reject tuple.__new__.
r   rM   r   r  r  NrT   c                    > [        U[        R                  5      (       a8  [        U R                  5      nX%;   a  U R
                  UR                  U5         $ [        TU ]!  XX45      $ rV   )	r   r  MemberDescriptorTyper6   rW  r  indexr   r6  )r   r   r   r  r  r  r   s         r[   r6  .StructSequenceVariable.resolve_data_descriptorc  sW     i!;!;<< 't~~6F~zz&,,t"455w.rKKr^   .c                     U R                   $ rV   )rW  r   s    r[   rk  'StructSequenceVariable.get_construct_fns  s    ~~r^   c                     U R                    Vs/ s H  oR                  5       PM     nnU R                  U5      $ s  snf rV   r  r  s      r[   r   )StructSequenceVariable.as_python_constantv  s5    15<A%%'<~~e$$ =   ;c                     U R                    Vs/ s H  oR                  5       PM     nnU R                  U5      $ s  snf rV   r  r  s      r[   r   StructSequenceVariable.as_proxyz  s2    '+zz2z!z2~~e$$ 3r  r   r  r%  s   @r[   rZ  rZ  ]  sy    
L#L L 	L
 L 
L (38"4 %C %%# % %r^   rZ  c                      ^  \ rS rSrS\S\SS4U 4S jjr SSSS	\S\S
\S\4
U 4S jjjr	SSS	\
S\4U 4S jjrSSS\4U 4S jjrSrU =r$ )MutableMappingVariablei  rz   r   rT   Nc                 (   > [         TU ]  " U40 UD6  g rV   r  r   s      r[   r   MutableMappingVariable.__init__  s    )&)r^   r   rM   r   r  c                   > [        U[        R                  5      (       a  [        UR                  [        5      (       a  UR                  n[
        R                  " [        U R                  5      US5      n[        U[        5      (       ar  UR                  be  SnU R                  (       a  U R                  X5      n[        US5      n[        R                  " XR                  U5      n	U	R                  XU/0 5      $ [         T
U ]E  XX45      $ )a  Override to handle property setters on MutableMapping subclasses.

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

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

TODO(compiler): This fix is scoped to MutableMapping only because tracing
property setters on ALL UserDefinedObjectVariable can cause failures when
the fset calls untraceable C++ functions (e.g., pybind functions). Ideally,
this should be extended to all user-defined classes with a graceful fallback
when tracing the fset hits an untraceable function.
See: https://github.com/pytorch/pytorch/issues/172000
Nr  )r   r   rO   rz   r   r~   r   rw   r.  r  r:  r  r"   rC   r#  r  r   r  )r   r   r   rz   r  r  r=  r  r  fset_vtr   s             r[   r  .MutableMappingVariable.method_setattr_standard  s    2 dI6677JtzzSV<W<WzzH //TZZ0@(DQJ*h//JOO4O"??"&"@"@"NK",[&"AK)//OO[Q,,RCCw.rUUr^   c                 "  > US:X  az  [        U R                  5      R                  [        R                  R
                  R                  [        R                  4;   a%  [        R                  " [        R                  U 5      $ [        TU ]1  X5      $ )Nrl   )rw   rz   rl   r  abcMappingr   r   r  r   mapping_getr   r  r  s      r[   r  "MutableMappingVariable.var_getattr  sl    
 5=T$**-11OO##''HH6
 
 //	0E0EtLL7&r00r^   c                    > U R                  S5      [        ;   a*  [        R                  " U[	        U R
                  5      5      $ [        TU ]  U5      $ r  )r   r-   rC   r#  r~  rz   r   rQ  )r   r   r   s     r[   rQ   MutableMappingVariable.mp_length  sA    ++I6,F"((S_==w $$r^   r   r  )rs   r   r   r   rW   r   r   rC   r#  r  r   r  rQ  r   r$  r%  s   @r[   r  r    s    *f * * * &+$V#$V $V 	$V
 #$V 
$V $VL15 1S 1_ 1%3 % % %r^   r  c                       \ rS rSrSrg)r  i  r   Nr.  r   r^   r[   r  r    s    r^   r  )r  r1  r   r  r  r   r   r  r~   r  rj   r  r  r  r  r  collections.abcr   r   r   typingr   r   r   r	   typing_extensionsr
   torch._dynamo.configr   torch.nntorch._guardsr   r   torch.utils._python_dispatchr   r@  r   r   r$  r   r   r   r   bytecode_transformationr   create_parameter_opr   excr   r   r   r   r   r   r   r   r  r   guardsr    r!   r  r"   r#   r$   r%   r&   r'   r(   r)   r*   rA  r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r@   rA   rB   rC   dictsrD   rE   hashablerF   setsrG   numpyr  ModuleNotFoundErrortorch.utils._cxx_pytreerH   ri   rw   torch._dynamo.codegenrI   torch._dynamo.side_effectsrK   rk  rM    torch._dynamo.variables.constantrO   rP   r  rQ   rR   rW   r#  r\   ra   rp   ry   r   r   r.  r2  r  GetSetDescriptorTyper   r   r   r   r   r'  r-  r   r   r5  r3  r  r  r  r  r  r   r   r  r}   r  ru   r  r   r  r  r  r2  r?  rQ  rV  r[  rZ  r  r  )tro   s   00r[   <module>r     s  .          
      8 8 5 5 *   0 K > > > : F	 	 	 A 0
 
 
     , R Q 9 % 2
 /6DA)2BV B BBV B Bf  $F t V   09!!""""	0 Yt_ F t 
/ 
z2 zz7(@ 74	 	SScS ?
#S o%&	S
 S,{
 3 {
|+Y
7 Y
x
$= 
0H))B H)V-/ -6- 9 -2 UC(  AU0@T11::$$&6&a(1+&66@T0 T3s8^, 
("; (6@2 @+$o +$\Q;7 Q;h;<6 ;<|)7 )4C48 C4L&1 &D%5 %D:%6 :%z	. 	gj  	B
  dJJX 70sB   L L- $M1MMML*)L*-L?>L?M