+
    &jrI                   B  a 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtH t  ^ RI!H"t"H#t#H$t$ ^ RIH%t% ^ RI&t&^ RI't&^ RI(t&^ R	I)H*t* ^ R
I+H,t,H-t-H.t.H/t/H0t0H1t1H2t2H3t3H4t4H5t5H6t6H7t7H8t8H9t9H:t:H;t;H<t<H=t=H>t>H?t?H@t@HAtAHBtBHCtCHDtDHEtE ^ RIFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtP ^ RIQHRtRHStS ^ RITHUtUHVtVHWtWHXtXHYtYHZtZH[t[H\t\H]t] ^ RI^H_t_ ^ RI`HataHbtb ^ RIcHdtd ^ RIeHftf ^ RIgHhthHitiHjtjHktkHltl ^ RImHnto ^ RIpHqtq ^ RIrHstsHttt ^ RIuHvtv ^RIwHxtxHytyHztz ^RI{H|t| ^RI}H~t~HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ^RIHtHtHtHtHtHtHt ^RIHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHt ] '       d   ^ RIHt RtR]R&   ]! ]EP                  ! 4       4      t ^ RIt] '       d%   ^ RIHtHtHt ^ R IHt ^ R!IHt ^ R"IHtHt ^ R#IHt ]$! R$4      t]EP                  ! ]4      t]&EP                  EP                  ]R%4      t]&EP                  EP                  ]R&4      t]&EP                  EP                  ]R'4      t]&EP                  EP                  ]R(4      tRtR) R* lt ! R+ R,]_4      t ! R- R.4      tR/ R0 lt]	EP                  R1 R2 l4       tRsR3]R4&   R5 R6 ltR7 R8 lt]&EP                  EP                  EP                  tR9 R: ltRR; R< lltR= R> ltR? R@ ltRA RB ltRC RD ltRE RF ltRG RH ltRI RJ ltRK RL lt]EP                  ! RMRN7       ! RO RP4      4       tRQ RR ltRS RT lt]EP                   ! RU RV4      4       Et  ! RW RX]EP                  4      Et]	EP                  RY RZ l4       Et ! R[ R\]4      EtE]! 4       EtR] R^ lEtR_ R` lEtRa Rb lEt	Rc Rd lEt
Re Rf lEtRg Rh lEtRi Rj lEtRk Rl lEtRm Rn lEtRo Rp lEtRq EtRr Et ! Rs Rt4      EtRu Et ! Rv Rw]Y4      Et ! Rx Ry4      EtRz R{ lEt ! R| R}]4      Et]EP                   ! R~ R4      4       Et]EP                   ! R R4      4       Et ! R R4      Et]	EP                  R R l4       Et ! R R]EP:                  4      EtR R lEtR R lEt  ! R R4      Et!R R lEt"R R lEt#R R lEt$R R lEt%]#! RE]&E]'E]3,          4      Et(R R lEt)R R lEt*R R lEt+R R lEt,RR R llEt-RR R llEt.R R lEt/R R lEt0]|! E]04       R R lEt1R R lEt2R^ /R R llEt3E]4! E]4       U Uu/ uF(  p E]5! E]5! E]V 4      RR4      ;Es6  f   K   V E\l        bK*  	  upp Et7R]R&   E]4! E]4       UUUu. uF  pV^ ,          EPq                  4       '       g   K#  VEPs                  R4      '       d   K=  E]:! E]5! E]VR4      ;Es;4      '       g   K[  E]<! E]=! ]EP}                  E\v        4      EP~                  4      ;Es@4      ^8  g   K  E\        ^,          R8X  g   K  E]A! E\v        R4      '       d   K  VNK  	  upppEtBE]B'       d   E]C! RREP                  E]B4       R24      hR#   ] d    Rt ELi ; iu upp i u upppi )a  
Core guard system for Dynamo that detects when compiled code needs to be recompiled due to
changes in program state. Guards are conditions that must remain true for previously-compiled
code to be valid for reuse.

This module provides the infrastructure for creating, managing and checking guards, including:
- Guard creation and composition
- Guard state management and invalidation
- Guard checking and failure handling
- Utilities for guard optimization and debugging
- Integration with Dynamo's compilation caching

The guard system is critical for Dynamo's ability to efficiently reuse compiled code while
maintaining correctness by detecting when recompilation is necessary due to changes in
program state, tensor properties, or control flow.
)annotationsN)contextmanagerdeepcopy)currentframe)Any
NamedTupleNoReturnTYPE_CHECKING)LiteralStringTypeAliasTypeTypeVar)ReferenceType)code_framelocals_names)check_obj_idcheck_type_idClosureGuardAccessorCodeGuardAccessordict_versionDictGetItemGuardAccessorDictGuardManagerFuncDefaultsGuardAccessorFuncKwDefaultsGuardAccessorGetAttrGuardAccessorGetGenericDictGuardAccessorGuardAccessorGuardDebugInfoGuardManager install_no_tensor_aliasing_guardinstall_object_aliasing_guard!install_storage_overlapping_guardinstall_symbolic_shape_guard	LeafGuardprofile_guard_managerRelationalGuardRootGuardManagerTupleGetItemGuardAccessorTypeDictGuardAccessorTypeGuardAccessorTypeMROGuardAccessor)
get_global_source_nameget_local_source_nameIndexedSource$is_from_flatten_script_object_sourceis_from_local_sourceis_from_optimizer_sourceis_from_skip_guard_source.is_from_unspecialized_builtin_nn_module_sourceTensorPropertyTensorPropertySource)CompileEventLoggerget_metrics_context)	CompileContext	CompileIdDuplicateInputsGuardGuardBuilderBaseGuardEnvExprGuardSourceSourceStorageOverlapIndentedBuffer)get_opaque_obj_infois_opaque_value_type)
structured)justknobs_check)_CppShapeGuardsHelper_ShapeGuardsHelperEqualityConstraintis_symbolicSYMPY_INTERP)_pytree)
OrderedSet)format_framereport_compile_source_on_error)TensorWeakRef)configconvert_frameexc)set_guard_error_hook)-AttrProxySource
AttrSourceCallFunctionNoArgsSourceCallMethodItemSourceCellContentsSourceChainedSourceClosureSource
CodeSourceConstantSourceConstDictKeySourceCurrentStreamSourceDataclassFieldsSourceDefaultsSourceDictGetItemSourceDictSubclassGetItemSourceDynamicScalarSourceFlattenScriptObjectSourceFloatTensorSourceFSDPNNModuleSourceGenericAttrSourceGetItemSourceGlobalSourceGlobalStateSourceGlobalWeakRefSource
GradSourceImportSourceListGetItemSourceLocalSourceNamedTupleFieldsSourceNNModuleSourceNonSerializableSetGetItemSourceNumpyTensorSourceOptimizerSourceScriptObjectQualifiedNameSourceShapeEnvSourceSubclassAttrListSourceTorchFunctionModeStackSourceTupleIteratorGetItemSourceTypeDictSourceTypeMROSource
TypeSource"UnspecializedBuiltinNNModuleSourceUnspecializedNNModuleSourceUnspecializedParamBufferSourceWeakRefCallSource)
CacheEntryDynamoFrameType
ExtraStateGuardedCode	GuardFailGuardFilterEntryGuardFn)builtin_dict_keyscommon_constant_typesdataclass_fields	dict_keysget_current_streamget_torch_function_mode_stack get_torch_function_mode_stack_atguard_failuresistype	key_is_id	key_to_idnormalize_count_iternormalize_range_iterorig_code_maptensor_always_has_static_shapetuple_iterator_getitemtuple_iterator_lenverify_guard_fn_signature)Callablez%Callable[[Any, Any, Any], Any] | Noneguard_manager_testing_hook_fn)	GeneratorKeysViewSequence)Symbol)DispatchKeySet)OutputGraphCommonOutputGraphGuardsStateSerializedCodeTguards
recompilesrecompiles_verboseverbose_guardsc               $    V ^8  d   QhRRRRRR/# )   codetypes.CodeTypevar_namestrreturnint )formats   "l/Users/jameslopez/projects/CWCArchive/cwc-podcast/.venv/lib/python3.14/site-packages/torch/_dynamo/guards.py__annotate__r      s!      n       c                l    \        V 4      p\        V4      VP                  V4      ,
          ^,
          pV#    )&code_framelocals_names_reversed_cachedlenindex)r   r   framelocals_names_reversedframelocals_idxs   &&  r   get_framelocals_idxr      s=     "H!M&'*D*J*J8*TTWXX  r   c                  >   a  ] tR t^tR R ltRR V 3R llltRtV ;t# )IndentedBufferWithPrefixc                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   %IndentedBufferWithPrefix.__annotate__   s     5 5 5r   c                	J    R V P                   V P                  ,          ,          # )z| )_indenttabwidthselfs   &r   prefixIndentedBufferWithPrefix.prefix   s    t||dmm344r   c               $    V ^8  d   QhRRRRRR/# )r   liner   skip_prefixboolr   Noner   )r   s   "r   r   r     s!     , ,c , , ,r   c                	f   < V'       d   \         SV `  V4       R# \         SV `  R V,           4       R# )z+- N)super	writeline)r   r   r   	__class__s   &&&r   r   "IndentedBufferWithPrefix.writeline  s$    Gd#Gedl+r   r   F)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classcell__r   s   @r   r   r      s    5, , ,r   r   c                      ] tR tRtRtR%R R llt]R R l4       tR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR%R R lltR R ltR R ltR R ltR R ltR  R! ltR" R# ltR$tR# )&GuardManagerWrapperi
  z
A helper class that contains the root guard manager. An instance of this
class is stored in the Dynamo cache entry, so that the cache entry can
access the RootGuardManager stored in the "root" attribute and directly call
the check_nopybind from C++.
Nc                    V ^8  d   QhRRRR/# )r   rootzRootGuardManager | Noner   r   r   )r   s   "r   r    GuardManagerWrapper.__annotate__  s     @ @4 @ @r   c                	   Vf   \        4       V n        MWn        R V n        R V n        R V n        . V n        R V n        R V n        R V n        R V n	        R V n
        / V n        . V n        \        4       V n        \        4       V n        R # N)r%   r   diff_guard_rootclosure_varsargs
code_partsverbose_code_partsglobal_scopeguard_fail_fncache_entryextra_stateid_matched_objsno_tensor_aliasing_sourcessetprinted_relational_guardsrK   diff_guard_sources)r   r   s   &&r   __init__GuardManagerWrapper.__init__  s    <(*DII8<37&*	%'4837AE.2.2AC57'?Bu&3=<r   c                   V ^8  d   QhRR/# )r   r   zGenerator[None, None, None]r   )r   s   "r   r   r   )  s     3 35P 3r   c              #  	|   "   \        4       V n         R x  \        4       V n        R #   \        4       T n        i ; i5ir   )r   r   r   s   &r   #_preserve_printed_relational_guards7GuardManagerWrapper._preserve_printed_relational_guards(  s+     ),&	3-0UD*SUD*s   <( <9<c                   V ^8  d   QhRR/# )r   r   OrderedSet[str]r   )r   s   "r   r   r   1  s     /' /'O /'r   c                	   a aaa R  V V3R lloR V V3R lloR VV3R lloS! S P                   4       S P                  # )c                    V ^8  d   QhRRRR/# )r   noder   r   r   r   )r   s   "r   r   DGuardManagerWrapper.collect_diff_guard_sources.<locals>.__annotate__;  s     	& 	&%5 	&$ 	&r   c                x  < V P                  4       SP                  9   ;'       g    V P                  4       ^ 8  p\        V P	                  4       P                  4       4       F$  w  pw  r4VS! V4      S! V4      ,          ,          pK&  	  V'       d*   SP                  P                  V P                  4       4       V#     )
get_sourcer   
fail_countsortedget_key_value_managersitemsadd)r   is_diff_guard_node_idxkey_mgrval_mgrr   visits   &    r   visit_dict_managerJGuardManagerWrapper.collect_diff_guard_sources.<locals>.visit_dict_manager;  s    !T%<%<<UU@QTU@U  -3++-335-((w #eGnuW~&EE"-
 "''++DOO,=>%%r   c                    V ^8  d   QhRRRR/# r   r   r   r   r   r   )r   s   "r   r   r   I  s     	& 	& 	& 	&r   c                V  < \        V \        4      '       d   Q hV P                  4       SP                  9   ;'       g    V P	                  4       ^ 8  pV P                  4        F  pVS! V4      ,          pK  	  V'       d*   SP                  P                  V P                  4       4       V# r   )
isinstancer   r  r   r  get_child_managersr  )r   r  	child_mgrr   r  s   &  r   visit_managerEGuardManagerWrapper.collect_diff_guard_sources.<locals>.visit_managerI  s    !$(89999 !T%<%<<UU@QTU@U  "446	"eI&66" 7 "''++DOO,=>%%r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r   W  s     	' 	' 	' 	'r   c                \   < V f   R# \        V \        4      '       d	   S! V 4      # S! V 4      # )NFr  r   r   r  r  s   &r   r  =GuardManagerWrapper.collect_diff_guard_sources.<locals>.visitW  s/    |$ 011)$// &&r   )r   r   )r   r  r  r  s   f@@@r   collect_diff_guard_sources.GuardManagerWrapper.collect_diff_guard_sources1  s;    	& 	&	& 	&	' 	' 	dii&&&r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r   b  s     * *$ *r   c                	    \         P                  '       d"   \        R 4      '       d   V P                  4        V P	                  4        R# )z3pytorch/compiler:use_recursive_dict_tags_for_guardsN)rO   "use_recursive_dict_tags_for_guardsrD   find_tag_safe_rootsprepare_diff_guard_managerr   s   &r   finalizeGuardManagerWrapper.finalizeb  s7    444A:
 :
 $$&'')r   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r   i  s     + +D +r   c                	F    V P                  4        V P                  4        R # r   )r  populate_diff_guard_managerr   s   &r   r"  .GuardManagerWrapper.prepare_diff_guard_manageri  s    '')((*r   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r   m  s     X* X*T X*r   c                  aaaa R R loR V3R lloR VV3R lloR VV3R lloS! V P                   4      pV FM  p\        VP                  4       \        P                  P
                  4      '       g   K=  VP                  4        KO  	  R	# )
u	  
Identify ``tag safe nodes`` and ``tag safe roots`` within a guard tree.

-----------------------------------------------------------------------
tag safe node
-----------------------------------------------------------------------
A *tag safe node* is a ``GuardManager`` whose guarded value satisfies one
of the following conditions:

1. Immutable value - The value is intrinsically immutable according to
``is_immutable_object``. Tensors are considered immutable. To ensure
that symbolic guards run, we also check that the GuardManager has no
accessors.

2. Nested tag safe dictionary - The value is a ``dict`` whose keys and
values are all tag safe nodes  (checked recursively).  Such dictionaries
allow entire nested structures to be skipped once their identity tag
matches.

3. Pure ``nn.Module`` - The value is an ``nn.Module`` whose sole
accessor is ``GetGenericDictGuardAccessor``—i.e., it only exposes its
``__dict__`` and nothing else that could mutate between runs.

For every tag safe node, verifying the identity/tag of just the top-level
dictionary is enough to guarantee the entire subtree is unchanged, enabling
a *fast-path* guard check.

-----------------------------------------------------------------------
tag safe root
-----------------------------------------------------------------------
A ``tag safe root`` is a tag safe node whose parent is not tag safe.
These boundary nodes mark the points where guard evaluation can safely
prune traversal: if a tag-safe root's dictionary tag matches, the entire
subtree beneath it is skipped.

One strong requirement for tag safe root is for the guarded object to
support weakref. Refer to more details in the Recursive dict tag
matching note. In short, we need to save the weakref of the object on
first invocation, and check if it is still valid in later iterations, to
apply recursive dict tag optimizations. `dict` objects do NOT support
weakref. Therefore, as of now, we only mark nn module related guard
managers as tag safe roots.

Algorithm
---------
The search runs in post-order traversal

1. Visit leaves and classify them as tag safe or not.
2. Propagate tag-safety upward: a parent dictionary becomes tag safe only if
all of its children are already tag-safe.
3. Propagate tag-safe-rootness upward: if the whole subtree is tag safe,
the current node becomes the new tag safe root, otherwise propagate the
subtree tag safe roots.
4. Collect every tag safe node and, by inspecting parent tags, label the
subset that are tag safe roots.
c               $    V ^8  d   QhRRRRRR/# )r   r   r   accepted_accessorsztuple[type[GuardAccessor], ...]r   r   r   )r   s   "r   r   =GuardManagerWrapper.find_tag_safe_roots.<locals>.__annotate__  s$     	 		4S		r   c                   a V P                  4       pV P                  4       p\        ;QJ d(    V3R  l\        W#4       4       F  '       d   K   R# 	  R# ! V3R  l\        W#4       4       4      # )c              3  p   <"   T F+  w  r\        VS4      ;'       d    VP                  4       x  K-  	  R # 5ir   )r  is_tag_safe).0accessormgrr,  s   &  r   	<genexpr>TGuardManagerWrapper.find_tag_safe_roots.<locals>.check_tag_safety.<locals>.<genexpr>  s4      %?MH 8%78NNS__=NN%?s   66FT)get_accessorsr  allzip)r   r,  	accessors
child_mgrss   &f  r   check_tag_safetyAGuardManagerWrapper.find_tag_safe_roots.<locals>.check_tag_safety  sf     **,I002J3 %(%?33 3 3 %(%?  r   c                    V ^8  d   QhRRRR/# )r   r   r   r   list[GuardManager]r   )r   s   "r   r   r-    s     	" 	"%5 	":L 	"r   c                  < \        V P                  4       \        4      '       g   Q h. pR p\        V P	                  4       P                  4       4       F1  w  pw  rEVe	   S! V4       Vf   K  VP                  S! V4      4       K3  	  V P	                  4       P                  4        FC  w  rEV'       d   W$P                  4       ,          pV'       g   K-  W%P                  4       ,          pKE  	  V'       d   V P                  4        V# T)

issubclassget_type_of_guarded_valuedictr  r  r  extendvaluesr0  mark_tag_safe)r   tag_safe_rootsis_subtree_tag_safer  r	  r
  r  s   &     r   r  CGuardManagerWrapper.find_tag_safe_roots.<locals>.visit_dict_manager  s     d<<>EEEEN"& -3++-335-((w &'N&"))%.9- %)$?$?$A$H$H$J '+>+>+@@'7'+>+>+@@' %K #""$!!r   c                    V ^8  d   QhRRRR/# r   r   r   r   r>  r   )r   s   "r   r   r-    s     l	" l	" l	"1C l	"r   c                  < \        V \        4      '       d   Q h. pV P                  4        F  pVP                  S! V4      4       K  	  V P	                  4       '       d   \        V P                  4       \        P                  4      '       d?   V P                  4       '       d'   V P                  4       '       g   V P                  4        V# V P                  4         V# \        V P                  4       \        4      '       d   V P                  4       pV P                  4       p\        ;QJ d%    R  \        W44       4       F  '       d   K   RM	  RM! R  \        W44       4       4      pV'       d   V P                  4        V# \        V P                  4       \        P                   P"                  4      '       d2   S! V \$        \&        34      pV'       d   V P                  4        V .#  V# V P                  4       \(        P*                  \(        P,                  \.        \0        39   d   \2        P4                  '       d   S! V \6        \8        \:        \<        \>        34      pV P                  4        F9  p\        V\>        4      '       g   K  VVPA                  4       \B        9   ,          pK;  	  V'       d   V P                  4        V# \        V P                  4       \(        PD                  4      '       d   S! V \>        34      pT\        ;QJ d*    R V P                  4        4       F  '       d   K   RM	  RM! R V P                  4        4       4      ,          pV'       d   V P                  4        V# \        V P                  4       \F        4      '       dh   V PI                  4       PK                  \B        4      '       d?   \2        P4                  '       d)   S! V \L        34      pV'       d   V P                  4        V# \        V P                  4       \N        4      '       d,   S! V \P        \R        34      pV'       d   V P                  4        V# )c              3  v   "   T F/  w  r\        V\        4      ;'       d    VP                  4       x  K1  	  R # 5ir   )r  r   r0  )r1  r2  r3  s   &  r   r4  QGuardManagerWrapper.find_tag_safe_roots.<locals>.visit_manager.<locals>.<genexpr>  s3      *)C x)ABXXsGXX)Cs   99FTc              3  x   "   T F0  p\        V\        4      ;'       d    VP                  4       R 8H  x  K2  	  R# 5i)cell_contentsN)r  r   get_attr_name)r1  r2  s   & r   r4  rN    sD      + %9 x)=> D D ..0OCD$8s   ::)*r  r   r  rD  is_guarded_value_immutablerA  rB  torchTensorhas_no_accessorshas_object_aliasing_guardrF  rC  r6  r7  r8  nnModuler   r(   typesFunctionType
