
    %Vji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lTZUn# eV$ r dZUY nw xY w	 ddlWmXZX n# eY$ r  eZd          ZXY nw xY w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          ZudS )?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                 6    | t           j        t          j        fv S N)object__setattr__BaseExceptionvals    ^/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrrD   t       6%}'@AAA    c                 6    | 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} |                    |           |                    |           n# t
          $ r Y nw xY wt          j                            d          x}r|                    |j	                   | |v S )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   |   s    F444444333333m$$$o&&&&    KOO?@@@q @a>???&=s   6; 
AAc                     t          |           o4t          t          |           d          ot          |           j        dk    S )N__name__cython_function_or_method)callablehasattrtyperZ   )objs    rC   is_cython_functionr`      s?     	>DIIz**	>II"==rF   c                       e Zd ZU eed<   dS )UserDefinedVariablevalueN)rZ   
__module____qualname__r>   __annotations__ rF   rC   rb   rb      s         MMMMMrF   rb   c                       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   returnNc                 V     t                      j        di | || _        d| _        d S )NFrg   )super__init__rc   ban_mutationselfrc   kwargs	__class__s      rC   rm   z!UserDefinedClassVariable.__init__   s7    ""6"""
 "rF   c                     | j         S r=   rc   rp   s    rC   as_python_constantz+UserDefinedClassVariable.as_python_constant   
    zrF   c                     | j         S r=   rt   ru   s    rC   as_proxyz!UserDefinedClassVariable.as_proxy   rw   rF   c                 0    | j         j         d| j         dS N())rr   rZ   rc   ru   s    rC   __repr__z!UserDefinedClassVariable.__repr__   s     .)99DJ99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"     LKKJ	
 	
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          r5|                     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     LJ"J#J!J%J!J!J J"J!LKJJIIO! 
$ 5%   	 ''I$IO   &+--..1EEErF   c                      d t          t                    D             } t          j        t          j        t
          j        t          j        t          j        t          j        h	                    |           S )Nc                     g | ]l}t          t          t          |          t                    *t	          t          t          |          t
                    Rt          t          |          j        mS rg   )
isinstancegetattrbuiltinsr^   
issubclassr@   __new__).0names     rC   
<listcomp>zFUserDefinedClassVariable.supported_c_new_functions.<locals>.<listcomp>   sm     
 
 
'(D11488
 78T22MBB	
Hd##+
 
 
rF   )
dirr   r>   r   dictr   	frozensettuplelistunion)
exceptionss    rC   supported_c_new_functionsz2UserDefinedClassVariable.supported_c_new_functions   s`    
 
H
 
 

 NLKML
 %


	rF   c                 8    | t                                           v S r=   )ri   r   rt   s    rC   is_supported_new_methodz0UserDefinedClassVariable.is_supported_new_method   s     0JJLLLLrF   c                 8    | j         |                                 v S r=   )rc   r   ru   s    rC   can_constant_fold_throughz2UserDefinedClassVariable.can_constant_fold_through   s    zT88::::rF   txr;   c                     |j         j                            | |          r=|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   f    9!>>tSII 	K91;;D#RV;WWL!,	0IJJJJdj)))rF   r   r5   c                    ddl m}m} | j        t	          | j        |          nd }|dk    r|                    | j        j                  S |dk    r|                    | j        j                  S |dk    rd|i}t          j
        | |fi |S |dk    r;| j        ot          | j                  }t          j        || j        j        |          S | j        t          j        t          j        hv r(|dk    r"t%                                          ||          S 	 t)          j        | j        |          }nC# t,          $ r6 t/          | j                  t.          u rt1          t,          |           nd }Y nw xY w|d	k    r<t2                              |          r"t%                                          ||          S |t6          v r1t9          |t:          j                  st          j
        | ||
          S t9          |t>                    r.t          j        ||                     | j                  |          S t9          |tB                    rjt9          |j"        tF                    r4t          j$        |j"        j%                  &                    || gi           S t          j'        |j"        | |
          S t9          |t:          j(                  r1|                     d | j                  }	t          j        ||	|          S |rBt)          j)        |          r.t          j        ||                     | j                  |          S |*                    |          r|                    |          S t9          |tV          j,                  r ||          S | j        t          j        u rt          j
        | |          S |t[          | j        di           v s/| j        j.        /                    d          s| j        j.        dk    r|rt          j        |||          S |r9t)          j0        |          s%tc          |          st          j        |||          S t%                                          ||          S )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   sa   4444444426+2IDK...t:#**4:+>???^###**4:+BCCCZ(G,T4CC7CCCY+D-*D*DK"(TZ-?MMM J;2K4KLLL
