
    sh                    t   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKJr  SSKrSSKrSSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSK J!r!J"r"J#r#J$r$  SSK%J&r&J'r'  SSK(J)r)J*r*J+r+J,r,J-r-J.r.  SSK/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArA  SSKBJCrCJDrDJErE  SSKFJGrG   SSKHrI SSKKJLrL  \(       a  SSKOJPrP  S rQS rR " S S\E5      rS " S S\S5      rT " S S\T5      rU " S S5      rVS rW " S S \S5      rX " S! S"\X5      rY " S# S$\X5      rZ " S% S&\X5      r[ " S' S(\X5      r\ " S) S*5      r] " S+ S,\E5      r^ " S- S.\X5      r_ " S/ S0\X5      r` " S1 S2\X5      ra " S3 S4\X5      rb " S5 S6\X5      rcg! \J a    SrI Nf = f! \M a    \N" S5      rL Nf = f)7a  
This module contains variable classes for handling user-defined objects in Dynamo's tracing system.

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

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

These classes help Dynamo track and handle arbitrary Python objects during tracing,
maintaining proper semantics while enabling optimizations where possible.
    N)TYPE_CHECKING)is_typeddict)TracingContext)"is_traceable_wrapper_subclass_type   )	polyfills	variables)create_call_function)$do_not_convert_to_tracable_parameter)handle_observed_exceptionObservedAttributeErrorraise_observed_exceptionunimplemented)GuardBuilderinstall_guard)
AttrSourceCallFunctionNoArgsSourceGetItemSourceRandomValueSource
TypeSourceUnspecializedParamBufferSource)build_checkpoint_variablecheck_constant_argscmp_name_to_op_mappingdict_methodsget_custom_getattrhas_torch_functionis_frozen_dataclassis_namedtuple_clsis_utils_checkpointis_wrapper_or_member_descriptoristypelist_methodsnamedtuple_fieldsobject_has_getattributeproxy_args_kwargstensortype_to_dtypetuple_methodsunpatched_nn_module_getattr   )AttributeMutationExistingValueMutationNewVariableTracker)DefaultDictVariable)
PyTreeSpec)InstructionTranslatorc                 H    U [         R                  [        R                  4;   $ N)object__setattr__BaseException)vals    x/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrr8   f   s    6%%}'@'@AAA    c                    / n SSK Jn  SSKJn  UR	                  U5        UR	                  U5        [        R                  R                  S5      =n(       a  UR	                  UR                  5        X;   $ ! [
         a     NQf = f)Nr   )RaisesContext)WarningsCheckerz!torch.testing._internal.jit_utils)