MethodTypestaticmethodclassmethodrO   )assume_dunder_attributes_remain_unchangedr   r   r   r   r   rQ  dunder_attrs_assumed_constantsCellTypetupler  endswithr&   typer'   r)   )	r   rG  r  r9  r:  rH  r2  r;  r  s	   &      r   r  >GuardManagerWrapper.find_tag_safe_roots.<locals>.visit_manager  s   !$(89999  N!446	%%eI&67 7 ..00 d<<>MM,,..t7U7U7W7W**,| "!y &&(x "!w D::<dCC ..0	!446
&)c *),Y)C*ccc *),Y)C* '# '&&(f "!e D::<ehhooNN&668IJ'# '&&(  	 '\ "!M ..0&&$$ 	 DDD '7),13,	'# !% 2 2 4H!(,@AA+$2248VV+ !5 '&&(J "!I D::<ennMM&6t>R=T&U##ss + %)$6$6$8+sss + %)$6$6$8+ ( #
 '&&(6 "!3 499;UCCOO%../MNNDDD '746'# '&&( "! D::<dCC&602FG'# '&&(!!r   c                    V ^8  d   QhRRRR/# rK  r   )r   s   "r   r   r-  ;  s     	' 	' 	'); 	'r   c                \   < V f   . # \        V \        4      '       d	   S! V 4      # S! V 4      # r   r  r  s   &r   r  6GuardManagerWrapper.find_tag_safe_roots.<locals>.visit;  s1    |	$ 011)$// &&r   N)r   rA  rB  rS  rW  rX  mark_tag_safe_root)r   rG  r   r;  r  r  r  s   &  @@@@r   r!  'GuardManagerWrapper.find_tag_safe_rootsm  sn    t		" 	"8l	" l	"\	' 	' tyy)"D$88:EHHOOLL'') #r   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r   G  s     > >T >r   c                	    V P                  V P                  4      V n        V P                  '       d   V P                  P	                  4        R # R # r   )clone_with_chosen_sourcesr   r   r   update_diff_guard_root_managerr   s   &r   r'  /GuardManagerWrapper.populate_diff_guard_managerG  s@    #==d>U>UV ;;= r   c                    V ^8  d   QhRRRR/# )r   chosen_sourcesr   r   r%   r   )r   s   "r   r   r   T  s     2 2-2	2r   c                	L   a R  V3R llpV P                   P                  V4      # )c                    V ^8  d   QhRRRR/# )r   node_mgrr   r   r   r   )r   s   "r   r   CGuardManagerWrapper.clone_with_chosen_sources.<locals>.__annotate__W  s     	; 	; 	; 	;r   c                *   < V P                  4       S9   # r   )r  )rs  rp  s   &r   	filter_fn@GuardManagerWrapper.clone_with_chosen_sources.<locals>.filter_fnW  s    &&(N::r   )r   clone_manager)r   rp  rv  s   &f r   rl  -GuardManagerWrapper.clone_with_chosen_sourcesT  s$    	; 	; yy&&y11r   c                    V ^8  d   QhRRRR/# )r   guardr"   r   	list[str]r   )r   s   "r   r   r   \  s      Y 9 r   c                	    VP                   P                  pVP                  4       pV Uu. uF  qBR ,           V,           NK  	  ppV# u upi ): )r   r   r   )r   r{  
guard_namepartsparts   &&   r   get_guard_lines#GuardManagerWrapper.get_guard_lines\  sH    __--
((*6;<edd"T))e< =s   Ac               $    V ^8  d   QhRRRRRR/# )r   guard_managerr   accessor_str
str | Noner   r   r   )r   s   "r   r   r   b  s$     
 
)
9C
	
r   c                	.   VP                  4       pVP                  P                  pVR ,           V,           pV'       d   VRV,           ,          pVRVP                  4        2,          pVRVP	                  4        RVP                  4        R2,          pV# )z	: source=, z, type=z, tag_safe=())r  r   r   rB  r0  is_tag_safe_root)r   r  r  sourcetss   &&&   r   get_manager_line$GuardManagerWrapper.get_manager_lineb  s     ))+##,,Of$$$A	w}>>@ABB	|M5578=;Y;Y;[:\\]^^r   c               $    V ^8  d   QhRRRRRR/# )r   r3  r   bodyr   r   r   r   )r   s   "r   r   r   n  s)     A A#A+CA	Ar   c           	     	   \        VP                  4       P                  4       4       F  w  pw  rEVP                  R V 24       VP	                  4       ;_uu_ 4        V'       d5   VP                  RV P                  V4       24       V P                  WB4       V'       d5   VP                  RV P                  V4       24       V P                  WR4       RRR4       K  	  R#   + '       g   i     K  ; i)zKeyValueManager pair at index=zKeyManager: zValueManager: N)r  r  r  r   indentr  construct_manager_string)r   r3  r  idxr	  r
  s   &&&   r   construct_dict_manager_string1GuardManagerWrapper.construct_dict_manager_stringn  s     (.c.H.H.J.P.P.R'S#C#'NN;C5ABNN\$2G2G2P1Q#RS11'@NN^D4I4I'4R3S#TU11'@  (Ts   AC#!4C##C4c               $    V ^8  d   QhRRRRRR/# )r   r3  r   r  r   r   r   r   )r   s   "r   r   r   |  s$     ? ??'??	?r   c                	*   VP                  4       ;_uu_ 4        VP                  4        F  p\        V\        4      '       dv   W0P                  9  d>   V P                  P                  V4       VP                  V P                  V4      4       Kf  VP                  VP                  P                  .4       K  VP                  V P                  V4      4       K  	  \        V\        4      '       d   V P                  W4       \        VP                  4       VP                  4       4       FH  w  rEVP                  V P!                  VR VP#                  4        24      4       V P%                  WR4       KJ  	  RRR4       R#   + '       g   i     R# ; i)zaccessed_by=N)r  get_leaf_guardsr  r$   r   r  
writelinesr  r   r   r   r  r8  r6  r  r   r  reprr  )r   r3  r  r{  r2  r  s   &&&   r   r  ,GuardManagerWrapper.construct_manager_string|  s.    [[]],,.e_55$B$BB66::5A(<(<U(CD % 8 8 OOD$8$8$?@ /  #/00223= (+!!#S%;%;%=(# )))|HMMOCT5UV --i>(+ ]]]s   EFF	c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r     s     # # #r   c                	   V P                  4       ;_uu_ 4        \        4       p^Vn        VP                  RRR7       VP                  RRR7       VP                  R4       V P	                  V P
                  V4       \        V P
                  R4      '       dB   V P
                  P                  4        F#  pVP                  V P                  V4      4       K%  	  VP                  4       uuRRR4       #   + '       g   i     R# ; i)r    T)r   zTREE_GUARD_MANAGER:r%   get_epilogue_lambda_guardsN)r   r   r   r   r  r   hasattrr  r  r  getvalue)r   r  r{  s   &  r   __str__GuardManagerWrapper.__str__  s    5577+-DDMNN24N0NN0dNCNN-.))$))T:tyy">??!YYAACEOOD$8$8$?@ D==? 8777s   CC55D	c                    V ^8  d   QhRRRR/# r   xr   r   r   r   )r   s   "r   r   r     s     " "s "t "r   c                	8    V P                   P                  V4      # r   )r   checkr   r  s   &&r   r  GuardManagerWrapper.check  s    yyq!!r   c                    V ^8  d   QhRRRR/# )r   r  r   r   r   r   )r   s   "r   r   r     s     * *s *~ *r   c                	8    V P                   P                  V4      # r   )r   check_verboser  s   &&r   r  !GuardManagerWrapper.check_verbose  s    yy&&q))r   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r     s      4 r   c                	j   a aaa \        4       oR  R loR VVV V3R lloS! S P                  4       R# )c                    V ^8  d   QhRRRR/# )r   
leaf_guardr"   r   r|  r   )r   s   "r   r   KGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.__annotate__  s     	 	y 	Y 	r   c                    . pV P                  4        F:  pVP                  R 4      ^ ,          P                  4       pVP                  V4       K<  	  V# )#)r   splitrstripappend)r  r   verbose_code_part	code_parts   &   r   get_code_partsMGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.get_code_parts  sP    J%/%B%B%D!-33C8;BBD	!!), &E r   c                    V ^8  d   QhRRRR/# )r   r3  r   r   r   r   )r   s   "r   r   r    s     	! 	!| 	! 	!r   c                \  < V P                  4        Fw  p\        V\        4      '       d>   VS9  d5   SP                  P	                  S! V4      4       SP                  V4       KT  KV  SP                  P	                  S! V4      4       Ky  	  V P                  4        F  pS! V4       K  	  R # r   )r  r  r$   r   rD  r  r  )r3  r{  r  r  relational_guards_seenr   r  s   &  r   r  DGuardManagerWrapper.populate_code_parts_for_debugging.<locals>.visit  s    ,,.e_55$::..~e/DE.2259 ; OO**>%+@A / !335	i  6r   N)r   r   )r   r  r  r  s   f@@@r   !populate_code_parts_for_debugging5GuardManagerWrapper.populate_code_parts_for_debugging  s(    !$		! 	! 	diir   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   __doc__r   r   r   r  r#  r"  r!  r'  rl  r  r  r  r  r  r  r  r  r   r   r   r   r   r   
  sq    @, 3 3/'b*+X*t>2
A?@#"* r   r   c                    V ^8  d   QhRRRR/# )r   ar   r   torch.Tensorr   )r   s   "r   r   r     s     T T# T, Tr   c                   \         P                  P                  4       ;_uu_ 4        \        V \        P
                  \        P                  34      '       d   \         P                  ! V 4      MT uuR R R 4       #   + '       g   i     R # ; ir   )rS  	overrides_enable_torch_functionr  npgenericndarray	as_tensor)r  s   &r   
from_numpyr    sN     
	/	/	1	1%/BJJ

3K%L%Luq!RS 
2	1	1	1s   AA::B	c                   V ^8  d   QhRR/# )r   r   zset[str]r   )r   s   "r   r   r     s     . .X .r   c                     ^ RI p ^ RIp V P                  P                  V P                  P                  .p^ RIHp VP                  V4       V Uu0 uF  p\        P                  ! V4      kK  	  up# u upi )r   N)POLYFILLED_MODULES)
torch._dynamo.external_utilstorch._dynamo.polyfills_dynamoexternal_utils	polyfillstorch._dynamo.polyfills.loaderr  rD  inspectgetfile)rS  modsr  ms       r   uninteresting_filesr    sY    '"MM((%--*A*ABDA 	KK"#(,-1GOOA---s   A2dict[str, object] | None_CLOSURE_VARSc                   V ^8  d   QhRR/# )r   r   dict[str, object]r   )r   s   "r   r   r     s      , r   c                 0   \         Ef	   / R\        bR\        bR\        P                  P
                  bR\        bR\        bRR bR\        bR	\        bR
\        bR\        bR\        bRR bR\        bR\        bR\        P                   bR\"        f   R M\"        P                   bR\%        R4      bR\&        P(                  R\*        P,                  P.                  R\*        P0                  R\2        R\*        P4                  R\*        R\6        /Cs \         # )N___check_type_id___check_obj_id___odict_getitem___key_to_id___dict_version___dict_containsc                ,    \         P                  W4      # r   )rC  __contains__)r  bs   &&r   <lambda>#_get_closure_vars.<locals>.<lambda>  s    T->->q-Dr   ___tuple_iterator_len___normalize_count_iter___normalize_range_iter___tuple_iterator_getitem___dataclass_fields___namedtuple_fieldsc                    V P                   # r   _fieldsr  s   &r   r  r    s    aiir   #___get_torch_function_mode_stack_at___get_current_stream__math_isnan__numpy_isnaninf__load_moduleutils_devicedevice___from_numpy___as_tensorrS  r  )r  r   r   collectionsOrderedDict__getitem__r   r   r   r   r   r   r   r   r   mathisnanr  float	importlibimport_modulerS  utils_devicer  r  _as_tensor_fullprecr  r   r   r   _get_closure_varsr    sJ   

|
  7 7 C C
 I	

 |
  D
 $%7
 &';
 &';
 ()?
 "#3
 #$7
 23S
 $%7
 DJJ
  RZTRXX!
" 5<#
$ Y44EKK//ellZE55Uw1
4 r   c                    V ^8  d   QhRRRR/# )r   r   ast.ASTr   r   r   )r   s   "r   r   r     s     / /w /3 /r   c                N    \         P                  ! V 4      P                  R R4      # )
r  )astunparsereplace)r   s   &r   _ast_unparser    s    ;;t$$T2..r   c               $    V ^8  d   QhRRRRRR/# )r   r  r   r{  Guard | Noner   r   )r   s   "r   r   r     s!     % %S % %# %r   c                   R pVe   VP                   '       dg   \        VP                   4       FL  pVP                  \        4       9  g   K  R\	        VRR7       2p\        V4      R8  d   R\	        V4       2p MW	  MTVP                  '       dC   VP                  P                  4       p\        V4      ^ 8  d   R\	        VR,          4       2pMRpV R V 2# )r  z  # T)r   i   z  # <unknown>z<60)
user_stackreversedfilenamer  rL   r   stacksummary)r  r{  extrafsr   s   &&   r   get_verbose_code_partr#    s    Eu//0;;&9&;;"<#>"?@E5zD( #'|B'7&8 9 1 [[[kk))+G7|a|GBK89:'_UG$$r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r   zstr | list[str]r{  r  recompile_hintr  r   r|  r   )r   s   "r   r   r   '  s0        	r   c                    \        V \        4      '       g   V .p V  Uu. uF  p\        W14      NK  	  ppVe/   \        VP                  4      pV'       d   V'       d   V RV 2MTpV'       d   V Uu. uF
  qf RV R2NK  	  ppV# u upi u upi )Nr   (HINT: r  )r  listr#  _get_closure_var_hintoriginating_source)r   r{  r%  r  r   closure_hintr  s   &&&    r   get_verbose_code_partsr,  '  s    
 j$'' \
 BLAKIi/   ,U-E-EF7E<.>"23<  ;M
;M4fH^,A.;M 	 
 '
s   B2Bc                    V ^8  d   QhRRRR/# )r   r  Source | Noner   r  r   )r   s   "r   r   r   E  s      - J r   c                &   V f   R# V P                   pT pVey   \        V\        4      '       d=   VP                  '       d+   V\	        VP                   4      R pRVP                   RV 2# \        V\
        4      '       d   VP                  MRpK|  R# )z
Walk up the source chain to find a CellContentsSource ancestor.
Returns a hint like 'guard on "varname".attr' or None if not found.
Nz
guard on "")namer  rW   freevar_namer   rX   base)r  	full_namecurrentpath_suffixs   &   r   r)  r)  E  s    
 ~I#G

g122w7K7K7K
 $C$5$78K 4 45Q{mDD",Wm"D"D',,$r   c                    V ^8  d   QhRRRR/# )r   dimr   r   z
int | Noner   )r   s   "r   r   r   [  s     ' ' '
 'r   c                    V f   R # \        V 4      '       g   V # \        V \        P                  4      '       g   Q hV P                  P                  4       # r   )rH   r  rS  SymIntr   maybe_as_int)r8  s   &r   convert_int_to_concrete_valuesr<  [  sD    
{s
#u||,,,,xx$$&&r   c                    V ^8  d   QhRRRR/# )r   size_or_stride	list[Any]r   list[int | None]r   )r   s   "r   r   r   e  s     K Ky K=M Kr   c                B    V  Uu. uF  p\        V4      NK  	  up# u upi r   )r<  )r>  r8  s   & r   convert_to_concrete_valuesrB  e  s     ;IJ>C*3/>JJJs   c               4    V ^8  d   QhRRRRRRRRRR	R
RRR/# )r   valuer  r1  r   sizesr@  stridespytyperc  dispatch_keysr   r   r   )r   s   "r   r   r   i  sN      
  	
  " 	r   c                <   V\         P                  P                  4       ,          \         P                  P                  4       ,
          pV P                  pV P
                  P                  pV P                  p	R V RVP                   RV RV RV RV	 RV RV R2p
V
# )zcheck_tensor(r  z	, device=z, requires_grad=z, size=z	, stride=r  )	rS  _C_dispatch_tls_local_include_set_dispatch_tls_local_exclude_setdtyper  r   requires_gradr   )rD  r1  rE  rF  rG  rH  dispatch_keyrM  device_indexrN  	guard_strs   &&&&&&     r   get_tensor_guard_code_partrR  i  s     	@@BB0023L KKE<<%%L''M
vR 3 34B|nBug N/geWIV]U^^_	a  r   c               $    V ^8  d   QhRRRRRR/# )r   dctdict[Any, Any]keyr   r   r   r   )r   s   "r   r   r   ~  s!     3 3~ 3C 3C 3r   c                H    \        \        V 4      4      P                  V4      # r   )r(  r   r   )rT  rV  s   &&r   get_key_indexrX  ~  s     
 !#&'--c22r   c               $    V ^8  d   QhRRRRRR/# )r   r  r   r   r   r   r   )r   s   "r   r   r     s!     1 1 1S 1S 1r   c                    R V  RV R2# )list(dict.keys())[]r   )r  r   s   &&r   get_key_index_sourcer^    s    VHCwa00r   c                    V ^8  d   QhRRRR/# )r   objr   r   r	   r   )r   s   "r   r   r     s        r   c                T    \        R \        V 4       RV  R2R,           R,           4      h)Type  for object  cannot be saved @into torch.compile() package since it's defined in local scope. @Please define the class at global scope (top level of a module).)	TypeErrorrc  )r`  s   &r   raise_local_type_errorrh    s8    

S	{,se+<=
L	M
L	M r   c                    V ^8  d   QhRRRR/# )r   rD  r   r   r   r   )r   s   "r   r   r     s     . . . .r   c                J    \        V \        P                  P                  4      # r   )r  rS  rW  rX  )rD  s   &r   $should_optimize_getattr_on_nn_modulerk    s    eUXX__--r   T)frozenc                  B    ] tR tRt$ RtR]R&   RtR]R&   RtR]R&   R	tR# )
NNModuleAttrAccessorInfoi  Fr   present_in_generic_dictNr  l1_keyl2_keyr   )	r   r   r   r   ro  __annotations__rp  rq  r   r   r   r   rn  rn    s'     %*T) FJ FJr   rn  c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r   r  z-DictGetItemSource | DictSubclassGetItemSourcebase_guard_managerr   base_example_valuer   example_valueguard_manager_enumGuardManagerTyper   r   r   )r   s   "r   r   r     sD     * *9*(* * 	*
 )* *r   c                   V P                   P                  p\        V P                  \        4      '       d   V P                  P                  pM-\        V\
        4      '       g   Q h\        W P                  4      p\        WV4      p\        \        V4      4      V,          p\        V\        \        34      '       d   V R V: R2p	MV R V R2p	\        V P                  \        4      '       gP   VP                  VVV P                  \        P                  R7      P                  V P                  V RV: 2.R4       VP!                  VV	VVR7      # )[r]  r   r  rv  rw   == N)r3  r1  r  r   r\   rC  rX  r^  r(  r   r   r   get_key_managerrx  GUARD_MANAGERadd_equals_match_guardget_value_manager)
r  rt  ru  rv  rw  base_source_namer   
key_sourcekey_example_valuevalue_sources
   &&&&&     r   getitem_on_dict_managerr    sA    {{''&,, 233"",d33330,,?%&6>J ./ABCEJ#c3Z00*+1->,AC*+1ZL:fll$677 	** ,,/==	 	+ 	

 !
 LLj\.?-BCDd
 //#-	 0  r   c                    V ^8  d   QhRRRR/# r   r{  r9   r   r   r   )r   s   "r   r   r     s     
G 
G% 
GD 
Gr   c                    V P                   p\        V\        4      '       d   R # V P                  4       '       d   R# VP	                  4       ;'       d    \        V\
        4      '       * # FT)r*  r  rr   is_specialized_nn_moduleis_dict_keyrk   )r{  r  s   & r   match_on_id_for_tensorr    sS    %%F &+,,%%''FF
6:(F$FFr   c                  ,    ] tR tRt$ R]R&   R]R&   RtR# )GuardCodeListi  r|  	code_listr9   r{  r   Nr   r   r   r   rr  r   r   r   r   r  r    s    Lr   r  c                      ] tR tRt^t^tRtR# )rx  i  r   N)r   r   r   r   r~  DICT_GUARD_MANAGERr   r   r   r   rx  rx    s    Mr   rx  c                    V ^8  d   QhRRRR/# )r   r   r   r   r|  r   )r   s   "r   r   r     s     8 8 8I 8r   c                <    \        \        \        V 4      4      4      # r   )r(  r  r   )r   s   &r   r   r     s    /5677r   c                  0    ] tR tRt$ RtR]R&   R]R&   RtR# )GuardCheckSpeci  u  Lightweight guard evaluation for subgraph reuse during tracing.

WHY IS THIS NEEDED?
Normal guards are collected during tracing, installed via GuardBuilder, and
evaluated in C++ at runtime. GuardCheckSpec serves a different purpose: we
want to evaluate a guard *during tracing* to check whether a previously
traced partial subgraph can be reused. The guard is collected during the
first trace of subgraph and then evaluated with a new source value before we
begin tracing the second subgraph.

Existing C++ guards don't satisfy this need because they're designed for
runtime evaluation, not mid-trace comparisons with different source values.

NB - This separate spec table *increases maintenance burden*, but each
handler is small and the number of guard types is finite, so it's tractable.

get_metadata_fn: (guard, value) -> metadata  — captures the minimum
    information from the guarded value at build time.
eval_fn: (value, metadata) -> bool  — re-evaluates the guard at lookup
    time using a fresh value and the previously saved metadata.
r   get_metadata_fneval_fnr   N)r   r   r   r   r  rr  r   r   r   r   r  r    s    , Lr   r  c                    V ^8  d   QhRRRR/# )r   r  r  r   tuple[Any, ...]r   )r   s   "r   r   r     s     E E| E Er   c                |    V P                   V P                  4       V P                  V P                  V P                  3# r   )shapestriderM  r  rN  )r  s   &r   extract_tensor_metadatar    s)    GGQXXZ!((AOODDr   c               $    V ^8  d   QhRRRRRR/# )r   r{  r   rD  r   r  r   )r   s   "r   r   r     s!     - -S - - -r   c                x    \        VP                  4       ^,          4      p\        V4      p\        VR4      pW#V3# )r   __metadata_guard__)r   __tensor_flatten__rc  r  )r{  rD  metadataclshas_custom_guards   &&   r   extract_subclass_metadatar    s=    002156H
u+Cu&:;+,,r   c               $    V ^8  d   QhRRRRRR/# )r   rD  r   r  r  r   r   r   )r   s   "r   r   r     s!     ; ;3 ;/ ;d ;r   c                    Vw  r#pV'       d'   VP                  W P                  4       ^,          4      # V P                  4       ^,          V8H  # r   r  r  )rD  r  saved_metadatar  r  s   &&   r   check_subclass_metadatar    sI    ,4)N)%%n6N6N6PQR6STT##%a(N::r   c               $    V ^8  d   QhRRRRRR/# r   r{  r   rD  r   r   )r   s   "r   r   r   %  s!       C C r   c                    \        V4      # r   r   r{  rD  s   &&r   extract_dtensor_specr  %  s    E?r   c               $    V ^8  d   QhRRRRRR/# r   rD  r   r  r   r   r   )r   s   "r   r   r   *  s!     ; ;c ;S ;T ;r   c                (    V P                  VR R7      # )T)skip_shapes)_check_equalsrD  r  s   &&r   check_dtensor_specr  *  s    xT::r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   /  s!     1 1c 1# 1# 1r   c                    \        \        V4      4      pV'       d   VP                  '       g   R # \        VP                  V4      4      # r   )rA   rc  guard_fnr   )r{  rD  opaque_infos   && r   extract_opaque_objr  /  s7    %d5k2Kk222K((/00r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   7  s!     3 3C 33 34 3r   c                    Vf   R# \        \        V 4      4      pV'       d   VP                  '       g   VR J # VP                  V 4      V8H  # NT)rA   rc  r  )rD  r  r  s   && r   check_opaque_objr  7  sH    %d5k2Kk2224&(22r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   A  s!      3 s s r   c                    \        V4      \        P                  J d   \        VR 4      '       d   VP                  # \        V4      # __code__rc  rY  rZ  r  r  idr  s   &&r   extract_closurer  A  s4    E{e(((WUJ-G-G~~e9r   c               $    V ^8  d   QhRRRRRR/# r  r   )r   s   "r   r   r   H  s!     ! ! ! ! !r   c                    \        V 4      \        P                  J d!   \        V R 4      '       d   V P                  VJ # \        V 4      V8H  # r  r  r  s   &&r   check_closurer  H  s>    E{e(((WUJ-G-G~~))e9  r   c                    V ^8  d   QhRRRR/# )r   rD  r   r   r   )r   s   "r   r   r   N  s     ? ? ? ?r   c                    ^RI Hp V F  p\        W4      '       g   K  V! V 4      u # 	  \        R\	        V 4       24      h)zBExtract the base constant value from a constant subclass instance._CONSTANT_BASE_TYPESzNot a constant subclass: )variables.user_definedr  r  rg  rc  )rD  r  r  s   &  r   _constant_subclass_base_valuer  N  s<    <!eU8O " /U}=
>>r   c                ,   a \        WR7      oV3R lpV# )z<Attach a GuardCheckSpec to a guard method for auto-dispatch.r  r  c                   < SV n         V # r   )guard_check_spec)fnhandlers   &r   	decorator,register_guard_check_spec.<locals>.decorator_  s    %	r   )r  )r  r  r  r  s   && @r   register_guard_check_specr  X  s    
 _NG r   c                    \         V n        V # )z:Mark a guard method as skipped during auto-cache dispatch.)
SKIP_GUARDr  r  s   &r   skip_guard_check_specr  f  s    $BIr   c                  F    ] tR tRtRtR R lt]R 4       t]R 4       tRt	R# )	UnsupportedGuardCheckSpecil  z|Sentinel for guards with no check spec yet.

Raises NotImplementedError if get_metadata_fn/eval_fn are accidentally called.
c                    V ^8  d   QhRRRR/# )r   r1  r   r   r   r   )r   s   "r   r   &UnsupportedGuardCheckSpec.__annotate__r  s      S T r   c                	    Wn         R # r   _name)r   r1  s   &&r   r   "UnsupportedGuardCheckSpec.__init__r  s    
r   c                	2    \        R V P                   24      hz%Guard check spec not implemented for NotImplementedErrorr  r   s   &r   r  )UnsupportedGuardCheckSpec.get_metadata_fnu      !$I$**"VWWr   c                	2    \        R V P                   24      hr  r  r   s   &r   r  !UnsupportedGuardCheckSpec.eval_fny  r  r   r  N)
r   r   r   r   r  r   propertyr  r  r   r   r   r   r  r  l  s8    
 X X X Xr   r  c                :    \        V P                  4      V n        V # )z;Mark a guard method as unsupported for auto-cache dispatch.)r  r   r  r  s   &r   unsupported_guard_check_specr  ~  s    3BKK@BIr   c                  z   ] tR tRtRR R lltR R ltR R lt]R	 R
 l4       tR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltRR R lltRR R lltR R ltR R  lt]! R! R" R#7      RR$ R% ll4       t]! R& R' R#7      RR( R) ll4       t]! R* R+ R#7      R, R- l4       t]R. R/ l4       t]! R0 R1 R#7      R2 R3 l4       t]! R4 R5 R#7      R6 R7 l4       t]! R8 R9 R#7      R: R; l4       t]! R< R= R#7      R> R? l4       t]! R@ RA R#7      RB RC l4       t]! RD RE R#7      RF RG l4       t]! RH RI R#7      RRJ RK ll4       t RRL RM llt!]! RN RO R#7      RRP RQ ll4       t"]! RR RS R#7      RT RU l4       t#]$RV RW l4       t%]$RX RY l4       t&]$RZ R[ l4       t']! ](])R#7      R\ R] l4       t*]! ]+],R#7      R^ R_ l4       t-]! ].]/R#7      R` Ra l4       t0]! Rb Rc R#7      RRd Re ll4       t1]! Rf Rg R#7      Rh Ri l4       t2]! Rj Rk R#7      Rl Rm l4       t3]! Rn Ro R#7      Rp Rq l4       t4]! Rr Rs R#7      Rt Ru l4       t5]! Rv Rw R#7      Rx Ry l4       t6]! Rz R{ R#7      R| R} l4       t7]! ]8]9R#7      R~ R l4       t:]! R R R#7      R R l4       t;]! R R R#7      R R l4       t<]! R R R#7      R R l4       t=]! R R R#7      R R l4       t>]! R R R#7      R R l4       t?]$R R l4       t@]! R R R#7      R R l4       tA]! R R R#7      R R l4       tB]! R R R#7      R R l4       tC]! R R R#7      R R l4       tD]$R R l4       tE]$R R l4       tF]$R R l4       tG]$R R l4       tH]$R R l4       tI]$R R l4       tJ]$R R l4       tK]! R R R#7      RR R ll4       tLRR R lltMRtNR# )GuardBuilderi  Nc               H    V ^8  d   QhRRRRRRRRR	R
