
    rh]                    F
   U d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ ddlmZmZ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"m#Z#m$Z$ ddl%m&Z& ddl'm(Z( dd	l)m*Z* dd
l+m,Z,m-Z-m.Z. ddl/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZCmDZD ddlEmFZF ddlGmHZHmIZI ddlJmKZK ddlLmMZM ddlNmOZOmPZPmQZQmRZRmSZS ddlTmUZU ddlVmWZWmXZXmYZY ddlZm[Z[m\Z\m]Z] ddl^m_Z_m`Z`maZambZbmcZc ddldmeZe ddlfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZ dd lmZmZ dd!lmZmZmZmZmZmZmZ dd"lmZmZmZmZmZmZ dd#lmZmZmZmZmZ dd$lmZmZmZmZmZmZmZmZmZmZmZmZmZ dd%lmZ dd&lmZ dd'lmZ dd(lmZmZmZmZmZmZmZmZmZ dd)lmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd*lmZmZmZ dd+lmZ dd,lmZ dd-lmZ dd.lm Z mZmZmZmZmZ dd/lmZmZmZm	Z	 dd0l
mZmZmZ dd1lmZmZmZmZmZmZmZmZmZmZmZ 	 ddlZerdd2lmZ dd3lm Z   e
jB                  e"      Z#ejH                  jK                  e"d4      Z&e'Z(d5 Z) G d6 d7      Z*ejV                   G d8 d9             Z, G d: d;e,      Z- e.d<  e/e	      ja                         D              Z1e.e2   e3d=<    e4       Z5e4e2   e3d><   ejl                  jn                  jp                  Z9ejl                  jn                  jt                  Z; G d? d@      Z<dA Z=dB Z>	 dcdCefdDZ?dE Z@	 dcdFZA	 dddGZB	 dcdHZCdI ZDdJ ZEdK ZFdaGee4eH      e3dL<   daIee2   e3dM<   dCe4eH   fdNZJdOeHdCeKfdPZLdQdRdSeHdTej                  dCeafdUZNdaOee4eH      e3dV<   daPee2   e3dW<   dCe4eH   fdXZQdOeHdCeKfdYZR	 dedCe?fdZZSdd[d\ee|   d]eKfd^ZT G d_ d`      ZUeUj                         eU_W         G da db      ZXy# e$ r dZY (w xY w)faq  
This module contains classes and utilities for building variable trackers in Dynamo.
Variable trackers are used to convert Python values into symbolic representations
that can be traced and transformed during graph capture.

The key classes are:

- VariableBuilder: Handles source-tracked objects that need guards and proper
  reconstruction in the output graph. Used for inputs, module attributes, etc.

- SourcelessBuilder: Handles ephemeral objects created during tracing that don't
  need source tracking or guards. Used for temporary lists, intermediate values, etc.

Variable trackers enable Dynamo to track the flow of values through the program,
maintain guards for dynamic properties, and reconstruct values in the output graph.
The builders in this module handle converting Python values into appropriate
VariableTracker instances based on their type and usage context.
    N)MutableMapping)AnyCallable
NamedTupleOptionalTYPE_CHECKINGUnion)SymInt)get_metrics_contextis_int_specialization_caseis_torch_symset_feature_use)TracingContext)call_torchbind)HigherOrderOperator)
FakeTensoris_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)	_constrain_range_for_size_nested_int_aware_sort
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContextSymIntSymbolicContextTrackedFake)immutable_dictimmutable_list)ExpandedWeight)is_traceable_wrapper_subclass"is_traceable_wrapper_subclass_type)ValueRanges)TensorWeakRef   )configgraph_break_hintsmutation_guardreplay_recordtrace_rules) get_registered_device_interfaces)InternalTorchDynamoErrorraise_observed_exceptionunimplemented_v2)GuardBuilderinstall_guardmake_dupe_guard)auto_dynamic
auto_unsetFrameStateSizeEntryInferStrideprocess_automatic_dynamic)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceChainedSourceConstDictKeySourceConvertIntSourceDictGetItemSourceDictSubclassGetItemSourceFloatTensorSourceGetItemSource
GradSourceis_constant_sourceis_from_global_sourceis_from_nonlocal_sourceis_from_optimizer_source&is_from_unspecialized_nn_module_sourceListGetItemSourceLocalSourceNumpyTensorSourceOptimizerSourceRandomValueSourceSourceSubclassAttrListSourceTupleIteratorGetItemSource"UnspecializedBuiltinNNModuleSourceUnspecializedNNModuleSource)_extract_tensor_dictbuild_checkpoint_variablebuild_invoke_subgraph_variableclone_inputcommon_constant_types	dict_keysget_fake_valueget_items_from_dictget_locals_to_stealget_static_address_typeis_frozen_dataclassis_function_or_wrapperis_invoke_subgraphis_lru_cache_wrapped_functionis_namedtupleis_parameter_freezing	is_typingis_utils_checkpointis_wrapper_or_member_descriptoristypenamedtuple_fieldsodict_valuesproxy_args_kwargsrange_iteratorset_example_valuetensor_always_has_static_shapetuple_iteratortuple_iterator_getitemtuple_iterator_len unwrap_with_attr_name_if_wrapperwrap_fake_exception   )AttributeMutationNewtypestrValueMutationExistingValueMutationNewVariableTrackerVariableTrackerMeta)ConstantVariableEnumVariable)AutocastModeVariableDynamoConfigPatchVariableEventVariableNullContextVariablePreserveVersionContextVariableStreamContextVariableStreamVariable)ConstDictVariableDefaultDictVariableDictKeySetVariableFrozensetVariableMappingProxyVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableFunctoolsWrapsVariableSysFunctionVariableTracebackVariableTritonKernelVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable) TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyVariableTracker)	BaseListVariableListIteratorVariableListVariableNamedTupleVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyTypeInfoVariableNumpyVariablePythonModuleVariableRandomClassVariableRandomVariableRegexPatternVariableSavedTensorBoxTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)TorchScriptObjectVariableSDPAParamsVariable)NumpyNdarrayVariable$supported_const_comparison_op_valuesSymNodeVariableTensorSubclassVariableTensorVariableUnspecializedPythonVariable)DispatchKeySetVariableFuncTorchInterpreterVariableTorchCtxManagerClassVariableTorchInGraphFunctionVariable)TensorWithTFOverrideVariable#torch_function_mode_stack_state_mgrTorchFunctionModeVariable)FrozenDataClassVariableIntWrapperVariableKeyedJaggedTensorVariableMutableMappingVariableSourcelessGraphModuleVariableUserDefinedClassVariableUserDefinedDictVariable!UserDefinedExceptionClassVariableUserDefinedListVariableUserDefinedObjectVariableUserDefinedTupleVariable)	PyCodegen)InstructionTranslatorcudagraph_static_inputsc                     t        j                         5  t        j                  dd       t        | d      cd d d        S # 1 sw Y   y xY w)NignorezThe .grad attribute of a Tensorgrad)warningscatch_warningsfilterwarningshasattr)ts    r/var/www/html/ai-insurance-compliance-backend/venv/lib/python3.12/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr   /  s>    		 	 	" "*KLq&!" " "s   "AA
c                       e Zd Zy)_missingN__name__
__module____qualname__     r   r   r   5  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dZd Zd Zy)GraphArgsource_examplepass_arg_as_tensor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__f  s=    dmmU\\2)$--8DM4++,,, 3r   c                 (     || j                          y r   r   r   codegens     r   reconstructzGraphArg.reconstructk  s    r   c                      d | _         d | _        y r   )r   r   r  s    r   erasezGraphArg.erasen  s    "&r   c                 l    | j                   j                         |j                   j                         k(  S r   )r   name)r   others     r   __eq__zGraphArg.__eq__r  s'    {{!U\\%6%6%888r   r
  r   )r   r   r   rR   __annotations__r	   r)   r  r
   boolr   _subclassesr   r   r   r   r  propertyr  r  r  r  r  r   r   r   r   r   9  s    N M5<</00" %++77BBCC It 26.5! !-
