
    ȅi^                       % S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJrJr  SSKJr  SSKJrJrJrJrJr  SSKrSSKrSSKJr  SSKJ r   SSK!J"r"J#r#  SS	K$J%r%J&r&J'r'J(r(  SS
K)J*r*  SSK+J,r,  SSK-J.r.  SSK/J0r0J1r1  SSK2J3r3J4r4J5r5  SSK6J7r7J8r8J9r9J:r:  SSK;J<r<J=r=  SSK>J?r?  SSK@JArA  SSKBJCrC  SSKDJErEJFrF  SSKGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrP  SSKQJRrRJSrS  SSKTJUrU  SSKVJWrW  SSKXJYrYJZrZ  SSK[J\r\  SSK]J^r^  SSK_J`r`JaraJbrbJcrcJdrd  SSKeJfrf  SSKgJhrhJiriJjrj  SS KkJlrlJmrmJnrn  SS!KoJprpJqrqJrrrJsrsJtrt  SS"KuJvrv  SS#KwJxrxJyryJzrzJ{r{J|r|J}r}J~r~JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SS$KJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S%S&KJrJrJrJrJrJr  S%S'KJr  S%S(KJrJr  S%S)KJrJrJrJrJr  S%S*KJrJrJrJrJrJrJrJr  S%S+KJrJrJrJrJr  S%S,KJrJrJrJrJrJrJrJrJrJrJrJr  S%S-KJrJr  S%S.KJr  S%S/KJr  S%S0KJrJrJrJrJrJrJrJrJr  S%S1KJrJrJrJrJrJrJrJrJrJrGJ Gr GJGrGJGrGJGrGJGrGJGrGJGrGJGrGJGrGJ	Gr	GJ
Gr
GJGrGJGr  S%S2GKGJGrGJGrGJGr  S%S3GKGJGr  S%S4GKGJGrGJGr  S%S5GKGJGr  S%S6GKGJGrGJGrGJGr  S%S7GKGJGrGJGrGJGrGJ Gr GJ!Gr!GJ"Gr"  S%S8KGJ#Gr#GJ$Gr$GJ%Gr%GJ&Gr&  S%S9GK'GJ(Gr(GJ)Gr)GJ*Gr*  S%S:GK+GJ,Gr,GJ-Gr-GJ.Gr.GJ/Gr/GJ0Gr0GJ1Gr1GJ2Gr2GJ3Gr3GJ4Gr4GJ5Gr5GJ6Gr6GJ7Gr7   SSGK8Gr9\(       a  SS<GK<GJ=Gr=  SS=GK>GJ?Gr?GJ@Gr@  \
GR                  " G\B5      GrC\GR                  GR                  G\BS>5      GrFSS?KGJGGrG  G\G" S@5      GrHG\G" SA5      GrIG\JGrKSBG\LSCG\M4SD jGrN " SE SF5      GrO\GR                   " SG SH5      5       GrQ " SI SJG\Q5      GrRG\S" SK G\T" \	5      GR                  5        5       5      GrVG\SG\W   G\;SL'   G\X" 5       GrYG\XG\W   G\;SM'   \GR                  GR                  GR                  Gr]\GR                  GR                  GR                  Gr_ " SN SO5      Gr`SP\SC\4SQ jGraSR\SS\8S-  SC\4ST jGrb  SSUSVSW\SX\S-  SYG\cS-  SZ\SC\4S[ jjGrdSUSVSW\SX\SCS4S\ jGre  SS]G\cG\H   SUSVSW\SX\S-  SYG\cS-  SZ\SCG\H4S^ jjGrf SS]G\cG\H   SUSVSW\GR                  GR                  S_\GR                  SYG\cS-  SZ\SCG\H4S` jjGrj  SS]G\cG\H   SUSVSW\GR                  GR                  SX\S-  SYG\cS-  SZ\SCG\H4Sa jjGrkSX\SUSVSW\GR                  GR                  SZG\lG\m\4   SYG\cS-  S]G\cG\H   SC\4Sb jGrnSRG\ISCG\cG\I   S-  4Sc jGroS]\SUSVSX\SYG\cS-  SCG\lG\m\4   4
Sd jGrpS]G\cG\H   SUSVSW\GR                  GR                  SX\SYG\cS-  SZG\lG\m\4   SCG\H4Se jGrqSC\J4Sf jGrrSGqsG\XG\m   S-  G\;Sg'   SGqtG\WS-  G\;Sh'   SCG\XG\m   4Si jGruSjG\mSCG\M4Sk jGrvSUSVSlG\mSm\GR                  SC\r4Sn jGrwSGqxG\XG\m   S-  G\;So'   SGqyG\WS-  G\;Sp'   SCG\XG\m   4Sq jGrzSjG\mSCG\M4Sr jGr{ SSm\SUSVSs\StG\MSuG\MSC\N4Sv jjGr|SSw.Sm\SUSVSs\S-  SxG\MSy\S-  SC\4Sz jjGr} " S{ S|5      Gr~G\~GR                  5       G\~Gl         " S} S~5      Grg! G\: a    SGr9\G\;S;'    GNf = f)aq  
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)CallableMutableMapping)
ModuleType)Any
NamedTupleNoReturnTYPE_CHECKINGUnion)SymInt)enable_python_dispatcher)get_external_object_by_indexregister_user_object)get_metrics_contextis_int_specialization_caseis_torch_symset_feature_use)TracingContext)
flat_apply)call_torchbind)is_opaque_typeis_opaque_value_type)HigherOrderOperator
OpOverloadOpOverloadPacket)
FakeTensorFakeTensorModeis_fakemaybe_get_fake_mode)is_sparse_any	safe_grad)justknobs_check)BackwardState)normalize_source_name)_DynamicScalar
DynamicInt)	_constrain_range_for_size_nested_int_aware_sort
DimDynamicRelaxedUnspecConstraintStatefulSymbolicContextSubclassSymbolicContextSymbolicContextSymIntSymbolicContextTrackedFake)immutable_dictimmutable_list)ExpandedWeight)
OrderedSet)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)GuardBuilderinstall_guardmake_dupe_guard)auto_dynamic
auto_unsetFrameStateSizeEntryInferStrideprocess_automatic_dynamic)SideEffects)AttrProxySource
AttrSourceCallMethodItemSourceChainedSourceConstDictKeySourceConvertIntSourceDictGetItemSourceDictSubclassGetItemSourceDynamicScalarSourceFloatTensorSourceGetItemSource
GradSourceis_constant_sourceis_from_closure_sourceis_from_global_sourceis_from_nonlocal_sourceis_from_optimizer_source&is_from_unspecialized_nn_module_sourceListGetItemSourceLocalSourceNonSerializableSetGetItemSource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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)BuiltinVariable)ConstantVariableEnumVariable)AutocastModeVariableDynamoConfigPatchVariableErrorOnGraphBreakVariableNullContextVariablePreserveVersionContextVariable)ConstDictVariableDefaultDictVariableDictKeySetVariableFrozensetVariableMappingProxyVariableOrderedSetClassVariableOrderedSetVariableSetVariable)DeviceMeshVariablePlacementClassVariablePlacementVariableProcessGroupVariableWorldMetaClassVariable)BuiltinMethodVariableCollectionsNamedTupleFunction!CollectiveFunctionRewriteVariable'CreateTMADescriptorExperimentalVariable!CreateTMADescriptorStableVariableFunctoolsPartialVariableFunctoolsWrapsVariableSysFunctionVariableTritonKernelVariableUserFunctionVariableUserMethodVariableWrapperUserFunctionVariable)"LocalMapWrappedHigherOrderVariable TorchHigherOrderOperatorVariable)ItertoolsVariable)LazyVariableTracker)	BaseListVariableListIteratorVariableListVariableNamedTupleVariableRangeVariableSizeVariableSliceVariableTupleIteratorVariableTupleVariable)AutogradEngineVariableAutogradFunctionContextVariableAutogradFunctionVariableComptimeVariableConstantLikeVariableDebuggingVariableDelayGraphBreakVariableGetAttrVariableGetSetDescriptorVariableIgnoredFunctionVariableLambdaVariableLoggingLoggerVariableMethodWrapperVariableNumpyDTypeVariableNumpyVariableObjectVariablePythonModuleVariableRandomClassVariableRandomVariableSavedTensorBoxTorchVersionVariableTypingVariableWeakRefVariable)FSDPManagedNNModuleVariable$UnspecializedBuiltinNNModuleVariableUnspecializedNNModuleVariable)OptimizerVariable)OpaqueObjectClassVariableTorchScriptObjectVariableSDPAParamsVariable)EventVariableStreamContextVariableStreamVariable)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UserDefinedSetVariableUserDefinedTupleVariablenp)	PyCodegen)InstructionTranslatorInstructionTranslatorBasecudagraph_static_inputs)TypeVarVTTypeAliasTtreturnc                     [         R                  R                  [         R                  R                  R                  5         [        U S5      sS S S 5        $ ! , (       d  f       g = f)Ngrad)torch_logginghide_warnings	_internalsafe_grad_filterhasattr)r   s    Y/home/james-whalen/.local/lib/python3.13/site-packages/torch/_dynamo/variables/builder.pysafe_has_gradr
  M  s;    		%	%enn&>&>&O&O	Pq&! 