RR
RRRRRRRRRRRR/# )r   f_coder   id_refzCallable[[object, str], int]
source_refzCallable[[Source], str]lookup_weakrefsz.Callable[[object], weakref.ref[object] | None]local_scoper  r   r  r   check_fn_managerCheckFunctionManagersave_guardsr   runtime_global_scoper  guard_filter_fn=Callable[[Sequence[GuardFilterEntry]], Sequence[bool]] | Noner   r   r   )r   s   "r   r   GuardBuilder.__annotate__  s     LF LFLF -LF ,	LF
 HLF 'LF (LF +LF /LF LF 7LFLF 
LFr   c                	8   Wn         W n        W0n        W@n        R VRV/V n        / V n        T
;'       g    TV n        \        P                  P                  4       V P                  R&   \        P                  P                  P                  P                  4        F[  w  ppVP                  RR4      P                  RR4      P                  RR4      pWP                  R,          V&   WP                  V&   K]  	  Wpn        . V n        . V n        . V n        . V n        . V n        Wn        / V n        Wn        Wn        \5        4       V n        V P,                  P8                  f   Q hV P,                  P8                  P:                   F8  pV P=                  V4      pV P6                  P?                  \A        V4      4       K:  	  / V n!        / V n"        \5        4       V n#        . V n$        \J        PL                  ;'       d    \O        R	4      V n&        \Q        4       V n)        R# )
LG__builtins__>_<._dot_N!pytorch/compiler:guard_nn_modules)*r  r  r  r  scopesrc_get_value_cacher  builtins__dict__copyrS  packagepackage_importer_package_imported_modulesr  r  r  argnamesr   shape_env_codeno_tensor_aliasing_names!no_tensor_aliasing_guard_managersr  guard_tree_valuesr  r  r   key_order_guarded_dict_idsoutput_graphguard_on_key_ordergetr  r  r   _cached_guard_managers_cached_duplicate_input_guardsobject_aliasing_guard_codesrO   guard_nn_modulesrD   rK   already_added_code_parts)r   r  r  r  r  r  r   r  r  r  r  r  r1  package_moduler  dict_objs   &&&&&&&&&&&&    r   r   GuardBuilder.__init__  s    $.47c<3X
9; $8$H$HL!%-%6%6%;%;%=

>" ]]++EEKKM
<<S)11#s;CCCQD/=JJ~&t,-JJt N +#%)+	
 46 46%EG.6F13&. +.%'$$11===++88KKFxx'H++//8= L BD @B#DGE+BD( & 7 7 !
 !
O/=
 :D%r   c               $    V ^8  d   QhRRRRRR/# )r   rv  rU  r{  r9   r   r   r   )r   s   "r   r   r    s$      +49	r   c                	l   V P                  V4      p\        V\        4      '       d   \        R VP                   24      hVP
                  P                  p\        V4       FO  pW,          p\        VP
                  VR7      pV P                  Wq4      pVP                  VV RV: R2VVR7       KQ  	  R# )zsNot expecting a DictGuardManager. Seems like Dynamo incorrectly added the dict to tx.output.guard_on_key_order for )r   rz  r]  rV  r  rv  rw  N)
get_guard_managerr  r   r  r1  r*  r   r`   get_guard_manager_typedict_getitem_manager)	r   rv  r{  dict_mgrdict_sourcerV  rD  r  rw  s	   &&&      r   #guard_on_dict_keys_and_ignore_order0GuardBuilder.guard_on_dict_keys_and_ignore_order  s     ))%0h 011%FFKjj\S  ..33 %]3C!&E,U-E-ESQL!%!<!<" ))%awa0##5	 *  4r   c               $    V ^8  d   QhRRRRRR/# )r   rD  rU  r{  r9   r   r   r   )r   s   "r   r   r    s"     ' '. ' 'SW 'r   c                	^   V P                  V4      p\        V\        4      '       g   \        R VP                   24      h\        V\        4      '       g   Q h\        \        V4      4       F  w  rE\        VP                  V4      pVP                  VVV\        P                  R7      p\        V4      '       dB   V P                  WV4      pVP                  V\        RV RV R2V4      VP                  4       K  VP!                  V\        V RV: 2V4      VP                  4       K  	  R# )z_Expecting a DictGuardManager. Seems like Dynamo forgot to set the right guard manager enum for r{  z__check_obj_id(r  r  r|  N)r&  r  r   r  r1  	enumerater   r^  r}  rx  r~  r   r  add_id_match_guardr,  r  r  )	r   rD  r{  r)  r  rV  r  key_managerid_vals	   &&&      r   guard_on_dict_keys_and_order)GuardBuilder.guard_on_dict_keys_and_order  s+    ))%0($455%;;@::,H  ($45555 ""3E":;HC-ejj#>J"22!!#3#A#A	 3 K ~~S5..*)*RxqA5 $$ 22*j\cW+EuM$$) <r   c                    V ^8  d   QhRRRR/# )r   rv  r   r   
Any | Noner   )r   s   "r   r   r    s      s z r   c                	    \         P                  '       dH   \        P                  R8  d3   \        P                  R8  d   \        P
                  ! R\        4       R# V # )   zMGuards may run slower on Python 3.13.0. Consider upgrading to Python 3.13.1+.N)r8     )r8  r9  r   )rO   issue_3_13_0_warningsysversion_infowarningswarnRuntimeWarning)rv  s   &r   '_get_generic_dict_manager_example_value4GuardBuilder._get_generic_dict_manager_example_value  sI     '''  G+  :-MM_ r   c               8    V ^8  d   QhRRRRRRRRRR	R
R	RRRR/# )r   r  rT   rt  r   ru  r   rv  r  r   source_namerw  rx  r   r   )r   s   "r   r   r  ,  sd     Y YY )Y  	Y
 Y Y Y -Y 
Yr   c           	        R R lpVP                   p	VP                  p
\        4       p\        P                  ! VP
                  4       F,  pVP                  VP                  P                  4       4       K.  	  \        RRR4      pW9   d   \        RV	R4      pMkRV
9   d   WR,          9   d   \        RRV	4      pMIRV
9   d   WR,          9   d   \        RRV	4      pM'W9  d"   RV
9   d   WR,          9   d   \        RRV	4      pVP                  '       g    VP                  VP                   VVVR	7      # VP                  '       g   Q hVP                  pVP                  pV R
2pR;ppR;ppR;ppV'       dS   \        VP                  V4      pVP                  pW,          pV P!                  VV4      pTpTpV P!                  W4      pMTpTpV P!                  W4      pVP#                  VV P%                  V
4      \&        P(                  R7      pV! VVVV
VVR7      pV'       d   Ve   Vf   Q hV! VVVVVVR7      # V# )a  
This tries to avoid calling the expensive nn module custom getattr method by
checking if the attribute is accessible via __dict__. For attributes that
are not accessible via __dict__ (like descriptors), we fallback to
PyObject_GetAttr.

There are two cases that we optimize for
1) attributes present directly in __dict__, e.g training.
2) parameters/buffers/modules - they can be accessed via _parameters,
_buffers, _modules keys in __dict__. For example, mod.linear can be
accessed as mod.__dict__["_parameters"]["linear"]

The most common and expensive case for nn module guards is of type
mod.submod1.submod2.submod3.training. We avoid the python getattr of nn
modules by going through the __dict__.
c               4    V ^8  d   QhRRRRRRRRRRR	R
RR/# )r   r3  r   rV  r   rC  r   ru  rv  rw  rx  r   r   )r   s   "r   r   7GuardBuilder.getattr_on_nn_module.<locals>.__annotate__G  sN     #	 #	#	#	 #	 !$	#	
 #	 !1#	 #	r   c                    \        V \        4      '       de   \        W14      pR V RV: R2pV P                  VVV\        P
                  R7      P                  W RV: 2.R4       V P                  VVVVR7      # V P                  VVVVR7      # )r[  r\  r]  r{  r|  Nr%  )	r  r   rX  r}  rx  r~  r  r  r(  )r3  rV  rC  ru  rv  rw  r   r  s   &&&&&&  r   getitem_on_dict_mgr>GuardBuilder.getattr_on_nn_module.<locals>.getitem_on_dict_mgrG  s     #/00 &&8>  /{m3uiqI
##%"%'7'E'E	 $ 
 )(T#/I.JDQ ,,&"/'9	 -   //&"/'9	 0  r   FNT_parameters_buffers_modulesattrr  rv  rw  	.__dict__r  rv  rw  )r3  rV  rC  ru  rv  rw  )memberr  r   r  getmror   updatekeysrn  ro  getattr_managerrp  rq  rT   r3  r1  r'  get_generic_dict_managerr@  rx  r~  )r   r  rt  ru  rv  r  rC  rw  rH  	attr_namemod_dictall_class_attribute_namesr  accessor_inforp  rq  mod_dict_sourcel1_source_namel2_source_namel1_valuel2_valuel1_guard_manager_enuml2_guard_manager_enum	l1_sourcemod_generic_dict_managerl1_mgrs   &&&&&&&&                  r   getattr_on_nn_module!GuardBuilder.getattr_on_nn_module,  sz   6#	J MM	%...1e! 2 < <=A%,,QZZ__->? > 1dC 4T9dKMh&98O+O4T=)TM8#	j5I(I4T:yQM6h&j11 5T:yQM444 &55]]"+#5	 6   !'''''"))F"))F "2 2)<O.22N^"&&Hx<@@!$9&v{{F;	!*#+ )-(C(CIx(X%!,((,(C(C)% "-((,(C(C)% (:'R'R&"JJ8T#3#A#A (S ($ ),*#+&#8F %16K6WWW* .'/"*'<  Mr   c                    V ^8  d   QhRRRR/# )r   r  r=   r   r   r   )r   s   "r   r   r    s     9 9& 9T 9r   c                	|    VP                   pVR 8X  d   R# \        V P                  V4      4      pW0P                  9   # )r  F)r1  r  r  r  )r   r  rC  obj_ids   &&  r   requires_key_order_guarding(GuardBuilder.requires_key_order_guarding  s8    kk"DHHV$%8888r   c               $    V ^8  d   QhRRRRRR/# )r   r  r=   rv  zAKeysView[Any] | set[Any] | frozenset[Any] | dict[Any, Any] | Noner   rx  r   )r   s   "r   r   r    s(     " """ 
"r   c                	P   \         P                  pV P                  V4      '       d   \        V\        4      '       d   \         P
                  pV# \        V\        \        34      '       d   \         P                  pV# \        V\        4      '       g   Q h\         P
                  pV# r   )	rx  r~  rj  r  r   r  r   	frozensetrC  )r   r  rv  rw  s   &&& r   r'  #GuardBuilder.get_guard_manager_type  s     .;;++F33-33%5%H%H" "! MC+;<< &6%C%C" "! "-6666%5%H%H"!!r   c                    V ^8  d   QhRRRR/# )r   mgr_enumrx  r   r   r   )r   s   "r   r   r    s     ? ?/? ?D ?r   c                	(    V\         P                  8H  # r   )rx  r  )r   rq  s   &&r   manager_guards_on_keys#GuardBuilder.manager_guards_on_keys  s    +>>>>r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r    s     
 
, 
r   c                	    V P                   P                  P                  V P                  R V P                  R ,          \
        P                  R7      # )r  )	f_globalsr  rv  rw  )r  r   globals_dict_managerr  r
  rx  r~  r   s   &r   get_global_guard_manager%GuardBuilder.get_global_guard_manager  sF    !!&&;;//**S//==	 < 
 	
r   c                    V ^8  d   QhRRRR/# )r   r  r=   r   r   r   )r   s   "r   r   r    s     \ \F \| \r   c           	     	  a V P                   P                  pR pSP                  pVR8w  d$   W@P                  9   d   V P                  V,          # VR8w  d)   V P	                  S4      pW0P
                  \        V4      &   V P                  SV4      pR pR pR p\        P                  p	\        S\        4      '       di   SP                  P                  pV P	                  SP                  4      pV P                  SP                  4      pV P                  SP                  V4      p	\        S\        4      '       dD   \!        V P"                  SP$                  4      p
VP'                  SP$                  V
3VVVR7      pEM_\        S\(        4      '       d0   V P+                  4       P-                  SP.                  VVVR7      pEM\        S\0        4      '       d0   V P+                  4       P3                  SP.                  VVVR7      pE
M\        S\4        4      '       d   V# \        S\6        4      '       d   V# \        S\8        4      '       d!   V'       g   Q hVP;                  VVVR7      pE
Mo\        S\<        4      '       d!   V'       g   Q hVP?                  VVVR7      pE
M9\        S\@        4      '       d!   V'       g   Q hVPC                  VVVR7      pE
M\        S\D        \F        \H        \J        \L        34      '       d   V'       g   Q hTpE	M\        S\N        4      '       d<   \P        PR                  ! SPT                  4      pVPW                  V3R lVVVR7      pE	My\        S\X        4      '       d   VPW                  V3R lVVVR7      pE	MH\        S\Z        4      '       d   VPW                  V3R lVVVR7      pE	M\        S\\        4      '       d!   V'       g   Q hVP_                  VVVR7      pEM\        S\`        4      '       d,   V'       g   Q hVPc                  SPd                  VVVR	7      pEM\        S\f        \h        \j        34      '       dx   V'       g   Q h\        S\f        4      '       g   Q h\m        V4      '       d$   V'       g   Q hV Po                  SVVVVVV4      pEM)VPq                  SPd                  VVVR	7      pEM\        S\r        \t        34      '       d   V'       g   Q h\        V\v        \x        Pz                  34      '       g   Q h\        S\r        \t        34      '       g   Q h\        V\|        4      '       d+   V P                  V	4      '       g   Q h\        SVVVV4      pEM\\        SP                  \        4      '       d   \        R
4      hVP-                  SP                  VVVR7      pEM\        S\        4      '       dI   \        VRSP                  P                  P                  4        R24      ! SP                  VVVR7      pEM\        S\        4      '       d,   V'       g   Q hVP                  SP                  VVVR7      pEMq\        S\        4      '       d,   V'       g   Q hVP                  SP                  VVVR7      pEM0\        S\        4      '       Ed   V'       g   Q h\        V\v        \x        Pz                  34      '       d   Q R4       h\        V\        4      '       d4   SP                  '       g"   VP                  SP                  VVVR7      pEM\        V\        4      '       d4   SP                  '       g"   VP                  SP                  VVVR7      pEMPSP                  pSP                  '       d   SP                  4       pVP                  VVVVR7      pEM\        S\        4      '       d   V'       g   Q hV'       g   Q h\        V4      '       g   Q hSP                  '       gL   VP                  VVP                  \        P                  R7      P                  SP                  VVVR7      pEMqVP                  pVf   Q hVR,           pVP                  VV\        P                  R7      p\        V\|        4      '       d   Q hVP-                  SP                  VVVR7      pEM\        S\        4      '       d&   V'       g   Q hVPW                  \        VVVR7      pEM\        S\        4      '       d#   V'       g   Q hVPW                  R VVVR7      pEM\        S\        4      '       d#   V'       g   Q hVPW                  R VVVR7      pEMP\        S\        4      '       d#   V'       g   Q hVPW                  R VVVR7      pEM\        S\        4      '       d#   V'       g   Q hVPW                  R VVVR7      pEM\        S\        4      '       d#   V'       g   Q hVPW                  R VVVR7      pEM\        S\        4      '       d#   V'       g   Q hVPW                  R VVVR7      pEMp\        S\        4      '       d,   V'       g   Q hVP                  SP                  VVVR7      pEM/\        S\        4      '       dC   \        V\|        4      '       g   \        R4      hVP                  SP                  VVVR7      pEM\        S\        4      '       d,   V'       g   Q hVP                  SP                  VVVR7      pEM\        S\        4      '       d!   V'       g   Q hVP                  VVVR7      pEM`\        S\        4      '       d!   V'       g   Q hVP                  VVVR7      pEM*\        S\        4      '       d"   V'       g   Q hVPW                  R VVVR7      pM\        S\        4      '       d"   V'       g   Q hVPW                  R VVVR7      pM\        S\        4      '       d    V'       g   Q hVP                  VVVR7      pM\        S\        4      '       d    V'       g   Q hVP                  VVVR7      pMR\        S\        4      '       d"   V'       g   Q hVPW                  R VVVR7      pM\        RS RSP                   24      hWP                  SP                  &   V# )Nr  r%  )global_namer  rv  rw  rP  c                    V# r   r   )r  r  s   &&r   r  <GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Q  s    !r   )python_lambdar  rv  rw  c                6   < \        SP                  4       4      # r   )r   
_get_indexr  r  s   &r   r  r  X  s    (H%%')r   c                .   < \        SP                  4      # r   )r   r  r  s   &r   r  r  a  s    (:6==(Ir   rM  zUExpecting clean index here. Likely Dynamo forgot to mark a dict as guard_on_key_ordertensor_property__manager)r  r  rv  rw  zUse DictGetItemSourcez.__kwdefaults__c                0    V P                  4       ^ ,          # r   r  r  s   &r   r  r    s    (<(<(>q(Ar   c                "    V P                  4       # r   )__obj_flatten__r  s   &r   r  r    s    (9(9(;r   c                >    V P                  4       P                  4       # r   )_typequalified_namer  s   &r   r  r    s    	(@(@(Br   c                "    V P                  4       # r   )get_baser  s   &r   r  r  #  s
    

r   c                "    V P                  4       # r   )itemr  s   &r   r  r  +  s
    r   c                .    \         P                  ! V 4      # r   )rS  r  r  s   &r   r  r  3  s    (A(A!(Dr   r{  z4ConstDictKeySource can only work on DictGuardManagerc                    \        V 4      # r   )r   r  s   &r   r  r  d  s
    (8(;r   c                    V P                   # r   r  r  s   &r   r  r  l  s    		r   c                    \        V 4      # r   )r   r  s   &r   r  r    s    Ar   zmissing guard manager builder z - )ur  r   r1  r  r  r  r  r'  rx  r~  r  rX   r3  get_guard_manager_from_sourcer   rn   r   r  
local_nameframelocals_managerrh   ry  r(  r}  rj   global_weakref_managerri   ru   r{   type_managerry   type_dict_managerrz   type_mro_managerrs   rp   r}   r|   re   rl   r
  r  module_namelambda_managerrw   r]   rk   grad_managerrf   generic_getattr_managerrQ  rT   rW   r~   rk  re  rU  r`   ra   rC  r  r  r   rs  r  r   r\   RuntimeErrorr3   getattrproplowerr  r,   indexed_managerrm   list_getitem_managerrg   r(  index_is_slicera  tuple_getitem_managerunpack_slicegetitem_managerr_   callableis_kwfunc_defaults_manager__defaults__idx_key__kwdefaults__func_kwdefaults_managerrr   r  rv   rc   rt   rS   rV   rd   rx   tuple_iterator_getitem_managerAssertionErrorr}  rq   set_getitem_managerr   weakref_call_managerrU   call_function_no_args_managerr^   ro   rZ   code_managerrY   closure_managerrb   )r   r  root_guard_managerrv  rC  rw  r  ru  rt  base_guard_manager_enumr   outmoduler   
kwdefaults	kw_sourcer)  s   &f               r   r  *GuardBuilder.get_guard_manager_from_source  s   !//44kk"0K0K!K..{;;" HHV,M8E""2m#45!88O  !!"2"@"@fm,,%{{//!%&++!6!%!C!CFKK!P&*&A&A/'#
 &+&&1$++v?P?PQO$88&&8"+#5	 9 C FL)) //1FF&&"+#5	 G C F/00//1HH".."+#5	 I C F-.. &%FN++%%FJ''%%%$11"+#5 2 C
 FN++%%%$66"+#5 7 C
 FM**%%%$55"+#5 6 C
 +2"	
 	
 &%%$CFL)),,V-?-?@F$33*03"+#5	 4 C F899$33 #+#5 4 C F/00$33I"+#5	 4 C FJ''%%%$11"+#5 2 C
 F-..%%%$<<]]"+#5	 = C Z!35ST
 
 &%%fj111134FGG'''//&&!$& )88&"/'9	 9  F.0IJKK%%%049P9P2QRRRRf'8:S&TUUUU,.>??223JKKKK-&&!& fll,>??&8  )==&"/'9	 >  F011""6;;#3#3#9#9#;"<HE JJ"+#5C FM**%%%$44JJ"+#5	 5 C F-..%%%$99LL"+#5	 : C FM**%%%!"T;+B+B$C  '&'  ,d33F<Q<Q<Q(==&"/'9	 >  .66v?T?T?T(>>&"/'9	 ?  ((("//1E(88&"/'9	 9  FN++%%%###.////<<<(>>+"4"A"A'7'E'E ?  "/&"/'9	 " 	  0>>
'333,/@@	 .EE$",'7'E'E F 
 &h0@AAAA33&"/'9	 4  F-..%%%$33("+#5	 4 C F233%%%$33A"+#5	 4 C F566%%%$33;"+#5	 4 C F;<<%%%$33B"+#5	 4 C FO,,%%%$334"+#5	 4 C F011%%%$330"+#5	 4 C F-..%%%$33D"+#5	 4 C F677%%%$CCll"+#5	 D C  23302BCC$J  %44ll"+#5	 5 C F;<<%%%$88ll"+#5	 9 C F-..%%%$99"+#5 : C
 F455%%%$BB"+#5 C C
 F122%%%$33;"+#5	 4 C F233%%%$331"+#5	 4 C FJ''%%%$11"+#5 2 C
 FM**%%%$44"+#5 5 C
 F/00%%%$33."+#5	 4 C !0FKK=I  47##FKK0
r   c                    V ^8  d   QhRRRR/# )r   r{  r9   r   r   r   )r   s   "r   r   r    s     L Lu L Lr   c                	8    V P                  VP                  4      # r   )r  r*  r   r{  s   &&r   r&  GuardBuilder.get_guard_manager  s    11%2J2JKKr   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r   r   r|  r   r   r  is_epiloguer   r   r   r   )r   s   "r   r   r    sC     Y YY &Y /	Y
 Y 
Yr   c                	   Vf   \        4       pRP                  VP                  4       4      p\        W4      w  rg/ pRV P                  R,          /p	\
        P                  RV4       \        WyV4       VR,          ! VP                  4       !  p
V'       d*   V P                  P                  P                  V
VR 4       R # V P                  P                  P                  WR 4       R # )Nr  r  zPython shape guard function:
%s___make_guard_fn)r  joinrT  build_guard_functionr
  
guards_logdebugexecrE  r  r   add_epilogue_lambda_guardadd_lambda_guard)r   r   r   r   r  make_guard_fn_args_guard_bodypycoder  globals_for_guard_fnr  s   &&&&&      r   $add_python_lambda_leaf_guard_to_root1GuardBuilder.add_python_lambda_leaf_guard_to_root  s     ,.L "YY|'8'8':;2:R  #TZZ_5;VDV3/)*L,?,?,AB ##==" ##44XSWXr   c               $    V ^8  d   QhRRRRRR/# )r   guard_or_sourcezGuard | Sourcer   dict[str, Any] | Noner   r   r   )r   s   "r   r   r    s(      ' , 
	r   c                	    \        V\        4      '       d   TpMVP                  pVf   \        4       pVP	                  V P
                  W P                  4      pV# r   )r  r=   r*  r  	get_valuer
  r  )r   r  r   srcrets   &&&  r   r  GuardBuilder.get  sN    
 ov..!C!44C,.LmmDJJ6N6NO
r   c                    V ^8  d   QhRRRR/# )r   r{  zstr | Guardr   r   r   )r   s   "r   r   r    s      [ S r   c                	X   \        V\        4      '       d   TpMVP                  p\        V4      pW0P                  9  dj   \
        P                  P                  P                  V4      pV'       d9   V^8X  d   \        P                  RV4       V P                  P                  V4       V# )r   zinvalid var name: %s)r  r   r1  strip_function_callr  rS  rJ  r  is_valid_var_namelogwarningr  )r   r{  r1  r3  is_valids   &&   r   arg_refGuardBuilder.arg_ref  s{    eS!!D::D"4(}}$xx''99$?Hq=KK 6>$$T*r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r{  r9   rW  r   r  z(Callable[[GuardBuilderBase, Guard], Any]r   r   r   )r   s   "r   r   r    s2        ;	
 
r   c                	    VR 8X  d   \        VP                  4      pM\        VP                  V4      p\        WCVP                  VP
                  R7      pVP                  V 4       R# )r  )r  r  N)rZ   r*  rT   r9   r  r  create)r   r{  rW  r  attr_source	new_guards   &&&&  r   _guard_on_attribute GuardBuilder._guard_on_attribute  sY     
"$U%=%=>K$U%=%=yIKAQAQ
	 	r   c                	    V P                   P                  R ,          \        WP                   P                  R ,          4      3# rN  )	create_fnkeywordsr  r  s   &&r   r  GuardBuilder.<lambda>  s0    OO$$V,E??33F;<.
r   c                	:    \        W^ ,          4      V^,          8H  # r   )r  r  s   &&r   r  r    s    {(CxPQ{(Rr   r  c               $    V ^8  d   QhRRRRRR/# )r   r{  r9   rN  r  r   r   r   )r   s   "r   r   r    s!     50 50U 50* 50 50r   c           	     	X   Vf   Q hVP                   p\        V\        4      '       d   VP                  pV P	                  V4      p\        V P                  V4      V4      pR pV'       d   RV RV: R2pM
RV RV: R2pW`P                  9   d   R # V P                  W.V P                  V4      R7       V P                  V4      pV'       d   \        W24      pV P                  V4      p	V P                  V4      p
V P                  W4      p\        V
4      '       d-   V P                  VVV
V	VP                  VP                  V4       MFVP                  VVP                  V	VR7       M&VP!                  V\#        Wa4      VP$                  4       V P                  P'                  V4       R # )Nhasattr(r  r  znot hasattr()provided_guarded_objectrM  )r*  r  rp   r3  r  r  r  r  _set_guard_export_infor  rT   r'  rk  re  r1  rU  add_no_hasattr_guardr,  r  r  )r   r{  rN  r  refvalr   base_managerr  rv  ru  rw  s   &&&         r   HASATTRGuardBuilder.HASATTR  s    ))fn--[[Fll5!dhhuot,cU"THA.D!#b2D000##6488E? 	$ 	
 99&A %V2K HH[1M!%%!%!<!<[!X 44FGG)) &!KK$$& ,, ::"/'9	 -  --,T95;K;K 	%%))$/r   c                	<    V P                   P                  R ,          # r  r  r  r  s   &&r   r  r  +  s    U__-E-Ef-Mr   c                	    WP                   9  # r   )r  r  s   &&r   r  r  ,  s    (Fr   c               $    V ^8  d   QhRRRRRR/# )r   r{  r9   rN  r6  r   r   r   )r   s   "r   r   r  .  s$     0 00",0	0r   c                	   Vf   Q hV P                  V4      pV P                  V4      pV P                  V4      pRV: RV R2pW`P                  9   d   R # VP                   R2pVP                  VV P                  VP                  4      \        P                  R7      pVP                  RV\        Wa4      VP                  4       V P                  P                  V4       R # )Nnot ___dict_contains(r  z
.__dict__)rO  rP  F)r  r  r&  r  r1  rV  r@  r  rx  r~  add_dict_contains_guardr,  r  r  )	r   r{  rN  r  r  r  r   r[  rc  s	   &&&      r   NOT_PRESENT_IN_GENERIC_DICT(GuardBuilder.NOT_PRESENT_IN_GENERIC_DICT*  s     ll5!hhuo--e4&thbZ@000"ZZL	2#/#H#H"FFs||T/== $I $
  	!88"4/		
 	%%))$/r   c                	    \        V4      # r   rc  r  s   &&r   r  r  K  s    T%[r   c                	    \        V 4      VJ # r   r  r  s   &&r   r  r  L  s    Ux(?r   c                    V ^8  d   QhRRRR/# r   r{  r9   r   r   r   )r   s   "r   r   r  N  s     
 
 
$ 
r   c           	     	J   V P                  V4      p\        V\        P                  P                  4      '       d    VP
                  '       d   VP
                  pM\        V4      pVP                  VP                  8w  d   R Vn	        V P                  VRVP                   R24      p\        V4      pRV P                  V4       RV RV 2pV P                  W.4       V P                  V4      P!                  V\#        WaRVP                   2R7      VP$                  4       R# )	Ttype(r  z___check_type_id(r  ), type=ztype )r%  N)r  r  rS  _subclasses
FakeTensorrG  rc  r   r   _unserializabler  r1  r  r  r  r&  add_type_match_guardr,  r  )r   r{  rD  r  ri  	type_reprr   s   &&     r   
TYPE_MATCHGuardBuilder.TYPE_MATCHJ  s     eU..99::u|||AUA>>QZZ' %)E!Q%

|1 56G	"4<<#6"7r&)U##E62u%::"eANN3C,D 	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  k       
 