""77&&r4000	(T::CC 	 	 	DJ4''(<<<< 	 9!9!Q!QRU!V!V77&&r4000)))*S%BT2U2U),T4GGGGc<(( 	R"(S[[-D-DfMMM[)) 	R#,11  5cl6GHHVV   /d6RRRRU<== 	R ;;tTZ00D"(T6::: 	R)#.. R&,RTZ1H1H&QQQ&&s++ 	>#**3///TY'' 		><$$$Z;222,T4888WTZR8888J!,,X66 9z$// >&,Rf=== 	:.s33	: 4C88	:
 #(S&999ww""2t,,,s   D3 3=E32E3c                 p  	
 ddl m} |                    d          |                    d          |                    d          |                    d          |                    d          |                    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           R            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  s    ...... =,bi,#H'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066)0066#**400&--f55,33C88	 	 	 	0 ND+F++	
	 	 	 	 	 	 	 	 	 	 	0 '(?@@@rF   r  list[VariableTracker]rq   dict[str, VariableTracker]c                 z   |dk    rt          |          dk    ro|smd| j        j        vr_| j        }| j        r$t	          | j        d          }t          |          }t          j        || j                                        |          S | j        t          j
        t          j        hv r#|dk    rddlm}  |j        || j        g|R i |S | j        t          j
        u r.|dk    r(|d                             ||g |dd          |          S |dk    rQt          |          dk    r>t!          |d         d          r(t#          j        | j        |d         j        k              S |d	k    rQt          |          dk    r>t!          |d         d          r(t#          j        | j        |d         j        k              S t'          | j        t(                    r5|d
k    r/t#          j        t(                                        ||||          S t'          | j        t*          t,          f          r5|d
k    r/t#          j        t*                                        ||||          S |d
k    r| j        t          j
        u rt/          |d         t0                    rp|d         j        t          j
        u rWt          |          dk    sJ t          |          dk    sJ t#          j        i t          j
        t5                                S |d
k    rSt0                              | j        j                  r/|j        j                            | |d         |dd                    S |dk    r6| j         r/tC          dtE          | j                  dtF          j$                   tK                                          ||||          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{ :#DK1ABB1&99"(TZ-F-F-H-H&QQQJ;2K4KLLL
""000000<?<DJ!%  )/   Z;222t}7L7L7&&r448fEEEX#d))q..WT!Wg5N5N.-djDGM.IJJJX#d))q..WT!Wg5N5N.-djDGM.IJJJ
D)) 	di.?.?,T22>>r4vVVV
S)$455 	$):K:K,S11==b$fUUUI
k55547$<== 6Q!888t99>>>>v;;!####.K+;K;M;M    Y#;#S#SJ$
 $
 9)GGQQRR  
 ]""t'8"]DJt'3	    ww""2tT6:::rF   c                 X   ddl m} ddlm} t	          ||          }|                                 r_|r]t          j                             | 	                                d |D             i d |
                                D                       S | j        t          j        j        u r|                     |||          S | j        t           j        u rddlm}  ||i |S | j        t(          j        u r7|                    t/          j        |t2          j                  | g||          S | j        t(          j        u r\t9          |          dk    rIt;          j        |d                   r/t;          i t(          j        |d         t?                      	          S tA          | j                  rf| j        j!        r2tE          d
tG          | j                  ddgtH          j%                    t          j&        tN                    j(        |g|R i |S | j        t(          j)        u r8t          j                            d           }d1d}		  tU          j+        |	          j,        |i |}
n># tZ          $ r1}tE          dd| d| ddgtH          j.        |           Y d }~nd }~ww xY wd|
j/        v rg|
j/        d         0                    |          s&tE          dd| d| ddgtH          j.                   |
j/        d         1                    |          }ng }d|
j/        v r|
j/        d         }t          j2        3                    ||t?                                S | j        th          j5        u rVt9          |          dk    r	|d         }nt          j                            d           }t          j6        |d         |          S | j        tn          j8        u rV|s tE          ddddgtH          j.                   |d         }|dd          }t          j9        :                    |||          S | j        tv          j<        u r"|s t          j=                            ||          S | j        t          j>        j?        u ri|sgt9          |          dk    rT|d         @                                sJ t          jA                            ||d         	                                          S t          t          | j                  t                    r:t          | j        d           r$t          | j        d!          r| E                                r|F                    | j                  r| jG        rt          | j                  sdd"lImJ} dd#l9mK}mL} | j        t           jM        t           jN        t           jO        t           jP        t           jQ        t           jR        t           jS        fv r-tE          d$| j         | j         d%g tH          j%                   | j        t           jT        u rt          |d         ||f          rt          jV        jW        jX        stE          d&d| d'd(g           t          |d         |          rF|d         }|d         j
        }|d         Y                                }|Z                    |||          S  ||d         |d         jG        )          g|dd          z   }|j[        j         \                    t          j&        t                    | |          }|^                    |d*||           |S t          | j                  rdt          | j                  }| j        ja        d+k    r5t9          |          dk    sJ |rJ |d         1                    |          }n| j        jb        }t          |          }|d                    d gt9          |          t9          |          z
  z             i }t          ||          D ]:\  }}|3||v r	||         }n!||v sJ t/          j        |||                   }|||<   ;|
                                D ]#\  }}||v sJ |||f                    |          <   $t          d, |D                       sJ t          jh        || j                  S | j        t          ji        u rBt          j&        t                    Z                    |||          }t          |j
                  S t          | j                  r| E                                rt          jn        | j                  }t          | jG                  } t          |          }|d                    d gt9          |          t9          |          z
  z             i }!t          t          jq                    ||          D ]\  }"}#}||#jr        |v r||#jr                 }n|#js        s'|#jt        t          ju        ur9t/          j        ||#jt        t          t          | |"          d-          )          }nF|#jx        t          ju        ur2t/          j        ||#jx                  }$|$Z                    |g i           }n||!|#jr        <   |y                    |!           |j[        j         \                    t          j&        t                    | |          }%|%^                    |d*||           |%S | j        | z                                v st          | j                  rt          r| j        t          v rt9          |          dk    rt          |d         t          j~                  r}t9          |d         j
                  dk    r_t          d. |d         j
        D                       r; || |j[        j        d/t          j        gt          ||          R  0          }&|&g} || |j[        j        d/| j        gt          ||          R  0          }'|'S | j        t          j        u rht9          |          dk    r.t          |d         t          j                  r|d         j        }(nd }(t          j        |(          })t	          |)          S | j        t
          j        u rMt9          |          dk    r:t          |d         t          j                  rt          j        |d                   S |F                    | j                  re| jG        r^t                      5  |                    t/          j        |t2          j                  | g||          cd d d            S # 1 swxY w Y   t                      Z                    |||          S )2Nr   )SideEffectsr3   r   c                 6    g | ]}|                                 S rg   rv   r   xs     rC   r   z:UserDefinedClassVariable.call_function.<locals>.<listcomp>  s$    ;;;a**,,;;;rF   c                 >    i | ]\  }}||                                 S rg   r  r   kvs      rC   
<dictcomp>z:UserDefinedClassVariable.call_function.<locals>.<dictcomp>  s*    LLLTQq!..00LLLrF   )NullContextVariabler   r  zTypedDict with optional keysz<Dyanmo does not support tracing TypedDict with optional keysz(Avoid using TypedDict with optional keysr  c                     d S 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V  	d S r=   rg   r   s     rC   	<genexpr>z9UserDefinedClassVariable.call_function.<locals>.<genexpr>  s&      88Q1D=888888rF   defaultc              3   J   K   | ]}t          |t          j                  V  d S r=   )r   r
   TensorVariabler   s     rC   r5  z9UserDefinedClassVariable.call_function.<locals>.<genexpr>	  s/      WWA
1i&>??WWWWWWrF   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   r1  r2  r3  _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   initr6  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'  r*  r+  
bound_argser:  callbackfn	rest_argsr1  r2  r3  fn_var	args_listkwargs_dictcm_objro  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  s    	/.....******+D&99))++ ^	 ^	-44)''));;d;;;LLV\\^^LLL    Z5844400T6BBBZ:111888888&&7777Z;22211%b)*BCC   J+111D		Q#4T!W==  ''Q.00	    $*%% ~	z+ 	 :
OO ^B*6	    =9,T22<RQ$QQQ&QQQZ;,,,/66t<<F   DW.??DdUfUU

 
 
 
 D;D;;6;; Z>*5 	 	 	 	 	 	 	 	 	
 Z111!+J7UU   % P ? ? ?v ? ?%-F /9
 
 
 
 #,Z8RRSUVV:///#-h7?00f4D4F4F 1    Z7;&&4yy1}}7$5<<TBB,T!Wh???Z9,,, 	 ? R9*5	    aBQRRI &??V @    Z822242<CCBOOOZ5:,,,V,D		Q7--//////66r47;U;U;W;WXXXtDJ''..g	
K g	
 
