
    Phq4                       d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZmZmZmZ 	 d dlZd dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZm Z m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d d	l)m*Z* d d
l+m,Z, d dl-m.Z. d dl/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZCmDZD ddlEmFZF ddlGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZc ddldmeZemfZfmgZg ddlhmiZi ddljmkZkmlZl ddlmmnZnmoZompZpmqZq ddlrmsZsmtZtmuZumvZvmwZwmxZx ddlymzZzm{Z{m|Z|m}Z} ddl~mZmZmZmZmZ ddlmZ ddlmZ dd lmZmZmZmZmZmZmZmZmZ dd!lmZmZmZmZmZmZmZmZmZmZmZmZmZ dd"lmZmZ dd#lmZ dd$lmZmZmZmZmZ dd%lmZmZ dd&lmZmZ dd'lmZmZmZ  ejh                  e      ZeZ G d( d)      Zejr                   G d* d+             Zejr                   G d, d-             Z G d. d/      Zd0 Zd<d1Z	 d<d2Zejr                   G d3 d4             Zd5e(fd6Zd7eeQ   d8efd9Z G d: d;      Zy# e$ r dZY 5w xY w)=    N)List
NamedTupleOptionalUnion)SymInt)GuardSourceTracingContext)HigherOrderOperator)
_EventBase_StreamBase)
FakeTensoris_fakemaybe_get_fake_mode)_constrain_range_for_sizeDimConstraint
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSymbolicContext)immutable_list)NestedTensor)is_traceable_wrapper_subclass)TensorWeakRef   )configmutation_guardreplay_record	skipfilestrace_rules)
is_allowedis_builtin_callableis_numpyis_user_defined_allowed) get_registered_device_interfaces)InternalTorchDynamoErrorunimplemented)GuardBuilderinstall_guardmake_dupe_guard)SideEffects)
AttrSourceConstantSourceConvertIntSourceGetItemSourceGlobalWeakRefSourceis_constant_sourceLocalSourceNumpyTensorSourceRandomValueSourceSourceTupleIteratorGetItemSource)build_checkpoint_variableclone_inputget_fake_valueget_static_address_typeglobal_key_nameis_namedtuple	is_typingis_utils_checkpointistypeodict_valuespreserve_rng_statetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_lenwrap_fake_exception   )MutableLocaltypestrVariableTracker)BuiltinVariable)ConstantVariableEnumVariable)AutocastModeVariableEventVariableNullContextVariableStreamVariable)ConstDictVariableDataClassVariableDefaultDictVariableHFPretrainedConfigVariablePythonSysModulesVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariable)!CollectiveFunctionRewriteVariableFunctoolsPartialVariableTritonKernelVariableUserFunctionVariableUserMethodVariable) TorchHigherOrderOperatorVariable)LazyVariableTracker)	BaseListVariableListVariableNamedTupleVariableRangeVariableRestrictedListSubclassVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableGetAttrVariableGetSetDescriptorVariableInspectSignatureVariableLambdaVariableMethodWrapperVariableNumpyVariablePythonModuleVariableSavedTensorBoxSkipFilesVariableTypingVariable)FSDPManagedNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)NumpyNdarrayVariableSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)torch_special_class_typesTorchVariable)build_torch_function_fnTensorWithTFOverrideVariable)KeyedJaggedTensorVariableUserDefinedClassVariableUserDefinedObjectVariablec                       e Zd Zy)_missingN__name__
__module____qualname__     jC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torch/_dynamo/variables/builder.pyr   r      s    r   r   c                       e Zd ZU eed<   eeej                  f   ed<   e	ed<   e
ej                  j                  j                     ed<   dZe	ed<   dZe
ej                      ed<   ed	        Zd
 Zd Zd Zd Zy)GraphArgsource_exampleis_unspecializedfake_tensorT	is_tensorNexample_strong_refc                 z    t        | j                  t              r| j                         }|J |S | j                  S N)
isinstancer   r   )selfrs     r   examplezGraphArg.example   s4    dmm]3A= =H== r   c                     t        | j                  t        j                        r2t	        | j                        | _        t        | j                        sJ y y r   )r   r   torchTensorr   r   r   r   s    r   __post_init__zGraphArg.__post_init__   s=    dmmU\\2)$--8DM4++,,, 3r   c                 8    | j                   j                  |      S r   )r   reconstruct)r   txs     r   loadzGraphArg.load   s    {{&&r**r   c                      d | _         d | _        y r   )r   r   r   s    r   erasezGraphArg.erase   s    "&r   c                 l    | j                   j                         |j                   j                         k(  S r   )r   namer   others     r   __eq__zGraphArg.__eq__   s'    {{!U\\%6%6%888r   )r   r   r   r4   __annotations__r   r   r   r   boolr   _subclassesr   r   r   r   r   propertyr   r   r   r   r   r   r   r   r   r      s    N M5<</00%++77BBCC It 26.5! !-
+'9r   r   c                   4    e Zd ZU ee   ed<   eee      ed<   y)FrameStateSizeEntryscalarsizeN)r   r   r   r   intr   r   r   r   r   r   r      s    SM
49
r   r   c                       e Zd ZdZdef fdZd Zd Ze e	j                  d      d               Zd Zd	 Zd
 Ze e	j                  d      d               Ze e	j                  d      d               Zd Zd Zd Zdeeeeef   fdZdefdZdeeef   fdZde jB                  jD                  fdZ#d Z$de jJ                  fdZ&de jJ                  fdZ'd Z(d Z) xZ*S )VariableBuilderz3Wrap a python value in a VariableTracker() instancer   c                     |J d       t        j                         J d       t        |           || _        || _        |j                         | _        y )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r	   try_getsuper__init__r   r   r   )r   r   r   	__class__s      r   r   zVariableBuilder.__init__   s^     	`_	`%%'3U5UU3KKM	r   c                    || j                   j                  j                  v rX| j                   j                  j                  |   }t        | j                  |j                        }|r| j                  |       |S  | j                  |      j                  di | j                         }| j                  |      r;| j                   j                  j                  j                  | j                  ||      }|S )Nr   )r   outputside_effectsr)   r   install_guards_wrapcloneoptions_can_lift_attrs_to_inputstrack_object_existing)r   valueside_effect_result	dup_guardvts        r   __call__zVariableBuilder.__call__   s    DGGNN///!%!<!<U!C'5G5N5NOI##I.%%$TZZ$$6t||~6))"-,,BBUBB 	r   c                 H    t        |      t        t        t        t        fv ryy)NTF)typer~   r   r   r{   )r   r   s     r   r   z)VariableBuilder._can_lift_attrs_to_inputs   s'    8(% 	
 
 r   Nc                  
    ddhS )Nr   rF   r   r   r   r   _common_constantsz!VariableBuilder._common_constants  s     		
 		
