
    piY                       d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlZddlZddlmZ ddlmZ ddlmZmZmZ dd	lm Z  dd
l!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZO ddlPmQZQ ddlRmSZS 	 ddlTZU	 ddlWmXZX erddl[m\Z\ ddl]m^Z^ d Z_d Z`d Zad Zb G d deO      Zc G d dec      Zd G d ded      Ze G d  d!      Zfd" Zg G d# d$ec      Zh G d% d&eh      Zi G d' d(eh      Zj G d) d*eh      Zk G d+ d,eh      Zl G d- d.eh      Zm G d/ d0      Zn G d1 d2eO      Zo G d3 d4eh      Zp G d5 d6eh      Zq G d7 d8eh      Zr G d9 d:eh      Zs G d; d<eh      Zt G d= d>eh      Zuy# eV$ r dZUY w xY w# eY$ r  eZd      ZXY w xY w)?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)TYPE_CHECKING)is_typeddict)TracingContext)"is_traceable_wrapper_subclass_type   )graph_break_hints	polyfills	variables)create_call_function)$do_not_convert_to_tracable_parameter)handle_observed_exceptionObservedAttributeErrorObservedKeyErrorObservedTypeErrorObservedUserStopIterationraise_observed_exceptionunimplemented_v2)GuardBuilderinstall_guard)

AttrSourceCallFunctionNoArgsSourceDataclassFieldsSourceDictGetItemSourceGetItemSourceRandomValueSourceTypeDictSourceTypeMROSource
TypeSourceUnspecializedParamBufferSource)check_constant_argscmp_name_to_op_mappingdict_methodsfrozenset_methodsget_custom_getattrhas_torch_functionis_frozen_dataclassis_lru_cache_wrapped_functionis_namedtuple_clsis_wrapper_or_member_descriptoristypelist_methodsnamedtuple_fieldsobject_has_getattributeproxy_args_kwargsset_methodstensortype_to_dtypetuple_methodsunpatched_nn_module_getattr   )ValueMutationNewVariableTracker)DefaultDictVariable)SizeVariable)
PyTreeSpec)	PyCodegenInstructionTranslatorc                 F    | t         j                  t        j                  fv S N)object__setattr__BaseExceptionvals    f/opt/services/ai/voice_agent/venv/lib/python3.12/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrrD   t       6%%}'@'@AAA    c                 F    | t         j                  t        j                  fv S r=   )r>   __delattr__r@   rA   s    rC   is_standard_delattrrI   x   rE   rF   c                    g }	 ddl m} ddlm} |j	                  |       |j	                  |       t        j                  j                  d      x}r|j	                  |j                         | |v S # t
        $ r Y Kw xY w)Nr   )RaisesContext)WarningsCheckerz!torch.testing._internal.jit_utils)
_pytest.python_apirK   _pytest.recwarnrL   appendImportErrorsysmodulesget&_AssertRaisesRegexWithHighlightContext)ctxf_ctxsrK   rL   ms        rC   is_forbidden_context_managerrX   |   su    F43m$o& KKOO?@@q@a>>?&=  s   .A2 2	A>=A>c                 z    t        |       xr/ t        t        |       d      xr t        |       j                  dk(  S )N__name__cython_function_or_method)callablehasattrtyperZ   )objs    rC   is_cython_functionr`      s9     	>DIz*	>I"==rF   c                       e Zd ZU eed<   y)UserDefinedVariablevalueN)rZ   
__module____qualname__r>   __annotations__ rF   rC   rb   rb      s    MrF   rb   c                   p    e Zd ZU ee   ed<   d fdZd Zd Zde	fdZ
eej                  d               Zeej                  d               Zeej                  d	               Zed
        Zd ZddZddde	ddf fdZddZ	 	 	 	 	 	 d fdZ	 	 	 	 	 	 	 	 d fdZd Zddde	ddf fdZd fdZ xZS )UserDefinedClassVariablerc   returnc                 @    t        |   di | || _        d| _        y )NFrg   )super__init__rc   ban_mutationselfrc   kwargs	__class__s      rC   rm   z!UserDefinedClassVariable.__init__   s$    "6"
 "rF   c                     | j                   S r=   rc   rp   s    rC   as_python_constantz+UserDefinedClassVariable.as_python_constant       zzrF   c                     | j                   S r=   rt   ru   s    rC   as_proxyz!UserDefinedClassVariable.as_proxy   rw   rF   c                 N    | j                   j                   d| j                   dS N())rr   rZ   rc   ru   s    rC   __repr__z!UserDefinedClassVariable.__repr__   s$    ..))*!DJJ<q99rF   c                  ~    t         j                  t         j                  t         j                  t         j                  hS r=   )torchdevicefinfoiinfoSizerg   rF   rC   _constant_fold_classesz/UserDefinedClassVariable._constant_fold_classes   s*     LLKKKKJJ	
 	
rF   c                     t         j                  t         j                  j                  t         j                  j                  t         j                  j
                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  t         j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  h} t        t         d      rC| j!                  t         j"                  j                  t         j"                  j                  h       t%        t'        j(                               | z  S )Nhpu)r   TensorcudaFloatTensorDoubleTensor
HalfTensorBFloat16Tensor
ByteTensor
CharTensor	IntTensorShortTensor
LongTensorStreamEventxpur]   updater   setr0   keys)_in_graph_class_lists    rC   _in_graph_classesz*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ErF   c            	         t        t              D  cg c]X  } t        t        t        |       t              r8t        t        t        |       t              rt        t        |       j                  Z }} t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  hj                  |      S c c} w r=   )dirbuiltins
isinstancegetattrr^   
issubclassr@   __new__r>   dictr   	frozensettuplelistunion)name
exceptionss     rC   supported_c_new_functionsz2UserDefinedClassVariable.supported_c_new_functions   s    
 H
'(D14878T2MB Hd#++

 
 NNLLKKMMLL
 %

	
s   ACc                 .    | t         j                         v S r=   )ri   r   rt   s    rC   is_supported_new_methodz0UserDefinedClassVariable.is_supported_new_method   s     0JJLLLrF   c                 :    | j                   | j                         v S r=   )rc   r   ru   s    rC   can_constant_fold_throughz2UserDefinedClassVariable.can_constant_fold_through   s    zzT88:::rF   txr;   c                    |j                   j                  j                  | |      rC|j                   j                  j                  | |d      }t	        |t
        j                         S || j                  j                  v S NT
deleted_ok	outputside_effectshas_pending_mutation_of_attr	load_attrr   r
   DeletedVariablerc   __dict__rp   r   keymutated_attrs       rC   has_key_in_generic_dictz0UserDefinedClassVariable.has_key_in_generic_dict   i    99!!>>tSI9911;;D#RV;WL!,	0I0IJJJdjj))))rF   r   r5   c                 	   ddl m}m} | j                  t	        | j                  |      nd }|dk(  r%|j                  | j                  j                        S |dk(  r%|j                  | j                  j                        S |dk(  rd|i}t        j                  | |fi |S |dk(  rN| j                  xr t        | j                        }t        j                  || j                  j                  |      S | j                  t        j                   t        j"                  hv r|dk(  rt$        