'9r   r   c                   (     e Zd Zd fdZddZ xZS )BackwardStateGraphArgc                 >    t         |   d t               dd d       y )NF)r   r   r   r   r   )super__init__r   )r   	__class__s    r   r  zBackwardStateGraphArg.__init__w  s&    "_$ 	 	
r   c                    j                   j                  j                  sJ j                  fd       j	                  dd       j                          j                  j                   j                  j                         y )Nc                  D     j                  t        j                  d      S )Nr   )load_import_fromr   r   )r
  s   r   <lambda>z3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-E-EW r   r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer	  s    `r   r  z!BackwardStateGraphArg.reconstruct  se    zz  3333W	
 	a'gjj''::;r   returnNr  )r   r   r   r  r  __classcell__r  s   @r   r  r  v  s    
<r   r  c              #      K   | ]8  \  }}|j                  d       s"t        j                  |      rt        |       : yw)_N)
startswithinspectisclassid).0r  members      r   	<genexpr>r4    s7      /f??3GOOF$; vJ/s   >A ITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc                   L    e Zd ZdZdeddf fdZd Zd Zd Zd	 Z	e
d
        Ze
ej                  d               Zdej                   fdZdej&                  fdZd Zd Zd Ze
ej                  deeed egef   f   fd              Zd ZdefdZde e!e"e#e$f   fdZ%de&fdZ'de(fdZ)de e*e+f   fdZ,de-j\                  de/fdZ0de-jb                  jd                  fdZ3d Z4de-j\                  fdZ5de-j\                  fdZ6d Z7	 	 d%d e8e9   d!e8e:   fd"Z;d# Z<d$ Z= xZ>S )&VariableBuilderz3Wrap a python value in a VariableTracker() instancer   r)  Nc                     |J d       t        j                         J d       t        |           || _        || _        |j                         | _        y )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getr  r  r!  r   r  )r   r!  r   r  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                  j                  j                  || j                        }|r|S | j                  |      }|j                  | j                  |_        | j                  |      r]|| j                   j                  j                  vr;t        |      s0| j                   j                  j                  j                  ||      }| j                   j                  j                  j                  || j                  |       |S r   )r!  r"  side_effectsr6   r   install_guardsvariable_tracker_cachelookup_wrap_can_lift_attrs_to_inputsri   track_object_existingadd)r   valueside_effect_result	dup_guard	cached_vtvts         r   __call__zVariableBuilder.__call__  s&   DGGNN///!%!<!<U!C'5G5N5NOI##I.%%GGNN99@@T	ZZ99BI **2.TWW^^8883E:,,BB5"MB--11%bI	r   c                 D    t        |      t        t        t        t        hv S r   )typer   r   r   r   )r   rH  s     r   rA  z)VariableBuilder._can_lift_attrs_to_inputs  s$    Bx(% 	
 
 	
r   c                     | j                   S r   r  r  s    r   
get_sourcezVariableBuilder.get_source  s    {{r   c                     | j                         }	 |D cg c]  }|j                  |       }}t        |ddi i S c c}w # t        $ r Y y w xY w)Nskiprv   )rM  
make_guardNotImplementedErrorr5   )r   guardsr   guardtmps        r   r=  zVariableBuilder.install_guards  s]    "	9?@6$$U+@C@ 	s##		 A" 		s   A =A A 	AAc                 @    | j                  t        j                        S r   )_type_dispatch_implr+   trace_numpy)clss    r   _type_dispatchzVariableBuilder._type_dispatch  s    &&v'9'9::r   c                    t         j                  t         j                  j                  t         j                  j
                  t         j                  j                  j                  f| j                  ft        t        t        t        j                  t         j                  f| j                  ft         | j"                  ft$        | j&                  ft(        t*        f| j,                  ft        t.              | j0                  ft2        j4                  | j6                  ft8        j:                  | j<                  ft         j>                  j@                  jB                  | jD                  ft         jF                  jH                  | jJ                  ftL        jN                  | jP                  fg}|r1tR        r+|jU                  tR        jV                  | jX                  f       i }|D ]*  \  }}t[        |t              r|n|fD ]  }||vsJ |||<    , |S r   ).r  r  nn	Parameterr  r   functional_tensorFunctionalTensorwrap_tensortuplelistrl   collectionsdequeSizewrap_listlikerq   wrap_tuple_iteratorrn   wrap_range_iteratorslicerangewrap_slice_ranger[   wrap_literalrePatternwrap_regex_patternweakrefReferenceTypewrap_weakrefutilshooksRemovableHandlewrap_removable_handlejitScriptFunctionwrap_jit_functiontypesMappingProxyTypewrap_mapping_proxynpappendndarraywrap_numpy_ndarrayr   )rX  rW  entriesresulttsfnr   s          r   rV  z#VariableBuilder._type_dispatch_impl  s    LLHH&&%%00%%77HH	  lK,=,=uzzJ!! S445S445U^S112()3+;+;<ZZ//0""C$4$45[[..0I0IJYY%%s'<'<=##S%;%;<-
2 2NNBJJ(>(>?@ 	FB%b%0Rre &q		
 r   rD  c                 V    | j                  t        j                         t        |      S r   )r=  r4   ID_MATCHr   r   rD  s     r   rn  z"VariableBuilder.wrap_regex_pattern  s!    L112#E**r   c                     | j                  t        j                         t        j                  | j
                  || j                        S Nr  )r=  r4   
TYPE_MATCHr   buildr!  r   r  s     r   rq  zVariableBuilder.wrap_weakref  s3    L334$$TWWeDKKHHr   c                 "    t        dddg        y )Nz3Attempted to represent unregistered RemovableHandle zDynamo attempted to build a representation of a torch.utils.hooks.RemovableHandle, which is not supported. This happens because the RemovableHandle was created in another frame.gb_typecontextexplanationhints)r3   r  s     r   ru  z%VariableBuilder.wrap_removable_handle  s    
 	Im	
r   c                 p    | j                  t        j                         t        |d| j                        S )N_torchdynamo_inliner  )r=  r4   r  r   r   r  s     r   rx  z!VariableBuilder.wrap_jit_function  s/    L334*(
 	
r   c           
      P     j                  t        j                          j                  t        j                         t	        d |j                         D              }|sEt        dd|j                         D cg c]  }t        j                  |      r| c} ddg        fdt        fd|j                         D              }t        |d 	      }t        | j                  	      } j                  j                  j                   j#                  ||      S c c}w )
Nc              3   F   K   | ]  }t        j                  |        y wr   r}   
is_literalr2  ks     r   r4  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>(  s     M1(33A6M   !znon-const keys in mappingproxynon-const keys: z1Dynamo expects mappingproxy keys to be constants.zFEnsure your mappingproxy keys are constants (e.g. int, float, strings)r  c                     t        j                  |       }| }t        j                         |      }t	        j                  ||      }||fS r   )r}   createrF   rM  r   )r  vkey
source_keysource_value	res_valuer   s         r   build_key_valuez;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_value4  sG    "))!,CJ():JGL+221lCI	>!r   c              3   6   K   | ]  \  }} ||        y wr   r   )r2  r  r  r  s      r   r4  z5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>=  s     Etq!_Q*Es   r  )r=  r4   r  MAPPING_KEYS_CHECKallkeysr3   r}   r  dictitemsr   r   r   r!  r"  r<  track_mutable)r   rD  	all_constr  r  dict_vtr  r  s   `      @r   r{  z"VariableBuilder.wrap_mapping_proxy#  s    L334 	L;;<M

MM	8*uzz|+j!K[KfKfghKiA+j*klO\		" Eu{{}EE $E$7%gdkkBww~~**88GG+ ,ks   <D#D#c                     ddl m } |d ft        j                  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               S r   )r   r  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>L  s
    +;+= r   c                 t    t        t        fd| j                  i| j                  t        j
                        S )Nr   )r   _dataclasses_fields_lambdar   r=  r4   FUNCTION_MATCHr  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>O  s5    N.%;;% )),*E*EF% r   c                     t               S r   )r   r  s     r   r   z.VariableBuilder._id_dispatch.<locals>.<lambda>U  s
    4H4J r   )	r  dataclassesfieldsr  __version__r   r`  ra  r1  )rX  r  r  r  r  r  r   s          r   _id_dispatchzVariableBuilder._id_dispatchD  s    
 	( =>""  JK
  	#FB%b5$-8Rre #& "r!u#	#
 r   c                 JY   56 ddl m}m}m} ddlm}  |       rddlm} ddlm	} n G d d      } G d	 d
      }d }d }	 G d d      }
 |       rddl
m}m}	  |       rddlm}
  j                         j!                  t#        |            }|	 | |      S  j%                         j!                  t'        |            }|	 | |      S t)        |t*        j,                        rt#        |      t*        j.                  j0                  j2                  t*        j.                  j0                  j4                  t6        fvrwt#        |      t8        j:                  vr\t#        |      j<                  t*        j,                  j<                  u r j?                  |      S tA        |      r j?                  |      S tC        |      r jE                  tF        jH                         tK        t#        |            D cg c]7  }tM        jN                  tQ        ||      tS         jT                  |            9 }}tW        |t#        |       jT                        }|S tY        |tZ        t\        j^                  t\        j`                  f      rn jE                  tF        jb                         te        d |jg                         D              55s9 jh                  jj                  jl                  jo                   jT                         5 fd6t[        6fdtq        ts        |            D              }tY        |t\        j^                        r]tS         jT                  d      }tu        |t#        |       tw         jh                  |      |jx                         jT                        }n!t{        |t#        |       jT                        } jh                  jj                  j|                  j                  ||      S t)        |t*        j.                  j                        r j                  |      S t        j                  |      r j                  |      S t)        |t*        j                  j                        rIt        | jT                        } jh                  jj                  j|                  j                  ||       |S tY        |t              rute        d |D              rc|D cg c]"  }t        jO                   jh                  |      $ }} jE                  tF        j                         t        | jT                        S t)        |t        j                  t*        j                  t*        j                  j                  j                  f      r6 jE                  tF        j                         t        | jT                        S t        j                  |      r6 jE                  tF        j                         t        | jT                        S t)        |t        j                        r6 jE                  tF        j                         t        | jT                        S t        |      rt         jT                        S t        |      rt         jT                        S t)        |t        j                        rtS         j                         d      } tw         jh                  |      |j                        }g }tS         j                         d      }tq        |j                        D ]:  \  }}|j                   tw         jh                  t        ||            |             < i }tS         j                         d      }|j                  j                         D ]e  \  }}t        j                  |      s"t        dd| d g t        j                  !        tw         jh                  t        ||            |      ||<   g t         j                         j                  tF        jb                        |j                  tF        j                        |j                  tF        jH                               t        |||      S t        |      r6 jE                  tF        j                         t        | jT                        S t        >t)        |t        j                        r$ j                  t        j                  |            S t        j                  |      rYt        sJ  jE                  t        |      rtF        j                  ntF        jb                         t        | jT                        S t        j                  |      r6 jE                  tF        j                         t        | jT                        S t        j                  |      rt)        |t        j                        r^ jE                  tF        jb                         tS         jT                  d"      }t        |j                  tF        j                               n jE                  tF        j                         t        | jT                        S t        j                   |      rK jE                  tF        j                         t        jN                   jh                  | jT                        S tY        |t*        j                  j                  j                        r7 jE                  tF        j                         t	        | jT                        S t)        |t*        j                  j                  j
                        r2d }	 |j                  }g } jT                  j                  tF        jb                        g} t)        |t              rtS         jT                  d#      }!| j                  |!j                  tF        jH                               tq        |      D ]:  \  }}|j                   tw         jh                  t        |!|            |             < t        |    jh                  jj                  j|                  j                  |t        | jT                  t        |      $            S t)        |t        j                        rtY        tQ        |d%d       t*        j                  j                  j                        rtQ        |d&d'      d(k(  rs|tQ        |j                  d(d       k(  rX jE                  tF        j                         t        t	        |j                  tS         jT                  d%)            d(      S t)        |t*        j                  j                        r7 jE                  tF        j                         t!        | jT                        S |t*        j"                  j$                  j&                  j(                  u r. jE                  tF        j                         t+         fd*      S t)        ||      rt-        |j.                        S t        |      ryt        j0                  |      ct        j2                  |      rd+ jh                  jj                  _        t        j0                  |      j7                  | jT                        S t        r-t)        |t        j8                        r j;                  |      S t)        |t<              r|t*        j>                  j@                  u rt        d,d'd-g !        jE                  tF        jb                  tF        jB                         tE        jF                  | jT                        S t)        |t*        jH                  jJ                        r} jE                  tF        j                         tS         jT                  d.      }" tw         jh                  |"      |jL                        }#tO        jN                   jh                  |#      S t)        |t*        jP                        r jE                  tF        j                          jh                  jj                  jS                  d/t#        |      d0|jT                  |jV                  |jX                  d1      }$t[        |$j\                  |       t_        |$||j`                   jT                        S t)        |t*        j                  jb                        rK jE                  tF        jb                         te        jN                   jh                  | jT                        S t)        |t*        j                  jf                  jh                        r+ jE                  tF        j                         tk        |      S t)        |t*        jl                        rԉ jE                  tF        j                         t*        j"                  jn                  jq                  |        jh                  jj                  jS                  d/t*        j"                  jn                  jr                  t'        |      fi       }%t[        |%j\                  |       tu        |%| jT                        S tY        |tv        jx                        rOt{        j|                  |d2d       6 jE                  tF        jb                         t         jT                        S t        j                  |      rg jE                  tF        jb                         t        | jT                        } jh                  jj                  j|                  j                  ||      S t)        |t*        j                  j                        rR jE                  tF        j                         t         jT                         _*        t        | jT                        S t)        |t*        j                        r, jE                  tF        j                         t        |      S t        j                  |      rt        | jT                        S t        j                  |      r7 jE                  tF        j                         t        | jT                        S t        j                  |      r8 jE                  tF        j                         t        | jT                        S t        j                  |      r7 jE                  tF        j                         t        | jT                        S t        j                  |      r8 jE                  tF        j                         t        | jT                        S t'        |      t        v rIt'        |      t        vr7 jE                  tF        j                         t        | jT                        S t        |      r^t)        |t*        j                        r jT                  nt         jT                        }&|j\                  j                         re jh                  jj                  j                  j                  t        |j\                  j                        |&t        j                  3      }'nlt)        |t*        j                        r1 jh                  jj                  j                  j                         }'n t        d4d'd5g t        j                  !        jh                  jj                  j                  j                  t        j                  d6d7 j                        t#        '      |'|&      }(t        |&|'d8d d8|'9      |(j\                  j                  d:<   |'j\                  j                  })t)        |)t        j                        s