r   c                     | j                   S r   r   r   s    r   
get_sourcezVariableBuilder.get_source  s    {{r   c                 &    d| j                         iS Nr   )r   r   s    r   r   zVariableBuilder.options  s    $//+,,r   c                     | j                         }t        |t              s!|j                         t        j
                  k(  ry t        |D cg c]  }|j                  |       c}ddi i S c c}w )NskiprF   )r   r   r,   guard_sourcer   CONSTANTr(   
make_guard)r   guardsr   guards       r   r   zVariableBuilder.install_guards  sd    "v~.""$(<(<<fEfU))%0fENAN	 Fs   A-c                 &   t         j                  t         j                  j                  t         j                  j
                  t         j                  j                  j                  f| j                  ft        t        t        t        j                  f| j                  ft        | j                   ft"        t$        f| j&                  ft(        t*        t,        t/        d       t0        t         j2                  t         j4                  t         j6                  f| j8                  fg}t:        j<                  r1t>        r+|jA                  t>        jB                  | jD                  f       i }|D ]*  \  }}tG        |t              r|n|fD ]  }||vsJ |||<    , |S r   )$r   r   nn	Parameterr   r   functional_tensorFunctionalTensorwrap_tensortuplelistr?   collectionsdequewrap_listlikerB   wrap_tuple_iteratorslicerangewrap_slice_ranger   floatr   r   strSizedevicedtypewrap_literalr   trace_numpynpappendndarraywrap_numpy_ndarrayr   )clsentriesresulttsfnts         r   _type_dispatchzVariableBuilder._type_dispatch$  sE    LLHH&&%%00%%77HH	  T<):):;S=N=NOS445U^S112 JJJLLKK	   
8 "NNBJJ(>(>?@FB%b%0Rre;&q	 < 
 r   c                     ddl m } t        j                  d f|d ft        j                  d fg}i }|D ]9  \  }}t        |t        t        f      r|n|fD ]  }||vsJ ||t        |      <    ; |S )Nr   )comptimec                     t        t        j                  fd| j                  i| j	                  t
        j                        S r   )rq   rp   creater   r   r'   CLOSURE_MATCHr   r   s     r   <lambda>z.VariableBuilder._id_dispatch.<locals>.<lambda>W  s9    N,33%;;% )),*D*DE%r   c                     t               S r   )rm   r  s     r   r  z.VariableBuilder._id_dispatch.<locals>.<lambda>]  s    +;+=r   c                 t    t        t        fd| j                  i| j                  t        j
                        S r   )rq   _dataclasses_fields_lambdar   r   r'   FUNCTION_MATCHr  s     r   r  z.VariableBuilder._id_dispatch.<locals>.<lambda>`  s3    N.%;;% )),*E*EF%r   )	r   inspect	signaturedataclassesfieldsr   r   r   id)r   r   r   r   r   r   r   s          r   _id_dispatchzVariableBuilder._id_dispatchO  s     	( !! =>""
( FB%b5$-8RreC& "r!u D 
 r   c                 /    ddl m}  |       rddlm} ddlm} n G d d      } G d d      } j                         j                  t        |            }|	 | |      S  j                         j                  t        |            }|	 | |      S t        j                  |d	|      }t        |      st        |t        j                         r j#                  |      S t%        |      r j'                  |      S |t(        j*                  j,                  j.                  u rx j1                  t2        j4                         |j7                         D ci c]+  }|t9        ||   t;         j=                         |      
      - }}t?        |t        |            S |t@        jB                  u rtE         jF                  
      S t        |tH        tJ        jL                  tJ        jN                  f      rtQ         fd|j7                         D              r|s> j=                         jS                         r  j1                  t2        jT                         n j1                  t2        jV                         |j7                         D ]9  }	 jY                  |	      s jZ                  j]                  t_        |	      |	       ;  fd}
|j7                         D ci c];  }|ta        jb                  ||   t;         j=                          |
|            
      = }}t        |tJ        jL                        r0te        |t        |       jg                  |jh                              }nt?        |t        |            } jZ                  jj                  jl                  jo                   jF                  ||      S tq        |t(        jr                  jt                        r jw                  |      S ty        jz                  |      r j}                  |      S t        |t~              rRtQ        d |D              r@ j1                  t2        j                         ty        jb                  | jF                        S tq        |t        j                        r6 j1                  t2        j                         t        | jF                        S t        |      r6 j1                  t2        j                         t        | jF                  
      S t        |      rt         jF                  
      S tq        |t        j                        rt         j=                         d      } t         jZ                  |      |j                        }g }t         j=                         d      }t        |j                        D ]:  \  }}|j                   t         jZ                  t;        ||            |             < i }t         j=                         d      }|j                  j                         D ].  \  }} t         jZ                  t;        ||            |      ||<   0 t         j=                         j                  t2        j                        |j                  t2        jV                        |j                  t2        j                               t        ||||      S t        |      r6 j1                  t2        j                         t        | jF                  
      S t        >tq        |t        j                        r$ j                  t        j                  |            S t        |      rYt        sJ  j1                  t        |      rt2        j                  nt2        j                         t        | jF                  
      S t        j                  |      rK j1                  t2        j                         t        jb                   jZ                  | jF                  
      S t        |t(        j                  j                  j                        r6 j1                  t2        j                         t        | jF                  
      S tq        |t(        j                  j                  j                        rt         jF                  d      }t         jF                  j                  t2        j                        |j                  t2        j                               t        |j                        D cg c]+  \  }} t         jZ                  t;        ||            |      - }}} jZ                  jj                  jl                  j                   jF                  |t        | jF                  t        |                  S tq        |t        j                        rt        t        |dd       t(        j                  j                  j                        rtt        |dd      dk(  rd|t        |j                  dd       k(  rJ j1                  t2        j                         t        t        |j                   jF                  
      d      S t        r+tq        |t        j                        r j                  |      S t        j                  |      r5 j1                  t2        j                         t        j                   |      S t        j                  |      r* j1                  t2        j                         t        |      S tq        |t              rO j1                  t2        j                  t2        j                         t        j                  | jF                  
      S t        |      j                  dk(  rDtq        |j                  t              r* j1                  t2        j                         t        |      S tq        |t              rN j1                  t2        j                         t        d ||j                  j                   jF                  
      S tq        |t              r8 j1                  t2        j                         t        d | jF                  
      S tq        |t(        j                  j
                        r*|t        j                   v rt        | jF                  
      S t        |t        j                        rMt        j                  |dd       6 j1                  t2        j                         t         jF                  
      S t        j                  |      rr j1                  t2        j                         t        | jF                  
      } jZ                  jj                  jl                  j                   jF                  ||      S tq        |t(        j                  j                        r7 j1                  t2        j                         t        | jF                  
      S t        j                  |      r7 j1                  t2        j                         t        | jF                  
      S t!        j"                  |      r7 j1                  t2        j                         t!        | jF                  
      S t%        j&                  |      r7 j1                  t2        j                         t%        | jF                  
      S t)        j*                  |      r7 j1                  t2        j                         t)        | jF                  
      S tq        |t(        j,                        r|j.                  j1                         }t3         jF                        } jZ                  jj                  j4                  j7                  t9        |      |t:        j<                        } jZ                  jj                  j>                  jA                  tC        jD                  dd jF                        t        |      |
      }tI        ||dd d|      |j.                  jJ                  d <    jZ                  jj                  jL                  jO                  |j.                  jP                          jZ                  jj                  jR                  j                  tU        ||d              tW        ||d!k(        S tq        |||f      r9 j1                  t2        j                         tY        |d d  jF                  
      S tq        |t(        jZ                  j\                  j^                        rg j1                  t2        j                         ta        |j                  |jb                  |jd                  |jf                  g jF                  "      S ti        jj                  |      Ztm        |      rd# jZ                  jj                  _        ti        jj                  |      jq                  | jF                  
      S ts        |      r6 j1                  t2        j                         t        | jF                  
      S t        |t        t        jt                  f      rtw        jx                  |d#$      rt        j                  |d	d      sqt        j                  |d%d      sZ j1                  t2        j                         t{        |tw        j|                  |d#$      j~                   jF                  
      S t        |t        jt                  t(        j                  j                  f      r8 j1                  t2        j                         t        | jF                  
      S tq        |t        j                        rtq        |j                  t(        jr                  jt                        r t         jZ                  t         jF                  d      
      |j                        }|rtq        |t              sJ d&        j1                  t2        j                         t        |j                  | jF                  
      S t        |t        j                  t        j                  f      r7 j1                  t2        j                         t        | jF                  
      S tq        |t        j                        r+ j1                  t2        j                         t        |      S tq        |t        j                        r7 j1                  t2        j                         t        | jF                  
      S t        t        |      t              r7 j1                  t2        j                         t        | jF                  
      S t        j                  t        |            r j1                  t2        j                  t2        j                          jZ                  jj                  jl                  j                   jF                  |t        t        t        |            D cg c]0  }ta        jb                  ||   t;         jF                  |            2 c}t        |      t         jF                  d'      (            S  j1                  t2        j                         t9        | jF                  
      }t        j                  t        |            s|S  jZ                  jj                  jl                  j                   jF                  ||      S c c}w c c}w c c}}w c c}w ))Nr   )
