
    sg                        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mZmZ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 ddlmZ ddlmZ dd	lmZm Z m!Z!m"Z" dd
l#m$Z$m%Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z=m>Z> ddl?m@Z@ 	 d dlAZB	 d dlDmEZE erd dlHmIZI d ZJd ZK G d de>      ZL G d deL      ZM G d d      ZNd ZO G d deL      ZP G d deP      ZQ G d d eP      ZR G d! d"eP      ZS G d# d$eP      ZT G d% d&      ZU G d' d(e>      ZV G d) d*eP      ZW G d+ d,eP      ZXy# eC$ r dZBY w xY w# eF$ r  eGd      ZEY w xY w)-    N)DictGenericListTYPE_CHECKING)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GetItemSourceODictGetItemSourceRandomValueSourceUnspecializedParamBufferSourceWeakRefCallSource)build_checkpoint_variablecheck_constant_argsget_custom_getattrhas_torch_functionis_frozen_dataclassis_namedtuple_clsis_utils_checkpointis_wrapper_or_member_descriptoristypenamedtuple_fieldsobject_has_getattributeproxy_args_kwargstensortype_to_dtypeunpatched_nn_module_getattr   )MutableLocalVariableTracker)DefaultDictVariable)
PyTreeSpec)InstructionTranslatorc                 (    | t         j                  fv S N)object__setattr__)vals    W/var/www/html/venv/lib/python3.12/site-packages/torch/_dynamo/variables/user_defined.pyis_standard_setattrr4   J   s    6%%'''    c                    g }	 ddl m} ddlm} ddlm} |j                  |       |j                  |       |j                  |       	 ddlm	} |j                  |       | |v S # t        $ r Y 'w xY w# t        $ r Y | |v S w xY w)Nr   )RaisesContext)WarningsChecker)BaseTorchFunctionMode)&_AssertRaisesRegexWithHighlightContext)
_pytest.python_apir7   _pytest.recwarnr8   torch.overridesr9   appendImportError!torch.testing._internal.jit_utilsr:   )ctxf_ctxsr7   r8   r9   r:   s         r3   is_forbidden_context_managerrC   N   s    F43 	:+,m$o&	
 	<= &=    &=s$   AA% 
A4 %	A10A14	BBc                       e Zd Zy)UserDefinedVariableN__name__
__module____qualname__ r5   r3   rE   rE   k       r5   rE   c                   8    e Zd Zd fdZd Zd ZdefdZe e	j                  d      d               Ze e	j                  d      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 )UserDefinedClassVariablereturnNc                 2    t        |   di | || _        y NrJ   )super__init__valueselfrS   kwargs	__class__s      r3   rR   z!UserDefinedClassVariable.__init__p   s    "6"
r5   c                     | j                   S r/   rS   rU   s    r3   as_python_constantz+UserDefinedClassVariable.as_python_constantt       zzr5   c                     | j                   S r/   rY   rZ   s    r3   as_proxyz!UserDefinedClassVariable.as_proxyw   r\   r5   c                 "    d| j                    dS )NzUserDefinedClassVariable()rY   rZ   s    r3   __str__z UserDefinedClassVariable.__str__z   s    *4::,a88r5   c                  ~    t         j                  t         j                  t         j                  t         j                  hS r/   )torchdevicefinfoiinfoSizerJ   r5   r3   _constant_fold_classesz/UserDefinedClassVariable._constant_fold_classes}   s*     LLKKKKJJ	
 	
r5   c                  n   t         j                  t         j                  j                  t         j                  j                  h} t        t         d      rC| j                  t         j                  j                  t         j                  j                  h       t        t        j                               | z  S )Nhpu)rc   TensorcudaStreamEventhasattrupdaterj   setr&   keys)_in_graph_class_lists    r3   _in_graph_classesz*UserDefinedClassVariable._in_graph_classes   s     LLJJJJ 

 5%  ''II$$IIOO &++-.1EEEr5   c                 :    | j                   | j                         v S r/   )rS   rh   rZ   s    r3   can_constant_fold_throughz2UserDefinedClassVariable.can_constant_fold_through   s    zzT88:::r5   txr-   c                    |j                   j                  j                  | |      rC|j                   j                  j                  | |d      }t	        |t
        j                         S || j                  j                  v S NT
deleted_ok)	outputside_effectshas_pending_mutation_of_attr	load_attr
isinstancer   DeletedVariablerS   __dict__rU   rw   keymutated_attrs       r3   has_key_in_generic_dictz0UserDefinedClassVariable.has_key_in_generic_dict   si    99!!>>tSI9911;;D#RV;WL!,	0I0IJJJdjj))))r5   namer*   c                 v   ddl m}m} ddlm}m} | j                  t        | j                  |      nd }|dk(  r%|j                  | j                  j                        S |dk(  r%|j                  | j                  j                        S |dk(  rd|i}t        j                  | |fi |S | j                  t        j                  t        j                   hv r|dk(  rt"        | I  ||      S 	 t'        j(                  | j                  |      }	t-        |	t.              r>|	j1                  | j                        }
|  |||      |
      S |j                  ||
      S t-        |	t2              r"t        j4                  |	j6                  | |	      S t-        |	t8        j:                        r?|	j1                  d | j                        }
|  |||      |
      S |j                  ||
      S |rUt'        j<                  |	      st>        j@                  d
k\  r-|dk(  r(  |||      |	j1                  | j                              S |jC                  |	      r|j                  |	      S t-        |	tD        jF                        r ||	      S |tI        | j                  di       v s>| j                  jJ                  jM                  d      s| j                  jJ                  dk(  r|r  |||      |	      S |r/t'        jN                  |	      stQ        |	      s  |||      |	      S t"        | I  ||      S # t*        $ r d }	Y +w xY w)Nr(   )ConstantVariableEnumVariableSourcelessBuilderVariableBuilderrG   rI   r   sourcefromkeysr   )      __mro__ztorch.rc   )) r   r   builderr   r   r   r   createrS   rG   rI   r   GetAttrVariablecollectionsOrderedDictdefaultdictrQ   var_getattrinspectgetattr_staticAttributeErrorr   staticmethod__get__classmethodUserMethodVariable__func__typesClassMethodDescriptorTypeismemberdescriptorsysversion_info
is_literalenumEnumgetattrrH   
startswithismethoddescriptorr!   )rU   rw   r   r   r   r   r   r   optionsobjfuncrW   s              r3   r   z$UserDefinedClassVariable.var_getattr   s   4?26++2IDKK.t:#**4::+>+>??^##**4::+B+BCCZ(G,,T4C7CC JJ;22K4K4KLL
"7&r400	((T:C c<(;;tzz*D!2r62488(//D99[)//d6RRU<<= ;;tTZZ0D!2r62488(//D99))#.  G+	0A2r623;;tzz3JKK&&s+#**3//TYY'$$WTZZR88JJ!!,,X6zz$$/2r62377 ..s33C8.?2v.s33w"2t,,W  	C	s   , L) )L87L8c                 B  	
 ddl m} |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      |j                  d      fd} ||i |\  	
	
fd}t        j                  |      S )	aj  
        functional: input, target, weight=None, size_average=None, ignore_index=- 100, reduce=None, reduction='mean',
        label_smoothing=0.0

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

        non functional loss call: input, target, optional_output
        r(   r   Nimeang        c                     | |||||fS r/   rJ   )weightsize_averageignore_indexreduce	reductionlabel_smoothings         r3   normalize_argszIUserDefinedClassVariable._call_cross_entropy_loss.<locals>.normalize_args   s       r5   c                     ddl m}  | j                  j                  dt        j
                  j                  j                  gt        | |	gi              S )Nr(   )wrap_fx_proxycall_functionrw   proxy)	r   r   r|   create_proxyrc   nn
functionalcross_entropyr%   )
inputtargetr   r   r   
reduce_argr   r   rw   r   s
      r3   fake_cross_entropy_losszRUserDefinedClassVariable._call_cross_entropy_loss.<locals>.fake_cross_entropy_loss  sq    . ,bii,,#HH''55 '!""((&%+	  r5   )r   r   r   r   LambdaVariable)rU   rw   argsrV   r   r   r   r   r   r   r   r   r   s    `     @@@@@@r3   _call_cross_entropy_lossz1UserDefinedClassVariable._call_cross_entropy_loss   s     	' $**40)006)006#**40&--f5,33C8	0 D+F+	
	 	0 ''(?@@r5   c                    |dk(  rt        |      dk(  r|sd| j                  j                  vrdt               i}g }| j                  j	                         D ]W  }t        |j                  |j                        |j                        }|j                  t        j                  ||             Y t        j                  |fi |S | j                  t        j                  t        j                  hv r,|dk(  r'ddlm}	  |	j$                  || j                  g|i |S |dk(  rLt        |      dk(  r>t'        |d   d	      r/t        j(                  | j                  |d   j                  k(        S |d
k(  rLt        |      dk(  r>t'        |d   d	      r/t        j(                  | j                  |d   j                  k7        S t*        
| Y  ||||      S )N__subclasses__r   mutable_localr   r   r(   BuiltinVariable__eq__rS   __ne__)lenrS   r   r)   r   r   import_sourcerH   rG   r>   r   rM   ListVariabler   r   r   builtinr   call_custom_dict_fromkeysro   r   rQ   call_method)rU   rw   r   r   rV   r   subs_as_varssubr   r   rW   s             r3   r   z$UserDefinedClassVariable.call_method+  s    $$D	Q 

(;(;;&7G24Lzz002 #B$4$4S^^$DcllS##66s6J )),B'BBJJ;22K4K4KLL
"0<?<<DJJ!%)/  X#d)q.WT!Wg5N--djjDGMM.IJJX#d)q.WT!Wg5N--djjDGMM.IJJw"2tT6::r5   c                    ddl m} ddlm}m} ddlm} t        ||      }| j                         r|rt        j                  j                   | j                         |D 	cg c]  }	|	j                          c}	i |j                         D 
ci c]  \  }
}|
|j                          c}}
      S | j                  t        j                   j"                  u r| j%                  |||      S | j                  t&        j(                  u rddlm}  |       S | j                  t.        j0                  u r% |j2                  |t.        j0                  g|i |S | j                  t.        j4                  u rNt7        |      dk  r@t9        j:                  |d         r(t9        i t.        j4                  |d   t=                     S | j                  t.        j>                  u r~|s|t7        |      dk(  rg }nBt7        |      dk(  r)|d   jA                  |      r|d   jC                  |      }ntE        d	       t        jF                  jI                  t=                     S | j                  tJ        jL                  u r9|stE        d
       |d   }|dd  }t        jN                  jQ                  |||      S | j                  tR        jT                  u r"|s t        jV                  j                  ||      S | j                  t        jX                  jZ                  u rV|sTt7        |      dk(  rF|d   j]                         sJ t        j^                  j                  ||d   j                               S ta        tc        | j                        tb              rte        | j                  d      rte        | j                  d      r| jg                         r|ji                  | j                        ry| jj                  rmtm        | j                        sXddlm7} |jp                  j                   js                  | jj                  | j                  |i       }|ju                  |d||       |S tw        | j                        rEty        | j                        }| j                  jz                  dk(  r#t}        t        ||d   j                              }n| j                  j                  }t        |      }|j                  d gt7        |      t7        |      z
  z         i }t        ||      D ]2  \  }}|	||v r||   }n||v sJ |j                  |||         }|||<   4 |j                         D ]  \  }}||v sJ |||j                  |      <   ! t        d |D              sJ t        j                  || j                        S t        | j                        r| jg                         rddlm} t        j                  | j                        }t        |      }|j                  d gt7        |      t7        |      z
  z         i }t        ||      D ]  \  }}|	|j                  |v r||j                     }n|j                  s4|j                  t        j                  ur|j                  ||j                        }nM|j                  t        j                  ur0|j                  ||j                        }|j                  |g i       }n|||j                  <    |j                  |       |jp                  j                   j                  |       }|ju                  |d||       |S | jg                         rv|ji                  | j                        r[| jj                  rO|jp                  j                   j                  |       }t               5  |ju                  |d||       |cd d d        S t        j                  j                  | j                        r8dt=               i}t        j                  j                  | j                  |||      S t        j                  j                  | j                        rs| jj                  rgt        j                  t        j                  t              j                  |||      j                  | j                  | jj                  t=                     S | j                  | j                         v st        | j                        rt        r| j                  t        v rt7        |      dk(  rt        |d   t        j                        r{t7        |d   j                        dkD  r`t        d |d   j                  D              rA || |jp                  j                  dt        j                  gt        ||             }|g} || |jp                  j                  d| j                  gt        ||             } | S ta        | j                  t        j                        rJt7        |      dk(  r<|s:dt=               i}t        j                  j                  | j                  |d   |      S | j                  t        j                  u r]t7        |      dk(  r-t        |d   t        j                        r|d   j                  }!nd }!t        j                  |!      }"t        |"      S | jg                         s[|ji                  | j                        r@| jj                  r4|j                  |j                  |t        j                        | g||      S t        #| 9  |||      S c c}	w c c}}
w # 1 sw Y   &xY w)Nr	   )SideEffectsr(   )r   r   r   )NullContextVariabler   )r   z*deque() with more than 1 arg not supportedzfunctools.partial malformed)r   keywords	__enter____exit__)GenericContextWrappingVariablerR   ztorch.return_typesc              3   $   K   | ]  }|d u 
 y wr/   rJ   .0xs     r3   	<genexpr>z9UserDefinedClassVariable.call_function.<locals>.<genexpr>  s     4q}4s   r   r   )user_clsuser_cls_sourcer   c              3   P   K   | ]  }t        |t        j                           y wr/   )r   r   TensorVariabler   s     r3   r   z9UserDefinedClassVariable.call_function.<locals>.<genexpr>  s     WA
1i&>&>?Ws   $&r   r   )hr}   r   r   r   r   r   r   r   rv   r   r   r   r[   itemsrS   rc   r   CrossEntropyLossr   
contextlibnullcontextctx_managerr   r   r   call_custom_dictr   r   r+   is_supported_argr)   dequehas_force_unpack_var_sequenceforce_unpack_var_sequencer   listsDequeVariable	functoolspartial	functionsFunctoolsPartialVariablewarningscatch_warningsCatchWarningsCtxManagerVariablerl   rd   is_python_constantCUDADeviceVariable
issubclasstypero   is_standard_new"cls_supports_mutation_side_effectsr   rC   r   r|   track_object_newr   r   r#   rH   dictzip_field_defaultslistextendindexallNamedTupleVariabler   dataclassesfieldsr   initdefaultMISSINGdefault_factoryr   rp   (track_object_new_from_user_defined_classr   CustomizedDictVariableis_matching_clsRestrictedListSubclassVariablert   r   npr&   r   r   r   stackr%   r   r   r   randomRandomRandomVariableinline_user_function_returnr
   %instantiate_user_defined_class_objectrQ   )$rU   rw   r   rV   r   r   r   r   constant_argsr   kvr   r   fn	rest_argsr   cm_objr  field_defaultsvar_tracker_kwargs
field_namevar_tracker	field_varr   rS   default_kwargsfield
factory_fnvarr   stackedtensor_variableseedrandom_objectrW   s$                                      r3   r   z&UserDefinedClassVariable.call_functionQ  s	    	/=,+D&9))+--44)'')6:;a**,;=C\\^LTQq!..00L  ZZ58844400T6BBZZ:1118&((ZZ;2223?33K++.26<  JJ+111D	Q#44T!W=&''Q*n	  ZZ;,,,V4yA~TaDG$I$I"$MQ99"=JK??00ln0UUZZ9,,,;<aBQRI &&??V @   ZZ82224<<CCBOOZZ5::,,,VD	Q7--/////66r47;U;U;WXXtDJJ'.

K 

J $$&>>tzzJ0< DYY++<<TZZ)GF r:tV<Mtzz*&tzz2Fzz$$(<<!%c&$q'--&@!A!%!;!;JELL$3v;U#;<=!#+.vu+= 	?'
K&!V+$*:$6	)^;;;$5$<$<z :%	 6?&z2	?  2779 2ev~%~,1fll4()2 4e4444//tzzBB ,1E1E1G2 ''

3FJELL$3v;U#;<=N&)&%&8 ="{&zzV+&,UZZ&8$zz$ ==0C0CC*;*B*B2u}}*UK"22+:M:MM):)A)A "E$9$9*J +5*B*B2r2*NK %1<N5::.)=* MM.)))((QQRVWCOOB
D&9J  ">>tzzJ))((QQRVWC57 Jf=  --==djjI&7G33::

D&'  44DDTZZP;;))$/==b$OUU $*n	  JJ$00221$**=
 JJ"55INtAw	(>(>?Q&*WaWW (0"))00' +48  y+,bii,,#JJ 'tV4O #"

DII.3t9>&&7G))00T!WgNNZZ6==(4yA~*T!Wi6P6P"QAw}}"MM$/M!-00$$&>>tzzJ11!((	GG   w$Rv66u <LZ s   !m/m4m::nc                     t        j                  | j                  dd      }t        |t              r|j
                  }|t        j                  t        j                  fv S )z"Check for __new__ being overridden__new__N)	r   r   rS   r   r   r   r0   r4  r   )rU   new_fns     r3   r  z(UserDefinedClassVariable.is_standard_new=  sE    ''

ItDfl+__F&..'//:::r5   c                 
   | j                   rgt        | j                   |      }t        |j                  t        j
                               t        j                  t        | j                  |            S t        | -  ||      S r/   )r   r   r   
make_guardr   HASATTRr   r   ro   rS   rQ   call_hasattr)rU   rw   r   r   rW   s       r3   r9  z%UserDefinedClassVariable.call_hasattrD  sa    ;;T2F&++L,@,@AB--gdjj$.GHHw#B--r5   c                 Z    |dk(  r| j                   j                  S t        |   ||      S )NrG   )rS   rG   rQ   const_getattrrU   rw   r   rW   s      r3   r;  z&UserDefinedClassVariable.const_getattrK  s-    :::&&&w$R..r5   rN   Nrw   r-   r   List[VariableTracker]rV   Dict[str, VariableTracker]rN   r*   rw   r-   r   r@  rV   rA  rN   r*   )rG   rH   rI   rR   r[   r^   strra   r   r   	lru_cacherh   rt   rv   r   r   r   r   r   r  r9  r;  __classcell__rW   s   @r3   rM   rM   o   s$   9 9 Y
  
 YF  F ;*F-5 F-S F-EV F-P>A@$; &	$;
 -$; 
$;Lj7#j7 &j7 -	j7
 
j7X;.6 .c .FW ./ /r5   rM   c                       e Zd Zy)NO_SUCH_SUBOBJNrF   rJ   r5   r3   rH  rH  Q  rK   r5   rH  c                    ddl m} |D cg c]  }|j                          }}|j                         D ci c]  \  }}||j                          }}}t	        | j
                  j                        } ||i |}	t        |      }
| j
                  j                  j                  |||f        || |
      j                  |	      S c c}w c c}}w )Nr(   r   )
r   r   r[   r   r   r|   random_callsr   r>   wrap_unspecialized_primitive)rw   r#  r   rV   r   r   r!  r"  random_call_indexexample_valuer   s              r3   call_random_fnrO  U  s    (,01qA  "1D14:LLNCDAqa%%''CFCBII223''M01FII!!2tV"45 2v&CCMRR 2Cs
   CCc                   d    e Zd ZdZddhej
                  Zd$d% fdZdefdZdefdZ	d	 Z
 fd
Zd Zd Zd&dZe ej"                  d      d               Zd Z	 	 	 	 	 	 d' fdZd&dZd Z fdZd Zd Z	 	 	 	 	 	 	 	 d( fdZd Zd Zd Zd Zd&dZd Z d&d Z!ddd!eddfd"Z"d&d#Z# xZ$S ))UserDefinedObjectVariablez_
    Mostly objects of defined type.  Catch-all for something where we only know the type.
    rS   
value_typeNrN   c                     t        |   di | || _        |xs t        |      | _        t        |      | j                  u sJ || _        y rP   )rQ   rR   rS   r  rR  
cls_source)rU   rS   rR  rT  rV   rW   s        r3   rR   z"UserDefinedObjectVariable.__init__k  sG    "6"
$3UE{doo---$r5   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methodrG   (r`   )rR  rG   rC  r   rS   rW   )rU   inners     r3   ra   z!UserDefinedObjectVariable.__str__s  sU    (( 
 
 

J=>E..))*!E7!44r5   c                 b    | j                   j                   d| j                  j                   dS NrZ  r`   rW   rG   rR  rZ   s    r3   __repr__z"UserDefinedObjectVariable.__repr__~  +    ..))*!DOO,D,D+EQGGr5   c                     | j                   S r/   )rR  rZ   s    r3   python_typez%UserDefinedObjectVariable.python_type  s    r5   c                     | j                   r>t        | j                   j                  t        j                               | j
                  S t        |          S r/   )r   r   r7  r   ID_MATCHrS   rQ   guard_as_python_constant)rU   rW   s    r3   re  z2UserDefinedObjectVariable.guard_as_python_constant  s?    ;;$++001F1FGH::w/11r5   c                 .    t        |       s
J d|         y )Nz<calling torch function on object without __torch_function__ )r   rZ   s    r3   torch_function_checkz.UserDefinedObjectVariable.torch_function_check  s(    !
 	QI$P	Q 
r5   c                 j    | j                          ddlm}  ||| j                  | j                        S )Nr(   )build_torch_function_fn)rg  torch_functionri  rS   r   )rU   rw   ri  s      r3   get_torch_fnz&UserDefinedObjectVariable.get_torch_fn  s(    !!#;&r4::t{{CCr5   rw   r-   c           	      z    | j                          ddlm}m}  || |||       | j	                  |      ||||      S )Nr(   )_get_subclass_type_varcall_torch_function)rg  rj  rm  rn  rk  )rU   rw   r#  r   r   rV   rm  rn  s           r3   rn  z-UserDefinedObjectVariable.call_torch_function  sE    !!#O""2t,b!
 	
r5   c                      t         j                   t         j                  t         j                  t         j                  h} | S r/   )r  randint	randrangeuniform)fnss    r3   _supported_random_functionsz5UserDefinedObjectVariable._supported_random_functions  s0     MMNNNN	
 
r5   c                     |t        | j                  di       vr*	 t        j                  t	        | j                        |      S y # t
        $ r Y y w xY w)Nr   )r   rS   r   r   r  r   )rU   r   s     r3   _maybe_get_baseclass_methodz5UserDefinedObjectVariable._maybe_get_baseclass_method  sT    wtzz:r::--d4::.>EE  " s   (A 	AAr*   c           
      
   ddl m}m}m}m} | j                  |      }	|	|	t        j                  u r|j                  d       S t        |	      r | j                  |g|i |S |	t        j                  j                  u r|s|rJ | j                  sJ t        | j                   j                               }
t#        t%        |j&                  |
            sJ t)        | j                  j+                  t,        j.                               |j0                  j2                  j5                  | j                  j7                                 ||
D cg c]  }|j                  |       c}      S |	t        j                  j8                  t:        j8                  fv rt=        |      dk(  rt?        |d   ||f      rtA        jB                  tE        | j                         d      t        j                  j                  t:        j                  fv rr|rJ | j                  sJ t)        | j                  j+                  t,        j.                               |j                  |d   jG                         | j                   v       S |	t        j                  jH                  u rt?        | j                   t        j                        r| j                  sJ |s|rJ g }| jK                  |dg i       }
|
jM                  |      D ]+  }|jO                   ||| jQ                  ||      g             - |j0                  j2                  j5                  | j                  j7                                 ||      S |	t        j                  jR                  u r5t=        |      dk(  r'|rJ | j                  sJ | jQ                  ||d         S |	t        jT                  t        jV                  fv rRt=        |      dk(  rD|sBtY        |d   d      r3 || j                   |d   j                   u |	t        jV                  u u       S t?        |	tZ        j\                        rx| j                  d nt_        t_        | j                  d      |      }ddl0m1} |	td        jf                  jh                  j                  u r|}	 ||	| |	      jk                  |||      S |	t        jl                  u r]| j                  rQ|sO|sMt)        | j                  j+                  t,        jn                                |t=        | j                               S tp        |   ||||      S c c}w )
Nr(   )r   r   TupleVariabler   r   rr   rS   rW   r	   )unpatched_nn_module_initr   )9r   r   r   rx  r   rv  r0   rR   r   r4   method_setattr_standardr   r   rr   r   r
  rS   r  mapr   r   r7  r   DICT_CONST_KEYSr|   guard_on_key_orderaddr   __contains__r  r   r   r   r   r  r[   r   r   r   r>   odict_getitem__getitem__r   r   ro   r   FunctionTyper   mutation_guardry  rc   r   Moduler   __len__SEQUENCE_LENGTHrQ   )rU   rw   r   r   rV   r   r   rx  r   rY  rr   r!  r   r   r   ry  rW   s                   r3   r   z%UserDefinedObjectVariable.call_method  sf   	
 	
 11$7('..t44"6*3t33BHHHH 00555 F++{{"{DJJOO-.3/::DABBBdkk44\5Q5QRS		,,001A1A1CD$$%OQ&6&=&=a&@%OPP ;22??ARARSSINtAw)9?(KL**4

+;VD++00$))<= "!z{{"{ dkk44\5Q5QRS'..G..0DJJ>  00666:

K33< {{"{ F++''FB;99"= CLL% $"4"4R"=> 		,,001A1A1CD$U++00<<<Ta!!z{{"{))"d1g66 6==&--88INDGW-'ZZ47==0f6MN 
 &%"4"4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"2tT6::K &Ps   Uc                 D   	 |j                         }|j                  j                  j                  |       st        d|  d| d       |j                  j                  j                  | ||       t        j                  d       S # t        $ r t        d|        Y w xY w)Nznon-const setattr name: zsetattr(z, z, ...))	r[   NotImplementedErrorr   r|   r}   is_attribute_mutation
store_attrr   r   )rU   rw   r   rS   s       r3   rz  z1UserDefinedObjectVariable.method_setattr_standard  s    	=**,D yy%%;;DAHTF"TF&9:
		))$e<))$// # 	=4TF;<	=s   B BBc                 X    t        t        j                  | j                  dd              S )Nr1   )r4   r   r   rS   rZ   s    r3   needs_slow_setattrz,UserDefinedObjectVariable.needs_slow_setattr)  s*    &""4::}dC
 
 	
r5   c           
      H   | j                   r| j                  d      t        j                  u r| j                  d      t        j                  u r| j                  d      t        j
                  u rt        | j                   j                  t        j                               t        t        | j                              D cg c]D  }t        j                  j                  | j                  |   t!        | j                   |            F c}S t"        | I  |      S c c}w )N__iter__r  r  r   )r   rv  r
  r  r  r  r   r7  r   r  ranger   rS   r   LazyVariableTrackerr   r   rQ   unpack_var_sequence)rU   rw   r!  rW   s      r3   r  z-UserDefinedObjectVariable.unpack_var_sequence.  s    KK00<M00;t||K00?4CSCSS$++001M1MNO s4::/
 	 --44JJqM(a8 5   w*2..s   A	Dc                 *    | j                  |dg i       S )N__next__)r   )rU   rw   s     r3   next_variablez'UserDefinedObjectVariable.next_variable?  s    JB77r5   c                 Z    	 | j                   | j                         v S # t        $ r Y yw xY wNF)rS   rt  	TypeErrorrZ   s    r3   is_supported_randomz-UserDefinedObjectVariable.is_supported_randomB  s1    	::!A!A!CCC 		s    	**c                     ddl m} ddlm} | j	                         rJt        d |D              r8t        d |j                         D              rt        || j                  ||      S t        | j                  t        j                        r| j                  j                  }| j                  j                  }|t        j                  j                   j"                  j$                  u r]t&        j(                  j+                  |j,                        r4|s2|s0t'        j(                  |j,                        j/                  |||      S |t        j0                  j2                  j4                  j$                  u r|j,                  t        j0                  j2                  j4                  u rPt'        j6                  |j8                        }t'        j(                  |j,                        j/                  ||g|      S | j:                  t=        d       t?        | j:                  d      }	  |||	      |      }
t?        | j:                  d	      }  |||      |      }|
j/                  ||g|z   |      S t        | j                  t@        jB                        rj|jE                  | j                  jF                        t&        jH                  k(  r3t        d
 tK        jL                  | j                  jN                  | j                  jP                  j                               D              r| j:                  rtS        t?        | j:                  d      jU                  tV        jX                        t?        | j:                  d      jU                  tV        jZ                        t?        | j:                  d      jU                  tV        jZ                               | j                  jN                  D cg c]!  }t&        j6                  j]                  |      # }}|j_                  |       | j                  jP                  ja                         D ci c]%  \  }}|t&        j6                  j]                  |      ' }}}|jc                  |       te        | j                  jF                        rtg               j/                  |||      S t'        jH                  | j                  jF                        j/                  |||      S ti        | j                        rR| j:                  r2tS        | j:                  jU                  tV        jj                               | jm                  |d||      S tn        | ]  |||      S c c}w c c}}w )Nr	   trace_rulesr(   rJ  c              3   <   K   | ]  }|j                           y wr/   r   )r   r!  s     r3   r   z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>T  s     9qA((*9   c              3   <   K   | ]  }|j                           y wr/   r  r   r"  s     r3   r   z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>U  s     DqA((*Dr  z9Sourceless UserDefinedObjectVariable method not supportedr   __self__c              3   Z   K   | ]#  }t         j                  j                  |       % y wr/   )r   r   r   r  s     r3   r   z:UserDefinedObjectVariable.call_function.<locals>.<genexpr>}  s)       **55a8s   )+r   r   r   __call__)8r   r  r   r   r  r  valuesrO  rS   r"   r   
MethodTyper   r  rc   utils_contextlib_DecoratorContextManagercloner   TorchCtxManagerClassVariabler  rW   r   autograd	grad_modeinference_moder   moder   r   r   r   r   lookupr   TorchInGraphFunctionVariable	itertoolschainr   r   r   r7  r   rd  CONSTANT_MATCHr   r  r   rp   r    r   callableFUNCTION_MATCHr   rQ   )rU   rw   r   rV   r  r   r   r   r.  func_srcfunc_varobj_srcobj_varr"  partial_argsr!  partial_kwargsrW   s                    r3   r   z'UserDefinedObjectVariable.call_functionI  s.    	#, $$&9D99DFMMODD!"djj$??DJJ 0 01::&&D**%%C//HHNNN::JJMM  ==MM-D&12
 00??EEEMMU^^%=%=%L%LL  00: ==MM-SE623 {{"O "$++z:H4r84T:H j9G2ob'237G))"wi$.>GG4::y001""4::??3556 "$**:M:M:T:T:VW 
 {{t{{F3>>|?T?TUt{{F3>>$33 t{{J7BB$33 ?Cjjoo9:	**11!4L  % !JJ//557Aq 9--44Q77N  !!&)"4::??302@@n  99

mBn=> djj!{{dkk44\5P5PQR##B
D&AAw$Rv66+s   +&U5*U:c                 F    t        | j                        rt        d       y y )Nz6UserDefinedObjectVariable with custom __getattribute__)r$   rS   r   rZ   s    r3   _check_for_getattributez1UserDefinedObjectVariable._check_for_getattribute  s    "4::.RS /r5   c                 ,    t        | j                        S r/   )r   rS   rZ   s    r3   _check_for_getattrz,UserDefinedObjectVariable._check_for_getattr  s    !$**--r5   c                     t        |t              syt        |j                  t        j                        xs= t
        j                  j                  j                  j                  |j                        S r  )
r   propertyfgetr   BuiltinFunctionTyperc   _C_dynamor  is_instancemethod)rU   subobjs     r3   _is_c_defined_propertyz0UserDefinedObjectVariable._is_c_defined_property  sV    &(+ KK22
 CXX##55fkkB	Cr5   c                 F   t        j                  | j                  |t              }dd l}|t        u sTt        ||j                        s>t        j                  |      r|| j                  j                  v s| j                  |      r| j                  j                  |      }|S )Nr   )r   r   rS   rH  _collectionsr   _tuplegetterr   	__slots__r  __getattribute__)rU   r   r  r  s       r3   _getattr_staticz)UserDefinedObjectVariable._getattr_static  s    ''

D.I
 n$11 **62ttzz?S?S7S**62 ZZ006Fr5   c                 $   | j                          |j                  j                  j                  | |      rC|j                  j                  j	                  | |d      }t        |t        j                         S || j                  j                  v S ry   )
r  r|   r}   r~   r   r   r   r   rS   r   r   s       r3   r   z1UserDefinedObjectVariable.has_key_in_generic_dict  su    $$&99!!>>tSI9911;;D#RV;WL!,	0I0IJJJdjj))))r5   c                     t         j                  j                  j                  xr' |t         j                  j
                  j                  fv S r/   )rc   r  configinline_inbuilt_nn_modulesr   r  
parameters)rU   rY  s     r3   is_supported_nn_module_methodz7UserDefinedObjectVariable.is_supported_nn_module_method  s>    }}##== 
&HHOO&&M
 C
 	
r5   c                 r   ddl m} ddl m} ddlm}m} | j                  rt        | j                  |      nd }| j                          |j                  j                  j                  | |      rU|j                  j                  j                  | |d      }t        |t        j                        rt!        t"        ||        |S |dk(  rd	|i}	t        j$                  | |fi |	S |d
k(  r3|}
|
| j&                  }
d	|
i}	t)        t+        | j,                        fi |	S 	 | j/                  |      }t        |tT              rk| j                  r,t        t        | j                  d
      |      }t        |d      }t        j>                  |jV                  | |      jA                  |g i       S t        |tX              rV|j[                  | j,                        }|"|j]                  |      j_                  ||      S  |j]                  |      |      S t        |t`              r2t        j>                  |jb                  | je                  |d
      |      S t        |t4        jf                        r?|j[                  | j,                  d       }|  |||      |      S |jC                  ||      S ti        jj                  |      rtm        |jZ                        sto        ||      }| j                  }| j                  rt        | j                  d      }t)        t+        | j,                              }t        j>                  |jZ                  jb                  ||      jA                  ||| |gi       S t        |t4        j6                        sJt        |t4        jp                        rt        | j,                  tD        jF                  jH                        rz| js                  |      rt        j$                  | ||      S tu        | j,                  |      }||u r;tw        |d      r/|jx                  }|}|rt        |d      nd }||u rtw        |d      r/t        |t4        jp                        r0|jz                  | j,                  urtS        d       |jb                  }nt        |t4        j6                        sJ |}ti        j|                  |      rt        j>                  || |      S ti        j~                  |      rRt        |      rt        |      S |"|j]                  |      j_                  ||      S  |j]                  |      |      S tD        j                  j                  j                  st        | t        j                        r]|r[t        | t        j:                        rA|j                  j                  s+|dv rt        | j                  |      }| j                  |      }|t0        urtm        |      rd	|i}	t        j$                  | |fi |	S |r t        j                  jC                  ||      S | j&                  iti        j                  | j,                  j                  |t0              }||u r6t        | j&                  |      }t        j                  jC                  ||      S |jC                  ||      S t!        t"        ||        y # t"        $ r] t0        }| j3                         }t        |t4        j6                        r|t8        u r-t        | t        j:                        r| j=                  ||      }n]d }| j                  rt        | j                  d      }t        j>                  || |      jA                  ||jC                  |      gi       }| j                  ry|tD        jF                  jH                  jJ                  u rSt        |t        j:                  t        jL                  f      r)|jO                  t        | jQ                         |             |cY S |tS        d       Y w xY w)Nr	   r  r(   r   r   Trz   r   r   rW   __getattr__r   z)UserDefined with non-function __getattr__r  r   _torchdynamo_inlinez"__self__ mismatch for bound method)_buffers_parameters)Lr   r  r   r   r   r   r   r   r  r|   r}   r~   r   r   r   r   r   r   r   rT  rM   r  rS   r  rH  r  r   r  r'   UnspecializedNNModuleVariable manually_trace_nn_module_getattrr   r   r   rc   r   r  r  NNModuleVariableset_nn_module_stack_sourceget_nn_module_stack_sourcer   r  r  r   r   r  create_with_sourcer   r   r   r   r   r   r!   rQ  r  r  r   ro   r  r  ismethod
isfunctionr    r   r  r  r  FSDPManagedNNModuleVariableexportr   _wrap_sourcer  r   rW   )rU   rw   r   r  r   r   r   r   resultr   rT  r  
getattr_fnout
new_sourcer   descriptor_var
get_source	owner_vardynamic_subobjsubobj_from_classsrc_from_classs                         r3   r   z%UserDefinedObjectVariable.var_getattr  s   "&?26++DKK.4$$&99!!>>tTJYY++55dDT5RF&)";";<(TBM:(G,,T4C7CC
 ;J!!__
,G+D,<HHH&	K))$/FN fh'{{#Jt{{K$H$O#FF3//T&mBB'( ->>$**-D!"))$/BB4PVBWW/{))$/55,//!1!1"k!B6   ? ?@>>$**d3D!2r62488(//D99''/8WNN9

 7vfMNJ{{'Y?
 1djj1ABI//''
mBy A2FG  2 23vu//04::uxx711&9 00tFKK
 %TZZ6N F*wv?T/U33!'FLF,ABRV !F*wv?T/U
 &%"2"23!**$**<!"FG!&%*<*<===/ 33D$vNN##N3&t,4FCC'&--d3FFV G   4;--d3D99 $$>>dI$I$IJ4!H!HI II$$ 227TJ&&v.F'.v6#V, 00tGwGG 44;;FFKK ??.(/(>(>

,,dN)% )F2)3DOOT)J(<<CC-~   )//F;; 	!T:C  $	K#F002J*e&8&89 !<<)AAB ??DIC!%J{{%/]%K
#66"D#mB)9)@)@)F(GL  ;;:1L1L#L!%CC%66 66&t'F'F'H$O 
'IJI$	Ks   [ E`6%`65`6r   c                    | j                         rt        d       | j                  r<t        t	        | j                  |      j                  t        j                               	 | j                  ||      }t        j                  j                  t        |t        j                               S # t        $ r- t        |       t        j                  j                  d      cY S w xY w)Nz$hasattr with custom __getattribute__F)r  r   r   r   r   r7  r   r8  r   r   r   r   r   r   r   r   )rU   rw   r   var_vts       r3   r9  z&UserDefinedObjectVariable.call_hasattr  s    '')@A;;4;;-889M9MN	<%%b$/F--44vy'@'@AA  & 	<%b)--44U;;	<s   %A	B/ /3C%$C%c                 ,   ddl m} ddlm}  ||      r|j                  |j                  n|j                         }  ||t        | j                  |            t        j                  j                  | j                  |j                                     S )Nr(   rJ  )is_hashable)r   r   dictsr  r   r[   r   r   r   r  rS   )rU   rw   r   r   r  r  s         r3   r  z'UserDefinedObjectVariable.odict_getitem  s    ,& 3CJJ$: JJ'') 	
t{{E2
 
!
!
-
-djj#:P:P:R
SU 	Ur5   NNr=  r>  r?  rB  )%rG   rH   rI   __doc__rE   _nonvar_fieldsrR   rC  ra   r_  rb  re  rg  rk  rn  r   r   rD  rt  rv  r   rz  r  r  r  r  r   r  r  r  r  r   r  r   r9  r  rE  rF  s   @r3   rQ  rQ  d  sC    |Q.A.P.PQN%	5 	5H# H2Q
D
 Y  e; &	e;
 -e; 
e;N	0

/"8Y7#Y7 &Y7 -	Y7
 
Y7vT.
C,*

;B<6 <c <FW <$Ur5   rQ  c                   P     e Zd Zed        Zdd fdZd Zd	 fdZdefdZ	 xZ
S )
FrozenDataClassVariablec           	      $   ddl m} t        |      sJ ddlm} i } ||      D ]]  }t        ||j                        s  || t        ||j                              t        ||j                              ||j                  <   _ t        |||      S )Nr   r  r(   rJ  )r  r   )
r  r  r   r   r   ro   r   r   r   r  )rw   rS   r   r  r   	field_mapr,  s          r3   r   zFrozenDataClassVariable.create  s    &"5))),	E] 	.Euejj))
65::6)%,).	%**%	. 'uYvNNr5   rN   c                 <    t        |   |fi | |i }|| _        y r/   )rQ   rR   r  )rU   rS   r  rV   rW   s       r3   rR   z FrozenDataClassVariable.__init__  s&    )&)>Fr5   c                 0   ddl m} g }i } || j                        D ]b  }| j                  |j                     j	                         }t        |d      r|j                  r|||j                  <   R|j                  |       d  | j                         |i |S )Nr   r  kw_only)	r  r  rS   r   r^   ro   r  r>   rb  )rU   r  r   rV   r,  r   s         r3   r^   z FrozenDataClassVariable.as_proxy  s    &DJJ' 	#EKK

+446Eui(U]]%*uzz"E"	# "t!42622r5   c                 `    || j                   |j                         <   t        |   |||      S r/   )r  r[   rQ   rz  )rU   rw   r   rS   rW   s       r3   rz  z/FrozenDataClassVariable.method_setattr_standard  s.    16D++-.w.r4??r5   c                 b    | j                   j                   d| j                  j                   dS r]  r^  rZ   s    r3   r_  z FrozenDataClassVariable.__repr__  r`  r5   r/   r=  r>  )rG   rH   rI   r   r   rR   r^   rz  rC  r_  rE  rF  s   @r3   r  r    s5    O O 3 @H# Hr5   r  c                   8     e Zd Z	 	 d fdZ	 	 	 	 	 	 ddZ xZS )SourcelessGraphModuleVariablec                 &    t        |   |fi | y r/   rQ   rR   rT   s      r3   rR   z&SourcelessGraphModuleVariable.__init__  s    
 	)&)r5   c                     t        j                  | j                  j                  j                        }| g|z   }|j                  |||      S r/   )r   UserFunctionVariablerS   forwardr   r  )rU   rw   r   r   rV   fn_variables         r3   r   z)SourcelessGraphModuleVariable.call_method  sK      44TZZ5G5G5P5PQv}--
 	
r5   r=  r?  )rG   rH   rI   rR   r   rE  rF  s   @r3   r  r    s5    * 
	*
 &	

 -
 

r5   r  c                   P     e Zd Zej                  Zd fdZ	 	 	 	 	 	 	 	 ddZ xZS )WeakRefVariablec                 &    t        |   |fi | y r/   r  rT   s      r3   rR   zWeakRefVariable.__init__
      )&)r5   c                     d }| j                         }| j                  r*ddlm} t	        | j                        }  |||      |      S ddlm} |j                  ||      S )Nr(   rJ  r   )rS   r   r   r   r   r   r   )rU   rw   r   rV   call_sourcereferentr   r   s           r3   r   zWeakRefVariable.call_function  sV     ::<;;0+DKK8K3?2{3H==2$++B99r5   r=  rB  )rG   rH   rI   rQ  r  rR   r   rE  rF  s   @r3   r
  r
    s>    .==N*:#: &: -	:
 
:r5   r
  c                   <     e Zd Zed        Zd fdZd fdZ xZS )KeyedJaggedTensorVariablec                 z    t         j                  j                  d      }|d uxr t        |       |j                  u S )Nztorchrec.sparse.jagged_tensor)r   modulesgetr  KeyedJaggedTensor)r   mods     r3   is_matching_objectz,KeyedJaggedTensorVariable.is_matching_object"  s3    kkoo=>$E490E0E#EEr5   c                 P    ddl m} t        |      |u sJ t        |   |fi | y )Nr   )r  )torchrec.sparse.jagged_tensorr  r  rQ   rR   )rU   rS   rV   r  rW   s       r3   rR   z"KeyedJaggedTensorVariable.__init__'  s+    CE{////)&)r5   c                    t         j                  j                  j                  r@| j                  4|dv r0t        j                  d      5  t        | !  ||      cd d d        S t        | !  ||      S # 1 sw Y   xY w)N)_length_per_key_offset_per_keyT)#force_unspec_int_unbacked_size_like)	rc   r  r  3force_unspec_int_unbacked_size_like_on_torchrec_kjtr   r   patchrQ   r   r<  s      r3   r   z%KeyedJaggedTensorVariable.var_getattr-  sr    MM  TT'>>%%$O 5w*2t45 5w"2t,,5 5s   A66A?r=  r>  )rG   rH   rI   r   r  rR   r   rE  rF  s   @r3   r  r  !  s&    F F*- -r5   r  c                       e Zd Zy)RemovableHandleClassNrF   rJ   r5   r3   r!  r!  8  s     	r5   r!  c                   H     e Zd ZdZ	 	 d	 d fdZd fdZ fdZd Z xZS )	RemovableHandleVariablec                 @    t        |   di | || _        || _        y rP   )rQ   rR   r   idx)rU   r   r&  rV   rW   s       r3   rR   z RemovableHandleVariable.__init__A  s$     	"6"*r5   c                 $   |dk(  rx| j                   | j                  k7  r@|j                  j                  j	                  | j                          | j                  | _         t
        j                  j                  d       S t        | %  ||||       y )Nremove)
r&  REMOVEDr|   r}   remove_hookr   r   r   rQ   r   )rU   rw   method_namer   rV   rW   s        r3   r   z#RemovableHandleVariable.call_methodL  sl    ("xx4<<'		&&22488<<<--44T::BT6:r5   c                     | j                   | j                  k(  r0j                  fd       j                  t	        dd             y t
        |          y )Nc                  (     j                  dd      S )Nztorch._dynamo.utilsinvalid_removeable_handle)load_import_from)codegens   r3   <lambda>z5RemovableHandleVariable.reconstruct.<locals>.<lambda>X  s    00)+F r5   r   F)r&  r)  add_push_nullextend_outputr   rQ   reconstruct)rU   r0  rW   s    `r3   r4  z#RemovableHandleVariable.reconstructT  sN    88t||#!!
 !!"6q%"@AG$r5   c                     t         S r/   )r!  rZ   s    r3   rb  z#RemovableHandleVariable.python_typea  s    ##r5   r  r=  r>  )	rG   rH   rI   r)  rR   r   r4  rb  rE  rF  s   @r3   r#  r#  >  s.    G 		 
	;%$r5   r#  c                   N     e Zd Zej                  Z fdZdddeddf fdZ xZS )MutableMappingVariablec                 &    t        |   |fi | y r/   r  rT   s      r3   rR   zMutableMappingVariable.__init__h  r  r5   rw   r-   r   rN   r*   c                     |dk(  rgt        | j                        j                  t        j                  j
                  j                  u r$t        j                  t        j                  |       S t        | -  ||      S )Nr  )r  rS   r  r   abcMappingr   r   r
   mapping_getrQ   r   r<  s      r3   r   z"MutableMappingVariable.var_getattrk  s[    5=T$**-11[__5L5L5P5PP//	0E0EtLL7&r400r5   )	rG   rH   rI   rQ  r  rR   rC  r   rE  rF  s   @r3   r7  r7  e  s4    .==N*15 1S 1EV 1 1r5   r7  c                       e Zd Zy)r  NrF   rJ   r5   r3   r  r  r  rK   r5   r  )Yr   r   r  r   r   r   r  r  r   r   r   typingr   r   r   r   torch._dynamo.configrc   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'   baser)   r*   r  r+   numpyr  ModuleNotFoundErrortorch.utils._cxx_pytreer,   r?   r  torch._dynamo.symbolic_convertr-   r4   rC   rE   rM   rH  rO  rQ  r  r  r
  r  r!  r#  r7  r  rJ   r5   r3   <module>rL     sp           
   5 5   ( K # : F  1      0 &2
 D(:	/ 	_/2 _/D	 	SX	U 3 X	Uv-H7 -H`
$= 
0:/ :4- 9 -.	 	$$o $$N
16 
1	. 	k)  	B
  dJs$   4E 9E  EE E0/E0