J |) d;        jh                  jj                  j                  j                  t        |'|&d              t)        |t*        j                        r|'n|'d<k(  }*t        |(|*      S t)        |||f      r9 jE                  tF        j                         t        |d d  jT                        S ||u rt        d<=      S ||	u rt        d=      S ||
j                  u rt               S t)        |t*        j                  j                  j                        rg jE                  tF        j                         t        |j`                  |j                  |j                  |j                  g jT                  >      S t        j                  |      r7 jE                  tF        j                         t        | jT                        S t{        j|                  |d?d8      r8 jE                  tF        jb                         t        |d@ jT                        S t        |      r8 jE                  tF        jb                         t        |dA jT                        S |t         j                  u rt         jT                        S |t        j                  u s)t        j
                  dBk\  r,|t        j                  u rt        | jT                        S t        |      rQt{        j|                  |dCd8      r8 jE                  tF        jb                         t        |dC jT                        S |t        j                  u r7 jE                  tF        j                         t        | jT                        S |t\        j                  u r7 jE                  tF        j                         t        | jT                        S t)        |t        j                        rNt        j                  |      r7 jE                  tF        j                         t        | jT                        S t        |      r^t!        |      \  }}+|+tS         jT                  |+       _*        t        j"                  |      j7                  | jT                        S |t$        j&                  u r6 jE                  tF        j                         t)         jT                        S tY        |t$        j&                        rt+        j,                  |      ri jE                  tF        jb                         t+        | jT                        } jh                  jj                  j|                  j                  ||       |S t)        |t        j.                  t0        j2                  f      ri jE                  tF        j                         t5        | jT                        } jh                  jj                  j|                  j                  ||       |S t)        |t        j                        rt)        |j                  t*        j.                  j                  t*        jn                  j6                  j8                  f      r tw         jh                  tS         jT                  d%            |j                        },|,rt)        |,t:              sJ dD        jE                  tF        j                         t=        |j>                  |, jT                        S t)        |t        j@                        rtC        |      S t)        |t        jD                        rtG        |      S tI        t#        |      t"              r=tI        |tJ              r+ jE                  tF        j                         tM        |      S tI        t#        |      t"              r|t*        jn                  jN                  jP                  t*        j.                  jR                  t*        j.                  jT                  fv r2t        j"                  |      j7                  | jT                        S |t*        j                  jV                  u r@ jE                  tF        j                         tY        jZ                   jh                        S tI        |t*        j,                        r\|t*        j,                  urJ|j<                  t*        j,                  j<                  u r$t]        |      st_        | jT                        S  jE                  tF        j                         ta        | jT                        S tc        j                  t#        |            rddEl*m2}-m3}. t*        jh                  jj                  jm                  |      r jh                  jj                  j                  j                  t        j                  d6d7 j                        t#        |      | jT                        }/t         jT                  |d8d d8|      |/j\                  j                  d:<   tc        jN                  |/| jT                        S to        |dF      s jq                  |      S tM        jr                   tw         jh                   |. jT                              |ju                         jw                                      tM        jr                   tw         jh                   |- jT                              |jy                                      t*        jh                  jj                  j{                   jh                  jj                  j|                  |      }0 jh                  jj                  j                  j                  t        j                  d6d7 j                        t#        |      |0 jT                        }/t         jT                  |d8d d8|0      |/j\                  j                  d:<   tc        jN                  |/|0 jT                        S t)        |tZ        t\        j`                  f      rkt#        |      j~                  tZ        j~                  u rC jE                  tF        jb                          jE                  tF        jH                          jh                  jj                  jl                  jo                   jT                          fdG6t[        6fdHtq        ts        |            D              }t{        |t)        |t\        j`                        rt\        j`                  ntZ        t                jT                  I      }1d+|1_A        t        ||1 jT                  J      } jh                  jj                  j|                  j                  ||      S t)        |t              r jE                  tF        jb                          jE                  tF        jH                         t        t        j                  |            D cg c]G  }tM        jN                  t        j                  ||      t         j                         |            I }}t        | jT                  t               K      }2t        ||2 jT                  L      } jh                  jj                  j|                  j                  ||      S t)        |t              r jE                  tF        jb                          jE                  tF        jH                         t        t        j                  |            D cg c]H  }tM        jN                  t        j                  ||      t         j                         |            J }}t        | jT                  t               K      }3t        ||3 jT                  M      } jh                  jj                  j|                  j                  ||      S tI        t#        |      t              r7 jE                  tF        jb                         t        | jT                        S t        |      r| jE                  tF        jb                         t        jN                   jh                  | jT                        } jh                  jj                  j|                  j                  ||      S t)        |t              rte        dN |D              r|D cg c]"  }t        jO                   jh                  |      $ }}t         j                         j                  tF        jH                         j                         j                  tF        j                               t        | jT                        S t        dOdP|D cg c]  }t        j                  |      r| c} dQdRg!       y t        j                  |      rddSlSmT}4 |j                  %|j                  j"                  |4j                  k(  r j                  |j                        S |j                  j"                  |4j                  k(  rt        j                  dT jT                  j                         t        j                          j                  |j                  t        j                  t        t        d8U      V      W      S |j                  j"                  |4j                  k(  rqt        j                  dT jT                  j                         t        j                          j                  |j                  t        j                  X      S t        dY|j                          jq                  |      S c c}w c c}w # t        $ r Y  w xY wc c}w c c}w c c}w c c}w )ZNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar*   )DynamoConfigPatchProxy)	Autotuner)JITFunctionc                       e Zd Zy)*VariableBuilder._wrap.<locals>.JITFunctionNr   r   r   r   r  r  o      r   r  c                       e Zd Zy)(VariableBuilder._wrap.<locals>.AutotunerNr   r   r   r   r  r  r  r  r   r  c                       y r   r   r   r   r   create_1d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_1d_tma_descriptorv      r   c                       y r   r   r   r   r   create_2d_tma_descriptorz7VariableBuilder._wrap.<locals>.create_2d_tma_descriptory  r  r   c                       e Zd Zed        Zy)/VariableBuilder._wrap.<locals>.TensorDescriptorc                       y r   r   r   r   r   from_tensorz;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor}  s    r   N)r   r   r   staticmethodr  r   r   r   TensorDescriptorr  |  s     r   r  )r  r  )r  r  )	tuple_clsr   c              3   F   K   | ]  }t        j                  |        y wr   r  r  s     r   r4  z(VariableBuilder._wrap.<locals>.<genexpr>  s     Qq,77:Qr  c                     	j                         }rt        j                  |      }|}n"t        ||       }t	        j                  ||      }t        ||      }t	        j                  ||      }||fS r   )rM  r}   r  rA   r   rC   )
ir  r  baser  r  r  r  r  r   s
           r   r  z.VariableBuilder._wrap.<locals>.build_key_value  sm    (*11!4C!"J!3D!!<J-44Q
CC0zB/66q,G	I~%r   c              3   >   K   | ]  \  }\  }} |||        y wr   r   r2  r  r  r  r  s       r   r4  z(VariableBuilder._wrap.<locals>.<genexpr>  *      Av1  1a(   default_factory)r  r   )user_clsr   c              3      K   | ]X  }t        |      t        j                  u xr |j                  d k(  xs& |t        j
                  j                  j                  v  Z yw)r  N)rK  ry  BuiltinMethodTyper   r  rr  _pytreeBUILTIN_TYPESr2  xs     r   r4  z(VariableBuilder._wrap.<locals>.<genexpr>  s[      	.
  aE333O8O 7 U[[((6667	.
s   AA rD  r   funcargskeywordsz,functools.partial() with non-literal keywordznon-literal keyword: z3functools.partial() expects literal/string keywordsr  dtypesaved_tensors)r   r  __self__r   r  apply)r3  c                     t        t        j                  j                  j                  j
                        j                   j                   j                  j                  j                  j                         fi       S r   )r   r  _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksr%  r!  r"  r<  get_ca_final_callbacks_varr  s   r   r   z'VariableBuilder._wrap.<locals>.<lambda>  sZ    ,MM00KK``-GGWW^^00KKMO r   Tz9Attempted to wrap torch._higher_order_ops.invoke_subgraphzJDirectly using invoke_subgraph is not supported. Use nested_compile_regionstreamr%  r   )	stream_iddevice_indexdevice_typeenter_result)dynamic_dimz!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.[^a-zA-Z0-9]+r-  F)r   r   grapharg is not a basic Symbol.rv   )rank)target_valuesr   __script_if_tracing_wrapper__original_fn__wrapped__)      r  z"Failed to produce a valid self obj)FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                     j                         }t        ||       }t        j                  ||      }t	        ||      }t        j                  ||      }||fS r   )rM  rA   r   r  rD   )	r  r  r  r  r  r  r  r  r   s	           r   r  z.VariableBuilder._wrap.<locals>.build_key_valueX  sU    (/a8
)00J?8zJ/66q,G	I~%r   c              3   >   K   | ]  \  }\  }} |||        y wr   r   r  s       r   r4  z(VariableBuilder._wrap.<locals>.<genexpr>f  r  r  )r  mutation_typer   )r  r   )r   r  )tuple_vtr   )list_vtr   c              3   F   K   | ]  }t        j                  |        y wr   r  r  s     r   r4  z(VariableBuilder._wrap.<locals>.<genexpr>  s     Aa#..q1Ar  znon-const keys in dict_keysr  z.Dynamo expects dict_keys keys to be constants.zCEnsure your dict_keys keys are constants (e.g. int, float, strings))_DimHintTypez%s marked %s via IntWrapper	warn_only)
constraint)dynamismr  r  zUndefined dynamism (^  torch.utils._tritonr  r  r  
decoratorsr  triton.runtime.autotunerr  triton.runtime.jitr  $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  rY  getrK  r  r1  r   r  r  r[  	parameterUninitializedBufferUninitializedParameterr%   r+   nontraceable_tensor_subclasses__torch_dispatch__r_  r&   re   r=  r4   SEQUENCE_LENGTHrk   r   r  getattrr>   r   r   rj   r  rb  defaultdictOrderedDictr  r  r  r!  r"  guard_on_key_orderrC  	enumerater^   r   r8  r  r   r<  r  Modulewrap_moduler}   r  rk  	overridesTorchFunctionModer   rB  	frozensetSourcelessBuilderr  r   enumEnumDispatchKey_C
_functorchTransformTyper~   r   is_reorderable_logging_functionBUILTIN_MATCHloggingLoggerr  r   rh   rX   rc   rY   	functoolspartialrM  r  r  r}  rF   r  r  r3   r,   
USER_ERRORrC   r5   rP  DICT_KEYS_MATCHr   rg   r   r|  genericr  asarrayr/   is_numpycallabler   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr  RuntimeErrorr`  r   r   ry  
MethodTyper  r   _ImperativeEnginer   r  r  r  _exec_final_callbacks_stubr   r   changeslookup_callableis_callable_allowed!has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitiver   _higher_order_opsinvoke_subgraph
NAME_MATCHr   makecudaStreamContextr  r   Streamcreate_proxyr  r  r  ro   noder   device_SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventrr  store_user_object_weakrefget_user_object_from_idr   
contextlibnullcontextr/  getattr_staticr   r   is_matching_objectoptim	OptimizerrP   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   is_process_groupr   is_device_meshEQUALS_MATCHr   is_placement_typer   is_placementr5  r6  r   r   r
   rB   has_hint	shape_env$create_unspecified_symint_and_symbolinthintr   DYNAMICSymBoolcreate_unbacked_symintSUPPORTABLEroot_tracercreate_graph_inputrl  subr  r   metaexprsympySymboltracked_fakesr"   r   r   r   r  r   ampautocast_modeautocastr   
fast_dtype_enabled_cache_enabledr   is_matching_clsr   rd   	tracebackclear_framesr   sysexc_infoversion_info	exceptionr   rb   wrapsr   
namedtupler   r  r   is_supported_builtin_methodrt   r?  randomRandomr   r   is_supported_random_obj
ModuleTyper.   DummyModuler   r  TreeSpecr{   r   __func__GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   rs  BackwardHookr\  Buffer _unsafe_preserve_version_counterr   constructorr'   r   r   r   r  r  _libraryfake_class_registrytracing_with_realr   wrap_user_definedrealize_all_typequalified_namer   maybe_to_fake_obj	fake_mode__new__ry   should_reconstruct_allr   ri  __len____getitem__r   r   ra  rM   r   r   r   r   ra   r   r\   r   r   torch.export.dynamic_shapesr  r  STATICwrap_symintvallogdebugr!   r   AUTO)7r   rD  r  r  r  r  r  r  r  r  r  type_dispatchid_dispatchr  r"  r  factory_sourcevarr  r  func_srcfunc_objr  args_sourcer  argr  keywords_sourcer  	dt_sourceactual_saved_tensorsr  rR  saved_tensors_sourcestream_source
stream_varstream_proxyevent_proxyr   
new_symintsym_node_proxysym_exprtracing_symint	attr_nameself_objr  r  proxyfake_script_objr  r  r  r  r  r  s7   `                                                    @@r   r@  zVariableBuilder._wrap`  s    	
 	
 	8<:6  			 	
 ,- 12G ++-11$u+>$ u-- '')--bi8"tU++ uell+U ""66""99	 U6#H#HHE{--1P1PP ''...u5''.. < <= .d5k:
 	 $**E4(%dkk48F  ($u+dkkF MED+"9"9;;R;RST 7 78QEJJLQQI " 1155dkkB&"  !*+>u+E!F F
 e[445!+DKK9J!K,K$LODGG^$L--%  ;; +T%[ 77>>..<<UFKKuxx/##E**((/$$U++u@@A+E$++FCGGNN''==eSIJE9%# 	.
 	.
 	+
 DIIa&--dggq9IEI 5 56$U4;;??DIIu00%((2E2E2S2ST
  5 56eDKK@@>>uE  : :;$U4;;??w~~. ; ;<(t{{CC ',DKK@@&1EEy001!$//"3V<H9tww9%**EHD$T__%6?K#EJJ/ 3KODGG];-JKCP
 H():JGO,,. 
1'2215$ N"7s ;$Y= 1 < <=	oGG.B
 !,,\-D-DE**<+G+GH&&|'C'CD
 ,HdHEEu 5 56!{{  ^
5"** =**2::e+<==!!%(I2E? ++!,,
 !t{{;;''. 5 56%eDKK@@++E2%*##L$;$;<&t{{G<	i22<3H3HIJ##L$9$9:(t{{CC.::5A ; ;<4;;{{ 
 E5>>22??@ ; ;<+{{  u~~66BBC#' ',':':$ Mkk,,\-D-DEFF.6'1$++'O$(33L4P4PQ &&:; DAq!(( GG]3G%K 6"77>>..DD/;;"0"?  ue../z40%..2I2I2V2V z2.'9$??  ; ;<"(NN:dkk*+U 	  uxx99: 5 56)%DD}}++FFaab  ; ;<!  56,U]];;e_!<!<U!C!O..u5CG@..u5HHdkk I   Jubii044U;;23//??? W l	  7 79P9PQ388t{{SSuzz778 5 56&t{{H=M@-@NJ(//DDu||, 5 5677>>66U!&$)$6$6#(#4#4		L l//7!{{	   4 46 7 78%,,TWWeT[[IIu//;;PPQ 5 56/66u{{+ 5 56MM99%@''..55##;;E	K k..6 {{  5*001&&undCK 7 78&dkk::&99%@ 7 78.uT[[IF77>>..DDUFSSu{{445 5 56)$++6DK$U4;;??u334 C CD)%00#88?)%DD!2259 5 56'dkkBB..u5 9 9:%eDKK@@#55e< 5 56)%DD++E2 9 9:${{ 
 uI++5	!>> ; ;<$U4;;??%  eU\\2 %dkk2 
 zz""$GGNN,,QQEJJOO,$.$6$6 R   eU]]3!%!9!9!P!P!RJ % C "$Q> 1 = =>	 "WW^^77JJ'dii8Z 	 K N 4<#-4N$$Z0 "++Hh5 *345 GGNN((//JPT0UV )=
:QR?  #>>BBY78 5 56'{{	  ..:BB..:BB&222466uyy66??@ 5 56'LL$$NN((	 {{  *99%@ ; ;</dkkJJ##E+H%P 7 78.t{{  +51 7 78.umDKKXXi,,,$DKK88cll"'ES]],B&uT[[AA#E*w/E/E(%0
  7 78.,T[[  ioo% 5 56)%DDk,,, 5 560t{{KK5**
#??F 5 56(t{{CC#E*?FE9 $(i@%%e,??dkk @   fmm# 5 56&dkk::E6==)n.T.T/
  7 78#E$++>FGGNN''55eVDM  0 0-2K2KLM ; ;<){{F GGNN''==eVLMu//0ZNNUXX__ekk.A.A.J.JK6

4;;
 CnnH 
8_ E 4E  ; ;<%{{ 
 u99: ,E22u667
 )//UT*z%/O 5 564U;;UT*!!..""  #))%0CC$++ D   GGG##L$?$?@5AA$''JJ 5%,,/- ,,0O0OO
 ;5A-eDKKHH  5 56+{{  '66tE{C 
 ~~11CCEJ22EEFF+S$))<K;;	 F  /7KKtUE/


+ 177;;  5"34--e44  ++V)H)UVKKM002  ++P)B4;;)OP))+ $nn@@RR((%O GGNN..AA'dii8U{{	 B E +3UE4+EJJOOJ' -33{{  ut[%<%<=>U##t||3  7 78 < <= GGNN--11$++>&  !*+>u+E!F F
 ( "%)@)@A  ++35{{	G .2G*,UGDKKXF77>>..DDUFSSu% 7 78 < <= u}}U34
 	 $**%%eQ/():A>F  %t{{:O:QH .F 77>>..DDUFSSt$ 7 78 < <= t||E23
 	 $**$$UA.,T__->BF  #t{{:O:QG -UGDKKXF77>>..DDUFSSU^4 7 78)%DD ' 7 78,33DGGU4;;WF77>>..DDUFSSy)A5AA HMM!*11$''1=MMOO%001M1MNOO%001J1JK *%DD 9.5/gaHXHcHcdeHf/g.hi P]	  2259@~~%)<)<@S@S)S''		22$$(<(<<		1KK$$&&&
 ''II'//1#:U#K (   $$(9(99		1KK$$&&&
 ''		J<N<N'OO"%88H#IJJ))%00]H JD   \*4 N 0hsO   7<Bq6$'Bq;Br  [ABr`ABrf<'Bri+Br jBr r 
BrrBrc                    | j                  t        j                         t        || j                        }t        j                  t        |            s|S | j                  j                  j                  j                  ||      S r  )r=  r4   r  r   r   r<   "cls_supports_mutation_side_effectsrK  r!  r"  r<  rB  )r   rD  r  s      r   r  z!VariableBuilder.wrap_user_defined  s^    L334*5E==d5kJMww~~**@@OOr   c                 @   |D ]  }||u st        ddddg        t        j                  rPt        |      t        j
                  u r5| j                  t        j                         t        j                  |      S | j                  t        j                         t        |t              rt        d |D              rs| j                  j!                         j#                         rK| j                  t        j                         t%        |D cg c]  }t        j                  |       c}      S t'        |      D cg c]4  \  }}t)        j                  |t+        | j-                         |            6 }}}| j.                  j0                  j2                  j5                  d	      }t7        | j                  t8              r| j                  j:                  t=        |      v r| j                  }t7        |t>              sJ | j.                  j0                  j@                  jC                  tE        jF                  d