J g	 $$&&g	 >>tzJJg	 g	 1<<g	 766666        z8"**#$)   !:#zO#': !; !; !;*6	 	 	 	 zZ@@@ZQ24PQF F@ }+C $ N .$TU	   2 d1g'CDD L!!WF $QI"&q'"A"A"C"CK!//I{KKK HGQQ   H	 Y+II)&11 F
 r:tV<<<Mtz** G	&tz22Fz$(<<<4yyA~~~~!!!zQ99"==!%!;T

dVs6{{SZZ'?@AAA%'"/265/A/A 	C 	C+J"*%//(.z(:II#-#?#?#?#?(7(= "N:$>) )I :C*:6#5#;#;#=#= 6 6KD%6>>>>05E&,,t,,--88%88888888/tzBBBZ5:%%+E22@@T6RRC	*** ,, c	1E1E1G1G c	 '
33F1$+>>MJJELL$3v;;U#;<===N+.y/@/@&%+P+P = ='UK&zV++&,UZ&8$z %$ =0CCC*9*? " %'1$1-$E$Ey(" ("+ + +KK #2+:MMM)8)> "E$9* *J +5*B*B2r2*N*NKK %1<N5:.MM.))))(FF)&114 C OOB
D&999JJ$0022221$*== 3 !J"555IINNtAw	(>?? #Q&&**WWaWWWWW + (-0")0' +488      y+m,bi,#J 'tV44    O #"Z6=((4yyA~~*T!Wi6P"Q"Q~Aw}"M$//M!-000J%000D		Q47I$?@@ 
 1$q':::;;DJGG 	DK 	577  55#)IK  MDM                 ww$$Rv666s*   I, ,
J'6'J""J'97u==vv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   rZ  z(UserDefinedClassVariable.is_standard_new:  s>    '
ItDDfl++ 	%_F''rF   c                 &   | j         rht          | j         |          }t          |                    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  sw     ; 	IT22F&++L,@AABBB-gdj$.G.GHHHww''D111rF   c                 l    |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  s3    ::&&ww$$R...rF   rj   Nr   r;   r  r  rq   r  rj   r5   r   r;   r  r  rq   r  rj   r5   )rZ   rd   re   r^   r>   rf   rm   rv   ry   r  r~   r   rQ  cacher   r   r   r   r   r   r   r  r  r   rZ  r  r  __classcell__rr   s   @rC   ri   ri      s        <" " " " " "    :# : : : : _
 
 _ \
 _F F _ \F: _  _ \  M M \M
; ; ;* * * *P-5 P-S P-EV P- P- P- P- P- P-d>A >A >A >A@A; &	A;
 -A; 
A; A; A; A; A; A;Fj7#j7 &j7 -	j7
 