has_triton)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr   r   r   r   r  r  y      r   r  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr   r   r   r   r  r  |  r  r   r  _torchdynamo_inliner   c              3      K   | ]H  }t        j                  |      xs- j                  |      xs t        |t        j
                         J y wr   )rK   
is_literaltensor_can_be_dict_keyr   enumEnum).0kr   s     r   	<genexpr>z(VariableBuilder._wrap.<locals>.<genexpr>  sS      
 " ''* (**1-(!TYY'( "s   AAc                 R    j                  |       rt        t        |             S | S r   )r  r/   r:   )keyr   s    r   index_sourcez+VariableBuilder._wrap.<locals>.index_source  s&    ..s3.s/CDDJr   c              3   `   K   | ]&  }t        |      xs t        j                  |       ( y wr   )r    rK   r  r  xs     r   r  z(VariableBuilder._wrap.<locals>.<genexpr>  s)     OA
1?!1!<!<Q!??s   ,.)r   r   funcargskeywords)originalsaved_tensors)r   r*  __self__r    applybuiltin_function_or_methodenter_result)dynamic_dim[^a-zA-Z0-9]+_Fr   r   graphargrF   )target_valuesr   T)is_inlined_call__script_if_tracing_wrapperz"Failed to produce a valid self objr   )user_clsuser_cls_source)torch.utils._tritonr  triton.runtime.autotunerr  triton.runtime.jitr  r   getr   r  r  r  getattr_staticr   r>   r   traceable_tensor_subclassesr   r;   r   r   utils_pytreeSUPPORTED_NODESr   r'   DICT_VERSIONkeysr   r.   r   rQ   sysmodulesrU   r   dictr   defaultdictOrderedDictallis_nn_module
BOOL_FALSE	DICT_KEYSr  r   store_global_weakrefr:   ra   r   rS   r   default_factoryr   r   
track_dictr   r   Modulewrap_modulerK   r  r   	frozensetID_MATCHr  r  rL   r!   BUILTIN_MATCHrJ   r=   r6   	functoolspartialr+   r   r&  	enumerater'  r   r(  itemsr(   r   
TYPE_MATCHLIST_LENGTHr\   r<   rw   r   genericr   asarrayr"   callabler  rs   r[   can_rewriteautogradfunctionFunctionMetarl   FunctionCtxr*  r   rk   ru   types
MethodTypegetattrr+  rn   numberwrap_unspecialized_primitiverR   is_matching_objectwraprT   r
   
NAME_MATCHr`   maker   r   r   r   rP   r   r   rN   _C_TensorMetar}   
contextlibnullcontextrO   r   optim	Optimizerrz   rZ   is_process_grouprW   is_device_meshrX   is_placement_typerY   is_placementSymBoolnoderequire_hintr-   	shape_env$create_unspecified_symint_and_symbolr   r   DYNAMICroot_tracercreate_graph_inputresubr   r   metabound_symbolsaddexprtracked_fakesTrackedFaker|   r]   ampautocast_modeautocastrM   
fast_dtype_enabled_cache_enabledr   lookupr#   !has_user_defined_allowed_in_graphcreate_with_sourcer    FunctionTyper   checkrv   check_verbosereasonjitScriptFunctionr  r^   rI   r_   __func__
ModuleTyper   DummyModulert   GetSetDescriptorTypero   MethodWrapperTyperr   
issubclassr   rf   is_matching_cls
track_listr   lenr*   "cls_supports_mutation_side_effects)r   r   r  r  r  type_dispatchid_dispatchr  r   r!  r"  func_srcfunc_objr'  args_sourceiargr(  keywords_sourcevsaved_tensors_sourcenr*  
value_hint
new_source
new_symintsym_node_proxyself_objs   `                           r   r   zVariableBuilder._wrapp  s   2<:6   ++-11$u+>$ u-- '')--bi8"tU++ &&u.CUK )/66554
 ##E**5!%%e,,ekk))999  9 9: 
 &A	 ,!H():A>  &   %VT%[99ckk!+4;;??D+11;3J3JK
 
 ZZ\	
 
 T__.;;= ##L$;$;<##L$:$:; zz|..s3GG001EsK $ 
 &A	 &--!H():LOL  &   e[445,KJJu445 +64;?77>>..99$++ufUUuxx/##E**((/$$U++E9%OOO  5 56#**t{{KKtyy) 5 56eDKK@@ ' : :;"5== ',DKK@@y001!$//"3V<H9tww9%**EHD$T__%6?K#EJJ/3KODGG];-JKCP 0
 H():JGO,,.1oGG]?A> /
 !,,\-D-DE**<+A+AB&&|'?'?@
 ,HdHuUUu 5 56!{{  ^
5"** =**2::e+<==e_I2E? ++!,,
 !t{{;;.::5A ; ;<4;;{{ 
 E5>>22??@ ; ;<+{{  u~~66BBC#-dkk?#K &&|'>'>?$//0H0HI &e&9&9::DAq Q7KQ)OPQRS:   77>>..DD/;;"0"?  ue../z40%..2I2I2V2V z2.'9$??  ; ;<"(L  Jubii044U;;11%8 7 78$))$66'::5A 7 78-e4423 7 79P9PQ388t{{SS%[!!%AAjNN5G
  ; ;<   {+ 5 56!!!{{	  z* 5 56 {{  uehh223;;;)%DD5*001&&undCK 7 78&dkk::&99%@ 7 78.uT[[IF77>>..DDUF  u{{445 7 78$U4;;??!2259 5 56'dkkBB..u5 5 56%eDKK@@#55e< 5 56)%DD++E2 5 56${{  u}}- 002J)$++6J11VVJ&.. W J "WW^^77JJ'dii8Z ! K N 4<#-4N$$Z0 GGNN((,,Z__-A-ABGGNN((//J
D9 #a  Y78 5 56'{{	  uyy66??@ 5 56'LL$$NN((	 {{  &2&u-CG@%%e,??dkk @    ; ;< {{ 
 54!3!345t<**52GO**52OQVW ; ;<$''tDKK{{ 
 EE..		0H0HIJ : :;'{{  u//0ZNNEHHOO6

4;;
 CnnH 
/! 434   ; ;<%{{ 
 EE,,m.G.GHI ; ;<'{{  u99: ; ;<+E22u667 ; ;<(t{{CCUT* ; ;<+{{  ,;;DKH 7 79Q9QR77>>..99.
 "'s5z!2	 "3A ,22"'(=a3P "3	 "%[$.t{{K$H	   7 78.uT[[IFAA$u+N77>>..DDUF WRF^s   0A^4A A^900A^>[5A_c                    t        |t        j                  j                        xs[ t        | j                  t
              xr? | j                  j                  dk(  xr$ t        | j                  j                  t              S )Nstate)	r   r   r   r   r   r+   memberbaser1   r  s     r   r  z&VariableBuilder.tensor_can_be_dict_key(  s`     uehh001 :$++z2 :""g-:4;;++[9		
r   c                 ~   | j                   xr/ t        | j                   t              xr t        | j                   j                  t              xr | j                   j                  j                  dk(  xr t        | j                   j                  j                  t              xr t        | j                   j                  j                  j                  t
              xrY | j                   j                  j                  j                  j                  dk(  xr t        | j                   j                  j                  j                  j                  t              xr | j                   j                  j                  j                  j                  j                  | j                  j                  j                         v rwt        | j                  j                  | j                   j                  j                  j                  j                  j                     t        j                  j                        S dS )Nparamsparam_groupsT)r   r   r.   r  indexr+   r  r1   
local_namer   f_localsrD  r   rq  rr  r   s    r   tensor_should_specializez(VariableBuilder.tensor_should_specialize1  s   KK 4;;64;;++];   &&(2 4;;++00-@	
 4;;++0055zB   %%**11^C 4;;++0055::KH ;;##((--22==AQAQAVAVAXX	 GG$$T[[%5%5%:%:%?%?%D%D%O%OPKK))	
 	
r   r   c                    | j                  t        j                         |D ]  }||u st        d        t	        |      D cg c]9  \  }} t        | j                  t        | j                         |            |      ; }}} t        j                  |      |t                     }t        |t              r;| j                  j                  j                  j!                  | j"                  ||      S |S c c}}w )Nz-list elements are pointing to the list itselfmutable_local)r   r'   r[  r&   rX  r   r   r.   r   rb   cls_for_instancerG   r>   r   r   r   r  r   )r   r   itemr  r   r   s         r   r   zVariableBuilder.wrap_listlikeE  s     	L445Du}MN  %U+
+4 JODGG]4??3Da%HI$O+ 	 
 :!2259,.
 %77>>..99$++ufUU