d| jH                        t        |      ||      }d|jJ                  jL                  d<   tO        tP        | j.                  ||d |      }g }	t'        |jR                        D ]  \  }}
t+        ||d      }|
| j.                  j0                  jT                  |<   tW        ||         |
jX                  jJ                  jL                  d<   t[        j\                  t        j^                  ta        ||               }|	jc                  |je                  |              tg        |	ddi ti        ||dd d      }||jJ                  jL                  d<    tk        jl                  |      || j                        }t        |t>        tn        jp                  f      r0| j.                  j0                  jr                  ju                  ||      S |S c c}w c c}}w )Nz-list elements are pointing to the list itselfr  z=Dynamo does not support lists whose items reference to itselfz!Avoid using self referential listr  rD  c              3   F   K   | ]  }t        j                  |        y wr   r  )r2  items     r   r4  z0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s     H$$//5Hr  r  r   r  r-  T	steal_arg)
target_clsr!  r  example_valuesubclass_typer   Fr  indexindex_is_slicetensor_dictrO  rv   )r   r   r   r  );r3   r+   specialize_intrK  r  rd  r=  r4   CONSTANT_MATCHr}   r  r  rj   r`  r  r   guard_sourceis_unspecialized_nn_moduler   r  r   rF   rM  r!  r"  local_scoper  r   rN   
local_namer_   ra  rq  rr  rl  rs  r  rR  rt  wrap_fx_proxy_clsr   r  input_source_to_varrW   r  r/  r0  TENSOR_MATCHr)   r}  rP  r5   r   r   cls_for_instancerb  rc  r<  r  )r   rD  r  r  r"  maybe_gmr   tensor_list_proxylist_variablerR  tensor_variablesource_irS  r  r  s                  r   re  zVariableBuilder.wrap_listlike  st    	Du} K _>?		   T%[EJJ%> ; ;<#**77 	L889 5% H%HH((*EEG ; ;< E!RD"2"9"9$"?!RSS %U+

 4	  &&$T__%6:
 
 77>>--11&9KK
kk$$(;H(EE [[FeT*** $ : : M M'dii8U	 !N ! 8<""''4-)77'#"M F&/0C0C&D :"?(fAeT?N228<AU!HB%%**//> ")) --]585L h11%89: 6**#( H 7?""''
39!2259&U%$ 1 12377>>..<<UFKKK "S
s   P?9Pc                    | j                  t        j                         t        t	        |            D cg c]@  } t        | j                  t        | j                         |            t        ||            B }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )r=  r4   TUPLE_ITERATOR_LENri  rs   r8  r!  rT   rM  rr   r   r   r"  r<  r  )r   rD  r  r"  r  s        r   rf  z#VariableBuilder.wrap_tuple_iteratorG  s    L;;<
 -e45	
  WODGG%?@QST%UV&ua0
 
 'vdkkBww~~**88GG
s   ACc                 B   | j                  t        j                         t        j                  |      D cg c]  }t        j                  |       }}t        || j                        }| j                  j                  j                  j                  ||      S c c}w r  )r=  r4   RANGE_ITERATOR_MATCHcopydeepcopyr}   r  r   r   r!  r"  r<  r  )r   rD  r  r  r  s        r   rg  z#VariableBuilder.wrap_range_iteratorR  sw    L==> 6:]]55IJ!((+JJ%eDKK@ww~~**88GG Ks   Bc                 \   dD cg c]@  } t        | j                  t        | j                         |            t	        ||            B }}| j                  t        j                         t        |t              rt        || j                        S t        || j                        S c c}w )N)startstopstepr  )r8  r!  r>   rM  r  r=  r4   r  r   rh  r   r   r   )r   rD  r  r  s       r   rj  z VariableBuilder.wrap_slice_rangeZ  s    
 /	
  GODGGZ0A1%EFq!
 
 	L334eU# t{{;; t{{;;
s   AB)rS  c                    ddl m} t        j                  d| j                  j                         t        |              |||       || j                  j                  j                  v rT| j                  j                  j                  |   }|j                  |j                  j                  j                  d   d<   y y )Nr*   )mark_static_addressz Marking static input %s, id: %s)rS  r  _dynamo_static_input_type)r  r  static_inputs_logr  r   r  r1  r!  r"  r<  r  r  rR  rt  )r   rD  rS  r  r  s        r   mark_static_inputz!VariableBuilder.mark_static_inputg  s    4.0@0@0BBuI	
 	E/ DGGNN///''..--e4C// IINN./JK 0r   c                 0   ddl m} t        |j                        dk(  r7t	        dt        |      dt        |       dg t        j                  d       t        ||      rt        j                  |j                  d	d
      r<t        j                  |j                  dd       }t        | j                  d| d      S | j                  t        j                          t#        | j                  d      | _        | j%                  |j&                        S t)        |t*        j,                  j.                  t*        j,                  j0                  t*        j,                  j2                  f      r8t4        j6                  s(t	        dt9        |      dg t        j:                         t=        |dd
      rt=        |dd
      st	        dddg        | j                  t        j                          t?        || jA                               }tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S tQ        jR                  || jH                  jT                        rEt)        |t*        jV                  jX                  jZ                  j\                        r*|j_                         }ta        | j                        | _        t*        jb                  j4                  jd                  rtg               }ti        |jj                        rI|jj                  jl                  tn        u r-	 |jk                         D ]  \  }}| jq                  ||        	 ti        |jz                        rI|jz                  jl                  t|        u r-	 |j{                         D ]  \  }}	| jq                  |	|        	 |r-|| jH                  jJ                  j~                  | j                  <   |j                  j                  d      r|j                  j                  d      rt=        |j                  dd
      r| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                n| j                  }
t4        jd                  rE| jH                  jJ                  jT                  rt4        j                  rt        | j                        }
t        ||
      }t        |
j                  t        j                                tC        jD                  tG        |            s|S | jH                  jJ                  jL                  jO                  ||      S t        |j                  t*        j,                  j                  j                  j                        r:| j                  t        j                          t        || jA                               S | jH                  jJ                  j                  || j                  | jA                               S # tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~Vd }~ww xY w# tr        $ r?}tu        tG        |      | jH                  tw        |jx                               Y d }~Cd }~ww xY w)Nr*   )OptimizedModuler   zUninitialized nn.Modulez6Attempted to trace an uninitialized nn.Module of type .z?Ensure your nn.Module instance has called `super().__init__()`.r  _torchdynamo_disableF_torchdynamo_disable_msgzHOptimized `nn.Module` is wrapped with `torch.compiler.disable` (reason: ))r   msg	_orig_modz#Attempted to wrap RNN, GRU, or LSTMz*Dynamo does not support RNN, GRU, or LSTM._is_fsdp_managed_module_fsdp_use_orig_paramszFSDP with use_orig_params=Falser  z3Dynamo only supports FSDP with use_orig_params=Truer  r  )r  )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.container_dynamo_marked_static)P
eval_framer  len__dict__r3   rx   r,   r1  rj   r/  r\  forwardr   r   r=  r4   r  r>   r   r  r   r  r[  RNNGRULSTMr+   	allow_rnnstrrp  r  r   rM  r<   r  rK  r!  r"  r<  rB  r-   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baser=   r  inline_inbuilt_nn_modulesrf   r6  named_parametersr  !og_module_named_parameters_fn_ptrr  	TypeErrorr2   ra  r  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr  r   r.  r  install_free_tensorsrU   r   r5   rP  rV   r   r  paralleldistributedDistributedDataParallelregister_attr_or_module)r   rD  r  r  r  freezingr-  peb
new_sources              r   r   zVariableBuilder.wrap_modulew  sV   0u~~!#1TU\]bUcTddef&11U	 %)%%emm5KUS
 ,,MM#=t /;;bcfbgghi 
  7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJ$$=E
H6)556	 53U; 5"95A = U	"  7 780t?PQFAA$u+N77>>..DDUFSS00G
 %!6!6!C!C!N!NO(-dkk:}}##==02 U334..7789V$)$:$:$< FDAq 221H2EF U001++448VVV$)$7$7$9 FDAq 221H2EF
  <ADGGNN--dii8   ++,MN((334PQ*A5I![[
33--1L1L "DDKK!PJ=eJWj33L4K4KLM![[
33--1L1L "=T[[!IJ6uZPj33L4K4KLMAA$u+N77>>..DDUFSSOOUXX..::RR
  7 780t?PQQ77>>99		( :  g % V0a$''QVVUUV % V0a$''QVVUUVs0   +Z !+[ 	[
4[[
	\4\\c                 "   t        |      t        u rt        | j                  j	                               rOt
        j                  d| j                  j	                                | j                  |t        j                        S t        | j                  j	                               rOt
        j                  d| j                  j	                                | j                  |t        j                        S t        j                  st        || j                        rd }| j                  j                         j!                         s(| j                  j                         j#                         rd}| j%                  t'        j(                  t*        j,                  |             t/        j0                  || j                        S | j                  |      S t        j2                  s"t        |      t4        u r| j7                  |      S | j%                  t*        j8                         t/        j0                  || j                        }t;        |t<        t>        f      r0| j@                  jB                  jD                  jG                  ||      S |S )N&%s marked dynamic via source whitelistr  '%s marked unbacked via source whitelista  torch.compile considers integer attributes of the nn.Module to be static. If you are observing recompilation, you might want to make this integer dynamic using torch._dynamo.config.allow_unspec_int_on_nn_module = True, or convert this integer into a tensor.)recompile_hintr  )$rK  rk  is_dynamic_sourcer   r  r  r  r  r   rm  is_unbacked_sourceSIZE_LIKE_UNBACKEDr+   r  r   r  "is_unspecialized_builtin_nn_moduler  r=  r/  r0  r4   re  r}   r  specialize_floatfloatwrap_symfloatr  r   ra  setr!  r"  r<  r  )r   rD  r   r  s       r   rk  zVariableBuilder.wrap_literal  s   ;# !1!1!34		BDKKDTDTDVW''
8J8J'KK!$++"2"2"45		CT[[EUEUEWX''
8U8U'VV(( .eT[[A%)N002UUW;;335PPR5 ' ''!))(55n
 ,22t{{SS##E**((T%[E-A%%e,, ; ;<%,,5MF%$-ww~~22@@OOMr   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!  r  r1   r  s     r    assert_not_wrapped_by_this_graphz0VariableBuilder.assert_not_wrapped_by_this_graphC  s;    5>1%8DGG<M<MM*<4  N>r   c           	      ^   | j                         }|| j                  j                  j                  vsJ t	        |      d u}t
        j                  rc|sat        |t        j                  j                        s |r;|j                         j                         r| j                  |t                      d}t
        j                  xr% t!        |      xs t#        |      xs t%        |      }|xrC t
        j                   xs0 t               xs$ t        j&                  j
                  j(                  }|s>|j                         j+                         s|ra|j                         j-                         sC| j/                  |       | j                  j                  j1                  || j2                  |      S t	        |      dk(  rb| j5                  t6        j8                         | j/                  |       | j                  j                  j1                  || j2                  |      S t;        |      rX| j/                  |       | j                  j                  j1                  |t=        j>                  dd| j2                        |      S || j                  j                  j@                  v }|r#| j                  j                  j@                  |   S i }tC        |      t        jD                  t        j                  j                  t        jF                  jH                  jJ                  t        jF                  jL                  jN                  fv stQ        |      rd }n*tC        |      }| j5                  t6        jR                         t	        |      dk(  r| j5                  t6        j8                         | j/                  |       t        |t        jD                        rS|jT                  rGt        |t        jV                  jX                  jZ                  j\                        st_        ddd	g 
       t        |t        jD                        rPta        |      rE| j                  jb                  rt
        jd                  st_        dddg tf        jh                  
       tk        |      rotm        |      d|jn                  tm        |      jn                  k7  rBt_        dd|jn                   dtm        |      jn                   dg tf        jh                  
       tq        || j                  d|      }	| j                  j                  jr                  ju                  t=        j>                  dd| j2                        tC        |      |	|      }
tw        | j                  |
|       ty        d| j                  |
|	||d|}|j{                         r-tq        |j|                  | j                  t        |d      d       t6        j                  }t        |t              rt        |      rt6        j                  }| j5                  t        j                  |t        |t              r|n
t        |                   tQ        |      r| j5                  t6        j                         | j5                  t6        jR                         t        t        |      j                  t6        j                               |j                         \  }}|D ]S  }t        ||      }t        | j                  |      }t        j                   t        | j                  |      |             U || j                  j                  j@                  |<   d|
j                  j                  vsJ t        |      |
j                  j                  d<   |j                  j                  j                  d   }t        |      | j                  j                  urt        d      t        ||d|      }||
j                  j                  d<   |S )Nr  Tr  guardedr  r-  z&Attempted to wrap strided NestedTensorr  3torch.compile does not support strided NestedTensorr  zAttempted to wrap sparse Tensorz-torch.compile does not support sparse Tensorsz.dtype mismatch between tensor and its gradientztensor dtype: z; grad dtype: zmInconsistent dtype between tensor and its gradient. This can happen in FSDP and crashes meta tensor creation.r!  r   r   )r!  r  r  r  r   _base)r!  r   r   r  r  r  z(Wrapped Tensor must be this graph's fakeFr  r   )[rM  r!  r"  r<  r`   r+   r  r   r  r[  r\  r  r  r  rf   r  rI   rJ   rL   r  prepare_freezingis_specialized_nn_moduleis_fsdp_moduler*  r  r  r=  r4   r  rH   rl  rs  r  rK  r  r  r   r   r]  r^  r&   r  	is_nestednested	_internalnested_tensorNestedTensorr3   r   r  capture_sparse_computer,   rp  r   r   r  wrap_to_fake_tensor_and_recordrq  rr  cache_real_value_when_exportwrap_fx_proxy_is_viewr/  r>   r  rG   rK   NOT_NONE_MATCHr/  r0  rO   r)   TENSOR_SUBCLASS_METADATA_MATCHr5   rS   rP  re  __tensor_flatten__r  r   r   r  r8  rR  rt  rW   r  r   r  r1   r   )r   rD  r   is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr  r  tensor_proxyr  
guard_typeattrsr-  attrinner_valueinner_sourcefake_tensor_valuer  s                       r   r_  zVariableBuilder.wrap_tensorJ  s   " DGGNN777771%8D ,,#5%(("4"45 v224OOQ ""50E0G"H"O &,%@%@ &
!&) >&v.>5f= 	#  /  
000 5$&5}}##44 	 &  ";;=AU'')88:11%877>>99tyy :   #5)Y6  5 5611%877>>99tyy :   f%11%877>>99'dii8 :   %(J(JJ77>>55f==;LLHH))44//@@	
 

 +51$ !M KM 7 78"5)Y6 5 56 	--e4 uell+uell&<&<&J&J&W&WX@Q	 uell+e$WW^^6+H+H
 9K6)556	 % % ,y/555H(^IeDTDZDZC[\L6)556" 7dggf
 ww~~11DDFF#S$))4K	 E 
 	%TWWlEB' 
ww''
 
 >> +77!&'2	 "..
fj).Fv.N%44J "&*;< &u-		
 )/ K KL 7 78&v.99,:S:ST //1HE1 %eT2)$++t<#//:ODGG\:;G 6E**62L$5$5$:$::::0DU0K}- ,1166;;OL019J9JJ*+UVVFE52CD-5z*r   c           	          t         J t        |t         j                        sJ t        | j	                               }ddlm} |j                  j                   }|r	 d|j                  _        t        j                         5  	 |j                  |      }|rddlm}  ||      }d d d        t)        j*                   t-        | j.                  |                   t1        || j.                  d|	      }| j.                  j2                  j4                  j7                  t9        j:                  d