j7 j7 j7 j7 j7 j7X( ( (2)2142	2 2 2 2 2 2/ / / / / / / / / /rF   ri   c                   *    e Zd Zed             Zd ZdS )!UserDefinedExceptionClassVariablec                     | j         S r=   rt   ru   s    rC   r  z$UserDefinedExceptionClassVariable.fnQ  s
    zrF   c                     | j         S r=   rt   ru   s    rC   python_typez-UserDefinedExceptionClassVariable.python_typeU  rw   rF   N)rZ   rd   re   r   r  r  rg   rF   rC   r  r  P  s<          X    rF   r  c                       e Zd ZdS )NO_SUCH_SUBOBJNrZ   rd   re   rg   rF   rC   r  r  Y          DrF   r  c                 D   ddl m} d |D             }d |                                D             }t          | j        j                  } ||i |}t          |          }| j        j                            |||f            || |                              |          S )Nr3   )VariableBuilderc                 6    g | ]}|                                 S rg   r  r   s     rC   r   z"call_random_fn.<locals>.<listcomp>`  s$    111qA  ""111rF   c                 >    i | ]\  }}||                                 S rg   r  r#  s      rC   r&  z"call_random_fn.<locals>.<dictcomp>a  s*    CCCDAqa%%''CCCrF   )	r   r  r:  r  r   random_callsr   rO   wrap_unspecialized_primitive)r   r  r  rq   r  random_call_indexexample_valuer   s           rC   call_random_fnr  ]  s    ((((((11D111DCCFLLNNCCCFBI233B'''M011FI!!2tV"4555 ?2v&&CCMRRRrF   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d0dZeej        d                         Zd Z	 	 	 	 	 	 d1 fdZ	 d2	 d0dZd Z fdZdddefd Zd! Zd" Zd# Z	 	 	 	 	 	 	 	 d3 fd$Zd% Z d& Z!d' Z"d( Z#d) Z$d0d*Z%d+ Z&d0d,Z'ddd-eddfd.Z( xZ)S )4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                8    t                      j        di | || _        |pt          |          | _        t          |          | j        u sJ || _        | | j        t          | j                  | _        || _        || _	        t                      | _        d S 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{{do----$$+"9(55DO '" /2ee+++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__  sW    ( 
 
 
 
J==>>E.)44E4444rF   c                 :    | j         j         d| j        j         dS r{   rr   rZ   r  ru   s    rC   r~   z"UserDefinedObjectVariable.__repr__  #    .)GGDO,DGGGGrF   c                     dS NFrg   rp   r   s     rC   is_underlying_vt_modifiedz3UserDefinedObjectVariable.is_underlying_vt_modified  s    urF   c                     | j         S r=   r  ru   s    rC   r  z%UserDefinedObjectVariable.python_type  s
    rF   c                    dd l mc m} |                    | j                  r?| j        8t          | j                            t          j	                             | j
        S t                                                      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    ,,,,,,,,,##DO44 	"{&dk44\5NOOPPPz! ww))+++rF   c                     | j         r8t          | 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  sL    ; 	$+001FGGHHH:ww//111rF   c                 >    t          |           sJ d|              d S )Nz<calling torch function on object without __torch_function__ )r%   ru   s    rC   torch_function_checkz.UserDefinedObjectVariable.torch_function_check  s9    !$'' 	
 	
Q4QQ	
 	
' 	
 	
rF   c                 N    |                                   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  s9    !!###999999$$R...rF   r   r;   c                 |    |                                   ddlm}  |||                     |          ||||          S )Nr3   )call_torch_function)r  r  r  r  )rp   r   r  r   r  rq   r  s          rC   r  z-UserDefinedObjectVariable.call_torch_function  s[    !!###777777""b!!
 
 	
rF   c                  b    t           j         t           j        t           j        t           j        h} | S r=   )rx  randint	randrangeuniform)fnss    rC   _supported_random_functionsz5UserDefinedObjectVariable._supported_random_functions  s'     MNN	
 
rF   c                     |t          | j        di           vr8	 t          j        t	          | j                  |          S # t
          $ r Y nw xY wd S )Nr   )r   rc   r   r   r^   r   )rp   r   s     rC   _maybe_get_baseclass_methodz5UserDefinedObjectVariable._maybe_get_baseclass_method  sb    wtz:r::::-d4:.>.>EEE!   ts   &A 
AAr  r  rq   r  r5   c                 R   ddl m}m} |                     |          }|c|t          j        u r|                    d           S t          |          st          | j	        t          j                  r | j        |g|R i |S t          |          r.|                     ||d         t          j                              S |t          j        u rwt#          |          dk    rd|sb|d         }t          |t$                    s$t          j                            t&                    S |                    | j	        |j	        u           S t(          j        j        j        rDt          | j	        t0          j                  r%t5          dd| j	         d| d| d| d	d
g           t          |t0          j                  rd| j        }	d }
|	r|                     |          }
ddlm} |t(          j         j!        j        u r|} ||| |
|	          "                    |||          S |tF          j$        u rY| j        rR|sP|sNtK          | j        &                    tN          j(                              |t#          | j	                            S tS                      *                    ||||          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   rd  re  "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7(('..t444"6** IjY_.U.U I3t3BHHHHHHH"6** 33Q!:!<!<   &&3t99>>&>Q!%)BCC M$5<<^LLL (..tzU[/HIII}#F :
E/L L  !6_dj__4____W]__!3+
 
 
 
 &%"455 2 	 E $ > >t D DIEEEEEEUX_5555F))DIf  -D&112 %%$+%t%v%dk44\5QRRSSS''DJ888ww""2tT6:::rF   Fc           
         	 |                                 }n-# t          $ r  t          dd|  d| d| ddg           Y nw xY w|j        j                            |           s
J d            |r| j                            |           n|                     |          }|r|\  }}d }d }	| j	        r2| 
                    |          }t          t          |          d	          }	t          j        |||          }
t          j        |||	          }|
| |g}|                    ||i           S |j        j                            | ||           t#          j        d           S )
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-  s   	**,,DD" 	 	 	GD$DDtDDUDDm:;	     	 y%;;DAA 	
 	
1	
 	
A
   	</33D9999;;DAAC <%("
F #"? Q"&"@"@"F"FK",Z-D-Di"P"PK*0ZMM*0V[II $.--b$;;;
 		))$e<<<)$///s    'A Ac                     t          t          j        | j        dd                      ot	          | j        t
          j                   S )Nr?   )rD   r   r   rc   r   r  r  ru   s    rC   needs_slow_setattrz,UserDefinedObjectVariable.needs_slow_setattrW  sF    &"4:}dCC
 
 
 :TZ999	:rF   c                      j         r                     d          t          j        u r                     d          t          j        u r                     d          t          j        u r^t           j                             t          j	                              fdt          t           j                            D             S t                                          |          S )N__iter__r  __getitem__c           	          g | ]A}t           j                            j        |         t	          j        |                     BS )r   )r
   LazyVariableTrackerr   rc   r   r   )r   r$  rp   s     rC   r   zAUserDefinedObjectVariable.unpack_var_sequence.<locals>.<listcomp>d  s[       
 	 -44JqM(a88 5    rF   )r   r  r   r  r  r  r   r  r   r  ranger  rc   rl   unpack_var_sequence)rp   r   rr   s   ` rC   r  z-UserDefinedObjectVariable.unpack_var_sequence\  s    K	00<<MM00;;t|KK00??4CSSS$+001MNNOOO   
 s4://    ww**2...rF   c                     	 t          j        t                                        || gi            dS # t          $ r t          |           Y dS w xY w)NTF)r
   r	  iterr   r   r   rp   r   s     rC   rJ  z7UserDefinedObjectVariable.has_force_unpack_var_sequencem  sa    	%d++99"tfbIII4  	 	 	%b)))55	s   /3 AAc                    g }t          j        t                                        || gi           }	 	 |                    |          }|                    |           n# t          $ r t          |           Y nw xY wL|S r=   )r
   r	  r  r   next_variablerO   r   r   )rp   r   resultiter_rs        rC   rK  z3UserDefinedObjectVariable.force_unpack_var_sequenceu  s    )$//==b4&"MM	''++a    ,   )"---		 s   *A A;:A;c                 2    |                      |dg i           S )N__next__)r  r  s     rC   r  z'UserDefinedObjectVariable.next_variable  s    JB777rF   c                 \    	 | j         |                                 v S # t          $ r Y dS w xY wr  )rc   r  rG  ru   s    rC   is_supported_randomz-UserDefinedObjectVariable.is_supported_random  sB    	:!A!A!C!CCC 	 	 	55	s    
++c                    |                                  r[t          d |D                       rBt          d |                                D                       rt          || j        ||          S t          | j        t          j                  r| j        j        }| j        j	        }|t          j        j        j        j        u rVt          j                            |j                  r2|s0|s.t          j        |j                                      |||          S |t          j        j        j        j        u re|j        t          j        j        j        u rHt          j        |j                  }t          j        |j                                      ||g|          S | j        .t5          dd| j         d| d| d| dd	| j         d
g           t7          | j        d          }t9          j        |||          }t7          | j        d          }	t9          j        |||	          }
|                    ||
g|z   |          S t=          | j                  r`| j        rAt7          | j        d          }tA          |!                    tD          j#                             | $                    |d||          S tK                                          |||          S )Nc              3   >   K   | ]}|                                 V  d S r=   rX  )r   r$  s     rC   r5  z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>  s.      99qA((**999999rF   c              3   >   K   | ]}|                                 V  d S r=   r(  )r   r%  s     rC   r5  z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>  s.      DDqA((**DDDDDDrF   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%  rl  valuesr  rc   r*   r   
MethodTyper   r*  r   r  _contextlib_DecoratorContextManagercloner
   r1  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    $$&&0	B99D999990	B DDFMMOODDDDD0	B
 ""dj$???DJ 011 *	B:&D*%C/HNNN:JJM  O 	 O "(	 O !=M -D&112
 0?EEEMU^%=%LLL  0:: =M -SE6223 {" ZadjaaTaa$aaY_aa ?r$*rrr	    "$+z::H&,Rx@@H j99G%+BW==G))"wi$.>GGGdj!! 	B{ N#DOZ@@f//0KLLMMM##B
D&AAAww$$Rv6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dS t          |j        t          j                  p-t
          j        j        j        	                    |j                  S r  )
r   r   r   r   BuiltinFunctionTyper   _Crd  r  is_instancemethod)rp   subobjs     rC   _is_c_defined_propertyz0UserDefinedObjectVariable._is_c_defined_property  sY    &(++ 	5 K2
 
 CX#55fkBB	CrF   c                    t          j        | j        |t                    }t	          | j                  st|t          u s=t          j        |          s)t          j        |          s|                     |          r.t          | j                  	                    | j        |          }n$t	          | j                  r|t          u rt          |S r=   )r   r   rc   r  r-   r   isgetsetdescriptorrA  r^   __getattribute__r   )rp   r   r@  s      rC   _getattr_staticz)UserDefinedObjectVariable._getattr_static  s    '
D.II 'tz22 	!n$$)&11 %)&11 % **622 % $*%%66tz4HHFF$TZ00 	!V~5M5M ! rF   c                     t          j        t          | j                  |d           }t          j        t          |          dd           }|r!t          j        |          rdS || j        v rdS dS )Nr  TF)r   r   r^   rc   
isfunctionr  rp   	attr_namer  r  s       rC   should_skip_descriptor_setterz7UserDefinedObjectVariable.should_skip_descriptor_setter  sv    +D,<,<iNN
'Z(8(8)TJJ 	!&)) t dAAAturF   c                     t          j        t          | j                  |d           }t          j        t          |          dd           }t          j        |          r||fS d S )Nr  )r   r   r^   rc   rG  rH  s       rC   r  z>UserDefinedObjectVariable.try_get_descritor_and_setter_py_func  s_    +D,<,<iNN
'Z(8(8)TJJf%% 	(''trF   c                     |j         j                            | |          r=|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                    | j         J t          t          | j                  j                  D ][\  }}||j        v rK|dk    r%t          | j                   }t          ||          }n| j         }t          |          }t          ||          }t          d|          D ]v}t          | j                   }t          ||          }t          |          }t          |                    t          j        t          j        |d                               w| j        rht%          | j        d          rS|| j        j        vrEt          | 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                   d S )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  rQ  rR  r   DICT_CONTAINSr   r]   NOT_PRESENT_IN_GENERIC_DICTr   r   rH  )	rp   r   idxklass
mro_sourceklass_sourcedict_source
out_source
absent_idxs	            rC   r  z3UserDefinedObjectVariable.get_source_by_walking_mro  sG   ***#D$4$4$<== #	" #	"JCu~%%!88!.t!?!?J#0S#A#ALL#'?L,\::.{DAA
"'3--  J!.t!?!?J#0Z#H#HL"0">">K!#..%- , :T       K
J77 DJ$777!..%- , Ht      "!!!E &H 	9bDbbTZ0@0@bbTZHXHXH`bbYYYtDJ?O?O?WYYbDbbDJbbb"-		
 	
 	
 	
 	
 	
rF   c                 n   ddl m} | j        rt          | j        |          nd }t	          | j                  rt          j        t          | j                  d          }| j        rt          | j        d          }	 t          j
        || |                              ||                    |          gi           S # t          $ r t          |           Y nw xY w|j        j                            | |          rS|j        j                            | |d          }t'          |t          j                  rt+          t,          |           |S |dk    rd|i}t          j        | |fi |S |d	k    r.|}	|	| j        }	d|	i}t3          t          | j                  fi |S 	 |                     |          }
n# t,          $ r t6          }
|                                 }t'          |t:          j                  rs|t>          u rt'          | t          j                   rttC          | j        j"        tF                    rUtC          | j        j$        tF                    r6tC          | j        j%        tF                    r| &                    ||          }n^d }| j        rt          | j        d
          }t          j
        || |                              ||                    |          gi           }| j        rs|tN          j(        j)        j*        u r[t'          |t          j         t          j+        f          r5|,                    t          | -                                |                     |cY S |1t]          dd| j         d| d| d| d| j         d| ddg           Y nw xY wddl/m0} |
tN          j(        j)        j1        u r|}
t          j        | j        j2        |t6                    }||
u o4| j        d uo+| j        d uo"tg          | j        d          o|| j        j4        v}t'          |
tj                    r]| j        r%| 6                    |          }t          |d          }t          j7        |
j8        |                              || gi           S t'          |
tr          j:                  rC|
;                                \  }\  }}t'          | tx                    sJ | j=        j>        |         S t'          |
t~                    rU|r#t          | 6                    |          d          }|
@                    | j                  }t          jB        |||          S t'          |
t                    rXd }|r#t          | 6                    |          d          }t          j
        |
jD        | E                    |d	          ||          S t'          |
t:          jF                  r1|
@                    | j        d           }t          jB        |||          S t          |
          rt          jH        |
d| |          S t          j        t          |
          dt6                    t6          urt          t          |
          j@                  sd }d }| j        rI| 6                    |          }t          t          |          d          }t          jB        ||
|          }nt          |
          }t3          t          | j                            }t          j
        |
j@        jD        ||                              || |gi           S t'          |
t:          j                  s@t'          |
t:          jL                  rt'          | j        tN          j(        j)                  rt          | j        |          }||
u rAtg          |
d          r1|
jN        }
|
}|rt          |d          nd }||
u rtg          |
d          1t'          |
t:          jL                  r|jO        | j        urt'          |jD        t:          j                  sIt]          dd| j         d| d| d|jO         d |jD         
d!| d"| d#| j         d$|jD         d%	d&g           d }|t          |d'          }t          jB        ||jO        |          }t          j
        |jD        |          S |
jD        }nt'          |
t:          j                  sJ |
}t          jP        |          r1d }|r| 6                    |          }t          j
        || ||          S t          jQ        |          rt          jB        |||          S tN          jR        jS        jT        st'          | t          jU                  rl|rjt'          | t          j                   rP|j        jV        rtN          jR        jS        jW        r.|d(v rt          | j        |          }| Y                    |          }|
t6          urt          |
          s8tN          jZ        jR        j[        \                    |
          st          |
          rd|i}t          j        | |fi |S |r7|r| 6                    |          }t          j^                            |
|          S | j        ^t          j        | j        j2        |t6                    }||
u r5t          | j        |          }t          j^                            ||          S t          jB        ||
          S t+          t,          |           d S ))Nr3   r   rD  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   rE  r  r;  r   r   r2   UnspecializedNNModuleVariabler*   r`  r   r_  _modules manually_trace_nn_module_getattrr   r   r  r[  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   r^  r*  ismethodrG  rd  re  inline_inbuilt_nn_modulesFSDPManagedNNModuleVariableexportinstall_free_tensorsr   _wrap_sourcer>  r  r?  r`   r  )rp   r   r   r   r   getattribute_fn
new_sourcer  r   r  r@  
getattr_fnoutr  subobj_from_classis_accessible_from_type_mro_rS  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=  s   &&&&&&26+GDK...4"4:.. 	.%4TZ  "4 O { I'5GHH
. 3#T*  -%5%<%<T%B%B$CRHHI * . . .)"-----. 9!>>tTJJ 	Y+55dDT5RRF&)";<< =(<<<M:(G,T4CC7CCC
 ;J!!_
,G+D,<,<HHHHH3	))$//FF 1	 1	 1	#F0022J*e&899 . "==="4)PQQ > tz5t<< > tz2D99	 >
 tz2D99 > ??DIICC!%J{ L%/]%K%K
#6"D  #mB)9)@)@)F)F(GLL  ; :1L#L#L!%C%6   66&t'F'F'H'H$OO   


' OXdjXXXXJXX!<J !< !<lplv !< !<48!< !< !< N   S1	f 	>=====UX_----F#2J $
 
 ' 0t+04'0 
J//0 DJ// 	$ fh'' L	?{ 477==#FF33
 1F  mB++,  9:: 	? !++--KAxQ d$<=====>',,-- w	? + V $D$B$B4$H$H*UU>>$*--D"(T6:::,, l	?I* Y 't'E'Ed'K'KZXX	/  [11#	     ?@@ _	?>>$*d33D"(T6:::*622 [	? 6tF    #LL)^
 
   (GLL )
 )
  !%$(! 
C %)$B$B4$H$H!(20119) )% "1!6r6CT!U!U ";6!B!B 1dj1A1ABBI/'@U  mBy 12667  233 5	?vu/005	?4:ux775	? %TZ66N F**wv?T/U/U*3!'FLVF,ABBBRV !F**wv?T/U/U*
 &%"233 !*$*<<%n&=u?QRR 
($[%tdj %t %t %t %tP^ %t %t/=/F%t %tZhZq%t %t)a. )a )a )a )ahlhr )a )a)7)@)a )a )a !X#	 	 	 	 #'K)&0&D&D / 5N3[! !I %7&/   !&%*<=====// ? 	. E $ > >t D DI 3$)F    #N33 ?&,Rv>>> $>	/ dI$IJJ	/ 	/ 4!HII	/ Y%	/ */)=)R	/ 2227TJJ&&v..F''/77H8#);;FCCH &f--H
 $V, 0tGGwGGG 9. B!;;DAAF 4;;FFKKK ?.(/(>
,dN) )% )F22)3DOT)J)J(<CC-~     ',R888 	!44444s+   =?B= =CC!F8 8F2N",3N"!N"r   c                    | j         r?t          t          | j         |                              t          j                             	 |                     ||          }t          j        	                    t          |t          j                             S # t          $ r1 t          |           t          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9MNN  	<%%b$//F-44vy'@AAA   & 	< 	< 	<%b)))-44U;;;;;	<s   AB 8CCr  r  r  )Fr  )*rZ   rd   re   __doc__rb   _nonvar_fieldsrm   r  r  r~   r  r  rv   r  r  r  r  r   rQ  r  r  r  r  r  r  r  boolrJ  rK  r  r%  r   r;  rA  rE  rJ  r  r   r  r   r  r  r  s   @rC   r  r  l  sU        
 	( 
	+	N 4 4 
4 4 4 4 4 4B	5 	5 	5 	5 	5H# H H H H    	, 	, 	, 	, 	,2 2 2 2 2
 
 

/ / /
 
 
 
 _  _ \  A; &	A;
 -A; 
A; A; A; A; A; A;H NS(0)(0 (0 (0 (0T: : :
/ / / / /"0G D      8 8 8  87#87 &87 -	87
 
87 87 87 87 87 87t. . .
C 
C 
C  4    * * * *0
 0
 0
dj5 j5 j5 j5X	<)<14<	< < < < < < < <rF   r  c                        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dS )#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                 `    || _         t          |                                          | _        d S r=   )clsr   r:  ro  )rp   cro  s      rC   rm   z,FrozenDataClassVariable.HashWrapper.__init__  s$    DH//DKKKrF   c                     t          |           t          |          k    o| j        |j        k    o| j        |j        k    S r=   )r^   r  ro  )rp   r   s     rC   r  z*FrozenDataClassVariable.HashWrapper.__eq__  s=    T

d5kk) 0H	)0K5</rF   c                 8    t          | j        | j        f          S r=   )hashr  ro  ru   s    rC   __hash__z,FrozenDataClassVariable.HashWrapper.__hash__  s    4;/000rF   N)rZ   rd   re   r  rm   r  r  rg   rF   rC   HashWrapperr  |  sM        	n 	n	0 	0 	0	 	 		1 	1 	1 	1 	1rF   r  c           	      *   ddl m} t          |          sJ i } ||          D ]]}t          ||j                  rFt          j        | t          ||j                  |ot          ||j                            ||j        <   ^t          |||          S )Nr   ro  )ro  r   )
rn  ro  r&   r]   r   r5   r   r   r   r  )r   rc   r   ro  	field_mapr  s         rC   r   zFrozenDataClassVariable.create  s    &&&&&&"5)))))	VE]] 	 	Euej)) (7(=E5:..=z&%*==) )	%*% 'uYvNNNNrF   Nrj   c                 R     t                      j        |fi | |i }|| _        d S r=   )rl   rm   ro  )rp   rc   ro  rq   rr   s       rC   rm   z FrozenDataClassVariable.__init__  s7    ))&)))>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 ]^}|j        rU| j        |j                                                 }t          |dd          r|||j        <   I|                    |           _|                                 } ||i |S )Nr   r  z@currently can't reconstruct arbitrary frozen dataclass instanceskw_onlyF)rn  ro  r  r  r  r*   rc   TreeSpecLeafSpecConstantNoder  rr  r   rv   r   rO   r  )rp   ro  r  r  rq   r  datactors           rC   rv   z*FrozenDataClassVariable.as_python_constant  s    	'&&&&&,,,,,,,,,J&/6;NO
 
 	 &R   VDJ'' 	& 	&Ez &{5:.AACC5)U33 &)-F5:&&KK%%% !!tT$V$$$rF   c                 *   ddl m} g }i } || j                  D ]]}| j        |j                                                 }t          |d          r|j        r|||j        <   H|                    |           ^|                                 } ||i |S )Nr   r  r  )	rn  ro  rc   r   ry   r]   r  rO   r  )rp   ro  r  rq   r  r   r  s          rC   ry   z FrozenDataClassVariable.as_proxy  s    &&&&&&VDJ'' 	# 	#EK
+4466Eui(( #U] #%*uz""E"""" !!tT$V$$$rF   codegenr9   c                     dd l mc m} | j        |j        u r=                    fd                               t          dd                     d S t                      	                               d S )Nr   c                  0                          dd          S )Nztorch.utils._pytreer  load_import_fromr  s   rC   <lambda>z5FrozenDataClassVariable.reconstruct.<locals>.<lambda>  s    001F
S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  s    ,,,,,,,,,?fo--!!SSSS   !!"6q%"@"@AAAF 	G$$$$$rF   r   r;   c                     || j         |                                <   t                                          |||          S r=   )ro  rv   rl   r  )rp   r   r   rc   rr   s       rC   r  z/FrozenDataClassVariable.method_setattr_standard  s7    16D++--.ww..r4???rF   c                 :    | 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  {  s       1 1 1 1 1 1 1 1$ O O \O       % % %<% % %(% % % % % %"@ @ @ @ @ @H# H H H H H H H HrF   r  c                   8     e Zd Z	 	 d
 fdZ	 	 	 	 	 	 dd	Z xZS )SourcelessGraphModuleVariablerj   Nc                 <     t                      j        |fi | d S r=   )rl   rm   ro   s      rC   rm   z&SourcelessGraphModuleVariable.__init__  s*    
 	))&)))))rF   r  r  rq   r  r5   c                     t          j        | j        j        j                  }| g|z   }|                    |||          S r=   )r
   r   rc   forwardr   r?  )rp   r   r   r  rq   fn_variables         rC   r  z)SourcelessGraphModuleVariable.call_method  sH      4TZ5G5PQQv}--
 
 	
rF   r  r  )rZ   rd   re   rm   r  r  r  s   @rC   r  r    sy        * 
	* * * * * *
 &	

 -
 

 
 
 
 
 
 
 
rF   r  c                        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                 z     t                      j        |fi | t          j        | j        d          | _        d S r  )rl   rm   r
   ExceptionVariabler  exc_vtro   s      rC   rm   z+UserDefinedExceptionObjectVariable.__init__	  s<    ))&)))1$/2FFrF   c                     | j         S r=   r  ru   s    rC   r  z%UserDefinedExceptionObjectVariable.fn  s
    rF   c                 T   |dk    rj|                      |          x}rSt          j        |          r?t          |          dk    r,|| j        _        || j        _        t          j        d           S |dk    rkt          |          dk    rXt          |d         t          j                  r8|d         j        dv r)| j        
                    ||d         |d                    n#|dk    r| 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2  Fq  #DK"DJO-d333M!!D		Q47I$>?? QTU U K$$Ra$q'::::%%%;**2tT6BBBww""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   r  variables.ExceptionVariablec                 6    | 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  r  )rZ   rd   re   rm   r   r  r  r  r  r  r  r  r  s   @rC   r  r    s        G G G G G   X; ; ; ; ;, ' ' X'     X 0 0 0 0 $ $ X$ $ $ $ $rF   r  c                   B     e Zd Zed             Zd fdZd	 fdZ xZS )
KeyedJaggedTensorVariablec                 t    t           j                            d          }|d uo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    koo=>>$E4990E#EErF   rj   Nc                 n    ddl m} t          |          |u sJ  t                      j        |fi | d S )Nr   )r  )torchrec.sparse.jagged_tensorr  r^   rl   rm   )rp   rc   rq   r  rr   s       rC   rm   z"KeyedJaggedTensorVariable.__init__=  sR    CCCCCCE{{/////))&)))))rF   r   r;   c                 (   t           j        j        j        rZ| j        S|dv rOt          j        d          5  t                                          ||          cd d d            S # 1 swxY w Y   t                                          ||          S )N)_length_per_key_offset_per_keyT)#force_unspec_int_unbacked_size_like)	r   rd  re  3force_unspec_int_unbacked_size_like_on_torchrec_kjtr   r   patchrl   r   r  s      rC   r   z%KeyedJaggedTensorVariable.var_getattrC  s    M T	5'>>>%$OOO 5 5ww**2t445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5ww""2t,,,s   "A''A+.A+r  r  )rZ   rd   re   r   r  rm   r   r  r  s   @rC   r  r  7  sw        F F \F* * * * * *- - - - - - - - - -rF   r  c                   $    e Zd Zed             ZdS )IntWrapperVariablec                 t    t           j                            d          }|d uot          |           |j        u S )Nztorch.export.dynamic_shapes)rQ   rR   rS   r^   _IntWrapperr  s     rC   r  z%IntWrapperVariable.is_matching_objectQ  s2    koo;<<$?499#??rF   N)rZ   rd   re   r   r  rg   rF   rC   r  r  N  s4         @ @ \@ @ @rF   r  c                       e Zd ZdS )RemovableHandleClassNr  rg   rF   rC   r  r  W  s         	DrF   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 )RemovableHandleVariableNrj   c                 V     t                      j        di | || _        || _        d S r  )rl   rm   r  rS  )rp   r  rS  rq   rr   s       rC   rm   z RemovableHandleVariable.__init__`  s5     	""6"""*rF   r   r;   c                    |dk    r_| j         | j        k    r0|j        j                            | j                    | j        | _         t
          j                            d           S t                      	                    ||||           d S )Nremove)
rS  REMOVEDr   r   remove_hookr
   r   r   rl   r  )rp   r   method_namer  rq   rr   s        rC   r  z#RemovableHandleVariable.call_methodk  s|    (""x4<''	&2248<<<<-44T:::BT6:::::rF   r  r9   c                     | j         | j        k    r=                    fd                               t	          dd                     d S t                                                     d S )Nc                  0                          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)rS  r  r  r  r   rl   r  )rp   r  rr   s    `rC   r  z#RemovableHandleVariable.reconstructs  s    8t|##!!     
 !!"6q%"@"@AAAFG$$$$$rF   c                     t           S r=   )r  ru   s    rC   r  z#RemovableHandleVariable.python_type  s    ##rF   r9  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.
    Nc                      t                      j        |fi | || _        | j        F| j        
J d            t	          j        i t          |          t                                | _        t          | _	        d S )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__  s    ))&)))= ;&&R '&& &7DKK/?/A/A  DM *rF   r  r  rq   r  rj   r5   c                    |                      |          }|| j        v r	 | j                            ||||          S # t          $ r^ |dk    rVt          |                                 t                    r/|                      d          r|                     |d||          cY S  w xY wt                                          ||||          S )Nr  __missing__)	r  r  r  r  r   r   r  r   rl   r  s         rC   r  z#UserDefinedDictVariable.call_method  s     11$77T'''
}00T4HHH#   M))"4#3#3#5#5t<< *88GG *  ++BtVLLLLL ww""2tT6:::s   > A$B&$B&c                     t          | j                  j        t          j        t          j        j        fv r| j                            |          S t          r=   )	r^   rc   r  r   r   r   r  r  r  r  s     rC   r  z+UserDefinedDictVariable.unpack_var_sequence  sM    
$M#,)
 
 
 =44R888!!rF   c                 6    |                     | j                  S r=   )is_modifiedr  r  s     rC   r  z1UserDefinedDictVariable.is_underlying_vt_modified      ''6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                 4    | j                                         S r=   )r  install_dict_keys_match_guardru   s    rC   r  z5UserDefinedDictVariable.install_dict_keys_match_guard  s    }::<<<rF   c                 4    | 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    s          /=N
* 
* 
* 
* 
* 
*; &	;
 -; 
; ; ; ; ; ;2" " "7 7 7 & & X& # # X#= = =; ; ; ; ; ; ;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.
    Nc                 8    t                      j        |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                                | _        d S |                    di           }t          j        j        j                                        }t          j        |                              ||i           | _        d S d S )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   rd  symbolic_convertr;   