s   >C8c                 .   | j                  t        j                         t        t	        |            D cg c]@  } t        | j                  t        | j                         |            t        ||            B }}t        |t                     S c c}w )Nr  )r   r'   TUPLE_ITERATOR_LENr   rD   r   r   r5   r   rC   ri   rG   )r   r   r  r   s       r   r   z#VariableBuilder.wrap_tuple_iteratorY  s    L;;<
 -e45	
 6 WODGG%?@QST%UV&ua0 6	 	 
 %V<>JJ
s   ABc                 ,   dD cg c]@  } t        | j                  t        | j                         |            t	        ||            B }}| j                  t        j                         t        |t              rt        |      S t        |      S c c}w )N)startstopstep)r   r   r+   r   rf  r   r'   rZ  r   r   rh   re   )r   r   r  rY  s       r   r   z VariableBuilder.wrap_slice_rangec  s    
 /	
 / GODGGZ0A1%EFq! /	 	 
 	L334eU# '' ''
s   ABc                    ddl m} t        ||      rU| j                  t        j
                         t        | j                  d      | _        | j                  |j                        S t        |t        j                  j                  t        j                  j                  t        j                  j                  f      rt         j"                  st%        d       t'        j(                  |      r| j                  t        j
                         t+        |      }t-        j.                  t1        |            s|S | j2                  j4                  j6                  j9                  | j                  ||      S t;        |j<                  t        j                  j>                  j@                  jB                        r*| j                  t        j
                         t+        |      S tE        |dd      r]tE        |dd      sJ d       | j                  t        j
                  t        jF                         tI        || jK                         	      S | j2                  j4                  jM                  || jN                  | jK                         	      S )