_pytest.python_apir;   _pytest.recwarnr<   appendImportErrorsysmodulesget&_AssertRaisesRegexWithHighlightContext)ctxf_ctxsr;   r<   ms        r7   is_forbidden_context_managerrH   j   ss    F43m$o& KKOO?@@q@a>>?=  s   .A7 7
BBc                        \ rS rSr% \\S'   Srg)UserDefinedVariable|   value N)__name__
__module____qualname____firstlineno__r3   __annotations____static_attributes__rM   r9   r7   rJ   rJ   |   s    Mr9   rJ   c                     ^  \ rS rSr% \\   \S'   SU 4S jjrS rS r	S\
4S jr\\R                  " S5      S	 5       5       r\\R                  " S5      S
 5       5       r\\R                  " S5      S 5       5       r\S 5       rS rSS jrSSS\
SS4U 4S jjrSS jr      SU 4S jjr        SU 4S jjrS rSSS\
SS4U 4S jjrSU 4S jjrSrU =r$ )UserDefinedClassVariable   rL   returnNc                 2   > [         TU ]  " S0 UD6  Xl        g NrM   )super__init__rL   selfrL   kwargs	__class__s      r7   r[   !UserDefinedClassVariable.__init__   s    "6"
r9   c                     U R                   $ r2   rL   r]   s    r7   as_python_constant+UserDefinedClassVariable.as_python_constant       zzr9   c                     U R                   $ r2   rb   rc   s    r7   as_proxy!UserDefinedClassVariable.as_proxy   rf   r9   c                 N    U R                   R                   SU R                   S3$ N())r_   rN   rL   rc   s    r7   __repr__!UserDefinedClassVariable.__repr__   s$    ..))*!DJJ<q99r9   c                  ~    [         R                  [         R                  [         R                  [         R                  1$ r2   )torchdevicefinfoiinfoSizerM   r9   r7   _constant_fold_classes/UserDefinedClassVariable._constant_fold_classes   s*     LLKKKKJJ	
 	
r9   c                  z   [         R                  [         R                  R                  [         R                  R                  1n [        [         S5      (       aC  U R                  [         R                  R                  [         R                  R                  15        [        [        R                  " 5       5      U -  $ )Nhpu)rq   TensorcudaStreamEventhasattrupdatery   setr'   keys)_in_graph_class_lists    r7   _in_graph_classes*UserDefinedClassVariable._in_graph_classes   s     LLJJJJ 

 5%   ''II$$IIOO &++-.1EEEr9   c            	         [        [        5       V s/ s Hg  n [        [        [        U 5      [        5      (       d  M(  [        [        [        U 5      [        5      (       d  MM  [        [        U 5      R                  PMi     nn [        R                  [        R                  [        R                  [        R                  1R                  U5      $ s  sn f r2   )dirbuiltins
isinstancegetattrtype
issubclassr5   __new__r3   dicttuplelistunion)name
exceptionss     r7   supported_c_new_functions2UserDefinedClassVariable.supported_c_new_functions   s    
 H
%'(D148 , 78T2MB ,GHd#++% 	 
 NNLLMMLL	

 %

	
s   'C!C"Cc                 0    U [         R                  5       ;   $ r2   )rU   r   rb   s    r7   is_supported_new_method0UserDefinedClassVariable.is_supported_new_method   s     0JJLLLr9   c                 <    U R                   U R                  5       ;   $ r2   )rL   rv   rc   s    r7   can_constant_fold_through2UserDefinedClassVariable.can_constant_fold_through   s    zzT88:::r9   txr0   c                    UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[	        U[
        R                  5      (       + $ X R                  R                  ;   $ NT
deleted_ok	outputside_effectshas_pending_mutation_of_attr	load_attrr   r	   DeletedVariablerL   __dict__r]   r   keymutated_attrs       r7   has_key_in_generic_dict0UserDefinedClassVariable.has_key_in_generic_dict   f    99!!>>tII9911;;DRV;WL!,	0I0IJJJjj))))r9   r   r-   c                   > SSK JnJn  U R                  b  [	        U R                  U5      OS nUS:X  a%  UR                  U R                  R                  5      $ US:X  a%  UR                  U R                  R                  5      $ US:X  a  SU0n[        R                  " X40 UD6$ U R                  [        R                  [        R                  1;   a  US:X  a  [        T	U ]=  X5      $  [         R"                  " U R                  U5      nUS:X  a)  [*        R-                  W5      (       a  [        T	U ]=  X5      $ U[.        ;   a4  [1        W[2        R4                  5      (       d  [        R                  " XUS	9$ [1        W[6        5      (       a0  [8        R:                  " XR=                  U R                  5      U5      $ [1        U[>        5      (       ay  [1        UR@                  [B        5      (       a;  [        RD                  " UR@                  RF                  5      RI                  X/0 5      $ [        RJ                  " UR@                  XS	9$ [1        U[2        RL                  5      (       a3  UR=                  S U R                  5      n[8        R:                  " XU5      $ U(       ae  [         RN                  " U5      (       d  [P        RR                  S
:  a6  US:X  a0  [8        R:                  " XR=                  U R                  5      U5      $ URU                  U5      (       a  UR                  U5      $ [1        U[V        RX                  5      (       a  U" U5      $ U[[        U R                  S0 5      ;   dD  U R                  R\                  R_                  S5      (       d  U R                  R\                  S:X  a  U(       a  [8        R:                  " XU5      $ U(       aB  [         R`                  " U5      (       d'  [c        U5      (       d  [8        R:                  " XU5      $ [        T	U ]=  X5      $ ! [$         a5    ['        U R                  5      [&        L a  [)        [$        U5         GNZS n GN_f = f)Nr*   )ConstantVariableEnumVariablerN   rP   r   sourcefromkeysr   r   )      __mro__ztorch.rq   )2 r   r   r   r   createrL   rN   rP   r	   GetAttrVariablecollectionsOrderedDictdefaultdictrZ   var_getattrinspectgetattr_staticAttributeErrorr   r   rU   r   r   r   typesFunctionTypestaticmethodr-   build__get__classmethod__func__propertyUserFunctionVariablefgetcall_functionUserMethodVariableClassMethodDescriptorTypeismemberdescriptorrA   version_info
is_literalenumEnumr   rO   
startswithismethoddescriptorr!   )
r]   r   r   r   r   r   optionsobjfuncr_   s
            r7   r   $UserDefinedClassVariable.var_getattr   sa   426++2IDKK.t:#**4::+>+>??^##**4::+B+BCCZ(G,,TC7CC JJ;22K4K4KLL
"7&r00	((T:C 9!9!Q!QRU!V!V7&r00))*S%BTBT2U2U,,TGGc<(("(([[-DfMM[))#,,11 55cll6G6GHVV  //dRRU<<== ;;tTZZ0D"((6::))#..  G+	0A&,,RTZZ1H&QQ&&s++#**3//TYY''$$WTZZR88JJ!!,,X66zz$$/&,,Rf== ..s333C88"((&99w"2,,i  	DJJ4'(< 	s   *!P, ,6Q+%Q+*Q+c                 H  ^^^^	^
^^ SSK Jn  UR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      4S jnU" U0 UD6u  mmmm	m
mUUU	U
UUU4S jn[        R                  " U5      $ )	a:  
functional: input, target, weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean',
label_smoothing=0.0

non functional ctor: weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean',
label_smoothing=0.0

non functional loss call: input, target, optional_output
r*   r   Nimeang        c                     U UUUUU4$ r2   rM   )weightsize_averageignore_indexreduce	reductionlabel_smoothings         r7   normalize_argsIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_args(  s       r9   c                    > SSK Jn  U" TTR                  R                  " S[        R
                  R                  R                  /[        U UT	TTTTT/0 5      Q76 S9$ )Nr*   wrap_fx_proxyr   r   proxy)	builderr   r   create_proxyrq   nn
functionalcross_entropyr&   )
inputtargetr   r   r   
reduce_argr   r   r   r   s
      r7   fake_cross_entropy_lossRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_lossB  so    . ii,,#HH''55 '!""((&%+	  r9   )r   r   r   r	   LambdaVariable)r]   r   argsr^   r   r   r   r   r   r   r   r   r   s    `     @@@@@@r7   _call_cross_entropy_loss1UserDefinedClassVariable._call_cross_entropy_loss  s     	' $**40)006)006#**40&--f5,33C8	0 D+F+	
	 	0 ''(?@@r9   c                   > US:X  a  [        U5      S:X  a  U(       d  SU R                  R                  ;  am  U R                  nU R                  (       a!  [	        U R                  S5      n[        U5      n[        R                  " XR                  R                  5       U5      $ U R                  [        R                  [        R                  1;   a,  US:X  a&  SSKJn  UR                  " XR                  /UQ70 UD6$ US:X  aS  [        U5      S:X  aD  [        US   S5      (       a0  [         R"                  " U R                  US   R                  :H  5      $ US:X  aS  [        U5      S:X  aD  [        US   S5      (       a0  [         R"                  " U R                  US   R                  :g  5      $ US	:X  a  U R                  [        R                  L a  [%        US   [&        5      (       an  US   R                  [        R                  L aN  [        U5      S:X  d   e[        U5      S:X  d   e[         R(                  " 0 [        R                  [+        5       S
9$ US	:X  a[  [&        R-                  U R                  R.                  5      (       a-  UR0                  R2                  R5                  U US   USS  5      $ [6        TU ]q  XX45      $ )N__subclasses__r   r   r*   )BuiltinVariable__eq__rL   __ne__r   mutation_type)lenrL   r   r   r   r   r-   r   r   r   r   r   builtinr   call_custom_dict_fromkeysr~   r	   r   r   rU   ConstDictVariabler,   r   r   r   r   track_new_user_defined_objectrZ   call_method)r]   r   r   r   r^   r   r   r_   s          r7   r  $UserDefinedClassVariable.call_method\  sM    $$D	Q 

(;(;;[[F{{#DKK1AB1&9"((ZZ-F-F-H&QQJJ;22K4K4KLL
"0"<<JJ!%)/  X#d)q.WT!Wg5N5N--djjDGMM.IJJX#d)q.WT!Wg5N5N--djjDGMM.IJJI

k55547$<==Q!8!88t9>!>v;!###..K++;K;M  Y#;#S#SJJ$
 $
 99))GGQQR 
 w"2T::r9   c                   > SSK Jn  SSKJn  [	        X#5      nU R                  5       (       a  U(       a  [        R                  R                  U R                  5       " U Vs/ s H  owR                  5       PM     sn0 UR                  5        VV	s0 s H  u  pXR                  5       _M     sn	nD65      $ U R                  [        R                  R                  L a  U R                  XU5      $ U R                  [         R"                  L a  SSKJn
  U
" 5       $ U R                  [(        R*                  L a9  UR-                  [.        R0                  " U[2        R4                  5      U /UQU5      $ U R                  [(        R6                  L aR  [9        U5      S::  aC  [:        R<                  " US   5      (       a%  [;        0 [(        R6                  US   [?        5       S9$ [A        U R                  5      (       aT  U R                  RB                  (       a  [E        S5        [        RF                  " [H        5      RJ                  " U/UQ70 UD6$ U R                  [(        RL                  L Gad  [        R                  R                  S 5      nU(       d  [9        U5      S:X  a  / nGO[9        U5      S:X  a.  US   RO                  U5      (       a  US   RQ                  U5      nO[9        U5      S:X  a3  US   RO                  U5      (       a  US   RQ                  U5      nUS   nO[E        S	5        Oy[S        U5      S
:X  a_  US   n[9        U5      S:X  a  / n[9        U5      S:X  a.  US   RO                  U5      (       a  US   RQ                  U5      nO[E        S5        O[E        S5        [        RT                  RW                  WU[?        5       S9$ U R                  [X        RZ                  L a  [        R\                  " US   5      $ U R                  [^        R`                  L a:  U(       d  [E        S5        US   nUSS  n[        Rb                  Re                  XUS9$ U R                  [f        Rh                  L a&  U(       d  [        Rj                  R                  X5      $ U R                  [        Rl                  Rn                  L a`  U(       dY  [9        U5      S:X  aJ  US   Rq                  5       (       d   e[        Rr                  R                  XS   R                  5       5      $ [u        [w        U R                  5      [v        5      (       Ga  [y        U R                  S5      (       Ga  [y        U R                  S5      (       Ga  U R{                  5       (       Ga  UR}                  U R                  5      (       Ga  U R~                  (       Ga  [        U R                  5      (       Gdp  SSK1JAnJBn  U R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  4;   a  [E        U R                   S35        U R                  [         R                  L af  [        US   U5      (       aR  [        R                  R                  R                  (       d  [E        S5        U" US   US   R~                  S9/USS  -   nUR                  R                   R                  [        RF                  " [        5      U U5      nUR                  USX#5        U$ [        U R                  5      (       Gah  [        U R                  5      nU R                  R                  S:X  a/  [9        U5      S:X  d   eU(       a   eUS   RQ                  U5      nOU R                  R                  n[        U5      nUR                  S /[9        U5      [9        U5      -
  -  5        0 n[        UU5       H>  u  nnUb  M  UU;   a  UU   nO"UU;   d   e[.        R0                  " UUU   5      nUUU'   M@     UR                  5        H"  u  nnUU;   d   eUUUR                  U5      '   M$     [        S U 5       5      (       d   e[        R                  " XR                  5      $ [        U R                  5      (       Ga  U R{                  5       (       Ga  [        R                  " U R                  5      n[        U5      nUR                  S /[9        U5      [9        U5      -
  -  5        0 n[        UU5       H  u  nnUb  M  UR                  U;   a  UUR                     nOUR                  (       d  M>  UR                  [        R                  La"  [.        R0                  " UUR                  5      nOTUR                  [        R                  La5  [.        R0                  " UUR                  5      nUR                  U/ 0 5      nOM  UUUR                  '   M     UR                  U5        UR                  R                   R                  [        RF                  " [        5      X5      nUR                  USX#5        U$ U R                  U R                  5       ;   d  [        U R                  5      (       Ga  [        (       a  U R                  [        ;   a  [9        U5      S:X  a  [        US   [        R                  5      (       a}  [9        US   R                  5      S:  aa  [        S US   R                   5       5      (       a=  U" UUR                  R                  " S[        R                  /[        X#5      Q76 S9nU/nU" UUR                  R                  " SU R                  /[        X#5      Q76 S9nU$ U R                  [        R                  L ad  [9        U5      S:X  a2  [        US   [        R                  5      (       a  US   R                  n OS n [        R                  " U 5      n![        U!5      $ U R                  [        R                  L aJ  [9        U5      S:X  a;  [        US   [        R                  5      (       a  [        R                  " US   5      $ UR}                  U R                  5      (       a^  U R~                  (       aM  [        5          UR-                  [.        R0                  " U[2        R                  5      U /UQU5      sS S S 5        $ [        T"U G]  XU5      $ s  snf s  sn	nf ! , (       d  f       N*= f)Nr   )SideEffectsr*   r   )NullContextVariabler   r   z*TypedDict with optional keys not supportedz*deque() with more than 2 arg not supported)maxlenr  z*deque() with more than 1 arg not supportedz)deque() with invalid kwargs not supported)r  r   zfunctools.partial malformed)r   keywords	__enter____exit__)BaseUserFunctionVariable3FunctionDecoratedByContextlibContextManagerVariablez not supported. This may be due to its use of context-specific operations that are not supported in Dynamo yet (i.e. Exception handling)zcontextlib.contextmanagerr   r[   ztorch.return_typesc              3   (   #    U  H  oS Lv   M
     g 7fr2   rM   .0xs     r7   	<genexpr>9UserDefinedClassVariable.call_function.<locals>.<genexpr>C  s     8%QD=%s   c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr2   )r   r	   TensorVariabler  s     r7   r  r  t  s      WA
1i&>&>??s   ')r   r   )yr   r  r   r   r   r   r	   r   r   rd   itemsrL   rq   r   CrossEntropyLossr   
contextlibnullcontextctx_managerr  r   r   inline_user_function_returnr-   r   r   construct_dictr   r   r.   is_supported_argr,   r   __optional_keys__r   r   r   	call_dictdequehas_force_unpack_var_sequenceforce_unpack_var_sequencer   listsDequeVariableweakrefrefWeakRefVariable	functoolspartial	functionsFunctoolsPartialVariablewarningscatch_warningsCatchWarningsCtxManagerVariabler{   rr   is_python_constantCUDADeviceVariabler   r   r~   is_standard_new"cls_supports_mutation_side_effectsr   rH   r  r  _AsyncGeneratorContextManagerclosingredirect_stdoutredirect_stderrsuppress	ExitStackAsyncExitStack_GeneratorContextManagerr   _dynamoconfigenable_trace_contextlibr   r  r3   r  r   r$   rO   _field_defaultsr   extendzipindexallNamedTupleVariabler   dataclassesfieldsr   initdefaultMISSINGdefault_factoryr   r   r   r   npr'   ListVariabler   stackr&   randomRandomRandomVariabler   MappingProxyTyper  MappingProxyVariabler   %instantiate_user_defined_class_objectrZ   )#r]   r   r   r^   r  r   constant_argsr  kvr  r  r  fn	rest_argsr  r  cm_objrE  field_defaultsvar_tracker_kwargs
field_namevar_tracker	field_varr   rL   default_kwargsfield
factory_fnvarstackedtensor_variableseedrandom_objectr_   s#                                     r7   r   &UserDefinedClassVariable.call_function  s
    	/*+D9))++--44'')6:;d**,d;=C\\^L^TQq..00^L  ZZ588444006BBZZ:1118&((ZZ;22211%%b)*B*BC  JJ+111D	Q#44T!W==&''Q.0	  $**%%zz++JK,,T2<<RQ$Q&QQZZ;,,,//66t<Ft9>EY!^Q(M(Mb(Q(Q G==bAEY!^Q(M(Mb(Q(Q G==bAE!!WF!"NOv+-)t9>Et9>d1g&K&KB&O&O G==bAE!"NOIJ??00f4D4F 1   ZZ7;;&,,T!W55ZZ9,,,;<aBQRI &&??V @   ZZ82224<<CCBOOZZ5::,,,VD	Q7--//////66r7;U;U;WXXtDJJ'..

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

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

3FJELL$3v;U#;<=N&)&%&8"{&zzV+&,UZZ&8$zz$ ==0C0CC*9*?*?EMM*RK"22+:M:MM)8)>)> "E$9$9*J +5*B*B2r2*NK %1<N5::.) '9* MM.)))((FF))&14C OOB
D9JJJ$00221$**==
 JJ"55INtAw	(>(>??Q&*WaWWW ())00' +48  y+ii,,#JJ 't4O #"ZZ6==(4yA~*T!Wi6P6P"Q"QAw}}"MM$/M!-00JJ%000D	Q47I$?$?@@ 11$q'::;;DJJGGDKK5755#))IKK MDM 87 w$Rv66I <Lv 87s   "u/u49u::
vc                     [         R                  " U R                  SS5      n[        U[        5      (       a  UR
                  nU[        R                  L $ )z"Check for __new__ being overriddenr   N)r   r   rL   r   r   r   r3   r   )r]   new_fns     r7   r1  (UserDefinedClassVariable.is_standard_new  s?    ''

ItDfl++__F''r9   c                   > U R                   (       ah  [        U R                   U5      n[        UR                  [        R
                  5      5        [        R                  " [        U R                  U5      5      $ [        TU ]-  X5      $ r2   )r   r   r   
make_guardr   HASATTRr	   r   r~   rL   rZ   call_obj_hasattr)r]   r   r   r   r_   s       r7   rm  )UserDefinedClassVariable.call_obj_hasattr  sa     ;;T2F&++L,@,@AB--gdjj$.GHHw'11r9   c                 Z   > US:X  a  U R                   R                  $ [        TU ]  X5      $ )NrN   )rL   rN   rZ   const_getattrr]   r   r   r_   s      r7   rp  &UserDefinedClassVariable.const_getattr  s+    :::&&&w$R..r9   rb   rW   Nr   r0   r   list[VariableTracker]r^   dict[str, VariableTracker]rW   r-   r   r0   r   rv  r^   rw  rW   r-   )rN   rO   rP   rQ   r   r3   rR   r[   rd   rh   strrn   r   r(  	lru_cacherv   r   r   r   r   r   r   r   r  r   r1  rm  rp  rS   __classcell__r_   s   @r7   rU   rU      sh   <:# : 
  
 F  F     M M
;*N-5 N-S N-EV N-`>A@2; &	2;
 -2; 
2;hS7#S7 &S7 -	S7
 
S7j(2)2142	2/ /r9   rU   c                   4    \ rS rSr\S 5       r\S 5       rSrg)!UserDefinedExceptionClassVariablei  c                     U R                   $ r2   rb   rc   s    r7   rV  $UserDefinedExceptionClassVariable.fn      zzr9   c                     U R                   $ r2   rb   rc   s    r7   python_type-UserDefinedExceptionClassVariable.python_type  r  r9   rM   N)rN   rO   rP   rQ   r   rV  r  rS   rM   r9   r7   r~  r~    s(       r9   r~  c                       \ rS rSrSrg)NO_SUCH_SUBOBJi  rM   NrN   rO   rP   rQ   rS   rM   r9   r7   r  r        r9   r  c                    SSK Jn  U Vs/ s H  oUR                  5       PM     nnUR                  5        VVs0 s H  u  pgXgR                  5       _M     nnn[	        U R
                  R                  5      nU" U0 UD6n	[        U5      n
U R
                  R                  R                  XU45        U" X
5      R                  U	5      $ s  snf s  snnf )Nr*   )VariableBuilder)
r   r  rd   r  r   r   random_callsr   r?   wrap_unspecialized_primitive)r   rV  r   r^   r  r  rT  rU  random_call_indexexample_valuer   s              r7   call_random_fnr    s    (,01Dq  "DD14:LLNCNDAa%%''NFCBII223''M01FII!!2V"45 2&CCMRR 2Cs
   CCc                     ^  \ rS rSrSrSS1\R                  krSSSSS. S'U 4S jjjrS\4S	 jr	S\4S
 jr
S rS rU 4S jrU 4S jrS rS rS(S jr\\R(                  " S5      S 5       5       rS r      S)U 4S jjrS(S jrS rU 4S jrS rS r        S*U 4S jjrS rS rS  r S(S! jr!S" r"S(S# jr#SSS$\SS4S% jr$S&r%U =r&$ )+UserDefinedObjectVariablei  zW
Mostly objects of defined type.  Catch-all for something where we only know the type.
rL   
value_typeN)r  
cls_sourcebase_cls_vt	init_argsrW   c                  > [         TU ]  " S0 UD6  Xl        U=(       d    [        U5      U l        [        U5      U R                  L d   eX0l        Uc'  U R                  b  [        U R                  5      U l        X@l        XPl	        g rY   )
rZ   r[   rL   r   r  r  r   r   r  r  )r]   rL   r  r  r  r  r^   r_   s          r7   r[   "UserDefinedObjectVariable.__init__  sq     	"6"
$3UE{doo---$$++"9(5DO '"r9   c                     U R                   R                  nUS;   a   [        [        U R                  SS 5      5      nU R
                  R                   SU S3$ )N)builtin_function_or_methodgetset_descriptormethod_descriptormethodrN   rl   rm   )r  rN   ry  r   rL   r_   )r]   inners     r7   __str__!UserDefinedObjectVariable.__str__  sU    (( 
 
 

J=>E..))*!E7!44r9   c                 b    U R                   R                   SU R                  R                   S3$ rk   r_   rN   r  rc   s    r7   rn   "UserDefinedObjectVariable.__repr__  +    ..))*!DOO,D,D+EQGGr9   c                     gNFrM   r]   r   s     r7   is_underlying_vt_modified3UserDefinedObjectVariable.is_underlying_vt_modified  s    r9   c                     U R                   $ r2   r  rc   s    r7   r  %UserDefinedObjectVariable.python_type
  s    r9   c                   > SS K Js  Jn  UR                  U R                  5      (       aK  U R
                  b>  [        U R
                  R                  [        R                  5      5        U R                  $ [        TU ]1  5       $ Nr   )torch.utils._pytreeutils_pytreeis_constant_classr  r   r   rk  r   EQUALS_MATCHrL   rZ   rd   )r]   pytreer_   s     r7   rd   ,UserDefinedObjectVariable.as_python_constant  s_    ,,##DOO44{{&dkk44\5N5NOPzz! w)++r9   c                    > U R                   (       a>  [        U R                   R                  [        R                  5      5        U R
                  $ [        TU ]  5       $ r2   )r   r   rk  r   ID_MATCHrL   rZ   guard_as_python_constant)r]   r_   s    r7   r  2UserDefinedObjectVariable.guard_as_python_constant  s?    ;;$++001F1FGH::w/11r9   c                 8    [        U 5      (       d
   SU  35       eg )Nz<calling torch function on object without __torch_function__ )r   rc   s    r7   torch_function_check.UserDefinedObjectVariable.torch_function_check  s$    !$'' 	
J4&Q	
'r9   c                 h    U R                  5         SSKJn  U" XR                  U R                  5      $ )Nr*   )build_torch_function_fn)r  torch_functionr  rL   r   )r]   r   r  s      r7   get_torch_fn&UserDefinedObjectVariable.get_torch_fn#  s&    !!#;&r::t{{CCr9   r   r0   c           	      x    U R                  5         SSKJnJn  U" UU" X5      U R	                  U5      UUUU5      $ )Nr*   )_get_subclass_type_varcall_torch_function)r  r  r  r  r  )r]   r   rV  r   r   r^   r  r  s           r7   r  -UserDefinedObjectVariable.call_torch_function)  sC    !!#O""2,b!
 	
r9   c                      [         R                   [         R                  [         R                  [         R                  1n U $ r2   )rM  randint	randrangeuniform)fnss    r7   _supported_random_functions5UserDefinedObjectVariable._supported_random_functions8  s0     MMNNNN	
 
r9   c                     U[        U R                  S0 5      ;  a+   [        R                  " [	        U R                  5      U5      $ g ! [
         a     g f = f)Nr   )r   rL   r   r   r   r   )r]   r   s     r7   _maybe_get_baseclass_method5UserDefinedObjectVariable._maybe_get_baseclass_methodC  sT    wtzz:r::--d4::.>EE  " s   )A 
AAr-   c                 >  > SSK JnJn  U R                  U5      nUGbp  U[        R
                  L a  UR                  S 5      $ [        U5      (       d)  [        U R                  [        R                  5      (       a  U R                  " U/UQ70 UD6$ U[        R                  L az  [        U5      S:X  ak  U(       dd  US   n[        U[        5      (       d#  [         R                  R                  ["        5      $ UR                  U R                  UR                  L 5      $ [$        R&                  R(                  R*                  (       a4  [        U R                  [,        R.                  5      (       a  [1        S5        [        U[,        R2                  5      (       au  U R4                  c  S O[7        [7        U R4                  S5      U5      n	SSKJn
  U[$        R<                  R>                  R
                  L a  U
nU" XpU	S9RA                  XU5      $ U[B        RD                  L al  U R4                  (       a[  U(       dT  U(       dM  [G        U R4                  RI                  [J        RL                  5      5        U" [        U R                  5      5      $ [N        TU ]  XX45      $ )	Nr*   )r   r   r   z,Generator as graph argument is not supportedr_   r   unpatched_nn_module_initr   ))r   r   r   r  r3   r[   r   r8   r   rL   	threadinglocalmethod_setattr_standardr   r   r  r	   NotImplementedrq   r;  r<  "enable_faithful_generator_behaviorr   GeneratorTyper   r   r   r   mutation_guardr  r   Moduler   r   __len__r   rk  r   SEQUENCE_LENGTHrZ   r  )r]   r   r   r   r^   r   r   r  otherr   r  r_   s              r7   r  %UserDefinedObjectVariable.call_methodK  s    	;11$7('..t44"6**jY__.U.U33BHHHH&3t9>&Q!%)BCC$55<<^LL (..tzzU[[/HII}}##FF:

E//L L LM &%"4"455 {{* #Jt{{K$H$O  FUXX__5555F)&vFTTf  %$++tvdkk44\5Q5QRS'DJJ88w"2T::r9   c                 P    UR                  5       nUR                  R                  R                  U 5      (       d  [        SU  SU S35        UR                  R                  R                  XU5        [        R                  " S 5      $ ! [         a    [        SU 35         Nf = f)Nznon-const setattr name: zsetattr(z, z, ...))	rd   NotImplementedErrorr   r   r   is_attribute_mutation
store_attrr	   r   )r]   r   r   rL   s       r7   r  1UserDefinedObjectVariable.method_setattr_standard  s    	=**,D yy%%;;DAAHTF"TF&9:
		))$e<))$// # 	=4TF;<	=s   B
 
B%$B%c                     [        [        R                  " U R                  SS 5      5      (       + =(       a)    [	        U R                  [
        R                  5      (       + $ )Nr4   )r8   r   r   rL   r   r  r  rc   s    r7   needs_slow_setattr,UserDefinedObjectVariable.needs_slow_setattr  sD    &""4::}dC
 
 :TZZ99	:r9   c           
      X  > U R                   (       Ga  U R                  S5      [        R                  L a  U R                  S5      [        R                  L a  U R                  S5      [        R
                  L a  [        U R                   R                  [        R                  5      5        [        [        U R                  5      5       Vs/ s HB  n[        R                  R                  U R                  U   [!        U R                   U5      S9PMD     sn$ ["        TU ]I  U5      $ s  snf )N__iter__r  __getitem__r   )r   r  r   r  r  r  r   rk  r   r  ranger   rL   r	   LazyVariableTrackerr   r   rZ   unpack_var_sequence)r]   r   rT  r_   s      r7   r  -UserDefinedObjectVariable.unpack_var_sequence  s    KKK00<M00;t||K00?4CSCSS$++001M1MNO s4::/
 0A	 --44JJqM(a8 5  0  w*2..s   A	D'c                 *    U R                  US/ 0 5      $ )N__next__)r  r]   r   s     r7   next_variable'UserDefinedObjectVariable.next_variable  s    JB77r9   c                 ^     U R                   U R                  5       ;   $ ! [         a     gf = fr  )rL   r  	TypeErrorrc   s    r7   is_supported_random-UserDefinedObjectVariable.is_supported_random  s1    	::!A!A!CCC 		s    
,,c                 .  > U R                  5       (       aR  [        S U 5       5      (       a;  [        S UR                  5        5       5      (       a  [        XR                  X#5      $ [        U R                  [        R                  5      (       Ga  U R                  R                  nU R                  R                  nU[        R                  R                  R                  R                  L al  [        R                   R#                  UR$                  5      (       a>  U(       d7  U(       d0  [        R                   " UR$                  5      R'                  XU5      $ U[        R(                  R*                  R,                  R                  L a  UR$                  [        R(                  R*                  R,                  L aQ  [        R.                  " UR0                  5      n[        R                   " UR$                  5      R'                  X/U5      $ U R2                  c  [5        S5        [7        U R2                  S5      n[8        R:                  " XU5      n[7        U R2                  S5      n	[8        R:                  " XU	5      n
UR'                  X/U-   U5      $ [=        U R                  5      (       aV  U R2                  (       a2  [?        U R2                  RA                  [B        RD                  5      5        U RG                  USX#5      $ [H        TU ]M  XU5      $ )Nc              3   @   #    U  H  oR                  5       v   M     g 7fr2   r/  )r  rT  s     r7   r  :UserDefinedObjectVariable.call_function.<locals>.<genexpr>  s     9Dq((**D   c              3   @   #    U  H  oR                  5       v   M     g 7fr2   r  )r  rU  s     r7   r  r    s     DOq((**Or  z9Sourceless UserDefinedObjectVariable method not supportedr   __self____call__)%r  rB  valuesr  rL   r"   r   
MethodTyper   r  rq   r  _contextlib_DecoratorContextManagercloner	   TorchCtxManagerClassVariableis_matching_clsr_   r   autograd	grad_modeinference_moder   moder   r   r   r-   r   callabler   rk  r   FUNCTION_MATCHr  rZ   )r]   r   r   r^   r   r   ra  func_srcfunc_varobj_srcobj_varr_   s              r7   r   'UserDefinedObjectVariable.call_function  s8    $$&&9D999DFMMODDD!"jj$??DJJ 0 011::&&D**%%C//HHNNN::JJMM   ==MM-&12
 00??EEEMMU^^%=%=%L%LL  00: ==MM-E623 {{"O "$++z:H&,,Rx@H j9G%++BW=G))"i$.>GGdjj!!{{dkk44\5P5PQR##B
DAAw$Rv66r9   c                 ,    [        U R                  5      $ r2   )r   rL   rc   s    r7   _check_for_getattr,UserDefinedObjectVariable._check_for_getattr  s    !$**--r9   c                     [        U[        5      (       d  g[        UR                  [        R                  5      =(       d=    [
        R                  R                  R                  R                  UR                  5      $ r  )
r   r   r   r   BuiltinFunctionTyperq   _Cr;  r  is_instancemethod)r]   subobjs     r7   _is_c_defined_property0UserDefinedObjectVariable._is_c_defined_property  sY    &(++ KK22
 CXX##55fkkB	Cr9   c                 *   [         R                  " U R                  U[        5      nSS Kn[        U R                  5      (       d  U[        L d  [        X#R                  5      (       de  [         R                  " U5      (       a  XR                  R                  ;   d1  U R                  U5      (       d  [         R                  " U5      (       a  U R                  R                  U5      nU$ [        U R                  5      (       a  U[        L a  [        eU$ r  )r   r   rL   r  _collectionsr%   r   _tuplegetterr   	__slots__r  isgetsetdescriptor__getattribute__r   )r]   r   r  r  s       r7   _getattr_static)UserDefinedObjectVariable._getattr_static  s    ''

D.I 'tzz22n$11  **622tzz?S?S7S**622))  ZZ006F  %TZZ00V~5M ! r9   c                    UR                   R                  R                  X5      (       aC  UR                   R                  R                  XSS9n[	        U[
        R                  5      (       + $ X R                  R                  ;   $ r   r   r   s       r7   r   1UserDefinedObjectVariable.has_key_in_generic_dict  r   r9   c                 r   U R                   c   e[        [        U R                  5      R                  5       HN  u  p#XR
                  ;   d  M  [        U R                   S5      n[        XB5      n[        US5      n[        Xa5      s  $    [        SU S[        U R                  5      R                   35        g )Nr   r   zCould not find z in )	r  	enumerater   rL   r   r   r   r   r   )r]   r   idxklass
mro_sourceklass_sourcedict_sources          r7   get_source_by_walking_mro3UserDefinedObjectVariable.get_source_by_walking_mro  s    ***#D$4$<$<=JC~~%'C
,Z=(zB %[77 > 	vT$tzz2B2J2J1KLMr9   c                    SSK Jn  SSK Jn  U R                  (       a  [	        U R                  U5      OS n[        U R                  5      (       a  [        R                  " [        U R                  5      S5      nU R                  (       a  [	        U R                  S5      n [        R                  " X`WS9R                  XR                  U5      /0 5      $ UR                   R"                  R%                  X5      (       aU  UR                   R"                  R'                  XSS9n[)        U[        R*                  5      (       a  [-        [.        U5        U$ US	:X  a  S
U0n	[        R0                  " X40 U	D6$ US:X  a4  Un
U
c  U R2                  n
S
U
0n	[5        [        U R                  5      40 U	D6$  U R7                  U5      nSSK0J1n  U[P        RR                  RT                  Rd                  L a  Un[)        U[f        5      (       am  U R                  (       a,  [	        [	        U R                  S5      U5      n[	        US5      n[        R                  " URh                  XS9R                  U/ 0 5      $ [)        U[j        5      (       aS  URm                  U R                  5      nUb  URo                  U5      Rq                  XS9$ URo                  U5      " U5      $ [)        U[r        5      (       a0  [        R                  " URt                  U Rw                  US5      US9$ [)        U[<        Rx                  5      (       a3  URm                  U R                  S 5      n[z        R|                  " XU5      $ [        R~                  " U5      (       a  [        URl                  5      (       d  S nS nU R2                  (       a5  U R                  U5      n[	        US5      n[z        R|                  " XU5      nO[        U5      n[5        [        U R                  5      5      n[        R                  " URl                  Rt                  UUS9R                  XU/0 5      $ [)        U[<        R>                  5      (       dT  [)        U[<        R                  5      (       Ga  [)        U R                  [P        RR                  RT                  5      (       Ga  [        U R                  U5      nUUL aL  [        US5      (       a;  UR                  nUnU(       a  [	        US5      OS nUUL a  [        US5      (       a  M;  [)        U[<        R                  5      (       a  UR                  U R                  Laz  [)        URt                  [<        R>                  5      (       d  [_        SU 35        SSKHJIn  UR                  UUR                  5      n[        R                  " URt                  U5      $ URt                  nO#[)        U[<        R>                  5      (       d   eUn[        R                  " U5      (       a  [        R                  " XUS9$ [        R                  " U5      (       aQ  [        U5      (       a	  [        US9$ Ub  URo                  U5      Rq                  XS9$ URo                  U5      " U5      $ [P        R                  R                  R                  (       d  [)        U [        R                  5      (       an  U(       ag  [)        U [        RB                  5      (       aH  UR                   R                  (       d-  US;   a  [        U R                  U5      nU R                  U5      nU[8        La  [        U5      (       a  S
U0n	[        R0                  " X40 U	D6$ U(       a  [        R                  R                  X5      $ U R2                  bk  [        R                  " U R                  R                  U[8        5      nUUL a6  [	        U R2                  U5      n[        R                  R                  UU5      $ [z        R|                  " X5      $ [-        [.        U5        g ! [         a    [        U5         GNf = f! [.         Ga    [8        nU R;                  5       n[)        U[<        R>                  5      (       Ga  U[@        L a  [)        U [        RB                  5      (       a  [E        U R                  RF                  [H        5      (       ad  [E        U R                  RJ                  [H        5      (       a;  [E        U R                  RL                  [H        5      (       a  U RO                  X5      nO^S nU R                  (       a  [	        U R                  S5      n[        R                  " XUS9R                  XR                  U5      /0 5      nU R                  (       a  U[P        RR                  RT                  RV                  L aX  [)        U[        RB                  [        RX                  45      (       a)  UR[                  [	        U R]                  5       U5      5        Us $ Ub  [_        S5         GNf = f)Nr   )trace_rulesr*   r   r  r   Tr   r   r   r_   __getattr__z)UserDefined with non-function __getattr__r  r   r   _torchdynamo_inlinez7Found a method whose __func__ is not of FunctionType - )"SourcelessUserDefinedObjectBuilder)_buffers_parameters)Wr   r.  r   r   r   r%   rL   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rU   r   r  r  r   r   r)   UnspecializedNNModuleVariabler"   r3  r   r2  _modules manually_trace_nn_module_getattrrq   r   r  r/  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   r  r  r[   r   r   r   r   lookupcreate_with_sourcer   r   r   r   r-   r   r   r!   r+  r  r  r   r~   r0  r  r   r1  ismethod
isfunctionr    r   r;  r<  inline_inbuilt_nn_modulesFSDPManagedNNModuleVariableexportr   _wrap_sourcer  r_   )r]   r   r   r.  r   r   getattribute_fn
new_sourceresultr   r  r  
getattr_fnoutr  r   descriptor_sourcedescriptor_get_sourcedescriptor_var	owner_vardynamic_subobjr1  	object_vtsubobj_from_classsrc_from_classs                            r7   r   %UserDefinedObjectVariable.var_getattr#  se   "&26++DKK.4"4::..%44TZZ "4O {{'5GH
. 33#*-%<%<T%B$CRHI 99!!>>tJJYY++55dT5RF&)";";<<(<M:(G,,TC7CC
 ;J!!__
,G+D,<HHH+	K))$/FX 	>UXX__----Ffh''{{#Jt{{K$H$O#FF3//TmBB'( -->>$**-D!"))$/BB4BWW"))$/55,,//!1!1"k!B6   ? ?@@>>$**d3D"((6::''//8WNN9
 9

 !%$(! %)$B$B4$H!(23Di(P%!0!6!6rCT!U ";6!B 1djj1ABI//''@UmBy 1267  2 233vu//004::uxx77
 %TZZ6N F*wv?T/U/U33!'FLF,ABRV !F*wv?T/U/U
 &%"2"233!**$**<%n&=&=u?Q?QRR%UVdUef L !C I IN33!I %77&//  !&%*<*<====// 33DvNN##N33&t,,4FCC'&--d3FF G   '--d3D99 $$>>dI$I$IJJ4!H!HII II$$ 227TJ&&v.F'.v66#V, 00GwGG 44;;FKK ??.(/(>(>

,,dN)% )F2)3DOOT)J(<<CC-~   ',,R88 	!4e * .)"-.4  )	K#F002J*e&8&899 "=="4)P)PQQtzz55t<<tzz22D99tzz22D99 ??IC!%J{{%/]%K
#66"#mB)@)@)F(GL  ;;:1L1L#L!%CC%66  66&t'F'F'H$O 
'IJS)	Ks+   "4a 2a: a76a7:G&i4"i43i4r   c                    U R                   (       a<  [        [        U R                   U5      R                  [        R
                  5      5         U R                  X5      n[        R                  R                  [        U[        R                  5      (       + 5      $ ! [         a-    [        U5        [        R                  R                  S5      s $ f = fr  )r   r   r   rk  r   rl  r   r	   r   r   r   r   r   r   )r]   r   r   var_vts       r7   rm  *UserDefinedObjectVariable.call_obj_hasattr  s     ;;4;;-889M9MN	<%%b/F--44vy'@'@AA  & 	<%b)--44U;;	<s   AB 4CC)r  r  r  rL   r  rs  rt  ru  rx  )'rN   rO   rP   rQ   __doc__rJ   _nonvar_fieldsr[   ry  r  rn   r  r  rd   r  r  r  r  r   r(  rz  r  r  r  r  r  r  r  r  r   r  r  r   r   r+  r   rm  rS   r{  r|  s   @r7   r  r    sZ    |Q.A.P.PQN # 
# #4	5 	5H# H	,2

D
   3; &	3;
 -3; 
3;j	0:
/"827#27 &27 -	27
 
27h.
C@*Nb5H<)<14<	< <r9   r  c                   j   ^  \ rS rSr\S 5       rS
SU 4S jjjrS rS rSU 4S jjr	S\
4S jrS	rU =r$ )FrozenDataClassVariablei  c           	      F   SSK Jn  [        U5      (       d   e0 nU" U5       Hr  n[        XR                  5      (       d  M  [
        R                  " U [        XR                  5      U=(       a    [        X%R                  5      5      XER                  '   Mt     [        XUS9$ )Nr   rE  )rE  r   )
rD  rE  r   r~   r   r-   r   r   r   rV  )r   rL   r   rE  	field_mapr_  s         r7   r   FrozenDataClassVariable.create  s~    &"5))))	E]Eujj))(7(=(=E::.=z&**=)	**% # 'uvNNr9   rW   c                 >   > [         TU ]  " U40 UD6  Uc  0 nX l        g r2   )rZ   r[   rE  )r]   rL   rE  r^   r_   s       r7   r[    FrozenDataClassVariable.__init__+  s$    )&)>Fr9   c                    SSK Jn  SS KJs  Jn  [        U R                  UR                  UR                  UR                  45      (       d  [        S5      e/ n0 nU" U R                  5       Hp  nUR                  (       d  M  U R                  UR                     R                  5       n[        USS5      (       a  XdUR                  '   M_  UR                  U5        Mr     U R!                  5       nU" U0 UD6$ )Nr   rX  z@currently can't reconstruct arbitrary frozen dataclass instanceskw_onlyF)rD  rE  r  r  r  r"   rL   TreeSpecLeafSpecConstantNoder  rF  r   rd   r   r?   r  )r]   rE  r  r   r^   r_  datactors           r7   rd   *FrozenDataClassVariable.as_python_constant1  s     	',,JJ&//6;N;NO
 
 &R  DJJ'Ezzz{{5::.AAC5)U33)-5::&KK% ( !T$V$$r9   c                 L   SSK Jn  / n0 nU" U R                  5       Hm  nU R                  UR                     R	                  5       n[        US5      (       a!  UR                  (       a  XSUR                  '   M\  UR                  U5        Mo     U R                  5       nU" U0 UD6$ )Nr   rX  r^  )	rD  rE  rL   r   rh   r~   r^  r?   r  )r]   rE  r   r^   r_  r   rc  s          r7   rh    FrozenDataClassVariable.as_proxyO  s    &DJJ'EKK

+446Eui((U]]%*uzz"E" ( !T$V$$r9   c                 \   > X0R                   UR                  5       '   [        TU ]  XU5      $ r2   )rE  rd   rZ   r  )r]   r   r   rL   r_   s       r7   r  /FrozenDataClassVariable.method_setattr_standarde  s*    16D++-.w.r??r9   c                 b    U R                   R                   SU R                  R                   S3$ rk   r  rc   s    r7   rn    FrozenDataClassVariable.__repr__i  r  r9   rX  r2   rs  rt  )rN   rO   rP   rQ   r   r   r[   rd   rh   r  ry  rn   rS   r{  r|  s   @r7   rV  rV    sE    O O  %<%,@H# H Hr9   rV  c                   F   ^  \ rS rSr  SU 4S jjr      SS jrSrU =r$ )SourcelessGraphModuleVariableim  c                 (   > [         TU ]  " U40 UD6  g r2   )rZ   r[   r\   s      r7   r[   &SourcelessGraphModuleVariable.__init__n  s    
 	)&)r9   c                     [         R                  " U R                  R                  R                  5      nU /U-   nUR                  UUU5      $ r2   )r	   r   rL   forwardr   r  )r]   r   r   r   r^   fn_variables         r7   r  )SourcelessGraphModuleVariable.call_methodu  sK      44TZZ5G5G5P5PQv}--
 	
r9   rM   rs  ru  )rN   rO   rP   rQ   r[   r  rS   r{  r|  s   @r7   rl  rl  m  s:    * 
	*
 &	

 -
 

 
r9   rl  c                   n   ^  \ rS rSrU 4S jr\S 5       rU 4S jr\S 5       rS	S jr	\S 5       r
SrU =r$ )
"UserDefinedExceptionObjectVariablei  c                 t   > [         TU ]  " U40 UD6  [        R                  " U R                  S5      U l        g rY   )rZ   r[   r	   ExceptionVariabler  exc_vtr\   s      r7   r[   +UserDefinedExceptionObjectVariable.__init__  s-    )&)11$//2Fr9   c                     U R                   $ r2   r  rc   s    r7   rV  %UserDefinedExceptionObjectVariable.fn  s    r9   c                   > US:X  ax  U R                  U5      =n(       a`  [        R                  " U5      (       aE  [        U5      S:X  a6  X0R                  l        X0R                  l        [        R                  " S 5      $ US:X  af  [        U5      S:X  aW  [        US   [        R                  5      (       a5  US   R                  S;   a"  U R                  R                  XS   US   5        [        TU ]1  XX45      $ )Nr[   r   r4   r   )	__cause____context____suppress_context____traceback__r*   )r  r   r   r   rw  r   rL   r	   r   r   call_setattrrZ   r  r]   r   r   r   r^   r  r_   s         r7   r  .UserDefinedExceptionObjectVariable.call_method  s    J;;DAAA**622Fq #KK"JJO--d33M!D	Q47I$>$>??QTU KK$$Ra$q':w"2T::r9   c                 .    U R                   R                  $ r2   )rw  r}  rc   s    r7   r}  .UserDefinedExceptionObjectVariable.__context__  s    {{&&&r9   c                 8    U R                   R                  U5      $ r2   )rw  set_context)r]   contexts     r7   r  .UserDefinedExceptionObjectVariable.set_context  s    {{&&w//r9   c                 .    U R                   R                  $ r2   )rw  exc_typerc   s    r7   r  +UserDefinedExceptionObjectVariable.exc_type  s    {{###r9   )rw  )r  zvariables.ExceptionVariable)rN   rO   rP   rQ   r[   r   rV  r  r}  r  r  rS   r{  r|  s   @r7   rt  rt    sO    G  ;( ' '0 $ $r9   rt  c                   L   ^  \ rS rSr\S 5       rSU 4S jjrSU 4S jjrSrU =r	$ )KeyedJaggedTensorVariablei  c                     [         R                  R                  S5      nUS L=(       a    [        U 5      UR                  L $ )Nztorchrec.sparse.jagged_tensor)rA   rB   rC   r   KeyedJaggedTensor)r   mods     r7   is_matching_object,KeyedJaggedTensorVariable.is_matching_object  s3    kkoo=>$E490E0E#EEr9   c                 T   > SSK Jn  [        U5      UL d   e[        TU ]  " U40 UD6  g )Nr   )r  )torchrec.sparse.jagged_tensorr  r   rZ   r[   )r]   rL   r^   r  r_   s       r7   r[   "KeyedJaggedTensorVariable.__init__  s+    CE{////)&)r9   c                   > [         R                  R                  R                  (       a@  U R                  b3  US;   a-  [
        R                  " SS9   [        TU ]!  X5      sS S S 5        $ [        TU ]!  X5      $ ! , (       d  f       N= f)N)_length_per_key_offset_per_keyT)#force_unspec_int_unbacked_size_like)	rq   r;  r<  3force_unspec_int_unbacked_size_like_on_torchrec_kjtr   r   patchrZ   r   rq  s      r7   r   %KeyedJaggedTensorVariable.var_getattr  sg    MM  TT'>>%%$Ow*24 POw"2,, POs   A::
BrM   rs  rt  )
rN   rO   rP   rQ   r   r  r[   r   rS   r{  r|  s   @r7   r  r    s&    F F*- -r9   r  c                       \ rS rSrSrg)RemovableHandleClassi  rM   Nr  rM   r9   r7   r  r    s     	r9   r  c                   \   ^  \ rS rSrSr  S S	U 4S jjjrS
U 4S jjrU 4S jrS rSr	U =r
$ )RemovableHandleVariablei  c                 >   > [         TU ]  " S0 UD6  Xl        X l        g rY   )rZ   r[   r   r&  )r]   r   r&  r^   r_   s       r7   r[    RemovableHandleVariable.__init__  s      	"6"*r9   c                 $  > US:X  ay  U R                   U R                  :w  a@  UR                  R                  R	                  U R                   5        U R                  U l         [
        R                  R                  S 5      $ [        TU ]%  XX45        g )Nremove)
r&  REMOVEDr   r   remove_hookr	   r   r   rZ   r  )r]   r   method_namer   r^   r_   s        r7   r  #RemovableHandleVariable.call_method  sh    ("xx4<<'		&&22488<<<--44T::BT:r9   c                    >^ U R                   U R                  :X  a1  TR                  U4S j5        TR                  [	        SS5      5        g [
        TU ]  T5        g )Nc                  (   > T R                  SS5      $ )Nztorch._dynamo.utilsinvalid_removeable_handle)load_import_from)codegens   r7   <lambda>5RemovableHandleVariable.reconstruct.<locals>.<lambda>  s    00)+Fr9   r   F)r&  r  add_push_nullextend_outputr
   rZ   reconstruct)r]   r  r_   s    `r7   r  #RemovableHandleVariable.reconstruct  sN    88t||#!!
 !!"6q%"@AG$r9   c                     [         $ r2   )r  rc   s    r7   r  #RemovableHandleVariable.python_type  s    ##r9   )r&  r   )NNrs  rt  )rN   rO   rP   rQ   r  r[   r  r  r  rS   r{  r|  s   @r7   r  r    s8    G 		 
	 	;%$ $r9   r  c                   p   ^  \ rS rSrSr\R                  rSU 4S jjr      S	U 4S jjrS r	S r
SrU =r$ )
UserDefinedDictVariablei  z
Represents user defined objects that are subclasses of dict/OrderedDict.

Internally, it uses a ConstDictVariable to represent the dict part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
c                    > [         TU ]  " U40 UD6  X l        U R                  c6  U R                  b   S5       e[        R
                  " 0 [        5       S9U l        [        U l        g )Nz@dict_vt must be constructed by builder.py when source is presentr   )	rZ   r[   _dict_vtr   r	   r  r,   r   _dict_methods)r]   rL   dict_vtr^   r_   s       r7   r[    UserDefinedDictVariable.__init__  se    )&)== ;;& R& &77"2"4DM *r9   c                    > U R                  U5      nXPR                  ;   a  U R                  R                  XX45      $ [        TU ]  XX45      $ r2   )r  r  r  r  rZ   r  s         r7   r  #UserDefinedDictVariable.call_method	  sJ     11$7'''==,,RtDDw"2T::r9   c                     [        U R                  5      R                  [        R                  [        R
                  R                  4;   a  U R                  R                  U5      $ [        er2   )	r   rL   r  r   r   r   r  r  r  r  s     r7   r  +UserDefinedDictVariable.unpack_var_sequence  sQ    

$$MM##,,)
 
 ==44R88!!r9   c                 8    UR                  U R                  5      $ r2   )is_modifiedr  r  s     r7   r  1UserDefinedDictVariable.is_underlying_vt_modified      ''66r9   )r  r  r2   ru  rN   rO   rP   rQ   rS  r  rT  r[   r  r  r  rS   r{  r|  s   @r7   r  r    sL     /==N
*
; &	
;
 -
; 

;"7 7r9   r  c                   p   ^  \ rS rSrSr\R                  rSU 4S jjr      S	U 4S jjrS r	S r
SrU =r$ )
UserDefinedListVariablei!  z
Represents user defined objects that are subclasses of lists.

Internally, it uses a ListVariable to represent the list part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
c                    > [         TU ]  " U40 UD6  X l        U R                  c7  U R                  b   S5       e[        R
                  " / [        5       S9U l        g g )Nz@list_vt must be constructed by builder.py when source is presentr   )rZ   r[   _list_vtr   r	   rK  r,   )r]   rL   list_vtr^   r_   s       r7   r[    UserDefinedListVariable.__init__,  s]    )&)== ;;& R& &222EUEWXDM	 !r9   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ r2   )r  r  r#   r  rZ   r  s         r7   r  #UserDefinedListVariable.call_method5  sV     }}(((11$7\!==,,RtDDw"2T::r9   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        er2   )r  r   rL   r  r   r  r  r  s     r7   r  +UserDefinedListVariable.unpack_var_sequenceB  sH    }}(((

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

Internally, it uses a TupleVariable to represent the tuple part of the
variable tracker. For everything else, it falls back to
UserDefinedObjectVariable.
c                 6   > [         TU ]  " U40 UD6  S U l        g r2   )rZ   r[   	_tuple_vtr\   s      r7   r[   !UserDefinedTupleVariable.__init__W  s    )&)r9   c                     Xl         g r2   r  )r]   tuple_vts     r7   set_underlying_tuple_vt0UserDefinedTupleVariable.set_underlying_tuple_vt[  s    !r9   c                 @    [        U 40 UD6nUR                  U5        U$ r2   )r  r  )rL   r  r^   rD  s       r7   r   UserDefinedTupleVariable.create^  s$    )%:6:&&x0r9   c                    > U R                   c   eU R                  U5      nU[        ;   a  U R                   R                  XX45      $ [        TU ]  XX45      $ r2   )r  r  r(   r  rZ   r  s         r7   r  $UserDefinedTupleVariable.call_methodd  sV     ~~)))11$7]">>--bEEw"2T::r9   c                     U R                   c   e[        U R                  5      R                  [        R                  L a  U R                   R                  U5      $ [        er2   )r  r   rL   r  r   r  r  r  s     r7   r  ,UserDefinedTupleVariable.unpack_var_sequenceq  sH    ~~)))

$$6>>55b99!!r9   r  ru  )rN   rO   rP   rQ   rS  r  rT  r[   r  r   r   r  r  rS   r{  r|  s   @r7   r  r  L  s`     /==N"  
; &	;
 -; 
;" "r9   r  c                   \   ^  \ rS rSr\R
                  rU 4S jrSSS\SS4U 4S jjrS	r	U =r
$ )
MutableMappingVariableix  c                 |   > [         TU ]  " U40 UD6  [        R                  " 0 5      U l        [        5       U l        g r2   )rZ   r[   r	   r  generic_dict_vtr+   r   r\   s      r7   r[   MutableMappingVariable.__init__{  s3    )&)(::2>68r9   r   r0   r   rW   r-   c                 r  > US:X  az  [        U R                  5      R                  [        R                  R
                  R                  [        R                  4;   a%  [        R                  " [        R                  U 5      $ US:X  aj  U R                  (       aY  [        R                  R                  U R                  R                  [        U R                  S5      5      U l        U R                   $ U R                   R#                  [        R$                  " U5      5      =n(       a  U$ [&        TU ]Q  X5      $ )NrC   r   )r   rL   rC   r   abcMappingr   r	   r   r   mapping_getr   r  r   r   r   r  maybe_getitem_constr   rZ   r   )r]   r   r   rF  r_   s       r7   r   "MutableMappingVariable.var_getattr  s     5=T$**-11OO##''HH6
 
 //	0E0EtLLZDKK#,#@#@#G#G

##ZZ%H$D  '''((<<&&t,
 
S 
 J7&r00r9   )r  r   )rN   rO   rP   rQ   r  rT  r[   ry  r   rS   r{  r|  s   @r7   r  r  x  s4    .==N9
15 1S 1EV 1 1r9   r  c                       \ rS rSrSrg)rO  i  rM   Nr  rM   r9   r7   rO  rO    r  r9   rO  )drS  r   r   r  rD  r   r(  r   rM  rA   r  r   r,  r%  typingr   typing_extensionsr   torch._dynamo.configrq   torch.nntorch._guardsr   torch.utils._python_dispatchr   r   r   r	   bytecode_transformationr
   create_parameter_opr   excr   r   r   r   guardsr   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   baser+   r,   r-   dictsr.   numpyrJ  ModuleNotFoundErrortorch.utils._cxx_pytreer/   r@   r   torch._dynamo.symbolic_convertr0   r8   rH   rJ   rU   r~  r  r  r  rV  rl  rt  r  r  r  r  r  r  r  rO  rM   r9   r7   <module>r     s  *         
       *   ( K # : F  1     ( O N &2
 DB$/ x/2 x/v(@ 	 	S~< 3 ~<BQH7 QHh
$= 
0&$)B &$R- 9 -.	 	$$o $$N,77 ,7^(77 (7V)"8 )"X16 1D	. 	C2  	B
  dJs$   F F& F#"F#&F76F7