
    7h                       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  SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJrJr  SS	KJr  SS
K J!r!  SSK"J#r#J$r$J%r%J&r&  SSK'J(r(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1  SSK2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErE  SSKFJGrGJHrHJIrI  SSKJJKrK  SSKLJMrM   SSKNrO SSKQJRrR  \(       a  SSKUJVrV  SSKWJXrX  S rYS rZS r[ " S S\I5      r\ " S S\\5      r] " S S\]5      r^ " S S 5      r_S! r` " S" S#\\5      ra " S$ S%\a5      rb " S& S'\a5      rc " S( S)\a5      rd " S* S+\a5      re " S, S-\a5      rf " S. S/5      rg " S0 S1\I5      rh " S2 S3\a5      ri " S4 S5\a5      rj " S6 S7\a5      rk " S8 S9\a5      rl " S: S;\a5      rmg! \P a    SrO Nf = f! \S a    \T" S5      rR Nf = f)<a  
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
  - UserDefinedTupleVariable: For tuple 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   )	polyfills	variables)create_call_function)$do_not_convert_to_tracable_parameter)handle_observed_exceptionObservedAttributeErrorraise_observed_exceptionunimplemented)GuardBuilderinstall_guard)
AttrSourceCallFunctionNoArgsSourceDataclassFieldsSourceGetItemSourceRandomValueSource
TypeSourceUnspecializedParamBufferSource)build_checkpoint_variablecheck_constant_argscmp_name_to_op_mappingdict_methodsget_custom_getattrhas_torch_functionis_frozen_dataclassis_lru_cache_wrapped_functionis_namedtuple_clsis_utils_checkpointis_wrapper_or_member_descriptoristypelist_methodsnamedtuple_fieldsobject_has_getattributeproxy_args_kwargstensortype_to_dtypetuple_methodsunpatched_nn_module_getattr   )AttributeMutationExistingValueMutationNewVariableTracker)DefaultDictVariable)SizeVariable)
PyTreeSpec)	PyCodegenInstructionTranslatorc                 H    U [         R                  [        R                  4;   $ N)object__setattr__BaseExceptionvals    ^/var/www/fran/franai/venv/lib/python3.13/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrr>   l       6%%}'@'@AAA    c                 H    U [         R                  [        R                  4;   $ r7   )r8   __delattr__r:   r;   s    r=   is_standard_delattrrC   p   r?   r@   c                    / 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_apirE   _pytest.recwarnrF   appendImportErrorsysmodulesget&_AssertRaisesRegexWithHighlightContext)ctxf_ctxsrE   rF   ms        r=   is_forbidden_context_managerrR   t   ss    F43m$o& KKOO?@@q@a>>?=  s   .A7 7
BBc                        \ rS rSr% \\S'   Srg)UserDefinedVariable   value N)__name__
__module____qualname____firstlineno__r8   __annotations____static_attributes__rW   r@   r=   rT   rT      s    Mr@   rT   c                     ^  \ rS rSr% \\   \S'   SU 4S jjrS rS r	S\
4S jr\\R                  S 5       5       r\\R                  S	 5       5       r\\R                  S
 5       5       r\S 5       rS rSS jrSSS\