| M  ||      S 	 t)        j*                  | j                  |      }|d	k(  r%t2        j5                        rt$        
| M  ||      S |t6        v r2t9        t:        j<                        st        j                  | ||
      S t9        t>              r0t        j                  ||jA                  | j                        |      S t9        |tB              rwt9        |jD                  tF              r;t        jH                  |jD                  jJ                        jM                  || gi       S t        jN                  |jD                  | |
      S t9        |t:        jP                        r3|jA                  d | j                        }	t        j                  ||	|      S |rEt)        jR                  |      r0t        j                  ||jA                  | j                        |      S |jU                  |      r|j                  |      S t9        |tV        jX                        r ||      S | j                  t        j                   u rt        j                  | |      S |t[        | j                  di       v s>| j                  j\                  j_                  d      s| j                  j\                  dk(  r|rt        j                  |||      S |r7t)        j`                  |      s"tc        |      st        j                  |||      S t$        
| M  ||      S # t,        $ r2 t/        | j                        t.        u rt1        t,        |       nd }Y (w xY w)Nr3   )ConstantVariableEnumVariablerZ   re   r   source__mro__fromkeysr   r   ztorch.r   )2 r   r   r   r   createrc   rZ   re   r
   GetAttrVariabler   r5   buildr   collectionsOrderedDictdefaultdictrl   var_getattrinspectgetattr_staticAttributeErrorr^   r   ri   r   r!   r   typesFunctionTypestaticmethod__get__classmethod__func__propertyUserFunctionVariablefgetcall_functionUserMethodVariableClassMethodDescriptorTypeismemberdescriptor
is_literalenumEnumr   rd   
startswithismethoddescriptorr)   )rp   r   r   r   r   r   optionsattr_sourcer_   funcrr   s             rC   r   z$UserDefinedClassVariable.var_getattr   s   426++2IDKK.t:#**4::+>+>??^##**4::+B+BCCZ(G,,T4C7CCY++D-*DK"((TZZ-?-?MM JJ;22K4K4KLL
"7&r400	((T:C 9!9!Q!QRU!V7&r400))*S%BTBT2U,,T4GGc<("((S[[-DfMM[)#,,1 55cll6G6GHVV  //d6RRU<<= ;;tTZZ0D"((T6::))#.&,,RTZZ1H&QQ&&s+#**3//TYY'$$ZZ;222,,T488WTZZR88JJ!!,,X6zz$$/&,,Rf== ..s33C8"((S&99w"2t,,g  	DJJ4'(< 	s   7 Q 7R ?R c                 B  	
 ddl m} |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      fd} ||i |\  	
	
fd}t        j                  |      S )	aj  
        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
        r3   r   Nimeang        c                     | |||||fS r=   rg   )weightsize_averageignore_indexreduce	reductionlabel_smoothings         rC   normalize_argszIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_argsW  s       rF   c                     ddl m}  | j                  j                  dt        j
                  j                  j                  gt        | |	gi              S )Nr3   wrap_fx_proxyr   r   proxy)	builderr   r   create_proxyr   nn
functionalcross_entropyr.   )
inputtargetr   r   r   
reduce_argr   r   r   r   s
      rC   fake_cross_entropy_losszRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_lossq  sq    . ,bii,,#HH''55 '!""((&%+	  rF   )r   r   r   r
   LambdaVariable)rp   r   argsrq   r   r   r   r   r   r   r   r   r   s    `     @@@@@@rC   _call_cross_entropy_lossz1UserDefinedClassVariable._call_cross_entropy_lossK  s     	' $**40)006)006#**40&--f5,33C8	0 D+F+	
	 	0 ''(?@@rF   c                 n   |dk(  rt        |      dk(  r|sd| j                  j                  vrh| j                  }| j                  r!t	        | j                  d      }t        |      }t        j                  || j                  j                         |      S | j                  t        j                  t        j                  hv r,|dk(  r'ddlm}  |j                  || j                  g|i |S | j                  t        j                  u r!|dk(  r|d   j                  ||g |dd  |      S |dk(  rLt        |      dk(  r>t!        |d   d      r/t#        j$                  | j                  |d   j                  k(        S |d	k(  rLt        |      dk(  r>t!        |d   d      r/t#        j$                  | j                  |d   j                  k7        S t'        | j                  t(              r0|d
k7  r+t#        j                  t(              j                  ||||      S t'        | j                  t*        t,        f      r0|d
k7  r+t#        j                  t*              j                  ||||      S |d
k(  r| j                  t        j                  u rt/        |d   t0              rm|d   j                  t        j                  u rNt        |      dk(  sJ t        |      dk(  sJ t#        j2                  i t        j                  t5                     S |d
k(  rVt0        j7                  | j                  j8                        r-|j:                  j<                  j?                  | |d   |dd        S |dk(  r<| j@                  r0tC        dtE        | j                        dtF        jH                         tJ        | =  ||||      S )N__subclasses__r   r   r3   )BuiltinVariablemove_to_end__eq__rc   __ne__r   mutation_typer?   zCClass attribute mutation when the __dict__ was already materializedzVDyanmo does not support tracing mutations on a class when its __dict__ is materializedgb_typecontextexplanationhints)&lenrc   r   r   r   r   r5   r   r  r   r   r   builtinr  call_custom_dict_fromkeyscall_methodr]   r
   r   r   r   r   r   r   ri   ConstDictVariabler4   r   r   r   r   track_new_user_defined_objectrn   r   strr   SUPPORTABLErl   )rp   r   r   r   rq   r   r  rr   s          rC   r  z$UserDefinedClassVariable.call_method  s.    $$D	Q 

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

D)di.?,,T2>>r4vVV

S)$45$):K,,S1==b$fUUI

k55547$<=Q!8!88t9>!>v;!###..K++;K;M  Y#;#S#SJJ$
 99))GGQQR 
 ]"t'8'8]DJJt'33	 w"2tT6::rF   c                 ^   ddl m} ddlm} t	        ||      }| j                         r|rt        j                  j                   | j                         |D cg c]  }|j                          c}i |j                         D 	ci c]  \  }}	||	j                          c}	}      S | j                  t        j                  j                  u r| j                  |||      S | j                  t         j"                  u rddlm}
  |
|i |S | j                  t(        j*                  u r8|j-                  t/        j0                  |t2        j4                        | g||      S | j                  t(        j6                  u rNt9        |      dk  r@t;        j<                  |d         r(t;        i t(        j6                  |d   t?                     S tA        | j                        rv| j                  jB                  r3tE        dtG        | j                        d	d
gtH        jJ                          t        jL                  tN              jP                  |g|i |S | j                  t(        jR                  u rt        j                  j                  d       }d/d}	  tU        jV                  |      jX                  |i |}dj^                  v rc|j^                  d   ja                  |      s&tE        dd| d| ddgtH        j\                         |j^                  d   jc                  |      }ng }d|j^                  v r|j^                  d   }t        jd                  jg                  ||t?                     S | j                  th        jj                  u rLt9        |      dkD  r|d   }nt        j                  j                  d       }t        jl                  |d   |      S | j                  tn        jp                  u rN|s tE        ddddgtH        j\                         |d   }|dd  }t        jr                  ju                  |||      S | j                  tv        jx                  u r"|s t        jz                  j                  ||      S | j                  t        j|                  j~                  u rV|sTt9        |      dk(  rF|d   j                         sJ t        j                  j                  ||d   j                               S t        t        | j                        t              r\t        | j                  d      rEt        | j                  d      r.| j                         r|j                  | j                        r| j                  rt        | j                        sdd lImJ} dd!l9mK}mL} | j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  fv r7tE        d"| j                   | j                   d#g tH        jJ                         | j                  t         j                  u rt        |d   ||f      rt        j                  j                  j                  stE        d$d| d%d&g       t        |d   |      r:|d   }|d   j                  }|d   j                         }|j                  |||      S  ||d   |d   j                  '      g|dd  z   }|j                  j                   j                  t        jL                  t              | |      }|j                  |d(||       |S t        | j                        rOt        | j                        }| j                  j                  d)k(  r)t9        |      dk(  sJ |rJ |d   jc                  |      }n| j                  j                  }t        |      }|j                  d gt9        |      t9        |      z
  z         i }t        ||      D ]6  \  }}|	||v r||   }n||v sJ t/        j0                  |||         }|||<   8 |j                         D ]  \  } }!| |v sJ |!||j                  |       <   ! t        d* |D              sJ t        j                  || j                        S | j                  t        j                  u r?t        jL                  t              j                  |||      }"t        |"j                        S t        | j                        r| j                         rt        j                  | j                        }t        | j                        }#t        |      }|j                  d gt9        |      t9        |      z
  z         i }$t        t        j                         ||      D ]  \  }%}&}|
|&j                  |v r||&j                     }n|&j                  s5|&j                  t        j                  ur7t/        j0                  ||&j                  t        t        |#|%      d+      '      }nQ|&j                  t        j                  ur4t/        j0                  ||&j                        }'|'j                  |g i       }n||$|&j                  <    |j                  |$       |j                  j                   j                  t        jL                  t              | |      }(|(j                  |d(||       |(S | j                  | j                         v st        | j                        rt        r| j                  t        v rt9        |      dk(  rt        |d   t        j                        r}t9        |d   j                        dkD  rbt        d, |d   j                  D              rC || |j                  j                  d-t        j                   gt        ||       .      })|)g} || |j                  j                  d-| j                  gt        ||       .      }*|*S | j                  t        j                  u r`t9        |      dk(  r-t        |d   t        j                        r|d   j                  }+nd }+t        j                  |+      },t	        |,      S | j                  t
        j                  u rEt9        |      dk(  r7t        |d   t        j                        rt        j                  |d         S |j                  | j                        rZ| j                  rNt               5  |j-                  t/        j0                  |t2        j                        | g||      cd d d        S t        -| i  |||      S c c}w c c}	}w # tZ        $ r2}tE        dd| d| ddgtH        j\                  |       Y d }~^d }~ww xY w# 1 sw Y   exY w)0Nr   )SideEffectsr3   r   )NullContextVariabler   r  zTypedDict with optional keysz<Dyanmo does not support tracing TypedDict with optional keysz(Avoid using TypedDict with optional keysr
  c                      y r=   rg   )iterablemaxlens     rC   deque_signaturez?UserDefinedClassVariable.call_function.<locals>.deque_signature  s    rF   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_excr  z.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	  z!missing args to functools.partialr   z0functools.partial requires at least one argumentzFix the functools.partial call.)r   keywords	__enter____exit__)TorchCtxManagerClassVariable)BaseUserFunctionVariable3FunctionDecoratedByContextlibContextManagerVariablezunsupported contextlib.* APIz not supported. This may be due to its use of context-specific operations that are not supported in Dynamo yet (i.e. Exception handling)z,attempted to trace contextlib.contextmanagerz.Tracing contextlib.contextmanager is disabled.z7Set torch._dynamo.config.enable_trace_contextlib = Truer   rm   ztorch.return_typesc              3   $   K   | ]  }|d u 
 y wr=   rg   .0xs     rC   	<genexpr>z9UserDefinedClassVariable.call_function.<locals>.<genexpr>  s     8Q1D=8s   defaultc              3   P   K   | ]  }t        |t        j                           y wr=   )r   r
   TensorVariabler'  s     rC   r*  z9UserDefinedClassVariable.call_function.<locals>.<genexpr>	  s     WA