d| j<                        t?        |      ||      }	tA        | j.                  |	|       d|i}
tC        dtD        | j.                  |	|d|
}|| j.                  j2                  jF                  |<   |jH                  jJ                  jL                  d   }tO        ||d|d|      }||	jJ                  jL                  d<   | jP                  |_(        |S # t        $ r* t        |j                  t         j                        sJ Y w xY w# t"        $ r$}t%        dt'        |      dg |       Y d }~d }~ww xY w# 1 sw Y   xY w)Nr   )_utilT)clone_preserve_stridesz)failed to convert numpy.ndarray to TensorzHException encountered when attempting to convert numpy.ndarray to Tensor)r  r  r  r  from_excFr.  r  r-  r  r   r  r!  r  r  r  r   r   r   r   r  r   ))r|  r   r~  rO   rM  torch._numpyrM  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonrN  rQ  r3   r  r   r  r8  r!  r9  r"  rq  rr  rl  rs  r  rK  r:  r  r   r  r  rR  rt  r   r   )r   rD  r   rM  readonlytensor_valuerN  r  r  r  rD  numpy_ndarray_variabler  s                r   r  z"VariableBuilder.wrap_numpy_ndarray=  sH   ~~%,,,"4??#45&{{,,,9(,% 1CCE 	$;;EBJ#9,#GL	* 	''(H(H(VW6ww	
 **==FF#S$))4	 > 
 	%TWWe\BV$!2 "
+ww'	"

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


# )-%%%I  9 "%**bii8889 '  GJ j 	 	sB   H I3!I/I ?I 	I0I+%I3+I00I33I=r  r  c                    t        |      t        u sJ | j                  | j                  j                  j
                  v r-| j                  j                  j
                  | j                     S | j                  j                  j                  }t        j                         j                  ra|j                         }t        |       | j                  j                  j                  j                  t        || j                  d              nt!        | j#                               s||dt$        j&                  j(                  j*                  r@| j-                  t.        j0                         t3        j4                  || j                        S | j                  j                         }t7        | j                  |t9        j:                  |      | j                  j=                         j?                               }tA        | j                  j                               }| j                  }	tC        |	tD              r|	jG                         }	||}
nt(        jH                  r)|jJ                  tL        u rtO        dd       tQ               }
ntC        |	tR              r6|	jT                  *tW        |	jT                        j                  |ddi      d   st(        jX                  stZ        j\                  }
nS|jJ                  tL        u rtO        dd       | j-                  t.        j0                         t3        j4                  |      S |j_                  || j                  |
      }| j                  j                  j                  j                  t        || j                  |             n[t!        | j#                               sJ | j-                  t.        j0                         t3        j4                  || j                        S tC        | j#                         t`              rJ tc        | j#                         je                  t.        jf                               d	| j#                         i}| j                  j                  jh                  jk                  tm        jn                  d
d| j                        t        |      || j#                               }|jp                  jr                  }tC        |tt        jv                        s
J | d       || j                  j                  jh                  jx                  |<   t{        ||fi |}|| j                  j                  j
                  | j                  <   t!        | j#                               s6t}        | j#                         |dd d|      |jp                  j~                  d<   |S )Nr  r  dynamo.automatic_dynamic_shapesTr   Fr  )r   r  r   r  r-  r  r  rQ  r  )@rK  rk  r  r!  r"  unspec_variable_mapri  r   r  #force_unspec_int_unbacked_size_likero  r   rx  r}  r"   r   rH   rM  r  r  r+   r  r=  r4   r  r}   r  r;   r9   make_scalarr  r  r   r   r@   r  automatic_dynamic_shapesscalarr7   r   $get_automatic_dynamic_shapes_mark_asrN   r  r  assume_static_by_defaultr   rm  rj  rQ   r5   rP  r  rq  rr  rl  rs  rR  ru  rv  rw  bound_symbolsr   r   rt  )r   rD  r  r  ri  wrapped_valuer  frame_state_entrynormalized_source_namebase_sourcer  rD  r  r  
unspec_vars                  r   r  zVariableBuilder.wrap_symint  sK    E{c!!!99:::77>>55dii@@GGNN,,	CC%<<>M%m4GGNN((//M4;;= $DOO$56EMM$8$8$G$G
 ##L$?$?@'..U4;;OO;;##%D 9#//6+/;;+C+C+E+`+`+b	! &;4;;;K;K;M%N"++K+}5)224#&//%,,< A4HBD;4((4--.223IAu:V 44(00 %++|;#$EuM##L$?$?@'..U;;%JJ{{' K M GGNN((//M4;;@ &doo&7888 ; ;<#**t{{KKdoo/1BCCCdoo'22<3J3JKLT__./**==FF#S$))4??$	 > 
 !%%**(ELL1WhZ?V3WW1=B""00:$UMEWE
8B**4995!$//"34*2!#( #0+EJJOOJ' r   c           
      
   | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        | j                  | j
                  j                         t        j                  |      | j
                  j                         j                               }t        j                  j                  j                  st        | j                               st!        j"                  |      sqt!        j$                  |      s\t        j&                  j                  j(                  j*                  s.t-        dd      s"t        j.                  rR|j0                  t2        ur@| j5                  t6        j8                         t;        j<                  || j
                        S t        j>                  |t        j@                        }t        jB                  jD                  jG                  |      r@| j5                  t6        j8                         t;        j<                  || j
                        S tI        | j                         tJ              rJ tM        | j                         jO                  t6        jP                               tS        | j                               }||d}tU        || j                  d|      }| j                  j                  jV                  jY                  t[        j\                  dd	| j                         t_        |      ||
      }ta        | j                  ||       tc        td        f| j                  ||d|}tI        |td              sJ || j                  j                  j                  | j                   <   | j                  jf                  r=tI        | j                         th              stk        d| d| j                                d }	|jl                  jn                  jp                  d   }ts        |      sJ |}	|	jt                  | j                  jt                  u sJ d|	jt                   d       tw        | j                         |d|	d|      |jn                  jp                  d<   ty        | j                   | j                  j                  jz                  ddgt}        |gi              }