current_txr	  r   )rp   rc   set_vtrq   r  r  r   rr   s          rC   rm   zUserDefinedSetVariable.__init__  s   ))&)))'s33Bcc+6#+=+=KKCT<;&&Q '&& c!!(4&6&8&8      #JJ{B77	]3ITTVV(8EESS	2     rF   r  r  rq   r  rj   r5   c                     |                      |          }|| j        v r| j                            ||||          S t	                                          ||||          S r=   )r  r  r  r  rl   r  s         rC   r  z"UserDefinedSetVariable.call_method  s`     11$77T&&&<++BdFCCCww""2tT6:::rF   c                 4    | j                                         S r=   )r  rv   ru   s    rC   rv   z)UserDefinedSetVariable.as_python_constant  s    |..000rF   c                     t          j        | j        d          t          j        t
          j        fv r| j                            |          S t          )Nr  )	r   r   rc   r   r  r   r  r  r  r  s     rC   r  z*UserDefinedSetVariable.unpack_var_sequence  sL    !$*j99L>
 
 
 <33B7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                 6    |                     | j                  S r=   )r  r  r  s     rC   r  z0UserDefinedSetVariable.is_underlying_vt_modified  s    ''555rF   c                 4    | j                                         S r=   )r  r  ru   s    rC   r  z4UserDefinedSetVariable.install_dict_keys_match_guard  s    |99;;;rF   c                 4    | j                                         S r=   )r  r  ru   s    rC   r  z2UserDefinedSetVariable.install_dict_contains_guard  s    |779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 1 1" " " & & X& " " X"6 6 6< < <: : : : : : :rF   r  c                   V     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.
    Nc                      t                      j        |fi | || _        | j        :| j        