1i&>&>?Ws   $&r   r   NN)r   r  r   r   r    r   r
   r   r   rv   itemsrc   r   r   CrossEntropyLossr  
contextlibnullcontextctx_managerr  r   r   inline_user_function_returnr5   r   r	   construct_dictr   r  r6   is_supported_argr4   r   __optional_keys__r   r  r   r  r  r   	call_dictdequer   	signaturebind	TypeError
USER_ERROR	argumentshas_force_unpack_var_sequenceforce_unpack_var_sequencelistsDequeVariableweakrefrefWeakRefVariable	functoolspartial	functionsFunctoolsPartialVariablewarningscatch_warningsCatchWarningsCtxManagerVariabler   r   is_python_constantCUDADeviceVariabler   r^   r]   is_standard_new"cls_supports_mutation_side_effectsr   rX   r   r#  r$  r%  _AsyncGeneratorContextManagerclosingredirect_stdoutredirect_stderrsuppress	ExitStackAsyncExitStack_GeneratorContextManagerr   _dynamoconfigenable_trace_contextlibkeys_as_python_constantr   r   r  r>   r  r(   r,   rd   _field_defaultsr   extendzipindexallNamedTupleVariabler   r   r7   r&   dataclassesfieldsr   	itertoolscountr   initr+  MISSINGr   r   default_factoryr   r   r   npr0   ListVariabler   stackr.   randomRandomRandomVariabler   MappingProxyTyper  MappingProxyVariabler   %instantiate_user_defined_class_objectrl   ).rp   r   r   rq   r  r   constant_argsr)  kvr  r  r  
bound_argser/  callbackfn	rest_argsr#  r$  r%  fn_var	args_listkwargs_dictcm_objrd  field_defaultsvar_tracker_kwargs
field_namevar_tracker	field_varr   rc   tupfields_sourcedefault_kwargsindfield
factory_fnvarstackedtensor_variableseedrandom_objectrr   s.                                                rC   r   z&UserDefinedClassVariable.call_function  sw    	/*+D&9))+--44)'')6:;a**,;=C\\^LTQq!..00L  ZZ58844400T6BBZZ:1118&777ZZ;22211%%b)*B*BC  JJ+111D	Q#44T!W=&''Q.0	  $**%zz++ :

O ^B*66	 =9,,T2<<RQ$Q&QQZZ;,,,//66t<FDW..?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   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--/////66r47;U;U;WXXtDJJ'.

K 

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

3F1$++>MJELL$3v;U#;<=N+.y/@&%+P ='UK&zzV+&,UZZ&8$zz$ ==0C0CC*9*?*? " %'1$1-$Ey("+K #22+:M:MM)8)>)> "E$9$9*J +5*B*B2r2*NK %1<N5::.5=6 MM.)))((FF))&14C OOB
D&9JJJ$00221$**=
 JJ"55INtAw	(>(>?Q&*WaWW (0"))00' +48  y+,bii,,#JJ 'tV4O #"ZZ6==(4yA~*T!Wi6P6P"QAw}}"MM$/M!-00JJ%000D	Q47I$?$?@ 11$q'::;;DJJGDKK57 55#))IKK MDM  w$Rv66w
 <L^  
 D#D66(; Z>*55 	 	
F	 s0   ww%w% 9x#%	x .'xx #x,c                     t        j                  | j                  dd      }t        |t              r|j
                  }|t        j                  u S )z"Check for __new__ being overriddenr   N)r   r   rc   r   r   r   r>   r   )rp   new_fns     rC   rO  z(UserDefinedClassVariable.is_standard_new:  s<    ''

ItDfl+__F''rF   c                 
   | j                   rgt        | j                   |      }t        |j                  t        j
                               t        j                  t        | j                  |            S t        | -  ||      S r=   )r   r   r   
make_guardr   HASATTRr
   r   r]   rc   rl   call_obj_hasattr)rp   r   r   r   rr   s       rC   r  z)UserDefinedClassVariable.call_obj_hasattrA  sc     ;;T2F&++L,@,@AB--gdjj$.GHHw'D11rF   c                 Z    |dk(  r| j                   j                  S t        |   ||      S )NrZ   )rc   rZ   rl   const_getattrrp   r   r   rr   s      rC   r  z&UserDefinedClassVariable.const_getattrJ  s-    :::&&&w$R..rF   rj   Nr   r;   r   list[VariableTracker]rq   dict[str, VariableTracker]rj   r5   r   r;   r   r  rq   r  rj   r5   )rZ   rd   re   r^   r>   rf   rm   rv   ry   r  r~   r   rF  cacher   r   r   r   r   r   r   r  r  r   rO  r  r  __classcell__rr   s   @rC   ri   ri      sW   <":# : __
  
 __F  F: __    M M
;*P-5 P-S P-EV P-d>A@A; &	A;
 -A; 
A;Fj7#j7 &j7 -	j7
 
j7X(2)2142	2/ /rF   ri   c                   "    e Zd Zed        Zd Zy)!UserDefinedExceptionClassVariablec                     | j                   S r=   rt   ru   s    rC   ry  z$UserDefinedExceptionClassVariable.fnQ  s    zzrF   c                     | j                   S r=   rt   ru   s    rC   python_typez-UserDefinedExceptionClassVariable.python_typeU  rw   rF   N)rZ   rd   re   r   ry  r  rg   rF   rC   r  r  P  s     rF   r  c                       e Zd Zy)NO_SUCH_SUBOBJNrZ   rd   re   rg   rF   rC   r  r  Y      rF   r  c                    ddl m} |D cg c]  }|j                          }}|j                         D ci c]  \  }}||j                          }}}t	        | j
                  j                        } ||i |}	t        |      }
| j
                  j                  j                  |||f        || |
      j                  |	      S c c}w c c}}w )Nr3   )VariableBuilder)
r   r  rv   r/  r  r   random_callsr   rO   wrap_unspecialized_primitive)r   ry  r   rq   r  r)  rt  ru  random_call_indexexample_valuer   s              rC   call_random_fnr  ]  s    (,01qA  "1D14:LLNCDAqa%%''CFCBII223''M01FII!!2tV"45 2v&CCMRR 2Cs
   CCc                       e Zd ZdZdddhej
                  Zddddd	 d* fdZdefd	Zdefd
Z	d Z
d Z fdZ fdZd Zd Zd+dZeej&                  d               Zd Z	 	 	 	 	 	 d, fdZ	 d-	 d+dZd Z fdZdddefdZd Zd Zd Z	 	 	 	 	 	 	 	 d. fdZd  Z d! Z!d" Z"d# Z#d$ Z$d+d%Z%d& Z&d+d'Z'ddd(eddfd)Z( xZ)S )/UserDefinedObjectVariablez_
    Mostly objects of defined type.  Catch-all for something where we only know the type.
    rc   
value_typeattrs_directly_modifed_on_dictN)r  
cls_sourcebase_cls_vt	init_argsrj   c                $   t        |   di | || _        |xs t        |      | _        t        |      | j                  u sJ || _        |&| j                  t        | j                        | _        || _        || _	        t               | _        y Nrg   )rl   rm   rc   r^   r  r  r   r   r  r  r   r  )rp   rc   r  r  r  r  rq   rr   s          rC   rm   z"UserDefinedObjectVariable.__init__x  s     	"6"
$3UE{doo---$$++"9(5DO '" /2e+rF   c                     | j                   j                  }|dv r t        t        | j                  dd             }| j
                  j                   d| dS )N)builtin_function_or_methodgetset_descriptormethod_descriptormethodrZ   r|   r}   )r  rZ   r  r   rc   rr   )rp   inners     rC   __str__z!UserDefinedObjectVariable.__str__  sU    (( 
 
 

J=>E..))*!E7!44rF   c                 b    | j                   j                   d| j                  j                   dS r{   rr   rZ   r  ru   s    rC   r~   z"UserDefinedObjectVariable.__repr__  +    ..))*!DOO,D,D+EQGGrF   c                      yNFrg   rp   r   s     rC   is_underlying_vt_modifiedz3UserDefinedObjectVariable.is_underlying_vt_modified  s    rF   c                     | j                   S r=   r  ru   s    rC   r  z%UserDefinedObjectVariable.python_type  s    rF   c                     dd l mc m} |j                  | j                        rJ| j
                  >t        | j
                  j                  t        j                               | j                  S t        | 1         S )Nr   )torch.utils._pytreeutils_pytreeis_constant_classr  r   r   r  r   EQUALS_MATCHrc   rl   rv   )rp   pytreerr   s     rC   rv   z,UserDefinedObjectVariable.as_python_constant  s\    ,,##DOO4{{&dkk44\5N5NOPzz! w)++rF   c                     | j                   r>t        | j                   j                  t        j                               | j
                  S t        |          S r=   )r   r   r  r   ID_MATCHrc   rl   guard_as_python_constant)rp   rr   s    rC   r  z2UserDefinedObjectVariable.guard_as_python_constant  s?    ;;$++001F1FGH::w/11rF   c                 .    t        |       s
J d|         y )Nz<calling torch function on object without __torch_function__ )r%   ru   s    rC   torch_function_checkz.UserDefinedObjectVariable.torch_function_check  s!    !$' 	
J4&Q	
'rF   c                 @    | j                          ddlm}  |||       S )Nr3   )get_torch_function_fn)r  torch_functionr  )rp   r   r  s      rC   get_torch_fnz&UserDefinedObjectVariable.get_torch_fn  s    !!#9$R..rF   r   r;   c                 f    | j                          ddlm}  ||| j                  |      ||||      S )Nr3   )call_torch_function)r  r  r  r  )rp   r   ry  r   r   rq   r  s          rC   r  z-UserDefinedObjectVariable.call_torch_function  s;    !!#7"b!
 	
rF   c                      t         j                   t         j                  t         j                  t         j                  h} | S r=   )rm  randint	randrangeuniform)fnss    rC   _supported_random_functionsz5UserDefinedObjectVariable._supported_random_functions  s0     MMNNNN	
 
rF   c                     |t        | j                  di       vr*	 t        j                  t	        | j                        |      S y # t
        $ r Y y w xY w)Nr   )r   rc   r   r   r^   r   )rp   r   s     rC   _maybe_get_baseclass_methodz5UserDefinedObjectVariable._maybe_get_baseclass_method  sT    wtzz:r::--d4::.>EE  " s   (A 	AAr5   c                 ^   ddl m}m} | j                  |      }||t        j
                  u r|j                  d       S t        |      s$t        | j                  t        j                        r | j                  |g|i |S t        |      r(| j                  ||d   t        j                               S |t        j                   u rot#        |      dk(  ra|s_|d   }t        |t$              s#t        j                  j                  t&              S |j                  | j                  |j                  u       S t(        j*                  j,                  j.                  rJt        | j                  t0        j2                        r&t5        dd| j                   d| d| d| d	d
g       t        |t0        j6                        rl| j8                  }	d }
|	r| j;                  |      }
ddlm} |t(        j@                  jB                  j
                  u r|} ||| |
|	      jE                  |||      S |tF        jH                  u r]| j8                  rQ|sO|sMtK        | j8                  jM                  tN        jP                                |t#        | j                              S tR        |   ||||      S )Nr3   )r   r   r   zcall_method on generatorobject=	, 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
  r   unpatched_nn_module_init	source_fnr   )+r   r   r   r  r>   rm   r   rD   r   rc   	threadinglocalmethod_setattr_standardrI   r
   r   r  r  r  NotImplementedr   rY  rZ  "enable_faithful_generator_behaviorr   GeneratorTyper   r   r   get_source_by_walking_mromutation_guardr  r   Moduler   r   __len__r   r  r   SEQUENCE_LENGTHrl   r  )rp   r   r   r   rq   r   r   r  otherr   r  r  rr   s               rC   r  z%UserDefinedObjectVariable.call_method  s@    	;11$7('..t44"6*jY__.U3t33BHHHH"6*33Q!:!:!<  &3t9>&Q!%)BC$55<<^LL (..tzzU[[/HII}}##FF:

E//L !6%djj\4&vYW]V^_!3+
 &%"4"45 	 $ > >t DIEUXX__5555F)DIf-D&12 %$++tvdkk44\5Q5QRS'DJJ88w"2tT6::rF   c           
         	 |j                         }|j                  j                  j                  |       sJ d       |r| j                  j                  |       n| j                  |      }|r|\  }}d }d }	| j                  r&| j                  |      }t        t        |      d	      }	t        j                  |||      }
t        j                  |||	      }|
| |g}|j                  ||i       S |j                  j                  j!                  | ||       t#        j$                  d       S # t        $ r t        dd|  d| d| ddg       Y ?w xY w)
Nz-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_type__set__)rv   NotImplementedErrorr   r   r   is_attribute_mutationr  add$try_get_descritor_and_setter_py_funcr  r  r   r   r5   r   r   
store_attrr
   r   )rp   r   r   rc   directly_update_dicttmp
descriptorsetterdesc_sourcefunc_sourcedesc_varfunc_varr   s                rC   r  z1UserDefinedObjectVariable.method_setattr_standard-  sd   	**,D yy%%;;DA 	
1	
A
  //33D9;;DAC%("
F #"??"&"@"@"FK",Z-Di"PK*00ZM*00V[I $.--b$;;
 			))$e<))$//G # 	G!$wtfHUGDm:;	 	s   D, ,"EEc                     t        t        j                  | j                  dd              xr% t	        | j                  t
        j                         S )Nr?   )rD   r   r   rc   r   r  r  ru   s    rC   needs_slow_setattrz,UserDefinedObjectVariable.needs_slow_setattrW  sD    &""4::}dC
 
 :TZZ99	:rF   c           
      H   | j                   r| j                  d      t        j                  u r| j                  d      t        j                  u r| j                  d      t        j
                  u rt        | j                   j                  t        j                               t        t        | j                              D cg c]D  }t        j                  j                  | j                  |   t!        | j                   |            F c}S t"        | I  |      S c c}w )N__iter__r  __getitem__r   )r   r  r   r  r  r  r   r  r   r  ranger  rc   r
   LazyVariableTrackerr   r   rl   unpack_var_sequence)rp   r   rt  rr   s      rC   r  z-UserDefinedObjectVariable.unpack_var_sequence\  s    KK00<M00;t||K00?4CSCSS$++001M1MNO s4::/
 	 --44JJqM(a8 5   w*2..s   A	Dc                     	 t        j                  t              j                  || gi        y# t        $ r t        |       Y yw xY w)NTF)r
   r  iterr   r   r   rp   r   s     rC   r?  z7UserDefinedObjectVariable.has_force_unpack_var_sequencem  sC    	%%d+99"tfbI  	%b)	s   +. AAc                     g }t        j                  t              j                  || gi       }	 	 |j	                  |      }|j                  |       $# t        $ r t        |       Y |S w xY wr=   )r
   r  r  r   next_variablerO   r   r   )rp   r   resultiter_rs        rC   r@  z3UserDefinedObjectVariable.force_unpack_var_sequenceu  sr    ))$/==b4&"M''+a   - )"-s   "A A+*A+c                 *    | j                  |dg i       S )N__next__)r  r  s     rC   r  z'UserDefinedObjectVariable.next_variable  s    JB77rF   c                 Z    	 | j                   | j                         v S # t        $ r Y yw xY wr  )rc   r  r<  ru   s    rC   is_supported_randomz-UserDefinedObjectVariable.is_supported_random  s1    	::!A!A!CCC 		s    	**c                 >   | j                         rJt        d |D              r8t        d |j                         D              rt        || j                  ||      S t        | j                  t        j                        r| j                  j                  }| j                  j                  }|t        j                  j                  j                  j                  u r]t        j                   j#                  |j$                        r4|s2|s0t        j                   |j$                        j'                  |||      S |t        j(                  j*                  j,                  j                  u r|j$                  t        j(                  j*                  j,                  u rPt        j.                  |j0                        }t        j                   |j$                        j'                  ||g|      S | j2                  4t5        dd| j                   d| d| d| dd	| j                   d
g       t7        | j2                  d      }t9        j:                  |||      }t7        | j2                  d      }	t9        j:                  |||	      }
|j'                  ||
g|z   |      S t=        | j                        r^| j2                  r>t7        | j>                  d      }tA        |jC                  tD        jF                               | jI                  |d||      S tJ        | M  |||      S )Nc              3   <   K   | ]  }|j                           y wr=   rM  )r(  rt  s     rC   r*  z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>  s     9qA((*9   c              3   <   K   | ]  }|j                           y wr=   r  )r(  ru  s     rC   r*  z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>  s     DqA((*Dr  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   __self____call__)&r  ra  valuesr  rc   r*   r   
MethodTyper   r!  r   r  _contextlib_DecoratorContextManagercloner
   r#  is_matching_clsrr   r   autograd	grad_modeinference_moder   moder   r   r   r5   r   r\   r  r   r  r   FUNCTION_MATCHr  rl   )rp   r   r   rq   r   r_   r  func_srcr  obj_srcobj_varr   rr   s               rC   r   z'UserDefinedObjectVariable.call_function  s}    $$&9D99DFMMODD!"djj$??DJJ 0 01::&&D**%%C//HHNNN::JJMM  ==MM-D&12
 00??EEEMMU^^%=%=%L%LL  00: ==MM-SE623 {{" Z%djj\TF'$yY_X`a ?9$**Eqr	 "$++z:H&,,Rx@H j9G%++BW=G))"wi$.>GGdjj!{{#DOOZ@f//0K0KLM##B
D&AAw$Rv66rF   c                 ,    t        | j                        S r=   )r$   rc   ru   s    rC   _check_for_getattrz,UserDefinedObjectVariable._check_for_getattr  s    !$**--rF   c                     t        |t              syt        |j                  t        j                        xs= t
        j                  j                  j                  j                  |j                        S r  )
r   r   r   r   BuiltinFunctionTyper   _CrY  r  is_instancemethod)rp   subobjs     rC   _is_c_defined_propertyz0UserDefinedObjectVariable._is_c_defined_property  sV    &(+ KK22
 CXX##55fkkB	CrF   c                    t        j                  | j                  |t              }t	        | j                        st|t        u s;t        j
                  |      s&t        j                  |      s| j                  |      r1t        | j                        j                  | j                  |      }|S t	        | j                        r|t        u rt        |S r=   )r   r   rc   r  r-   r   isgetsetdescriptorr8  r^   __getattribute__r   )rp   r   r7  s      rC   _getattr_staticz)UserDefinedObjectVariable._getattr_static  s    ''

D.I 'tzz2n$))&1))&1**62 $**%66tzz4HF  %TZZ0V~5M ! rF   c                     t        j                  t        | j                        |d       }t        j                  t        |      dd       }|r%t        j                  |      ry|| j
                  v ryy)Nr  TF)r   r   r^   rc   
isfunctionr  rp   	attr_namer  r  s       rC   should_skip_descriptor_setterz7UserDefinedObjectVariable.should_skip_descriptor_setter  sb    ++D,<iN
''Z(8)TJ!!&) dAAArF   c                     t        j                  t        | j                        |d       }t        j                  t        |      dd       }t        j                  |      r||fS y )Nr  )r   r   r^   rc   r>  r?  s       rC   r  z>UserDefinedObjectVariable.try_get_descritor_and_setter_py_func  sT    ++D,<iN
''Z(8)TJf%''rF   c                    |j                   j                  j                  | |      rC|j                   j                  j                  | |d      }t	        |t
        j                         S || j                  j                  v S r   r   r   s       rC   r   z1UserDefinedObjectVariable.has_key_in_generic_dict  r   rF   c                 L   | j                   J t        t        | j                        j                        D ]]  \  }}||j
                  v s|dk7  r"t        | j                         }t        ||      }n| j                   }t        |      }t        ||      }t        d|      D ]l  }t        | j                         }t        ||      }t        |      }t        |j                  t        j                  t        j                   |d                   n | j"                  rut%        | j                  d      r_|| j                  j
                  vrGt        | j"                  j                  t        j                  t        j&                  |                   |c S  t)        dd| d	t        | j                         d
t        | j                        j                   d| dt        | j                        j                   d| d| j                   dgt*        j,                         y )Nr   r3   T)r   invertr   )attrz#could not find name in object's mrozname=z, object type=z, mro=zCould not find name `z	` in mro zEnsure the name `z` is defined somewhere in z's type hierarchy.r
  )r  	enumerater^   rc   r   r   r   r   r   r   r  r   r  rF  rG  r   DICT_CONTAINSr   r]   NOT_PRESENT_IN_GENERIC_DICTr   r   r=  )	rp   r   idxklass
mro_sourceklass_sourcedict_source
out_source
absent_idxs	            rC   r  z3UserDefinedObjectVariable.get_source_by_walking_mro  s   ***#D$4$<$<= #	"JCu~~%!8!.t!?J#0S#AL#'??L,\:.{DA
"'3- J!.t!?J#0Z#HL"0">K!#..%-- , : :T KK

J7DJJ$7$77!..%-- , H Ht "!G#	"J 	9D6TZZ0@/ATZZHXH`H`Gab/vYtDJJ?O?W?W>XY#D6)CDJJ<Oab"--		
rF   c                    ddl m} | j                  rt        | j                  |      nd }t	        | j
                        rt        j                  t        | j
                        d      }| j                  rt        | j                  d      }	 t        j                  ||       j                  ||j                  |      gi       S |j                  j                   j#                  | |      rT|j                  j                   j%                  | |d      }t'        |t        j(                        rt+        t,        |       |S |dk(  rd|i}t        j.                  | |fi |S |d	k(  r3|}	|	| j0                  }	d|	i}t3        t        | j
                        fi |S 	 | j5                  |      }
ddl/m0} |
tN        jP                  jR                  jb                  u r|}
t        j                  | j
                  jd                  |t6              }||
u xrP | j0                  d uxr@ | j                  d uxr0 tg        | j
                  d      xr || j
                  jh                  v}t'        |
tj              r\| j                  r| jm                  |      }t        |d      }t        jn                  |
jp                  |      j                  || gi       S t'        |
tr        jt                        rA|
jw                         \  }\  }}t'        | tx              sJ | jz                  j|                  |   S t'        |
t~              rO|rt        | jm                  |      d      }|
j                  | j
                        }t        j                  |||      S t'        |
t              rRd }|rt        | jm                  |      d      }t        j                  |
j                  | j                  |d	      ||      S t'        |
t:        j                        r3|
j                  | j
                  d       }t        j                  |||      S t        |
      rt        j                  |
d| |      S t        j                  t        |
      dt6              t6        urt        t        |
      j                        sd }d }| j0                  r>| jm                  |      }t        t        |      d      }t        j                  ||
|      }nt        |
      }t3        t        | j
                              }t        j                  |
j                  j                  ||      j                  || |gi       S t'        |
t:        j<                        sJt'        |
t:        j                        r#t'        | j
                  tN        jP                  jR                        rt        | j
                  |      }||
u r;tg        |
d      r/|
j                  }
|
}|rt        |d      nd }||
u rtg        |
d      r/t'        |
t:        j                        r|j                  | j
                  urt'        |j                  t:        j<                        s^t]        dd| j
                   d| d| d|j                   d |j                   
d!| d"| d#| j
                   d$|j                   d%	d&g       d }|t        |d'      }t        j                  ||j                  |      }t        j                  |j                  |      S |
j                  }nt'        |
t:        j<                        sJ |
}t        j                  |      r.d }|r| jm                  |      }t        j                  || ||      S t        j                  |      rt        j                  |||      S tN        j                  j                  j                  st'        | t        j                        r|rt'        | t        j@                        re|j                  j                  r$tN        j                  j                  j                  r+|d(v rt        | j                  |      }| j                  |      }|
t6        ur$t        |
      s>tN        j                  j                  j                  j                  |
      st        |
      rd|i}t        j.                  | |fi |S |r3|r| jm                  |      }t        j                  j                  |
|      S | j0                  it        j                  | j
                  jd                  |t6              }||
u r6t        | j0                  |      }t        j                  j                  ||      S t        j                  ||
      S t+        t,        |       y # t        $ r t        |       Y w xY w# t,        $ r t6        }
| j9                         }t'        |t:        j<                        r|t>        u rt'        | t        j@                        rtC        | j
                  jD                  tF              r[tC        | j
                  jH                  tF              r7tC        | j
                  jJ                  tF              r| jM                  ||      }n]d }| j                  rt        | j                  d
      }t        j                  || |      j                  ||j                  |      gi       }| j                  ry|tN        jP                  jR                  jT                  u rSt'        |t        j@                  t        jV                  f      r)|jY                  t        | j[                         |             |cY S |7t]        dd| j
                   d| d| d| d| j
                   d| ddg       Y 
w xY w))Nr3   r   r;  r   Tr   r   r   rr   __getattr__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  r   r   r  __wrapped__r   _torchdynamo_inlinez5User-defined object method with non-function __func__r  z, method.__self__=z, method.__func__=zMethod z (name=z) of user-defined object z has a __func__ (z) that is not a function type.z5Ensure that the method's __func__ is a function type.r!  )_buffers_parameters)_r   r   r   r   r-   rc   r   r   r^   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  ri   r<  r  r2  r   r   r2   UnspecializedNNModuleVariabler*   rW  r   rV  _modules manually_trace_nn_module_getattrr   r   r  rR  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   r  r  rm   rr   r]   r   r   r  r   r   _collections_tuplegetter
__reduce__UserDefinedTupleVariable	_tuple_vtr/  r   r   r5   r   r   r   r   r   r'   WrapperUserMethodVariabler)   r   r  r$  r   rU  r!  ismethodr>  rY  rZ  inline_inbuilt_nn_modulesFSDPManagedNNModuleVariableexportinstall_free_tensorsr   _wrap_sourcer5  r  r6  r`   r  )rp   r   r   r   r   getattribute_fn
new_sourcer  r   r  r7  
getattr_fnoutr  subobj_from_classis_accessible_from_type_mro_rJ  r   r  descriptor_sourcedescriptor_get_sourcedescriptor_var	owner_vardynamic_subobjself_source	object_vtsrc_from_classs                               rC   r   z%UserDefinedObjectVariable.var_getattr=  sa
   &26++DKK.4"4::.%44TZZ "4O {{'5GH
. 33#T*-%5%<%<T%B$CRHI 99!!>>tTJYY++55dDT5RF&)";";<(<M:(G,,T4C7CC
 ;J!!__
,G+D,<HHH3	))$/Fh 	>UXX__----F#22JJ  $
 ' 0t+04'0 

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

,,dN)% )F2)3DOOT)J(<<CC-~   ',,R88 	!4w * .)"-.4  1	#F002J*e&8&89 "=="4)P)PQtzz55t<tzz22D9tzz22D9 ??DIC!%J{{%/]%K
#66"D#mB)9)@)@)F(GL  ;;:1L1L#L!%CC%66 66&t'F'F'H$O 
' O%djj\mJ<X"CJ<Oklplvlvkw x4486!< NS1	s+   8f( g (g ?g G o9oor   c                    | j                   r<t        t        | j                   |      j                  t        j
                               	 | j                  ||      }t        j                  j                  t        |t        j                               S # t        $ r- t        |       t        j                  j                  d      cY S w xY wr  )r   r   r   r  r   r  r   r
   r   r   r   r   r   r   )rp   r   r   var_vts       rC   r  z*UserDefinedObjectVariable.call_obj_hasattri  s     ;;4;;-889M9MN	<%%b$/F--44vy'@'@AA  & 	<%b)--44U;;	<s   
A	B 3C
	C
r  r  r  )Fr  )*rZ   rd   re   __doc__rb   _nonvar_fieldsrm   r  r  r~   r  r  rv   r  r  r  r  r   rF  r  r  r  r  r  r	  r  boolr?  r@  r  r  r   r2  r8  r<  rA  r  r   r  r   r  r  r  s   @rC   r  r  l  s   
 	( 
	+	+	N 4 
4B	5 	5H# H	,2

/
 __  A; &	A;
 -A; 
A;H NS(0)(0T:
/"0G D 887#87 &87 -	87
 
87t.
C4*0
dj5X	<)<14<	<rF   r  c                   v     e Zd Z G d d      Zed        Zdd fdZd Zd Zd fdZ	d fd	Z
defd
Z xZS )FrozenDataClassVariablec                   "    e Zd ZdZd Zd Zd Zy)#FrozenDataClassVariable.HashWrapperzThis class is hashed if a dataclass is used as a key in a dict.
        It's necessary to avoid side effects from calling the __init__ of the dataclass class when hashingc                 N    || _         t        |j                               | _        y r=   )clsr   r/  rd  )rp   crd  s      rC   rm   z,FrozenDataClassVariable.HashWrapper.__init__  s    DH/DKrF   c                     t        |       t        |      k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S r=   )r^   r  rd  )rp   r  s     rC   r  z*FrozenDataClassVariable.HashWrapper.__eq__  sA    T
d5k) 0HH		)0KK5<</rF   c                 D    t        | j                  | j                  f      S r=   )hashr  rd  ru   s    rC   __hash__z,FrozenDataClassVariable.HashWrapper.__hash__  s    4;;/00rF   N)rZ   rd   re   r{  rm   r  r  rg   rF   rC   HashWrapperr  |  s    	n	0		1rF   r  c           	      0   ddl m} t        |      sJ i } ||      D ]i  }t        ||j                        st        j                  | t        ||j                        |xr t        ||j                              ||j                  <   k t        |||      S )Nr   rd  )rd  r   )
rc  rd  r&   r]   r   r5   r   r   r   r  )r   rc   r   rd  	field_mapr  s         rC   r   zFrozenDataClassVariable.create  s    &"5)))	E] 	Euejj)(7(=(=E5::.=z&%**=)	%**%	 'uYvNNrF   rj   c                 <    t        |   |fi | |i }|| _        y r=   )rl   rm   rd  )rp   rc   rd  rq   rr   s       rC   rm   z FrozenDataClassVariable.__init__  s&    )&)>FrF   c                    ddl m} dd lmc m} t        | j                  |j                  |j                  |j                  f      st        d      g }i } || j                        D ]d  }|j                  s| j                  |j                     j                         }t        |dd      r|||j                  <   T|j                  |       f | j!                         } ||i |S )Nr   r  z@currently can't reconstruct arbitrary frozen dataclass instanceskw_onlyF)rc  rd  r  r  r  r*   rc   TreeSpecLeafSpecConstantNoder  rg  r   rv   r   rO   r  )rp   rd  r  r   rq   r  datactors           rC   rv   z*FrozenDataClassVariable.as_python_constant  s     	',,JJ&//6;N;NO
 &R  DJJ' 	&Ezz{{5::.AAC5)U3)-F5::&KK%	& !T$V$$rF   c                 4   ddl m} g }i } || j                        D ]b  }| j                  |j                     j	                         }t        |d      r|j                  r|||j                  <   R|j                  |       d | j                         } ||i |S )Nr   r  r  )	rc  rd  rc   r   ry   r]   r  rO   r  )rp   rd  r   rq   r  r   r  s          rC   ry   z FrozenDataClassVariable.as_proxy  s    &DJJ' 	#EKK

+446Eui(U]]%*uzz"E"	# !T$V$$rF   c                     dd l mc m} | j                  |j                  u r0j                  fd       j                  t        dd             y t        | %         y )Nr   c                  (     j                  dd      S )Nztorch.utils._pytreer  load_import_fromcodegens   rC   <lambda>z5FrozenDataClassVariable.reconstruct.<locals>.<lambda>  s    001F
S rF   F)
r  r  r  r  r  add_push_nullextend_outputr   rl   reconstruct)rp   r  r  rr   s    ` rC   r  z#FrozenDataClassVariable.reconstruct  sT    ,,??foo-!!S !!"6q%"@A 	G$rF   c                 `    || j                   |j                         <   t        |   |||      S r=   )rd  rv   rl   r  )rp   r   r   rc   rr   s       rC   r  z/FrozenDataClassVariable.method_setattr_standard  s.    16D++-.w.r4??rF   c                 b    | j                   j                   d| j                  j                   dS r{   r  ru   s    rC   r~   z FrozenDataClassVariable.__repr__  r  rF   r=   r  )r  r9   rj   Nr  )rZ   rd   re   r  r   r   rm   rv   ry   r  r  r  r~   r  r  s   @rC   r  r  {  sK    1 1$ O O %<%(%"@H# HrF   r  c                   8     e Zd Z	 	 d fdZ	 	 	 	 	 	 ddZ xZS )SourcelessGraphModuleVariablec                 &    t        |   |fi | y r=   )rl   rm   ro   s      rC   rm   z&SourcelessGraphModuleVariable.__init__  s    
 	)&)rF   c                     t        j                  | j                  j                  j                        }| g|z   }|j                  |||      S r=   )r
   r   rc   forwardr   r4  )rp   r   r   r   rq   fn_variables         rC   r  z)SourcelessGraphModuleVariable.call_method  sK      44TZZ5G5G5P5PQv}--
 	
rF   r  r  )rZ   rd   re   rm   r  r  r  s   @rC   r  r    s5    * 
	*
 &	

 -
 

rF   r  c                   p     e Zd Z fdZed        Z fdZed        Zed        ZddZ	ed        Z
 xZS )	"UserDefinedExceptionObjectVariablec                 p    t        |   |fi | t        j                  | j                  d      | _        y r  )rl   rm   r
   ExceptionVariabler  exc_vtro   s      rC   rm   z+UserDefinedExceptionObjectVariable.__init__	  s-    )&)11$//2FrF   c                     | j                   S r=   r  ru   s    rC   ry  z%UserDefinedExceptionObjectVariable.fn  s    rF   c                    |dk(  rm| j                  |      x}rZt        j                  |      rEt        |      dk(  r7|| j                  _        || j                  _        t        j                  d       S |dk(  r`t        |      dk(  rRt        |d   t        j                        r5|d   j                  dv r$| j                  j                  ||d   |d          n#|dk(  r| j                  j                  ||||      S t        | -  ||||      S )Nrm   r   r?   r   )	__cause____context____suppress_context____traceback__r3   with_traceback)r  r   r   r  r  r   rc   r
   r   r   call_setattrr  rl   rp   r   r   r   rq   r  rr   s         rC   r  z.UserDefinedExceptionObjectVariable.call_method  s    J;;DAAA**62Fq #DKK"DJJO--d33M!D	Q47I$>$>?QTU KK$$Ra$q':%%;;**2tT6BBw"2tT6::rF   c                 .    | j                   j                  S r=   )r  r  ru   s    rC   r  z.UserDefinedExceptionObjectVariable.__context__'  s    {{&&&rF   c                 .    | j                   j                  S r=   )r  r   ru   s    rC   r   z'UserDefinedExceptionObjectVariable.args+  s    {{rF   c                 8    | j                   j                  |      S r=   )r  set_context)rp   r  s     rC   r  z.UserDefinedExceptionObjectVariable.set_context/  s    {{&&w//rF   c                 .    | j                   j                  S r=   )r  exc_typeru   s    rC   r  z+UserDefinedExceptionObjectVariable.exc_type2  s    {{###rF   )r  zvariables.ExceptionVariable)rZ   rd   re   rm   r   ry  r  r  r   r  r  r  r  s   @rC   r  r    sc    G  ;, ' '    0 $ $rF   r  c                   <     e Zd Zed        Zd fdZd fdZ xZS )KeyedJaggedTensorVariablec                 z    t         j                  j                  d      }|d uxr t        |       |j                  u S )Nztorchrec.sparse.jagged_tensor)rQ   rR   rS   r^   KeyedJaggedTensorr_   mods     rC   is_matching_objectz,KeyedJaggedTensorVariable.is_matching_object8  s3    kkoo=>$E490E0E#EErF   c                 P    ddl m} t        |      |u sJ t        |   |fi | y )Nr   )r  )torchrec.sparse.jagged_tensorr  r^   rl   rm   )rp   rc   rq   r  rr   s       rC   rm   z"KeyedJaggedTensorVariable.__init__=  s+    CE{////)&)rF   c                    t         j                  j                  j                  r@| j                  4|dv r0t        j                  d      5  t        | !  ||      cd d d        S t        | !  ||      S # 1 sw Y   xY w)N)_length_per_key_offset_per_keyT)#force_unspec_int_unbacked_size_like)	r   rY  rZ  3force_unspec_int_unbacked_size_like_on_torchrec_kjtr   r   patchrl   r   r  s      rC   r   z%KeyedJaggedTensorVariable.var_getattrC  sr    MM  TT'>>%%$O 5w*2t45 5w"2t,,5 5s   A66A?r  r  )rZ   rd   re   r   r  rm   r   r  r  s   @rC   r  r  7  s&    F F*- -rF   r  c                       e Zd Zed        Zy)IntWrapperVariablec                 z    t         j                  j                  d      }|d uxr t        |       |j                  u S )Nztorch.export.dynamic_shapes)rQ   rR   rS   r^   _IntWrapperr  s     rC   r  z%IntWrapperVariable.is_matching_objectQ  s1    kkoo;<$?49#??rF   N)rZ   rd   re   r   r  rg   rF   rC   r  r  N  s     @ @rF   r  c                       e Zd Zy)RemovableHandleClassNr  rg   rF   rC   r  r  W  s     	rF   r  c                   J     e Zd ZdZ	 	 d	 d fdZd fdZd	 fdZd Z xZS )
RemovableHandleVariablec                 @    t        |   di | || _        || _        y r  )rl   rm   r	  rJ  )rp   r	  rJ  rq   rr   s       rC   rm   z RemovableHandleVariable.__init__`  s$     	"6"*rF   c                 $   |dk(  rx| j                   | j                  k7  r@|j                  j                  j	                  | j                          | j                  | _         t
        j                  j                  d       S t        | %  ||||       y )Nremove)
rJ  REMOVEDr   r   remove_hookr
   r   r   rl   r  )rp   r   method_namer   rq   rr   s        rC   r  z#RemovableHandleVariable.call_methodk  sl    ("xx4<<'		&&22488<<<--44T::BT6:rF   c                     | j                   | j                  k(  r0j                  fd       j                  t	        dd             y t
        |          y )Nc                  (     j                  dd      S )Nztorch._dynamo.utilsinvalid_removeable_handler  r  s   rC   r  z5RemovableHandleVariable.reconstruct.<locals>.<lambda>w  s    00)+F rF   r   F)rJ  r  r  r  r   rl   r  )rp   r  rr   s    `rC   r  z#RemovableHandleVariable.reconstructs  sN    88t||#!!
 !!"6q%"@AG$rF   c                     t         S r=   )r  ru   s    rC   r  z#RemovableHandleVariable.python_type  s    ##rF   r.  r  r  )r  r9   )	rZ   rd   re   r  rm   r  r  r  r  r  s   @rC   r  r  ]  s.    G 		 
	;%$rF   r  c                        e Zd ZdZej
                  Zd
 fd	Z	 	 	 	 	 	 d fdZd Zd Z	e
d        Ze
d        Zd Zd	 Z xZS )UserDefinedDictVariablez
    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.
    c                     t        |   |fi | || _        | j                  A| j                  J d       t	        j
                  i t        |      t                     | _        t        | _	        y )Nz@dict_vt must be constructed by builder.py when source is presentr  )
rl   rm   _dict_vtr   r
   r  r^   r4   r"   _dict_methods)rp   rc   dict_vtrq   rr   s       rC   rm   z UserDefinedDictVariable.__init__  sm    )&)== ;;& R& &77DK/?/ADM *rF   c                 T   | j                  |      }|| j                  v r	 | j                  j                  ||||      S t        |   ||||      S # t        $ rL |dk(  rEt        | j                         t              r'| j                  d      r| j                  |d||      cY S  w xY w)Nr  __missing__)	r  r  r  r  r   r   r  r   rl   r  s         rC   r  z#UserDefinedDictVariable.call_method  s     11$7T'''
}}00T4HH w"2tT6:: $ M)"4#3#3#5t<88G++BtVLLs   A AB'%B'c                     t        | j                        j                  t        j                  t        j
                  j                  fv r| j                  j                  |      S t        r=   )	r^   rc   r  r   r   r   r  r  r  r  s     rC   r  z+UserDefinedDictVariable.unpack_var_sequence  sQ    

$$MM##,,)
 
 ==44R88!!rF   c                 8    |j                  | j                        S r=   )is_modifiedr  r  s     rC   r  z1UserDefinedDictVariable.is_underlying_vt_modified      ''66rF   c                 .    | j                   j                  S r=   )r  user_clsru   s    rC   r  z UserDefinedDictVariable.user_cls  s    }}%%%rF   c                 .    | j                   j                  S r=   )r  r/  ru   s    rC   r/  zUserDefinedDictVariable.items  s    }}"""rF   c                 6    | j                   j                         S r=   )r  install_dict_keys_match_guardru   s    rC   r  z5UserDefinedDictVariable.install_dict_keys_match_guard  s    }}::<<rF   c                 6    | j                   j                         S r=   )r  install_dict_contains_guardru   s    rC   r  z3UserDefinedDictVariable.install_dict_contains_guard  s    }}88::rF   r=   r  )rZ   rd   re   r{  r  r|  rm   r  r  r  r   r  r/  r  r  r  r  s   @rC   r  r    sy     /==N
*; &	;
 -; 
;2"7 & & # #=;rF   r  c                        e Zd ZdZej
                  Zd fd	Z	 	 	 	 	 	 d fdZd Zd Z	e
d        Ze
d        Zd Zd	 Zd
 Z xZS )UserDefinedSetVariablez
    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.
    c                    t        |   |fi | || _        t        |t              rt        nt
        }|t        u rt        nt        | _        | j                  | j                  J d       |t        u r%t        j                  i t                     | _        y |j                  di       }t        j                  j                   j"                  j%                         }t        j&                  |      j)                  ||i       | _        y y )Nz?set_vt must be constructed by builder.py when source is presentr  r  )rl   rm   _set_vtr   r   r   r/   r#   _set_methodsr   r
   SetVariabler4   rS   r   rY  symbolic_convertr;   
current_txr  r   )rp   rc   set_vtrq   r  r  r   rr   s          rC   rm   zUserDefinedSetVariable.__init__  s    )&)'s3c+6#+=KCT<<;;& Q& c!(44&6&8  #JJ{B7	]]33IITTV(88ESS	2   rF   c                     | j                  |      }|| j                  v r| j                  j                  ||||      S t        |   ||||      S r=   )r  r  r  r  rl   r  s         rC   r  z"UserDefinedSetVariable.call_method  sT     11$7T&&&<<++BdFCCw"2tT6::rF   c                 6    | j                   j                         S r=   )r  rv   ru   s    rC   rv   z)UserDefinedSetVariable.as_python_constant  s    ||..00rF   c                     t        j                  | j                  d      t        j                  t
        j                  fv r| j                  j                  |      S t        )Nr  )	r   r   rc   r   r  r   r  r  r  r  s     rC   r  z*UserDefinedSetVariable.unpack_var_sequence  sM    !!$**j9LL>
 
 <<33B77!!rF   c                 .    | j                   j                  S r=   )r  	set_itemsru   s    rC   r  z UserDefinedSetVariable.set_items  s    ||%%%rF   c                 .    | j                   j                  S r=   )r  r/  ru   s    rC   r/  zUserDefinedSetVariable.items  s    ||!!!rF   c                 8    |j                  | j                        S r=   )r  r  r  s     rC   r  z0UserDefinedSetVariable.is_underlying_vt_modified  s    ''55rF   c                 6    | j                   j                         S r=   )r  r  ru   s    rC   r  z4UserDefinedSetVariable.install_dict_keys_match_guard  s    ||99;;rF   c                 6    | j                   j                         S r=   )r  r  ru   s    rC   r  z2UserDefinedSetVariable.install_dict_contains_guard  s    ||7799rF   r=   r  )rZ   rd   re   r{  r  r|  rm   r  rv   r  r   r  r/  r  r  r  r  r  s   @rC   r  r    s~     /==N.
; &	
;
 -
; 

;1" & & " "6<:rF   r  c                   `     e Zd ZdZej
                  Zd fd	Z	 	 	 	 	 	 d fdZd Zd Z	 xZ
S )UserDefinedListVariablez
    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.
    c                     t        |   |fi | || _        | j                  8| j                  J d       t	        j
                  g t                     | _        y y )Nz@list_vt must be constructed by builder.py when source is presentr  )rl   rm   _list_vtr   r
   rk  r4   )rp   rc   list_vtrq   rr   s       rC   rm   z UserDefinedListVariable.__init__$  s_    )&)== ;;& R& &222EUEWXDM	 !rF   c                     | j                   J | j                  |      }|t        v r| j                   j                  ||||      S t        |   ||||      S r=   )r  r  r+   r  rl   r  s         rC   r  z#UserDefinedListVariable.call_method-  s^     }}(((11$7\!==,,RtVDDw"2tT6::rF   c                     | j                   J t        | j                        j                  t        j                  u r| j                   j                  |      S t        r=   )r  r^   rc   r  r   r  r  r  s     rC   r  z+UserDefinedListVariable.unpack_var_sequence:  sH    }}(((

$$5==44R88!!rF   c                 8    |j                  | j                        S r=   )r  r  r  s     rC   r  z1UserDefinedListVariable.is_underlying_vt_modified@  r  rF   r=   r  )rZ   rd   re   r{  r  r|  rm   r  r  r  r  r  s   @rC   r  r    sH     /==NY; &	;
 -; 
;"7rF   r  c                   Z     e Zd ZdZej
                  Zd fd	Z	 	 	 	 	 	 d fdZd Z xZ	S )ra  z
    Represents user defined objects that are subclasses of tuple.

    Internally, it uses a TupleVariable to represent the tuple part of the
    variable tracker. For everything else, it falls back to
    UserDefinedObjectVariable.
    c                    t        |   |fd|i| || _        | j                  c| j                  J d       ddlm}  |j                         }|d   j                  |      }t        j                  |t                     | _        y y )Nr  zAtuple_vt must be constructed by builder.py when source is presentr   r:   r  )rl   rm   rb  r   torch._dynamo.symbolic_convertr;   r  r@  r
   TupleVariabler4   )	rp   rc   tuple_vtr  rq   r;   r   elemsrr   s	           rC   rm   z!UserDefinedTupleVariable.__init__O  s    >)>v>!>>!;;& S& M1&113BaL::2>E&44%5%7DN "rF   c                     | j                   J | j                  |      }|t        v r| j                   j                  ||||      S t        |   ||||      S r=   )rb  r  r1   r  rl   r  s         rC   r  z$UserDefinedTupleVariable.call_methodb  s^     ~~)))11$7]">>--b$fEEw"2tT6::rF   c                     | j                   J t        | j                        j                  t        j                  u r| j                   j                  |      S t        r=   )rb  r^   rc   r  r   r  r  r  s     rC   r  z,UserDefinedTupleVariable.unpack_var_sequenceo  sH    ~~)))

$$6>>55b99!!rF   r.  r  )
rZ   rd   re   r{  r  r|  rm   r  r  r  r  s   @rC   ra  ra  D  sB     /==N&; &	;
 -; 
;"rF   ra  c                   N     e Zd Zej                  Z fdZdddeddf fdZ xZS )MutableMappingVariablec                 Z    t        |   |fi | t        j                  i       | _        y r=   )rl   rm   r
   r  generic_dict_vtro   s      rC   rm   zMutableMappingVariable.__init__y  s(    )&)(::2>rF   r   r;   r   rj   r5   c                 T   |dk(  rwt        | j                        j                  t        j                  j
                  j                  t        j                  fv r$t        j                  t        j                  |       S |dk(  re| j                  rYt        j                  j                  | j                  j                  t        | j                  d            | _        | j                   S | j                   j#                  t        j$                  |            x}r|S t&        | Q  ||      S )NrS   r   )r^   rc   rS   r   abcMappingr   r
   r   r	   mapping_getr   r  r   r   r   r  maybe_getitem_constr   rl   r   )rp   r   r   rm  rr   s       rC   r   z"MutableMappingVariable.var_getattr}  s     5=T$**-11OO##''HH6
 
 //	0E0EtLLZDKK#,#@#@#G#G

##ZZ%H$D  '''((<<&&t,
 
S 
 J7&r400rF   )	rZ   rd   re   r  r|  rm   r  r   r  r  s   @rC   r  r  v  s4    .==N?15 1S 1EV 1 1rF   r  c                       e Zd Zy)ro  Nr  rg   rF   rC   ro  ro    r  rF   ro  )vr{  r^  r   r   r1  rc  r   rF  r   re  rm  rQ   r  r   rJ  rC  typingr   typing_extensionsr   torch._dynamo.configr   torch.nntorch._guardsr   torch.utils._python_dispatchr   r   r   r	   r
   bytecode_transformationr   create_parameter_opr   excr   r   r   r   r   r   r   guardsr   r   r   r   r   r   r   r   r   r   r   r   r   r  r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   baser4   r5   dictsr6   rA  r7   numpyrj  ModuleNotFoundErrortorch.utils._cxx_pytreer8   rP   r^   torch._dynamo.codegenr9   r  r;   rD   rI   rX   r`   rb   ri   r  r  r  r  r  r  r  r  r  r  r  r  r  r  ra  r  ro  rg   rF   rC   <module>r-     s  .           
       *   ( K 6 6 : F   1       * 4 & 2
 /DBB$/ s
/2 s
/l(@ 	 	SL< 3 L<^rH7 rHj
$= 
0,$)B ,$^- 9 -.@2 @	 	$$o $$NG;7 G;TH:6 H:V(77 (7V/"8 /"d16 1B	. 	cA  	B
  dJs$   &G +G  GG G0/G0