| j                  j                  j~                  j                  t        |
j                  | j
                  d              t               j                  ddd       |
S )Nr^  z.pytorch/compiler:unspecialize_float_killswitchFr  )r  )r   	raw_valuer.  r  r-  r  r!  r  r  =Dynamo attempts to add additional input during export: value=	, source=r  fake mode (^) from fake tensor metadata doesn't match mode({self.tx.fake_mode}) from InstructionTranslatorTrQ  r  call_methodr  tensorify_float_attempt)	overwrite)Er  r!  r"  r`  r;   r   r9   rb  r  r  r  r  r+   r%  rH   rM  mathisnanisinf	_inductortriton
cudagraphsr   rf  rd  r7   r=  r4   r  r}   r  tensorfloat64r(  r)  is_gradtrackingtensorr   rQ   r5   rP  r  rE   r9  rq  rr  rl  rs  rK  r:  r  r   r  rN   AssertionErrorr  rR  rt  r   r  r   r;  rQ  rm   rx  r}  r"   sym_numr   r(  )r   rD  ri  rh  r   rD  r  r  rl  rK  r   s              r   r'  zVariableBuilder.wrap_symfloat	  s'    99:::77>>55dii@@5GGKK++E2'+{{'?'?'A'\'\'^	
 MM  11!$//"34zz% zz%  %%,,77OQVW//%,,L@  ; ;<#**t{{KK U%--@
 8844]C ; ;<#**t{{KK doo/1BCCCdoo'22<3J3JKL #4??#45#%8 7dggv
 **==FF#S$))4	 > 
 	%TWWe]C&'
ww'	

 

 *&ABBB8B**499577>>*T__->"L OP]^ghlhwhwhygz{  !"((--22?C}%%%) **dgg.?.?? 	
+556 7? ?	
?  '/OO#),'



# GG'DGGNN'' #J<4
 	$$++K		4;;PT,UV!!";TT!Rr   c                    | j                   | j                  j                  j                  v r-| j                  j                  j                  | j                      S t	        j
                  |      }t        | j                         t              s6t        | j                         j                  t        j                               d| j                         i}|j                  d|i       t        || j                  d| j                               }| j                  j                  j                  j!                  t#        j$                  dd| j                         t'        |      || j                               }t)        | j                  ||       t+        t,        f| j                  ||d|}|| j                  j                  j                  | j                   <   t/        | j                               s| j                  j0                  r=t        | j                         t2              st5        d	| d
| j                                d }t        |t6              r|j8                  }n#|j:                  j<                  j>                  d   }tA        |      sJ |}|jB                  | j                  jB                  u sJ d|jB                   d       tE        | j                         |d|d|      |j<                  j>                  d<   |S )Nr   rn  Fr.  r  r-  r  ro  rp  rq  r  rr  rs  TrQ  r  )#r  r!  r"  r`  r  r}  r   rM  rQ   r5   rP  r4   r  updater9  rq  rr  rl  rs  rK  r:  r  r   rH   r  rN   r  r}   rD  r  rR  rt  r   r  r   )r   rD  rh  rD  r  r  rl  rK  s           r   rI  z,VariableBuilder.wrap_unspecialized_primitive	  s   99:::77>>55dii@@U+$//+->?$//+66|7N7NOPT__./U+,6dggt?P
 **==FF#S$))4??$	 > 
 	%TWWe]C&'
ww'	

 

 9C**4995!$//"34ww~~j1BK&P$STaSbbklpl{l{l}k~  !%*&67 * 0 0 * 0 0 5 5 : :? K=))) -$..$''2C2CC /99: ;C CC
 +3!#'-#0+EJJOOJ' r   NN)?r   r   r   __doc__rR   r  rI  rA  rM  r=  classmethodrY  r/  cacherV  rl  rm  rn  ro  rp  rq  ru  rx  r{  r  rk  r   r   r{   r  r@  r  r	   r`  ra  rl   r   re  rq   rf  rn   rg  rh  ri  rj  r  r  r  r  r[  r  r   rk  r*  r_  r  r   r   r!   r  r'  rI  r*  r+  s   @r   r8  r8    s   =" " 
	"6
 ; ; __$  $L+

 +
I'"7"7 I

HB __	c8.4oEFF	G  4{1zPs P`5lJ)N#O `D	H 	HH H<eE5L&9 <u|| D  Y Yv/bell q qfP&j *.37	u :&u /0	unJX9r   r8  c           	      z   t        | t              r| j                  }n"t        dd|  dt	        |        d|  dg        g }t        j                        D ]X  }d }| j                  r,t        | j                  d      }t        ||j                        }|j                  t        ||             Z t        |      S )	Nzdataclass fields failurezobj: z; variable type: z$Dataclass fields handling fails for z*. Expected it to be a user-defined object.r  __dataclass_fields__r  )r   r   rD  r3   rK  r  r  r   r>   rC   r  r}  r   )objrD  r  fieldr   base_srcs         r   r  r  	  s    #01		.C5 1$s)=>seCmn		
 E##E* F::!#**.DEH&x<F.uVDEF r   c                     t        | t        j                        rIt        | t              s9t        j                  |       rt        |       |u s| j                  st        |       } | S r   )r   r  r  r   _is_functional_tensorr   r3  rZ   )rD  r  s     r   _clone_inputr  	  sQ    %& uj) ++E2'.);  &ELr   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  rD  kwargsr  s          r   r;  r;  	  sb     &&	
 F  ENEfEE"U.JUfUb!r   c                     | j                   r_t        j                  j                         5  t	        || j
                        |j                  j                  |j                  <   d d d        y y # 1 sw Y   y xY wr   )	r  r  r(  DisableTorchFunctionSubclassr  r  tracerreal_value_cacherR  ro  s      r   r:  r:  
  s`    	yy XX224 	8Dr||9ELL))%**5	 		 	 	s   8A--A6c                     |t        | ||||fi |S t        |t        j                        rt	        | ||||fi |S t        ||||||       S r   )_wrap_fx_proxyr   r  r  _wrap_fx_preexisting_tensorhandle_traced_output)r  r!  r  r  r  rD  s         r   r  r  =
  sv     E=-
CJ
 	
 
M5<<	0*E=-
CJ
 	
 $2ug}j
 	
r   c                 z   ddl m} t        |t        j                        sJ dt        |              t        ||      sJ d|v r-|d   (|j                  j                  j                  |d          |j                  j                  dk(  r#d|j                  j                  v sBJ d| d       d|j                  j                  vsJ |j                  j                  d           t        j                  j                  j                         5  t        |      |j                   u rnt#        |||       |j$                  r^t        j&                  j)                         5  t+        ||j                         |j,                  j.                  |j                  <   d d d        d	| t0        t2        fv i}d
|v r|d
   J |d
   |d
<   t5        |fd|i|}|j6                  j
                  dk7  r%t        |      |j                   urt9        d|       d d d        t;        | |||||      S # 1 sw Y   xY w# 1 sw Y   %xY w)Nr*   InstructionTranslatorBasez1_wrap_fx_preexisting_tensor expected tensor, got rR  placeholderr  zplaceholder z* doesn't have 'example_value' in node.metar   r   r!  rt  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr  r   r  r  rK  r"  rR  r  rR  oprt  r  rr  +_disable_saved_tensors_hooks_during_tracingr   r  r:  r  r(  r  r  r  r  r   r   r9  rS  r1   construct_tensor_variable)r  r!  r  r}  r  rD  r  r  s           r   r  r  R
  s9    =fell+ 
;DL>J+ b34447wx0<
		 12 zz}}%%**//1 	
5'!KL	
1 ejjoo5 	
zz/0	
5
 
			H	H	J  v&",,6(UF;yy XX::< @LAELL11%**= Z"$@ABF w&78+<+HHH&x0F83FLrLVLF==''r||;*>>DXG ; D %Bv}g 1    s&   AH18H%A7H1%H.	*H11H: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           t        j                  j                  j                         5  t        |j                  |d      }d d d        t        ||||||       S # 1 sw Y   xY w)Nr*   r  rR  r  T)allow_non_graph_fake)r  r  r   r"  rR  r  rR  rt  r  r  rr  r  r]   r  )r  r!  r  r  r  rD  r  s          r   r  r  
  s     =b34447wx0<
		 12%**//1Xejjooo6V5WX1 
			H	H	J R 'uzz2DQ	R  r5'=* R Rs   %CCc                 <   dd l }dd l}dd l}t        | |j                        r>t        |||| ||      }|j                  j                  j                  ||t               |S t        |j                  j                  d      ra|j                  j                  j                  dk(  r>t        |j                  j                  j                  |j                  j                         s-|j                  j                  |j"                  j$                  k(  rt'        |j                  j                        S |j                  j                  |j                  j(                  k(  s-|j                  j                  |j*                  j,                  k(  rt/        |       S t1        | |j2                        r@t5        d | D              r.| D cg c]  }t7        j8                  |       }	}t;        |	fi |S t        | t<        t>        f      rtA        |j                  |        g }
tC        |       D ]  \  }}|%|
jE                  t7        j8                  d i |       -|jF                  jI                  dtJ        jL                  ||fi       }d|v r9t        | t>              sJ |d   }|jO                         }tQ        ||d	
      |d<   n|}|
jE                  tS        d!||||d|        t        | |j2                        rt;        |
|fi |S t1        | t<              rtU        |
fi |S t1        | t>        tV        f      rtY        |
fi |S | jZ                  j\                  dk(  s6t        | d      s*J d| jZ                  j\                   dt_        |               ta        |
| jZ                  fi |S | "|j                  j                  |jb                  u rt7        j8                  d i |S t        | |jd                  |jf                  |jh                  f      rI|j                  jj                  jm                  | |       tA        |j                  |        to        || fi |S tq        jr                  |j                  j                        r*tu        |j                  j                  |jv                        s=|j                  j                  ty               D cg c]  \  }}|jz                   c}}v r.tA        |j                  |        t}        || | j~                  fi |S tq        jr                  |j                  j                        r*tu        |j                  j                  |j                        s=|j                  j                  ty               D cg c]  \  }}|j                   c}}v r#tA        |j                  |        t        || fi |S |j                  j                  dk(  r;|j                  j                  dk(  r"tA        |j                  |        t7        | fi |S | kt        | |j                        rU|j                  j                  dk(  r<|j                  j                  dk(  r#tA        |j                  |        t        || fi |S t        | t              r!|j                  j                  |j                  t        tJ        jL                  |j                  j                  |j                  tJ        j                  |j                  j                  j                  t        |j                  dt              t        |j                  dt              |j                  f
v s1|j                  j                  dk(  rD|j                  j                  dv r,tA        |j                  |        t7        j8                  | fi |S t        | |j                  j*                  j                        r%ddlRmS} tA        |j                  |         ||fi |S t        | t              r|j                  j                  |j                  j                  |j                  j                  j                  |j                  j*                  j                  |j                  j*                  j                  |j                  j*                  j                  dgt?        t        j                               z   v r,tA        |j                  |        t7        j8                  | fi |S t        | t        t        t        f      rH|j                  j                  t        u r,tA        |j                  |        t7        j8                  | fi |S t        | t              s|j                  j                  dv r,tA        |j                  |        t7        j8                  | fi |S t        ddt        |        d|j                  j                   d|j                  j                   dg        y c c}w c c}}w c c}}w )"Nr   )mutation_type_clsr   	set_statec              3   <   K   | ]  }t        |t                y wr   )r   rk  r  s     r   r4  z'handle_traced_output.<locals>.<genexpr>
  s      3 
1c3s   r%  )kindtargetr  r  r   Fr  rP  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got queryrt  record_eventget_rankget_world_size)
bit_lengthrv   r   
is_integer)hex	__round__ztorch.* op returned non-Tensorzexample_value type: z; op: z
; target: zUtorch.* ops that return a non-Tensor cannot be traced into the Dynamo FX graph outputr  r   r   )`torch._functorch.vmaptorch._subclasses.fake_tensortorch._utilsr   r  r  r"  r<  
_track_objrw   r   rR  r  r   r  r(  	Generatorr  set_rng_stater   _DisableFuncTorchrN  _is_in_bad_forkr   rj   rd  r  r}   r  r   r`  ra  ro   r  r}  r  rQ  operatorgetitemr  rF   r  r   r$   r   r  r   rK  r   manual_seedr
   SymFloatrn  current_tracertrack_unbacked_symbolsr   r/  r0  r  rP  r0   current_streamr   rS  rW  r   r  rk  sym_intr  _utils_element_sizeseedmodr)  vmap_validate_and_get_batch_sizer  r   _constrain_as_sizebackends
SDPAParamssdpar   r   _are_functorch_transforms_activeis_batchedtensoris_flash_attention_availablecan_use_flash_attentioncan_use_efficient_attentionr   r  r&  r   r3   rx   )r  r!  r  rD  r  r  r  r  r  sizesunpackedr  r  proxy_ir   	options_ir-  device_interfacer   s                      r   r  r  
  sB    (-.'E=-
 			))3*> 	* 	
 


!!:.JJ&&+5uzz((115883E3EF:: : ::+EJJ,=,=>>

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

 : ::(77	uzz	*s 3$13 0 6CC!((+CCE-W--	ME4=	1%**m4. $	FAs{$++<G<  ,,33(#++	 4  w& &mT:::$X.F 'I*7#1U+Ih'
 !(I % #-%&)	
 $9$	J mUZZ0  %;7;;M5) 5W55MD.#9:4G44 ''226JJ=)4 M33>>??mnr  tA  oB  nC  D	5
 &h0G0GS7SS		%**"3"3u7H7H"H&&7w77	MELL%..%--#P	Q
		  77uM%**m4um?w??

))*uzz((%,,7			#C#EA 	'' 
 	%**m4e]M4H4HTGTT

))*uzz((%++6			#C#EA 	 
 	%**m4UM=W==			g	%%**--=*H%**m4999!}ekk2JJ/JJMM]*%**m4UM=W==	M3	'

MMLL&&JJLL!!>>E%%z8<E%%'7B $$
	
$ JJMM]*uzz/@/@N/R 	%**m4&&}@@@	M5>>#6#6#A#A	B,%**m4!%3733	M4	(

HH55HH00NN<<NN77NN;;
 388:
;<		< 	%**m4&&}@@@=3t"45JJ/%**m4&&}@@@	M5	)UZZ->->BV-V%**m4&&}@@@4*7=+A*B&Wabgblblbsbsatuo		
e DFs   ?h
hhc                    t        ||j                        }t        |j                  |       |j                  j
                  j                  ||       | j                  |      }t        |t        j                  j                  j                        r|j                  |j                  u r|r|}nt        |t        j                  j                        rt        j                  j                  }nOt        |t        j                  j                        rt        j                  j                  }nt        j                   }||d<   |j#                  |        | |fi |S )z
    Actually construct a tensor variable after all the pre-processing from
    wrapping a pre-existing or newly created tensor value.
    
class_type)r  r  ro   rR  r"  r  r  
specializer   r  r  r   r   r[  r\  r  r  r  )r  r!  r  r  r  rD  specialized_propstensor_types           r   r  r  k  s     !=Mejj-0
 II33M5I"--m< 	=%"3"3"?"?"J"JK##r||3'Kuxx'9'9:((,,Kuxx7((//K,,K*5,'NN$%e'w''r   c                     t         j                  dk(  rt        j                  S t         j                  dk(  rt        j                  S t         j                  dk(  rt        j
                  S t        dt         j                         )Ndynamicunbacked	obliviousz+invalid automatic_dynamic_shapes_mark_as = )r+    automatic_dynamic_shapes_mark_asr   rm  r#  OBLIVIOUS_SIZErU  r   r   r   re  re    sn    ..);!!!		0	0J	>,,,		0	0K	?(((9&:a:a9bc
 	
r   _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w N r  ,)	hashr  compilerr+   dynamic_sourcesr  r  replacesplitcurrent_hashss     r   get_dynamic_sourcesr    s     --==>L #(D(T
 &&66>>sBGMMcR 	

 $0    Bsource_namec                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)r  rl  matchr  r  )r  r  patterns      r   r!  r!    sM    )+O" k!RXXg{%CIIS
  r   r!  r   r  r  c           
         |j                         }t        |      s|j                         }|j                         }d g|z  }t	        |      D cg c]
  }||   | f }}|j                  t               i }	|D ]>  \  }
}| }|	j                  |
|
      ||<   |	j                  |
||   z  t        |             @ ng }t        | |t        j                  t        |      t        |                  S c c}w )N)r  )sizer   stridedimri  sortr   r  
setdefaultr:   r;   r9   make_tensorr`  )r!  r  r  ex_size	ex_strider  r  r  pending
candidatesi_strideneg_is               r   record_automatic_dynamicr    s     ffhGHHJ	eeg#/4Sz:!IaL1"%::/0
& 	IOHeA"x:F1I!!(WQZ"7QH	I
 $