Nr   )OptimizedModule	_orig_modz5TorchDynamo purposely graph breaks on RNN, GRU, LSTMs_is_fsdp_managed_moduleF_fsdp_use_orig_paramsz3Dynamo only supports FSDP with use_orig_params=Truer   )(
eval_framer  r>   r   r'   rZ  r+   r   rR  r  r   r   r   RNNGRULSTMr   	allow_rnnr&   r   is_dynamic_nn_modulery   r*   r  r   r   r   r   r   r  r   paralleldistributedDistributedDataParallelrf  rT  rx   r   register_attr_or_moduler   )r   r   r  r   s       r   rR  zVariableBuilder.wrap_modulep  s   0%) 7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJ$$QR..u5 7 78259FAA$u+N77>>..DDUF  OOUXX..::RR
  7 78077U5u= . EDE (  7 79N9NO.uT__=NOO77>>99		( :  r   c                 v   t         j                   }|rt        |      t        j                  u rx| j                  t        j                         t        t        |      D cg c]9  \  }} t        | j                  t        | j                         |            |      ; c}}      S |rt        |      t        u rt        j                          j"                  s|| j%                         v sP| j&                  j)                         j+                         r(| j&                  j)                         j-                         r5| j                  t        j.                         t1        j2                  |      S | j5                  |      S | j                  t        j.                         t1        j2                  |      S c c}}w Nr   )r   specialize_intr   r   r   r   r'   r[  rg   rX  r   r   r.   r   r   r	   r=  #force_unspec_int_unbacked_size_liker   r   r   is_localrK  CONSTANT_MATCHrK   r   rh  )r   r   unspecr  r  s        r   r   zVariableBuilder.wrap_literal  sT   ***d5kUZZ/ 8 89 !*% 0 01 RODGG]4??;La-PQRST 0  Us* "%%'KK//11{{//1::< ;;++-::<##L$?$?@'..U;;88?? ; ;<#**77/s   !>F5
c                 v    t        |      r.t        |      | j                  j                  u rt	        dd      y y )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r   r   r   	fake_moder%   r  s     r    assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graph  s;    5>1%8DGG<M<MM*<4  N>r   c           
      p	   | j                         }|| j                  j                  j                  vsJ |j	                         j                         st        |      a|j	                         j                         sC| j                  |       | j                  j                  j                  || j                  |      S t        |      rX| j                  |       | j                  j                  j                  |t        j                  dd| j                        |      S t        |      t        j                   v rt        |      }nt        |      t"        j$                  t"        j&                  j(                  t"        j*                  j,                  j.                  t"        j*                  j0                  j2                  fv st5        |      sJ t        |             d }|| j                  j                  j6                  v }|r#| j                  j                  j6                  |   S | j                  |       | j                  j                  j8                  j;                  t        j                  dd| j                        t        |      |      }i }t        |      t        j                   v rCt=        | j                  || j>                        |d<   | jA                  tB        jD                         tG        |t"        j$                        r'|jH                  rtG        |tJ              stM        d       tO        d| j                  ||| jQ                         ||d|}| jA                  tS        jT                  tB        jV                  tG        |tX              r|n