SS4U 4S jjrSS jr      SU 4S jjr        SU 4S jjrS rSSS\
SS4U 4S jjrSU 4S jjrSrU =r$ )UserDefinedClassVariable   rV   returnc                 2   > [         TU ]  " S0 UD6  Xl        g NrW   )super__init__rV   selfrV   kwargs	__class__s      r=   re   !UserDefinedClassVariable.__init__   s    "6"
r@   c                     U R                   $ r7   rV   rg   s    r=   as_python_constant+UserDefinedClassVariable.as_python_constant       zzr@   c                     U R                   $ r7   rl   rm   s    r=   as_proxy!UserDefinedClassVariable.as_proxy   rp   r@   c                 N    U R                   R                   SU R                   S3$ N())ri   rX   rV   rm   s    r=   __repr__!UserDefinedClassVariable.__repr__   s$    ..))*!DJJ<q99r@   c                  ~    [         R                  [         R                  [         R                  [         R                  1$ r7   )torchdevicefinfoiinfoSizerW   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xpuhasattr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            	         [        [        5       V s/ s Hg  n [        [        [        U 5      [        5      (       d  M(  [        [        [        U 5      [        5      (       d  MM  [        [        U 5      R                  PMi     nn [        R                  [        R                  [        R                  [        R                  1R                  U5      $ s  sn f r7   )dirbuiltins
isinstancegetattrtype
issubclassr:   __new__r8   dicttuplelistunion)name
exceptionss     r=   supported_c_new_functions2UserDefinedClassVariable.supported_c_new_functions   s    
 H
%'(D148 , 78T2MB ,GHd#++% 	 
 NNLLMMLL	

 %

	
s   'C!C"Cc                 0    U [         R                  5       ;   $ r7   )r_   r   rl   s    r=   is_supported_new_method0UserDefinedClassVariable.is_supported_new_method   s     0JJLLLr@   c                 <    U R                   U R                  5       ;   $ r7   )rV   r   rm   s    r=   can_constant_fold_through2UserDefinedClassVariable.can_constant_fold_through   s    zzT88:::r@   txr5   c                    UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[	        U[
        R                  5      (       + $ X R                  R                  ;   $ NT
deleted_ok	outputside_effectshas_pending_mutation_of_attr	load_attrr   r	   DeletedVariablerV   __dict__rg   r   keymutated_attrs       r=   has_key_in_generic_dict0UserDefinedClassVariable.has_key_in_generic_dict   f    99!!>>tII9911;;DRV;WL!,	0I0IJJJjj))))r@   r   r/   c                   > SSK JnJn  U R                  b  [	        U R                  U5      OS nUS:X  a%  UR                  U R                  R                  5      $ US:X  a%  UR                  U R                  R                  5      $ US:X  a  SU0n[        R                  " X40 UD6$ U R                  [        R                  [        R                  1;   a  US:X  a  [        T	U ]=  X5      $  [         R"                  " U R                  U5      nUS:X  a)  [*        R-                  W5      (       a  [        T	U ]=  X5      $ U[.        ;   a4  [1        W[2        R4                  5      (       d  [        R                  " XUS	9$ [1        W[6        5      (       a0  [8        R:                  " XR=                  U R                  5      U5      $ [1        U[>        5      (       ay  [1        UR@                  [B        5      (       a;  [        RD                  " UR@                  RF                  5      RI                  X/0 5      $ [        RJ                  " UR@                  XS	9$ [1        U[2        RL                  5      (       a3  UR=                  S U R                  5      n[8        R:                  " XU5      $ U(       ae  [         RN                  " U5      (       d  [P        RR                  S
:  a6  US:X  a0  [8        R:                  " XR=                  U R                  5      U5      $ URU                  U5      (       a  UR                  U5      $ [1        U[V        RX                  5      (       a  U" U5      $ U[[        U R                  S0 5      ;   dD  U R                  R\                  R_                  S5      (       d  U R                  R\                  S:X  a  U(       a  [8        R:                  " XU5      $ U(       aB  [         R`                  " U5      (       d'  [c        U5      (       d  [8        R:                  " XU5      $ [        T	U ]=  X5      $ ! [$         a5    ['        U R                  5      [&        L a  [)        [$        U5         GNZS n GN_f = f)Nr,   )ConstantVariableEnumVariablerX   rZ   r   sourcefromkeysr   r   )      __mro__ztorch.r{   )2 r   r   r   r   createrV   rX   rZ   r	   GetAttrVariablecollectionsOrderedDictdefaultdictrd   var_getattrinspectgetattr_staticAttributeErrorr   r   r_   r   r   r   typesFunctionTypestaticmethodr/   build__get__classmethod__func__propertyUserFunctionVariablefgetcall_functionUserMethodVariableClassMethodDescriptorTypeismemberdescriptorrK   version_info
is_literalenumEnumr   rY   
startswithismethoddescriptorr#   )
rg   r   r   r   r   r   optionsobjfuncri   s
            r=   r   $UserDefinedClassVariable.var_getattr   sa   426++2IDKK.t:#**4::+>+>??^##**4::+B+BCCZ(G,,TC7CC JJ;22K4K4KLL
"7&r00	((T:C 9!9!Q!QRU!V!V7&r00))*S%BTBT2U2U,,TGGc<(("(([[-DfMM[))#,,11 55cll6G6GHVV  //dRRU<<== ;;tTZZ0D"((6::))#..  G+	0A&,,RTZZ1H&QQ&&s++#**3//TYY''$$WTZZR88JJ!!,,X66zz$$/&,,Rf== ..s333C88"((&99w"2,,i  	DJJ4'(< 	s   *!P, ,6Q+%Q+*Q+c                 H  ^^^^	^
^^ 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 jnU" U0 UD6u  mmmm	m
mUUU	U
UUU4S 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,   r   Nimeang        c                     U UUUUU4$ r7   rW   )weightsize_averageignore_indexreduce	reductionlabel_smoothings         r=   normalize_argsIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_args?  s       r@   c                    > SSK Jn  U" TTR                  R                  " S[        R
                  R                  R                  /[        U UT	TTTTT/0 5      Q76 S9$ )Nr,   wrap_fx_proxyr   r   proxy)	builderr   r   create_proxyr{   nn
functionalcross_entropyr(   )
inputtargetr   r   r   
reduce_argr   r   r   r   s
      r=   fake_cross_entropy_lossRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_lossY  so    . ii,,#HH''55 '!""((&%+	  r@   )r   r   r   r	   LambdaVariable)rg   r   argsrh   r   r   r  r   r   r  r   r   r   s    `     @@@@@@r=   _call_cross_entropy_loss1UserDefinedClassVariable._call_cross_entropy_loss3  s     	' $**40)006)006#**40&--f5,33C8	0 D+F+	
	 	0 ''(?@@r@   c                   > US:X  a  [        U5      S:X  a  U(       d  SU R                  R                  ;  am  U R                  nU R                  (       a!  [	        U R                  S5      n[        U5      n[        R                  " XR                  R                  5       U5      $ U R                  [        R                  [        R                  1;   a,  US:X  a&  SSKJn  UR                  " XR                  /UQ70 UD6$ US:X  aS  [        U5      S:X  aD  [        US   S5      (       a0  [         R"                  " U R                  US   R                  :H  5      $ US:X  aS  [        U5      S:X  aD  [        US   S5      (       a0  [         R"                  " U R                  US   R                  :g  5      $ US	:X  a  U R                  [        R                  L a  [%        US   [&        5      (       an  US   R                  [        R                  L aN  [        U5      S:X  d   e[        U5      S:X  d   e[         R(                  " 0 [        R                  [+        5       S
9$ US	:X  a[  [&        R-                  U R                  R.                  5      (       a-  UR0                  R2                  R5                  U US   USS  5      $ [6        TU ]q  XX45      $ )N__subclasses__r   r   r,   )BuiltinVariable__eq__rV   __ne__r   mutation_type)lenrV   r   r   r   r   r/   r   r  r   r   r   builtinr  call_custom_dict_fromkeysr   r	   r   r   r_   ConstDictVariabler.   r   r   r   r   track_new_user_defined_objectrd   call_method)rg   r   r   r  rh   r   r  ri   s          r=   r  $UserDefinedClassVariable.call_methods  sM    $$D	Q 

(;(;;[[F{{#DKK1AB1&9"((ZZ-F-F-H&QQJJ;22K4K4KLL
"0"<<JJ!%)/  X#d)q.WT!Wg5N5N--djjDGMM.IJJX#d)q.WT!Wg5N5N--djjDGMM.IJJ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 
 w"2T::r@   c                   > SSK Jn  SSKJn  [	        X#5      nU R                  5       (       a  U(       a  [        R                  R                  U R                  5       " U Vs/ s H  owR                  5       PM     sn0 UR                  5        VV	s0 s H  u  pXR                  5       _M     sn	nD65      $ U R                  [        R                  R                  L a  U R                  XU5      $ U R                  [         R"                  L a  SSKJn
  U
" 5       $ U R                  [(        R*                  L a9  UR-                  [.        R0                  " U[2        R4                  5      U /UQU5      $ U R                  [(        R6                  L aR  [9        U5      S::  aC  [:        R<                  " US   5      (       a%  [;        0 [(        R6                  US   [?        5       S9$ [A        U R                  5      (       aT  U R                  RB                  (       a  [E        S5        [        RF                  " [H        5      RJ                  " U/UQ70 UD6$ U R                  [(        RL                  L Gad  [        R                  R                  S 5      nU(       d  [9        U5      S:X  a  / nGO[9        U5      S:X  a.  US   RO                  U5      (       a  US   RQ                  U5      nO[9        U5      S:X  a3  US   RO                  U5      (       a  US   RQ                  U5      nUS   nO[E        S	5        Oy[S        U5      S
:X  a_  US   n[9        U5      S:X  a  / n[9        U5      S:X  a.  US   RO                  U5      (       a  US   RQ                  U5      nO[E        S5        O[E        S5        [        RT                  RW                  WU[?        5       S9$ U R                  [X        RZ                  L aN  [9        U5      S:  a  US   nO[        R                  R                  S 5      n[        R\                  " US   U5      $ U R                  [^        R`                  L a:  U(       d  [E        S5        US   nUSS  n[        Rb                  Re                  XUS9$ U R                  [f        Rh                  L a&  U(       d  [        Rj                  R                  X5      $ U R                  [        Rl                  Rn                  L a`  U(       dY  [9        U5      S:X  aJ  US   Rq                  5       (       d   e[        Rr                  R                  XS   R                  5       5      $ [u        [w        U R                  5      [v        5      (       Ga  [y        U R                  S5      (       Ga  [y        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dp  SSK1JAnJBn  U R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  4;   a  [E        U R                   S35        U R                  [         R                  L af  [        US   U5      (       aR  [        R                  R                  R                  (       d  [E        S5        U" US   US   R~                  S9/USS  -   nUR                  R                   R                  [        RF                  " [        5      U U5      nUR                  USX#5        U$ [        U R                  5      (       Gah  [        U R                  5      nU R                  R                  S:X  a/  [9        U5      S:X  d   eU(       a   eUS   RQ                  U5      nOU R                  R                  n[        U5      nUR                  S /[9        U5      [9        U5      -
  -  5        0 n[        UU5       H>  u  nnUb  M  UU;   a  UU   nO"UU;   d   e[.        R0                  " UUU   5      nUUU'   M@     UR                  5        H"  u  nnUU;   d   eUUUR                  U5      '   M$     [        S U 5       5      (       d   e[        R                  " XR                  5      $ U R                  [        R                  L a?  [        RF                  " [R        5      R                  XU5      n[        UR                  5      $ [        U R                  5      (       Ga  U R{                  5       (       Ga  [        R                  " U R                  5      n[        U R~                  5      n[        U5      nUR                  S /[9        U5      [9        U5      -
  -  5        0 n[        [        R                  " 5       UU5       H  u  nnnUb  M  UR                  U;   a  UUR                     nOUR                  (       d  M?  UR                  [        R                  La5  [.        R0                  " UUR                  [        [        UU5      S5      S9nOTUR                  [        R                  La5  [.        R0                  " UUR                  5      n U R                  U/ 0 5      nOM  UUUR                  '   M     UR                  U5        UR                  R                   R                  [        RF                  " [        5      X5      n!U!R                  USX#5        U!$ U R                  U R                  5       ;   d  [        U R                  5      (       Ga  [        (       a  U R                  [        ;   a  [9        U5      S:X  a  [        US   [        R                  5      (       a}  [9        US   R                  5      S:  aa  [        S US   R                   5       5      (       a=  U" UUR                  R                  " S[        R                  /[        X#5      Q76 S9n"U"/nU" UUR                  R                  " SU R                  /[        X#5      Q76 S9n#U#$ U R                  [        R                  L ad  [9        U5      S:X  a2  [        US   [        R                  5      (       a  US   R                  n$OS n$[        R                  " U$5      n%[        U%5      $ U R                  [        R                  L aJ  [9        U5      S:X  a;  [        US   [        R                  5      (       a  [        R                  " US   5      $ UR}                  U R                  5      (       a^  U R~                  (       aM  [        5          UR-                  [.        R0                  " U[2        R                  5      U /UQU5      sS S S 5        $ [        T&U G]y  XU5      $ s  snf s  sn	nf ! , (       d  f       N*= f)Nr   )SideEffectsr,   r   )NullContextVariabler   r  z*TypedDict with optional keys not supportedz*deque() with more than 2 arg not supported)maxlenr  z*deque() with more than 1 arg not supportedz)deque() with invalid kwargs not supported)r  r  zfunctools.partial malformed)r  keywords	__enter____exit__)BaseUserFunctionVariable3FunctionDecoratedByContextlibContextManagerVariablez 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contextlib.contextmanagerr   re   ztorch.return_typesc              3   (   #    U  H  oS Lv   M
     g 7fr7   rW   .0xs     r=   	<genexpr>9UserDefinedClassVariable.call_function.<locals>.<genexpr>^  s     8%QD=%s   defaultc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr7   )r   r	   TensorVariabler#  s     r=   r&  r'    s      WA
1i&>&>??s   ')r   r   )r   r  r   r   r   r   r	   r   r   rn   itemsrV   r{   r   CrossEntropyLossr	  
contextlibnullcontextctx_managerr  r   r   inline_user_function_returnr/   r   r   construct_dictr   r  r0   is_supported_argr.   r   __optional_keys__r   r  r   	call_dictdequehas_force_unpack_var_sequenceforce_unpack_var_sequencer   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   rR   r   r!  _AsyncGeneratorContextManagerclosingredirect_stdoutredirect_stderrsuppress	ExitStackAsyncExitStack_GeneratorContextManagerr   _dynamoconfigenable_trace_contextlibr   r  r8   r  r!   r&   rY   _field_defaultsr   extendzipindexallNamedTupleVariabler   r   r1   r   dataclassesfieldsr   	itertoolscountr   initr(  MISSINGr   r   default_factoryr   r   r   npr)   ListVariabler   stackr(   randomRandomRandomVariabler   MappingProxyTyper  MappingProxyVariabler   %instantiate_user_defined_class_objectrd   )'rg   r   r  rh   r  r   constant_argsr%  kvr  r  r+  callbackfn	rest_argsr   r!  cm_objrZ  field_defaultsvar_tracker_kwargs
field_namevar_tracker	field_varr   rV   tupfields_sourcedefault_kwargsindfield
factory_fnvarstackedtensor_variableseedrandom_objectri   s'                                         r=   r   &UserDefinedClassVariable.call_function  s}    	/*+D9))++--44'')6:;d**,d;=C\\^L^TQq..00^L  ZZ588444006BBZZ:1118&((ZZ;22211%%b)*B*BC  JJ+111D	Q#44T!W==&''Q.0	  $**%%zz++JK,,T2<<RQ$Q&QQZZ;,,,//66t<Ft9>EY!^Q(M(Mb(Q(Q G==bAEY!^Q(M(Mb(Q(Q G==bAE!!WF!"NOv+-)t9>Et9>d1g&K&KB&O&O G==bAE!"NOIJ??00f4D4F 1   ZZ7;;&4y1}7$55<<TB,,T!Wh??ZZ9,,,;<aBQRI &&??V @   ZZ82224<<CCBOOZZ5::,,,VD	Q7--//////66r7;U;U;WXXtDJJ'..

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

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

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 ,Q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W ())00' +48  y+ii,,#JJ 't4O #"ZZ6==(4yA~*T!Wi6P6P"Q"QAw}}"MM$/M!-00JJ%000D	Q47I$?$?@@ 11$q'::;;DJJGGDKK5755#))IKK MDM 87 w$Rv66g <LT 87s   "x=y)9y
y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   rV   r   r   r   r8   r   )rg   new_fns     r=   rF  (UserDefinedClassVariable.is_standard_new  s?    ''

ItDfl++__F''r@   c                   > U R                   (       ah  [        U R                   U5      n[        UR                  [        R
                  5      5        [        R                  " [        U R                  U5      5      $ [        TU ]-  X5      $ r7   )r   r   r   
make_guardr   HASATTRr	   r   r   rV   rd   call_obj_hasattr)rg   r   r   r   ri   s       r=   r  )UserDefinedClassVariable.call_obj_hasattr  sa     ;;T2F&++L,@,@AB--gdjj$.GHHw'11r@   c                 Z   > US:X  a  U R                   R                  $ [        TU ]  X5      $ )NrX   )rV   rX   rd   const_getattrrg   r   r   ri   s      r=   r  &UserDefinedClassVariable.const_getattr  s+    :::&&&w$R..r@   rl   ra   Nr   r5   r  list[VariableTracker]rh   dict[str, VariableTracker]ra   r/   r   r5   r  r  rh   r  ra   r/   )rX   rY   rZ   r[   r   r8   r\   re   rn   rr   strrx   r   r=  cacher   r   r   r   r   r   r   r	  r  r   rF  r  r  r]   __classcell__ri   s   @r=   r_   r_      sS   <:# : __
  
 __F  F: __   M M
;*N-5 N-S N-EV N-`>A@2; &	2;
 -2; 
2;hb7#b7 &b7 -	b7
 
b7H	(2)2142	2/ /r@   r_   c                   *    \ rS rSr\S 5       rS rSrg)!UserDefinedExceptionClassVariablei  c                     U R                   $ r7   rl   rm   s    r=   rm  $UserDefinedExceptionClassVariable.fn  s    zzr@   c                     U R                   $ r7   rl   rm   s    r=   python_type-UserDefinedExceptionClassVariable.python_type  rp   r@   rW   N)rX   rY   rZ   r[   r   rm  r  r]   rW   r@   r=   r  r    s     r@   r  c                       \ rS rSrSrg)NO_SUCH_SUBOBJi  rW   NrX   rY   rZ   r[   r]   rW   r@   r=   r  r        r@   r  c                    SSK Jn  U Vs/ s H  oUR                  5       PM     nnUR                  5        VVs0 s H  u  pgXgR                  5       _M     nnn[	        U R
                  R                  5      nU" U0 UD6n	[        U5      n
U R
                  R                  R                  XU45        U" X
5      R                  U	5      $ s  snf s  snnf )Nr,   )VariableBuilder)
r   r  rn   r+  r  r   random_callsr   rI   wrap_unspecialized_primitive)r   rm  r  rh   r  r%  rj  rk  random_call_indexexample_valuer   s              r=   call_random_fnr    s    (,01Dq  "DD14:LLNCNDAa%%''NFCBII223''M01FII!!2V"45 2&CCMRR 2Cs
   CCc                     ^  \ rS rSrSrSSS1\R                  krSSSSS. S*U 4S	 jjjrS\4S
 jr	S\4S jr
S rS rU 4S jrU 4S jrS rS rS+S jr\\R(                  S 5       5       rS r      S,U 4S jjr S- S+S jjrS rU 4S jrS rS r        S.U 4S jjrS rS  rS! r S" r!S# r"S+S$ jr#S% r$S+S& jr%SSS'\SS4S( jr&S)r'U =r($ )/UserDefinedObjectVariablei  zW
Mostly objects of defined type.  Catch-all for something where we only know the type.
rV   
value_typeattrs_directly_modifed_on_dictN)r  
cls_sourcebase_cls_vt	init_argsra   c                .  > [         TU ]  " S0 UD6  Xl        U=(       d    [        U5      U l        [        U5      U R                  L d   eX0l        Uc'  U R                  b  [        U R                  5      U l        X@l        XPl	        [        5       U l        g rc   )rd   re   rV   r   r  r  r   r   r  r  r   r  )rg   rV   r  r  r  r  rh   ri   s          r=   re   "UserDefinedObjectVariable.__init__	  s}     	"6"
$3UE{doo---$$++"9(5DO '" /2e+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_descriptormethodrX   rv   rw   )r  rX   r  r   rV   ri   )rg   inners     r=   __str__!UserDefinedObjectVariable.__str__*  sU    (( 
 
 

J=>E..))*!E7!44r@   c                 b    U R                   R                   SU R                  R                   S3$ ru   ri   rX   r  rm   s    r=   rx   "UserDefinedObjectVariable.__repr__5  +    ..))*!DOO,D,D+EQGGr@   c                     gNFrW   rg   r   s     r=   is_underlying_vt_modified3UserDefinedObjectVariable.is_underlying_vt_modified8  s    r@   c                     U R                   $ r7   r  rm   s    r=   r  %UserDefinedObjectVariable.python_type;  s    r@   c                   > SS K Js  Jn  UR                  U R                  5      (       aK  U R
                  b>  [        U R
                  R                  [        R                  5      5        U R                  $ [        TU ]1  5       $ )Nr   )torch.utils._pytreeutils_pytreeis_constant_classr  r   r   r  r   EQUALS_MATCHrV   rd   rn   )rg   pytreeri   s     r=   rn   ,UserDefinedObjectVariable.as_python_constant>  s_    ,,##DOO44{{&dkk44\5N5NOPzz! w)++r@   c                    > U R                   (       a>  [        U R                   R                  [        R                  5      5        U R
                  $ [        TU ]  5       $ r7   )r   r   r  r   ID_MATCHrV   rd   guard_as_python_constant)rg   ri   s    r=   r  2UserDefinedObjectVariable.guard_as_python_constantI  s?    ;;$++001F1FGH::w/11r@   c                 8    [        U 5      (       d
   SU  35       eg )Nz<calling torch function on object without __torch_function__ )r   rm   s    r=   torch_function_check.UserDefinedObjectVariable.torch_function_checkO  s$    !$'' 	
J4&Q	
'r@   c                 >    U R                  5         SSKJn  U" X5      $ )Nr,   )get_torch_function_fn)r  torch_functionr  )rg   r   r  s      r=   get_torch_fn&UserDefinedObjectVariable.get_torch_fnT  s    !!#9$R..r@   r   r5   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  )rg   r   rm  r   r  rh   r  s          r=   r  -UserDefinedObjectVariable.call_torch_functionZ  s;    !!#7"b!
 	
r@   c                      [         R                   [         R                  [         R                  [         R                  1n U $ r7   )rc  randint	randrangeuniform)fnss    r=   _supported_random_functions5UserDefinedObjectVariable._supported_random_functionsh  s0     MMNNNN	
 
r@   c                     U[        U R                  S0 5      ;  a+   [        R                  " [	        U R                  5      U5      $ g ! [
         a     g f = f)Nr   )r   rV   r   r   r   r   )rg   r   s     r=   _maybe_get_baseclass_method5UserDefinedObjectVariable._maybe_get_baseclass_methods  sT    wtzz:r::--d4::.>EE  " s   )A 
AAr/   c                   > SSK JnJn  U R                  U5      nUGb  U[        R
                  L a  UR                  S 5      $ [        U5      (       d)  [        U R                  [        R                  5      (       a  U R                  " U/UQ70 UD6$ [        U5      (       a(  U R                  XS   [        R                  " 5       5      $ U[        R                   L az  [#        U5      S:X  ak  U(       dd  US   n[        U[$        5      (       d#  [        R                  R                  [&        5      $ UR                  U R                  UR                  L 5      $ [(        R*                  R,                  R.                  (       a4  [        U R                  [0        R2                  5      (       a  [5        S5        [        U[0        R6                  5      (       au  U R8                  c  S O[;        [;        U R8                  S5      U5      n	SSKJn
  U[(        R@                  RB                  R
                  L a  U
nU" XpU	S9RE                  XU5      $ U[F        RH                  L al  U R8                  (       a[  U(       dT  U(       dM  [K        U R8                  RM                  [N        RP                  5      5        U" [#        U R                  5      5      $ [R        TU ]  XX45      $ )	Nr,   )r   r   r   z,Generator as graph argument is not supportedri   r   unpatched_nn_module_initr   )+r   r   r   r  r8   re   r   r>   r   rV   	threadinglocalmethod_setattr_standardrC   r	   r   r  r  r  NotImplementedr{   rP  rQ  "enable_faithful_generator_behaviorr   GeneratorTyper   r   r   r   mutation_guardr  r   Moduler   r   __len__r   r  r   SEQUENCE_LENGTHrd   r  )rg   r   r   r  rh   r   r   r  otherr   r  ri   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$55<<^LL (..tzzU[[/HII}}##FF:

E//L L LM &%"4"455 {{* #Jt{{K$H$O  FUXX__5555F)&vFTTf  %$++tvdkk44\5Q5QRS'DJJ88w"2T::r@   c                     UR                  5       nUR                  R                  R                  U 5      (       d  [        SU  SU S35        U(       a  U R                  R                  U5        OU R                  U5      nU(       a  Uu  pgS nS n	U R                  (       a&  U R                  U5      n[        [        U5      S5      n	[        R                  " XU5      n
[        R                  " XU	5      nXU/nUR                  X0 5      $ UR                  R                  R!                  XU5        ["        R$                  " S 5      $ ! [         a    [        SU 35         GNQf = f)Nznon-const setattr name: zsetattr(z, z, ...)__set__)rn   NotImplementedErrorr   r   r   is_attribute_mutationr  add$try_get_descritor_and_setter_py_funcr  get_source_by_walking_mror   r   r/   r   r   
store_attrr	   r   )rg   r   r   rV   directly_update_dicttmp
descriptorsetterdesc_sourcefunc_sourcedesc_varfunc_varr  s                r=   r  1UserDefinedObjectVariable.method_setattr_standard  s>   	=**,D yy%%;;DAAHTF"TF&9://33D9;;DAC%("
 #"??"&"@"@"FK",Z-Di"PK*00M*00[I .--b;;
 			))$e<))$//9 # 	=4TF;<	=s   E E$#E$c                     [        [        R                  " U R                  SS 5      5      (       + =(       a)    [	        U R                  [
        R                  5      (       + $ )Nr9   )r>   r   r   rV   r   r  r  rm   s    r=   needs_slow_setattr,UserDefinedObjectVariable.needs_slow_setattr  sD    &""4::}dC
 
 :TZZ99	:r@   c           
      X  > U R                   (       Ga  U R                  S5      [        R                  L a  U R                  S5      [        R                  L a  U R                  S5      [        R
                  L a  [        U R                   R                  [        R                  5      5        [        [        U R                  5      5       Vs/ s HB  n[        R                  R                  U R                  U   [!        U R                   U5      S9PMD     sn$ ["        TU ]I  U5      $ s  snf )N__iter__r  __getitem__r   )r   r  r   r  r  r  r   r  r   r  ranger  rV   r	   LazyVariableTrackerr   r   rd   unpack_var_sequence)rg   r   rj  ri   s      r=   r  -UserDefinedObjectVariable.unpack_var_sequence  s    KKK00<M00;t||K00?4CSCSS$++001M1MNO s4::/
 0A	 --44JJqM(a8 5  0  w*2..s   A	D'c                 *    U R                  US/ 0 5      $ )N__next__)r  rg   r   s     r=   next_variable'UserDefinedObjectVariable.next_variable  s    JB77r@   c                 ^     U R                   U R                  5       ;   $ ! [         a     gf = fr  )rV   r  	TypeErrorrm   s    r=   is_supported_random-UserDefinedObjectVariable.is_supported_random  s1    	::!A!A!CCC 		s    
,,c                 F  > 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a  U R                  R                  nU R                  R                  nU[        R                  R                  R                  R                  L al  [        R                   R#                  UR$                  5      (       a>  U(       d7  U(       d0  [        R                   " UR$                  5      R'                  XU5      $ U[        R(                  R*                  R,                  R                  L a  UR$                  [        R(                  R*                  R,                  L aQ  [        R.                  " UR0                  5      n[        R                   " UR$                  5      R'                  X/U5      $ U R2                  c  [5        S5        [7        U R2                  S5      n[8        R:                  " XU5      n[7        U R2                  S5      n	[8        R:                  " XU	5      n
UR'                  X/U-   U5      $ [=        U R                  5      (       ab  U R2                  (       a>  [7        U R>                  S5      n[A        URC                  [D        RF                  5      5        U RI                  USX#5      $ [J        TU ]M  XU5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr7   rD  )r$  rj  s     r=   r&  :UserDefinedObjectVariable.call_function.<locals>.<genexpr>   s     9Dq((**D   c              3   @   #    U  H  oR                  5       v   M     g 7fr7   r  )r$  rk  s     r=   r&  r    s     DOq((**Or  z9Sourceless UserDefinedObjectVariable method not supportedr   __self____call__)&r  rW  valuesr  rV   r$   r   
MethodTyper   r   r{   r  _contextlib_DecoratorContextManagercloner	   TorchCtxManagerClassVariableis_matching_clsri   r   autograd	grad_modeinference_moder   moder   r   r   r/   r   callabler  r   r  r   FUNCTION_MATCHr  rd   )rg   r   r  rh   r   r   r{  func_srcr  obj_srcobj_varr   ri   s               r=   r   'UserDefinedObjectVariable.call_function  sD    $$&&9D999DFMMODDD!"jj$??DJJ 0 011::&&D**%%C//HHNNN::JJMM   ==MM-&12
 00??EEEMMU^^%=%=%L%LL  00: ==MM-E623 {{"O "$++z:H&,,Rx@H j9G%++BW=G))"i$.>GGdjj!!{{#DOOZ@f//0K0KLM##B
DAAw$Rv66r@   c                 ,    [        U R                  5      $ r7   )r   rV   rm   s    r=   _check_for_getattr,UserDefinedObjectVariable._check_for_getattr-  s    !$**--r@   c                     [        U[        5      (       d  g[        UR                  [        R                  5      =(       d=    [
        R                  R                  R                  R                  UR                  5      $ r  )
r   r   r   r   BuiltinFunctionTyper{   _CrP  r  is_instancemethod)rg   subobjs     r=   _is_c_defined_property0UserDefinedObjectVariable._is_c_defined_property0  sY    &(++ KK22
 CXX##55fkkB	Cr@   c                    [         R                  " U R                  U[        5      n[	        U R                  5      (       d  U[        L dL  [         R
                  " U5      (       d1  [         R                  " U5      (       d  U R                  U5      (       a1  [        U R                  5      R                  U R                  U5      nU$ [	        U R                  5      (       a  U[        L a  [        eU$ r7   )r   r   rV   r  r'   r   isgetsetdescriptorr;  r   __getattribute__r   )rg   r   r:  s      r=   _getattr_static)UserDefinedObjectVariable._getattr_static<  s    ''

D.I 'tzz22n$))&11))&11**622 $**%66tzz4HF  %TZZ00V~5M ! r@   c                    [         R                  " [        U R                  5      US 5      n[         R                  " [        U5      SS 5      nU(       a,  [         R                  " U5      (       a  gXR
                  ;   a  gg)Nr  TF)r   r   r   rV   
isfunctionr  rg   	attr_namer   r  s       r=   should_skip_descriptor_setter7UserDefinedObjectVariable.should_skip_descriptor_setterV  sc    ++D,<iN
''Z(8)TJ!!&)) AAAr@   c                     [         R                  " [        U R                  5      US 5      n[         R                  " [        U5      SS 5      n[         R                  " U5      (       a  X#4$ g )Nr  )r   r   r   rV   rC  rD  s       r=   r  >UserDefinedObjectVariable.try_get_descritor_and_setter_py_funcd  sU    ++D,<iN
''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                  ;   $ r   r   r   s       r=   r   1UserDefinedObjectVariable.has_key_in_generic_dictk  r   r@   c                 r   U R                   c   e[        [        U R                  5      R                  5       HN  u  p#XR
                  ;   d  M  [        U R                   S5      n[        XB5      n[        US5      n[        Xa5      s  $    [        SU S[        U R                  5      R                   35        g )Nr   r   zCould not find z in )	r  	enumerater   rV   r   r   r   r   r   )rg   r   idxklass
mro_sourceklass_sourcedict_sources          r=   r  3UserDefinedObjectVariable.get_source_by_walking_mror  s    ***#D$4$<$<=JC~~%'C
,Z=(zB %[77 > 	vT$tzz2B2J2J1KLMr@   c                    SSK Jn  SSK Jn  U R                  (       a  [	        U R                  U5      OS n[        U R                  5      (       a  [        R                  " [        U R                  5      S5      nU R                  (       a  [	        U R                  S5      n [        R                  " X`WS9R                  XR                  U5      /0 5      $ UR                   R"                  R%                  X5      (       aU  UR                   R"                  R'                  XSS9n[)        U[        R*                  5      (       a  [-        [.        U5        U$ US	:X  a  S
U0n	[        R0                  " X40 U	D6$ US:X  a4  Un
U
c  U R2                  n
S
U
0n	[5        [        U R                  5      40 U	D6$  U R7                  U5      nSSK0J1n  U[P        RR                  RT                  Rd                  L a  Un[)        U[f        5      (       am  U R                  (       a,  [	        [	        U R                  S5      U5      n[	        US5      n[        R                  " URh                  XS9R                  U/ 0 5      $ [)        U[j        Rl                  5      (       aF  URo                  5       u  nu  nn[)        U [p        5      (       d   eU Rr                  Rt                  U   $ [)        U[v        5      (       a3  URy                  U R                  5      n[z        R|                  " UUU5      $ [)        U[~        5      (       a0  [        R                  " UR                  U R                  US5      US9$ [)        U[<        R                  5      (       a4  URy                  U R                  S 5      n[z        R|                  " UUU5      $ [        U5      (       a  [        R                  " USXS9$ [        R                  " [        U5      S[8        5      [8        La  [        [        U5      Rx                  5      (       d  S nS nU R2                  (       a>  U R                  U5      n[	        [        U5      S5      n[z        R|                  " XU5      nO[        U5      n[5        [        U R                  5      5      n[        R                  " URx                  R                  UUS9R                  XU/0 5      $ [)        U[<        R>                  5      (       dT  [)        U[<        R                  5      (       Ga+  [)        U R                  [P        RR                  RT                  5      (       Ga  [        U R                  U5      nUUL aL  [        US5      (       a;  UR                  nUnU(       a  [	        US5      OS nUUL a  [        US5      (       a  M;  [)        U[<        R                  5      (       a  UR                  U R                  La  [)        UR                  [<        R>                  5      (       d  [_        SU 35        S nUb  [	        US5      n[z        R|                  " UUR                  U5      n[        R                  " UR                  U5      $ UR                  nO#[)        U[<        R>                  5      (       d   eUn[        R                  " U5      (       a  [        R                  " UXS9$ [        R                  " U5      (       aR  [        U5      (       a	  [        US9$ Ub  UR                  U5      R                  UUS9$ UR                  U5      " U5      $ [P        R                  R                  R                  (       d  [)        U [        R                  5      (       a  U(       a  [)        U [        RB                  5      (       aq  UR                   R                  (       a)  [P        R                  R                  R                  (       a-  US;   a  [        U R                  U5      nU R                  U5      nU[8        La  [        U5      (       a  S
U0n	[        R0                  " X40 U	D6$ U(       a  [        R                  R                  X5      $ U R2                  bk  [        R                  " U R                  R                  U[8        5      nUUL a6  [	        U R2                  U5      n[        R                  R                  UU5      $ [z        R|                  " X5      $ [-        [.        U5        g ! [         a    [        U5         GNif = f! [.         Ga    [8        nU R;                  5       n[)        U[<        R>                  5      (       Ga  U[@        L a  [)        U [        RB                  5      (       a  [E        U R                  RF                  [H        5      (       ad  [E        U R                  RJ                  [H        5      (       a;  [E        U R                  RL                  [H        5      (       a  U RO                  X5      nO^S nU R                  (       a  [	        U R                  S5      n[        R                  " XUS9R                  XR                  U5      /0 5      nU R                  (       a  U[P        RR                  RT                  RV                  L aX  [)        U[        RB                  [        RX                  45      (       a)  UR[                  [	        U R]                  5       U5      5        Us $ Ub  [_        S5         G	Nzf = f)Nr   )trace_rulesr,   r   r?  r   Tr   r   r   ri   __getattr__z)UserDefined with non-function __getattr__r  r   __wrapped__r   _torchdynamo_inlinez7Found a method whose __func__ is not of FunctionType - r   )_buffers_parameters)^r   rU  r   r   r   r'   rV   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r_   r@  r  r4  r   r   r+   UnspecializedNNModuleVariabler$   rZ  r   rY  _modules manually_trace_nn_module_getattrr{   r   r  rV  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   r  r  re   r   r   _collections_tuplegetter
__reduce__UserDefinedTupleVariable	_tuple_vtr+  r   r   r/   r   r   r   r   r   r    WrapperUserMethodVariabler#   r  r   r  r#  r   r   rX  r   ismethodrC  r"   r   lookupcreate_with_sourcerP  rQ  inline_inbuilt_nn_modulesFSDPManagedNNModuleVariableexportinstall_free_tensorsr   _wrap_sourcer  ri   )rg   r   r   rU  r   r   getattribute_fn
new_sourceresultr   r  r:  
getattr_fnoutr  _rN  r   descriptor_sourcedescriptor_get_sourcedescriptor_var	owner_vardynamic_subobjself_source	object_vtsubobj_from_classsrc_from_classs                              r=   r   %UserDefinedObjectVariable.var_getattr  s	   "&26++DKK.4"4::..%44TZZ "4O {{'5GH
. 33#*-%<%<T%B$CRHI 99!!>>tJJYY++55dT5RF&)";";<<(<M:(G,,TC7CC
 ;J!!__
,G+D,<HHH+	K))$/FX 	>UXX__----Ffh''{{#Jt{{K$H$O#FF3//TmBB'(  9 9:: !++-KAxQ d$<====>>'',,-- >>$**-D"((T6::,,//!1!1"k!B6   ? ?@@>>$**d3D"((T6::*622 66t  ##L)^
 (GL  )
 )
 !%$(! %)$B$B4$H!(2019)% "1!6!6rCT!U ";6!B 1djj1ABI//''@UmBy 1267  2 233vu//004::uxx77
 %TZZ6N F*wv?T/U/U33!'FLF,ABRV !F*wv?T/U/U
 &%"2"233!**$**<%n&=&=u?Q?QRR%UVdUef #'K)&0&D / 5 5N33[!I %77&//  !&%*<*<====// 33D$NN##N33&t,,4FCC'&--d3FFV G   '--d3D99 $$>>dI$I$IJJ4!H!HII YY%%)=)=)R)R 227TJ&&v.F'.v66#V, 00GwGG 44;;FKK ??.(/(>(>

,,dN)% )F2)3DOOT)J(<<CC-~   ',,R88 	!4U * .)"-.4  )	K#F002J*e&8&899 "=="4)P)PQQtzz55t<<tzz22D99tzz22D99 ??IC!%J{{%/]%K
#66"#mB)@)@)F(GL  ;;:1L1L#L!%CC%66  66&t'F'F'H$O 
'IJS)	Ks+   "4d( 2e (e eG&l>,l>=l>r   c                    U R                   (       a<  [        [        U R                   U5      R                  [        R
                  5      5         U R                  X5      n[        R                  R                  [        U[        R                  5      (       + 5      $ ! [         a-    [        U5        [        R                  R                  S5      s $ f = fr  )r   r   r   r  r   r  r   r	   r   r   r   r   r   r   )rg   r   r   var_vts       r=   r  *UserDefinedObjectVariable.call_obj_hasattr|  s     ;;4;;-889M9MN	<%%b/F--44vy'@'@AA  & 	<%b)--44U;;	<s   AB 4CC)r  r  r  r  rV   r  r  r  r  )Fr  ))rX   rY   rZ   r[   __doc__rT   _nonvar_fieldsre   r  r  rx   r  r  rn   r  r  r  r  r   r=  r  r  r  r  r  r  r  r  r  r   r4  r;  r@  rF  r  r   r  r   r  r]   r  r  s   @r=   r  r    sv   
 	( 
	+	+	N 4 
4 4B	5 	5H# H	,2

/
 __  8; &	8;
 -8; 
8;v NS!0)!0F:
/"837#37 &37 -	37
 
37j.
C4*Nz5x<)<14<	< <r@   r  c                   j   ^  \ rS rSr\S 5       rS
SU 4S jjjrS rS rSU 4S jjr	S\
4S jrS	rU =r$ )FrozenDataClassVariablei  c           	      F   SSK Jn  [        U5      (       d   e0 nU" U5       Hr  n[        XR                  5      (       d  M  [
        R                  " U [        XR                  5      U=(       a    [        X%R                  5      5      XER                  '   Mt     [        XUS9$ )Nr   rZ  )rZ  r   )
rY  rZ  r   r   r   r/   r   r   r   r  )r   rV   r   rZ  	field_mapry  s         r=   r   FrozenDataClassVariable.create  s~    &"5))))	E]Eujj))(7(=(=E::.=z&**=)	**% # 'uvNNr@   ra   c                 >   > [         TU ]  " U40 UD6  Uc  0 nX l        g r7   )rd   re   rZ  )rg   rV   rZ  rh   ri   s       r=   re    FrozenDataClassVariable.__init__  s$    )&)>Fr@   c                    SSK Jn  SS KJs  Jn  [        U R                  UR                  UR                  UR                  45      (       d  [        S5      e/ n0 nU" U R                  5       Hp  nUR                  (       d  M  U R                  UR                     R                  5       n[        USS5      (       a  XdUR                  '   M_  UR                  U5        Mr     U R!                  5       nU" U0 UD6$ )Nr   r  z@currently can't reconstruct arbitrary frozen dataclass instanceskw_onlyF)rY  rZ  r  r  r  r$   rV   TreeSpecLeafSpecConstantNoder  r]  r   rn   r   rI   r  )rg   rZ  r  r  rh   ry  datactors           r=   rn   *FrozenDataClassVariable.as_python_constant  s     	',,JJ&//6;N;NO
 
 &R  DJJ'Ezzz{{5::.AAC5)U33)-5::&KK% ( !T$V$$r@   c                 L   SSK Jn  / n0 nU" U R                  5       Hm  nU R                  UR                     R	                  5       n[        US5      (       a!  UR                  (       a  XSUR                  '   M\  UR                  U5        Mo     U R                  5       nU" U0 UD6$ )Nr   r  r  )	rY  rZ  rV   r   rr   r   r  rI   r  )rg   rZ  r  rh   ry  r   r  s          r=   rr    FrozenDataClassVariable.as_proxy  s    &DJJ'EKK

+446Eui((U]]%*uzz"E" ( !T$V$$r@   c                 \   > X0R                   UR                  5       '   [        TU ]  XU5      $ r7   )rZ  rn   rd   r  )rg   r   r   rV   ri   s       r=   r  /FrozenDataClassVariable.method_setattr_standard  s*    16D++-.w.r??r@   c                 b    U R                   R                   SU R                  R                   S3$ ru   r  rm   s    r=   rx    FrozenDataClassVariable.__repr__  r  r@   r  r7   r  r  )rX   rY   rZ   r[   r   r   re   rn   rr   r  r  rx   r]   r  r  s   @r=   r  r    sE    O O  %<%,@H# H Hr@   r  c                   F   ^  \ rS rSr  SU 4S jjr      SS jrSrU =r$ )SourcelessGraphModuleVariablei  c                 (   > [         TU ]  " U40 UD6  g r7   )rd   re   rf   s      r=   re   &SourcelessGraphModuleVariable.__init__  s    
 	)&)r@   c                     [         R                  " U R                  R                  R                  5      nU /U-   nUR                  UUU5      $ r7   )r	   r   rV   forwardr   r0  )rg   r   r   r  rh   fn_variables         r=   r  )SourcelessGraphModuleVariable.call_method  sK      44TZZ5G5G5P5PQv}--
 	
r@   rW   r  r  )rX   rY   rZ   r[   re   r  r]   r  r  s   @r=   r  r    s:    * 
	*
 &	

 -
 

 
r@   r  c                   n   ^  \ rS rSrU 4S jr\S 5       rU 4S jr\S 5       rS	S jr	\S 5       r
SrU =r$ )
"UserDefinedExceptionObjectVariablei  c                 t   > [         TU ]  " U40 UD6  [        R                  " U R                  S5      U l        g rc   )rd   re   r	   ExceptionVariabler  exc_vtrf   s      r=   re   +UserDefinedExceptionObjectVariable.__init__  s-    )&)11$//2Fr@   c                     U R                   $ r7   r  rm   s    r=   rm  %UserDefinedExceptionObjectVariable.fn  s    r@   c                   > US:X  ax  U R                  U5      =n(       a`  [        R                  " U5      (       aE  [        U5      S:X  a6  X0R                  l        X0R                  l        [        R                  " S 5      $ US:X  af  [        U5      S:X  aW  [        US   [        R                  5      (       a5  US   R                  S;   a"  U R                  R                  XS   US   5        [        TU ]1  XX45      $ )Nre   r   r9   r   )	__cause____context____suppress_context____traceback__r,   )r  r   r   r  r  r  rV   r	   r   r   call_setattrrd   r  rg   r   r   r  rh   r  ri   s         r=   r  .UserDefinedExceptionObjectVariable.call_method  s    J;;DAAA**622Fq #KK"JJO--d33M!D	Q47I$>$>??QTU KK$$Ra$q':w"2T::r@   c                 .    U R                   R                  $ r7   )r  r  rm   s    r=   r  .UserDefinedExceptionObjectVariable.__context__  s    {{&&&r@   c                 8    U R                   R                  U5      $ r7   )r  set_context)rg   contexts     r=   r  .UserDefinedExceptionObjectVariable.set_context  s    {{&&w//r@   c                 .    U R                   R                  $ r7   )r  exc_typerm   s    r=   r  +UserDefinedExceptionObjectVariable.exc_type  s    {{###r@   )r  )r  zvariables.ExceptionVariable)rX   rY   rZ   r[   re   r   rm  r  r  r  r  r]   r  r  s   @r=   r  r    sO    G  ;( ' '0 $ $r@   r  c                   L   ^  \ rS rSr\S 5       rSU 4S jjrSU 4S jjrSrU =r	$ )KeyedJaggedTensorVariablei#  c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorchrec.sparse.jagged_tensor)rK   rL   rM   r   KeyedJaggedTensorr   mods     r=   is_matching_object,KeyedJaggedTensorVariable.is_matching_object$  s3    kkoo=>$E490E0E#EEr@   c                 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  r   rd   re   )rg   rV   rh   r  ri   s       r=   re   "KeyedJaggedTensorVariable.__init__)  s+    CE{////)&)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{   rP  rQ  3force_unspec_int_unbacked_size_like_on_torchrec_kjtr   r   patchrd   r   r  s      r=   r   %KeyedJaggedTensorVariable.var_getattr/  sg    MM  TT'>>%%$Ow*24 POw"2,, POs   A::
BrW   r  r  )
rX   rY   rZ   r[   r   r  re   r   r]   r  r  s   @r=   r  r  #  s&    F F*- -r@   r  c                   $    \ rS rSr\S 5       rSrg)IntWrapperVariablei:  c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorch.export.dynamic_shapes)rK   rL   rM   r   _IntWrapperr  s     r=   r  %IntWrapperVariable.is_matching_object=  s1    kkoo;<$?49#??r@   rW   N)rX   rY   rZ   r[   r   r  r]   rW   r@   r=   r  r  :  s     @ @r@   r  c                       \ rS rSrSrg)RemovableHandleClassiC  rW   Nr  rW   r@   r=   r  r  C  s     	r@   r  c                   `   ^  \ rS rSrSr  S S	U 4S jjjrS
U 4S jjrSU 4S jjrS rSr	U =r
$ )RemovableHandleVariableiI  c                 >   > [         TU ]  " S0 UD6  Xl        X l        g rc   )rd   re   r  rN  )rg   r  rN  rh   ri   s       r=   re    RemovableHandleVariable.__init__L  s      	"6"*r@   c                 $  > US:X  ay  U R                   U R                  :w  a@  UR                  R                  R	                  U R                   5        U R                  U l         [
        R                  R                  S 5      $ [        TU ]%  XX45        g )Nremove)
rN  REMOVEDr   r   remove_hookr	   r   r   rd   r  )rg   r   method_namer  rh   ri   s        r=   r  #RemovableHandleVariable.call_methodW  sh    ("xx4<<'		&&22488<<<--44T::BT: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)codegens   r=   <lambda>5RemovableHandleVariable.reconstruct.<locals>.<lambda>c  s    00)+Fr@   r   F)rN  r  add_push_nullextend_outputr
   rd   reconstruct)rg   r  ri   s    `r=   r  #RemovableHandleVariable.reconstruct_  sN    88t||#!!
 !!"6q%"@AG$r@   c                     [         $ r7   )r  rm   s    r=   r  #RemovableHandleVariable.python_typel  s    ##r@   )rN  r  NNr  r  )r  r3   )rX   rY   rZ   r[   r  re   r  r  r  r]   r  r  s   @r=   r  r  I  s8    G 		 
	 	;%$ $r@   r  c                   p   ^  \ rS rSrSr\R                  rSU 4S jjr      S	U 4S jjrS r	S r
SrU =r$ )
UserDefinedDictVariableip  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.
c                    > [         TU ]  " U40 UD6  X l        U R                  c6  U R                  b   S5       e[        R
                  " 0 [        5       S9U l        [        U l        g )Nz@dict_vt must be constructed by builder.py when source is presentr  )	rd   re   _dict_vtr   r	   r  r.   r   _dict_methods)rg   rV   dict_vtrh   ri   s       r=   re    UserDefinedDictVariable.__init__{  se    )&)== ;;& R& &77"2"4DM *r@   c                    > U R                  U5      nXPR                  ;   a  U R                  R                  XX45      $ [        TU ]  XX45      $ r7   )r  r  r  r  rd   r  s         r=   r  #UserDefinedDictVariable.call_method  sJ     11$7'''==,,RtDDw"2T::r@   c                     [        U R                  5      R                  [        R                  [        R
                  R                  4;   a  U R                  R                  U5      $ [        er7   )	r   rV   r  r   r   r   r  r  r  r  s     r=   r  +UserDefinedDictVariable.unpack_var_sequence  sQ    

$$MM##,,)
 
 ==44R88!!r@   c                 8    UR                  U R                  5      $ r7   )is_modifiedr  r  s     r=   r  1UserDefinedDictVariable.is_underlying_vt_modified      ''66r@   )r  r  r7   r  rX   rY   rZ   r[   r  r  r  re   r  r  r  r]   r  r  s   @r=   r  r  p  sL     /==N
*
; &	
;
 -
; 

;"7 7r@   r  c                   p   ^  \ rS rSrSr\R                  rSU 4S jjr      S	U 4S jjrS r	S 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.
c                    > [         TU ]  " U40 UD6  X l        U R                  c7  U R                  b   S5       e[        R
                  " / [        5       S9U l        g g )Nz@list_vt must be constructed by builder.py when source is presentr  )rd   re   _list_vtr   r	   ra  r.   )rg   rV   list_vtrh   ri   s       r=   re    UserDefinedListVariable.__init__  s]    )&)== ;;& R& &222EUEWXDM	 !r@   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ r7   )r   r  r%   r  rd   r  s         r=   r  #UserDefinedListVariable.call_method  sV     }}(((11$7\!==,,RtDDw"2T::r@   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        er7   )r   r   rV   r  r   r  r  r  s     r=   r  +UserDefinedListVariable.unpack_var_sequence  sH    }}(((

$$5==44R88!!r@   c                 8    UR                  U R                  5      $ r7   )r  r   r  s     r=   r  1UserDefinedListVariable.is_underlying_vt_modified  r  r@   )r   r7   r  r  r  s   @r=   r  r    sM     /==NY; &	;
 -; 
;"7 7r@   r  c                   j   ^  \ rS rSrSr\R                  rSU 4S jjr      SU 4S jjrS r	Sr
U =r$ )	rd  i  z
Represents user defined objects that are subclasses of tuple.

Internally, it uses a TupleVariable to represent the tuple part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
c                   > [         TU ]  " U4SU0UD6  X l        U R                  cb  U R                  b   S5       eSSKJn  UR                  " 5       nUS   R                  U5      n[        R                  " U[        5       S9U l        g g )Nr  zAtuple_vt must be constructed by builder.py when source is presentr   r4   r  )rd   re   re  r   torch._dynamo.symbolic_convertr5   
current_txr  r	   TupleVariabler.   )	rg   rV   tuple_vtr  rh   r5   r   elemsri   s	           r=   re   !UserDefinedTupleVariable.__init__  s    >)>v>!>>!;;& S& M&113BaL44R8E&44%5%7DN "r@   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ r7   )re  r  r*   r  rd   r  s         r=   r  $UserDefinedTupleVariable.call_method  sV     ~~)))11$7]">>--bEEw"2T::r@   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        er7   )re  r   rV   r  r   r  r  r  s     r=   r  ,UserDefinedTupleVariable.unpack_var_sequence  sH    ~~)))

$$6>>55b99!!r@   )re  r  r  )rX   rY   rZ   r[   r  r  r  re   r  r  r]   r  r  s   @r=   rd  rd    sG     /==N&; &	;
 -; 
;" "r@   rd  c                   \   ^  \ rS rSr\R
                  rU 4S jrSSS\SS4U 4S jjrS	r	U =r
$ )
MutableMappingVariablei  c                 |   > [         TU ]  " U40 UD6  [        R                  " 0 5      U l        [        5       U l        g r7   )rd   re   r	   r  generic_dict_vtr-   r  rf   s      r=   re   MutableMappingVariable.__init__  s3    )&)(::2>68r@   r   r5   r   ra   r/   c                 r  > US:X  az  [        U R                  5      R                  [        R                  R
                  R                  [        R                  4;   a%  [        R                  " [        R                  U 5      $ US:X  aj  U R                  (       aY  [        R                  R                  U R                  R                  [        U R                  S5      5      U l        U R                   $ U R                   R#                  [        R$                  " U5      5      =n(       a  U$ [&        TU ]Q  X5      $ )NrM   r   )r   rV   rM   r   abcMappingr   r	   r   r   mapping_getr   r  r   r   r   r  maybe_getitem_constr   rd   r   )rg   r   r   rs  ri   s       r=   r   "MutableMappingVariable.var_getattr  s     5=T$**-11OO##''HH6
 
 //	0E0EtLLZDKK#,#@#@#G#G

##ZZ%H$D  '''((<<&&t,
 
S 
 J7&r00r@   )r  r  )rX   rY   rZ   r[   r  r  re   r  r   r]   r  r  s   @r=   r  r    s4    .==N9
15 1S 1EV 1 1r@   r  c                       \ rS rSrSrg)re  i  rW   Nr  rW   r@   r=   re  re    r  r@   re  )nr  ra  r   r   r-  rY  r   r=  r   r[  rc  rK   r  r   rA  r:  typingr   typing_extensionsr   torch._dynamo.configr{   torch.nntorch._guardsr   torch.utils._python_dispatchr   r   r   r	   bytecode_transformationr
   create_parameter_opr   excr   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+   baser-   r.   r/   dictsr0   r8  r1   numpyr`  ModuleNotFoundErrortorch.utils._cxx_pytreer2   rJ   r   torch._dynamo.codegenr3   r  r5   r>   rC   rR   rT   r_   r  r  r  r  r  r  r  r  r  r  r  r  r  rd  r  re  rW   r@   r=   <module>r1     s  *           
       *   ( K # : F  1       * O N & 2
 /DBB$/ T	/2 T	/n(@ 	 	SN
< 3 N
<bQH7 QHh
$= 
0&$)B &$R- 9 -.@2 @	 	$$o $$N,77 ,7^(77 (7V/"8 /"d16 1D	. 	A6  	B
  dJs$   F> G >G	G	GG