D%11%.%-P  ;s   C1_UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                  F   t        t        j                  j                  j                        } t
        t        | k(  rt
        S t        j                  j                  j                  j                  dd      j                  d      D ch c]  }|r| c}a| at
        S c c}w r  )	r  r  r  r+   unbacked_sourcesr  r  r  r  r  s     r   get_unbacked_sourcesr	    s     -->>?L $)F,)V  
 &&77??RHNNsS 	

 %1!r  c                     t               }|D ]6  }|| k(  st        j                  ||       st        j	                  d| |        y y)NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)r	  rl  r  r  r  )r  r  r  s      r   r"  r"    sN    +-# k!RXXg{%CIIU
  r   c           
      f  01 | j                   rGt        | t        j                  j                  j
                  j                        st        dddg        |j                         }|j                  j                  j                  j                  | d       }|r|j                  nd }d }| j                         r$t        |d      }	t!        | j"                  ||	|      }t%        |       r|st!        | |||d      }
i }t'        |       j)                  |       \  }}|D ]+  }t+        | |      }t        ||      }t!        ||||      ||<   - t-        |
j.                  |
j0                  |
j2                  |
j4                  ||
j6                  |
j                  |      S |rt9        |      st;        |||        t=        t>        j@                  g| jC                         z  t>        jD                  g| jC                         z  d g| jC                         z  d g| jC                         z  |||	      S d
dl#m$1 tK        1fd| jM                         D              rt=        | jM                         D cg c]2  }t        |tN              rt>        jP                  nt>        j@                  4 c}t>        jD                  g| jC                         z  d g| jC                         z  d g| jC                         z  |||	      S t;        |||       }tS        |       }i 00fd}d
dl*m+} |j                  jX                  r`|j                  jX                  D ]G  }t        ||      r|jZ                  |k(  s  ||jB                  |j\                  |j                         I g }g }g }g }g }t_        | jC                               D ]e  }|t+        | dta                     v }|t+        | dta                     v }|t+        | dta                     v }|t+        | dta                     v } |t+        | dta                     v }!|jc                  t+        | di       j                  |g              te        |j                               }"|}	t        |	tf              r|	ji                         }	|sFt        |	tj              r|	jl                  zto        |	jl                        j                  |"|di      |   rPtp        js                  d|       tt        g| jC                         z  }#tv        |#|<   |ty        jz                  |#      z  }t|        j~                  xr |j                  |      }$t|        j~                  xr |j                  |      }%t9        |      rtp        js                  d|       d}$d}%t        |      rtp        js                  d|       d}$d}%|$xs |%}&0j                  |      }|d }'d }(|rt|        j                  sd }(t        | d      r| j                  D )cg c]  })|)jB                  |k(  s|) c})j                         }*|*j                  |*j                  t        d      }'nd
dl#mJ}+  |+t        |*j                  |*j                        d      }'nt        d      }'n|rt        d      }'n|!s+|&r)t        dd       |$rt        d      }'|%rbt        d      }(nU|!st|        j~                  st        dd       d }'d }(n2|\  }'},d }(| d | d!}-|,|j                  j                  j                  |-<   |jc                  |'       |jc                  |(       |st        |      rt>        j                  }.nr|'|s| s 1| jM                         |         r|&rt               }.nFt>        jP                  }.n5|st|        j                  s|!rt>        j@                  }.nt>        j                  }.|(t>        jP                  }/nt>        jD                  }/|jc                  |.       |jc                  |/       h t=        ||||||||"      S c c}w c c})w )#NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  r-  r  r/  T)
outer_only)dynamic_sizesdynamic_stridesconstraint_sizesconstraint_stridesview_base_contexttensor_source#shape_env_to_source_to_symbol_cacheinner_contexts)r  r  r  r  r  r  r  r   )is_nested_intc              3   T   K   | ]  }t        |t              xr	  |        ! y wr   )r   r
   )r2  r  r  s     r   r4  z%_automatic_dynamic.<locals>.<genexpr>G  s(     
La:a 9q)9%99
Ls   %(c                     | v r=ddl m} |    \  }} ||j                  |j                  z  d      }|xs |}||f| <   y ||f| <   y )Nr   StrictMinMaxConstraintFvrr	  )%torch.fx.experimental.symbolic_shapesr  r  )	r  constraint_ranger  r  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r   update_dim2constraintz1_automatic_dynamic.<locals>.update_dim2constraint]  sk    . T-;C-@* (#9#&&)=)@)@@$   '4H"6"@N3"2D"8N3r   )_RelaxedConstraint_dynamo_strict_unbacked_indices_dynamo_unbacked_indices_dynamo_dynamic_indices_dynamo_weak_dynamic_indices_dynamo_static_indices_specialize_onFz#automatic dynamic %s marked dynamic)r  r  r  _dynamo_dynamic_ranger  r  )lowerupperr  r_  z.size()[])r  r  r  r  specialize_onr  r  r  )Sr3  r   r  r4  r5  r6  r7  r3   r  r"  tracing_contexttensor_to_contextr  r  r<  r>   _automatic_dynamicr/  r&   rK  r?  r  r   r  r  r  r  r  r!  r  r   r   r  r  INFER_STRIDEr  r  anyr  r
   rm  r1  r  r$  export_constraintst_idr  ri  r(  r}  r   r@   r  rN   r  r  r  r  r8   r7   r9   	make_sizer+   rc  is_size_dynamicis_stride_dynamicr"  allow_ignore_mark_dynamicr   r+  popminmaxr   r  r(   r   ri  source_name_to_debug_namer#  re  rf  DUCK)2r  r!  r   static_shapesr  r  prior_policyr  r  rk  outer_contextr  rG  r-  rH  inner_tensorrJ  r  ri  r6  r#  r$  r
  r  r  r  r  r/  r  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticrj  	mark_sizeautomatic_dynamic_sizeautomatic_dynamic_strideautomatic_dynamicconstraint_sizeconstraint_stridedr	dim_ranger  name_dim_namedynamic_sizedynamic_strider"  r  s2                                                   @@r   r2  r2    s    	{{:	5<<!!//<< 	]M		
 ;;=D99,,>>BB1dKL<H88d (
 48zz| 1.qwwKW$Q'
*r6=T

 7--a0q 	D"1d+L%fd3L#5b,$N4 	 ''55)99*;;,??/'550=0a0a)	
 		
 .t4 T1-&%,,-7'445?"Vaeeg- $v// 0S
 	
 D

L1668
LL&  '1F&;
""ARARR (445?"Vaeeg- $v// 0S
 	
 1T1= a5DN9  ?	yy##))66 	J*&89$&%NNJ$?$?		 MOM1557^ D/!"g0#%'
 "
 wq*DceLLga)BCEJJ71.Lce#TTWQ(@#%HHWQ(8"=AA!RHI
 "7v{{}!Ek=1%..0K{K0$$0[))*../E5zRSTU II;TB#quuw.I'IaL!4!>!>I!NN ++T0A0Q0QRS0T 	 ++V0A0S0STU0V 	! T"II>E%)"'+$d#II?F%)"'+$2N6N
 $''*
"O $f&F&F$(!156%&%<%<!!!!ce  !}},1F*AE*R +A*immT&++
 '>&NO'"9E"J"'8 A4H)&=&MO+(?$(O%$V-L-L#$EuM"&$(!%/"OU $xs!,HFKBII99(C0!!"3406%88L'"QVVXa[)
 !CE)11f==%,,L &??L('//N'44N\*~.ID/L ##')-#+,O	 	up!s   &7`)?`.`.)parent_contextr   r   c          
          t               t        j                  t        j                  j                  t
        fv s&t         t        j                        st               rۉJ t         |      \  }}|st         |      n-t        t              sJ j                  }|j                  |   t        j                  dj                         t!         j"                        t                      t%         fd      }Wt        |t
              rG|j&                  x}	9j(                  j*                  j-                  t/        |	t1                           t        |      rf|j3                         \  }
}|
D ]N  }t5        ||      }t5         |      }t        |      }t7        ||t        |t        j                               P j(                  j8                  j:                   <   t=        |      r|j>                  r|jA                         n|jC                         }|jE                         d|jF                  z  |jE                         |jI                         dj(                  jJ                  <   n8|jE                         |jI                         dj(                  jJ                  <   |r~|rjM                         sltO              saj(                  j*                  j-                  t/        |             j(                  jP                  tS                  j-                         |S  S )N)r  zwrap_to_fake %s %s %s %sc                  @    j                   j                         S )N)r   symbolic_context)r  r  )r  r   rX  r!  s   r   r   z0wrap_to_fake_tensor_and_record.<locals>.<lambda>6  s$    BLL,,!1 -  r   )r   r   rU  )rv   )r  r  values_sizevalues_stride)r  r  )*rK  r  r  r[  r\  r   r   r&   rp   r2  r>   r3  r  r  r  r  r`  shaperu   	item_memor"  rx  r}  r"   r?   r?  r  r9  r0  r1  r   	is_sparse_valuesvaluesr  ndimr  input_source_to_sizes_stridesr1  rH   tracked_fakes_id_to_sourcer1  )r  r!  r   r   rU  r@  _reasoninner_context_namefake_esym_valrG  r-  rH  
fake_innerinnerrJ  r_  rX  s   ```              @r   r9  r9    s    	QELL%(("4"4jAAa&(+!!!!? "
w 1!RO fj111!'-<<=OP		&KKM!''NG	
 %
 6:.",,,9II##**G%9&%ACST )0002HE1 
$VT2
4()&$7.'(U\\B#3	
 :J		!!33A6  *0)9)9V^^%v}}F ,%{{}!'?BII33F;  --/?BII33F; "v'F'F'H&v.II##**FF,<= II00A7>>vFr   c                   R    e Zd ZdZd
dZedddefd       Zed        Zed	        Z	y)r$  a  
    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)  Nc                     t        d      )NzUse SourcelessBuilder.create()r  r  s    r   r  zSourcelessBuilder.__init__  s    =>>r   r!  r   c           
      X   t        |      }t        j                  j                  |      }|r	 || |      S t	        |t
              r|S t	        |t        j                        rt        |      S t        j                  |      rt        j                  |      S t        |      rVt        j                  |      At        j                  |      rd| j                   _         t        j                  |      |      S t%        |      r t        j&                  |      |      S t	        |t(        j*                  t,        j.                  t,        j0                  j2                  j4                  f      rt7        |      S t	        |t         t8        j:                  f      rt=        |      S t	        |t>        j@                        rtC        |      S t	        |t>        jD                        rt	        |jF                  t         t8        j:                  f      rvtI        |jF                  |jJ                  jL                        |k(  sJ t        j                  | |jF                        }	 |jO                  | |jJ                  jL                        S t	        |t,        jR                  jT                  jV                        rtY        |      S t	        |t,        jZ                  j\                  j^                  t,        jZ                  j\                  j`                  f      rt        |      S tc        jd                  |      rtc        |      S tg        jh                  |      rtg        |      S |tj        jl                  u rto        |      S t	        |tp        jr                        rtu        |      S t	        |t,        jv                  jx                  jz                  j|                        rt        j                  t        |            S t	        |t        t,        j                  j                              r3t,        jv                  jx                  j                  j                  |      S t	        |t>        j                        rt        |      S t        |      rUt        t        |            D cg c]"  }t        j                  | tI        ||            $ }}t        |t        |            S t	        |t,        j                        ro|j                  j                  | j                   j                  v rC| j                   j                  |j                  j                     }t        j                  | |      S t        d|j                   d|j                   d| g t        j                         y # tP        $ r Y Gw xY wc c}w )NT)r  z%Unexpected type in sourceless builderr  z3SourcelessBuilder.create does not know how to wrap r  )SrK  r$  _type_handlersr  r   r{   r  _HAS_DEFAULT_FACTORY_CLASSr   r}   r  r  r6  r/   rD  rE  r"  rF  rb   r?  r%  r&  r  r'  r(  r)  r*  r~   abcABCMetar   ry  r  r   r@  r  r  r  r   var_getattrrQ  r  graph_moduleGraphModuler   rr  r  r  LeafSpecr   rg  r   rd  r/  r  r   rl  rm  r   r  	variableslazyLazySymNodeFormatStringr  rJ  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAliasr   re   rk   r   r
   rR  ru  rg  r   r3   r   r   r,   
DYNAMO_BUG)r!  rD  
value_typefast_handler
cls_obj_vtr  r"  r  s           r   r  zSourcelessBuilder.create  s?   %[
(77;;JGE**e_-L{EEF,U33((/#**511e_!<!<U!C!O..u5>B		;5;..u5e<<#E*,;%%e,U33DIIu00%((2E2E2S2ST
  &&ckk23+E22u667(//ue../ 5>>D#+++>? 5>>5>>+B+BCuLLL*11"ennEJ!--b%..2I2IJJ uxx44@@A077EKK''00%++2E2E2N2NO
 -U33++E2$U++..u5%e,,ioo%)%00rzz*'..u}}66;;SST#**3u:66tE$;$;$S$STU==**;;bb  u112!%((5! .d5k: "((WUD-ABF  &fUDDuell+

299#:#::II++EJJOO<E"))"e44;!,,-Qz/F/F.GHMj\Z1%001		
I ' 2s   %V 'V'	V$#V$c                 \    t        j                  |       sJ t        j                  |       S )Nr  )r}   r  r  r  s    r   wrap_constant_literalz'SourcelessBuilder.wrap_constant_literal  s'    **5111&&U33r   c                  B   t         j                  i } t        D ]  }d | |<   
 fd| t        <   fd| t        <   fd| t
        <   fd| t        <   fd| t        j                  <   | t           | t        j                  <   | t           | t        <   | t
           | t        <   d | t        j                  <   d | t        j                   <   d	 | t        j"                  <   d
 | t        j$                  j&                  j(                  <   d | t        j*                  j,                  j.                  <   d | t        j*                  j,                  j0                  <   d | t        j*                  j,                  j2                  <   dd}t4        j6                  D ]  }|| |<   	 | S )Nc                     t        |      S r   )r}   r!  rD  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ,<U,C r   c           	      b    t        |D cg c]  } | |       c}t                     S c c}w N)r  )r   rz   r!  rD  r  r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s)    +$)*qVB]*:J:L+
 *   ,c                     t        |j                         D ci c]  \  }} | |       | |       c}}t        |      t                     S c c}}w r  )r   r  rK  rz   )r!  rD  r  r  r  s       r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  sF    +<6;kkmDdaVB]F2qM)DK*,,
 Ds   A
c           	      b    t        |D cg c]  } | |       c}t                     S c c}w r  )r   rz   r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s)    <$)*qVB]*:J:L,
 *r  c           	      N    t        |D cg c]  } | |       c}      S c c}w r   )r   r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s#    M$)*qVB]*-
 *   "c           	      N    t        |D cg c]  } | |       c}      S c c}w r   )r   r  s      r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s#    $)*qVB]*2
 *r  c                     t               S r   )r   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s
    4G4I r   c                     t        |      S r   )r   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    7KE7R r   c                 ,    t        |t                     S r  )r   rz   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    ;Q!1!3<
 r   c                 ,    t        |t                     S r  )r   rz   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  s    :%5%7 r   c                 ,    t        |t                     S r  r   rz   r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>      7%5%7 r   c                 ,    t        |t                     S r  r  r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r   c                 ,    t        |t                     S r  r  r  s     r   r   z6SourcelessBuilder.make_type_handlers.<locals>.<lambda>  r  r   c                     |S r   r   r  s     r   passthroughz9SourcelessBuilder.make_type_handlers.<locals>.passthrough  s    Lr   )r!  r   )r$  r  r[   r(  r  ra  r`  r  rd  rb  r  r#   r$   r  r  ry  r  r`  r)  rU  rV  distributionsconstraints_Real	_Interval
Constraintr|   all_subclasses)handlersr   r  rX  r  s       @r   make_type_handlersz$SourcelessBuilder.make_type_handlers  sy   "))& 	DACHQK	D




 
 -5TN(()#+D> #+D> "I%R!!"*
%%& 	!!--BBC 	$$00667 	$$00::; 	$$00;;<	 '55 	(C'HSM	(r   r(  )
r   r   r   r  r  r  r{   r  r  r  r   r   r   r$  r$  u  s\    
? O
* O
o O
 O
b 4 4 : :r   r$  c                   2    e Zd ZdZddZedddefd       Zy)	"SourcelessUserDefinedObjectBuilderz
    SourceLessBuilder does not return a UserDefinedObjectVariable, but in some
    cases it might be ok to return UserDefinedObjects. In such case, use this
    builder.
    r)  Nc                     t        d      )Nz/Use SourcelessUserDefinedObjectBuilder.create()rk  r  s    r   r  z+SourcelessUserDefinedObjectBuilder.__init__$  s    NOOr   r!  r   c                     t        |      }t        |t              rt        |t	                     S t        |t        j                  j                        rt        |t	                     S t        |t	                     S r  )rK  r  r   r   rz   r   r  r[  r  r   r   )r!  rD  r}  s      r   r  z)SourcelessUserDefinedObjectBuilder.create'  sa    %[