t[        |                   || j                  j                  j6                  |<   d|j\                  j^                  vsJ |j`                  jc                         |j\                  j^                  d<   |jd                  j\                  j^                  d	   }tg        |      | j                  jh                  urtk        d
      tm        ||d|      }	|	|j\                  j^                  d<   | j                  j                  jo                  |	       |S )Nr   r1  r2  torch_function_fnz3torch.compile does not support strided NestedTensor)r   proxyexample_valueshould_specializesubclass_typer   r  tensor_dictr  z(Wrapped Tensor must be this graph's fakeFr4  r   )8r   r   r   r   r   rK  r9   is_fsdp_moduler  r  r   r0   r  r  r   r   r?  r   r   r   r   r   r   r   r   r   r   input_source_to_varr}  r~  r   r   r   r'   rZ  r   	is_nestedr   r&   wrap_fx_proxyr  rV  rW  TENSOR_MATCHr2   r   rx  r  __dict__copyr  r   r  r%   r   add_symbol_bindings)
r   r   r   r  is_duplicate_tensortensor_proxyr   tensor_variablefake_tensor_valuer4  s
             r   r   zVariableBuilder.wrap_tensor  s   " DGGNN77777 !..0&u-9%%'66811%877>>99tyy :   f%11%877>>99'dii8 :   ;&<<<$ !KM;""!!--88!!33DD	# 
 /u5C
 8<E{C 6 !M %(J(JJ77>>55f== 	--e4 ww~~11DDFF#S$))4d5k& E 
 ;&<<<+B,G'(  7 78 uell+ul3OP' 
ww";;='
 
 	))f&78 "5)		
 6E**62L$5$5$:$::::050C0C0E}- ,1166;;OL019J9JJ*+UVVFE52CD-5z***84r   c                    t         J t        |t         j                        sJ t        | j	                               }ddlm} |j                  j                   }|rd|j                  _        	 |j                  |      }|rddl
m}  ||      } t        | j                   |            j#                          | j                   j$                  j&                  j)                  t+        j,                  dd| j.                        t1        |      |      }d|i}	t3        dt4        | j                   ||d	|	}
|
| j                   j$                  j6                  |<   |
j8                  j:                  j<                  d
   }t?        ||d|d|      }||j:                  j<                  d<   |
S # t        $ r}t        t        |             Y d }~;d }~ww xY w)Nr   )_utilT)clone_preserve_stridesr1  r2  r   r   )
target_clsr   r  r  r  )r   r   r   r   r4  r   ) r   r   r   r2   r   torch._numpyr  flags	writeable_try_convert_to_tensortorch._prims_commonr  NotImplementedErrorr&   r   r   r   recursive_realizer   r}  r~  r  r  r   r   wrap_fx_proxy_clsr{   r  r  rx  r  r   )r   r   r   r  readonlytensor_valuer  er  r   numpy_ndarray_variabler  r4  s                r   r   z"VariableBuilder.wrap_numpy_ndarrayQ  s   ~~%,,,"4??#45&{{,,,$(EKK!	" 77>LF5lC 	)(6HHJ**==FF#S$))4d<6HQW > 
 V$!2 "
+ww&	"

 "
 6L**62.4499>>O !%+
 '/


#%%I # 	"#a&!!	"s   /!F( (	G1GGc                    | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S | j                  j                  j                  }t        j                         j                  rt        |t              r|j                         }t        |       | j                  j                  j                  j                  |j                  j                         | j                  j                  j                   j#                  t%        || j&                  d              nt        |t              rrt)        | j+                               sXt        | j+                         t,              s9t.        j0                  j2                  j4                  r5| j7                  t8        j:                         t=        j>                  |      S | j&                  j                         }|| j                  j                  j@                  vrtC        |d       }n[| j                  j                  j@                  |   }|jD                  |k7  r)tF        jI                  d|||jD                         d |_"        || j                  j                  j@                  |<   t2        jJ                  r|jD                  t2        jL                  stN        jP                  }n5| j7                  t8        j:                         t=        j>                  |      S |jS                  || j&                  |      }| j                  j                  j                  j                  |j                  j                         | j                  j                  j                   j#                  t%        || j&                  d              nt/        jT                  |      }t        | j+                         t,              s6tW        | j+                         jY                  t8        jZ                               d| j+                         i}t        |t.        j\                        r|j_                  d|i       | j                  j                  j`                  jc                  te        jf                  dd| j                         ti        |      | j+                         	      }tk        tl        f| j                  ||d
|}	|	| j                  j                  j                  | j                   <   t)        | j+                               s1| j                  jn                  rGt        | j+                         tp              s)ts        dju                  || j+                                     d }
t        |	t<              r|	jv                  }n#|	jx                  j                  jz                  d   }t}        |      r9|}
|
j~                  | j                  j~                  u sJ d|
j~                   d       t        | j+                         |t        |t.        j\                        |
d|      |j                  jz                  d<   |	S )Nr  )r   r   z%automatic dynamic int %s val %s != %s)r   r0  r   	raw_valuer1  r2  r   )r   r  r  zJDynamo attempts to add additional input during export: value={}, source={}r  zfake mode (z^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorFr3  r4  )Ar   r   r   unspec_variable_maprz  r	   r=  r  r   r   create_unbacked_symintr   r  r  rx  r  r  r   r  r   r0   r   r3   r   _dynamor   r  r   r'   r  rK   r   frame_stater   r   logdebugautomatic_dynamic_shapesassume_static_by_defaultr   r|  r{  tensorr(   r   rZ  r   updater}  r~  r  r  r   r  r   exportr1   AssertionErrorformatr   r  r  r   r  r   )r   r   rz  wrapped_valuer   frame_state_entryr0  r   r  
unspec_varr  r  s               r   rh  z,VariableBuilder.wrap_unspecialized_primitive  s   99:::77>>55dii@@00I!!#GGJsM !* @ @ B)-8,,001C1C1H1HI,,33t{{DA 5#&*4??+<="4??#46GH==''66 ''(C(CD+22??{{'')tww~~999
 )<5t(T%(,(B(B4(H%(//58		C !-44	 48)03D**40 338I8P8P8X88","4"4K ''(C(CD+22?? ) N N;; + !O !
 ,,001C1C1H1HI,,33t{{DA !&U 3doo/1BCdoo/::<;R;RST!23G-6U34GGNN..AA'dii8]#( B E ++77+	
 J =GDGGNN..tyy9%doo&7877>>*T__5F*T(dkk)4??+< 
 %)!j*:;$.$4$4M$.$4$4$9$9$>$>$OM=)(5%,66$'':K:KK %&7&A&A%B CK KK
 /7OO%!}ell;%#'4/


+ r   )+r   r   r   __doc__r4   r   r   r   staticmethodrV  	lru_cacher   r   r   r   classmethodr   r  r   r  r  r   r   r   r?   r   r   rB   r   r   r   r   r   r   rQ  rR  r   r   r  r   r   rh  __classcell__)r   s   @r   r   r      sA   =" " Y

  

- Y'  'R Y  >vp

(5lJ)N#O (K K(eE5L&9 (> >@8<ell z zx6&p{r   r   c                    t        | t              r| j                  }n+t        | t              r| j                  }nt        d|         g }t        j                        D ]V  }d }| j                  r*t        t        | j                  d      |j                        }|j                  t        ||             X t        |      S )Nz)Dataclass fields handling fails for type __dataclass_fields__r   )r   r   r   rR   r8  r&   r
  r  r   r.   r+   r   r   rj   )objr   rY  fieldr   s        r   r  r    s    #01			C*	+A#GHE##E*::"3::'=>

F 	.uVDE + r   c                     | |||d|}|t        ddt        i|S t        ddt        i|}|j                  |        |S )N)r   r  r  r  r  r   )r  r~   r   install_global)r   r  r  r  r   kwargsr   s          r   r  r    s`    &&	
 F  ENEfEE"U.JUfUb!r   c                    ddl m} t        |      sJ d|v r-|d   (j                  j                  j                  |d          d|j                  j                  vsJ |j                  j                  d           |}fd}t               5  |t        |j                  d      }nt        |      j                  u rnt        |t        j                        rj                  rPt        j                  j!                         5   ||      |j"                  j$                  |j                  <   d d d        d| t&        t(        fv i}	d	|v r|d	   J |d	   |	d	<   t+        |fd
i|	}t        |t        j                        r%t        |      j                  urt-        d|       d d d        t        |t        j                        rt        |t        j.                  j0                        }
|j3                  dd      }|
s|r|}nd } ||      }||j                  j                  d<   | j5                  |      }t        |t        j6                  j8                  j:                        rM|j                  j                  u r5|r|nt        j                  }|
rt        j.                  j0                  n||d<   ||d<   |j                  |        | |fi |S t=        |j                  j>                  d      re|j                  j>                  j@                  dk(  rBt        |j                  j>                  jB                  t        j                  jD                        s1|j                  j>                  t        jF                  jH                  k(  rtK        |j                  j>                        S |j                  j>                  t        j                  jL                  k(  s1|j                  j>                  t        jN                  jP                  k(  rtS        |      S tU        |t        jV                        r@tY        d |D              r.|D cg c]  }t[        j\                  |       }}t_        |fi |S t        |t`        tb        td        f      r||j                  j                  d<   g }tg        |      D ]w  \  }}|%|ji                  t[        j\                  d i |       -|ji                  tk        | |j"                  jm                  dtn        jp                  ||fi       fd|i|       y t        |t        jV                        rt_        ||fi |S tU        |t`              rts        |fi |S tU        |tb        tt        f      rtw        |fdty               i|S tU        |td              rt{        |fdty               i|S |j|                  j~                  dk(  s6t=        |d      s*J d|j|                  j~                   dt        |              t        ||j|                  fi |S |&|j                  j>                  t        j                  u rt[        j\                  d i |S t        |t        j                  t        j                  t        j                  f      r&||j                  j                  d<   t        ||fi |S t        j                  |j                  j>                        r$t        |j                  j>                  t              s=|j                  j>                  t               D cg c]  \  }}|j                   c}}v r;||j                  j                  d<   t        |||j                  j                  fi |S t        j                  |j                  j>                        r$t        |j                  j>                  t              s=|j                  j>                  t               D cg c]  \  }}|j                   c}}v r&||j                  j                  d<   t        ||fi |S |j                  j>                  dk(  r>|j                  j                  dk(  r%||j                  j                  d<   t[        |fi |S |ht        |t              rX|j                  j>                  dk(  r?|j                  j                  dk(  r&||j                  j                  d<   t        ||fi |S t        |t              r|j                  j>                  t        j                  t        tn        jp                  t        j                  j                  t        j                  tn        j                  t        t        j                  dt              t        t        j                  dt              t        j                  t        j                  f
v r/||j                  j                  d<   t[        j\                  |fi |S t        dt        |       d|j                  j                   d|j                  j>                   z          y # 1 sw Y   	 xY w# 1 sw Y   xY wc c}w c c}}w c c}}w )!Nr   )InstructionTranslatorBaser   r  c                     t        | t        j                        rSt        | t              sCt        j                  |       rt        |       j                  u s| j                  st        |       } | S r   )	r   r   r   r   _is_functional_tensorr   r  r  r7   )r   r   s    r   _clone_inputz'wrap_fx_proxy_cls.<locals>._clone_inputb  sV    eU\\* 5*- //6+E2bllB?? $E*r   T)allow_non_graph_faker   r   r   zU`example_value` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: r  F
class_typespecialized_valuer   	set_statec              3   <   K   | ]  }t        |t                y wr   )r   r   r$  s     r   r  z$wrap_fx_proxy_cls.<locals>.<genexpr>  s      3$1q
1cM   call_functionr  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got querycall_methodrecord_eventget_rankget_world_sizeztorch.* op returned non-Tensor  r   )`symbolic_convertr"  r   r   r   r  rx  r  r@   r8   r   r  r   r   r  rm  DisableTorchFunctionSubclasstracerreal_value_cacher~   r   wrap_to_fake_tensor_and_recordr%   r   r   pop
specializer   r   r   hasattrtargetr   r+  	Generatorrandomset_rng_stater   _DisableFuncTorchcuda_is_in_bad_forkr   r>   r   rJ  rK   r   rg   r   r   setrX  r   r  create_proxyoperatorgetitemrj   r   rc   rG   rV   r   r   r   rd   manual_seedr   SymFloatrw  r|   r  isclassr  r   r$   current_streamrP   r   r   EventrN   opr   sym_intrf  _utils_element_sizeseedmodr  r   _constrain_as_value_constrain_as_sizer&   rH   )r  r   r  r  r  r   r"  initial_example_valuer%  r   is_parameterr  r(  specialized_propstensor_typer%  sizesunpackedr  valr2  device_interfaces    `                    r   r  r  U  s    =b34447wx0<
		 12%**//1Xejjooo6V5WX1)" 
	  +5::rPTUM !/2<<?u||4yy XX::<@L%AELL11%**= = Z"$@ABF w&78+<+HHH&x0F8:"$(.M mU\\2.bllB*>>K_N G 
P -.!-1C1CD#KK(;UC, 5 $
 %]3+8