J d            t	          j        g t                                | _        d S d S )Nz@list_vt must be constructed by builder.py when source is presentr  )rl   rm   _list_vtr   r
   rv  r4   )rp   rc   list_vtrq   rr   s       rC   rm   z UserDefinedListVariable.__init__$  sv    ))&)))= ;&&R '&& &22EUEWEWXXXDMMM	 ! rF   r  r  rq   r  rj   r5   c                     | j         J |                     |          }|t          v r| j                             ||||          S t	                                          ||||          S r=   )r  r  r+   r  rl   r  s         rC   r  z#UserDefinedListVariable.call_method-  sk     }(((11$77\!!=,,RtVDDDww""2tT6:::rF   c                     | j         J t          | j                  j        t          j        u r| j                             |          S t          r=   )r  r^   rc   r  r   r  r  r  s     rC   r  z+UserDefinedListVariable.unpack_var_sequence:  sF    }(((
$55=44R888!!rF   c                 6    |                     | 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    s          /=NY Y Y Y Y Y; &	;
 -; 
; ; ; ; ; ;" " "7 7 7 7 7 7 7rF   r  c                   P     e Zd ZdZej        Zd fd	Z	 	 	 	 	 	 d fd
Zd Z xZ	S )rj  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.
    Nc                 0    t                      j        |fd|i| || _        | j        j| j        