j.1)%?O?QRRuxx/0%5%7  -UBRBTUUr   r(  )r   r   r   r  r  r  r{   r  r   r   r   r  r    s4    P 	V* 	Vo 	V 	Vr   r  r  r   )F(Y  r  ro  rb  rZ  r  r  r%  r/  r/  	itertoolsr-  rw  r  r  rl  r  r  ry  r   ro  collections.abcr   typingr   r   r   r   r   r	   rv  r  r
   torch._dynamo.utilsr   r   r   r   torch._guardsr   !torch._higher_order_ops.torchbindr   
torch._opsr   r  r   r   r   torch._subclasses.meta_utilsr   r   torch._utils_internalr   %torch.fx.experimental._backward_stater   torch.fx.experimental._dynamismr   r  r   r   r   r   r   r   r    r!   r"   torch.fx.immutable_collectionsr#   r$    torch.nn.utils._expanded_weightsr%   torch.utils._python_dispatchr&   r'   torch.utils._sympy.value_rangesr(   torch.utils.weakr)   r  r+   r,   r-   r.   r/   r  r0   excr1   r2   r3   rR  r4   r5   r6   pgor7   r8   r9   r:   r;   r<  r<   r   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rr  rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   r  rw   rx   ry   rz   r{   r|   constantr}   r~   ctx_managerr   r   r   r   r   r   r   dictsr   r   r   r   r   r   r  r   r   r   r   r   	functionsr   r   r   r   r   r   r   r   r   r   r   r   r   ry  r   iterr   rv  r   listsr   r   r   r   r   r   r   r   r   miscr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	nn_moduler   r   r   	optimizerr   script_objectr   r  r   r}  r   r   r   r   r   r   r   r   r   r   torch_functionr   r   r   user_definedr   r   r   r   r   r   r   r   r   r   r   numpyr|  ModuleNotFoundErrortorch._dynamo.codegenr   torch._dynamo.symbolic_convertr   	getLoggerr   r  _logginggetArtifactLoggerr  ra  DimListr   r   	dataclassr   r  r#  varsr  r5  rk  r  r(  r6  r[  r  r  r  r  r  r8  r  r  r;  r:  r  r  r  r  r  re  r  r  r  r  r  r!  r  r  r  r  r	  r"  r2  r9  r$  r  rm  r  r   r   r   <module>r     s  &              	 
     * L L     ) < * R R A 1 ? A
 
 
 J ; 8 * T T ? V V A A  '      8                 B  5        ? # %
 
 
     0 
 ) 4 $       
      
 //DD g!NN44' 
 "	 	 99 99 99x<H <, &/ /Y--// & IcN  +.% s3x /
 "'!>!> $)HHOO$D$D !p  p fA (& 26$p >B
, 26=D >B0}
@"(J

 (, (3s8$ +.2 hsm 2SX (
3 
4 
'*/4||2 )- 8CH% ,/3 x} 3c#h (
C 
D 
  .3JJ^ IMbv&b37bJb bJ $5#G#G#I   V VAh  	Bs   1T 	T T 