(&11-@ }e&7&7&C&C&N&NO''2<<7+8-ellK&2"" l+ 2C-.()%+7++

!!:.JJ&&+5uzz((115883E3EF:: : ::UZZ..//

UXX777::

 : ::(77	uzz	*s 3$13 0 6CC]!((+]CE-W--	ME4#5	6+8

(.FAs{$++<G< %"11+X-=-=qz2 '* "
 /$ mUZZ0  %;7;;M5) 5W55MD.#9:RR'RRM3'xQ|~QQQ **559MMQXyR C=22==>>lmqr  nA  mB  CC  &h0G0GS7SS		%**"3"3u7H7H"H&&7w77	MELL%..%--#P	Q+8

(um?w??

))*uzz((+6			#C#E#EA 	''#E 
 ,9

(=-"6"6";";
?F
 	
 	

))*z%**:K:KZ/X			#C#E#EA 	#E 
 ,9

(UM=W==			g	%%**--=*H+8

(999!}j1JJ/JJMM]*+8

(UM=W==	M3	'EJJ,=,=""

!!:x8!!#3X> 	!!  B - ,9

(&&}@@@-'(%**--%**:K:K9LMN	
 =< 
	f D\s8   A8i*i1A8i	i)5i.:i4i	ii&c                   ^    e Zd ZU eeef   ed<   eed<   ee	e
      ed<   defdZdedefdZy)	r  faker   constraint_dimsreturnc                 `    t        | j                  | j                  j                         f      S r   )hashr]  r   r   r   s    r   __hash__zTrackedFake.__hash__0  s#    TYY 0 0 2344r   r   c                     t        |t              rO| j                  |j                  u xr5 | j                  j	                         |j                  j	                         k(  S y)NF)r   r  r]  r   r   r   s     r   r   zTrackedFake.__eq__3  sF    e[)99

*Xt{{/?/?/AU\\EVEVEX/XXr   N)r   r   r   r   r   r   r   r4   r   DimListr   r   rb  objectr   r   r   r   r   r  r  )  sF    

F"
##Ngm4555# 5F t r   r  r_  c           	      
   |j                         }|j                  j                  j                  j	                  | d       }|r|j
                  nd }|rAt        t        j                  g| j                         z  d g| j                         z  ||      S t        d | j                         D              rkt        | j                         D cg c]2  }t        |t              rt        j                  nt        j                  4 c}d g| j                         z  ||      S d }||j                  j                  vr+t!        d d       }t#        | j                               |_        n|j                  j                  |   }|j                  | j$                  t'        |j                        k7  r4t(        j+                  d|| j$                  |j                         d |_        nnt-        |j                        D ]V  \  }	}
|
	| j                         |	   |
k7  s t(        j+                  d||	| j                  |	      |
       d |j                  |	<   X t/        |       }i fd}|j                  j0                  r|j                  j0                  D ]  }|j2                  |k(  r( ||j                  |j4                  |j6                         |j8                  G|j8                  j2                  |k(  sa ||j8                  j                  |j4                  |j6                          g }g }t;        | j                               D ]  }	|	t=        | dt?                     v }|	t=        | dt?                     v }|	t=        | dt?                     v }t@        jB                  xr! |j                  d u xs |j                  |	   d u }|j                  r'|r%t(        j+                  d	|       d |j                  |	<   j	                  |	      }|3|rt@        jD                  stG        d
      }nF|s|rtG        d      }n5d }n2|\  }}|+| d|	 d}||j                  jH                  jJ                  |<   |jM                  |       ||s|rt        j                  }n5|st@        jN                  s|rt        j                  }nt        jP                  }|jM                  |        ||j                  j                  |<   t        ||||      S c c}w )N)dynamic_sizesconstraint_sizestensor_sourcesource_to_symint_node_cachec              3   <   K   | ]  }t        |t                y wr   )r   r   )r  ss     r   r  z%_automatic_dynamic.<locals>.<genexpr>L  s     
3(Q:a (r+  z!automatic dynamic %s dim %s != %sz&automatic dynamic %s size(%s) %s != %sc                     | v rGddl m} |    \  }} ||j                  |j                  z  d      }||||k(  sJ |}n|}||f| <   y ||f| <   y )Nr   )StrictMinMaxConstraintF)vr	warn_only)%torch.fx.experimental.symbolic_shapesrn  ro  )	dimconstraint_range
debug_namern  old_constraint_rangeold_debug_namenew_constraint_rangenew_debug_namedim2constraints	           r   update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint~  s    . T3A#3F0 .#9#&&)=)@)@@$  )!)Z>-III!/!+"6"FN3"2J">N3r   _dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indicesz#automatic dynamic %s marked dynamicF)rp  Tz.size()[]))r   r   tracing_contexttensor_to_contextr=  rj  r   r   STATICrr  anyr   r   r   r|  r  r   r   ndimr  r	  r
  rX  r  export_constraintst_idrs  rt  sharedr   rf  rC  r   r  allow_ignore_mark_dynamicr   rz  source_name_to_debug_namer   r  DUCK)r  r   r   static_shapesr   prior_policyrj  rl  r  r  rr  r  rz  
constraintdynamic_dimsr^  marked_dynamicmarked_weak_dynamicmarked_staticautomatic_dynamicconstraint_dimrt  dim_namedynamicry  s                           @r   _automatic_dynamicr  ;  s   ;;=D99,,>>BB1dKL4@00d   &%,,-7"Vaeeg- (C	
 	
 
3!&&(
33& !A '1F&;
""ARARR! #Vaeeg- (C
 	
 299((( 0d;!%affhII11$7!!-vv.3344 		7FF%**	 *.!& ((9(>(>?FAs1668A;#+=		D FF1I 59)..q1 @ a5DN?$ 
yy##))66J$&%NNJ$?$?AVAV   ,1B1B1G1G41O &%%))//)) 7$ LO1557^ga)BCEJJ71.Lce#TTWQ(@#%HH #;; 
""d*O.?.D.DQ.G4.O 	 !!nII;TB(,""1%
 $''*
f&F&F!85!I"'8!84!H!%)3&NJ%"V8A3a0JT		##==hG~. %;N !((Gf== ''G ooGG$] ` #4BII$""($?	 Ss   7S>r   r   c                    t               t        j                  t        j                  j                  t
        fv s&t         t        j                        st               rJ t         |j                               \  }}d  j                  st         |      r#j                  j                  j                   <   t        j!                  dj#                         t%         j&                        j(                  nd j*                  nd        t-         fd      }|r|rj/                         soj                  j0                  j3                  t5        |j*                  nd              j                  j6                  t9                  j3                         |j;                         |j=                         dj                  j>                   <   |S  S )N)r   zwrap_to_fake %s %s %s %sc                  @    j                   j                         S )N)r   symbolic_context)r  from_tensor)r  r   r  r   s   r   r  z0wrap_to_fake_tensor_and_record.<locals>.<lambda>  s"    BLL,,!1 - r   )r   stride) r   r   r   r   r   r   r   r   rA   r   r  r  r   r  r  r	  r
  r   r   shaperg  rh  rE   rK  r  r   r  tracked_fakes_id_to_sourcer  r   r  tensor_weakref_to_sizes_strides)r  r   r   r   r  r  fake_er  s   ```    @r   r8  r8    s   QELL%(("4"4jAAa&(+!!! >yv':':'<!
v  {{1!RO=MBII%%77:		&KKM!''N.>.J**PT1A1M--SW	
 %
 m0C0C0EII##**'3 %55 II00A7>>vFKKMmmo8
		11!4 r   c                   ,    e Zd ZdZdefdZed        Zy)SourcelessBuildera  
    Like builder, but stateless and does not require a source. Useful for simple type->VT objects, or objects
    that are being created/evaporated during inlining (ex: consider a locally made list of tensors we then iterate over
    .), such a list should not show up as an artifact from inputs, nor in reconstruction, nor in the graph. However,
    there may be reasons to represent it as a ListVariable internally.

    NOTE - Objects produced here are born UNGUARDED due to the nature of sources!

    NOTE - This class is very new! It will have some rough edges, but it was created to stem the bleeding of giant
    if/else type->VariableTracker trees that were cropping up all over dynamo.
    r_  c                    t        |t              r|S t        |t        j                        rt	        |      S t        j                  |      rt        j                  |      S t        |      rt        |      S t        |      r1t        |      rd| j                  j                  _        t!        |      S t        |t"        j$                        rt'        |      S t        |t(        j*                        rt-        |      S t        |t.        t0        j2                  f      rt5        |      S t        |t6              rCt9        |j;                         D ci c]  \  }}| | ||       c}}t6        t=                     S t        |t>              r*tA        |D cg c]  } | ||       c}t=                     S t        |tB        tD        f      rEtG        jH                  t/        |            } ||D cg c]  } | ||       c}t=                     S t        |t"        jJ                        rtM        |      S tO        dt/        |              y c c}}w c c}w c c}w )NTr  z&Unexpected type in sourceless builder )(r   rI   r
  _HAS_DEFAULT_FACTORY_CLASSr   rK   r  r  wrap_constant_literalr!   rJ   r    r#   r   r   r  r   rd  r  r^   r  r  rL   r   abcABCMetar   rG  rQ   rY  rG   rC  rV   r   r   rb   cls_forr  rr   r&   )r   r   r   r  r  r%  r   s          r   r   zSourcelessBuilder.__call__#  s   e_-Le[CCD,U33&&u-$::5AA '"5))&u-CG@ ''u112'..tyy)&&ckk23+E22t$$,1KKM:MDAqDQKM:*n 
 s#&+,eb!e,LN  t}-"**4;7CU3URU3<>RRu667(//>tE{mLM ; - 4s   I
I0Ic                 \    t        j                  |       sJ t        j                  |       S r  )rK   r  r   r  s    r   r  z'SourcelessBuilder.wrap_constant_literalH  s'    **5111&&U33r   N)r   r   r   r  rI   r   r  r  r   r   r   r  r    s*    
#N_ #NJ 4 4r   r  )NN)r  r   ro  r
  r  rV  r  loggingrE  r  rE  rd  typingr   r   r   r   numpyr   ModuleNotFoundErrorr   r   torch._guardsr   r	   
torch._opsr
   torch._streambaser   r   torch._subclasses.fake_tensorr   r   r   rq  r   r   r   r   r   r   torch.fx.immutable_collectionsr   $torch.nested._internal.nested_tensorr   torch.utils._python_dispatchr   torch.utils.weakr   r,  r   r   r   r   r   allowed_functionsr    r!   r"   r#   r[  r$   excr%   r&   r   r'   r(   r)   r   r*   r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r@  r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   r  rG   rH   rI   builtinrJ   constantrK   rL   ctx_managerrM   rN   rO   rP   dictsrQ   rR   rS   rT   rU   rV   r  rW   rX   rY   rZ   	functionsr[   r\   r]   r^   r_   higher_order_opsr`   lazyra   listsrb   rc   rd   re   rf   rg   rh   ri   rj   miscrk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   	nn_modulerx   ry   	optimizerrz   r  r{   r|   r}   r~   r   r   r   torch_functionr   r   user_definedr   r   r   	getLoggerr   r	  rd  r   	dataclassr   r   r   r  r  r  r  r  r   r8  r  r   r   r   <module>r     s-   
         	 
  4 4   5 * 5 R R  : = F * L L  @ 9 A A &       & 9 8 $ 4     ? %
 
 
     R (  < Q  g! 	 	 )9 )9 )9X   
g gT! $z >BO
h   "a aJ3Xf5E 3RV 3l54 54K8  	Bs   I- -I87I8