J d            ddlm}  |j                    }|d                             |          }t          j	        |t                                | _        d S d S )Nr  zAtuple_vt must be constructed by builder.py when source is presentr   r:   r  )rl   rm   rk  r   torch._dynamo.symbolic_convertr;   r  rK  r
   TupleVariabler4   )	rp   rc   tuple_vtr  rq   r;   r   elemsrr   s	           rC   rm   z!UserDefinedTupleVariable.__init__O  s    >>)>v>>>!>!;&&S '&& MLLLLL1&133BaL::2>>E&4%5%7%7  DNNN "!rF   r  r  rq   r  rj   r5   c                     | j         J |                     |          }|t          v r| j                             ||||          S t	                                          ||||          S r=   )rk  r  r1   r  rl   r  s         rC   r  z$UserDefinedTupleVariable.call_methodb  sk     ~)))11$77]"">--b$fEEEww""2tT6:::rF   c                     | j         J t          | j                  j        t          j        u r| j                             |          S t          r=   )rk  r^   rc   r  r   r  r  r  s     rC   r  z,UserDefinedTupleVariable.unpack_var_sequenceo  sF    ~)))
$66>55b999!!rF   r9  r  )
rZ   rd   re   r  r  r  rm   r  r  r  r  s   @rC   rj  rj  D  s          /=N     &; &	;
 -; 