% 
D 
r   c                	   V P                  V4      pV P                  V4      p\        V P                  V4      4      pR V RV 2pV P                  W.4       V P	                  V4      P                  V\        WQ4      VP                  4       R# )z___dict_version() == N)r  r  r   r  r&  add_dict_version_guardr,  r  )r   r{  r  r  versionr   s   &&    r   DICT_VERSIONGuardBuilder.DICT_VERSIONj  s     ll5!hhuotxx/!#eG95##E62 	u%<<'4e6F6F	
r   c                	<    V P                   P                  R ,          # rV  r  r  s   &&r   r  r  z      U__-E-Ee-Lr   c                	
    W9   # r   r   r  s   &&r   r  r  {      (9r   c               $    V ^8  d   QhRRRRRR/# r   r{  r9   rV  r   r   r   r   )r   s   "r   r   r  }  s!     0 05 0s 0t 0r   c                	&   V P                  V4      pR V: RV R2pW@P                  9   d   R# V P                  W.4       V P                  V4      P	                  RV\        WA4      VP                  4       V P                  P                  V4       R# )z___dict_contains(r  r  NTr  r  r  r&  r  r,  r  r  r   r{  rV  dict_refr   s   &&&  r   DICT_CONTAINSGuardBuilder.DICT_CONTAINSy  s    
 <<&"3'H:Q7000##E62u%=="4/		
 	%%))$/r   c                	<    V P                   P                  R ,          # r  r  r  s   &&r   r  r    r   r   c                	
    W9  # r   r   r  s   &&r   r  r        (=r   c               $    V ^8  d   QhRRRRRR/# r$  r   )r   s   "r   r   r    s!     0 0u 03 04 0r   c                	&   V P                  V4      pR V: RV R2pW@P                  9   d   R# V P                  W.4       V P                  V4      P	                  RV\        WA4      VP                  4       V P                  P                  V4       R# )r  r  r  NFr&  r'  s   &&&  r   DICT_NOT_CONTAINSGuardBuilder.DICT_NOT_CONTAINS  s    
 <<&&sgRz;000##E62u%=="4/		
 	%%))$/r   c                	<    V P                   P                  R ,          # r  r  r  s   &&r   r  r    r   r   c                	
    W9   # r   r   r  s   &&r   r  r    r"  r   c               $    V ^8  d   QhRRRRRR/# r   r{  r9   rV  r   r   r   r   )r   s   "r   r   r    s!     0 0% 0c 0d 0r   c                	*   V P                  V4      pTpR V RV: R2pWPP                  9   d   R# V P                  W.4       V P                  V4      P	                  RV\        WQ4      VP                  4       V P                  P                  V4       R# )zset.__contains__(r  r  NTr  r  r  r&  add_set_contains_guardr,  r  r  r   r{  rV  set_refr  r   s   &&&   r   SET_CONTAINSGuardBuilder.SET_CONTAINS  s    
 ,,u%"7)2dXQ7000##E62u%<<"4/		
 	%%))$/r   c                	<    V P                   P                  R ,          # r  r  r  s   &&r   r  r    r   r   c                	
    W9  # r   r   r  s   &&r   r  r    r-  r   c               $    V ^8  d   QhRRRRRR/# r5  r   )r   s   "r   r   r    s!     0 0e 0# 0$ 0r   c                	*   V P                  V4      pTpR V RV: R2pWPP                  9   d   R# V P                  W.4       V P                  V4      P	                  RV\        WQ4      VP                  4       V P                  P                  V4       R# )znot set.__contains__(r  r  NFr7  r9  s   &&&   r   SET_NOT_CONTAINSGuardBuilder.SET_NOT_CONTAINS  s    
 ,,u%&wir$;000##E62u%<<"4/		
 	%%))$/r   c                	    V# r   r   r  s   &&r   r  r        Ur   c                	
    W8H  # r   r   r  s   &&r   r  r        (9r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s       $ r   c                	   V P                  V4      pV P                  V4      p\        V\        4      '       g   Q hV R V: 2.pV P	                  W4       V'       d7   V P                  V4      P                  \        WA4      VP                  4       R# V P                  V4      P                  \        WA4      VP                  4       R# )r|  N)
r  r  r   r   r  r&  add_true_match_guardr,  r  add_false_match_guardr   r{  r  r  r   s   &&   r   
BOOL_MATCHGuardBuilder.BOOL_MATCH  s     ll5!hhuoc4    %tC7#$##E0""5)>>&t3U5E5E ""5)??&t3U5E5Er   c                	    R # r   r   r  s   &&r   r  r        Tr   c                	
    V R J # r   r   r  s   &&r   r  r    s    r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     

 

 

$ 

r   c                	    V P                  V4      pV P                  V4      pVe   Q hV R2.pV P                  W4       V P                  V4      P	                  \        WA4      VP                  4       R # )Nz is None)r  r  r  r&  add_none_match_guardr,  r  rK  s   &&   r   
NONE_MATCHGuardBuilder.NONE_MATCH  so     ll5!hhuo{{%x !##E0u%::"4/1A1A	
r   c                	    V# r   r   r  s   &&r   r  r    rD  r   c                	    WJ # r   r   r  s   &&r   r  r        (9r   c               $    V ^8  d   QhRRRRRR/# r   r{  r9   r%  r  r   r   r   )r   s   "r   r   r    s!     > >e >Z >4 >r   c                	$    V P                  W4      # r   )id_match_unchecked)r   r{  r%  s   &&&r   ID_MATCHGuardBuilder.ID_MATCH  s     &&u==r   c               $    V ^8  d   QhRRRRRR/# rZ  r   )r   s   "r   r   r    s$     %? %?%?,6%?	%?r   c                	d   \        VP                  \        4      '       d>   V P                  \	        VP                  P
                  \        P                  4      4      # V P                  V4      pV P                  V4      pV P                  WAP                  4      p \        V4      pRV RV RV 2pV P                  W.RR7       V P!                  V4      P#                  V\%        WqV4      VP&                  4       \        VP                  \(        4      '       dj   \        V\*        P,                  P.                  4      '       d>   VP                  P0                  pV P3                  V4      p	V	e   WP4                  V&   R# R# R# R#   \         d    R \        T4      P                   R2p ELi ; i)r  r  z___check_obj_id(r  r  r]  )provided_func_nameN)r  r*  r{   r  r9   r3  r  r  r  r  r1  r  	Exceptionrc  r   r  r&  r0  r,  r  rn   rS  rW  rX  r  r  r   )
r   r{  r%  r  r  r2  r  r   r  weak_ids
   &&&       r   r\  GuardBuilder.id_match_unchecked  s{    e..
;;??e..33\5L5LM  ll5!hhuoS**-	2S	I
 "#bD##E6j#Qu%88"4?	
 e..<< #uxx//"55@@
..s3&7>((4 ' 0	 =  	2 DI../q1I	2s   F $F/.F/c                	    R # r   r   r  s   &&r   r  r  '	  rO  r   c                	
    V R J# r   r   r  s   &&r   r  r  (	  	    T(9r   c               $    V ^8  d   QhRRRRRR/# r   r{  r9   rD  r6  r   r   r   )r   s   "r   r   r  *	  s!     	
 	
E 	
* 	
 	
r   c                	$   V P                  V4      pV P                  V4      p\        V\        P                  4      '       g   Q hV R 2pV P                  W.4       V P                  V4      P                  \        WQ4      VP                  4       R# z is not NoneN)
r  r  r  rS  rT  r  r&  add_not_none_guardr,  r  )r   r{  rD  r  r  r   s   &&&   r   NOT_NONE_MATCHGuardBuilder.NOT_NONE_MATCH&	  s{    
 ll5!hhuo#u||,,,,l###E62u%88"4/1A1A	
r   c                	"    VP                  4       # r   raw_reprr  s   &&r   r  r  6	  s    U^^-=r   c                	(    V P                  4       V8H  # r   rp  r  s   &&r   r  r  7	  s    (8H(Dr   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  9	  s     

 

E 

d 

r   c                	   V P                  V4      pV P                  V4      p\        V\        P                  P
                  4      '       g   Q hV R V: R2pV P                  V4      P                  V\        WA4      VP                  4       R# )z.raw_repr() == z.raw_repr()N)
r  r  r  rS  rJ  r   r&  add_dispatch_key_set_guardr,  r  )r   r{  r  r  r   s   &&   r   DISPATCH_KEY_SET_MATCH#GuardBuilder.DISPATCH_KEY_SET_MATCH5	  s{    
 ll5!hhuo#uxx667777uOC7+>
u%@@":5	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  G	  s     
 
 
$ 
r   c                	   V P                   P                  f   Q hV P                   P                  P                  pRV 2.pV P                  W4       V P                  P
                  P                  V\        W14      VP                  4       R # )Nz,torch.autograd.forward_ad._current_level == )	r  r  
dual_levelr  r  r   add_dual_level_match_guardr,  r  )r   r{  rz  r   s   &&  r   
DUAL_LEVELGuardBuilder.DUAL_LEVELF	  s~     $$11===**77BB
>zlKL##E0::"4/	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  V	  s     
 
5 
T 
r   c                	  aa V P                   P                  f   Q hV P                   P                  P                  pV Uu. uF  q3P                  4       NK  	  upoRS R2.pV P	                  W4       \
        P                  P                  P                  oR VV3R llpV P                  P                  P                  V\        WA4      VP                  4       R # u upi )Nz5torch._functorch.pyfunctorch.compare_functorch_state(r  c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   8GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.__annotate__b	  s     	& 	&# 	&$ 	&r   c                   < S! S4      # r   r   )r  
compare_fnstatess   &r   r  .GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.fnb	  s    f%%r   )r  r  functorch_layers	get_stater  rS  
_functorchpyfunctorchcompare_functorch_stater  r   r  r,  r  )r   r{  ciscir   r  r  r  s   &&    @@r   FUNCTORCH_STACK_MATCH"GuardBuilder.FUNCTORCH_STACK_MATCHU	  s     $$11===##00AA+./3R,,.3/GxqQR##E0 %%11II
	& 	& 	00&t3U5E5E	
 0s   Cc                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  k	  s     
 
% 
D 
r   c                	  aaaa \         P                  P                  P                  P                  o\         P                  P                  P                  P
                  oR  V3R lloS! S! 4       4      oRS 2.pV P                  W4       R VVV3R llpV P                  P                  P                  V\        W!4      VP                  4       R# )c                    V ^8  d   QhRRRR/# )r   hookszCtuple[Callable[[torch.Tensor], Any], Callable[[Any], torch.Tensor]]r   ztuple[int, ...] | Noner   )r   s   "r   r   ?GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.__annotate__q	  s     	) 	)V	)#	)r   c                V   < S! V 4      '       g   R # \        \        \        V 4      4      # r   )ra  mapr  )r  are_inline_hookss   &r   hooks_ids_fn?GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.hooks_ids_fnq	  s$     $E**R((r   zCtorch._functorch.aot_autograd.utils.top_saved_tensors_hooks ids == c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  	  s     	@ 	@# 	@$ 	@r   c                $   < SS! S! 4       4      8H  # r   r   )r  	get_hooksguard_hooks_idsr  s   &r   r  5GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.fn	  s    "l9;&???r   N)rS  r  _aot_autogradr  top_saved_tensors_hooks"saved_tensors_hooks_are_inlineabler  r  r   r  r,  r  )r   r{  r   r  r  r  r  r  s   &&  @@@@r   AUTOGRAD_SAVED_TENSORS_HOOKS)GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKSj	  s    $$2288PP	**00SS 		) 	) 'y{3 RRaQbc
 	##E0	@ 	@ 	00&t3U5E5E	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  	  s     #
 #
E #
d #
r   c                	   aaa V P                  V4      p ! R  R4      oVP                  4       ^,          p\        \        P                  ! \
        P                  V3R lV4      4      o\        VR4      '       d"   \        V4       \        V4      oR VV3R llpM	R V3R llpR\        V4       R	\        P                  ! 4        2pV P                  V4      P                  V\        WQ4      VP                   4       R
# )c                  .    ] tR tRtR R ltR R ltRtR# )@GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyComparei	  c                    V ^8  d   QhRRRR/# r   otherobjectr   r   r   )r   s   "r   r   MGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyCompare.__annotate__	  s      F t r   c                	    R # r@  r   r   r  s   &&r   __eq__GGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyCompare.__eq__	  s    r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  	  s      F t r   c                	    R # r   r   r  s   &&r   __ne__GGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyCompare.__ne__	  s    r   r   N)r   r   r   r   r  r  r   r   r   r   _AnyComparer  	  s     r   r  c                   < S! 4       # r   r   )r  r  s   &r   r  =GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.<lambda>	  s    r   r  c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   AGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.__annotate__	  s      C D r   c                R   < SP                  SV P                  4       ^,          4      # r   r  )r  r  original_metadatas   &r   metadata_checkerEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker	  s)    --%q';';'=a'@ r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  	  s     F FC FD Fr   c                8   < V P                  4       ^,          S8H  # r   r  )r  r  s   &r   r  r  	  s    ++-a04EEEr   ___check_metadata__cN)r  r  r   pytreetree_map_onlyrS  r:  r  r   rc  r  r6   current_compile_idr&  r  r,  r  )	r   r{  rD  r  r  r}  r  r  r  s	   &&    @@@r   TENSOR_SUBCLASS_METADATA_MATCH+GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH	  s    
 	 	 ++-a0$  /FQ
 5.//%e,u+C F F +2.>+?*@>CdCdCfBghu%66";6	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  	  s     
 
 
$ 
r   c                	   a \        WP                  V4      4      oR  V3R llpR\        V4       2pV P                  V4      P	                  V\        W14      VP                  4       R# )c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   5GuardBuilder.DTENSOR_SPEC_MATCH.<locals>.__annotate__	  s     	3 	3 	3 	3r   c                   < \        V S4      # r   )r  r  expecteds   &r   r  1GuardBuilder.DTENSOR_SPEC_MATCH.<locals>.guard_fn	  s    %a22r   __dtensor_spec_N)r  r  r  r&  r  r,  r  )r   r{  r  r   r  s   &&  @r   DTENSOR_SPEC_MATCHGuardBuilder.DTENSOR_SPEC_MATCH	  s_     (xx?	3 	3 !H/u%66,T95;K;K	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  	  s     
 
u 
 
r   c                  a V P                  V4      p\        W4      oSf   R# R V3R llpR\        V4       R\        P                  ! 4        2pV P                  V4      P                  V\        WA4      VP                  4       R# )z=Guard on the values returned by the opaque object's guard_fn.Nc                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   <GuardBuilder.OPAQUE_OBJ_GUARD_FN_MATCH.<locals>.__annotate__	  s     	8 	8C 	8D 	8r   c                   < \        V S4      # r   )r  )r  original_valuess   &r   opaque_guard_checkerDGuardBuilder.OPAQUE_OBJ_GUARD_FN_MATCH.<locals>.opaque_guard_checker	  s    #A77r   ___check_opaque_guard_fn_r  )	r  r  r  r6   r  r&  r  r,  r  )r   r{  rD  r  r}  r  s   &&   @r   OPAQUE_OBJ_GUARD_FN_MATCH&GuardBuilder.OPAQUE_OBJ_GUARD_FN_MATCH	  s     ,U:"	8 	8 2"5I2J1K2nNoNoNqMrsu%66 ";6	
r   c                	    V# r   r   r  s   &&r   r  r  	  rD  r   c                	
    W8H  # r   r   r  s   &&r   r  r  	  rF  r   c               $    V ^8  d   QhRRRRRR/# rZ  r   )r   s   "r   r   r  	  s&     n n% n nt nr   c                	v   V P                  V4      pV P                  V4      p\        '       d   \        P                  \        P                  \        P
                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  \        P                  3pMRp\        \        3p\!        \"        \$        \         \&        \(        \*        \,        \.        P0                  \.        P2                  \.        P4                  P6                  P2                  0	VmVm,          4      p\.        P8                  P;                  4       '       d$   ^ RIHpH p	 ^ RI!H"p
H#pH$pH%p VVVVV	V
V3,           p^ RI&H'p W~3,           p^ RI(H)u H*p \W        WG4      '       gO   VPX                  ! \%        V4      4      '       g.   \[        \%        V4      4      '       g   Q R\%        V4       24       h\]        V\^        4      '       dp   \`        Pb                  ! V4      '       dT   RV RV R2.pV Pe                  VV4       V Pg                  V4      Pi                  \k        VV4      VPl                  4       R# \]        V\n        4      '       dp   \        Pb                  ! V4      '       dT   RV R	V R2.pV Pe                  VV4       V Pg                  V4      Pq                  \k        VV4      VPl                  4       R# V R
V: 2.p\]        WF4      '       d   \s        V4      p\k        VV4      pV'       d   V Uu. uF  pV RV R2NK  	  ppV Pg                  V4      Pu                  VVVPl                  4       V Pe                  VV4       R# u upi )r   )_MeshLayout
DeviceMesh)_StridedShardPartial	ReplicateShard)_IntWrapperNzUnexpected type z(type(z) is float and __math_isnan(z))z) is complex and __numpy_isnan(r|  r'  r  r   );r  r  r  int8int16int32int64uint8uint16uint32uint64float16float32float64r(  r   ra  r   rc  rn  sliceranger   rS  SizeStreamcudastreamsdistributedis_availabletorch.distributed.device_meshr  r  (torch.distributed.tensor.placement_typesr  r  r  r  torch.export.dynamic_shapesr  torch.utils._pytreer  rJ   r  is_constant_classrB   r   r	  r  r  r  r&  add_float_is_nan_guardr,  r  complexadd_complex_is_nan_guardr   r  )r   r{  r%  r  r  np_typesok_mutable_typesok_typesr  r  r  r  r  r  r  r  r   r   r  s   &&&                r   EQUALS_MATCHGuardBuilder.EQUALS_MATCH	  s$   
 ll5!hhuo2						





/H H #;!



""))  "
" ))++M   # H 	<n,,, s%%''S	22#DI..	* d3i[)		*/ #u$**S//SE!=cU"EFD''t4""5)@@&tU3    #wBHHSMMSE!@RHID''t4""5)BB&tU3    %tC7#$#(( 3-C3D%@?Q"?Qt4& 02?Q  " 	u%<<#U%5%5	
 	##E40"s   #N6c                	    V# r   r   r  s   &&r   r  r  M
  rD  r   c                	
    W8H  # r   r   r  s   &&r   r  r  N
  rF  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  P
  s     	% 	%E 	%d 	%r   c                	0   V P                  V4      p\        V\        4      '       d   V P                  V4       R # Vf   V P	                  V4       R # \        V\
        P                  4      '       d   V P                  V4       R # V P                  V4       R # r   )	r  r   r   rL  rT  rY  CodeTyper]  r  r   r{  r  s   && r   CONSTANT_MATCHGuardBuilder.CONSTANT_MATCHL
  sf    
 hhuo#tOOE"[OOE"C((MM% e$r   c                	    \        V4      # r   r  r  s   &&r   r  r  \
  s
    -J5-Qr   c                	    \        V 4      V8H  # r   r  r  s   &&r   r  r  ]
  s    (Ee(L)r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  `
  s     
 
U 
t 
r   c                `  aa	 ^RI Hp V P                  V4      pV P                  V4      pRoV F  p\	        W54      '       g   K  Vo M	  Sf   Q hS! V4      o	SP
                   RV RS	: 2.pR VV	3R llpV P                  V4      P                  V\        Wa4      VP                  4       R# )zGuard for subclasses of constant types (int, float, str, etc.).

Extracts the base value using the base type's converter (e.g.,
int.__int__) to avoid calling user-overridden __eq__.
r  N(r  c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   :GuardBuilder.CONSTANT_SUBCLASS_MATCH.<locals>.__annotate__v
  s     	. 	. 	. 	.r   c                   < S! V 4      S8H  # r   r   )r  	base_type
base_values   &r   check_fn6GuardBuilder.CONSTANT_SUBCLASS_MATCH.<locals>.check_fnv
  s    Q<:--r   )