Q	P	Ps   A
A&c                       \ rS rSrSrg)_missingiR   N__name__
__module____qualname____firstlineno____static_attributes__r      r	  r  r  R  s    r  r  c                   n   \ rS rSr% \S-  \S'   \\S'   \\S'   \R                  R                  R                  S-  \S'   Sr\\S'   Sr\R                  \R                  -  S-  \S	'   S
\S\SS4S jr\S\R                  \R                  -  \-  S-  4S j5       rSS jrSS jrSS jrS\S\4S jrSrg)GraphArgiV  Nsource_examplepass_arg_as_tensorfake_tensorT	is_tensorexample_strong_refnamevaluer   c                 0    [         R                  XU5        g N)object__setattr__)selfr  r  s      r	  r"  GraphArg.__setattr__z  s    
 	4u-r  c                     [        U R                  [        5      (       a  U R                  5       nUc   eU$ U R                  $ r   )
isinstancer  r6   )r#  rs     r	  exampleGraphArg.example  s7    dmm]33A= =H== r  c                     [        U R                  [        R                  5      (       a7  [	        U R                  5      U l        [        U R                  5      (       d   eg g r   )r&  r  r  Tensorr6   r   r  r#  s    r	  __post_init__GraphArg.__post_init__  sC    dmmU\\22)$--8DM4++,,,, 3r  c                 (    U" U R                   5        g r   r  r#  codegens     r	  reconstructGraphArg.reconstruct  s    r  c                      S U l         S U l        g r   r  r  r,  s    r	  eraseGraphArg.erase  s    "&r  otherc                     [        U[        5      (       d  gU R                  c  UR                  S L $ UR                  c  gU R                  R                  UR                  R                  :H  $ )NF)r&  r  r  r  )r#  r9  s     r	  __eq__GraphArg.__eq__  sW    %**;;<<4''||#;;##u||'8'888r  r6  r   Nr2  r   r   N)r  r  r  r  rb   __annotations__r   boolr  _subclassesr  r   r  r  r+  r   strr"  propertyr"   r(  r-  r3  r7  r!  r;  r  r  r  r	  r  r  V  s    TM M" ""..99D@@ It >Bu||3d:A. .C .D . !4}DtK ! !-
'9F 9t 9r  r  c                   6   ^  \ rS rSrSU 4S jjrSS jrSrU =r$ )BackwardStateGraphArgi  c                 8   > [         TU ]  S [        5       SS SS9  g )NF)r  r  r  r  r  )super__init__r"   )r#  	__class__s    r	  rH  BackwardStateGraphArg.__init__  s&    "_$ 	 	
r  c                    ^ TR                   R                  R                  (       d   eTR                  U4S j5        TR	                  SS5        TR                  5         TR                  TR                   R                  R                  5        g )Nc                  D   > T R                  [        R                  S5      $ )Nr"   )load_import_fromr"   r  )r2  s   r	  <lambda>3BackwardStateGraphArg.reconstruct.<locals>.<lambda>  s    G,,]-E-EWr  r   F)txoutputbackward_state_varadd_push_nullcall_functiondup_topstorer1  s    `r	  r3  !BackwardStateGraphArg.reconstruct  se    zz  3333W	
 	a'gjj''::;r  r  r=  r>  )r  r  r  r  rH  r3  r  __classcell__rI  s   @r	  rE  rE    s    
< <r  rE  c              #      #    U  HG  u  pUR                  S 5      (       a  M  [        R                  " U5      (       d  M:  [        U5      v   MI     g7f)_N)
startswithinspectisclassid).0r  members      r	  	<genexpr>rb    s>      //??3 $+OOF$; BvJJ/s   AAAITERTOOLS_TYPE_IDSITERTOOLS_POLYFILLED_TYPE_IDSc            
         ^  \ rS rSrSrSSS\SS4U 4S jjrS	\S\4S
 jr	S\S\
4S jrS\4S jrS\S\4   S\\\4   S-  4S jr\S\\\S\4   4   4S j5       r\\R*                  S\
S\\\S\4   4   4S j5       5       rS	\R0                  \   S\4S jrS	\R8                  \   S\4S jrS	\R@                  RB                  RD                  S\#4S jr$S	\S\%4S jr&S	\S\4S jr'\\R*                  S\\(\S \/\4   4   4S j5       5       r)S	\S\4S jr*S	\S\4S jr+S	\,\-\S4   \.\   \/\04   S\4S jr1S	\2S\4S jr3S	\4S\4S jr5S	\6\7-  S\8\9-  4S jr:S	\Rv                  S \
SS4S! jr<S	\Rz                  R|                  S\4S" jr?S	\S\4S# jr@S	\Rv                  SS4S$ jrAS	\Rv                  S\4S% jrBS	\S\4S& jrC  S-S	\(S'\DS-  S(\ES-  S\4S) jjrFS	\GS\4S* jrHS	\S\4S+ jrIS,rJU =rK$ ).VariableBuilderi  z3Wrap a python value in a VariableTracker() instancerP  r   r  r   Nc                    > Uc   S5       e[         R                  " 5       c   S5       e[        TU ]  5         Xl        X l        UR                  U l        g )NzRConsider SourcelessBuilder for ephemeral objects, usually objects created locally.zExpected active TracingContext)r   try_getrG  rH  rP  r  r  )r#  rP  r  rI  s      r	  rH  VariableBuilder.__init__  sX    
 ! 	
`	
! %%'3U5UU3KK	r  r  c                 F   XR                   R                  R                  ;   a  U R                   R                  R                  U   n[        U R                  UR                  5      nU(       a  U R                  U5        [        U[        R                  R                  5      (       a0  [        U[        5      (       a  UR                  U R                  5        U$ U R                   R                  R                  R                  XR                  5      nU(       a  U$ U R                  U5      nUR                  c  U R                  Ul        S[        S[         S["        4S jnU R%                  U5      (       d  U" X5      (       ab  XR                   R                  R                  ;  a?  ['        U5      (       d/  U R                   R                  R                  R)                  X5      nU R                   R                  R                  R+                  XR                  U5        U$ )Nr  vtr   c                 t    [        U 5      =(       d    [        U [        5      =(       a    [        U[        5      $ r   )r   r&  r$   r   )r  rk  s     r	  _is_deduplicable_sym_variable?VariableBuilder.__call__.<locals>._is_deduplicable_sym_variable  s,     U#Hz%'H2R12r  )rP  rQ  side_effectsrC   r  install_guardsr&  r  nnModuler   set_nn_module_stack_sourcevariable_tracker_cachelookup_wrapr   r   r@  _can_lift_attrs_to_inputsrz   track_object_existingadd)r#  r  side_effect_result	dup_guard	cached_vtrk  rm  s          r	  __call__VariableBuilder.__call__  s   GGNN///!%!<!<U!C'5G5N5NOI##I.%11j"$A7 7 #==dkkJ%%GGNN99@@T	ZZ99BI	2 	2/ 	2d 	2 ..r220;;WW^^8883E::,,BB5MB--11%bI	r  rk  c                 F    [        U5      [        [        [        [        1;   $ r   )typer   r   r   r   )r#  rk  s     r	  rw  )VariableBuilder._can_lift_attrs_to_inputs
  s$    Bx(% 	
 
 	
r  c                     U R                   $ r   r0  r,  s    r	  
get_sourceVariableBuilder.get_source  s    {{r  guards.c                     U R                  5       n U Vs/ s H  o2R                  U5      PM     nn[        USS06  0 $ s  snf ! [         a     g f = f)Nskipr   )r  
make_guardNotImplementedErrorrB   )r#  r  r  guardtmps        r	  rp  VariableBuilder.install_guards  s\    "	9?@$$U+C@ 	s##		 A" 		s   A ?A A 
AAc                 @    U R                  [        R                  5      $ r   )_type_dispatch_implr8   trace_numpy)clss    r	  _type_dispatchVariableBuilder._type_dispatch  s    &&v'9'9::r  r  c                 <   [         R                  [         R                  R                  [         R                  R
                  [         R                  R                  R                  4U R                  4[        [        [        [        R                  [         R                  4U R                  4[         U R"                  4[$        U R&                  4[(        [*        4U R,                  4[        [.        5      U R0                  4[2        R4                  U R6                  4[8        R:                  U R<                  4[         R>                  R@                  RB                  U RD                  4[         RF                  RH                  U RJ                  4[L        RN                  U RP                  4/nU(       a6  [R        (       a+  URU                  [R        RV                  U RX                  45        0 nU H1  u  pE[[        U[        5      (       a  UOU4 H  nXc;  d   eXSU'   M     M3     U$ r   ).r  r+  rq  	ParameterrA  r   functional_tensorFunctionalTensorwrap_tensortuplelistr}   collectionsdequeSizewrap_listliker   wrap_tuple_iteratorr   wrap_range_iteratorslicerangewrap_slice_rangerk   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_proxyr   appendndarraywrap_numpy_ndarrayr&  )r  r  entriesresulttsfnr   s          r	  r  #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 22NNBJJ(>(>?@FB%b%00Rre;&q	 < 
 r  c                 V    U R                  [        R                  5        [        U5      $ r   )rp  rA   ID_MATCHr   r#  r  s     r	  r  "VariableBuilder.wrap_regex_patternJ  s!    L112#E**r  c                     U R                  [        R                  5        [        R                  " U R
                  XR                  S9$ Nr0  )rp  rA   
TYPE_MATCHr   buildrP  r  r  s     r	  r  VariableBuilder.wrap_weakrefO  s1    L334$$TWWeKKHHr  c                     [        SSS/ S9  g )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)r@   r  s     r	  r  %VariableBuilder.wrap_removable_handleS  s     	Im	
r  c                 j    U R                  [        R                  5        [        USU R                  S9$ )N_torchdynamo_inliner0  )rp  rA   r  r   r  r  s     r	  r  !VariableBuilder.wrap_jit_functionb  s/    L334*(
 	
r  c           
        ^ ^ T R                  [        R                  5        T R                  [        R                  5        [	        S U 5       5      nU(       dL  [        SSUR                  5        Vs/ s H"  n[        R                  " U5      (       a  M   UPM$     sn 3SS/S9  S[        S[        S	[        [        [        4   4U 4S
 jjm[        U4S jUR                  5        5       5      n[        US S9n[!        UT R"                  S9nT R$                  R&                  R(                  R+                  X5      $ s  snf )Nc              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr   r   
is_literalr`  ks     r	  rb  5VariableBuilder.wrap_mapping_proxy.<locals>.<genexpr>m  s     F1(33A66   #%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  r  vr   c                    > [         R                  " U 5      nU n[        TR                  5       U5      n[        R                  " X5      nX%4$ r   )r   createrT   r  r   )r  r  key
source_keysource_value	res_valuer#  s         r	  build_key_value;VariableBuilder.wrap_mapping_proxy.<locals>.build_key_valuey  sE     #))!,CJ():JGL+221CI>!r  c              3   8   >#    U  H  u  pT" X5      v   M     g 7fr   r  )r`  r  r  r  s      r	  rb  r    s     E}tq_Q**}s   r0  )rp  rA   r  MAPPING_KEYS_CHECKallr@   keysr   r  r   r  r   r   dictitemsr   r   r  rP  rQ  ro  track_mutable)r#  r  	all_constr  r  dict_vtr  r  s   `      @r	  r  "VariableBuilder.wrap_mapping_proxyh  s   L334 	L;;<FFF	8*uzz|+j|!K[KfKfghKiA|+j*klO\			"		"		"?$778		" Eu{{}EE $E$7%gdkkBww~~**88GG1 ,ks   3D=D=c                     SSK J n  US 4[        R                  S 4[        R                  S 4/n0 nU H@  u  pE[        U[        [        45      (       a  UOU4 H  nXc;  d   eXS[        U5      '   M     MB     U$ )Nr7   )comptimec                     [        5       $ r   )r   r  s     r	  rN  .VariableBuilder._id_dispatch.<locals>.<lambda>  s    +;+=r  c                 t    [        [        4SU R                  0U R                  [        R
                  5      D6$ )Nr  )r   _dataclasses_fields_lambdar  rp  rA   CLOSURE_MATCHr  s     r	  rN  r    s3    N.%;;% )),*D*DE%r  c                     [        5       $ r   )r   r  s     r	  rN  r    s    4H4Jr  )	r  dataclassesfieldsr  __version__r&  r  r  r_  )r  r  r  r  r  r  r   s          r	  _id_dispatchVariableBuilder._id_dispatch  s    
 	( =>""  JK
 FB%b5$-88RreC& "r!u D 
 r  c                 bp  ^ ^^@^A SSK JnJnJn  SSKJnJn  U" 5       (       a  SSKJn  SSK	J
n  O " S S5      n " S	 S
5      nSjS jn	SjS jn
 " S S5      nU" 5       (       a  SSKJn	Jn
  U" 5       (       a  SSKJn  T R!                  5       R#                  [%        T5      5      nUb	  U" T T5      $ T R'                  5       R#                  [)        T5      5      nUb	  U" T T5      $ [+        T[,        R.                  5      (       a  [%        T5      [,        R0                  R2                  R4                  [,        R0                  R2                  R6                  [8        4;  an  [%        T5      [:        R<                  ;  aQ  [%        T5      R>                  [,        R.                  R>                  L d  [A        T5      (       a  T RC                  T5      $ [E        T5      (       a  T RG                  [H        RJ                  5        [M        [%        T5      5       Vs/ s H6  n[N        RP                  " [S        TU5      [U        T RV                  U5      S9PM8     nn[Y        U[%        T5      T RV                  S9nT RZ                  R\                  R^                  Ra                  TU5      $ [c        T[d        [f        Rh                  [f        Rj                  45      (       Ga  T RG                  [H        Rl                  5        [o        S T 5       5      m@T@(       d9  T RZ                  R\                  Rp                  Rs                  T RV                  5        S[t        S[t        S[t        S[v        [N        [N        4   4U@U 4S jjmA[e        UA4S j[y        [{        T5      5       5       5      n[c        T[f        Rh                  5      (       aZ  [U        T RV                  S5      n[}        U[%        T5      [        T RZ                  U5      " TR                  5      T RV                  S9nO[        U[%        T5      T RV                  S9nT RZ                  R\                  R^                  R                  TU5      $ [+        T[,        R0                  R                  5      (       a  T R                  T5      $ [        R                  " T5      (       a  T R                  T5      $ [+        T[,        R                  R                  5      (       aF  [        TT RV                  S9nT RZ                  R\                  R^                  Ra                  TU5        U$ [c        T[        [        45      (       Ga  [        S T 5       5      (       a  [        SSS S!/[        R                  QS"9  T RG                  [H        Rl                  5        T RG                  [H        RJ                  5        [        n[c        T[        5      (       as  [U        T RV                  S#5      n[        UR                  [H        R                  5      5        T RZ                  R\                  Rp                  Rs                  U5        [        n[        T5      n[y        U5       VVs/ s H/  u  nn[N        RP                  " U[        T RV                  U5      S9PM1     nnnU" UT RV                  S9nT RZ                  R\                  R^                  Ra                  TU5      $ [c        T[        5      (       az  [o        S$ T 5       5      (       ac  T Vs/ s H#  n[        RQ                  T RZ                  U5      PM%     nnT RG                  [H        R                  5        [        UT RV                  S9$ [+        T[        R                  [,        R                  [,        R                  R                  R                  45      (       a3  T RG                  [H        R                  5        [        TT RV                  S%9$ [        R                  " T5      (       a3  T RG                  [H        R                  5        [        TT RV                  S9$ [        T5      (       ao  [        U4S& j[,        R                  R:                  R                   5       5      (       a3  T RG                  [H        R                  5        [        TT RV                  S9$ [+        T[        R                  5      (       a3  T RG                  [H        Rl                  5        [        TT RV                  S9$ [        T5      (       a  [        T RV                  S9$ [        T5      (       a  [        T RV                  S9$ [        R                  " T5      (       a  [        R                  " T RV                  S9$ [+        T[        R                  5      (       Ga  [U        T R                  5       S'5      n[        T RZ                  U5      " TR                  5      n/ n[U        T R                  5       S(5      n[y        TR                  5       H;  u  nnUR                  [        T RZ                  [        UU5      5      " U5      5        M=     0 n[U        T R                  5       S)5      nTR                  R                  5        Hi  u  n n[        R                  " U 5      (       d  [        S*S+U  3S,/ [        R                  QS"9  [        T RZ                  [        UU 5      5      " U5      UU '   Mk     [        T R                  5       R                  [H        Rl                  5      UR                  [H        R                  5      UR                  [H        RJ                  5      5        [S        TS-S 5      n!G[        UUUU!S.9$ G[        T5      (       a4  T RG                  [H        R                  5        G[        TT RV                  S9$ G[        bI  [+        TG[        GR                  5      (       a(  T GR                  G[        GR                  " T5      5      $ G[        GR                  " T5      (       Gau  G[        (       d   e[c        TG[        GR                  5      (       af  G[        GR                  " TGR                  5      (       a=  [        [U        T RV                  S/5      R                  [H        GR                  5      5        OG[        GR                  " T5      (       a!  T RG                  [H        GR                   5        OG[        GR                  " T5      (       a!  T RG                  [H        GR                  5        OO[        T5      (       a   T RG                  [H        R                  5        OT RG                  [H        Rl                  5        G[#        TT RV                  S9$ G[        GR$                  " T5      (       a4  T RG                  [H        R                  5        G['        TT RV                  S9$ G[        GR(                  " T5      (       a  [+        TG[        GR*                  5      (       a^  T RG                  [H        Rl                  5        [U        T RV                  S05      n"[        U"R                  [H        R                  5      5        OT RG                  [H        R                  5        G[-        TT RV                  S9$ G[.        GR0                  " T5      (       aK  T RG                  [H        GR                  5        G[.        RP                  " T RZ                  TT RV                  S9$ [c        T[,        GR2                  GR4                  GR6                  5      (       a5  T RG                  [H        GR                   5        G[9        TT RV                  S9$ [+        T[,        GR2                  GR4                  GR:                  5      (       Ga5  S n# TGR<                  n#/ n$T RV                  R                  [H        Rl                  5      /n%[+        U#[v        5      (       a  [U        T RV                  S15      n&U%R                  U&R                  [H        RJ                  5      5        [y        U#5       H;  u  nnU$R                  [        T RZ                  [        U&U5      5      " U5      5        M=     [        U%6   T RZ                  R\                  R^                  Ra                  TG[A        TT RV                  G[C        U$5      S295      $ [+        TG[        GR                  5      (       a  [c        [S        TS3S 5      [,        GR2                  GR4                  GR6                  5      (       a  [S        TS4S55      S6:X  a  T[S        TGRD                  S6S 5      :X  at  [        [U        T R                  5       S/5      R                  [H        GR                  5      5        G[G        G[9        TGRD                  [U        T RV                  S3S79S9S65      $ [+        T[,        R                  GRH                  5      (       a4  T RG                  [H        R                  5        G[K        TT RV                  S9$ T[,        R                  GRL                  GRN                  GRP                  L a0  T RG                  [H        GR                  5        G[S        U 4S8 j5      $ [+        TU5      (       a  G[U        TGRV                  5      $ [+        TU5      (       a  G[Y        TGRZ                  5      $ [        T5      (       a  G[        GR\                  " T5      bi  G[        GR^                  " T5      (       a  S9T RZ                  R\                  l        G[        GR\                  " T5      GRc                  TT RV                  S9$ G[        (       a3  [+        TG[        GRd                  5      (       a  T GRg                  T5      $ [+        TG[h        5      (       ak  T[,        GRj                  GRl                  L a  [        S:S5S;/ S"9  T RG                  [H        Rl                  5        G[n        GRp                  " TT RV                  S9$ [+        T[,        GRr                  GRt                  5      (       a~  T RG                  [H        R                  5        [U        T RV                  S<5      n'[        T RZ                  U'5      " TGRv                  5      n(G[x        RP                  " T RZ                  U(5      $ [+        T[,        GRz                  5      (       a  T RG                  [H        Rl                  5        G[}        TT RV                  5      n)T RZ                  R\                  GR                  S=G[        U)40 5      n*G[        U*GR                  T5        G[        U*TT RV                  U)S>9nT RZ                  R\                  R^                  Ra                  TU5      $ [+        T[,        R                  GR                  5      (       aL  T RG                  [H        Rl                  5        G[        RP                  " T RZ                  TT RV                  5      $ [+        T[,        R                  GR                  GR                  5      (       a+  T RG                  [H        R                  5        G[        T5      $ [+        T[,        GR                  5      (       a  T RG                  [H        Rl                  5        G[}        TT RV                  5      n)T RZ                  R\                  GR                  S=G[        U)40 5      n+G[        U+GR                  T5        G[        U+TU)T RV                  S9$ [c        TG[        GR                  5      (       aN  G[        GR                  " TS?S 5      c3  T RG                  [H        Rl                  5        G[        T RV                  S9$ G[        GR                  " T5      (       ad  T RG                  [H        Rl                  5        G[        TT RV                  S9nT RZ                  R\                  R^                  Ra                  TU5      $ [+        T[,        GR                  GR                  5      (       aO  T RG                  [H        R                  5        G[        T RV                  5      T l+        G[        TT RV                  S9$ [+        T[,        GR                  5      (       a,  T RG                  [H        GR                  5        G[        T5      $ G[        GR                  " T5      (       a  G[        TT RV                  S9$ G[        GR                  " T5      (       a4  T RG                  [H        R                  5        G[        TT RV                  S9$ G[        GR                  " T5      (       a4  T RG                  [H        R                  5        G[        TT RV                  S9$ G[        GR                  " T5      (       a4  T RG                  [H        R                  5        G[        TT RV                  S9$ G[        GR                  " T5      (       a4  T RG                  [H        R                  5        G[        TT RV                  S9$ T[        L a*  T RG                  [H        R                  5        G[        5       $ [)        T5      G[        ;   aI  [)        T5      G[        ;  a5  T RG                  [H        GR                   5        G[        TT RV                  S9$ [+        TG[        5      (       GaJ  [+        TG[        5      n,G[        T RV                  U,5      n-[)        T5      T RZ                  R\                  GR                  GR                  ;   a9  T RZ                  R\                  GR                  GR                  [)        T5         n.OT RZ                  R\                  GR                  GR                  TGR                  U-G[        GR                  S@9n/T RZ                  R\                  GR                  GR                  U/TGR                  U-SA9n.T RZ                  R\                  GR                  GR                  G[        GR                  " SBSCT GR                  5      [%        U.5      U.U-S9n0G[        U-U.SDS SDU.SE9U0GR                  GR                  SF'   U.GR                  GR                  n1[+        U1G[        GR                  5      (       d
   U1 SG35       eT RZ                  R\                  GR                  R                  G[        U.U-S 5      5        G[        RP                  " T RZ                  U0U.5      $ G[        T5      (       Gar  [+        T[,        GR                  5      (       a  T RV                  OG[        T RV                  5      n-S n2TGR                  GR                  5       (       ab  T RZ                  R\                  GR                  GR                  G[        TGR                  GR                  5      U-G[        GR                  SH9n2Om[+        T[,        GR                  5      (       a1  T RZ                  R\                  GR                  GR                  5       n2O[        SIS5SJ/ [        R                  QS"9  U2c   eT RZ                  R\                  GR                  GR                  G[        GR                  " SBSCT GR                  5      [%        U25      U2U-S9n0G[        U-U2SDS SDU2SE9U0GR                  GR                  SF'   U2GR                  GR                  n1[+        U1G[        GR                  5      (       d
   U1 SG35       eT RZ                  R\                  GR                  R                  G[        U2U-S 5      5        [+        T[,        GR                  5      (       a  U2OU2SK:H  n3G[        U0U35      $ [+        TX45      (       a6  T RG                  [H        R                  5        G[        TS S T RV                  S9$ TU	L a
  G[        SKSL9$ TU
L a
  G[        SSL9$ TUGR                  L a  G[        5       $ [+        T[,        GR                  GR                  GR                  5      (       ad  T RG                  [H        R                  5        G[        TGR                  TGR                  TGR                   TGR"                  /T RV                  SM9$ G[$        GR&                  " T5      (       a  G[        GR                  " T5      (       a!  T RG                  [H        GR                   5        O=G[        GR                  " T5      (       a   T RG                  [H        GR                  5        G[%        TT RV                  S9$ G[        GR                  " TSNSD5      (       a5  T RG                  [H        Rl                  5        G[)        TSOT RV                  S9$ G[+        T5      (       a5  T RG                  [H        Rl                  5        G[)        TSPT RV                  S9$ TG[,        GR.                  L d+  G[,        GR0                  SQ:  a*  TG[,        GR2                  L a  G[5        TT RV                  S9$ G[7        T5      (       aT  G[        GR                  " TSRSD5      (       a5  T RG                  [H        Rl                  5        G[)        TSRT RV                  S9$ T[        GR8                  L a4  T RG                  [H        R                  5        G[;        TT RV                  S9$ T[f        GR<                  L a4  T RG                  [H        R                  5        G[?        TT RV                  S9$ [+        TG[        GR@                  5      (       aQ  G[B        GRD                  " T5      (       a4  T RG                  [H        R                  5        G[C        TT RV                  S9$ G[G        T5      (       aw  TG[H        GRJ                  G[H        GRL                  4;   aO  T RG                  [H        R                  5        G[G        G[O        G[H        T RV                  S9TGRP                  5      $ G[7        T5      (       a^  G[S        T5      u  mn4U4b  [U        T RV                  U45      T l+        G[        GRT                  " T5      GRc                  TT RV                  S9$ TG[V        GRX                  L a3  T RG                  [H        R                  5        G[[        T RV                  S9$ [c        TG[V        GRX                  5      (       a  G[\        GR^                  " T5      (       af  T RG                  [H        Rl                  5        G[]        TT RV                  S9nT RZ                  R\                  R^                  R                  TU5        U$ [+        TG[        GR`                  G[b        GRd                  45      (       ag  T RG                  [H        GRf                  5        G[i        TT RV                  S9nT RZ                  R\                  R^                  Ra                  TU5        U$ [+        TG[        GR                  5      (       a  [+        TGRD                  [,        R0                  R                  [,        GRj                  GRl                  GRn                  45      (       a~  [        T RZ                  [U        T RV                  S35      S9" TGRD                  5      n5U5(       a  [+        U5G[p        5      (       d   SS5       eG[s        TGR                  U5T RV                  S9$ [+        TG[        GRt                  5      (       a  G[w        T5      $ [+        TG[        GRx                  5      (       a  G[{        T5      $ G[}        [%        T5      [$        5      (       aB  G[}        TG[~        5      (       a+  T RG                  [H        R                  5        G[        T5      $ G[}        [%        T5      [$        5      (       Ga  T[,        GRj                  GR                  GR                  [,        R0                  GR                  [,        R0                  GR                  4;   a1  G[        GRT                  " T5      GRc                  TT RV                  S9$ T[,        GR2                  GR                  L aB  T RG                  [H        GR                   5        G[        GR                  " T RZ                  5      $ G[}        T[,        R.                  5      (       a`  T[,        R.                  LaM  TR>                  [,        R.                  R>                  L a&  G[        T5      (       d  G[        TT RV                  S9$ G[        T RV                  5      (       d   T RG                  [H        GR                   5        G[        T5      (       a  G[        TT RV                  S9$ G[        TT RV                  S9$ G[        GR&                  " [%        T5      5      (       Gai  SSTK+GJOn6GJPn7  [,        GR                  GR                  GR                  T5      (       a  T RZ                  R\                  GR                  GR                  G[        GR                  " SBSCT GR                  5      [%        T5      TT RV                  S9n8G[        T RV                  TSDS SDT5      U8GR                  GR                  SF'   G[        RP                  " U8TT RV                  S9$ G[        [%        T5      5      (       a{  G[        [%        T5      5      (       aA  T RG                  [H        GR                  5        G[        RP                  " TTT RV                  S9$ T RG                  [H        Rl                  5        OG[        TSU5      (       d  T GR                  T5      $ [N        GR                  " [        T RZ                  U7" T RV                  5      5      " TGR                  5       GR                  5       5      5        [N        GR                  " [        T RZ                  U6" T RV                  5      5      " TGR                  5       5      5        [,        GR                  GR                  GR                  T RZ                  R\                  GR                  T5      n9T RZ                  R\                  GR                  GR                  G[        GR                  " SBSCT GR                  5      [%        T5      U9T RV                  S9n8G[        T RV                  TSDS SDU95      U8GR                  GR                  SF'   G[        RP                  " U8U9T RV                  S9$ [+        T[d        [f        Rj                  45      (       Ga  [%        T5      GR                  [d        GR                  L Gak  T RG                  [H        Rl                  5        T RG                  [H        RJ                  5        T RZ                  R\                  Rp                  Rs                  T RV                  5        S[t        S[t        S[t        S[v        [N        [N        4   4U 4SV jjmA[e        UA4SW j[y        [{        T5      5       5       5      n[        U[+        T[f        Rj                  5      (       a  [f        Rj                  O[d        G[        5       T RV                  SX9n:S9U:Gl`        G[        TU:T RV                  SY9nT RZ                  R\                  R^                  Ra                  TU5      $ [+        T[v        5      (       Ga  T RG                  [H        Rl                  5        T RG                  [H        RJ                  5        G[        [v        GR                  T5      5       Vs/ s HE  n[N        RP                  " [v        GR                  TU5      [        T R                  5       U5      S9PMG     nnG[        UT RV                  G[        5       SZ9n;G[        TU;T RV                  S[9nT RZ                  R\                  R^                  Ra                  TU5      $ [+        T[        5      (       Ga  T RG                  [H        Rl                  5        T RG                  [H        RJ                  5        G[        [        GR                  T5      5       Vs/ s HF  n[N        RP                  " [        GR                  TU5      G[        T R                  5       U5      S9PMH     nnG[        UT RV                  G[        5       SZ9n<G[        TU<T RV                  S\9nT RZ                  R\                  R^                  Ra                  TU5      $ [+        T[        [        45      (       Gag  T RG                  [H        Rl                  5        T RG                  [H        RJ                  5        [        [d        GR                  T5      5      nG[        [        GR                  U5      5       Vs/ s HE  n[N        RP                  " [        GR                  UU5      [        T R                  5       U5      S9PMG     nn[+        T[        5      (       a  [        n=O[+        T[        5      (       d   e[        n=U=" UT RV                  G[        5       SZ9n>G[        TU>T RV                  S]9nT RZ                  R\                  R^                  Ra                  TU5      $ G[}        [%        T5      G[        5      (       ad  T RG                  [H        Rl                  5        G[        TT RV                  S9nT RZ                  R\                  R^                  Ra                  TU5      $ G[        T5      (       az  T RG                  [H        Rl                  5        G[        RP                  " T RZ                  TT RV                  S9nT RZ                  R\                  R^                  Ra                  TU5      $ [+        TG[        5      (       a  [o        S^ T 5       5      (       a  T Vs/ s H#  n[        RQ                  T RZ                  U5      PM%     nn[        T R                  5       R                  [H        RJ                  5      T R                  5       R                  [H        R                  5      5        G[        UT RV                  S9$ [        S_S`T V s/ s H"  n [        R                  " U 5      (       a  M   U PM$     sn  3SaSb/S"9  g G[        GR                  " T5      (       Ga  SScGKsGJtn?  TGR                  b&  TGR                  R$                  U?GR                  :X  a  T GR                  TGR                  5      $ TGR                  R$                  U?GR                  :X  a{  G[        GR                  SdT RV                  GR                  G[        GR                  5        T GR                  TGR                  G[        GR                  G[        G[        SDSe9Sf9Sg9$ TGR                  R$                  U?GR                  :X  aj  G[        GR                  SdT RV                  GR                  G[        GR                  5        T GR                  TGR                  G[        GR                  Sh9$ G[?        SiTGR                   35      e[c        TG[        5      (       a4  T RG                  [H        Rl                  5        G[        TT RV                  S9$ T GR                  T5      $ s  snf s  snnf s  snf ! G[>         a     G(Nf = fs  snf s  snf s  snf s  snf s  sn f )kNr   )
has_triton has_triton_experimental_host_tma%has_triton_tensor_descriptor_host_tmar7   )DynamoConfigPatchProxy(ErrorOnGraphBreakDecoratorContextManager)	Autotuner)JITFunctionc                       \ rS rSrSrg)*VariableBuilder._wrap.<locals>.JITFunctioni  r  Nr  r  r  r	  r   r        r  r   c                       \ rS rSrSrg)(VariableBuilder._wrap.<locals>.Autotuneri  r  Nr  r  r  r	  r  r    r  r  r  r   c                      g r   r  r  r  r	  create_1d_tma_descriptor7VariableBuilder._wrap.<locals>.create_1d_tma_descriptor      r  c                      g r   r  r  r  r	  create_2d_tma_descriptor7VariableBuilder._wrap.<locals>.create_2d_tma_descriptor  r	  r  c                   (    \ rS rSr\SS j5       rSrg)/VariableBuilder._wrap.<locals>.TensorDescriptori  Nc                      g r   r  r  r  r	  from_tensor;VariableBuilder._wrap.<locals>.TensorDescriptor.from_tensor  s    r  r  r=  )r  r  r  r  staticmethodr  r  r  r  r	  TensorDescriptorr    s     r  r  )r  r  )r  r0  )	tuple_clsr  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr   r  r  s     r	  rb  (VariableBuilder._wrap.<locals>.<genexpr>  s     JEq,77::Er  ir  r  c                    > T	R                  5       nT(       a  [        R                  " U5      nUnO![        X05      n[        R                  " X5      n[        X55      n[        R                  " X&5      nXG4$ r   )r  r   r  rN   r   rP   )
r  r  r  baser  r  r  r  r  r#  s
           r	  r  .VariableBuilder._wrap.<locals>.build_key_value   se     (*11!4C!"J!3D!<J-44QCC0B/66qG	~%r  c              3   @   >#    U  H  u  nu  p#T" XU5      v   M     g 7fr   r  r`  r  r  r  r  s       r	  rb  r  3  (      !FIAv  a((!F   default_factory)r  r  )user_clsr  c              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   )r&  r  r+  r`  xs     r	  rb  r  S  s     >1:a..s   ')z$Attempted to wrap a set with tensorsz+Python set containing torch.Tensor elementszDynamo cannot trace sets of tensors. To get a stable ordering, Dynamo needs to convert the set into a list and the order might not be stable if the set contains tensors.z,Use a dictionary where the keys are tensors.r  _dictc              3     #    U  H  n[        U5      [        R                  L =(       a    UR                  S :H  =(       dD    U[        R
                  R                  R                  ;   =(       d    [        U[        [        45      v   M     g7f)r  N)r  r  BuiltinMethodTyper  r  r  _pytreeBUILTIN_TYPESr&  r   r   r"  s     r	  rb  r  |  ss      .
  aE333O8O > U[[((666> 1z+;<=> s   B	Br  r  c              3   ,   >#    U  H	  nTUL v   M     g 7fr   r  )r`  r  r  s     r	  rb  r    s      %
"OBERK"Os   funcargskeywordsz,functools.partial() with non-literal keywordznon-literal keyword: z3functools.partial() expects literal/string keywords
cache_hash)original_cache_hash__func__dtypesaved_tensors)r  r2  __self__r  r  apply)ra  c                    > [        [        R                  R                  R                  R
                  5      R                  T R                  T R                  R                  R                  R                  5       40 5      $ r   )r   r  _dynamoexternal_utilsFakeCompiledAutogradEngineexec_final_callbacksrT  rP  rQ  ro  get_ca_final_callbacks_varr,  s   r	  rN  '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streamrT  )r  user_object_indexenter_resultr  dynamic_dim)hintr  [^a-zA-Z0-9]+r[  F)r  r  grapharg is not a basic Symbol.)r@  z!Attempted to wrap unbacked SymIntz+Unbacked SymInt input is not supported yet.r   )rank)target_valuesr  __script_if_tracing_wrapper__original_fn__wrapped__)      r  z"Failed to produce a valid self obj)FlattenScriptObjectSourceScriptObjectQualifiedNameSource__obj_flatten__c                    > TR                  5       n[        X05      n[        R                  " X5      n[	        X45      n[        R                  " X&5      nXW4$ r   )r  rN   r   r  rQ   )	r  r  r  r  r  r  r  r  r#  s	           r	  r  r  L  sM     (/8
)00?8J/66qG	~%r  c              3   @   >#    U  H  u  nu  p#T" XU5      v   M     g 7fr   r  r  s       r	  rb  r  \  r  r  )r   mutation_typer  )r  r  )r  rQ  )tuple_vtr  )list_vtr  )set_vtr  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr   r  r  s     r	  rb  r    s     A5a#..q115r  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  rZ  zUndefined dynamism r=  (  torch.utils._tritonr  r  r  
decoratorsr  r  triton.runtime.autotunerr  triton.runtime.jitr   $triton.tools.experimental_descriptorr  r  triton.tools.tensor_descriptorr  r  getr  r  r_  r&  r  r+  rq  	parameterUninitializedBufferUninitializedParameterr1   r8   nontraceable_tensor_subclasses__torch_dispatch__r3   r  rv   rp  rA   SEQUENCE_LENGTHr|   r   r  getattrrK   r  r   rP  rQ  ro  rx  r{   r  r  defaultdictOrderedDictr  r  guard_on_key_orderry  r   r  	enumeratern   r   rf  r  r   r  rr  wrap_moduler   r  r  	overridesTorchFunctionModer   setr2   anyr@   r9   SUPPORTABLEr   rB   r  DICT_KEYS_MATCHr   r  r^   	frozensetSourcelessBuilderEQUALS_MATCHr   enumEnumDispatchKey_C
_functorchTransformTyper  r   r   is_reorderable_logging_functionBUILTIN_MATCHcallabler6  ignore_logging_functionsr   loggingLoggerr   ry   rh   rt   ri   r   should_wrap_in_hopr  	functoolspartialr  r+  r,  r  rT   r-  r  
USER_ERRORrP   r   rx   r   r   genericr  asarrayr<   is_numpyr  
MethodTyper]  
isfunctionr0  r  r^  CLASS_MATCHr   is_numpy_dtyper   is_numpy_type_infoiinfor   r   can_rewriteautogradfunctionFunctionMetar   FunctionCtxr2  RuntimeErrorr   r   r3  r   _ImperativeEnginer   r7  r8  _exec_final_callbacks_stubr   r   changesr   error_on_graph_breaklookup_callableis_callable_allowed!has_user_defined_allowed_in_graphcreate_with_sourcenumberwrap_unspecialized_primitiver   _higher_order_opsinvoke_subgraphr   makecudaStreamContextr<  r   Streamr   create_proxyr   r   noder   _SDPAParamsr   pyfunctorchFuncTorchInterpreterr   Eventr   
contextlibnullcontextgetattr_staticr   r   is_matching_objectoptim	Optimizerr`   r   DispatchKeySetDISPATCH_KEY_SET_MATCHr   r   is_group_member_typer   is_process_groupr   is_device_meshr   is_placement_typer   is_placementr   rc  rd  r   r$   r%   rR   root_tracerdynamic_scalar_nodes	shape_envcreate_unspecified_symbolrealr(   DYNAMICcreate_symintnodecreate_graph_inputr  subr  r  metaexprsympySymboltracked_fakesr.   r   r   r   rO   has_hint$create_unspecified_symint_and_symbolintrA  SymBoolcreate_unbacked_symintr   r   r  r   ampautocast_modeautocastr   device
fast_dtype_enabled_cache_enabledr   is_matching_clsr   ru   sysexc_infoversion_info	exceptionr   rs   wrapsr   
namedtupler   r&  r   is_supported_builtin_methodrr   floatfromhexhexr   r  r   ru  randomRandomr   r   is_supported_random_objr   r;   DummyModuleMODULE_MATCHr   r  r'  TreeSpecr   r   GetSetDescriptorTyper   MethodWrapperTyper   
issubclassBaseExceptionr   r  BackwardHookr  Buffer _unsafe_preserve_version_counterr   constructorr4   r   rW   r   r   r   r   rL  rM  _libraryfake_class_registrytracing_with_realr   CONSTANT_MATCHr  wrap_user_definedrealize_all_typequalified_namerN  maybe_to_fake_obj	fake_mode__new__r   should_reconstruct_allr   r  __len____getitem__r   r   r\   r   r   fromkeysr   r   r   rq   r   rl   r   r   torch.export.dynamic_shapesrV  rZ  STATICwrap_symintvallogdebugr-   r)   AUTOr!  r   )Br#  r  r  r  r  r  r  r  r   r  r  r  type_dispatchid_dispatchr  rQ  r  factory_sourcevarset_var_clsinternal_dict_sourceLr  r  r  func_srcfunc_objr,  args_sourceargr-  keywords_sourcer  r/  	dt_sourceactual_saved_tensorsr2  r  saved_tensors_sourcestream_source
stream_varindexstream_proxyevent_proxyis_intr  r  symsym_node_proxysym_expr
new_syminttracing_symint	attr_nameself_objrL  rM  proxyfake_script_objr  rR  rS  
set_vt_clsrT  rV  r  r  sB   ``                                                              @@r	  rv  VariableBuilder._wrap  so)   	
 	
	

 <<:6  			 	
 ,-- 122G ++-11$u+>$ u-- '')--bi8"tU++ uell++U ""66""99	 U6#H#HH U..%,,2Q2QQ077''.. < <= .d5k:
 ;D	 $**E4(%dkk48 ;   (u+{{	F 77>>..DDUFSSED+"9"9;;R;RSTT 7 78JEJJI " 1155dkkB&&&#&&*,??@& &&  !*+>u+E!F F
 e[4455!+DKK9J!K,K$3DGG^$L--%  ;; +!%[;; 77>>..<<UFKKuxx//##E**((//$$U++u@@AA+E$++FCGGNN''==eSIJEC,-->>>>BI>
 G*66  7 78 < <=%KeZ(('1$++w'G$(33L4P4PQ 11556JK0 UA
 &aL	 )DAq $**=dkk1M )	   !t{{;F77>>..DDUFSSE9%%# .
 .
 +
 +
" DII5a&--dggq95EI 9 9:$U4;;??DIIu00%((2E2E2S2ST
 
  5 56eDKK@@>>uEE  : :;$U4;;??e__ %
"'--"6"6"O"O%
 "
 "
  5 56*5EEw~~.. 7 78(t{{CC '',DKK@@&&1EE/BB5II5;;4;;OOy0011!$//"3V<H&tww9%**EHD$T__%6?K#EJJ/3#DGG];-JKCP 0
 H():JGO,,.1'22155! N"7s ;$Y= 1 < <=	 .GG.B / !,,\-D-DE**<+G+GH&&|'C'CD #*%t"D+$>Q  u 5 56!{{  ^
5"** = =**2::e+<==!!%((2I2eU--..%%enn55!"4;;
;FF(66
 ''##L$<$<=##E**##L$>$>?%##L$9$9:##L$;$;< t{{;;''.. 5 56%eDKK@@++E22%**##L$;$;<&t{{G<	i22<3H3HIJ##L$9$9:'dkkBB.::5AA : :;4;;{{ 
 E5>>22??@@ 8 89+{{  u~~66BBCC#' ',':':$ Mkk,,\-D-DEFF.66'1$++'O$(33L4P4PQ &&:;DAq!((' GG]3G%K < 6"77>>..DD/;;"0"?  ue..//z40%..2I2I2V2V  z2.'9$?? 4??,j9DD ..
 #(NN%dkk*E   uxx99:: 5 56)%DD}}++FFaab  : :;!  566,U]];;GHH,U-G-GHHe__!<!<U!C!O..u55CG@..u5HHdkk I   RJubii0044U;;233//???W l	  7 78388t{{SSuzz7788 5 56&t{{H=M(-@NJ(//DDu||,, 7 78(<E77>>66!=xL l//7 eDKK5C 77>>..DDUCPP 4 466 7 78%,,TWWeT[[IIu//;;PPQQ 5 56/66u{{++ 7 78(<E''..55,	K k..6 {{	  5*001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 56)$++6DK$U4;;??u3344 C CD)%00#88??)%DD!22599 5 56'dkkBB..u55 9 9:%eDKK@@#55e<< 5 56)%DD++E22 9 9:${{  j  5 56*,,uI++5	!>> 8 89$U4;;??~..z2F(f=F%yDGGNN66KKK ww~~11FFr%yQggnn..HHJJ! * 2 2 I 
 ww~~//AA! B  "WW^^77JJ'dii8T
	 K N 4<#'4N$$Z0 yy~~Hh55 *345 GGNN((//D&$0OP"))$''>4HH%   eU\\22 %dkk2 
 Jzz""$$GGNN,,QQEJJOO,$.$6$6 R   eU]]3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5 *345 GGNN((//JPT0UV )==
:QR?  #>>BB788 5 56'{{	  ..:BB..:BB&222466uyy66??@@ 5 56'LL$$NN((	 {{  *99%@@u%%##L$<$<=##E**##L$>$>?/dkkJJ##E+H%PP 7 78.t{{  +511 7 78.umDKKXXcll"'ES]],B&uT[[AA#E**w/E/E(%0
 0
  7 78.,T[[  ioo% 5 56)%DDk,,, 5 560t{{KK5**
 
#??FF 5 56(t{{CCEemmUYY-G$G 5 56"dkk:  $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M 9 9:){{F
 GGNN''==eVLMu//00ZNNUXX__ekk.A.A.J.JK6
 6
 '
4;;
 CnnH 
8_ E E 4E &{{ 
 u99:: ,E22u6677
 )//UT**z%/O/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A-eDKKHH)$++66 ##L$<$<=e$$0;; 
 ,{{  '66tE{CC  ~~11CCEJJ22EEFF+S$))<K;;	 F  /7KK/


+ 177;;  d5k**'U44''(C(CD4;;#{{  ''(?(?@U$566 --e44 $//#!@!M 446 $//#DGG-Ft{{-ST--/ $nn@@RR((%O GGNN..AA'dii8U{{	 B E +3+EJJOOJ' -33{{  ut[%<%<=>>U##t||3  7 78 < <= GGNN--11$++>
&
&
&#&
&*,??@
&   !*+>u+E!F F
 ( "%)@)@AA  ++35{{
G .2G*,UGDKKXF77>>..DDUFSSu%% 7 78 < <= u}}U34
 5A	 $**%%eQ/():A> 5   %{{35H
 .F 77>>..DDUFSSt$$ 7 78 < <= t||E23
 4A	 $**$$UA.,T__->B 4   #{{35G
 -UGDKKXF77>>..DDUFSSY/00 7 78 < <=T]]5)*A t||A/
 0A	 $**$$Q*:4??;LaP 0   %%%(
!%3333.
t{{:O:QF ,E&UF77>>..DDUFSSU^44 7 78+E$++FF77>>..DDUFSS '' 7 78,33DGGU4;;WF77>>..DDUFSSy))A5AAA HMMu!*11$''1=uMOO%001M1MNOO%001J1JK *%DD9.5/g5aHXHcHcdeHf5/g.hi P]	  2259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E6"" 7 78!%<<))%00y~2 Jt   b.&B N 0hs_   =C_6+6C_;*C`-C` AAC`E?AC`KAC`"S6*C`'V$C`,WC`,`C``C`c                    U R                  [        R                  5        [        XR                  S9n[
        R                  " [        U5      5      (       d  U$ U R                  R                  R                  R                  X5      $ r  )rp  rA   r  r   r  rI   "cls_supports_mutation_side_effectsr  rP  rQ  ro  rx  )r#  r  r  s      r	  r  !VariableBuilder.wrap_user_defined  s]    L334*5E==d5kJJMww~~**@@OOr  c                    U H  nX!L d  M	  [        SSSS/S9  M     [        R                  (       aO  [        U5      [        R
                  L a3  U R                  [        R                  5        [        R                  " US9$ U R                  [        R                  5        [        U[        5      (       a  [        S U 5       5      (       ax  U R                  R                   R#                  5       (       aO  U R                  [        R                  5        [%        U Vs/ s H  n[        R                  " U5      PM     sn5      $ ['        U5       VVs/ s H2  u  p2[(        R                  " U[+        U R-                  5       U5      S9PM4     nnnU R.                  R0                  R2                  R5                  S	5      n[7        U R                  [8        5      (       Ga  U R                  R:                  [=        U5      ;   Ga  U R                  n[7        U[>        5      (       d   eU R.                  R0                  R@                  RC                  [D        RF                  " S
SU RH                  5      [        U5      UUS9nSURJ                  RL                  S'   [O        [P        U R.                  UUS US9n/ n	['        URR                  5       H  u  p:[+        XcSS9nXR.                  R0                  RT                  U'   [W        X   5      U
RX                  RJ                  RL                  S'   [Z        R\                  " [        R^                  [a        X   5      S9nU	Rc                  URe                  U5      5        M     [g        U	SS06  [i        UUSS SS9nXRJ                  RL                  S'   U H  nURk                  5         M     [l        Rn                  " U5      " X@R                  S9n[        U[>        [p        Rr                  45      (       a/  U R.                  R0                  Rt                  Rw                  X5      $ U$ s  snf s  snnf )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  r  c              3   N   #    U  H  n[         R                  " U5      v   M     g 7fr   r  )r`  items     r	  rb  0VariableBuilder.wrap_listlike.<locals>.<genexpr>  s     H%$$//55%r  r0  r#  rB  r[  T	steal_arg)
target_clsrP  r  example_valuesubclass_typer  Fr  r  index_is_slicetensor_dictr  r   )r  r  r  rC  )<r@   r8   specialize_intr  r  r  rp  rA   r  r   r  rh  r{   r  r  r  guard_sourceis_unspecialized_nn_moduler   rm  r   rT   r  rP  rQ  local_scoperb  r&  r]   
local_namero   r  r  r  r  r  r  r  r  wrap_fx_proxy_clsr   r  input_source_to_varrg   r  r  r  TENSOR_MATCHr6   r  r  rB   r  realizer   cls_for_instancer  r  ro  r  )r#  r  r)  r  rQ  maybe_gmr  tensor_list_proxylist_variabler  tensor_variablesource_ir  rC  rk  r  s                   r	  r  VariableBuilder.wrap_listlike  s    D}K _>?	    T%[EJJ%> ; ;<#**77 	L889 5%  H%HHH((CCEE ; ;< E!RED"2"9"9$"?E!RSS %U+

 ,	  &&$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"(feT?N228<AUHB%%**//> ")) --]585L h11%89 'E 6**#( H 7?""''
3( 

  "2259&U%$ 1 123377>>..<<UKKy "S
s    P=9Qc           
         U R                  [        R                  5        [        [	        U5      5       Vs/ s H@  n[        U R                  [        U R                  5       U5      5      " [        X5      5      PMB     nn[        X0R                  S9nU R                  R                  R                  R                  X5      $ s  snf r  )rp  rA   TUPLE_ITERATOR_LENr  r   rf  rP  rd   r  r   r   r  rQ  ro  r  )r#  r  r  rQ  r  s        r	  r  #VariableBuilder.wrap_tuple_iteratorv  s    L;;<
 -e45	
 6 DGG%?@QST%UV&u0 6	 	 
 'vkkBww~~**88GG
s   ACc                 B   U R                  [        R                  5        [        R                  " U5       Vs/ s H  n[
        R                  " U5      PM     nn[        X0R                  S9nU R                  R                  R                  R                  X5      $ s  snf r  )rp  rA   RANGE_ITERATOR_MATCHcopydeepcopyr   r  r   r  rP  rQ  ro  r  )r#  r  r  r  r  s        r	  r  #VariableBuilder.wrap_range_iterator  sv    L==> 6:]]55IJ5I!((+5IJ%eKK@ww~~**88GG Ks    Bc           
      p   S Vs/ s H@  n[        U R                  [        U R                  5       U5      5      " [	        X5      5      PMB     nnU R                  [        R                  5        [        U[        5      (       a  [        X0R                  U R                  S9$ [        X0R                  S9$ s  snf )N)startstopstepr0  )rf  rP  rK   r  ri  rp  rA   r  r&  r  r   r  r   )r#  r  r  r  s       r	  r   VariableBuilder.wrap_slice_range  s    
 /	
 / DGGZ0A1%EF! /	 	 
 	L334eU## DD {{;;
s   AB3r  c                 r   SSK Jn  [        R                  SU R                  R
                  [        U5      5        U" XS9  XR                  R                  R                  ;   aT  U R                  R                  R                  U   nUR                  UR                  R                  R                  S   S'   g g )Nr7   )mark_static_addressz Marking static input %s, id: %s)r  r1  _dynamo_static_input_type)r]  rP  static_inputs_logr  r  r  r_  rP  rQ  ro  rR  r  r  r  )r#  r  r  rP  r  s        r	  mark_static_input!VariableBuilder.mark_static_input  s    4.0@0@"U)	
 	E/ GGNN///''..--e4C // IINN./JK 0r  c                 0   SSK Jn  [        UR                  5      S:X  a4  [	        S[        U5      S[        U5       S3/ [        R                  QSPS9  [        X5      (       a  [        R                  " UR                  S	S
5      (       a:  [        R                  " UR                  SS 5      n[        U R                  SU S3S9$ U R                  [        R                   5        [#        U R                  S5      U l        U R%                  UR&                  5      $ [)        U[*        R,                  R.                  [*        R,                  R0                  [*        R,                  R2                  45      (       a;  [4        R6                  (       d&  [	        S[9        U5      SS/[        R:                  QS9  [=        USS
5      (       a  [=        USS
5      (       d  [	        SSS/ S9  U R                  [        R                   5        [?        XRA                  5       S9n[B        RD                  " [G        U5      5      (       d  U$ U RH                  RJ                  RL                  RO                  X5      $ [P        RR                  " XRH                  RT                  5      (       Ga  [)        U[*        RV                  RX                  RZ                  R\                  5      (       a*  UR_                  5       n[a        U R                  5      U l        [*        Rb                  R4                  Rd                  (       a  [g        5       n[i        URj                  5      (       aF  URj                  Rl                  [n        L a)   URk                  5        H  u  pgU Rq                  XuS9  M     [i        URz                  5      (       aF  URz                  Rl                  [|        L a)   UR{                  5        H  u  piU Rq                  XS9  M     U(       a,  XRH                  RJ                  R~                  U R                  '   UR                  R                  S5      (       a   UR                  R                  S5      (       a  [=        UR                  SS
5      (       a  U R                  n
[4        Rd                  (       aO  U RH                  RJ                  RT                  (       a  [4        R                  (       a  [        U R                  5      n
[        XS9n[        U
R                  [        R                   5      5        OU R                  n
[4        Rd                  (       aO  U RH                  RJ                  RT                  (       a  [4        R                  (       a  [        U R                  5      n
[        XS9n[        U
R                  [        R                   5      5        U RH                  RJ                  R                  XR                  5        [B        RD                  " [G        U5      5      (       d  U$ U RH                  RJ                  RL                  RO                  X5      $ [        UR                  [*        R,                  R                  R                  R                  5      (       a6  U R                  [        R                   5        [        XRA                  5       S9$ U RH                  RJ                  R                  UU R                  U RA                  5       S9$ ! [r         a<  n[u        [G        U5      U RH                  [w        URx                  5      S9   S nAGNS nAff = f! [r         a<  n[u        [G        U5      U RH                  [w        URx                  5      S9   S nAGNS nAff = f)Nr7   )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.zhSet torch._dynamo.config.enable_rnn=True to enable experimental support for RNN, GRU, and LSTM in Dynamo_is_fsdp_managed_module_fsdp_use_orig_paramszFSDP with use_orig_params=Falser  z3Dynamo only supports FSDP with use_orig_params=Truer0  rQ  )r,  )ztorch.nn.modulesz	torch.ao.ztorch.nn.modules.container_dynamo_marked_static)Q
eval_framerW  len__dict__r@   r   r9   r  r{   r]  r  forwardr   r  rp  rA   r  rK   rn  r]  r&  r  rq  RNNGRULSTMr8   	allow_rnnrB  rs  ri  r   r  rI   r$  r  rP  rQ  ro  rx  r:   is_dynamic_nn_moduleexportfxexperimentalproxy_tensor
_AttrProxyget_baserJ   r6  inline_inbuilt_nn_modulesrw   r  named_parametersr0  !og_module_named_parameters_fn_ptrrT  	TypeErrorr?   r  r,  named_buffersog_module_named_buffers_fn_ptr
nn_modulesr  r  r\  rI  install_free_tensorsre   r   rB   r  rf   r    add_fqn_info_for_inlined_modulesr  paralleldistributedDistributedDataParallelregister_attr_or_module)r#  r  rW  r\  r  freezingr[  peb
new_sources              r	  rn  VariableBuilder.wrap_module  s~   0u~~!#1TU\]bUcTddef&11U	 %))%%emm5KUSS
 ,,MM#=t /;;bcfbgghi 
  7 78$T[[+>DK##EOO44 uuxx||UXX\\588==IJJ$$=E
H~&22	 53U;; 5"95AA= U	"  7 780?PQFAA$u+NN77>>..DDUSS00GG
 %!6!6!C!C!N!NOO(-dkk:}}##==02 U3344..7789V$)$:$:$<DA 2212E %= U0011++448VVV$)$7$7$9DA 2212E %:
  <AGGNN--dii8   ++,MNN((334PQQ*A5II![[
33--1L1L "DDKK!PJ=eWj33L4K4KLM![[
33--1L1L "=T[[!IJ6uPj33L4K4KLMGGNN;;E;;OAA$u+NN77>>..DDUSSOOUXX..::RR
 
  7 780?PQQ77>>99		( :  o % V0a$''QVVUUV % V0a$''QVVUUVs0   .(\ (] 
]1]]
^1^^c                    [        U5      [        L Ga   [        U R                  R                  5      (       aH  [
        R                  SU R                  R                  5        U R                  U[        R                  S9$ [        U R                  R                  5      (       aH  [
        R                  SU R                  R                  5        U R                  U[        R                  S9$ [        R                  (       Gd!  [        XR                  5      (       Ga  S nU R                  R                  R!                  5       (       d)  U R                  R                  R#                  5       (       a  Sn[%        U R&                  U R                  R                  [(        R*                  " U5      U R                  R                  R#                  5       S9  U R-                  [.        R0                  " [2        R4                  US95        [6        R8                  " XR                  S9$ U R                  U5      $ [        R:                  (       d#  [        U5      [<        L a  U R?                  U5      $ U R-                  [2        R@                  5        [6        R8                  " XR                  S9n[C        U[D        [F        45      (       a/  U R&                  RH                  RJ                  RM                  X5      $ U$ )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.r4  )recompile_hintr)  )'r  r  is_dynamic_sourcer  r  r   r  r  r(   r  is_unbacked_sourceUNBACKEDr8   r2  r   r3  "is_unspecialized_builtin_nn_moduler4  rH   rP  rF   make_scalarrp  r  r  rA   rw  r   r  specialize_floatr  wrap_symfloatr  r&  r  rq  rQ  ro  r  )r#  r  r  r  s       r	  r  VariableBuilder.wrap_literalM  s   ;# !1!122		BDKKDTDTU''
8J8J'KK!$++"2"233		CT[[EUEUV''
8K8K'LL((( .e[[AA%)N00SSUU;;33NNPP5 ' .((+77>37;;3K3K3f3f3h	 ''!))(55n
 ,22{{SS##E**((T%[E-A%%e,, ; ;<%,,5MF%$--ww~~22@@OOMr  c                     [        U5      (       a/  [        U5      U R                  R                  L a  [	        SS5      eg g )Nz*Cannot wrap a Tensor that has already beenz"wrapped by this instance of Dynamo)r   r   rP  r  r>   r  s     r	   assert_not_wrapped_by_this_graph0VariableBuilder.assert_not_wrapped_by_this_graph  s=    5>>1%8DGG<M<MM*<4  N>r  c           	      J   U R                  5       nXR                  R                  R                  ;  d   e[	        U5      S Ln[
        R                  (       ap  U(       di  [        U[        R                  R                  5      (       d&  U(       a9  UR                  R                  5       (       a  U R                  U[        5       S9  Sn[
        R                  =(       a/    [!        U5      =(       d    [#        U5      =(       d    [%        U5      nU=(       aQ    [
        R                  (       + =(       d5    [        5       =(       d$    [        R&                  R
                  R(                  nU(       dE  UR                  R+                  5       (       d  U(       a^  UR                  R-                  5       (       d?  U R/                  U5        U R                  R                  R1                  XR2                  US9$ [	        U5      S:X  a^  U R5                  [6        R8                  5        U R/                  U5        U R                  R                  R1                  XR2                  US9$ [;        U5      (       aV  U R/                  U5        U R                  R                  R1                  U[<        R>                  " SSU R2                  5      US9$ X R                  R                  R@                  ;   nU(       a#  U R                  R                  R@                  U   $ 0 n[C        U5      nUb  U R5                  [6        RD                  5        [	        U5      S:X  a  U R5                  [6        R8                  5        U R/                  U5        [        U[        RF                  5      (       aZ  URH                  (       aI  [        U[        RJ                  RL                  RN                  RP                  5      (       d  [S        SSS	/ S
9  [        U[        RF                  5      (       a\  [U        U5      (       aL  U R                  RV                  (       a  [
        RX                  (       d  [S        SSS/ [Z        R\                  QS
9  [_        U5      (       a  [a        U5      bt  URb                  [a        U5      Rb                  :w  aQ  [a        U5      n	U	b  [e        U	Rb                  5      OSn
[S        SSURb                   SU
 3S/ [Z        R\                  QS
9  [g        XR                  SUS9nU R                  R                  Rh                  Rk                  [<        R>                  " SSU R2                  5      [m        U5      UUS9n[o        U R                  X5        [q        S$U R                  UUUUS.UD6nURs                  5       (       a*  [g        URt                  U R                  [w        US5      SS9  [6        Rx                  n[        U[z        5      (       a   [}        U5      (       a  [6        R~                  n[        R                  R                  5       =(       a.    [        U[        R                  R                  R                  5      nU(       dD  U R5                  [        R                  " U[        U[        5      (       a  UO
[        U5      S95        [        U5      (       Ga  U(       Ga  U R5                  [6        RD                  5        UR                  5       S   S   nUS:w  a  [        S5      eUR                  5       S   n[        U5      S:X  a&  US   UR                  :X  a  US   UR                  :X  d  [        S5      e[        [w        U R                  S5      R                  [6        R                  5      5        [        [w        U R                  S5      R                  [6        R                  5      5        OoU R5                  [6        R                  5        U R5                  [6        RD                  5        [        [        U5      R                  [6        R                  5      5        UR                  5       u  nnU HU  n[        UU5      n[w        U R                  U5      n[        R                  " [        U R                  U5      " U5      5        MW     XR                  R                  R@                  U'   SUR                  R                  ;  d   e[        U5      UR                  R                  S'   UR                  R                  R                  S    n[        U5      U R                  R                  La  [        S!5      e[        X!S"U5      nUUR                  R                  S#'   U$ )%NrQ  Tr0  guardedrB  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 TensorsNonez.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.rP  r  r  )rP  r  r-  r.  r  _base)rP  r  r  r'  r   _local_tensorz7Expecting Dtensor inner tensor name to be _local_tensorr   r7   z;Expecting Dtensor flattening ctx to be _spec, requires_grad_specrequires_gradr1  r-  z(Wrapped Tensor must be this graph's fakeFrC  r  )ar  rP  rQ  ro  rp   r8   rp  r&  r  rq  r  r3  r4  rT  rw   rw  rX   rY   r[   r6  prepare_freezingis_specialized_nn_moduleis_fsdp_moduler  r|  r  rp  rA   r  rV   r  r  r8  infer_subclass_typer  r+  	is_nestednestedr  nested_tensorNestedTensorr@   r   rj  capture_sparse_computer9   rs  r
  r    r1  rB  wrap_to_fake_tensor_and_recordr  r  r  cache_real_value_when_exportwrap_fx_proxy_is_viewr  rK   r9  rU   rZ   NOT_NONE_MATCHrz  is_availabletensorDTensorr  r  r_   r6   r3   __tensor_flatten__r  rb  r  r  rB   r  r  DTENSOR_SPEC_MATCHrw  TENSOR_SUBCLASS_METADATA_MATCHrc   ri  r   r  rf  r  r  rg   r  r   r  r>   r  )r#  r  r  is_static_inputshould_install_free_tensormake_graph_attributeis_duplicate_tensoroptionsr.  safe_grad_valgrad_strr-  tensor_proxyr?  
guard_type
is_dtensorinner_tensor_nameflattening_ctxattrsr[  attrinner_valueinner_sourcefake_tensor_valuerC  s                            r	  r  VariableBuilder.wrap_tensor  s   " GGNN777771%8D ,,#5%(("4"455 v22MMOO ""50E0G"H"O &,%@%@ &
!&) >&v.>5f= 	#  /  
000 5$&5}}##44 	 &  99;;?S''668811%877>>99yy :   #5)Y6  5 5611%877>>99yy :   f%%11%877>>99'dii8 :   %(J(JJ77>>55f==+E2$ 7 78"5)Y6 5 56 	--e4 uell++uell&<&<&J&J&W&WXX@Q	 uell++e$$WW^^6+H+H
 9K6)556	 %  % ,y/555%e,M3@3Ls=../RXHH(^H:NL6)556" 7ggf
 ww~~11DDFF#S$))4K	 E 
 	%TWWlB' 
ww''
 
 >> +77!&'2	 "..
fj)).Fv.N.N%44J&&335 
*5$$++33;

  !! &f.?@@ *51	 )// ##L$;$;< %*$<$<$>q$A!$D!$7&Q 
 "'!9!9!;A!> '1,&q)U[[8&q)U-@-@@ 'U  t{{G4??$77 t{{O<GG$11 ##L$O$OP##L$;$;<*62==l>W>WX //1HE1%eT2)$++t<#//#DGG\:;G  6E**62L$5$5$:$::::0DU0K}- ,1166;;OL019J9JJ*+UVVF52CD-5z*r  c           
      8   [         c   e[        U[         R                  5      (       d   e[        U R	                  5       5      nSSKJn  UR                  R                  (       + nU(       a   SUR                  l        S n[        R                  " 5           UR                  U5      nU(       a  SSKJn  U" U5      nS S S 5        Uc   e[(        R*                  " [-        U R.                  U5      " U5      5        [1        UU R.                  SUS	9nU R.                  R2                  R4                  R7                  [8        R:                  " S
SU R<                  5      [?        U5      UUS9n	[A        U R.                  X5        SU0n
[C        S[D        U R.                  U	US S.U
D6nXR.                  R2                  RF                  U'   URH                  RJ                  RL                  S   n[O        UUSUSUS9nXRJ                  RL                  S'   U RP                  Ul(        U$ ! [         a/    [        UR                  [         R                  5      (       d   e GNf = f! ["         a!  n[%        S['        U5      S/ US9   S nAGNS nAff = f! , (       d  f       GN= f)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  rB  r[  r0  r  )r,  rP  r  r-  r.  r-  r  r  r  r  rC  r  ))r   r&  r  r_   r  torch._numpyr  flags	writeable
ValueErrorr  nditerr   temp_restore_stack_try_convert_to_tensortorch._prims_commonr  r  r@   rB  r   r  rf  rP  r  rQ  r  r  r  r  r  r  r  r7  r   r8  r  r  r  r  r  )r#  r  r  r  readonlytensor_valuer  r  r-  r  r  numpy_ndarray_variablerC  s                r	  r  "VariableBuilder.wrap_numpy_ndarray	  sV   ~~%,,,,"4??#45&{{,,,9(,%
 0CCE$;;EBJ#9,#GL F  ''' 	''(H(VW6ww	
 **==FF#S$))4	 > 
 	%TWWeBV$!2 "
+ww'"
 "
 6L**62.4499>>O #%+
 '/


# )-%%%O  9 "%**bii88889 ' GJ j  FEsB   -H  J
&I 5II
J&J<J
JJ


JrZ  r  c           	         [        U5      [        L d   eU R                  U R                  R                  R
                  ;   a-  U R                  R                  R
                  U R                     $ U R                  R                  R                  n[        R                  " 5       R                  (       a`  UR                  5       n[        U5        U R                  R                  R                  R                  [        XPR                  S 5      5        GO[!        U R#                  5       5      (       Gd  Ucf  [$        R&                  R(                  R*                  (       a=  U R-                  [.        R0                  5        [2        R4                  " XR                  S9$ U R                  R                  n[7        U R                  U[8        R:                  " U5      U R                  R<                  R?                  5       S9n[A        U R                  R                  5      nU R                  n	[C        U	[D        5      (       a  U	RG                  5       n	Ub  Un
GO[(        RH                  (       a*  URJ                  [L        L a  [O        SS5        [Q        5       n
O[C        U	[R        5      (       a<  U	RT                  b/  [W        U	RT                  5      R                  USS05      S   (       d  [(        RX                  (       d  [Z        R\                  n
ORURJ                  [L        L a  [O        SS5        U R-                  [.        R0                  5        [2        R4                  " US9$ UR_                  UU R                  U
S9nU R                  R                  R                  R                  [        XPR                  U5      5        O][!        U R#                  5       5      (       d   eU R-                  [.        R0                  5        [2        R4                  " XR                  S9$ [C        U R#                  5       [`        5      (       a   e[c        U R#                  5       Re                  [.        Rf                  5      5        S	U R#                  5       0nU R                  R                  Rh                  Rk                  [l        Rn                  " S
SU R                  5      [        U5      UU R#                  5       S9nURp                  Rr                  n[C        U[t        Rv                  5      (       d
   U S35       eXR                  R                  Rh                  Rx                  U'   [z        R4                  " U R                  X40 UD6nXR                  R                  R
                  U R                  '   [!        U R#                  5       5      (       d3  [}        U R#                  5       USS SUS9URp                  R~                  S'   U$ )Nr)  r  dynamo.automatic_dynamic_shapesTr   Fr'  r?  r  rB  r[  r0  rD  r  rC  )@r  r  r  rP  rQ  unspec_variable_mapr  r   rb  #force_unspec_int_unbacked_size_liker  r&   r  r  r.   r  rV   r  r  r6  r8   r2  rp  rA   r  r   r  rH   rF   r  r3  r4  r#   r&  rM   ro  automatic_dynamic_shapesscalarrD   r   $get_automatic_dynamic_shapes_mark_asr]   rZ  r  assume_static_by_defaultr(   r  r  ra   rB   r  r  r  r  r  r  r  r  r  r  bound_symbolsr   r  r  )r#  r  rZ  r  r  wrapped_valuer  frame_state_entrynormalized_source_namebase_sourcer@  r  r  r  
unspec_vars                  r	  r  VariableBuilder.wrap_symint	  sU    E{c!!!99:::77>>55dii@@GGNN,,	CC%<<>M%m4GGNN((//M;;= $DOO$566EMM$8$8$G$G
 ##L$?$?@'..U;;OO;;##D 9#//6+/;;+C+C+^+^+`	! &;4;;;K;K%L"++K+}55)224#&//%,,< A4HBD;44((4--.223IAu:V 44(00 %++|;#$EuM##L$?$?@'..U;;%JJ{{' K M GGNN((//M;;@ &doo&78888 ; ;<#**{{KKdoo/1BCCCCdoo'22<3J3JKLT__./**==FF#S$))4??$	 > 
 !%%**(ELL11WhZ?V3WW1=B""00:$++DGGUUWU
8B**4995!$//"344*2!#( #0+EJJOOJ' r  c           
      
   U R                   U R                  R                  R                  ;   a-  U R                  R                  R                  U R                      $ [	        U R                  U R
                  R                   [        R                  " U5      U R
                  R                  R                  5       S9n[        R                  R                  R                  (       d  [        U R                  5       5      (       d  [         R"                  " U5      (       d  [         R$                  " U5      (       dl  [        R&                  R                  R(                  R*                  (       d9  [-        SS5      (       d(  [        R.                  (       aP  UR0                  [2        La=  U R5                  [6        R8                  5        [:        R<                  " XR
                  S9$ [        R>                  " U[        R@                  S9n[        RB                  RD                  RG                  U5      (       a=  U R5                  [6        R8                  5        [:        R<                  " XR
                  S9$ [I        U R                  5       [J        5      (       a   e[M        U R                  5       RO                  [6        RP                  5      5        [S        U R                  5       5      nXAS.n[U        X0R                  SUS9nU R                  R                  RV                  RY                  [Z        R\                  " SS	U R                   5      [_        U5      UUS
9n[a        U R                  Xs5        [c        [d        4U R                  UUS S.UD6n[I        U[d        5      (       d   eXR                  R                  R                  U R                   '   U R                  Rf                  (       aB  [I        U R                  5       [h        5      (       d  [k        SU SU R                  5        35      eS n	URl                  Rn                  Rp                  S   n[s        U5      (       d   eUn	U	Rt                  U R                  Rt                  L d   SU	Rt                   S35       e[w        U R                  5       USU	SUS9URn                  Rp                  S'   [y        U R                  U R                  R                  Rz                  " SS/[}        U/0 5      Q76 5      n
U R                  R                  R~                  R                  [        U
R                  U R
                  S 5      5        [        5       R                  SSSS9  U
$ )Nr  z.pytorch/compiler:unspecialize_float_killswitchFr)  )r1  )r  	raw_valuer  rB  r[  r0  rP  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 InstructionTranslatorTr  rC  call_methodr)  tensorify_float_attempt)	overwrite)Er  rP  rQ  r  rH   r  rF   r  r3  r4  r  r6  r8   r  rV   r  mathisnanisinf	_inductortriton
cudagraphsr!   r  r  rD   rp  rA   r  r   r  r  float64r{  r|  is_gradtrackingtensorr&  ra   rB   r  r  rS   r  r  r  r  r  r  r  r7  r   rj  r]   AssertionErrorr  r  r  r   r  r  r  r  r~   r  r  r.   sym_numr   rq  )r#  r  r  r  r  r  r-  r  r  r  r'  s              r	  r  VariableBuilder.wrap_symfloate
  s1    99:::77>>55dii@@5GGKK++E2'+{{'?'?'Z'Z'\
 MM  11!$//"344zz%  zz%   %%,,77OQVWW//%,,L@  ; ;<#**{{KK U%--@
 8844]CC ; ;<#**{{KK doo/1BCCCCdoo'22<3J3JKL #4??#45#8 7ggv
 **==FF#S$))4	 > 
 	%TWWeC&'
ww'
 

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


# GGGGNN'' #J<4
 	$$++K		4;;PT,UV!!";TT!Rr  c           	      F   U R                   U R                  R                  R                  ;   a-  U R                  R                  R                  U R                      $ [        R
                  " U5      n[        U R                  5       [        5      (       d6  [        U R                  5       R                  [        R                  5      5        SU R                  5       0nUR                  SU05        [        X R                  SU R                  5       S9nU R                  R                  R                  R!                  ["        R$                  " SSU R                   5      ['        U5      UU R                  5       S9n[)        U R                  XR5        [+        [,        4U R                  UUS S.UD6nX`R                  R                  R                  U R                   '   [/        U R                  5       5      (       Gd'  U R                  R0                  (       aB  [        U R                  5       [2        5      (       d  [5        S	U S
U R                  5        35      eS nUR7                  5       (       a  UR9                  5       nO#UR:                  R<                  R>                  S   n[A        U5      (       d   eUnURB                  U R                  RB                  L d   SURB                   S35       e[E        U R                  5       USUSUS9UR<                  R>                  S'   U$ )Nr  r  Fr  rB  r[  r0  r  r  r  r-  r  r  Tr  rC  )#r  rP  rQ  r  r  r  r&  r  ra   rB   r  rA   r  updater  r  r  r  r  r  r  r7  r   rV   rj  r]   r  is_python_constantas_python_constantr  r  r  r   r  r  )r#  r  r  r  r-  r  r  r  s           r	  r  ,VariableBuilder.wrap_unspecialized_primitive
  s   99:::77>>55dii@@U+$//+->??$//+66|7N7NOPT__./U+,6ggt?P
 **==FF#S$))4??$	 > 
 	%TWWeC&'
ww'
 

 9C**4995!$//"344ww~~j1BK&P&P$STaSbbklpl{l{l}k~  !%,,.. * = = ? !+ 0 0 5 5 : :? K=)))) -$..$''2C2CC /99: ;C CC
 +3!#'-#0+EJJOOJ' r  )r  r  rP  NN)Lr  r  r  r  __doc__rb   rH  r!  r   r}  r@  rw  r  r   r   r  rB  rp  classmethodr  r  cacher  r  r  r   r  r  r  r   r  r  r  r  r  r   r  r   r  r  r  r  rv  r  r
   r  r  r}   r   r  r   r  r   r  r  r  r   r   r  r+  rT  rq  rr  rn  r  r  r  r  r(   r-   r  r  r  r  r  rX  rY  s   @r	  rf  rf    sw   = #    
	 1f 1 1f
O 
 
F hsCx&8 T#s(^d=R  ;tFHS#X,>$>? ; ; __$d $tFHSRUXDV<V7W $  $L+

3 +<P +
I'"7"7"< I I
[[&&66
	

s 
/J 
"H "H "HH __	c8.4oEFF	G  4I13 I1? I1V"Ps P Py5c?DI|ZOPy	yv	H 	HO 	HH HO H<eem <8U <u|| D T $c c_ cJ5& 5_ 5nell t J J/ JXS& S& S&p '+04	ww t#w '-	w
 
wrO5 O_ Ob># >/ > >r  rf  objc           	         S n[        U [        5      (       a  U R                  nO[        SSU  S[	        U 5       3SU  S3/ S9  Uc   e/ n[
        R                  " U5       HY  nS nU R                  (       a+  [        U R                  S5      n[        XSR                  5      nUR                  [        X4S95        M[     [        U5      $ )	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__r0  )r&  r   r  r@   r  r  r  r  rK   rP   r  r  r   )r   r  r  fieldr  base_srcs         r	  r  r  7  s    E#011		.C5 1$s)=>seCmn		
 E##E*::!#**.DEH&x<F.uDE + r  r  r  c                     [        U [        R                  5      (       aZ  [        U [        5      (       dE  [        R                  " U 5      (       a  [        U 5      UL d  U R                  (       d  [        U 5      n U $ r   )r&  r  r+  r   _is_functional_tensorr   r  rj   )r  r  s     r	  _clone_inputr  N  sZ    %&& uj)) ++E22'.);  &ELr  rP  r   r  r-  r.  r  c                     U UUUS.UEnUc  [        SS[        0UD6$ [        SS[        0UD6nUR                  U 5        U$ )Nr  r,  r  )r7  r   r   install_global)rP  r  r-  r.  r  kwargsr  s          r	  r  r  `  sd     &&	
 F  ENEfEE #U.JUfUb!r  c                    U R                   (       a^  [        R                  R                  5          [	        X R
                  5      UR                  R                  UR                  '   S S S 5        g g ! , (       d  f       g = fr   )	rj  r  r{  DisableTorchFunctionSubclassr  r  tracerreal_value_cacher  )rP  r  r-  s      r	  r  r  y  sW     
yy XX2248D||9ELL))%**5 54	  54s   7A11
A?r,  c                    Uc  [        XX#U40 UD6nO;[        U[        R                  5      (       a  [	        XX#U40 UD6nO[        X1X%X@5      n[        U[        R                  R                  R                  [        R                  R                  R                  45      (       a?  UR                  R                  S:w  a%  UR                  R                  R                  U5        U$ )Nplaceholder)_wrap_fx_proxyr&  r  r+  _wrap_fx_preexisting_tensorhandle_traced_outputr6  	variablesr   r   r  oprQ  current_tracerrecord_tensor_or_symint_vt)r,  rP  r  r-  r.  r  outs          r	  r7  r7    s     )E-
CJ
 
M5<<	0	0)E-
CJ
 #u}

 	''66''77	
 	
 JJMM]*
		  ;;C@Jr  r  c                    SSK Jn  [        U[        R                  5      (       d   S[        U5       35       e[        X5      (       d   eSU;   a.  US   b(  UR                  R                  R                  US   5        UR                  R                  S:X  a&  SUR                  R                  ;   d   SU S35       eO9SUR                  R                  ;  d   UR                  R                  S    5       e[        R                  R                  R                  5          [        U5      UR                   L a  O[#        XU5        UR$                  (       a]  [        R&                  R)                  5          [+        X1R                   5      UR,                  R.                  UR                  '   S S S 5        S	U [0        [2        4;   0nS
U;   a  US
   c   eUS
   US
'   [5        U4SU0UD6nUR6                  R
                  S:w  a&  [        U5      UR                   La  [9        SU 35      eS S S 5        [;        XX#XE5      $ ! , (       d  f       N= f! , (       d  f       N,= f)Nr7   r   z1_wrap_fx_preexisting_tensor expected tensor, got r  r  r-  zplaceholder z* doesn't have 'example_value' in node.metar  r  rP  r  zN`tensor` needs to be a `FakeTensor`wrapped by this instance of Dynamo. Found: )symbolic_convertr   r&  r  r+  r  rQ  r  r  r  r  r  r6  r  +_disable_saved_tensors_hooks_during_tracingr   r  r  rj  r{  r  r  r  r  r   r   r  r  r>   construct_tensor_variable)r,  rP  r  r  r.  r  r   r
  s           r	  r  r    s&    =fell++ 
;DL>J+ b44447wx0<
		 12 zz}}%%**//1 	
5'!KL	
1 ejjoo5 	
zz/0	
5
 
			H	H	Jv&",,6(F;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 ? 
KH %} 5 =< 
K	Js&    AI57H>,A=I>
I	I
Ic                    SSK Jn  [        X5      (       d   eSU;   a.  US   b(  UR                  R                  R                  US   5        SUR                  R                  ;  d   UR                  R                  S    5       e[        R                  R                  R                  5          [        UR                  USS9nS S S 5        [        UUUUUU 5      $ ! , (       d  f       N= f)Nr7   r  r  r-  T)allow_non_graph_fake)r  r   r&  rQ  r  r  r  r  r  r6  r  r  rm   r  )r,  rP  r  r-  r.  r  r   s          r	  r  r  "  s     =b44447wx0<
		 12%**//1Xejjooo6V5WX1 
			H	H	J 'uzz2DQ	 
K  
  
K	Js   .C
C*c                 >   SS K nSS KnSS Kn[        XR                  5      (       a  [        U 5      (       aK  UR                  (       a  [        R                  (       d%  [        S[        U 5      S/ [        R                  QS9  [        XQX XC5      n[        U[        5      (       d   eUR                  R                   R#                  X'[$        S9  U$ ['        UR(                  R*                  S5      (       ag  UR(                  R*                  R,                  S:X  aC  [        UR(                  R*                  R.                  UR0                  R2                  5      (       d-  UR(                  R*                  UR4                  R6                  L aG  [9        UR(                  R*                  5      [        Ld   e[;        UR(                  R*                  5      $ UR(                  R*                  UR0                  R<                  L d-  UR(                  R*                  UR>                  R@                  L a  [C        U 5      $ [E        XRF                  5      (       aI  [I        S U  5       5      (       a2  U  Vs/ s H  n[J        RL                  " U5      PM     n	n[O        U	40 UD6$ [        U [P        [R        45      (       Ga  [U        UR(                  U 5        / n
[W        U 5       H  u  pUc'  U
RY                  [J        RL                  " S#0 UD65        M/  URZ                  R]                  S	[^        R`                  X+40 S
9nSU;   a;  [        U [R        5      (       d   eUS   nURc                  5       n[e        UUSS9US'   OUnU
RY                  [g        S$UUUUS.UD65        M     [        XRF                  5      (       a  [O        X40 UD6$ [E        U [P        5      (       a  [i        U
40 UD6$ [E        U [R        [j        45      (       a  [m        U
40 UD6$ U Rn                  Rp                  S:X  d;  ['        U S5      (       d*   SU Rn                  Rp                   S[9        U 5       35       e[s        XRn                  40 UD6$ U b#  UR(                  R*                  URt                  L a  [J        RL                  " S#0 UD6$ [        XRv                  URx                  URz                  45      (       aS  UR                  R|                  R                  X5        [U        UR(                  U 5        [        RL                  " XU 40 UD6$ [        XR                  5      (       a  UR(                  R*                  [        L dB  UR(                  R*                  [        5        VVs/ s H  u  nnUR                  PM     snn;   a[  [U        UR(                  U 5        S nUR(                  R*                  [        L a  UR(                  R                  S   n[        X U40 UD6$ [        XR                  5      (       a  UR(                  R*                  [        L dB  UR(                  R*                  [        5        VVs/ s H  u  nnUR                  PM     snn;   a[  S nUR(                  R*                  [        L a  UR(                  R                  S   n[U        UR(                  U 5        [        X U40 UD6$ [        R                  " UR(                  R*                  5      (       a/  [        UR(                  R*                  UR                  5      (       dB  UR(                  R*                  [        5        VVs/ s H  u  nnUR                  PM     snn;   a#  [U        UR(                  U 5        [        X S 40 UD6$ UR(                  R*                  S:X  a<  UR(                  R                  S:X  a"  [U        UR(                  U 5        [K        U 40 UD6$ U bq  [        XR                  5      (       aW  UR(                  R*                  S:X  a=  UR(                  R                  S:X  a#  [U        UR(                  U 5        [        X S 40 UD6$ [        U [        5      (       Gae  UR(                  R*                  UR                  [        [^        R`                  UR                  R                  UR                  [^        R                  UR                  R                  R                  UR                  R                  R                  UR                  R                  R                  [        UR                  S[        5      [        UR                  S[        5      UR                  4;   d4  UR(                  R                  S:X  aG  UR(                  R*                  S:X  a-  [U        UR(                  U 5        [J        RL                  " U 40 UD6$ [        XR                  R>                  R                  5      (       a%  SSK_J`n  [U        UR(                  U 5        U" U40 UD6$ [        U [        5      (       Gaa  UR(                  R*                  UR0                  R                  UR0                  R                  R                  UR                  R>                  R                  UR                  R>                  R                  UR                  R>                  R                  UR0                  R                  UR0                  R                  UR0                  R                  UR0                  R                  UR0                  R                  S/[S        [        R                  " 5       5      -   ;   a-  [U        UR(                  U 5        [J        RL                  " U 40 UD6$ [        U [        [        [        45      (       a  UR(                  R*                  [        L dQ  UR(                  R*                  [        L d4  UR(                  R                  S:X  aG  UR(                  R*                  S:X  a-  [U        UR(                  U 5        [J        RL                  " U 40 UD6$ [        U [        5      (       d  UR(                  R*                  S;   a-  [U        UR(                  U 5        [J        RL                  " U 40 UD6$ [        SS[        U 5       S UR(                  R                   S!UR(                  R*                   3S"/ S9  g s  snf s  snnf s  snnf s  snnf )%Nr   z4Attempted to wrap sparse Tensor with VariableTrackerzBtorch.compile does not support sparse Tensors with VariableTrackerr  )mutation_type_clsr  	set_statec              3   B   #    U  H  n[        U[        5      v   M     g 7fr   )r&  r  r"  s     r	  rb  'handle_traced_output.<locals>.<genexpr>  s      3$1q
1cMs   rT  )kindtargetr,  r
  r  Fr/  )r,  rP  r  r-  ztorch.return_types_fieldsz	expected z. == torch.return_types or named tuple but got queryr  record_eventget_rankget_world_size
bit_lengthr   r   
is_integerr)  )r  	__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   rj  r8   r  r@   rB  r9   rs  r  r   rQ  ro  
_track_objr   r  r  r&  r  r3  r{  	Generatorr  set_rng_stater  r   _DisableFuncTorchr  _is_in_bad_forkr   r{   r  r  r   r  r   r  r  r   rm  r  r  r  operatorgetitemrG  rT   r7  r   r0   r   rI  r  r   manual_seedr   SymFloatr  r  track_produced_symintsr   r  r   r=   current_streamr,  r   r  r   r]  r^  r  r  r  sym_intri  _utils_element_sizeseedmodr|  vmap_validate_and_get_batch_sizepredispatch_vmap_increment_nesting_vmap_decrement_nestingrz  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_attention_get_cudnn_sdp_enabled_get_flash_sdp_enabled_get_mem_efficient_sdp_enabled_get_math_sdp_enabled_get_overrideable_sdp_enabledr   r  r  r   r   r   )r-  rP  r  r  r.  r,  r  r  r#  sizesunpackedr  r  proxy_ir  	options_ir[  device_interfacer  r   s                       r	  r  r  F  sJ
    !(-.. ''		!>!>NM*`6)556	 (E-
 #////
		))*> 	* 	
 


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

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

 : ::(77	zz	*	*s 3$13 0 0 6CC]!((+]CE-W--	ME4=	1	1%**m4.FA{$++<G<  ,,33(#++	 4  w& &mT::::$X.F 'I*7#',+Ih' !(I % #-%&) $	= /P mZZ00  ;7;;M5)) 5W55MD.#9::4G44 ''226JJ=)44 M33>>??mnr  tA  oB  nC  D	5
 &h0G0GS7SS		%**"3"3u7H7H"H&&7w77	MLL%..%--#P	Q	Q
		  77M%**m4%%bJ'JJ=,,//JJ!==			#C#E#EA 	''#E 
 	%**m4:: <<JJOOA&EeEEWEE=++..JJ!==			#C#E#EA 	''#E 
 :: <<JJOOA&E%**m4U5DGDD

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

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

HH55HH00NN<<NN77NN;;HH++HH++HH33HH**HH22
 388:
;<	<  	%**m4&&}@@@	MC#5	6	6

^+::
*JJMM]*uzz/@/@F/J%**m4&&}@@@	M5	)	)UZZ->->BV-V%**m4&&}@@@4*7=+A*B&Wabgblblbsbsatuo		
] DLs   * t	tttc                 4   [        U 5      [        R                  [        R                  R                  [        R
                  R                  R                  [        R
                  R                  R                  4;   d  [        U 5      (       a  g [        U 5      $ r   )r  r  r+  rq  r  rA  r  r   r  r  r3   r'  s    r	  r  r  8  sm    E{%%00++<<	 
 
'u	-	-$ E{r  c                    U R                  U5      n[        U[        R                  R                  R
                  5      (       a  UR                  UR                  L a  U(       a  UnO[        U[        R                  R                  5      (       a  [        R                  R                  nOT[        U[        R                  R                  5      (       a  [        R                  R                  nO[        R                  nXTS'   U$ )N
class_type)
specializer&  r  rA  r  r   r  rq  r  r  r+  )r,  rP  r-  r.  specialized_propstensor_types         r	  get_specialized_propsr`  U  s     #--m< 	=%"3"3"?"?"J"JKK##r||3'Kuxx'9'9::((,,Kuxx77((//K,,K*5,'r  c                    [        X1R                  5      n[        UR                  U5        UR                  R                  S:w  a%  UR
                  R                  R                  X25        UR                  [        XX45      5        U " U40 UD6$ )z
Actually construct a tensor variable after all the pre-processing from
wrapping a pre-existing or newly created tensor value.
r  )
r  r  r   r  r  rQ  r  r;  r  r`  )r,  rP  r  r-  r.  r  s         r	  r  r  n  sn     !=Mejj-0
 zz}}%
		  77MNN(VWe'w''r  c                      [         R                  S:X  a  [        R                  $ [         R                  S:X  a  [        R                  $ [        S[         R                   35      e)Ndynamicunbackedz+invalid automatic_dynamic_shapes_mark_as = )r8    automatic_dynamic_shapes_mark_asr(   r  r  r  r  r  r	  r  r    sT    ..);!!!		0	0J	>"""9&:a:a9bc
 	
r  _DYNAMIC_SOURCES_DYNAMIC_SOURCES_CONFIG_HASHc                  ^   [        [        R                  R                  R                  5      n [
        b  [        U :X  a  [
        $ [        R                  R                  R                  R                  SS5      R                  S5       Vs1 s H  nU(       d  M  UiM     snqU q[
        $ s  snf N r  ,)	hashr  compilerr8   dynamic_sourcesrf  rg  replacesplitcurrent_hashss     r	  get_dynamic_sourcesrt    s     --==>L #(D(T
 &&66>>sBGMMcRRA 	
R
 $0    
B*B*source_namec                     [        5       nU H<  nX :X  d  [        R                  " X 5      (       d  M%  [        R	                  SU U5          g   g)NzA%s was marked dynamic due to dynamic source allowlist pattern: %sTF)rt  r  matchr   r  )rv  rn  patterns      r	  r  r    sG    )+O"!RXXg%C%CIIS
  # r  r  r  c           
         UR                  5       n[        U5      (       d  UR                  5       nUR                  5       nS /U-  n[	        U5       Vs/ s H
  otU   U* 4PM     nnUR                  [        S9  0 n	U H;  u  pU* nU	R                  X5      Xg'   U	R                  XU   -  [        U5      5        M=     O/ n[        U U[        R                  " [        U5      [        U5      5      5      $ s  snf )N)r  )sizer   stridedimr  sortr'   rb  
setdefaultrG   rH   rF   make_tensorr  )rP  r  r  ex_size	ex_strider}  r|  r  pending
candidatesi_strideneg_is               r	  record_automatic_dynamicr    s     ffhGHHJ	eeg#/4Sz:z!aL1"%z:/0
&OHA"x:FI!!(QZ"7QH  '
 $
''gfF  ;s   C4_UNBACKED_SOURCES_UNBACKED_SOURCES_CONFIG_HASHc                  ^   [        [        R                  R                  R                  5      n [
        b  [        U :X  a  [
        $ [        R                  R                  R                  R                  SS5      R                  S5       Vs1 s H  nU(       d  M  UiM     snqU q[
        $ s  snf ri  )	rl  r  rm  r8   unbacked_sourcesr  r  ro  rp  rq  s     r	  get_unbacked_sourcesr    s     -->>?L $)F,)V  
 &&77??RHNNsSSA 	
S
 %1!ru  c                     [        5       nU H<  nX :X  d  [        R                  " X 5      (       d  M%  [        R	                  SU U5          g   g)NzC%s was marked unbacked due to unbacked source allowlist pattern: %sTF)r  r  rx  r   r  )rv  r  ry  s      r	  r  r    sH    +-#!RXXg%C%CIIU
  $ r  r  static_shapes
outer_onlyc                   ^0^1 U R                   (       aI  [        U [        R                  R                  R
                  R                  5      (       d  [        SSS/ S9  UR                  nUR                  R                  R                  R                  U S 5      nU(       a  UR                  OS nS nU R                  5       (       a#  [        US5      n	[!        U R"                  XU5      n[%        U 5      (       a  U(       d  [!        XX#SS9n
[        U
[&        5      (       d   e0 n[)        U 5      R+                  U 5      u  pU H(  n[-        X5      n[        X.5      n[!        XUU5      X'   M*     [/        U
R0                  U
R2                  U
R4                  U
R6                  UU
R8                  U
R                  US9$ U(       a  [;        U5      (       ds  ['        [<        R>                  /U RA                  5       -  [<        RB                  /U RA                  5       -  S /U RA                  5       -  S /U RA                  5       -  UUUS	9$ S
SK"J#m1  [I        U14S jU RK                  5        5       5      (       a  ['        U RK                  5        Vs/ s H8  n[        U[L        5      (       a  [<        RN                  O[<        R>                  PM:     sn[<        RB                  /U RA                  5       -  S /U RA                  5       -  S /U RA                  5       -  UUUS	9$ [Q        XU 5      n[S        U 5      n0 m0S[T        SSS[V        SS 4U04S jjnS
SK,J-n  UR                  R\                  bj  UR                  R\                   HP  n[        UU5      (       a  M  UR^                  U:X  d  M(  U" UR@                  UR`                  UR                  5        MR     / n/ n/ n/ n/ n[c        U RA                  5       5       GH  nU[-        U S[e        5       5      ;   nU[-        U S[e        5       5      ;   nU[-        U S[e        5       5      ;   nU[-        U S[e        5       5      ;   n U[-        U S[e        5       5      ;   n!URg                  [-        U S0 5      R                  U/ 5      5        [i        UR                  5      n"Un	[        U	[j        5      (       a  U	Rm                  5       n	U(       dQ  [        U	[n        5      (       a  U	Rp                  b}  [s        U	Rp                  5      R                  U"US05      U   (       aN  [t        Rw                  SU5        [x        /U RA                  5       -  n#[z        U#U'   U[|        R~                  " U#S9-  n[        R                  =(       a    UR                  U5      n$[        R                  =(       a    UR                  U5      n%[;        U5      (       a  [t        Rw                  SU5        Sn$[        U5      (       a  [t        Rw                  SU5        Sn$U$=(       d    U%n&T0R                  U5      nUGcA  S n'S n(U(       a  [        R                  (       d  S n([        U S5      (       a  U R                   V)s/ s H  n)U)R@                  U:X  d  M  U)PM     sn)R                  5       n*U*R                  c  U*R                  c
  [        SS 9n'OS
S!K"JLn+  U+" [        U*R                  U*R                  S"9SS#9n'O[        SS 9n'OU(       a
  [        SS 9n'OU!(       d4  U&(       a-  [        S$S5        U$(       a	  [        SS 9n'U%(       a	  [        SS 9n(O_U!(       d!  [        R                  (       d  [        S$S5        S n'S n(O2Uu  n'n,S n(U S%U S&3n-U,UR                  R                  R                  U-'   URg                  U'5        URg                  U(5        U(       d  [        U5      (       a  [<        R                  n.OU'c,  U(       d%  U (       d  T1" U RK                  5       U   5      (       a#  U&(       a  [        5       n.OU[<        RN                  n.ODU(       d  [        R                  (       d  U!(       a  [<        R>                  n.O[<        R                  n.U(b  [<        RN                  n/O[<        RB                  n/URg                  U.5        URg                  U/5        GM     ['        UUUUUUUUS'9$ s  snf s  sn)f )(NzGEncountered strided NestedTensor in automatic dynamic dim determinationr  r  r  r  T)r  )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   l   >#    U  H)  n[        U[        5      =(       a    T" U5      (       + v   M+     g 7fr   )r&  r   )r`  rs  r  s     r	  rb  %_automatic_dynamic.<locals>.<genexpr>G  s(     
L8a:a 9q)9%998s   14r}  constraint_rangeStrictMinMaxConstraintr  r   c                    > U T;   a=  SSK Jn  TU    u  pEU" UR                  UR                  -  SS9nU=(       d    UnXg4TU '   g X4TU '   g )Nr   r  FvrrX  )%torch.fx.experimental.symbolic_shapesr  r  )	r}  r  r  r  old_constraint_rangeold_namenew_constraint_rangenew_namedim2constraints	           r	  update_dim2constraint1_automatic_dynamic.<locals>.update_dim2constraint^  sg     . T-;C-@* #9#&&)=)@)@@$   '4H"6"@N3"2"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_rangerW  r  )lowerupperr  r  z.size()[])r  r  r  r  specialize_onr  r  r  )Ur  r&  r  r  r  r  r  r@   r  rQ  tracing_contexttensor_to_contextrb  r  r  rK   _automatic_dynamicr  r3   r*   r  r  ri  r+   r  r  r  r  r  r  r(   r  r}  INFER_STRIDEr  r  rr  r{  r   r  r  r_  r  rB  r  r  export_constraintst_idr  r  rq  r  r#   rM   ro  r]   rZ  r  r   r  rE   rD   rF   	make_sizer8   r  is_size_dynamicis_stride_dynamicr  allow_ignore_mark_dynamicr  r  popminmaxr)   r  r5   r   r  source_name_to_debug_namer  r  r  DUCK)2r  rP  r  r  r  r  prior_policyr  r  r  outer_contextr  r  r[  r  inner_tensorr  rs  r  r  r  r  rY  r  r  r  r  r  r  marked_strict_unbackedmarked_unbackedmarked_dynamicmarked_weak_dynamicmarked_staticr  	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	  r  r    s    	{{:	5<<!!//<<  	]M		
 ;;D99,,>>BB1dKL<H88d (
 15zz|| 1.qwwW$Q''
*6T
 -)@AAAA 7--a0D"1+L%f3L#5,$N   ''55)99*;;,??/'550=0a0a)	
 		
 .t44&%,,-7'445?"Vaeeg- $v// 0S	
 		
 D

L1668
LLL& !A '1F&;&;
""ARARR! (445?"Vaeeg- $v// 0S
 	
 11= a5DN99$<9DG9	9$ ?	yy##/))66J*&899$&%NNJ$?$?	 7 MOM1557^!"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{{!Ck=11%..0K{K0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6%&%<%<!%<r!%<!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6%..L'"QVVXa[))
 !CE)11f==%,,L &??L('//N'44N\*~.G J ##')-#+,O
 
{v!s   ?c)<c.c.)parent_contextr  r  c          
      Z  ^ ^^^ [        T 5      [        R                  [        R                  R                  [
        4;   d0  [        T [        R                  5      (       d  [        T 5      (       Ga(  Tc   e[        T UTS9u  pVU(       d  [        T TTU5      mO2[        T[        5      (       d   eTR                  nUR                  U   m[        R                  STR                  [!        T R"                  5      T[        T 5      5        [%        5          TR&                  c   e[)        U UUU4S j5      nS S S 5        Tb]  [        W[
        5      (       aH  UR*                  =n	b9  TR,                  R.                  R1                  [3        U	[5        T5      T5      5        [        W5      (       ac  UR7                  5       u  pU
 HK  n[9        X5      n[9        T U5      n[        TU5      n[;        UTU[        U[        R                  5      TS9  MM     TTR,                  R<                  R>                  T '   [A        U5      (       a  URB                  (       a  URE                  5       OURG                  5       nURI                  5       SURJ                  -  URI                  5       URM                  5       S.TR,                  RN                  T'   O8URI                  5       URM                  5       S.TR,                  RN                  T'   U(       a  U(       a  TRQ                  5       (       dq  [S        T5      (       da  TR,                  R.                  R1                  [3        UTT5      5        TR,                  RT                  [W        T 5         R1                  T5        U$ T $ ! , (       d  f       GNl= f)N)r  zwrap_to_fake %s %s %s %sc                  :   > TR                   R                  T TTS9$ )N)r  symbolic_context)r  r  )r  r  r  rP  s   r	  rN  0wrap_to_fake_tensor_and_record.<locals>.<lambda>F  s"    00!%5 1 r  )r  r  r  )r   )r{  r|  values_sizevalues_stride)r{  r|  ),r  r  r+  rq  r  r   r&  r3   r   r  rK   ra  r  r   r  r  r  shaper   r  r   	item_memorQ  r  r  r.   rL   r  ri  r  r  r  r   	is_sparse_valuesvaluesr{  ndimr|  input_source_to_sizes_stridesr  rV   tracked_fakes_id_to_sourcer_  )r  rP  r  r  r  r  _reasoninner_context_namefake_esym_valr  r[  r  
fake_innerinnerr  r  r  s   ```              @r	  r  r    s    	QELL%(("4"4jAAa&&(++!!!!? "
 1!RO fj1111!'-<<=OP		&KK!''NG	
 &'<<+++(F ( 6:..",,,9II##**G%9&%ACST )00002HE$V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'H&v..II##**FF,<= II00A7>>vF ('s   "N
N*c                       \ rS rSrSrSS jr\SSS\S\4S	 j5       r	\S\
S\4S
 j5       r\S\\\S\/\4   4   4S j5       rSrg)rv  i  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                     [        S5      e)NzUse SourcelessBuilder.create()r  r,  s    r	  rH  SourcelessBuilder.__init__  s    =>>r  rP  r   r  c           
      *   [        U5      n[        R                  R                  U5      nU(       a  U" X5      $ [	        U[
        5      (       a  U$ [	        U[        R                  5      (       a  [        U5      $ [        R                  " U5      (       a  [        R                  " U5      $ [        U5      (       a_  [        R                  " U5      bH  [        R                  " U5      (       a  SU R                   l        [        R                  " U5      " U5      $ [        U5      (       aW  [$        R&                  " U5      (       a<  [        R                  " UR(                  5      " UR(                  5      n[+        US5      $ [-        U5      (       a  [        R.                  " U5      " U5      $ [	        U[0        R2                  [4        R6                  [4        R8                  R:                  R<                  45      (       a  [?        U5      $ [	        U[         [@        RB                  45      (       a  [%        U5      $ [	        U[D        RF                  5      (       a  [I        U5      $ [	        U[D        RJ                  5      (       a  [	        UR(                  [         [@        RB                  45      (       au  [M        UR(                  URN                  RP                  5      U:X  d   e[        R                  XR(                  5      n URS                  XRN                  RP                  5      $ [	        U[4        RV                  RX                  RZ                  5      (       a  []        U5      $ [	        U[4        R^                  R`                  Rb                  5      (       a  [        U5      $ [d        Rf                  " U5      (       a  [e        U5      $ [h        Rj                  " U5      (       a  [i        U5      $ U[l        Rn                  L a  [q        U5      $ [	        U[r        Rt                  5      (       a  [w        U5      $ [	        U[4        Rx                  Rz                  R|                  R~                  5      (       a  [        R                  " [        U5      5      $ [	        U[        [4        R                  R                  5      5      (       a3  [4        Rx                  Rz                  R                  R                  U5      $ [	        U[D        R                  [D        R                  45      (       a  [        U5      $ [        U5      (       aT  [        [        U5      5       Vs/ s H"  n[        R                  U [M        X5      5      PM$     nn[        U[        U5      S9$ [	        U[4        R                  5      (       aq  UR                  R                  U R                   R                  ;   aC  U R                   R                  UR                  R                     n[        R                  " X5      $ [        U[        5      (       a  [        U5      $ [        SUR                   SUR                   3SU 3/ [        R                  QS9  g ! [T         a     NEf = fs  snf )NTr  )r  z%Unexpected type in sourceless builderrX  z3SourcelessBuilder.create does not know how to wrap r  )Xr  rv  _type_handlersrb  r&  r   r  _HAS_DEFAULT_FACTORY_CLASSr   r   r  r  r  r<   r  r  rQ  r  r   is_supported_new_methodr3  r   rs   ru  rx  ry  r  rz  r{  r|  r}  r   abcABCMetar  r  r   r  ri  r0  r  var_getattrr  rk  graph_moduleGraphModuler   r  r'  r  r   r  r   r  r  r  r   r  r  r   r6  r  lazyLazySymNodeFormatStringrB  r  flex_attention_backwardhigher_order_ops&FlexAttentionBackwardHighOrderVariableGenericAlias	UnionTyper   rv   r|   r   r   r  r  r  r   r{   r!  r   r@   r  r  r9   
DYNAMO_BUG)	rP  r  
value_typefast_handlerr   
cls_obj_vtr  rQ  r  s	            r	  r  SourcelessBuilder.create  s   %[
(77;;JG**e_--L{EEFF,U33((//#**511e__!<!<U!C!O..u55>B		;..u5e<<e__!9!Q!Q"
 "

 --enn=ennMC"3	22#E**%%e,U33DIIu00%((2E2E2S2ST
 
  &&ckk233+E22u6677(//ue..// 5>>D#+++>?? 5>>5>>+B+BCuLLL*11"nnEJ!--b..2I2IJJ uxx44@@AA077u{{22;;<<,U33++E22$U++..u55%e,,ioo%)%00rzz**'..u}}66;;SSTT#**3u:66tE$;$;$S$STUU==**;;bb   2 2EOODEE!%((5!! .d5k::D "((WU-AB:   &fUDDuell++

299#:#::II++EJJOO<E"))"44E6""!%((;!,,-Qz/F/F.GHMj\Z1%001		
I ' .s   $Z  )Z 
ZZc                 d    [         R                  " U 5      (       d   e[         R                  " U S9$ )Nr'  )r   r  r  r'  s    r	  wrap_constant_literal'SourcelessBuilder.wrap_constant_literal  s*    **51111&&U33r  c                    ^ [         R                  m0 n [         H  nS X'   M
     U4S jU [        '   U4S jU [        '   U4S jU [
        '   U4S jU [        '   U4S jU [        '   U4S jU [        R                  '   U [
           U [        R                  '   U [
           U [        '   U [           U [        '   S U [        R                  '   S	 U [         R"                  '   S
 U [        R$                  '   S U [        R&                  R(                  R*                  '   S U [        R,                  R.                  R0                  '   S U [        R,                  R.                  R2                  '   S U [        R,                  R.                  R4                  '   SSS[6        S[6        4S jn[8        R:                   H  nX U'   M	     U $ )Nc                     [        U5      $ r   )r   rP  r  s     r	  rN  6SourcelessBuilder.make_type_handlers.<locals>.<lambda>   s
    ,<U,Cr  c           	      `   > [        U Vs/ s H  nT" X5      PM     sn[        5       S9$ s  snf N)rQ  )r   r   rP  r  r#  r  s      r	  rN  r    s)    +$)*EqVB]E*:J:L+
*   +c           	      `   > [        U Vs/ s H  nT" X5      PM     sn[        5       S9$ s  snf r  )r   r   r  s      r	  rN  r    s*    1C$)*EqVB]E*:J:L2
*r  c                    > [        UR                  5        VVs0 s H  u  p#T" X5      T" X5      _M     snn[        U5      [        5       S9$ s  snnf r  )r   r  r  r   )rP  r  r  r  r  s       r	  rN  r    sB    +<6;kkmDmdaVB]F2M)mDK*,,
Ds   A
c           	      `   > [        U Vs/ s H  nT" X5      PM     sn[        5       S9$ s  snf r  )r   r   r  s      r	  rN  r    s)    <$)*EqVB]E*:J:L,
*r  c           	      R   > [        U Vs/ s H  nT" X5      PM     sn5      $ s  snf r   )r   r  s      r	  rN  r    s#    M$)*EqVB]E*-
*   $c           	      R   > [        U Vs/ s H  nT" X5      PM     sn5      $ s  snf r   )r   r  s      r	  rN  r    s#    $)*EqVB]E*2
*r  c                     [        5       $ r   )r   r  s     r	  rN  r    s    4G4Ir  c                     [        U5      $ r   )r   r  s     r	  rN  r    s
    7KE7Rr  c                 &    [        U[        5       S9$ r  )r   r   r  s     r	  rN  r    s    ;Q!1!3<
r  c                 &    [        U[        5       S9$ r  )r   r   r  s     r	  rN  r    s    :%5%7r  c                 &    [        U[        5       S9$ r  r   r   r  s     r	  rN  r  %      7%5%7r  c                 &    [        U[        5       S9$ r  r  r  s     r	  rN  r  *  r  r  c                 &    [        U[        5       S9$ r  r  r  s     r	  rN  r  /  r  r  rP  r   r  r   c                     U$ r   r  r  s     r	  passthrough9SourcelessBuilder.make_type_handlers.<locals>.passthrough4  s    Lr  )rv  r  rk   rq  r2   r  r  r  r  r  r  rk  r/   r0   r  r  r  r   r  r|  r  r  distributionsconstraints_Real	_Interval
Constraintr   r   all_subclasses)handlersr   r"  r  r  s       @r	  make_type_handlers$SourcelessBuilder.make_type_handlers  s    #))  	 'ACHK '
 




 
 -5TN(()#+D> #+D> "I%R!!"*
%%& 	!!--BBC 	$$00667 	$$00::; 	$$00;;<	3 	A 	! 	 '55C'SM 6r  r  r=  )r  r  r  r  r  rH  r  r   r   r  r!  r  r  r  r   r+  r  r  r  r	  rv  rv    s    
? Z
* Z
3 Z
? Z
 Z
x 4V 4 4 4 Ah/5FGG! A Ar  rv  c                   B    \ rS rSrSrSS jr\SSS\S\4S	 j5       r	S
r
g)"SourcelessUserDefinedObjectBuilderi?  z
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                     [        S5      e)Nz/Use SourcelessUserDefinedObjectBuilder.create()r  r,  s    r	  rH  +SourcelessUserDefinedObjectBuilder.__init__F  s    NOOr  rP  r   r  c                     [        U5      n[        U[        5      (       a  [        U[	        5       S9$ [        U[        R                  R                  5      (       a  [        U[	        5       S9$ [        U[	        5       S9$ r  )r  r  r   r   r   r&  r  rq  rr  r   r   )rP  r  r  s      r	  r  )SourcelessUserDefinedObjectBuilder.createI  sg    %[
j.11)%?O?QRRuxx//0%5%7  -UBRBTUUr  r  r=  )r  r  r  r  r  rH  r  r   r   r  r  r  r  r	  r.  r.  ?  s<    P 	V* 	V3 	V? 	V 	Vr  r.  r  r   )F(  r  r  r  r  rG  r  rx  r  r]  	itertoolsr  r  r7  r  r  r  r  r  collections.abcr   r   r   typingr   r   r   r	   r
   r  r  r   torch._dispatch.pythonr   #torch._dynamo.graph_bytecode_inputsr   r   torch._dynamo.utilsr   r   r   r   torch._guardsr   "torch._higher_order_ops.flat_applyr   !torch._higher_order_ops.torchbindr   torch._library.opaque_objectr   r   
torch._opsr   r   r   r0  r   r   r   r   torch._subclasses.meta_utilsr   r    torch._utils_internalr!   %torch.fx.experimental._backward_stater"   torch.fx.experimental._dynamismr#   torch.fx.experimental.sym_noder$   r%   r  r&   r'   r(   r)   r*   r+   r,   r-   r.   torch.fx.immutable_collectionsr/   r0    torch.nn.utils._expanded_weightsr1   torch.utils._ordered_setr2   torch.utils._python_dispatchr3   r4   torch.utils._sympy.value_rangesr5   torch.utils.weakr6   r  r8   r9   r:   r;   r<   rY  r=   excr>   r?   r@   r  rA   rB   rC   pgorD   rE   rF   rG   rH   ro  rI   r  rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   r  rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   builtinr   constantr   r   ctx_managerr   r   r   r   r   dictsr   r   r   r   r   r   r   r   rz  r   r   r   r   r   	functionsr   r   r   r   r   r   r   r   r   r   r   r   r  r   r   iterr   r  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   r   	nn_moduler   r   r   	optimizerr   script_objectr   r   rJ  r   streamsr   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   r   numpyr   ModuleNotFoundErrorr?  torch._dynamo.codegenr   torch._dynamo.symbolic_convertr   r   	getLoggerr  r   r  getArtifactLoggerrS  r   r   r   r  DimListr!  r@  r
  r  	dataclassr  rE  ru  varsr  rc  r  rq  rd  rq  rr  rt  ru  rq  rr  rf  r  r  r  r  r  r7  rk  Proxyr+  r  r  r  rB  r  r  r`  r  r  rf  rg  rt  r  r  r  r  r  r  r  r  rv  r+  r  r.  r  r  r	  <module>rc     s  &              	 
   4  B B    ;  ) 9 < M H H  B 1 ? A E
 
 
 J ; / 8 * T T ? S S A A  '       >! ! ! ! ! ! ! ! !D  % 4 	 	 	     $ %
 
 
         2  
 ) ( O O $ $ I I I       
       
 //  !NN44'  
 m$CL
"V " "
	 	 G9 G9 G9T<H <, &/ /Y--// & IcN  +.% s3x /
 "'!>!> $)HHOO$D$D !n% n%bK O    . (= # * !%!%	# : $;	
  2
#
,/
@C
	
z !%!%$[!$#$ $ :	$
 $;$ $ $Z "&D[!D#D 88>>D LL	D
 $;D D DX !%!% [! #  88>>  :	 
 $;     Ho
o
#o
 88>>o
 #s(^	o

 $;o
 [!o
 o
dq T!Wt^ :#  $;	
 
#s(^2([!(#( 88>>( 	(
 $;( #s(^( (6
j 
 %) #c(T/ (+/ cDj /SX (
3 
4 
#+.38<<: &* 3s8d? ),0 sTz 0c#h (
C 
D 
( S
S#S S 	S
 S Sz "&n
n#n TM	n
 n $Jn 	nbt tn $5#G#G#I   V V[x  B
s   3]   ]]