; ; ; ; ; ;" " " " " " "rF   rj  c                   D     e Zd Zej        Z fdZdddeddf fdZ xZS )MutableMappingVariablec                 n     t                      j        |fi | t          j        i           | _        d S r=   )rl   rm   r
   r  generic_dict_vtro   s      rC   rm   zMutableMappingVariable.__init__y  s;    ))&)))(:2>>rF   r   r;   r   rj   r5   c                    |dk    rZt          | j                  j        t          j        j        j        t          j        fv rt          j        t          j
        |           S |dk    rP| j        rIt          j                            | j        j        t          | j        d                    | _        | j        S | j                            t          j        |                    x}r|S t'                                          ||          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   rv  rr   s       rC   r   z"MutableMappingVariable.var_getattr}  s     5==T$*--1O#'H6
 
 
 /	0EtLLLZDK#,#@#G#G
#ZZ%H%H$ $D  ''(<<&t,,
 
 
S 	1 J77&&r4000rF   )	rZ   rd   re   r  r  rm   r  r   r  r  s   @rC   r  r  v  su        .=N? ? ? ? ?15 1S 1EV 1 1 1 1 1 1 1 1 1 1rF   r  c                       e Zd ZdS )rz  Nr  rg   rF   rC   rz  rz    r  rF   rz  )vr  rg  r   r   r<  rn  r   rQ  r   rp  rx  rQ   r  r   rU  rN  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   rL  r7   numpyru  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  rj  r  rz  rg   rF   rC   <module>r7     s   .                             



                    * * * * * *      ( ( ( ( ( ( K K K K K K 6 6 6 6 6 6 6 6 6 6 : : : : : : F F F F F F                  1 0 0 0 0 0 0 0                                                                * 4 3 3 3 3 3 3 3 & & & & & &         	BBB2222222   dJJJ  E//////DDDDDDB B BB B B  $      /   s
/ s
/ s
/ s
/ s
/2 s
/ s
/ s
/l    (@   	 	 	 	 	 	 	 	S S SL< L< L< L< L< 3 L< L< L<^rH rH rH rH rH7 rH rH rHj
 
 
 
 
$= 
 
 
0,$ ,$ ,$ ,$ ,$)B ,$ ,$ ,$^- - - - - 9 - - -.@ @ @ @ @2 @ @ @	 	 	 	 	 	 	 	$$ $$ $$ $$ $$o $$ $$ $$NG; G; G; G; G;7 G; G; G;TH: H: H: H: H:6 H: H: H:V(7 (7 (7 (7 (77 (7 (7 (7V/" /" /" /" /"8 /" /" /"d1 1 1 1 16 1 1 1B	 	 	 	 	. 	 	 	 	 	s$   &C+ +C54C59D   DD