r  r  r  r  r  r   r&  r  r,  r  )
r   r{  r  r  r  r  r   r  r  r  s
   &&      @@r   CONSTANT_SUBCLASS_MATCH$GuardBuilder.CONSTANT_SUBCLASS_MATCH[
  s     	Ahhuoll5! 	%A#!!	 & $$$s^
%%&auE*@A	. 	. 	u%66"4/	
r   c                	    V# r   r   r  s   &&r   r  r  
  rD  r   c                	    WJ # r   r   r  s   &&r   r  r  
  rX  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s      u  r   c                	r   V P                  VR 4       V P                  V4      p\        VR4      '       dZ   \        VP                  \
        4      '       g   Q hV P                  '       g$   V P                  VR\        P                  4       R# R# \        P                  ! RRR\        V4       R2R.R7       R# )	z%[inline-inbuilt-nn-modules-candidate]trainingz-Attempted to guard on uninitialized nn.Moduler  zKAttempted to setup an NN_MODULE guard on uninitialized nn.Module subclass `z`.zIEnsure the `nn.Module` subclass instance has called `super().__init__()`.)gb_typecontextexplanationhintsN)r]  r  r  r   r"  r   r  r  r  r  rQ   unimplementedrc  r  s   && r   	NN_MODULEGuardBuilder.NN_MODULE
  s     	eDEhhuo3
###,,----(((((
L<W<WX ) G''+Cyk5 `r   c                	    V# r   r   r  s   &&r   r  r  
  rD  r   c                	    WJ # r   r   r  s   &&r   r  r  
  rX  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s     $ $E $d $r   c                $    V P                  V4      # )z0things like torch.add and user defined functions)r]  r  s   &&r   FUNCTION_MATCHGuardBuilder.FUNCTION_MATCH
  s     }}U##r   c                	    V# r   r   r  s   &&r   r  r  
  rD  r   c                	    WJ # r   r   r  s   &&r   r  r  
  rX  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s     ' ' '4 'r   c                    V P                  V4      p\        P                  ! V4      '       g   \        VP                   R24      hV P                  V4       R# )zNEquals ID_MATCH on classes - better readability than directly calling ID_MATCHz( is not a class, but CLASS_MATCH is usedN)r  r  isclassr  r1  r\  r  s   && r   CLASS_MATCHGuardBuilder.CLASS_MATCH
  sL     hhuos## ::,FG  	&r   c                	    V# r   r   r  s   &&r   r  r  
  rD  r   c                	    WJ # r   r   r  s   &&r   r  r  
  rX  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s     ' '% 'D 'r   c                    V P                  V4      p\        P                  ! V4      '       g   \        VP                   R24      hV P                  V4       R# )zNEquals ID_MATCH on modules - better readability than directly calling ID_MATCHz* is not a module, but MODULE_MATCH is usedN)r  r  ismoduler  r1  r\  r  s   && r   MODULE_MATCHGuardBuilder.MODULE_MATCH
  sN     hhuo$$ ::,HI  	&r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s     
' 
'5 
'T 
'r   c                    V P                  V4      p\        V4      \        P                  J d6   \	        VR4      '       d$   V P                  VR\        P                  4       R# V P                  V4       R# )z!matches a closure by __code__ id.r  N)	r  rc  rY  rZ  r  r  r  r  r.  r  s   && r   CLOSURE_MATCHGuardBuilder.CLOSURE_MATCH
  sW     hhuo9***wsJ/G/G $$UJ8S8ST&r   c                	    V# r   r   r  s   &&r   r  r  
  rD  r   c                	    WJ # r   r   r  s   &&r   r  r  
  rX  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s     . .5 .T .r   c                	    V P                   '       dZ   \        VP                  \        4      '       d:   V P                  P
                  P                  VP                  P                  4       V P                  V4      # r   )	r  r  r*  r`   r  used_builtin_varsr  r   r\  r  s   &&r   BUILTIN_MATCHGuardBuilder.BUILTIN_MATCH
  s`    
 %224EFF%%77;;,,22 &&u--r   c                	    \        V4      # r   r   r  s   &&r   r  r  
  s    SZr   c                	    \        V 4      V8H  # r   rJ  r  s   &&r   r  r  
  s    E
h(>r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s      U t r   c                	p   V P                  V4      pV P                  V4      p\        V\        4      '       g   V P	                  V4       . p\        V4      ^ 8X  d   VP                  RV 24       M VP                  RV R\        V4       24       V P                  W4       \        V\        4      '       dA   V P                  V4      P                  \        V4      \        WA4      VP                  4       R# V P                  V4      P                  \        V4      \        WA4      VP                  4       R# )r   znot zlen(r  N)r  r  r  rC  r  r   r  r  r&  add_dict_length_check_guardr,  r  add_length_check_guardr   r{  r  rD  r   s   &&   r   SEQUENCE_LENGTHGuardBuilder.SEQUENCE_LENGTH
  s     ll5!%&&OOE"u:?KK$se%KK$se5U56##E0eT""""5)EEE
&t3   ""5)@@E
&t3  r   c                	    \        V4      # r   r   r  s   &&r   r  r  
  s
    -?-Fr   c                	    \        V 4      V8H  # r   rT  r  s   &&r   r  r  
  s    (:5(AX(Mr   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  
  s     
 
 
$ 
r   c                	   V P                  V4      pV P                  V4      p\        V4      p. pVP                  R V R\	        V4       24       V P                  W4       \        V4      pV P                  VRVP                   R24      pV P                  V4      P                  \	        V4      V\        WQ4      VP                  4       R# )z___tuple_iterator_len(r  r  r  N)r  r  rc  r  r   r  r  r1  r&  add_tuple_iterator_length_guardr,  r  )r   r{  r  rD  r  r   ri  s   &&     r   TUPLE_ITERATOR_LENGuardBuilder.TUPLE_ITERATOR_LEN
  s    
 ll5!K,SE7I%7P6QRS##E0KQ%

|1 56u%EEu%"4/		
r   c                	    \        V4      # r   r   r  s   &&r   r  r    s
    -A%-Hr   c                	    \        V 4      V8H  # r   r\  r  s   &&r   r  r    s    (<U(Cx(Or   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     
 
% 
D 
r   c           
     	   V P                  V4      pV P                  V4      p\        V4      p. p\        V4      pVP	                  R V RV 24       V P                  W4       \        V4      pV P                  VRVP                   R24      pVw  rp
V P                  V4      P                  VV	V
V\        WQ4      VP                  4       R# )z___normalize_range_iter(r  r  r  N)r  r  rc  r   r  r  r  r1  r&  add_range_iterator_match_guardr,  r  )r   r{  r  rD  r  r   normalized_range_iterri  startstopsteps   &&         r   RANGE_ITERATOR_MATCH!GuardBuilder.RANGE_ITERATOR_MATCH  s    
 ll5!K 4U ;.se59N8OPQ##E0KQ%

|1 561Tu%DD"4/	
r   c                	.    \        V4      \        V4      3# r   rc  r   r  s   &&r   r  r  ,  s    d5k;OPU;V-Wr   c                	d    \        V 4      V^ ,          J ;'       d    \        V 4      V^,          8H  # r   rh  r  s   &&r   r  r  -  s-    K8A;&UU+?+F(ST++UUr   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  1  s     
 
% 
D 
r   c                	,  aa V P                  V4      pV P                  V4      p\        V4      o\        V4      oR  VV3R llpRV RS 2.pV P	                  W4       V P                  V4      P                  V\        WQ4      VP                  4       R# )c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   7GuardBuilder.COUNT_ITERATOR_MATCH.<locals>.__annotate__7  s     	 	 	 	r   c                J   < \        V 4      SJ ;'       d    \        V 4      S8H  # r   rh  )r  
count_typenormalized_count_iters   &r   r  3GuardBuilder.COUNT_ITERATOR_MATCH.<locals>.guard_fn7  s.    Q:% E E(+/DDr   z___normalize_count_iter(r  N)	r  r  rc  r   r  r&  r  r,  r  )r   r{  r  rD  r  r   ro  rp  s   &&    @@r   COUNT_ITERATOR_MATCH!GuardBuilder.COUNT_ITERATOR_MATCH+  s     ll5!%[
 4U ;	 	 +3%u5J4KLM##E0u%66,T95;K;K	
r   c               $    V ^8  d   QhRRRRRR/# )r   r{  r9   source_br=   r   r   r   )r   s   "r   r   r  G  s!     , ,U ,f , ,r   c                	   \        VP                  4      '       g   \        V4      '       d   R # V P                  '       dq   \        V4      ;p'       d&   V P                  P
                  P                  V4       \        V4      ;p'       d&   V P                  P                  P                  V4       V P                  V4      pV P                  VP                  4      p\        VP                  4      '       g   \        V4      '       d   R # WE3pW`P                  9   d   R # V P                  P                  WE34       V P                  P                  WT34       V RV 2.pV P                  W4       \        P                  '       d:   V^ ,          p\!        W4      ^ ,          p	V P"                  P%                  W34       R # \'        V P)                  V4      V P+                  V4      \!        Wq4      VP,                  4       R # )N is )r0   r*  r  r+   r  additional_used_local_varsr  r*   additional_used_global_varsr  r1  r/   r  r  rO   #use_lamba_guard_for_object_aliasingr,  r  r  r   r&  r  r  )
r   r{  ru  r1  ref_aref_brV  r   r  r  s
   &&&       r   DUPLICATE_INPUTGuardBuilder.DUPLICATE_INPUTF  s   $$$
 
&x00,X66t6%%@@DDTJ-h77t7%%AAEEdKU#X]]+#$$
 
%h// n555++//?++//?'eW%&##E0555 QI 6y H K,,33Y4RS)&&u-228<&t3  	r   c                	    R # r   r   r  s   &&r   r  r  v  rO  r   c                	
    V R J# r   r   r  s   &&r   r  r  w  rg  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r  y  s     
 
5 
T 
r   c                	    V P                  V4       R 2.pV P                  W4       V P                  V4      P                  \	        W!4      VP
                  4       R# rk  )r  r  r&  rl  r,  r  r   r{  r   s   && r   WEAKREF_ALIVEGuardBuilder.WEAKREF_ALIVEu  sT    
 <<&'|45##E0u%88"4/1A1A	
r   c                	4    \        VP                  4       4      # r   r(  rT  r  s   &&r   r  r    s    T%**,-?r   c                	:    \        V P                  4       4      V8H  # r   r  r  s   &&r   r  r    s    UZZ\(:h(Fr   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     

 

 

$ 

r   c           	     "   V P                  V4      pV P                  V4      p. pVP                  RV R\        VP	                  4       4       24       V P                  W4       V P                  V4      P                  W4VP                  4       R# )z7Guard on the key order of types.MappingProxyType objectzlist(z.keys()) == N)	r  r  r  r(  rT  r  r&  add_mapping_keys_guardr  rP  s   &&   r   MAPPING_KEYS_CHECKGuardBuilder.MAPPING_KEYS_CHECK  s{     ll5!eC5T%**,-?,@AB##E0u%<<))	
r   c                	>    \        \        P                  V4      4      # r   r(  rC  rT  r  s   &&r   r  r    s    T$))E2B-Cr   c                	D    \        \        P                  V 4      4      V8H  # r   r  r  s   &&r   r  r    s    TYYu-=(>((Jr   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     C CU Ct Cr   c           
        V P                  V4      pV P                  V4      pV\        P                  P                  P
                  J d   V P                  V4       R# V P                  V4       . pVP                  RV R\        \        V4      4      : 24       V P                  W4       V P                  VP                  4      '       d   V P                  W14       R# V P                  W14       R# )z6Insert guard to check that the keys of a dict are sameNr[  z)) == )r  r  rS  r  rJ   SUPPORTED_NODESr  rQ  r  r(  r   r  rj  r*  r3  r+  rP  s   &&   r   DICT_KEYS_MATCHGuardBuilder.DICT_KEYS_MATCH  s     ll5!EKK''777e$U#
 	ocU&6G6N1O0RST##E0++E,D,DEE--e;44UBr   c                	    R # r   r   r  s   &&r   r  r    rO  r   c                	    \        V 4      ^ 8H  # r   rJ  r  s   &&r   r  r    s    E
ar   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     $ $ $$ $r   c                X    \         P                  '       d   R# V P                  V4       R# )z\Special guard to skip guards on empty hooks. This is controlled by skip_nnmodule_hook_guardsN)rO   skip_nnmodule_hook_guardsrQ  r  s   &&r   EMPTY_NN_MODULE_HOOKS_DICT'GuardBuilder.EMPTY_NN_MODULE_HOOKS_DICT  s!     +++U#r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s      u  r   c                	    R # r   r   r  s   &&r   	GRAD_MODEGuardBuilder.GRAD_MODE      r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s      e  r   c                	    R # r   r   r  s   &&r   DETERMINISTIC_ALGORITHMS%GuardBuilder.DETERMINISTIC_ALGORITHMS  r  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s       4 r   c                	    R # r   r   r  s   &&r   FSDP_TRAINING_STATE GuardBuilder.FSDP_TRAINING_STATE  r  r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    r  r   c                	&   V P                   P                  pVf   Q hVP                  pW0P                   n        RV P                   P                  P	                  4        2.pV P
                  P                  P                  W4VP                  4       R # )Nz ___check_global_state() against )	r  r  global_state_guardglobal_state__getstate__r  r   add_global_state_guardr  )r   r{  r  r  r   s   &&   r   GLOBAL_STATEGuardBuilder.GLOBAL_STATE  s    ,,99'''#66-9* /t/D/D/Q/Q/^/^/`.ab
 	66 0 0	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     
 
% 
D 
r   c                	"   V P                   P                  f   Q h\        V P                   P                  4      V P                   n        V P                  P
                  P                  V P                   P                  R.VP                  4       R # )Nz$___check_torch_function_mode_stack())r  torch_function_mode_stack$make_torch_function_mode_stack_guard"torch_function_mode_stack_check_fnr  r   #add_torch_function_mode_stack_guardr  r  s   &&r   TORCH_FUNCTION_STATE!GuardBuilder.TORCH_FUNCTION_STATE  sy    $$>>JJJ0%%?? 	@
 	CC!!;;34	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     
 
E 
d 
r   c                N   VP                   \        P                  J g   Q hV P                  P                  f   Q hRV P                  P                  P
                  : 2.pV P                  W4       V P                  V4      P                  \        W!4      VP                  4       R# )z/Guard on CURRENT_DEVICE per torch.utils._deviceNzutils_device.CURRENT_DEVICE == )r  r<   GLOBALr  r  current_devicer  r&  add_default_device_guardr,  r  r  s   && r   DEFAULT_DEVICEGuardBuilder.DEFAULT_DEVICE  s     ||{11111$$11===-d.C.C.P.P._._-bc
 	##E0u%>>"4/1A1A	
r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r    s     w wu w wr   c                	  a a%a&a'a( ^ RI Hp VP                  R8X  g   Q hS P                  P                  o(S(f   Q hS P                  P
                  eW   S P                  P
                  pVP                  pVP                  pVP                  e   VP                  pVP                  pEM\        S(V4      '       g   Q hS(P                  f   Q hS(P                  P                  ;'       g    . o&S& Uu. uF  qP                  NK  	  upo'R V(3R llp	S(P                  '       d   / p
. p. p/ p\        4       pS(P                   Fo  pVP                   S(P"                  9   d=   \$        P&                  P(                  P+                  VV	S(P                  V
VVVV4       KZ  \,        P/                  R4       Kq  	  \1        VV\3        VP5                  4       4      VRR7      o%MRo%R	 V%V&V'V(V 3R
 llp\6        P8                  '       d    V! R4      w  rEpRpMRpV! R4      w  rES(P&                  '       g   S(P                  P=                  4        S P>                  '       d~   \A        4       PC                  R4      pVe   \        V\D        4      '       g   Q hVf   . M"\3        VPF                  PI                  4       4      p\K        VVVVVR7      S P                  n        VPL                   F  pS PO                  VV.4       K  	  \P        PR                  ! 4       ;p'       d&   VPT                  PW                  VPL                  4       . p. pV'       g   X'       g   Q hVPL                  VPF                  ppV'       g   R# VPY                  4        F  w  pp\        V\Z        4      '       d   RpK   S PC                  V/ \\        C\_        4       CR7      p\        V\`        4      '       d   VPc                  VV34       Kn  \        V\d        4      '       d   VPc                  VV34       K  RpK  	  V'       Eg   ^ RI3p^ RI4H5p X'       g   Q hVPL                  VPF                  pp\m        VV,           4      p \o        V4       UUu. uF!  w  ppS Pq                  \s        VV4      4      NK#  	  pppRPu                  R \o        V4       4       4      p RPu                  R \o        V4       4       4      p!V '       d   RV  R2p V!'       d   RV! R2p!\v        Px                  ! RV  RV! RRPu                  V4       R24      p"\z        P}                  RV"VPL                  4       VP                  V"4      p#VP                  V#P                  VP                  4      P                  p$V$'       g   Q h \        V\        V4      \        V4      V$V#VPL                  VP                  4       R# VPL                  '       d;   S P                  VPL                  VPL                  / \\        C\_        4       CR7       R# R# u upi   \:         d    RpT! R4      w  rE EL*i ; iu uppi   \$        P                  P                  P                   d     Li ; i)r   r   r  Nc               $    V ^8  d   QhRRRRRR/# )r   t_idr   r8  r   list[Source]r   )r   s   "r   r   ,GuardBuilder.SHAPE_ENV.<locals>.__annotate__  s!      # C L r   c                   < SP                   V ,           Uu. uF  p\        V\        P                  V4      NK   	  up# u upi r   )tracked_fakes_id_to_sourcer3   r2   SIZE)r  r8  r  r  s   && r   get_sources+GuardBuilder.SHAPE_ENV.<locals>.get_sources  sG     #/"I"I$"O #P )1D1DcJ"O  s   $>z+Untracked tensor used in export constraintsF)source_pairsderived_equalitiesphantom_symbolsrelaxed_sources	warn_onlyc                    V ^8  d   QhRRRR/# )r   langstuple[str, ...]r   zlist[_ShapeGuardsHelper]r   )r   s   "r   r   r  9  s       ;S r   c           
        < SP                   P                  S Uu. uF  qP                  NK  	  upS Uu. uF  qP                  NK  	  upSSSP                  SP
                  '       * V R 7      # u upi u upi ))input_contextsequalities_inputsr  ignore_staticr  )	shape_envproduce_guards_verbosefaker  r  export)r  r  r  r"  r  r  r   s   & r   _get_code_parts/GuardBuilder.SHAPE_ENV.<locals>._get_code_parts9  sn    #--DD%'(RVVR(')*r!XXr*#1&7# (4':':#: E 
 
(*s
   A/A4
Tcpp_code_parts)python_code_partsr   r  python_fallbackshape_env_sources)r   )CppCodeCacher  c              3  <   "   T F  w  pw  r#V R V R2x  K  	  R# 5i)z = int_values[r]  Nr   r1  ir  symbols   &   r   r4  )GuardBuilder.SHAPE_ENV.<locals>.<genexpr>  s*      ,*I;A hnQCq1*I   c              3  <   "   T F  w  pw  r#V R V R2x  K  	  R# 5i)z = float_values[r]  Nr   r  s   &   r   r4  r    s+      .*K;A h.qc3*Kr  zint64_t ;zdouble a  
                #include <algorithm>
                #include <cstdint>
                #include <cmath>
                #include <c10/util/generic_math.h>

                #if defined(_MSC_VER)
                #  define EXTERN_DLL_EXPORT extern "C" __declspec(dllexport)
                #else
                #  define EXTERN_DLL_EXPORT extern "C"
                #endif

                EXTERN_DLL_EXPORT int8_t guard(int64_t *int_values, double *float_values) {
                  z
                  z
                  return (z) && (z%);
                }
                zC++ shape guard function: %s %s)pythonverbose_pythoncpp)r  r  )Ktorch._dynamo.output_graphr   r1  r  r  shape_code_partsr  r   r  r  r  r  tracked_fakessymbolic_contextexport_constraintsr   r  r  rS  r  dynamic_shapes_process_equalitiesr  r  rG   r(  rE  rO    enable_cpp_symbolic_shape_guardsOverflowErrorfreezer  localsr  rE   source_to_symbolrT  ShapeCodePartsexprsr  r6   try_getshape_env_guardsrD  r  r[   rI   r  r   r  r	  ctypestorch._inductor.codecacher  rC  r/  r  r,   r  textwrapdedentr  r  loadcastr{  c_void_prD  r!   r   r  	_inductorrQ   InvalidCxxCompilerr  ))r   r{  r   r  r  r   r  r  r  r  namesr  r  r  r  
constraintr  maybe_cpp_code_partsmaybe_shape_env_sourcesr   compile_contextint_source_to_symbolfloat_source_to_symbolr   r  r  r  rv  r  r  r  guard_managersint_symbols_strfloat_symbols_strfunc_strclibcguardr  r"  r  r  s)   f&                                   @@@@r   	SHAPE_ENVGuardBuilder.SHAPE_ENV  s[   @zzR,,99'''  11=#44EE 0 B B!1!D!D..:!1!@!@.>>O l,=>>>>))555''55;;B:<="Q00"=N  ...46<>  # 68/2u"."A"AJ!,*Q*QQ33GG&'(22!(.++	 $QR #B %7!-'9$()?)?)A$B$3#%! %)!  666 ((KL J%> ',O #'8G095!  &&&&&--/ $*8<<0@#A '/:$&;4 4  
 (/ .??DDFG $
 6D"3#53 /"96D!!2 &++D''v6 , -4466?6,,334F4L4LM!!#!!> $$//	 )J "2"8"8":fn55&*O$(HH%L%L8I8K%L %- %M "-55,33VV4DE#M599.55vv6FG +/ #;" >!!> $$//	 )J  $$8;Q$QR= &//?%@"%@	6 66}VQ7OP%@  "
 #')) ,*34H*I, # %)II .*34J*K. %!
 #(00A&CO$*12C1DA(F%#?? ## $$% &#==45 6(   5&,,
 $((2TZZAGGv
 -",-./&,,$$ 
 """55!''"((DD0A0CD 6  #{ >B % &*O<K4=9%'9v"^ ??&&99 sJ   1X'X, .Y <'Y
#AY >BY Y ,YY
Y )Y<;Y<c                	    \        V4      # r   )r  r  s   &&r   r  r    s
    -DU-Kr   c                	b    \        V \        P                  4      ;'       d    \        V 4      V8H  # r   )r  rS  rT  r  r  s   &&r   r  r    s,    uell+ ; ;'.(:;r   c               $    V ^8  d   QhRRRRRR/# ri  r   )r   s   "r   r   r    s&     h9 h9% h9
 h9d h9r   c                	d   \         P                  '       d   VP                  4       '       d   R # \        V4      '       d   V P	                  V4       R # \        V\        4      '       d   V! 4       pVe   TMV P                  V4      p\        V4      p\        P                  P                  V4      p\        V\        P                  P                  4      '       d5   VP                  e   VP                  pVP                  e   VP                  p\        V\        P                   4      '       g   Q h\         P"                  '       d   \        V\        P$                  P&                  4      '       do   \)        4       pVP+                  4       '       dO   VP-                  RVP/                  4       4       VP-                  RVP0                  4       VP-                  R^4       V P3                  V4      p. pV P4                  P6                  f   Q hV P4                  P6                  P8                  '       d   V P;                  V4       . ROpV F  p	\=        VP>                  V	4      p
V	R8X  d   Rp	\A        V
4      p
V P                  V
4      p\C        V\        PD                  \        PF                  34      '       d'   VPI                  RV RV	 R\K        V4      : 24       K  VPI                  V RV	 R	V 24       K  	  EMV PM                  V4      p\         PN                  '       dF   \C        V\        P$                  P&                  4      '       gr   \Q        VP>                  4      '       gW   \        VP>                  \R        4      '       g7   V PT                  PI                  V4       V PV                  PI                  V4       V P4                  P6                  pVPX                  VP>                  ,          p\[        VR
,          4      p\[        VR,          4      p\]        \_        VVVVVV4      V4      pVP`                  pVPc                  VVVVVVVV4       \        V\        P$                  P&                  4      '       g0   V Pd                  Pf                  Pi                  VPj                  4       VPl                  f   Q h\o        VRVP>                  R7      w  ppV'       Eg   \q        VR4      '       da   VPr                  pRV RV RV R2pVPI                  V4       V PM                  V4      Pu                  V\]        VV4      VP`                  4       MMRV R2pVPI                  V4       V PM                  V4      Pw                  R\]        VV4      VP`                  4       \q        VR4      '       df   \y        VRR 4      pRV RV: RV R2pVPI                  V4       V PM                  V4      P{                  V3R l\]        VV4      VP`                  4       \q        VR4      '       df   \y        VRR 4      pRV RV: RV R2pVPI                  V4       V PM                  V4      P{                  V3R l\]        VV4      VP`                  4       \}        V4      ^ 8  d   V P                  W4       R # R # ) Nparam_numelparam_bytesparam_count
ndimensionzndimension()zstr(r  r  r|  sizer  T)	is_tensortensor_source_dynamo_dynamic_indicesz((z"._dynamo_dynamic_indices.issubset(z)) if hasattr(z', '_dynamo_dynamic_indices') else True)r  z%, '_dynamo_dynamic_indices') == False_dynamo_unbacked_indices_dynamo_shape_idsz
((getattr(z , '_dynamo_shape_ids', None) == z) if hasattr(z(, '_dynamo_unbacked_indices') else True)c                J    \        V R 4      '       d   \        V RR4      V8H  # R# )r#  r$  NTr  r  r  s   &&r   r  +GuardBuilder.TENSOR_MATCH.<locals>.<lambda>  s1    &q*DEE $A':DAXM &!%&r   _dynamo_unbacked_boundsz&, '_dynamo_unbacked_bounds', None) == c                J    \        V R 4      '       d   \        V RR4      V8H  # R# )r#  r(  NTr&  r  s   &&r   r  r'    s1    &q*DEE $A'@$G8S &!%&r   )rM  r  rN  r  )@rO   _unsafe_skip_fsdp_module_guardsis_fsdp_moduler  r]  r  rN   r  rc  rS  rJ  _dispatch_keysr  r  rG  rH  rT  log_compilation_metricsrW  	Parameterr5   in_progress	incrementnumelnbytesr  r  r  r  r  rT   r*  rU   r   r  rM  r  r   r&  ,skip_no_tensor_aliasing_guards_on_parametersr1   rr   r  r  input_source_to_sizes_stridesrB  r,  rR  r  add_tensor_match_guardr  r   r  r1  r  r   r  r"  add_dynamic_indices_guardr  r  r  r   r  )r   r{  rD  rG  rH  metrics_contexttensor_namer   termstermterm_src
real_valuer  r  r  r  r  r   r  static_reasondynamic_indicesr  	shape_idsunbacked_boundss   &&&                      r   TENSOR_MATCHGuardBuilder.TENSOR_MATCH  s    111e6J6J6L6L "%((MM% %//".EDHHUOE%[F!HH33E:M%!2!2!=!=>><<+"\\F&&2$)$7$7MeU\\2222---*UEHHDVDV2W2W"5"7"..00#--mU[[]K#--mU\\J#--mQ?,,u-K, !D((55AAA$$11888& "D)%*B*BDIH|+-#;H#E!%(!3Jj5<<*EFFd;-qeC
OCV$WX{m1TF$zl$KL " !% 6 6u = GGGuehh&8&899I!44  %U%=%=?PQQ 1188E::AA-P#44AA'EE,, 2(62BC3HX4FG%;.#% 
&" #--
44&!	 "%););<<&&99==ejjI< <<+++<U5M5MOFG 65";<<&+&C&CO"$[M1STcSddrs~r  @g  !hIKK	***51KK'.y%@(( #;-/TU  KK	***51FF1.y%@(( 5"<== '/BD II",[M9YZcYffst  tA  Ai  !jIKK	***51BB+4 
 /y%@(( 5"<==&-e5NPT&UO",[M9_`o_rr  AL  @M  Mu  !vIKK	***51BB+: 
 /y%@(( 4y1}++E8 r   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r{  r9   r  r|  r  r6  ra  r  r   r   r   )r   s   "r   r   r    s<     1
 1
1
 1
 ",	1

 '1
 
1
r   c                	   \        4       pVf   Q hVP                  p?Vf   Q hT;'       g    VP                  P                  p?WpP                  P
                  9   g   Q RV 24       hVf)   VP                  pV'       g   R MV P                  V4      p	MTp	V	e    \        P                  ! \        V	4      4      MR p
R p\        V	P                  R^ 4      ^ 8g  pV'       dL   \        V	\        P                  \        \        P                   34      '       g   \        P                  ! V	4      pVP#                  VV
VV4       R # )NzH_produce_guard_code must be called from inside GuardedCode. Called from __weakrefoffset__)r   f_backr  co_namer   r  r1  r  weakrefr  rc  r  r  enumEnumra  
ProxyTypesset_export_info)r   r{  r  r  ra  	cur_framecaller	func_namer1  guarded_objectguarded_object_typeobj_refsupports_weakrefs   &&&&&        r   r  #GuardBuilder._set_guard_export_info  s3    !N	$$$!!!!!&??&--*?*?	NN333 	
VW`Vab	
3
 #*::D)-T488E?N4N 2@1KGKK^,-QU 	  N,,.A1EJ 	 JTYYw/A/AB%
 %
 kk.1G		
r   )r  r  r  r  r  r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r
  r  r  r  )FNNr  r   )NN)Or   r   r   r   r   r+  r3  r\  r@  re  rj  r'  rs  ry  r  r&  r  r  r  r  r  r  r  r  r  r  r)  r0  r;  rA  rL  rT  r]  r\  rm  rv  r  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r.  r5  r<  r  r  r@  rG  rQ  rY  re  rr  r}  r  r  r  r  r  r  r  r  r  r  r  rB  r  r   r   r   r   r  r    s   LF\<'R  "Yv9"0?
\|LYJ& $ 
 S5050n MF0	08 8?
	
8 "
 "
 L90	0  L=0	0  L90	0$ L=0	0$ 29	" 15

	

 29>	>%?N 19	
		
 =D

	

 
 
 
 
( 
 
8 1'#
	#
J ,"
	
 * 
	
& 29n	n` 29	%		% Q



> 29	( 29$	$
 29'	' 29'	' '
'	
' 29.	. 7>	< FM
	
& HO
	
. W


* , ,\ 19
	
 ?F

	

 CJC	C2 17$	$       
 
 
 
 
 
 w wr K
h9h9V1
 1
r   r  c                     ] tR tRt^t]P                  ]P                  ]P                  3t	]
P                   ! R R4      4       t ! R R]P                  4      t ! R R]P                  4      tR R	 ltRR
 R lltR R ltR R ltRtR# )PyExprCSEPassi(  c                  ,    ] tR tRt$ R]R&   R]R&   RtR# )PyExprCSEPass.Configi0  zdict[str, int]
expr_countzdict[str, str]expr_to_namer   Nr  r   r   r   ConfigrY  0  s    ""$$r   r\  c                  :   a  ] tR tRtR R ltR V 3R lltRtV ;t# )PyExprCSEPass.ExprCounteri5  c                    V ^8  d   QhRRRR/# )r   rO   rY  r   r   r   )r   s   "r   r   &PyExprCSEPass.ExprCounter.__annotate__6  s     	" 	"#7 	"D 	"r   c                	    Wn         R # r   _config)r   rO   s   &&r   r   "PyExprCSEPass.ExprCounter.__init__6  s    !Lr   c                    V ^8  d   QhRRRR/# )r   r   r  r   r   r   )r   s   "r   r   r`  9  s     	  	 g 	 $ 	 r   c                	   < \        V\        P                  4      '       d3   V P                  P                  \        V4      ;;,          ^,          uu&   \        SV `  V4       R# )r   N)r  rW  ALLOWED_NODE_TYPESrc  rZ  r  r   r  )r   r   r   s   &&r   r  PyExprCSEPass.ExprCounter.visit9  sA    $ @ @AA''T(:;q@;GM$r   rb  r   r   r   r   r   r  r   r   r   s   @r   ExprCounterr^  5  s    	"	  	 r   rj  c                  @   a  ] tR tRtR V 3R lltR V 3R lltRtV ;t# )PyExprCSEPass.Replaceri>  c               $    V ^8  d   QhRRRRRR/# )r   rO   rY  gen_namezCallable[[], str]r   r   r   )r   s   "r   r   #PyExprCSEPass.Replacer.__annotate__?  s(     	) 	)(	) (	) 		)r   c                	J   < \         SV `  4        Wn        W n        . V n        R # r   )r   r   rc  	_gen_namepreface)r   rO   rn  r   s   &&&r   r   PyExprCSEPass.Replacer.__init__?  s!    
 G!L%N&(DLr   c                    V ^8  d   QhRRRR/# )r   r   r  r   r   r   )r   s   "r   r   ro  I  s     	' 	'g 	'# 	'r   c                	b  < \        V\        P                  4      '       Ed    \        V4      pV P                  P
                  V,          \        P                  8  d   W P                  P                  9  dd   \        SV `%  V4      p\        V4      pV P                  4       pV P                  P                  V R V 24       WPP                  P                  V&   MV P                  P                  V,          p\        P                  ! V\        P                  ! 4       4      # \        SV `%  V4      # )z = )r  rW  rg  r  rc  rZ  USE_THRESHOLDr[  r   r  rq  rr  r  r  NameLoad)r   r   exprnode_expr_r   r   s   &&    r   r  PyExprCSEPass.Replacer.visitI  s    $ @ @AA#D) <<**40=3N3NN<<#<#<< !&d 3 ,U 3#'>>#3++xjE7,CD:B11$7#'<<#<#<T#B88Hchhj997=&&r   )rc  rq  rr  ri  r   s   @r   Replacerrl  >  s    	) 	)	' 	'r   r}  c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   PyExprCSEPass.__annotate__c  s     
 
$ 
r   c                	n    ^ V n         V P                  \        P                  ! R 4      / R7      V n        R# )r   c                     ^ # r   r   r   r   r   r  (PyExprCSEPass.__init__.<locals>.<lambda>f  s    qr   )rZ  r[  N)_counterr\  r  defaultdictrc  r   s   &r   r   PyExprCSEPass.__init__c  s.    {{"..y9 # 
r   c                    V ^8  d   QhRRRR/# )r   r   r   r   r   )r   s   "r   r   r  i  s      s  r   c                	X    V V P                    2pV ;P                   ^,          un         V# r   )r  )r   r   r1  s   && r   _new_varPyExprCSEPass._new_vari  s'    $--)r   c                    V ^8  d   QhRRRR/# )r   r  r|  r   r   r   )r   s   "r   r   r  n  s      9  r   c                	   V P                  V P                  4      pV F)  p VP                  \        P                  ! V4      4       K+  	  R#   \
         d(   p\        P                  R TP                  T4       h Rp?ii ; i)z#Failed to visit expr at line %s.
%sN)	rj  rc  r  r  parseSyntaxErrorr  	exceptionlineno)r   r  countereexs   &&   r   countPyExprCSEPass.countn  sd    ""4<<0Aciil+   DbiiQRSs   %AA?"A::A?c                    V ^8  d   QhRRRR/# r   ry  r   r   ztuple[list[str], str]r   )r   s   "r   r   r  w  s     8 8C 8$9 8r   c                	    V P                  V P                  V P                  4      pVP                  \        P
                  ! V4      4      pVP                  \        V4      3# r   )r}  rc  r  r  r  r  rr  r  )r   ry  replacernew_nodes   &&  r   r  PyExprCSEPass.replacew  sF    ==t}}=>>#))D/2h!777r   )rc  r  N)_var)r   r   r   r   rv  r  	AttributeCall	Subscriptrg  dataclasses	dataclassr\  NodeVisitorrj  NodeTransformerr}  r   r  r  r  r   r   r   r   rW  rW  (  s}     M --3==A% % % coo  #'3&& #'J

8 8r   rW  c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r   }  s      U t r   c                    \        V P                  \        4      ;'       g5    \        P                  ;'       d    V P
                  \        P                  J # r   )r  r*  r_   rO    guard_nn_modules_using_dict_tagsr  r  r(  )r{  s   &r   must_add_nn_module_guardsr  }  sJ    
 	5++^< 	
 	
 33 : :<#9#99r   c                  :   a  ] tR tRtR V 3R lltR R ltRtV ;t# )DeletedGuardManagerWrapperi  c                    V ^8  d   QhRRRR/# )r   reasonr   r   r   r   )r   s   "r   r   'DeletedGuardManagerWrapper.__annotate__  s     * *s *t *r   c                	0   < \         SV `  4        Wn        R # r   )r   r   invalidation_reason)r   r  r   s   &&r   r   #DeletedGuardManagerWrapper.__init__  s    #) r   c                   V ^8  d   QhRR/# r  r   )r   s   "r   r   r    s     $ $T $r   c                	    R V n         R # r   )r   r   s   &r   r'  6DeletedGuardManagerWrapper.populate_diff_guard_manager  s
    #r   )r   r  )r   r   r   r   r   r'  r   r   r   s   @r   r  r    s    * *$ $r   r  c                  J    ] tR tRt$ R]R&   R]R&   R]R&   R]R&   R	]R
&   RtR# )r  i  rF   r  r   z_CppShapeGuardsHelper | Noner  r   r  r  r  r   Nr  r   r   r   r  r    s     ))**00##r   r  c                  ,    ] tR tRt$ R]R&   R]R&   RtR# )GuardsStatei  r   r  ShapeCodeParts | Noner  r   Nr  r   r   r   r  r    s    ((++r   r  c                  J    ] tR tRtRR R lltR R ltR R ltR	 R
 ltRtR# )_Missingi  Nc                    V ^8  d   QhRRRR/# )r   r  r  r   r   r   )r   s   "r   r   _Missing.__annotate__  s      z T r   c                	    Wn         R # r   r>  )r   r  s   &&r   r   _Missing.__init__  s    r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r    s     + +# +r   c                	"    R V P                    R2# z	_Missing(r  r  r   s   &r   __repr___Missing.__repr__      4<<.**r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r    s     + + +r   c                	"    R V P                    R2# r  r  r   s   &r   r  _Missing.__str__  r  r   c               $    V ^8  d   QhRRRRRR/# )r   r   r   kwargsr   r   )r   s   "r   r   r    s!      c S S r   c                	    \        4       # r   )r  )r   r   r  s   &*,r   __call___Missing.__call__  s
    zr   r  r   )	r   r   r   r   r   r  r  r  r   r   r   r   r  r    s    ++
 r   r  c                   V ^8  d   QhRR/# )r   r   ztuple[type, ...]r   )r   s   "r   r   r     s     
 
 0 
r   c                     \         P                  P                  \        P                  3p  V \         P                  P
                  P                  3,          p V #   \         d     T # i ; ir   )rS  rJ  r  rI  r   _distributed_c10dProcessGroupAttributeError)r  s    r   _get_unsupported_typesr    sa     	C**7799 J  Js   ,A A)(A)c                    a  ] tR tRtR V 3R llt]R R l4       t]R R l4       t]R R	 l4       t]R
 R l4       t	]R R l4       t
]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R R l4       t]R  R! l4       t]R" R# l4       t]R$ R% l4       t]R& R' l4       t]R( R) l4       tR* R+ ltR,tV ;t# )-GuardsStatePickleri  c               0    V ^8  d   QhRRRRRRRRRRRR	/# )
r   r  zdict[int, Any]empty_valuesmissing_valuesr   r   r  r   r   r   )r   s   "r   r   GuardsStatePickler.__annotate__  sF     - -)- %- '	-
 - - 
-r   c                	   < \         SV `  ! V/ VB  \        P                  P	                  4       V n        \        P                  P                  P                  4       V n        Wn	        W n
        W0n        R # r   )r   r   rS  r  FakeTensorMode	fake_modefake_tensorFakeTensorConvertertensor_converterr  r  r  )r   r  r  r  r   r  r   s   &&&&*,r   r   GuardsStatePickler.__init__  s\     	$)&)**99; % 1 1 = = Q Q S!2(,r   c                    V ^8  d   QhRRRR/# )r   stater   r   ztorch.nn.Moduler   )r   s   "r   r   r    s      S _ r   c                	d    \         P                  P                  4       pVP                  V4       V# r   )rS  rW  rX  __setstate__)r  r  mods   && r   _unpickle_module#GuardsStatePickler._unpickle_module  s%    hhoo
r   c               0    V ^8  d   QhRRRRRRRRR	RR
R/# )r   meta_tensorr  r  torch.devicerG  rc  dispatch_keys_rawr   gradr   r   )r   s   "r   r   r    sF      !  	
   
r   c           	     	   \         P                  P                  4       p\         P                  P                  P	                  4       pVP                  VVVV\         P                  P                  P                  V4      4      pWXn	        V# r   )
rS  r  r  r  r  from_meta_and_devicerJ  r   from_raw_reprr  )	r  r  r  rG  r  r  r  r  r  s	   &&&&&&   r   _unpickle_tensor#GuardsStatePickler._unpickle_tensor  st     %%446	 ,,88LLN33HH##112CD
 
r   c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r   r  r  r  r  rG  rc  r  r   ctxr   
inner_datazlist[tuple[str, Any]]r   r   )r   s   "r   r   r    sP      !  	
   * 
r   c                	    \        V4      pVP                  VP                  4       r\        V4      P	                  WuW4      p
W:n        \        P                  P                  P                  V4      V
n
        V
# r   )rC  r  r  rc  __tensor_unflatten__rG  rS  rJ  r   r  rH  )r  r  r  rG  r  r  r  inner_tensors
outer_sizeouter_strider  s   &&&&&&&    r   $_unpickle_traceable_wrapper_subclass7GuardsStatePickler._unpickle_traceable_wrapper_subclass  sh     Z(#.#4#4k6H6H6JL;44

 
!HH33AABST
r   c                    V ^8  d   QhRRRR/# )r   aliasr   r   ztypes.ModuleTyper   )r   s   "r   r   r    s     . .C .4D .r   c                	.    \         P                  ! V4      # r   )r
  r  )r  r  s   &&r   _unpickle_python_module*GuardsStatePickler._unpickle_python_module   s    &&u--r   c                    V ^8  d   QhRRRR/# )r   rq  r   r   ztorch._C.DispatchKeySetr   )r   s   "r   r   r    s     ? ?# ?:Q ?r   c                	T    \         P                  P                  P                  V4      # r   )rS  rJ  r   r  )r  rq  s   &&r   _unpickle_dispatch_key_set-GuardsStatePickler._unpickle_dispatch_key_set  s    xx&&44X>>r   c                    V ^8  d   QhRRRR/# )r   jsonbytesr   z torch._C._functorch.CInterpreterr   )r   s   "r   r   r  	  s      B BB	)Br   c                	h    \         P                  P                  P                  P	                  V4      # r   )rS  rJ  r  CInterpreterdeserialize)r  r  s   &&r   _unpickle_functorch_interpreter2GuardsStatePickler._unpickle_functorch_interpreter  s%     xx""//;;DAAr   c                    V ^8  d   QhRRRR/# )r   drU  r   z types.MappingProxyType[Any, Any]r   )r   s   "r   r   r    s     ) ))	))r   c                	.    \         P                  ! V4      # r   )rY  MappingProxyType)r  r  s   &&r   _unpickle_mapping_proxy*GuardsStatePickler._unpickle_mapping_proxy  s     %%a((r   c                    V ^8  d   QhRRRR/# )r   elemsr?  r   r   r   )r   s   "r   r   r    s     + +	 +c +r   c                	H    \         P                  V4      P                  4       # r   )rC  fromkeysrT  )r  r  s   &&r   _unpickle_dict_keys&GuardsStatePickler._unpickle_dict_keys  s    }}U#((**r   c               $    V ^8  d   QhRRRRRR/# )r   r  r   rd  r   zitertools.count[int]r   )r   s   "r   r   r    s"     + + +3 +;O +r   c                	.    \         P                  ! W4      # r   )	itertoolsr  )r  r  rd  s   &&&r   _unpickle_count_iter'GuardsStatePickler._unpickle_count_iter  s    t**r   c                    V ^8  d   QhRRRR/# )r   original_typeztype[torch.nn.Module]r   r   )r   s   "r   r   r    s     
 
1
	
r   c                	    \         P                  P                  P                  P                  P	                  4       V,          # r   )rS  r  fsdp_fully_shardget_cls_to_fsdp_cls)r  r  s   &&r   _unpickle_fsdp_module_type-GuardsStatePickler._unpickle_fsdp_module_type  s5       %%22??SSU
 	
r   c                    V ^8  d   QhRRRR/# )r   r  zdict[str, Any]r   z)torch.nn.parallel.DistributedDataParallelr   )r   s   "r   r   r  %  s      "	2r   c                	    \         P                  P                  P                  pVP	                  V4      p\         P                  P
                  P                  W14       V# r   )rS  rW  parallelDistributedDataParallel__new__rX  r  )r  r  tyddps   &&  r   _unpickle_ddp_module'GuardsStatePickler._unpickle_ddp_module$  sA     XX66jjn$$S0
r   c                    V ^8  d   QhRRRR/# )r   r1  r   r   r   r   )r   s   "r   r   r  .  s     + +# +# +r   c                	J    \        \        P                  P                  V4      # r   )r  rS  opsrJ  )r  r1  s   &&r   _unpickle_c_op!GuardsStatePickler._unpickle_c_op-  s    uyy||T**r   c               (    V ^8  d   QhRRRRRRRR/# )r   	namespacer   opnameoverloadnamer   r   r   )r   s   "r   r   r  2  s.     U US U# US US Ur   c                	^    \        \        \        \        P                  V4      V4      V4      # r   )r  rS  r.  )r  r2  r3  r4  s   &&&&r   _unpickle_opGuardsStatePickler._unpickle_op1  s!    wwuyy)<fE|TTr   c               $    V ^8  d   QhRRRRRR/# )r   funcr   r3  r   r   )r   s   "r   r   r  6  s!     , ,# ,S ,S ,r   c                	.    \         P                  ! W4      # r   )rY  r[  )r  r9  r3  s   &&&r   _unpickle_bound_method)GuardsStatePickler._unpickle_bound_method5  s    ++r   c                    V ^8  d   QhRRRR/# )r   r1  r   r   ztorch.nn.attention.SDPBackendr   )r   s   "r   r   r  :  s     < <C <,I <r   c                	^    \        \        P                  P                  P                  V 4      # r   )r  rS  rW  	attention
SDPBackendr1  s   &r   _unpickle_sdp_backend(GuardsStatePickler._unpickle_sdp_backend9  s!     uxx))44d;;r   c                    V ^8  d   QhRRRR/# )r   r  r   r   r   )r   s   "r   r   r  ?  s            r   c                	\   a R  V3R llpVP                   f   Q hVP                   ^ ,          # )c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   7GuardsStatePickler._unpickle_cell.<locals>.__annotate__@  s     	 	3 	r   c                    < S # r   r   )r  s   r   r  ,GuardsStatePickler._unpickle_cell.<locals>._@  s    Jr   )__closure__)r  r  r  s   &f r   _unpickle_cell!GuardsStatePickler._unpickle_cell>  s.    	 	 }}(((}}Qr   c               $    V ^8  d   QhRRRRRR/# )r   r1  r   fieldsr  r   ztype[NamedTuple]r   )r   s   "r   r   r  G  s$     4 44 /4	4r   c                	.    \         P                  ! W4      # r   )r  
namedtuple)r  r1  rN  s   &&&r   _unpickle_named_tuple_type-GuardsStatePickler._unpickle_named_tuple_typeF  s    
 %%d33r   c                    V ^8  d   QhRRRR/# )r   serialized_coder   r   r   r   )r   s   "r   r   r  N  s     > >^ > >r   c                	2    ^ RI Hp VP                  ! V4      # )r   r   )torch._dynamo.packager   to_code_object)r  rT  r   s   && r   _unpickle_code!GuardsStatePickler._unpickle_codeM  s    8,,_==r   c               0    V ^8  d   QhRRRRRRRRRR	R
R/# )r   r   r   r  r   qualnameargdefsztuple[object, ...] | Noneclosurez!tuple[types.CellType, ...] | Noner   ztypes.FunctionTyper   )r   s   "r   r   r  T  sN     	O 	O	O 	O 		O
 +	O 3	O 
	Or   c                	r    \         P                  ! V4      P                  p\        P                  ! WW4V4      # r   )r
  r  r  rY  rZ  )r  r   r  r[  r\  r]  rw  s   &&&&&& r   _unpickle_nested_function,GuardsStatePickler._unpickle_nested_functionS  s/     ++F3<<	!!$8gNNr   c                    V ^8  d   QhRRRR/# )r   r`  r   r   z0tuple[Callable[..., Any], tuple[Any, ...]] | Anyr   )r   s   "r   r   r  `  s      I II	9Ir   c                	   ^ RI p\        V4      V P                  9   d"   \        V4      P                  \        V4      33# \
        P                  ! V4      '       d/   ^ RIHp \        V 4      P                  VP                  ! V4      33# \        V4      V P                  9   d	   \        R3# \        V\        P                  4      '       Ed   VP                   P                  R8w  Ed   ^ RIHp \        V4      V P&                  9  d	   \        R3# V! V4      '       d   . pVP)                  4       w  rgV FW  p\+        W4      p	\        V	\        P                  4      '       d   WP&                  \        V	4      &   VP-                  W34       KY  	  \        V 4      P.                  \        P0                  ! VRR7      VP                   \        V4      \        P2                  P5                  V4      P7                  4       VV33# \        V4      p
\        V\        P8                  P:                  4      '       d+   VP<                  e   VP<                  M\        P                  p
\        V 4      P>                  \        P0                  ! VRVP@                  R7      VP                   V
\        P2                  P5                  V4      P7                  4       VPB                  33# \        V\        PD                  PF                  4      '       Ed   \        V4      V P&                  9  d	   \        R3# VPH                  PK                  4        F  p\        V\        P                  \        PD                  PF                  34      '       d   K?  \        V4      V P&                  9   d   K[  \M        V4      '       d   Kn  WP                  \        V4      &   K  	  \        V\        PD                  PN                  PP                  4      '       d'   \        V 4      PR                  VPU                  4       33# \        V4      PV                  \        V4      PX                  8X  d   \Z        # VP\                  PT                  \        PD                  PF                  PT                  8X  d'   \        V 4      P^                  VPU                  4       33# EM\
        P`                  ! V4      '       d#   \        V 4      Pb                  VPX                  33# \        V\        P2                  Pd                  4      '       d'   \        V 4      Pf                  VP7                  4       33# \        V\        P2                  Ph                  Pj                  4      '       d'   \        V 4      Pl                  VPo                  4       33# \
        Pp                  ! V4      '       d[   \s        WPt                  4      '       d@   \w        VR4      '       d.   \w        VR4      '       g   Q hVPx                  VPz                  33# \
        Pp                  ! V4      '       dq   \s        V\|        4      '       d[   \w        VR	4      '       dI   VPV                  VPX                  8w  d.   \        V 4      P~                  VPX                  VP                  33# \        V\        P                  4      '       d   \        R
V RVP                   R24      h\        V\        P                  4      '       d'   \        V 4      P                  VP                  4       33# \        V4      \        J d<   \        V4      w  rV\Z        Jd#   V\Z        Jd   \        V 4      P                  W33# EMb\        V\        P                  P                  P                  4      '       d"   \        V 4      P                  \        V4      33# \        V\        P                  P                  4      '       dD   VP                  P                  R4      '       d#   \        V 4      P                  VPX                  33# \        V\        P                  P                  4      '       d9   \        V 4      P                  VP                  VP                  VP                  33# VP\                  P                  R8X  d$   VP\                  PX                  R8X  d	   \        R3# \        V\        4       4      '       d	   \        R3# \
        P                  ! V4      '       d   RVPV                  9   dO   \        V 4      P                  VP                  VP                  VPV                  VP                  VP                  33# VP                  \        P                  9   d]   \        P                  VP                  ,          pVPV                  P                  R4       F  p\+        WR4      pK  	  WJd	   \        R3# M\
        P                  ! V4      '       dw   VP                  pVP                  p\+        VVPX                  4      p\
        P                  ! V4      '       d   VP                  pVVJd   \        V 4      P                  VV33# MU\        V\        R ! ^ 4      P                  ^ ,          4      4      '       d#   \        V 4      P                  VP                  33# \w        \        P                  R4      '       dW   \        V\        P                  P                  P                  4      '       d#   \        V4      V P&                  9  d	   \        R 3# \        V\        PD                  P                  P                  4      '       d#   \        V 4      P                  VP                  33# \        V4      PV                  \        V4      PX                  8w  d^   \        V\|        4      '       gH   \        P                  P                  P                  R\        V4       RV R2R,           R,           4      h\
        Pp                  ! V4      '       Ed,   \w        \        P                  R4      '       Ed   \s        V\        P                  P                  P                  P                  4      '       d   V\        P                  P                  P                  P                  Jd   VP                  ^,          p\s        V\        PD                  PF                  4      '       g   Q hV\        P                  P                  P                  P                  P                  4       9   g   Q h\        V 4      P                  V33# \Z        # )!r   Nr   meta)is_traceable_wrapper_subclass)r  )r  rN  _torch_handler_name_torch_unpicklerr  zCannot serialize SymInt z (node: r  z_C::r  	PyCapsulez<locals>r  c                   a  V 3R  l# )c                    < S # r   r   r  s   r   r  GGuardsStatePickler.reducer_override.<locals>.<lambda>.<locals>.<lambda>  s    Qr   r   r  s   fr   r  5GuardsStatePickler.reducer_override.<locals>.<lambda>  s    Yr   distributed_c10drb  rc  rd  re  rf  r  )zmissing values)ztensor guard tree)zmodule guard tree)capsule)unsupported)zfqn mismatch)zdistributed_c10d.Work)ysympyr  r  rc  r'  r  iscoderV  r   rX  from_code_objectr  r  r  rS  rT  r  torch.utils._python_dispatchrd  r  r  r  r  r  
empty_likerJ  r,  rq  r  r  rG  r  rN  r  rW  rX  r  rE  r  r%  r&  r*  r  r   r   NotImplementedr   r  r;  r  r   r   r  r  r  	serializer4  rA  Functionr  rf  re  ra  rQ  r  r:  r  r   rY  r  r  r  _COUNT_ITERATOR_TYPEr   r  r  r  r   r  r(  _opsOpOverloadPacket_qualified_op_name
startswithr/  
OpOverloadr6  r2  _opname_overloadnamer   r  
isfunctionr_  r  r  rJ  r;  modulesr  ismethod__func____self__r;  rK  rP  r  rl  Workr?  r@  rB  r1  rQ   PackageErrorr  r  
FSDPModule__mro__r   r!  )r   r`  ro  r   rd  r  attrsr  rN  innerrG  r  rd  fr1  r9  method_self
inner_funcr  s   &&                 r   reducer_override#GuardsStatePickler.reducer_override`  s	    	c7d'''9$$tCyl22>>#<:,,~/N/Ns/S.UUUc7d)))000c5<<((SZZ__-FR#wd444!777,S11  
 335
!D#C.E!%66<A..r%y9%%tm4	 " DzFF$$S8JJIHH++C099;I   #YF#u00;;<<'*zz'=5<<:..  V3CTCTU

'',5571   UXX__--#wd444!777++-dU\\588??$CDDd8t555D>>04##BtH- . #uxx00HHIIDz669I9I9K8MMMCy%%c););;%%}}))UXX__-I-IIDz22S5E5E5G4III J c"":55FFUXX4455:883<<>:KKKUXX00==>>:==?QQQ OOC  3//2333 23333''#*A*A)CCC OOC  3&&Y''  CLL0:883<<:UUUU\\**!9#hsxxjPQRSSU3344:55
}DD#Y..-c2JD>)d..HDz66DDU]]00::;;:11DI<??,,
 
$$//77:,,s||o==UZZ2233:**!!-   MM$$
2&&+5 \))3566---$$S---Dz;;LLNN$$$$OO>   ~~,KK/,,2237D.A 8<#%666c""<<D,,K dmm<J
++'00
:%Dz884:MMM & T#6":"F"Fq"IJKK:,,s/@/@.BBB5$$&899j""3388?
 ?
 #wd444!;;;c588--8899:33chh[@@9!!T#Y%7%77
3PU@V@V--##00S	{,se3DETUTU  OOC  ))6223 1 1 6 6 C C N NOO%++00==HHH #A!-AAAA!((--::GG[[]^^ Dz<<}>NNNr   )r  r  r  r  r  )r   r   r   r   r   r]  r  r  r  r  r   r  r  r  r  r!  r*  r/  r6  r;  r\  rB  rK  rQ  rX  r_  r  r   r   r   s   @r   r  r    s   - -  
  (  & . . ? ? B B
 ) )
 + + + + 
 
   + + U U , , < <     4 4 > >
 	O 	OI Ir   r  c               $    V ^8  d   QhRRRRRR/# )r   r{  r9   builderr  r   r   r   )r   s   "r   r   r   ,  s"      5 < DT r   c           
     R   \        4       p\        V P                  4      pVR 8X  d   RpTpM VP                  V 4      pRp\	        V P
                  4      RJp\        TTTV P                  4       V P                  '       d   \        V P                  4      MRVV R7      #    TpRp Lf; i)r  FTN)r1  	has_valuerD  
guard_typederived_guard_types	is_global
orig_guardr   )
r  strip_local_scoper1  r  r*   r*  r   create_fn_nameguard_typesra  )r{  r  MISSINGr1  r  rD  r  s   &&     r   make_guard_filter_entryr  ,  s    hGUZZ(Drz			
 KK&EI 'u'?'?@LI'')9>9J9J9JU5#4#45PR 		EIs   B B&c               $    V ^8  d   QhRRRRRR/# )r   r  r  r  r  r   r  r   )r   s   "r   r   r   I  s&     ) ))) )r   c                   \         P                  ! 4       p/ p/ pVP                  p\        P                  ! V P
                  P                  4      pV F  p\        P                  ! V4      '       dd   \        VR 4      '       dR   VP                  p\        V4      V9  d4    \        V4      P                  \        V4      4       W\        V4      &   K  K  \        V4      V9  g   K  Wt\        V4      &   K  	  \        WSWB4      p	\        \         P"                  P%                  V P
                  P&                   U
u. uF  p
\)        W4      NK  	  up
4      4      '       d+   \+        4       V P
                  n        / V P
                  n         V	P1                  V 4       VP=                  4       #     EK^  ; iu up
i   \2         d9   p\         P4                  P6                  P9                  \;        T4      4      ThRp?ii ; i)r  N)ioBytesIOr  r  tree_leavesr  r  r  r  r  r  r  rc  r'  r  r7  rS  compilerkeep_portable_guards_unsafer   r  r   r  r   dumpr  r  rQ   r  r   r  )r  r  bufr  r  r  leavesleafr3  picklerr{  r  s   &&          r   pickle_guards_stater  I  s    **,CLN11 2 2 > >?FD!!gdJ&?&?==D$x00J&&tDz2-1D* 1 X.. (,2d8$  !!2.VG
22 #//666E (76	
  14-*,'<U <<>1  <mm,,SV4!;<s*    0F*9F3	F8 *F08G;3G66G;c                      ] tR tRt$ RR R lltRtR]R&   R R ltRR	 R
 lltR R lt	R R lt
R R ltR R ltRtR# )r  iz  Nc               @    V ^8  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )r   r  r   r  r   r   CacheEntry | Noner   "Callable[[GuardFail], None] | Noner  r  r  r  r  r  r  r   strict_errorr   r   r   )r   s   "r   r   !CheckFunctionManager.__annotate__{  sz     G! G!G! (G! '	G!
 :G!G! 0G! 4G! G! G! 
G!r   c
                	b
  a aa V'       d   VP                   MR p
/ S n        \        V4      pVS n        S P                  f   Q hVS n        V'       d   VP
                  MR S n        \        4       S n        \        4       S n        \        4       S n	        VS n
        R S n        R S n        \        R4      '       g   \        P                  R4       \         P"                  P$                  P&                  '       d   T;'       g    R oR V3R llp\)        T
;'       g    R\*        P,                  R7      p\         P.                  P1                  4       ;_uu_ 4        V'       d   S P3                  VVVVR4      w  rT! V Uu. uF  p\5        W4      NK  	  up4      p\7        V4      \7        V4      8X  g   Q h\8        ;QJ d    R V 4       F  '       d   K   RM	  R	M! R V 4       4      '       g   Q h\;        V4       UUu. uF  w  ppVV,          '       g   K  VNK  	  pppS P3                  VVVVVVR
7      w  rVS n        S P?                  WV4       R R R 4       XP@                  S P<                  n         \B        PE                  RS P<                  4       VP@                  S P<                  n         RoVPF                  '       Eg   VPH                  '       g   S P<                  PK                  VPL                  4      '       gE   \O        S P<                  VPL                  \P        PR                  ! 4       R R7      p\U        RV 24      h\V        e"   \W        S P<                  VPL                  V4       \Y        S P<                  PZ                  VPL                  ^4      o\B        PE                  RSR 4       \\        P^                  ! R\a        S4      4       R S n1        V'       dG   ^ RI2H3p \i        S P                  V4      '       g   Q h S Pk                  WS P                  4      S n1        \         P|                  P                  RVV 3R lR7       S P                  P                  4        R S n        R # u upi u uppi   + '       g   i     EL2; i  \l        Pn                   d   p\         P"                  P$                  Pp                  '       g	   T	'       d   ThS P                  Ps                  R\u        T4       2\v        Px                  ! 4       P{                  R4      R7        R p?ELR p?ii ; i)Nr	  z9guard_nn_modules is turned off using justknobs killswitchc                0    V  Uu. uF  pR NK  	  up# u upi r@  r   )gsgs   & r   r  /CheckFunctionManager.__init__.<locals>.<lambda>  s    R>PRtR>P>Ps   c                    V ^8  d   QhRRRR/# )r   r   zSequence[GuardFilterEntry]r   zSequence[bool]r   )r   s   "r   r   3CheckFunctionManager.__init__.<locals>.__annotate__  s      (B ~ r   c                  < . p\        S! V 4      V 4       F  w  r#V'       g   VP                  R 4       K   VP                  R9   g#   RVP                  9   g   RVP                  9   dI   \        P                  RVP                  VP                  P                  4       VP                  R 4       K  VP                  R4       K  	  V# )Fr]  r  z7%s guard on %s is dropped with caching_precompile=True.T)r]  r@  r  r  )r8  r  r  r  r  r  r  r1  )r   r  keepr  _guard_filter_fns   &   r   r  6CheckFunctionManager.__init__.<locals>.guard_filter_fn  s    "#3F#;VDGD

5) &)>)>>)Q-B-BBULLLL--
 

5)

4(+  E, 
r   r  Fc              3  D   "   T F  p\        V4      \        J x  K  	  R # 5ir   )rc  r   )r1  r  s   & r   r4  0CheckFunctionManager.__init__.<locals>.<genexpr>  s     CNq47d?Ns    T)r  %sg        )backendziGuard failed on the same frame it was created. This is a bug - please create an issue.Guard fail reason: zGuard eval latency = %s us.2fguard_latency_usr  zGuard evaluation failed: r  )	tracebackdynamo_cpp_guards_strc                 *   < SP                    R S R R2# )z
Guard latency = r  z us)r  )latencyr   s   r   r  r  7  s    $"4"4!55GPS}TWXr   
payload_fnr   )Ar   	_weakrefs5update_diff_guard_managers_for_existing_cache_entriesr  r  r  rK   rF  rx  ry  r  r  r  rD   r  r  rS  r  rO   caching_precompiler  r9   sort_keyrJ  DisableTorchFunctionbuild_guardsr  r   r7  r/  r  compile_check_fnr   r  r  skip_guards_checkr  r  r  get_guard_fail_reason_helperr6   r  r  r   r#   r   r4   increment_toplevelr   guards_stater  r   r  serialize_guardsrQ   r  strict_precompilebypass_packager   r  
format_excr  _loggingtrace_structuredclear)r   r  r  r   r   r  r  r  r  r  r   existing_diff_guard_sourcessorted_guardsr  r  r{  filter_resultsr  reasonsr   r  r  r  s   f&&&&&&&&&           @@r   r   CheckFunctionManager.__init__{  ss    )5$$$;= B+N 	$ 7C  ,,, !1
 7CL22 	& 3=,;E<'<FL($8!MQMQ/BCCKKST ==222.QQ3P 4 v||@ XX**,, *.):):!/ *& "1JWX-,U<-X" >*c-.@@@@sCNCsssCNCCCCC*3M*B!*BhanUVFWFWEE*B  !
 &*%6%6+ / &7 &"G "/D!!'-HA -T .5-D-D*t112-4-D-D* ---l6I6I6I%%++L,D,DEE6&& ,,"557 	 %**14 
 -8-&&(@(@' ,""'')A)A1G 9gc]L 112Dc'lS*.Dd//1BCCCC
$($9$9D,=,=%! 	''#X 	( 	
 	 ] Y!# -,,J ## ==''999\G!!00/Ax8'224::4@ 1  sa   &Q;>Q0,Q;?Q;Q;.Q;>Q5
Q5
5Q;!R 0Q;;R	T.$1T)AT))T.ztuple[LiteralString, ...]%UNSUPPORTED_SERIALIZATION_GUARD_TYPESc               (    V ^8  d   QhRRRRRRRR/# )	r   r  r  r  list[Guard]r  r   r   r  r   )r   s   "r   r   r  O  s8     z: z:z: #z: (	z:
 
z:r   c                	  aaaa V F  pVP                  4       pVP                  '       d   \        VP                  4      MRpVR9   d3   VP                  '       d   VP	                  V4      p\        V4       Ks  Ku  V\        P                  9   d-   \        P                  P                  P                  V R24      h\        R V 4       R4      ;p'       g   K  \        P                  P                  P                  V R24      h	  VP                  ;'       g    Ro\        4       o\        4       oR VVV3R llp	VP                  4       p
V Fp  p\!        VP"                  \$        4      '       d<   V P&                  '       g   Q hV P&                  P(                   F  pV	! V4       K  	  K^  V	! VP"                  4       Kr  	  VP*                   F  pV	! V4       K  	  R R loV
P,                  P/                  4        UUu/ uF   w  rVS9   g   WP0                  9   g   K  WbK"  	  pppV
P,                  S,          P/                  4        UUu/ uF  w  rWP2                  9   g   K  WbK  	  uppVS&   \4        P6                  ! T
V
P8                  P/                  4        UUu/ uF   w  rVS9   g   WP:                  9   g   K  WbK"  	  uppV\        P<                  P?                  \A        V3R	 lV 4       4      4      \B        PD                  ! \F        V
PH                  4      R
R7      p
\K        V
V P&                  R7      p\M        W4      # u uppi u uppi u uppi )r  z guard cannot be serialized.c              3  T   "   T F  pV\         P                  9   g   K  Vx  K   	  R # 5ir   )r  r  )r1  r  s   & r   r4  8CheckFunctionManager.serialize_guards.<locals>.<genexpr>g  s(      00VVV A0s   (
(Nr  c                    V ^8  d   QhRRRR/# )r   r  r=   r   r   r   )r   s   "r   r   ;CheckFunctionManager.serialize_guards.<locals>.__annotate__w  s     
	* 
	*6 
	*d 
	*r   c                  < \        V 4      ;p'       d5   \        V\        4      '       g   Q hVS8w  d   SP                  V4       R # R # \	        V 4      ;p'       d,   \        V\        4      '       g   Q hSP                  V4       R # R # r   )r*   r  r   r  r+   )r  r1  builtins_dict_nameused_global_varsused_local_varss   & r   prune_variable=CheckFunctionManager.serialize_guards.<locals>.prune_variablew  sz    -f55t5!$,,,, --$((. ..v666!$,,,,##D) 7r   c                    V ^8  d   QhRRRR/# )r   r  zCallable[..., None]r   r   )r   s   "r   r   r    s     	 	#6 	;N 	r   c                  a \        V \        P                  4      '       d   R  R lo\        ;QJ d!    . V3R lV P                   4       F  NK  	  5M! V3R lV P                   4       4      pV P
                  P                  4        UUu/ uF  w  r#VS! V4      bK  	  ppp\        P                  ! V P                  .VO5/ VB # V # u uppi )c                    V ^8  d   QhRRRR/# )r   r  r   r   r   )r   s   "r   r   XCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>.__annotate__  s      C C r   c                `    \        V \        \        P                  34      '       d   V ! 4       # V # r   )r  rN   rI  r  r  s   &r   _refPCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>._ref  s$    !!mW[[%ABB s
Hr   c              3  4   <"   T F  pS! V4      x  K  	  R # 5ir   r   )r1  r  r  s   & r   r4  UCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>.<genexpr>  s      9&Qa&s   )r  	functoolspartialra  r   r  r  r9  )r  new_argskvnew_keywordsr  s   &    @r   normalize_create_fnBCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn  s    !Y..//
 !5 9!&& 955 9!&& 9978zz7G7G7IJ7Itq47
7IJ ((K(KlKKH  Ks   Cc           	   3  x   <"   T F/  p\         P                  ! VR R S! VP                  4      R7      x  K1  	  R # 5i)N)obj_weakrefguarded_class_weakrefr  )r  r  r  )r1  r{  r  s   & r   r4  r    sA       "/  ''$(.2"5eoo"F	  "/s   7:T)r  r   _guardsr4  r  )r  r  r   )r  rG  )'r  r  ra  r  r  rh  r  r  rS  r  rQ   r  next%name_of_builtins_dict_key_in_fglobalsr   dump_guards_stater  r*  ru   r  r  r  r   r  ry  rF  r  r  r  rx  r  	GuardsSetrK   r  tree_mapr<  r4  r  r  )r   r  r  r  r{  r  r  r`  failedr  output_graph_guards_stater  r  r  global_scope_stater  r  r  r  r  s   &&&&            @@@@r   r  %CheckFunctionManager.serialize_guardsO  s<    #E--/J>C>O>O>O%(9(9":UW <<(((!++e,C*3/ )
 2XXXmm''44!l">?   0
     mm''44h:; 3 #: *OOUUSU5%
	* 
	* %1$B$B$D!"E%22NCC,,,,,"33EEF"6* F u778 # #55F6" 6	  2>>DDF
F$$-M-M(M ADF 	 
 2>>"eg2
 *** AD2
-. %0$7$7% 6AAGGIIDA'10O0O+O I
 ,MM++  "/ 
 +1//.)GG+ #/%
!2 #2!22

 #<99W

2
s$   M
!M
M'M"MMc               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r   r  r  r  r   r  r   r  r   r  r   r  r  r   z(tuple[GuardBuilder, GuardManagerWrapper]r   )r   s   "r   r   r    sY     A& A&"A& &5A& 	A&
 -A& A&A& 
2A&r   c                	T  a \        4       pW'n        R oR V3R llp\        VV P                  VV P                  VP
                  VP                  VV VV P                  VR7      p	R R lp
\        P                  ! W4      o\        P                  ;'       d    \        R4      pV F}  pV'       gb   VP                  4       '       dL   RVP                  9  d;   RVP                  9  d*   \        P                  '       g   R	VP                  9  d   Kl  VP!                  V	4       K  	  W3# )
Nc                    V ^8  d   QhRRRR/# )r   r  r=   r   r   r   )r   s   "r   r   7CheckFunctionManager.build_guards.<locals>.__annotate__  s     	2 	2v 	2# 	2r   c                   < V P                   pV\        P                  J d   V P                  # S'       g   Q hS! 4       pVf   Q hVP	                  V P                  4      # r   )guard_sourcer<   CONSTANTr1  r  )r  r  	r_builder	w_builders   &  r   r  5CheckFunctionManager.build_guards.<locals>.source_ref  sV    !..L{333{{"9!I((($$V[[11r   )r  r  c                    V ^8  d   QhRRRR/# )r   weak_bzweakref.ref[GuardBuilder]r   r   r   )r   s   "r   r   r    s     	 	$= 	$ 	r   c                6    V ! 4       pV'       d
   R Vn         R # R # r   )r
  )r  r  s   & r   cleanup_builder:CheckFunctionManager.build_guards.<locals>.cleanup_builder  s    A r   r	  r  r  r  )r   r   r  r  r  r  r   r  rI  r  rO   r  rD   r  r1  r  r  )r   r  r  r  r  r  r  r  r  r  r  guard_on_nn_modulesr{  r  s   &&&&&&&      @r   r  !CheckFunctionManager.build_guards  s	    ,-+F(		2 	2 KK  $$%%!%!:!:+
	 KK9	$55 
 
//;
 #E'2244 #%**4$EJJ6555

9RLL! # %%r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r  r  
guards_outr  r   r  r   r   r   )r   s   "r   r   r    s>     HQ HQHQ  HQ :	HQ
 
HQr   c                		  aaa VP                   pVR .,          p\        P                  R4       . o. o. oV P                  P                  P                  \        \        P                  ! 4       4      4       RV n	        RR VVV3R lllp\        4       pVP                   FB  pVP                   F/  pW9  g   K  V! WP                  R4       VP                  V4       K1  	  KD  	  VP                  p	Rp
Rp\!        V	4      ^8  d7   \#        VP$                  V	RRP'                  V	4      ,           R,           .R4       \(        P*                  '       dG   VP,                  '       d5   \/        \0        \3        VP,                  !  4      w  rVP5                  W4       V P6                  '       d   V P6                  P8                  M. pV EF`  p\;        V\<        4      '       dm   VP>                  pVP@                  pVPB                   R	VPB                   2p\E        VPG                  V4      VPG                  V4      V.R4       V! VRR4       K  \;        V\H        4      '       d   VPJ                   Uu. uF  pVPG                  V4      NK  	  ppVPL                   Uu. uF  pVPG                  V4      NK  	  ppR
RP'                  R VPJ                   4       4       RRP'                  R VPL                   4       4       R2p\O        VVV.R4       V! VRR4       EKU  \Q        RV 24      h	  VPR                   F)  pVP                   F  pV! WP                  R4       K  	  K+  	  S'       d&   \T        PV                  PY                  RV3R lR7       \Z        P\                  f!   \Z        P^                  ! 4       P`                  pM\c        V Pd                  RR4      pRV
RVRVRV Pf                  /\h        C\k        4       CpV P                  Pm                  4        RVPn                  R,          /p\!        S4      ^ 8X  g   Q hVV P                  n8        W@P                  n9        V P                  Pu                  4        SV P                  n;        VV P                  n<        W0P                  n=        RV P                  n>        RV P                  n?        WP                  n@        R# u upi u upi )z**___kwargs_ignoredzGUARDS:Nc               (    V ^8  d   QhRRRRRRRR/# )	r   r  r   r{  r  log_onlyr   r   r   r   )r   s   "r   r   ;CheckFunctionManager.compile_check_fn.<locals>.__annotate__'  s,     )	= )	=)	=#/)	=;?)	=)	=r   c                ^  <a a \        S S4      p\        P                  R V4       SP                  V V3R l4       \        P                  \        P                  4      '       d   RpRpSe}   SP                  '       d-   RRP                  SP                  P                  4       4       2pSP                  '       d-   RRP                  SP                  P                  4       4       2p\        P                  RS VV4       V'       g%   SP                  S 4       SP                  V4       R# R# )r  c                   < R S RS'       dA   SP                   '       d/   \        P                  ! SP                   P                  4       4      MRRS'       d4   SP                  '       d"   \        P                  ! SP                  4      /# R/# )r   r  Nr  )r  rC   from_tracebackr   r  )r  r{  s   r   r  NCheckFunctionManager.compile_check_fn.<locals>.add_code_part.<locals>.<lambda>.  sl    I U[[[ #11%++2E2E2GH!  U%5%5%5 #11%2B2BC "r   r  Nz
Stack:
z
User stack:
zGuard: %s%s%s)r#  r  r  r  verbose_guards_logisEnabledForloggingDEBUGr  r  r   r  )	r  r{  r  r  maybe_stackmaybe_user_stackr   structured_guard_fnsr   s	   ff&   r   add_code_part<CheckFunctionManager.compile_check_fn.<locals>.add_code_part'  s    !6i GT#45 ''  "..w}}== #% ${{{(22775;;;M;M;O3P2Q&R'''-bgge6F6F6M6M6O.P-QR ) #((#$	 !!),"))*;< r   Tzcheck_no_aliasing(r  r  rw  zcheck_overlapping(overlapping=[c              3  8   "   T F  qP                   x  K  	  R # 5ir   rA  r1  r  s   & r   r4  8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>  s     /Z@Y1@Y   z], non_overlapping=[c              3  8   "   T F  qP                   x  K  	  R # 5ir   rA  r.  s   & r   r4  r/    s     3bDaqFFDar0  z])zUnknown GuardEnvExpr: dynamo_guardsc                 :   < S U u. uF	  q ! 4       NK  	  up # u up i r   r   )r  r*  s    r   r  7CheckFunctionManager.compile_check_fn.<locals>.<lambda>  s    BV4WBVQQSBV4W4Ws   r  r  ___check_tensors___check_tensors_verbose___check_global_state"___check_torch_function_mode_stackr  r   )Ar  r  r  r  r   attach_compile_idr   r6   r  r  r   r   r  r{  r  r  r   r   r  r  rO   rz  r  r  r(  r8  r  r  aotautograd_guardsr  r8   input_source_ainput_source_br1  r   r  r>   overlapping_sourcesnon_overlapping_sourcesr    r  r  rS  r  r  rP   initial_global_stateGlobalStateGuardr  r  r  r  rI   r  r#  r
  r   r   r  r   r   r   r   r   r   )r   r  r  r   largsr+  seengclr   r  check_tensors_fncheck_tensors_verbose_fnaliasing_code_partsaliasing_verbose_code_partsr:  r{  source_aru  r  r  overlapping_guard_managersnon_overlapping_guard_managerscheck_global_stater   r  r   r*  r   s   &&&&                     @@@r   r  %CheckFunctionManager.compile_check_fn  s      '((# 
CE 	111134	

 *.&)	= )	=V u<<C# "$		48HHTN &   $+#C#C #' '(1, -99(%		2J(KKcQR	" 666333?Bc7>>?@< 88#
 594E4E4ED002 	 (E%11 // //'}}oT(--A	-99(C99(CK	 it4E>22 #66.6 99!<6 + . #::2: 99!<: / 2
&&*ii/Z@Y@Y/Z&Z%[ \**.))3bEDaDa3b*b)ccei 
 2.2K	 it4"%;E7#CDDE (L ))C dIIt4 & *  NN++,W ,  --5!.!?!?!A!G!G!():):GT!J 0&(@#%70$2Y2Y	

 
  !
 	##% #W]]3%78 :!###*6'"'<<>0B-*>'+8( *.&)-&8P5K.2s   .SS#c                    V ^8  d   QhRRRR/# )r   obj_strr   r   r   r   )r   s   "r   r   r    s     7 7# 7$ 7r   c                	   \        V R 4      '       d   \        V P                  \        4      '       g   V P                  P                  ;pew   V P                  P
                  ;pe[   \        V\        4      '       g   Q h\        V\        4      '       g   Q hRV R2p\        V4      pVP                  W%4       WPn        R# R# R# R# R# )r  NzCache line invalidated because z got deallocated)	r  r  r  r  r   r   r   r   
invalidate)r   rN  r   r   r  deleted_guard_managers   &&    r   rP  CheckFunctionManager.invalidate  s    
 D/**t113MNN $ 2 2 > >>K $ 2 2 > >>Kk:6666k:66666wi?OPF$>v$F!"";F!6 L L O +r   c               $    V ^8  d   QhRRRRRR/# )r   r`  r  rN  r   r   r   r   )r   s   "r   r   r    s!      & 3 3 r   c                6    \        V4      V P                  9  dd   \        P                  ! V4      V P                  \        V4      &   \        P                  ! V\
        P                  ! V P                  VR7      4       \        T4      #   \         d     Li ; i)zadd a weakref, return the id)rN  )	r  r  rI  r  r#  r  r  rP  rg  )r   r`  rN  s   &&&r   r  CheckFunctionManager.id_ref  sw    
	#wdnn, +2++c*:r#w'  **4??GL
 #w  		s   A=B
 
BBc                    V ^8  d   QhRRRR/# )r   r`  r  r   zweakref.ref[object] | Noner   )r   s   "r   r   r    s      6 .H r   c                r    \        V4      V P                  9   d   V P                  \        V4      ,          # R# )zFLookup the _weakrefs created in id_ref function for ID_MATCH'd objectsN)r  r  )r   r`  s   &&r   r  $CheckFunctionManager.lookup_weakrefs  s(    c7dnn$>>"S'**r   )r  ry  rx  r  r  r  r  r  r  r  r  rF  )NNNNNFF)r  r(  r]  r.  r5  r<  r@  r  r   )r   r   r   r   r   r  rr  r  r  r  rP  r  r  r   r   r   r   r  r  z  sD    G!R	H)+D 	z:xA&FHQT7& r   r  c               $    V ^8  d   QhRRRRRR/# )r   r   r|  closure_argsr   r   ztuple[str, str]r   )r   s   "r   r   r     s!     ); );Y );c );o );r   c                  a	 ^ RI Hp \        4       o	 S	P                  V 4       R V	3R llpV! 4       pV  Fe  pV! V4      w  reVP                  V4       VP                  RV R24       VP                  4       ;_uu_ 4        VP                  R4       R	R	R	4       Kg  	  V! 4       pVP                  R
4       VP                  4       ;_uu_ 4        VP                  V4       VP                  R4       R	R	R	4       V! 4       pVP                  RV R24       VP                  4       ;_uu_ 4        VP                  V4       VP                  R4       R	R	R	4       VP                  4       VP                  4       3#   \         d    R R lp EL`i ; i  + '       g   i     EKm  ; i  + '       g   i     L; i  + '       g   i     Lp; i)r   r?   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   *build_guard_function.<locals>.__annotate__  s     	) 	)# 	)"7 	)r   c                &   < SP                  V 4      # r   )r  )ry  csepasss   &r   r  %build_guard_function.<locals>.replace  s    ??4((r   c                    V ^8  d   QhRRRR/# r  r   )r   s   "r   r   r]    s     	 	# 	"7 	r   c                
    . V 3# r   r   )ry  s   &r   r  r`    s    t8Or   zif not (z):zreturn FalseNzdef guard(L):zreturn Truezdef ___make_guard_fn(zreturn guard)
torch._inductor.utilsr@   rW  r  RecursionErrorr  r   r  splicer  )
r   rZ  r@   r  
guard_bodyry  rr  r{  make_guard_fnr_  s
   &&       @r   r  r    sx   4oG
j!	) 	)  !Jg&xvR01    0 ! 	  E	OOO$	Z & 
 #$M3L>DE					U#/ 
   -"8"8":::?  	 	 !   
 
 	s5   E9 F#F&.#F99FFF#&F6	9G		c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r   -  s     P Pt Pr   c                 h    \         P                  P                  P                  P	                  R 4      # )r   rS  r  	_internal	log_stateis_artifact_enabledr   r   r   is_recompiles_enabledro  -  s#    >>##--AA,OOr   c                   V ^8  d   QhRR/# ri  r   )r   s   "r   r   r   1  s     X Xt Xr   c                 h    \         P                  P                  P                  P	                  R 4      # )r   rk  r   r   r   is_recompiles_verbose_enabledrr  1  s$    >>##--AABVWWr   c                    V ^8  d   QhRRRR/# )r   initial_stackz'list[torch.overrides.TorchFunctionMode]r   zCallable[[], bool]r   )r   s   "r   r   r   6  s     + +:++r   c                Z   a V  Uu. uF  p\        V4      NK  	  upoR  V3R llpV# u upi )c                   V ^8  d   QhRR/# ri  r   )r   s   "r   r   :make_torch_function_mode_stack_guard.<locals>.__annotate__;  s     
 
T 
r   c                    < \        4       p \        V 4      \        S4      8w  d   R # \        SV 4       F  w  rV\        V4      Jg   K   R # 	  R# r  )r   r   r8  rc  )	cur_stackr(  moderY  s      r   check_torch_function_mode_stackMmake_torch_function_mode_stack_guard.<locals>.check_torch_function_mode_stack;  sE    13	y>SZ'E9-HBd# . r   r  )rt  r  r{  rY  s   &  @r   r  r  6  s4     ,,mT!Wm,E
 
 +* -s   (Scopec               $    V ^8  d   QhRRRRRR/# )r   r  r   r
  r}  r   r|  r   )r   s   "r   r   r   M  s$     2 2&2/422r   c                   V P                   f   Q h\        V P                   4      p\        P                  ! \        4      pV P
                   F3  pWBR&   \        \        WBV4      4      pW5,          P                  V4       K5  	  V Uu. uF$  p\        W6,          4      ^8  g   K  W6,           NK&  	  ppRP                  V4      pRV 2.# u upi )N__compile_source__r  zDuplicate tensors found: )r   rC  r  r  r(  r   r  evalr  r   r  )	r  r
  r   ids_to_sourcer!  	tensor_idrV  duplicate_tensorsr  s	   &&       r   1recompilation_reason_for_no_tensor_aliasing_guardr  M  s     %%111223L++D1M&AA-:)*tM?@	 ''6 B ,9+8CC@R<SVW<W=
=   YY()F'x011s   C
$C
c                    V ^8  d   QhRRRR/# )r   r  r   r   r   )r   s   "r   r   r   `  s     
% 
% 
% 
%r   c                4    ^ RI pRpVP                  VRV 4      # )z
Replace occurrences of L[...] with just the inner content.
Handles both single and double quotes.

This is to generate user friendly recompilation messages.
NzL\[\s*['\"](.*?)['\"]\s*\]z\1)resub)r  r  patterns   &  r   r  r  `  s     +G66'5!$$r   c                    V ^8  d   QhRRRR/# )r   r  ztraceback.StackSummary | Noner   r   r   )r   s   "r   r   r   m  s      -r   c           	     z   V e   \        V 4      ^ 8X  d   R# . pV  F  pVP                  pVP                  pVP                  pVP                  '       d   VP                  P                  4       MRpVP                  RV RV RV 24       V'       g   Ky  VP                  RV 24       K  	  RP                  V4      # )z
Format the user stack trace for display in guard failure messages.

Returns a formatted string representation of the stack trace,
or an empty string if no user stack is available.
r  z  File "z", line z, in     r  )r   r  r  r1  r   stripr  r  )r  linesframer  r  r1  source_lines   &      r   format_user_stack_tracer  m  s     S_1E>>zz,1JJJejj&&(Bxz&tfEF;LL4}-.  99Ur   c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r  r   f_localsr  
compile_idzCompileId | Noner  zCallable | Noner   r   r   )r   s   "r   r   r     sA     h) h)&h)h) !h)
 h) 	h)r   c                    V P                   f   Q hV P                  f   Q hRVRV P                   R,          /pVP                  V P                  4       . pRpV P                  '       d   V P                  P                  pRp. pV P                  V4      p	Rp
V	P                  '       gZ   V	P                  p\        V4      ^8X  d   RV^ ,          9   d   RpMTp. pV	P                  '       d   \        V	P                  4      p
M-Wc8w  d   RpVP                  V4       MR	pVP                  V4       V'       d   \        W4      pMV F  p\        V P                   4      pWR
&   \        4       ;_uu_ 4         \        WV4      p RRR4       \%        X\&        4      '       d   T'       g   Tp\%        T\(        4      '       g   K}  TP                  T4       \#        4       '       d   K   M	  \        V4      ^8X  d   V RV^ ,           2pMV R2RP+                  V4      ,           pV
'       d   VRV
 2,          p\-        V4      #   \          d    \#        4       '       d    RRR4       EK$  h i ; i  + '       g   i     L; i)z
Return the reason why `guard_manager` failed.
Updates `guard_failures` with the generated reason.
Only the first failed check of guard_manager is reported.
Nr  r  Fr  zDuplicate tensor foundTa  BACKEND_MATCH failure: torch.compile detected different backend callables. If this is unexpected, wrap your backend in functools.partial (or reuse the same cached backend) to avoid creating a new backend function each time. More details: https://github.com/pytorch/pytorch/issues/168373zUnexpected recompilation: runtime guards failed even though they passed during recompilation-reason analysis. Please open an issue with a minimal repro: https://github.com/pytorch/pytorchr  r~  z; z
User stack trace:
)r   r   rS  r   r  r  resultr   r   r  r  r  r  rC  rM   r  rb  rr  r  r   r   r  r  )r  r  r  r  r
  r  cache_entry_backendno_tensor_aliasing_check_failedr   guard_debug_infouser_stack_strr  r  r   fail_reason
reason_strs   &&&&            r   r  r    s]    %%111%%111(C!;!;C!@AE	LL++,G   +77??&+#$&$228<N
 """-@@ !"a''+=a+@@26/,%'" &&&45E5P5PQN		'N 	 	v2 	 	v&C
 'D : :;L15-./11"&t5"AK 2 +t,,["+s++{+466' '. 7|q"|2gaj\2
"|2&7);;
-n-=>>
Z((/ ! 466  21 	 21s*   2I-4II*	I-(I*	*I--I=c               4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r   r  r   r   r   r  r  r  r7   r  r   skip_loggingr   r   r   r   )r   s   "r   r   r     sN      &
   	   	r   c                   \        V \        4      '       d   V R V P                   2# \        WW44      pV'       d   V# \        \
        V,          ,          P                  V4        V P                  e1   T P                  \        T;'       g    R\
        V,          4      4       V#   \         d    \        P                  R4        T# i ; i)r~  zunknown reasonzVFailure in guard_fail_fn callback - raising here will cause a NULL Error on guard eval)r  r  r  r  r   r   r  r   r   rb  r  r  )r  r   r  r  r  r  r  s   &&&&&& r   get_guard_fail_reasonr    s     -!;<<R A ABCC-J =&'..z:
&&2''*88(8-:MN   
d	
 
s   &&B& B& & C
	C
c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   r   r  r  r   r  r   r  r   r   r|  r   )r   s   "r   r   r     sA     B B"BB 	B
 B Br   c                  a
 . o
V e`   \        V P                  V P                  VP                  V P                  VV4      pV'       d   S
P                  V4       V P                  p Kc  VP                  pV'       d   S
# \        4       ;'       g    \        4       pV'       g   \        P                  '       Ed   \        4       '       d#   RP                  R \        S
4       4       4      pM&\        P                  ! RP                  S
4      R4      pRV 2pRVP                    RVP"                   RVP$                   R\        P                  ! VR	4       2p	V'       d<   \        4       '       d   \&        P)                  V	4       M\*        P)                  V	4       \        P                  '       d   \,        P.                  ! V	4      h\0        P2                  P5                  R
R V
3R lR7       S
# )z
Return the list of guard failure reasons using cache_entry.
Logs the recompilation reason if `recompiles` logging is enabled.
Raises a RecompileError if `config.error_on_recompile` is enabled.
z

c              3  j   "   T F)  w  rR V R2\         P                  ! VR4      ,           x  K+  	  R# 5i)zguard z failures:
- N)r  r  )r1  r  r  s   &  r   r4  :get_and_maybe_log_recompilation_reasons.<locals>.<genexpr>3  s5      #!3IA <(8??64+HHH!3s   13r  r  z-triggered by the following guard failure(s):
zRecompiling function z in :r  artifactc                     R RRR/# )r1  recompile_reasonsencodingr  r   r   r   r   r  9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>J  s    '
r   c                 :   < \        S 4      ^8X  d
   S ^ ,          # S # r   rJ  )r  s   r   r  r  N  s    W):71:GGr   )metadata_fnr  )r  r  r   r  r  r  r   r  ro  rr  rO   error_on_recompiler  r/  r  r  rH  co_filenameco_firstlinenorecompiles_verbose_logr  recompiles_logrQ   RecompileErrorrS  r  r  )r   r  r  r  r  r   do_recompiles_logfailuresguard_failure_detailsmessager  s   &&&&      @r   'get_and_maybe_log_recompilation_reasonsr    s    G

!&%%NN""
 NN6"!&&<<D-/RR3P3RF555(**{{ #!*7!3# H
  tyy'94@H<XJG 	 $DLL>d6F6F5GqI\I\H]]_4f=>@ 	 ,..&,,W5$$W-$$$$$W--	NN##
 H $  Nr   c                    V ^8  d   QhRRRR/# )r   r   r  r   r   r   )r   s   "r   r   r   T  s     " """"r   c                   T p\        4       pV e8   VP                  V P                  P                  4       4       V P                  p K;  Tp V e9   W P                  n        V P                  P                  4        V P                  p K<  V# r   )rK   rS  r  r  r   r   r'  )r   first_cache_entryacc_diff_guard_sourcess   &  r   r  r  T  s     $
 /9l

!%%%%@@B	
 "&& $K

!7M!!4!!==?!&& "!r   c               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   r  r   r   r   r  r  r   r   lastr   r   r   r   )r   s   "r   r   r   o  sD     0 00
0  0 	0
 0 
0r   c                   \        R VP                   RVP                   RVP                   24       \        RRP	                  V P
                  4      ,           R,           4       \        RRP	                  V P                  4      4       \        V 4       RV/V P                  CpV P                   F  p \        W`P                  V4       K  	  R#    \        RT 24        K3  ; i)	zERROR RUNNING GUARDS  r  zlambda r  z and
  r  zMalformed guard:
N)
printrH  r  r  r  r   r   r   r  r   )r  r   r  r   r  r  r{  s   &&&&&  r   guard_error_hookr  o  s     

~Qt/?/?.@$BUBUAVW 
)dii 2 23
3c
9:	#z}7789	-?M$>$>?K))	022K@ *	0&ug./s   5CC$c                    V ^8  d   QhRRRR/# )r   seqzSequence[T]r   zGenerator[T, None, None]r   )r   s   "r   r   r     s        8 r   c              #  n   "   \        4       pV  F   pW!9  g   K  Vx  VP                  V4       K"  	  R # 5ir   )r   r  )r  rB  r  s   &  r   uniquer    s+     5D=GHHQK s   55c               $    V ^8  d   QhRRRRRR/# )r   
obj_sourcer=   dupe_sourcer.  r   zfunctools.partial[Any] | Noner   )r   s   "r   r   r     s$     ! !!%2!"!r   c                J   V'       d   W8w  d   \        V4      p\        V 4      p\        V4      '       g   \        V 4      '       d1   \        P                  ! V P                   R VP                   R24      hW#8X  d'   \
        P                  ! \        P                  VR7      # R# )z is aliasing zC. This is not supported. Please do a clone for corresponding input.)ru  N)	r.   r-   rQ   UnsafeScriptObjectErrorr1  r  r  r  r}  )r  r  ser_source_is_localsource_is_locals   &&  r   make_dupe_guardr    s     {02;?.z:/
 
1*==--??#=1A1A0B C> ?  1 $$\%A%AKXXr   skipc               $    V ^8  d   QhRRRRRR/# )r   r   r9   r  r   r   r   r   )r   s   "r   r   r     s&     K K5 K KD Kr   c                   ^ RI Hp VP                  4       P                  pVP                  '       d   R# \
        P                  \        P                  4      ;'       g$    \        P                  \        P                  4      pVP                  P                  pV FI  p\        V\        4      '       g   Q h\        VP                  4      '       d   K8  V! WdV ^,           R7       KK  	  R# )z
Add dynamo guards to the current tracing context.

Args:
    guards: guard(s) to add
    skip: number of stack frames to ignore for debug stack trace
)TracingContextN)collect_debug_stackr  )torch._guardsr  r  guards_contextskip_installr  r%  r&  r'  r$  r2  r  r  r9   r0   r*  )r  r   r  r  r  r  r{  s   $*     r   install_guardr    s     -#'')88N"""$11 8 8		(	(	7  
&
&
*
*C%''''$U%=%=>>EJ	 r   r  z"dict[str, GuardCheckSpec | object]GUARD_VALUE_DISPATCHr  r{  z9GuardBuilder methods missing guard_check_spec decorator: r  z[. Use @register_guard_check_spec, @skip_guard_check_spec, or @unsupported_guard_check_spec.)r  r  r  rJ  rr  r  r  r   r   (E  __conditional_annotations__r  
__future__r   r  r  r  r  rJ  r  r
  r  r  r  r&  r  pickler;  r  r  rY  r=  rI  
contextlibr   r  r   r   typingr   r   r	   r
   typing_extensionsr   r   r   r   rS  torch.overridestorch.utils._devicetorch._C._dynamo.eval_framer   torch._C._dynamo.guardsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   torch._dynamo.sourcer*   r+   r,   r-   r.   r/   r0   r1   r2   r3   torch._dynamo.utilsr4   r5   r  r6   r7   r8   r9   r:   r;   r<   r=   r>   rc  r@   torch._library.opaque_objectrA   rB   torch._loggingrC   torch._utils_internalrD   %torch.fx.experimental.symbolic_shapesrE   rF   rG   rH   rI   torch.utilsrJ   r  torch.utils._ordered_setrK   torch.utils._tracebackrL   rM   torch.utils.weakrN   r  rO   rP   rQ   
eval_framerR   r  rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   collections.abcr   r   rr  rc  r  rw  numpyr  ModuleNotFoundErrorr   r   r   ro  r   torch._Cr   r  r   r   rV  r   r   	getLoggerr   r  r  getArtifactLoggerr  r  r  r$  r_  r   r   r   r  cacher  r  r  r  rJ  r  r  r#  r,  r)  r<  rB  rR  rX  r^  rh  rk  r  rn  r  r  r  rK  rx  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rW  r  r  r  r  r  r  Picklerr  r  r  r  r  ro  rr  r  rC  r   r}  r  r  r  r  r  r  r  r  r  r  r  dirr  r  r  isupperr{  r  _methodr   r(  	signature
parameters_paramsr  MISSING_GUARD_SPECSr  r  )r1  r  r  r  r  r  s   00000@r   <module>r     sC  " # 
        	     
      %    ; ; C C !    >      8   H
 
 
 1 R % 1  * / O * ( ( ,. . . . . . . . . . . .^      , ( HL D KIOO-. 
 =='T4CL!^^--hA
11(LI99"  ^^55h@PQ " ,~ , DT . . +/' .@/ hh&&:: %0<,'K*31. d#  $*Z
G   
tyy 
 8 8Z 6 X
E
-;
;
13!?X X$P&
# P&
HMR8 R8j$!4 $ $ $ $ , , ,
   
 
h hV:)bD
 D
N);XPX
+( 	gtCK012&
%0h)V >B BJ"60. % &!HKa K K< L!<!7<68JDQQ D'M!< 8  \"	"Qx 
 S! 
 	GL%>>?	 

 	tG--g6AABBGCqH 
 	
g 
 G/0 
E"	  

C99()
* +D	E  m`  	BD`<	sH   \ \(\ \1\\)5\#\8\\	\\