
    3jrI                      % S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKJr  SSK
Jr  SSKJrJrJrJr  SSK J!r!J"r"J#r#  SS	KJ$r$  SSK%r%SSK&r%SSK'r%SS
K(J)r)  SSK*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrD  SSKEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrO  SSKPJQrQJRrR  SSKSJTrTJUrUJVrVJWrWJXrXJYrYJZrZJ[r[J\r\  SSK]J^r^  SSK_J`r`Jara  SSKbJcrc  SSKdJere  SSKfJgrgJhrhJiriJjrjJkrk  SSKlJmrn  SSKoJprp  SSKqJrrrJsrs  SSKtJuru  SSKvJwrwJxrxJyry  SSKzJ{r{  SSK|J}r}J~r~JrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJrJrJrJrJrJrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  \(       a  SSKJr  SrS\S '   \" \GR                  " 5       5      r SSKr\(       a$  SS!KJrJrJr  SS"KJr  SS#KJr  SS$KJrJr  SS%KJr  \#" S&5      r\GR                  " \5      r\%GR                  GR                  \S'5      r\%GR                  GR                  \S(5      r\%GR                  GR                  \S)5      r\%GR                  GR                  \S*5      rS+rSS, jr " S- S.\^5      r " S/ S05      rSS1 jr\GR                  SS2 j5       rSqS3\S4'   SS5 jrSS6 jr\%GR                  GR                  GR                  rSS8 jr S       SS9 jjrSS: jrSS; jrSS< jr              SS= jrSS> jrSS? jrSS@ jrSSA jr\GR                  " SBSC9 " SD SE5      5       r            SSG jrSSH jr\GR                   " SI SJ5      5       r " SK SF\GR                   5      Gr\GR                  SSL j5       Gr " SM SN\5      GrG\" 5       GrSSO jGrSSP jGrSSQ jGrSSR jGr	SSS jGr
SST jGrSSU jGrSSV jGrSSW jGrSSX jGrSY GrSZ Gr " S[ S\5      GrS] Gr " S^ S_\X5      Gr " S` Sa5      GrSSb jGr " Sc Sd\5      Gr\GR                   " Se Sf5      5       Gr\GR                   " Sg Sh5      5       Gr " Si Sj5      Gr\GR                  SSk j5       Gr " Sl Sm\GR8                  5      GrSSn jGr      SSo jGr " Sp Sq5      Gr SSr jGr!SSs jGr"SSt jGr#    SSu jGr$\"" SvG\%G\&G\4   5      Gr'      SSw jGr(SSx jGr)    SSy jGr*          SSz jGr+ S             SS{ jjGr, S         SS| jjGr-    SS} jGr.            SS~ jGr/\{" G\/5        SS jGr0      SS jGr1SS.SS jjGr2G\3" G\5       V Vs0 s H'  n G\4" G\4" G\U 5      SS5      =Gq5  c  M  U G[j        _M)     snn Gr6S\S'   G\3" G\5       VVVs/ s H  nUS   GRo                  5       (       d  M  UGRq                  S5      (       a  M7  G\9" G\4" G\US5      =Gq:5      (       d  MT  G\;" G\<" \
GR{                  G[t        5      GR|                  5      =Gq?5      S:  d  M  G[~        S   S7:X  d  M  G\@" G[t        S5      (       a  M  UPM     snnnGrAG\A(       a  G\B" SSGR                  G\A5       S35      eg! \ a    Sr GNf = fs  snn f s  snnnf )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_guards)__defaults____kwdefaults____code____closure____annotations____func____mro__c                \    [        U 5      n[        U5      UR                  U5      -
  S-
  nU$ NrP   )&code_framelocals_names_reversed_cachedlenindex)codevar_nameframelocals_names_reversedframelocals_idxs       N/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_dynamo/guards.pyget_framelocals_idxr      s=     "H!M&'*D*J*J8*TTWXX      c                  :   ^  \ rS rSrSS jrSSU 4S jjjrSrU =r$ )IndentedBufferWithPrefix   c                :    SU R                   U R                  -  -  $ )Nz| )_indenttabwidthselfs    r   prefixIndentedBufferWithPrefix.prefix   s    t||dmm344r   c                X   > U(       a  [         TU ]  U5        g [         TU ]  SU-   5        g )Nz+- )super	writeline)r   lineskip_prefix	__class__s      r   r   "IndentedBufferWithPrefix.writeline  s$    Gd#Gedl+r    returnstrF)r   r   r   boolr   None)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classcell__r   s   @r   r   r      s    5, ,r   r   c                      \ rS rSrSrSSS jjr\SS j5       rSS jrSS jr	SS jr
SS	 jrSS
 jr    SS jrSS jr S     SS jjr      SS jr      SS jrSS jrS S jrS!S jrSS jrSrg)"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                   Uc  [        5       U l        OXl        S U l        S U l        S U l        / U l        S U l        S U l        S U l        S U l	        S U l
        0 U l        / U l        [        5       U l        [        5       U l        g N)r&   root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_guardsrL   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              #  z   #    [        5       U l         S v   [        5       U l        g ! [        5       U l        f = f7fr   )r   r   r   s    r   #_preserve_printed_relational_guards7GuardManagerWrapper._preserve_printed_relational_guards(  s+     ),&	3-0UD*SUD*s   ;' ;8;c                |   ^ ^^^ SU U4S jjmSU U4S jjmSUU4S jjmT" T R                   5        T R                  $ )Nc                d  > U R                  5       TR                  ;   =(       d    U R                  5       S:  n[        U R	                  5       R                  5       5       H  u  nu  p4UT" U5      T" U5      -  -  nM     U(       a)  TR                  R                  U R                  5       5        U$ Nr   )
get_sourcer   
fail_countsortedget_key_value_managersitemsadd)node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@QTU@U  -3++-335-((w #eGnuW~&EE"-
 "''++DOO,=>%%r   c                H  > [        U [        5      (       a   eU R                  5       TR                  ;   =(       d    U R	                  5       S:  nU R                  5        H  nUT" U5      -  nM     U(       a)  TR                  R                  U R                  5       5        U$ 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@QTU@U  "446	"eI&66" 7 "''++DOO,=>%%r   c                V   > U c  g[        U [        5      (       a  T" U 5      $ T" U 5      $ 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   r   r   )r   r   )r   r  r  r
  s   `@@@r   collect_diff_guard_sources.GuardManagerWrapper.collect_diff_guard_sources1  s;    	& 	&	& 	&	' 	' 	dii&&&r   c                    [         R                  (       a   [        S5      (       a  U R                  5         U R	                  5         g )Nz3pytorch/compiler:use_recursive_dict_tags_for_guards)rQ   "use_recursive_dict_tags_for_guardsrE   find_tag_safe_rootsprepare_diff_guard_managerr   s    r   finalizeGuardManagerWrapper.finalizeb  s4    44A:
 :
 $$&'')r   c                D    U R                  5         U R                  5         g r   )r  populate_diff_guard_managerr   s    r   r  .GuardManagerWrapper.prepare_diff_guard_manageri  s    '')((*r   c                  ^^^^       SS jmSU4S jjmSUU4S jjmSUU4S jjmT" U R                   5      nU HL  n[        UR                  5       [        R                  R
                  5      (       d  M<  UR                  5         MN     g)	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                   ^ U R                  5       nU R                  5       n[        U4S j[        X#5       5       5      $ )Nc              3  n   >#    U  H*  u  p[        UT5      =(       a    UR                  5       v   M,     g 7fr   )r  is_tag_safe).0accessormgraccepted_accessorss      r   	<genexpr>TGuardManagerWrapper.find_tag_safe_roots.<locals>.check_tag_safety.<locals>.<genexpr>  s1      %?MH 8%78NS__=NN%?s   25)get_accessorsr  allzip)r   r#  	accessors
child_mgrss    `  r   check_tag_safetyAGuardManagerWrapper.find_tag_safe_roots.<locals>.check_tag_safety  s@     **,I002J %(%?  r   c                  > [        U R                  5       [        5      (       d   e/ nSn[        U R	                  5       R                  5       5       H/  u  nu  pEUb  T" U5        Uc  M  UR                  T" U5      5        M1     U R	                  5       R                  5        H9  u  pEU(       a  X$R                  5       -  nU(       d  M'  X%R                  5       -  nM;     U(       a  U R                  5         U$ NT)

issubclassget_type_of_guarded_valuedictr   r   r   extendvaluesr  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                  > [        U [        5      (       a   e/ nU R                  5        H  nUR                  T" U5      5        M     U R	                  5       (       a|  [        U R                  5       [        R                  5      (       a<  U R                  5       (       a%  U R                  5       (       d  U R                  5         U$ U R                  5          U$ [        U R                  5       [        5      (       aT  U R                  5       nU R                  5       n[        S [        X45       5       5      nU(       a  U R                  5         U$ [        U R                  5       [        R                   R"                  5      (       a0  T" U [$        [&        45      nU(       a  U R                  5         U /$  U$ U R                  5       [(        R*                  [(        R,                  [.        [0        4;   a  [2        R4                  (       a  T" U [6        [8        [:        [<        [>        45      nU R                  5        H4  n[        U[>        5      (       d  M  UURA                  5       [B        ;   -  nM6     U(       a  U R                  5         U$ [        U R                  5       [(        RD                  5      (       aJ  T" U [>        45      nU[        S U R                  5        5       5      -  nU(       a  U R                  5         U$ [        U R                  5       [F        5      (       ad  U RI                  5       RK                  [B        5      (       a<  [2        R4                  (       a'  T" U [L        45      nU(       a  U R                  5         U$ [        U R                  5       [N        5      (       a*  T" U [P        [R        45      nU(       a  U R                  5         U$ )Nc              3  t   #    U  H.  u  p[        U[        5      =(       a    UR                  5       v   M0     g 7fr   )r  r   r  )r   r!  r"  s      r   r$  QGuardManagerWrapper.find_tag_safe_roots.<locals>.visit_manager.<locals>.<genexpr>  s0      *)C x)ABXsGXX)Cs   68c              3  v   #    U  H/  n[        U[        5      =(       a    UR                  5       S :H  v   M1     g7f)cell_contentsN)r  r   get_attr_name)r   r!  s     r   r$  r:    s>      + %9 x)=> D ..0OCD$8s   79)*r  r   r  r2  is_guarded_value_immutabler/  r0  torchTensorhas_no_accessorshas_object_aliasing_guardr4  r1  r&  r'  r(  nnModuler   r)   typesFunctionType
MethodTypestaticmethodclassmethodrQ   )assume_dunder_attributes_remain_unchangedr   r   r   r   r   r=  dunder_attrs_assumed_constantsCellTypetupler   endswithr'   typer(   r*   )	r   r5  r	  r)  r*  r6  r!  r+  r  s	          r   r
  >GuardManagerWrapper.find_tag_safe_roots.<locals>.visit_manager  sg   !$(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
&) *),Y)C* '# '&&(f "!e D::<ehhooNN&668IJ'# '&&(  	 '\ "!M ..0&&$$ 	 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##s + %)$6$6$8+ ( #
 '&&(6 "!3 499;UCCOO%../MNNDD '746'# '&&( "! D::<dCC&602FG'# '&&(!!r   c                X   > U c  / $ [        U [        5      (       a  T" U 5      $ T" U 5      $ r   r  r  s    r   r  6GuardManagerWrapper.find_tag_safe_roots.<locals>.visit;  s1    |	$ 011)$// &&r   N)r   r   r#  ztuple[type[GuardAccessor], ...]r   r   )r   r   r   list[GuardManager])r   r   r   rS  )r   r/  r0  r?  rC  rD  mark_tag_safe_root)r   r5  r   r+  r  r  r
  s      @@@@r   r  'GuardManagerWrapper.find_tag_safe_rootsm  s    t		4S			"8l	" l	"\	' 	' tyy)"D$88:EHHOOLL'') #r   c                    U R                  U R                  5      U l        U R                  (       a  U R                  R	                  5         g g 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                J   ^ SU4S jjnU R                   R                  U5      $ )Nc                *   > U R                  5       T;   $ r   )r   )node_mgrchosen_sourcess    r   	filter_fn@GuardManagerWrapper.clone_with_chosen_sources.<locals>.filter_fnW  s    &&(N::r   )r\  r   r   r   )r   clone_manager)r   r]  r^  s    ` r   rW  -GuardManagerWrapper.clone_with_chosen_sourcesT  s    	; yy&&y11r   c                    UR                   R                  nUR                  5       nU Vs/ s H
  oBS-   U-   PM     nnU$ s  snf )N: )r   r   r   )r   guard
guard_namepartsparts        r   get_guard_lines#GuardManagerWrapper.get_guard_lines\  sE    __--
((*6;<edd"T)e< =s   A c                    UR                  5       nUR                  R                  nUS-   U-   nU(       a  USU-   -  nUSUR                  5        3-  nUSUR	                  5        SUR                  5        S3-  nU$ )Nz	: source=, z, type=z, tag_safe=())r   r   r   r0  r  is_tag_safe_root)r   guard_manageraccessor_str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                   [        UR                  5       R                  5       5       H  u  nu  pEUR                  SU 35        UR	                  5          U(       a4  UR                  SU R                  U5       35        U R                  XB5        U(       a4  UR                  SU R                  U5       35        U R                  XR5        S S S 5        M     g ! , (       d  f       M  = f)NzKeyValueManager pair at index=zKeyManager: zValueManager: )r   r   r   r   indentrs  construct_manager_string)r   r"  body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   A7C
C'	c           
        UR                  5          UR                  5        H  n[        U[        5      (       at  X0R                  ;  a=  U R                  R                  U5        UR                  U R                  U5      5        Md  UR                  UR                  R                  /5        M  UR                  U R                  U5      5        M     [        U[        5      (       a  U R                  X5        [        UR                  5       UR                  5       5       HH  u  pEUR                  U R!                  USUR#                  5        35      5        U R%                  XR5        MJ     S S S 5        g ! , (       d  f       g = f)Nzaccessed_by=)rv  get_leaf_guardsr  r%   r   r   
writelinesrh  r   r   r   rz  r(  r&  r  r   rs  reprrw  )r   r"  rx  rd  r!  r	  s         r   rw  ,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E55
Fc                   U R                  5          [        5       nSUl        UR                  SSS9  UR                  SSS9  UR                  S5        U R	                  U R
                  U5        [        U R
                  S5      (       aA  U R
                  R                  5        H#  nUR                  U R                  U5      5        M%     UR                  5       sS S S 5        $ ! , (       d  f       g = f)NrP    T)r   zTREE_GUARD_MANAGER:r&   get_epilogue_lambda_guards)r   r   r   r   rw  r   hasattrr  r~  rh  getvalue)r   rx  rd  s      r   __str__GuardManagerWrapper.__str__  s    557+-DDMNN24N0NN0dNCNN-.))$))T:tyy">??!YYAACEOOD$8$8$?@ D==? 877s   C
C%%
C3c                8    U R                   R                  U5      $ r   )r   checkr   xs     r   r  GuardManagerWrapper.check  s    yyq!!r   c                8    U R                   R                  U5      $ r   )r   check_verboser  s     r   r  !GuardManagerWrapper.check_verbose  s    yy&&q))r   c                d   ^ ^^^ [        5       mSS jmSUUU U4S jjmT" T R                  5        g )Nc                    / nU R                  5        H6  nUR                  S5      S   R                  5       nUR                  U5        M8     U$ )N#r   )r   splitrstripappend)
leaf_guardr   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  > U R                  5        Hu  n[        U[        5      (       a<  UT;  a4  TR                  R	                  T" U5      5        TR                  U5        MR  MT  TR                  R	                  T" U5      5        Mw     U R                  5        H  nT" U5        M     g r   )r}  r  r%   r   r2  r   r  )r"  rd  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   )r  r#   r   	list[str])r"  r   r   r   )r   r   )r   r  r  r  s   `@@@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   zRootGuardManager | Noner   r   )r   zGenerator[None, None, None])r   OrderedSet[str]r   r   )r]  r  r   r&   )rd  r#   r   r  )rn  r   ro  
str | Noner   r   )r"  r   rx  r   r   r   )r"  r   rx  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  rW  rh  rs  rz  rw  r  r  r  r  r   r   r   r   r   r   
  s    @, 3 3/'b*+X*t>2-2	2 GK
)
9C
	
A#A+CA	A??'??	?@#"*r   r   c                   [         R                  R                  5          [        U [        R
                  [        R                  45      (       a  [         R                  " U 5      OU sS S S 5        $ ! , (       d  f       g = fr   )r?  	overrides_enable_torch_functionr  npgenericndarray	as_tensor)as    r   
from_numpyr    sH     
	/	/	1%/BJJ

3K%L%Luq!RS 
2	1	1s   AA00
A>c                     SS K n SS Kn U R                  R                  U R                  R                  /nSSKJn  UR                  U5        U Vs1 s H  n[        R                  " U5      iM     sn$ s  snf )Nr   )POLYFILLED_MODULES)
torch._dynamo.external_utilstorch._dynamo.polyfills_dynamoexternal_utils	polyfillstorch._dynamo.polyfills.loaderr  r2  inspectgetfile)r?  modsr  ms       r   uninteresting_filesr    sY    '"MM((%--*A*ABDA 	KK"#(,-1GOOA---s    A3dict[str, object] | None_CLOSURE_VARSc            	         [         Gc  0 S[        _S[        _S[        R                  R
                  _S[        _S[        _SS _S[        _S	[        _S
[        _S[        _S[        _SS _S[        _S[        _S[        R                   _S["        c  S O["        R                   _S[%        S5      _[&        R(                  [*        R,                  R.                  [*        R0                  [2        [*        R4                  [*        [6        S.Eq [         $ )N___check_type_id___check_obj_id___odict_getitem___key_to_id___dict_version___dict_containsc                ,    [         R                  X5      $ r   )r1  __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                    U R                   $ 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_tensorr?  r  )r  r   r   collectionsOrderedDict__getitem__r   r   r   r   r   r   r   r   r   mathisnanr  float	importlibimport_moduler?  utils_devicer  r  _as_tensor_fullprecr  r   r   r   _get_closure_varsr    s<   

|
  7 7 C C
 I	

 |
  D
 $%7
 &';
 &';
 ()?
 "#3
 #$7
 23S
 $%7
 DJJ
  RZTRXX!
" 5<#
$ '44!KK//ll'!551
4 r   c                N    [         R                  " U 5      R                  SS5      $ )N
r  )astunparsereplace)r   s    r   _ast_unparser    s    ;;t$$T2..r   rd  c                   SnUb  UR                   (       aa  [        UR                   5       HG  nUR                  [        5       ;  d  M  S[	        USS9 3n[        U5      S:  a  S[	        U5       3n  OQ   ONUR                  (       a=  UR                  R                  5       n[        U5      S:  a  S[	        US   5       3nOSnU S	 U 3$ )
Nr  z  # T)r   i   r   z  # <unknown>z<60)
user_stackreversedfilenamer  rM   r   stacksummary)r  rd  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                   [        U [        5      (       d  U /n U  Vs/ s H  n[        X15      PM     nnUb,  [        UR                  5      nU(       a  U(       a  U SU 3OUnU(       a  U Vs/ s H
  of SU S3PM     nnU$ s  snf s  snf )Nrk   (HINT: rl  )r  listr  _get_closure_var_hintoriginating_source)r   rd  recompile_hintr  r   closure_hintrg  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.Bc                   U c  gU R                   nU nUbx  [        U[        5      (       a;  UR                  (       a*  U[	        UR                   5      S nSUR                   SU 3$ [        U[
        5      (       a  UR                  OSnUb  Mx  g)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  rY   freevar_namer   rZ   base)rp  	full_namecurrentpath_suffixs       r   r  r  E  s    
 ~I#G

g122w7K7K
 $C$5$78K 4 45Q{mDD",Wm"D"D',,$ 
 r   c                    U c  g [        U 5      (       d  U $ [        U [        R                  5      (       d   eU R                  R                  5       $ r   )rI   r  r?  SymIntr   maybe_as_int)dims    r   convert_int_to_concrete_valuesr  [  sD    
{s
#u||,,,,xx$$&&r   c                D    U  Vs/ s H  n[        U5      PM     sn$ s  snf r   )r  )size_or_strider  s     r   convert_to_concrete_valuesr  e  s     ;IJ>C*3/>JJJs   c                ,   U[         R                  R                  5       -  [         R                  R                  5       -
  nU R                  nU R
                  R                  nU R                  n	SU SUR                   SU SU SU SU	 SU SU S3n
U
$ )Nzcheck_tensor(rk  z	, device=z, requires_grad=z, size=z	, stride=rl  )	r?  _C_dispatch_tls_local_include_set_dispatch_tls_local_exclude_setdtyper  r   requires_gradr   )valuer  sizesstridespytypedispatch_keysdispatch_keyr  device_indexr  	guard_strs              r   get_tensor_guard_code_partr   i  s     	@@BB0023L KKE<<%%L''M
vR 3 34B|nBug N/geWIV]U^^_	a  r   c                H    [        [        U 5      5      R                  U5      $ r   )r  r   r   )dctkeys     r   get_key_indexr$  ~  s     
 !#&'--c22r   c                    SU  SU S3$ )Nlist(dict.keys())[]r   )rp  r   s     r   get_key_index_sourcer)    s    VHCwa00r   c                D    [        S[        U 5       SU  S3S-   S-   5      e)N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).)	TypeErrorrO  )objs    r   raise_local_type_errorr2    s8    

S	{,se+<=
L	M
L	M r   c                J    [        U [        R                  R                  5      $ r   )r  r?  rC  rD  )r  s    r   $should_optimize_getattr_on_nn_moduler4    s    eUXX__--r   T)frozenc                  @    \ rS rSr% SrS\S'   SrS\S'   SrS\S'   S	rg)
NNModuleAttrAccessorInfoi  Fr   present_in_generic_dictNr  l1_keyl2_keyr   )	r   r   r   r   r8  r   r9  r:  r   r   r   r   r7  r7    s'     %*T) FJ FJr   r7  GuardManagerTypec                   U R                   R                  n[        U R                  [        5      (       a  U R                  R                  nO,[        U[
        5      (       d   e[        X R                  5      n[        XV5      n[        [        U5      5      U   n[        U[        [        45      (       a
  U SU< S3n	OU SU S3n	[        U R                  [        5      (       dL  UR                  UUU R                  [        R                  S9R                  U R                  U SU< 3/S 5        UR!                  UU	UUS9$ )N[r(  r   rp  example_valueguard_manager_enum == )r  r  r  r   r^   r1  r$  r)  r  r   intr   get_key_managerr;  GUARD_MANAGERadd_equals_match_guardget_value_manager)
rp  base_guard_managerbase_example_valuer?  r@  base_source_namer   
key_sourcekey_example_valuevalue_sources
             r   getitem_on_dict_managerrM    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                    U R                   n[        U[        5      (       a  gU R                  5       (       a  gUR	                  5       =(       a    [        U[
        5      (       + $ NFT)r  r  rt   is_specialized_nn_moduleis_dict_keyrm   )rd  rp  s     r   match_on_id_for_tensorrR    sP    %%F &+,,%%''F
6:(F$FFr   c                  *    \ rS rSr% S\S'   S\S'   Srg)GuardCodeListi  r  	code_listr:   rd  r   Nr   r   r   r   r   r   r   r   r   rT  rT    s    Lr   rT  c                      \ rS rSrSrSrSrg)r;  i  rP      r   N)r   r   r   r   rD  DICT_GUARD_MANAGERr   r   r   r   r;  r;    s    Mr   c                <    [        [        [        U 5      5      5      $ r   )r  r  r   )r   s    r   r   r     s    /5677r   c                  .    \ rS rSr% SrS\S'   S\S'   Srg)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  r   r   r   r   r   r\  r\    s    , Lr   r\  c                |    U R                   U R                  5       U R                  U R                  U R                  4$ r   )shapestrider  r  r  )rq  s    r   extract_tensor_metadatarb    s)    GGQXXZ!((AOODDr   c                p    [        UR                  5       S   5      n[        U5      n[        US5      nX#U4$ )NrP   __metadata_guard__)r   __tensor_flatten__rO  r  )rd  r  metadataclshas_custom_guards        r   extract_subclass_metadatari    s=    002156H
u+Cu&:;+,,r   c                    Uu  p#nU(       a"  UR                  X R                  5       S   5      $ U R                  5       S   U:H  $ r   rd  re  )r  rf  saved_metadatarg  rh  s        r   check_subclass_metadatarm    sI    ,4)N)%%n6N6N6PQR6STT##%a(N::r   c                    [        U5      $ r   r   rd  r  s     r   extract_dtensor_specrp  %  s    E?r   c                "    U R                  USS9$ )NT)skip_shapes)_check_equalsr  rf  s     r   check_dtensor_specru  *  s    xT::r   c                    [        [        U5      5      nU(       a  UR                  (       d  g [        UR                  U5      5      $ r   )rB   rO  guard_fnr   )rd  r  opaque_infos      r   extract_opaque_objry  /  s4    %d5k2Kk22K((/00r   c                    Uc  g[        [        U 5      5      nU(       a  UR                  (       d  US L $ UR                  U 5      U:H  $ r.  )rB   rO  rw  )r  rf  rx  s      r   check_opaque_objr{  7  sE    %d5k2Kk224&(22r   c                    [        U5      [        R                  L a  [        US5      (       a  UR                  $ [        U5      $ Nr   rO  rE  rF  r  r   idro  s     r   extract_closurer  A  s4    E{e(((WUJ-G-G~~e9r   c                    [        U 5      [        R                  L a  [        U S5      (       a  U R                  UL $ [        U 5      U:H  $ r}  r~  rt  s     r   check_closurer  H  s>    E{e(((WUJ-G-G~~))e9  r   c                    SSK Jn  U H  n[        X5      (       d  M  U" U 5      s  $    [        S[	        U 5       35      e)zBExtract the base constant value from a constant subclass instance.rP   _CONSTANT_BASE_TYPESzNot a constant subclass: )variables.user_definedr  r  r0  rO  )r  r  rq  s      r   _constant_subclass_base_valuer  N  s<    <!eU8O " /U}=
>>r   c                &   ^ [        XS9mU4S jnU$ )z<Attach a GuardCheckSpec to a guard method for auto-dispatch.r]  r^  c                   > TU l         U $ 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                    [         U l        U $ )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                  B    \ rS rSrSrSS jr\S 5       r\S 5       rSr	g)	UnsupportedGuardCheckSpecil  z|Sentinel for guards with no check spec yet.

Raises NotImplementedError if get_metadata_fn/eval_fn are accidentally called.
c                    Xl         g r   _name)r   r  s     r   r   "UnsupportedGuardCheckSpec.__init__r  s    
r   c                2    [        SU R                   35      eNz%Guard check spec not implemented for NotImplementedErrorr  r   s    r   r]  )UnsupportedGuardCheckSpec.get_metadata_fnu      !$I$**"VWWr   c                2    [        SU R                   35      er  r  r   s    r   r^  !UnsupportedGuardCheckSpec.eval_fny  r  r   r  N)r  r   r   r   )
r   r   r   r   r  r   propertyr]  r^  r   r   r   r   r  r  l  s8    
 X X X Xr   r  c                :    [        U R                  5      U l        U $ )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                     \ rS rSr   S}                       S~S jjr      SS jrSS jr\SS j5       r                SS jr	SS jr
      SS	 jrSS
 jrSS jrSS jrSS jr  S         SS jjr S     SS jjrSS jr        SS jr\" S S S9SSS jj5       r\" S S S9 S     SS jj5       r\" S S S9SS j5       r\SS j5       r\" S S S9SS j5       r\" S  S! S9SS" j5       r\" S# S$ S9SS% j5       r\" S& S' S9SS( j5       r\" S) S* S9SS+ j5       r\" S, S- S9SS. j5       r\" S/ S0 S9SSS1 jj5       r  S     SS2 jjr!\" S3 S4 S9SSS5 jj5       r"\" S6 S7 S9SS8 j5       r#\$SS9 j5       r%\$SS: j5       r&\$SS; j5       r'\" \(\)S9SS< j5       r*\" \+\,S9SS= j5       r-\" \.\/S9SS> j5       r0\" S? S@ S9SSSA jj5       r1\" SB SC S9SSD j5       r2\" SE SF S9SSG j5       r3\" SH SI S9SSJ j5       r4\" SK SL S9SSM j5       r5\" SN SO S9SSP j5       r6\" SQ SR S9SSS j5       r7\" \8\9S9SST j5       r:\" SU SV S9SSW j5       r;\" SX SY S9SSZ j5       r<\" S[ S\ S9SS] j5       r=\" S^ S_ S9SS` j5       r>\" Sa Sb S9SSc j5       r?\$SSd j5       r@\" Se Sf S9SSg j5       rA\" Sh Si S9SSj j5       rB\" Sk Sl S9SSm j5       rC\" Sn So S9SSp j5       rD\$SSq j5       rE\$SSr j5       rF\$SSs j5       rG\$SSt j5       rH\$SSu j5       rI\$SSv j5       rJ\$SSw j5       rK\" Sx Sy S9SSSz jj5       rL  S         SS{ jjrMS|rNg)GuardBuilderi  Nc                $   Xl         X l        X0l        X@l        XVS.U l        0 U l        U
=(       d    UU l        [        R                  R                  5       U R                  S'   [        R                  R                  R                  R                  5        HW  u  nnUR                  SS5      R                  SS5      R                  SS5      nXR                  S   U'   XR                  U'   MY     Xpl        / U l        / U l        / U l        / U l        / U l        Xl        0 U l        Xl        Xl        [5        5       U l        U R,                  R8                  c   eU R,                  R8                  R:                   H8  nU R=                  U5      nU R6                  R?                  [A        U5      5        M:     0 U l!        0 U l"        [5        5       U l#        / U l$        [J        RL                  =(       a    [O        S5      U l&        [Q        5       U l)        g )	NLG__builtins__>_<._dot_!pytorch/compiler:guard_nn_modules)*f_codeid_ref
source_reflookup_weakrefsscopesrc_get_value_cacheruntime_global_scopebuiltins__dict__copyr?  packagepackage_importer_package_imported_modulesr   r  rn  argnamesr   shape_env_codeno_tensor_aliasing_names!no_tensor_aliasing_guard_managerscheck_fn_managerguard_tree_valuessave_guardsguard_filter_fnr   key_order_guarded_dict_idsoutput_graphguard_on_key_ordergetr   r  r   _cached_guard_managers_cached_duplicate_input_guardsobject_aliasing_guard_codesrQ   guard_nn_modulesrE   rL   already_added_code_parts)r   r  r  r  r  local_scoper   rn  r  r  r  r  r  package_modulerp  dict_objs                   r   r   GuardBuilder.__init__  s    $.9D3X
9; $8$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                T   U R                  U5      n[        U[        5      (       a  [        SUR                   35      eUR
                  R                  n[        U5       HE  nX   n[        UR
                  US9nU R                  Xq5      nUR                  UU SU< S3UUS9  MG     g )NzsNot expecting a DictGuardManager. Seems like Dynamo incorrectly added the dict to tx.output.guard_on_key_order for )r   r=  r(  r#  rp  r?  r@  )
get_guard_managerr  r   r  r  r  r   rb   get_guard_manager_typedict_getitem_manager)	r   r?  rd  dict_mgrdict_sourcer#  r  rL  r@  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                P   U R                  U5      n[        U[        5      (       d  [        SUR                   35      e[        U[        5      (       d   e[        [        U5      5       H  u  pE[        UR                  U5      nUR                  UUU[        R                  S9n[        U5      (       aA  U R                  XV5      nUR                  U[        SU SU S3U5      UR                  5        M  UR!                  U[        U SU< 3U5      UR                  5        M     g )Nz_Expecting a DictGuardManager. Seems like Dynamo forgot to set the right guard manager enum for r>  z__check_obj_id(rk  rl  rA  )r  r  r   r  r  	enumerater   r)  rC  r;  rD  r   r  add_id_match_guardr  r  rE  )	r   r  rd  r  ry  r#  rJ  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                    [         R                  (       aD  [        R                  S:  a0  [        R                  S:  a  [        R
                  " S[        5        g U $ )N)      )r  r  rP   zMGuards may run slower on Python 3.13.0. Consider upgrading to Python 3.13.1+.)rQ   issue_3_13_0_warningsysversion_infowarningswarnRuntimeWarning)r?  s    r   '_get_generic_dict_manager_example_value4GuardBuilder._get_generic_dict_manager_example_value  sF     ''  G+  :-MM_ r   c           	     L                 SS jnUR                   n	UR                  n
[        5       n[        R                  " UR
                  5       H,  nUR                  UR                  R                  5       5        M.     [        SSS5      nX;   a  [        SU	S5      nOXSU
;   a  XS   ;   a  [        SSU	5      nO<SU
;   a  XS   ;   a  [        SSU	5      nO X;  a  SU
;   a  XS   ;   a  [        SSU	5      nUR                  (       d  UR                  UR                   UUUS9$ UR                  (       d   eUR                  nUR                  nU S	3nS=nnS=nnS=nnU(       aN  [        UR                  U5      nUR                  nX   nU R!                  UU5      nUnUnU R!                  X5      nOUnUnU R!                  X5      nUR#                  UU R%                  U
5      [&        R(                  S
9nU" UUUU
UUS9nU(       a  Ub  Uc   eU" UUUUUUS9$ U$ )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                   [        U [        5      (       a^  [        X15      nSU SU< S3nU R                  UUU[        R
                  S9R                  X SU< 3/S 5        U R                  UUUUS9$ U R                  UUUUS9$ )Nr&  r'  r(  r>  rA  r  )	r  r   r$  rC  r;  rD  rE  rF  r  )r"  r#  source_namerH  r?  r@  r   rJ  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attrrp  r?  r@  	.__dict__rp  r?  r@  )r"  r#  r  rH  r?  r@  )r"  r   r#  r   r  r   rH  r   r?  r   r@  r;  r   r   )memberr  r   r  getmror   updatekeysr7  r8  getattr_managerr9  r:  rV   r  r  r  get_generic_dict_managerr  r;  rD  )r   rp  rG  rH  r?  rI  r  r@  r  	attr_namemod_dictall_class_attribute_namesr  accessor_infor9  r:  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,  s   6#	#	#	 #	 !$	#	
 #	 !1#	 #	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 &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                x    UR                   nUS:X  a  g[        U R                  U5      5      nX0R                  ;   $ )Nr  F)r  r  r  r  )r   rp  r  obj_ids       r   requires_key_order_guarding(GuardBuilder.requires_key_order_guarding  s8    kk"DHHV$%8888r   c                H   [         R                  nU R                  U5      (       a{  [        U[        5      (       a  [         R
                  nU$ [        U[        [        45      (       a  [         R                  nU$ [        U[        5      (       d   e[         R
                  nU$ r   )	r;  rD  r  r  r   rY  r   	frozensetr1  )r   rp  r?  r@  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                (    U[         R                  :H  $ r   )r;  rY  )r   mgr_enums     r   manager_guards_on_keys#GuardBuilder.manager_guards_on_keys  s    +>>>>r   c                    U R                   R                  R                  U R                  SU R                  S   [
        R                  S9$ )Nr  )	f_globalsrp  r?  r@  )rn  r   globals_dict_managerr  r  r;  rD  r   s    r   get_global_guard_manager%GuardBuilder.get_global_guard_manager  sF    !!&&;;//**S//==	 < 
 	
r   c           	     8  ^ U R                   R                  nS nTR                  nUS:w  a  X@R                  ;   a  U R                  U   $ US:w  a(  U R	                  T5      nX0R
                  [        U5      '   U R                  TU5      nS nS nS n[        R                  n	[        T[        5      (       ah  TR                  R                  nU R	                  TR                  5      nU R                  TR                  5      nU R                  TR                  U5      n	[        T[        5      (       a@  [!        U R"                  TR$                  5      n
UR'                  TR$                  U
4UUUS9nG
O[        T[(        5      (       a,  U R+                  5       R-                  TR.                  UUUS9nG
OO[        T[0        5      (       a,  U R+                  5       R3                  TR.                  UUUS9nG
O[        T[4        5      (       a  U$ [        T[6        5      (       a  U$ [        T[8        5      (       a  U(       d   eUR;                  UUUS9nG	O[        T[<        5      (       a  U(       d   eUR?                  UUUS9nG	O~[        T[@        5      (       a  U(       d   eURC                  UUUS9nG	OM[        T[D        [F        [H        [J        [L        45      (       a  U(       d   eUnG	O[        T[N        5      (       a8  [P        RR                  " TRT                  5      nURW                  U4S jUUUS9nGO[        T[X        5      (       a  URW                  U4S jUUUS9nGO[        T[Z        5      (       a  URW                  U4S jUUUS9nGOo[        T[\        5      (       a  U(       d   eUR_                  UUUS9nGO>[        T[`        5      (       a'  U(       d   eURc                  TRd                  UUUS	9nGO[        T[f        [h        [j        45      (       ap  U(       d   e[        T[f        5      (       d   e[m        U5      (       a"  U(       d   eU Ro                  TUUUUUU5      nGOURq                  TRd                  UUUS	9nGOr[        T[r        [t        45      (       a  U(       d   e[        U[v        [x        Rz                  45      (       d   e[        T[r        [t        45      (       d   e[        U[|        5      (       a)  U R                  U	5      (       d   e[        TUUUU5      nGO[        TR                  [        5      (       a  [        S
5      eUR-                  TR                  UUUS9nGO[        T[        5      (       aE  [        USTR                  R                  R                  5        S35      " TR                  UUUS9nGO*[        T[        5      (       a'  U(       d   eUR                  TR                  UUUS9nGO[        T[        5      (       a'  U(       d   eUR                  TR                  UUUS9nGO[        T[        5      (       a  U(       d   e[        U[v        [x        Rz                  45      (       a   S5       e[        U[        5      (       a/  TR                  (       d  UR                  TR                  UUUS9nGO$[        U[        5      (       a/  TR                  (       d  UR                  TR                  UUUS9nGOTR                  nTR                  (       a  TR                  5       nUR                  UUUUS9nGO[        T[        5      (       a  U(       d   eU(       d   e[        U5      (       d   eTR                  (       dE  UR                  UUR                  [        R                  S9R                  TR                  UUUS9nGOUR                  nUc   eUS-   nUR                  UU[        R                  S9n[        U[|        5      (       a   eUR-                  TR                  UUUS9nGO[        T[        5      (       a!  U(       d   eURW                  [        UUUS9nGOp[        T[        5      (       a  U(       d   eURW                  S UUUS9nGO=[        T[        5      (       a  U(       d   eURW                  S UUUS9nGO
[        T[        5      (       a  U(       d   eURW                  S UUUS9nGO[        T[        5      (       a  U(       d   eURW                  S UUUS9nGO[        T[        5      (       a  U(       d   eURW                  S UUUS9nGOq[        T[        5      (       a  U(       d   eURW                  S UUUS9nGO>[        T[        5      (       a'  U(       d   eUR                  TR                  UUUS9nGO[        T[        5      (       a>  [        U[|        5      (       d  [        S5      eUR                  TR                  UUUS9nGO[        T[        5      (       a'  U(       d   eUR                  TR                  UUUS9nGOs[        T[        5      (       a  U(       d   eUR                  UUUS9nGOB[        T[        5      (       a  U(       d   eUR                  UUUS9nGO[        T[        5      (       a  U(       d   eURW                  S UUUS9nO[        T[        5      (       a  U(       d   eURW                  S UUUS9nO[        T[        5      (       a  U(       d   eUR                  UUUS9nO}[        T[        5      (       a  U(       d   eUR                  UUUS9nOM[        T[        5      (       a  U(       d   eURW                  S UUUS9nO[        ST STR                   35      eXR                  TR                  '   U$ )Nr  r  )global_namerp  r?  r@  r  c                    U$ r   r   )r  r  s     r   r  <GuardBuilder.get_guard_manager_from_source.<locals>.<lambda>Q  s    !r   )python_lambdarp  r?  r@  c                6   > [        TR                  5       5      $ r   )r   
_get_indexr  rp  s    r   r  r%  X  s    (H%%')r   c                .   > [        TR                  5      $ r   )r   r  r)  s    r   r  r%  a  s    (:6==(Ir   r  zUExpecting clean index here. Likely Dynamo forgot to mark a dict as guard_on_key_ordertensor_property__manager)ry  rp  r?  r@  zUse DictGetItemSourcez.__kwdefaults__c                (    U R                  5       S   $ r   re  r  s    r   r  r%    s    (<(<(>q(Ar   c                "    U R                  5       $ r   )__obj_flatten__r  s    r   r  r%    s    (9(9(;r   c                >    U R                  5       R                  5       $ r   )_typequalified_namer  s    r   r  r%    s    	(@(@(Br   c                "    U R                  5       $ r   )get_baser  s    r   r  r%  #  s
    

r   c                "    U R                  5       $ r   )itemr  s    r   r  r%  +  s
    r   c                .    [         R                  " U 5      $ r   )r?  r  r  s    r   r  r%  3  s    (A(A!(Dr   r>  z4ConstDictKeySource can only work on DictGuardManagerc                    [        U 5      $ r   )r   r  s    r   r  r%  d  s
    (8(;r   c                    U R                   $ r   r  r  s    r   r  r%  l  s    		r   c                    [        U 5      $ r   )rB  r  s    r   r  r%    s    Ar   zmissing guard manager builder z - )urn  r   r  r  r  r  r  r  r;  rD  r  rZ   r  get_guard_manager_from_sourcer   rp   r   r  
local_nameframelocals_managerrj   r   r  r#  rl   global_weakref_managerrk   rw   r}   type_managerr{   type_dict_managerr|   type_mro_managerru   rr   r   r~   rg   rn   r  r  module_namelambda_managerry   r_   rm   grad_managerrh   generic_getattr_managerr  rV   rY   r   r4  r  r   rb   rc   r1  r  r  r   r  rM  r   r^   RuntimeErrorr4   getattrproplowerry  r-   indexed_managerro   list_getitem_managerri   r  index_is_slicerM  tuple_getitem_managerunpack_slicegetitem_managerra   callableis_kwfunc_defaults_managerr   idx_keyr   func_kwdefaults_managerrt   r  rx   re   rv   rU   rX   rf   rz   tuple_iterator_getitem_managerAssertionErrorrC  rs   set_getitem_managerr   weakref_call_managerrW   call_function_no_args_managerr`   rq   r\   code_managerr[   closure_managerrd   )r   rp  root_guard_managerr?  r  r@  rI  rH  rG  base_guard_manager_enumr   outmoduler   
kwdefaults	kw_sourcer  s    `               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(==&"/'9	 >  .66v?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                8    U R                  UR                  5      $ r   )r<  r  r   rd  s     r   r  GuardBuilder.get_guard_manager  s    11%2J2JKKr   c                   Uc
  [        5       nSR                  UR                  5       5      n[        X5      u  pg0 nSU R                  S   0n	[
        R                  SU5        [        XyU5        US   " UR                  5       6 n
U(       a(  U R                  R                  R                  U
US 5        g U R                  R                  R                  XS 5        g )Nrk  r  zPython shape guard function:
%s___make_guard_fn)r  joinr  build_guard_functionr  
guards_logdebugexecr3  rn  r   add_epilogue_lambda_guardadd_lambda_guard)r   r   r   r   is_epiloguemake_guard_fn_args_guard_bodypycoder_  globals_for_guard_fnrw  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                    [        U[        5      (       a  UnOUR                  nUc
  [        5       nUR	                  U R
                  X R                  5      nU$ r   )r  r>   r  r  	get_valuer  r  )r   guard_or_sourcer   srcrets        r   r  GuardBuilder.get  sN    
 ov..!C!44C,.LmmDJJ6N6NO
r   c                P   [        U[        5      (       a  UnOUR                  n[        U5      nX0R                  ;  ag  [
        R                  R                  R                  U5      nU(       a7  US:X  a  [        R                  SU5        U R                  R                  U5        U$ )NrX  zinvalid var name: %s)r  r   r  strip_function_callr  r?  r  r  is_valid_var_namelogwarningr  )r   rd  r  r  is_valids        r   arg_refGuardBuilder.arg_ref  s{    eS!!D::D"4(}}$xx''99$?Hq=KK 6>$$T*r   c                    US:X  a  [        UR                  5      nO[        UR                  U5      n[        XCUR                  UR
                  S9nUR                  U 5        g )Nr   )r  r  )r\   r  rV   r:   r  r  create)r   rd  r  rw  attr_source	new_guards         r   _guard_on_attribute GuardBuilder._guard_on_attribute  sY     
"$U%=%=>K$U%=%=yIKAQAQ
	 	r   c                x    U R                   R                  S   [        XR                   R                  S   5      4$ Nr  )	create_fnkeywordsr  ro  s     r   r  GuardBuilder.<lambda>  s0    OO$$V,E??33F;<.
r   c                *    [        XS   5      US   :H  $ Nr   rP   )r  rt  s     r   r  r    s    {(CxPQ{(Rr   r  c           	     <   Uc   eUR                   n[        U[        5      (       a  UR                  nU R	                  U5      n[        U R                  U5      U5      nS nU(       a  SU SU< S3nO
SU SU< S3nX`R                  ;   a  g U R                  X/U R                  U5      S9  U R                  U5      nU(       a  [        X25      nU R                  U5      n	U R                  U5      n
U R                  X5      n[        U
5      (       a,  U R                  UUU
U	UR                  UR                  U5        OCUR                  UUR                  U	US9  O&UR!                  U[#        Xa5      UR$                  5        U R                  R'                  U5        g )Nhasattr(rk  rl  znot hasattr()provided_guarded_objectr  )r  r  rr   r  r  r  r  r  _set_guard_export_infor<  rV   r  r4  r  r  r   add_no_hasattr_guardr  r  r   )r   rd  r  rp  refvalr   base_managerr  r?  rH  r@  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                4    U R                   R                  S   $ r  r  r  ro  s     r   r  r  +  s    U__-E-Ef-Mr   c                    XR                   ;  $ r   )r  rt  s     r   r  r  ,  s    (Fr   c                   Uc   eU R                  U5      nU R                  U5      nU R                  U5      nSU< SU S3nX`R                  ;   a  g UR                   S3nUR                  UU R                  UR                  5      [        R                  S9nUR                  SU[        Xa5      UR                  5        U R                  R                  U5        g )Nnot ___dict_contains(rk  z
.__dict__)r  r  F)r  r  r  r  r  r  r  r  r;  rD  add_dict_contains_guardr  r  r   )	r   rd  r  r  r  r  r   r  r  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                    [        U5      $ r   rO  ro  s     r   r  r  K  s    T%[r   c                    [        U 5      UL $ r   r  rt  s     r   r  r  L  s    Ux(?r   c           	     <   U R                  U5      n[        U[        R                  R                  5      (       a  UR
                  (       a  UR
                  nO[        U5      nUR                  UR                  :w  a  SUl	        U R                  USUR                   S35      n[        U5      nSU R                  U5       SU SU 3nU R                  X/5        U R                  U5      R!                  U[#        XaSUR                   3S9UR$                  5        g )	NTtype(rl  z___check_type_id(rk  ), type=ztype )r  )r  r  r?  _subclasses
FakeTensorr  rO  r   r   _unserializabler  r  r  r  r  r  add_type_match_guardr  r  )r   rd  r  rq  r  	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                   U R                  U5      nU R                  U5      n[        U R                  U5      5      nSU SU 3nU R                  X/5        U R	                  U5      R                  U[        XQ5      UR                  5        g )Nz___dict_version() == )r  r  r   r  r  add_dict_version_guardr  r  )r   rd  r  r  versionr   s         r   DICT_VERSIONGuardBuilder.DICT_VERSIONj  s     ll5!hhuotxx/!#eG95##E62 	u%<<'4e6F6F	
r   c                4    U R                   R                  S   $ Nr#  r  ro  s     r   r  r  z      U__-E-Ee-Lr   c                
    X;   $ r   r   rt  s     r   r  r  {      (9r   c                    U R                  U5      nSU< SU S3nX@R                  ;   a  g U R                  X/5        U R                  U5      R	                  SU[        XA5      UR                  5        U R                  R                  U5        g )Nz___dict_contains(rk  rl  Tr  r  r  r  r  r  r  r   r   rd  r#  dict_refr   s        r   DICT_CONTAINSGuardBuilder.DICT_CONTAINSy  s    
 <<&"3'H:Q7000##E62u%=="4/		
 	%%))$/r   c                4    U R                   R                  S   $ r  r  ro  s     r   r  r    r  r   c                
    X;  $ r   r   rt  s     r   r  r        (=r   c                    U R                  U5      nSU< SU S3nX@R                  ;   a  g U R                  X/5        U R                  U5      R	                  SU[        XA5      UR                  5        U R                  R                  U5        g )Nr  rk  rl  Fr  r  s        r   DICT_NOT_CONTAINSGuardBuilder.DICT_NOT_CONTAINS  s    
 <<&&sgRz;000##E62u%=="4/		
 	%%))$/r   c                4    U R                   R                  S   $ r  r  ro  s     r   r  r    r  r   c                
    X;   $ r   r   rt  s     r   r  r    r  r   c                $   U R                  U5      nUnSU SU< S3nXPR                  ;   a  g U R                  X/5        U R                  U5      R	                  SU[        XQ5      UR                  5        U R                  R                  U5        g )Nzset.__contains__(rk  rl  Tr  r  r  r  add_set_contains_guardr  r  r   r   rd  r#  set_refr7  r   s         r   SET_CONTAINSGuardBuilder.SET_CONTAINS  s    
 ,,u%"7)2dXQ7000##E62u%<<"4/		
 	%%))$/r   c                4    U R                   R                  S   $ r  r  ro  s     r   r  r    r  r   c                
    X;  $ r   r   rt  s     r   r  r    r  r   c                $   U R                  U5      nUnSU SU< S3nXPR                  ;   a  g U R                  X/5        U R                  U5      R	                  SU[        XQ5      UR                  5        U R                  R                  U5        g )Nznot set.__contains__(rk  rl  Fr  r  s         r   SET_NOT_CONTAINSGuardBuilder.SET_NOT_CONTAINS  s    
 ,,u%&wir$;000##E62u%<<"4/		
 	%%))$/r   c                    U$ r   r   ro  s     r   r  r        Ur   c                
    X:H  $ r   r   rt  s     r   r  r        (9r   c                   U R                  U5      nU R                  U5      n[        U[        5      (       d   eU SU< 3/nU R	                  X5        U(       a5  U R                  U5      R                  [        XA5      UR                  5        g U R                  U5      R                  [        XA5      UR                  5        g )NrA  )
r  r  r   r   r  r  add_true_match_guardr  r  add_false_match_guardr   rd  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                    g r   r   ro  s     r   r  r        Tr   c                
    U S L $ r   r   rt  s     r   r  r    s    r   c                    U R                  U5      nU R                  U5      nUb   eU S3/nU R                  X5        U R                  U5      R	                  [        XA5      UR                  5        g )Nz is None)r  r  r  r  add_none_match_guardr  r  r  s        r   
NONE_MATCHGuardBuilder.NONE_MATCH  so     ll5!hhuo{{%x !##E0u%::"4/1A1A	
r   c                    U$ r   r   ro  s     r   r  r    r  r   c                    XL $ r   r   rt  s     r   r  r        (9r   c                $    U R                  X5      $ r   )id_match_unchecked)r   rd  r  s      r   ID_MATCHGuardBuilder.ID_MATCH  s     &&u==r   c                J   [        UR                  [        5      (       a=  U R                  [	        UR                  R
                  [        R                  5      5      $ U R                  U5      nU R                  U5      nU R                  XAR                  5      n [        U5      nSU SU SU 3nU R                  X/SS9  U R!                  U5      R#                  U[%        XqU5      UR&                  5        [        UR                  [(        5      (       ad  [        U[*        R,                  R.                  5      (       a:  UR                  R0                  nU R3                  U5      n	U	b  XR4                  U'   g g g g ! [         a    S[        U5      R                   S3n Nf = f)Nr  r  z___check_obj_id(rk  r  r  )provided_func_name)r  r  r}   r  r:   r  r  r  r  r  r  r  	ExceptionrO  r   r  r  r  r  r  rp   r?  rC  rD  r=  r  r   )
r   rd  r  r  r  r  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   E< <#F"!F"c                    g r   r   ro  s     r   r  r  '	  r  r   c                
    U S L$ r   r   rt  s     r   r  r  (	  	    T(9r   c                    U R                  U5      nU R                  U5      n[        U[        R                  5      (       d   eU S3nU R                  X/5        U R                  U5      R                  [        XQ5      UR                  5        g Nz is not None)
r  r  r  r?  r@  r  r  add_not_none_guardr  r  )r   rd  r  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                "    UR                  5       $ r   raw_reprro  s     r   r  r  6	  s    U^^-=r   c                (    U R                  5       U:H  $ r   r  rt  s     r   r  r  7	  s    (8H(Dr   c                   U R                  U5      nU R                  U5      n[        U[        R                  R
                  5      (       d   eU SU< S3nU R                  U5      R                  U[        XA5      UR                  5        g )Nz.raw_repr() == z.raw_repr())
r  r  r  r?  r  r   r  add_dispatch_key_set_guardr  r  )r   rd  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                   U R                   R                  c   eU R                   R                  R                  nSU 3/nU R                  X5        U R                  R
                  R                  U[        X15      UR                  5        g )Nz,torch.autograd.forward_ad._current_level == )	r  r  
dual_levelr  rn  r   add_dual_level_match_guardr  r  )r   rd  r  r   s       r   
DUAL_LEVELGuardBuilder.DUAL_LEVELF	  s~     $$11===**77BB
>zlKL##E0::"4/	
r   c                  ^^ U R                   R                  c   eU R                   R                  R                  nU Vs/ s H  o3R                  5       PM     snmST S3/nU R	                  X5        [
        R                  R                  R                  mSUU4S jjnU R                  R                  R                  U[        XA5      UR                  5        g s  snf )Nz5torch._functorch.pyfunctorch.compare_functorch_state(rl  c                   > T" T5      $ r   r   )r  
compare_fnstatess    r   r  .GuardBuilder.FUNCTORCH_STACK_MATCH.<locals>.fnb	  s    f%%r   r  )r  r  functorch_layers	get_stater  r?  
_functorchpyfunctorchcompare_functorch_statern  r   ro  r  r  )r   rd  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                  ^^^^ [         R                  R                  R                  R                  m[         R                  R                  R                  R
                  m    SU4S jjmT" T" 5       5      mST 3/nU R                  X5        SUUU4S jjnU R                  R                  R                  U[        X!5      UR                  5        g )Nc                R   > T" U 5      (       d  g [        [        [        U 5      5      $ r   )rM  mapr  )hooks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                $   > TT" T" 5       5      :H  $ r   r   )r  	get_hooksguard_hooks_idsr  s    r   r  5GuardBuilder.AUTOGRAD_SAVED_TENSORS_HOOKS.<locals>.fn	  s    "l9;&???r   )r  zCtuple[Callable[[torch.Tensor], Any], Callable[[Any], torch.Tensor]]r   ztuple[int, ...] | Noner  )r?  r  _aot_autogradr  top_saved_tensors_hooks"saved_tensors_hooks_are_inlineabler  rn  r   ro  r  r  )r   rd  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 		)V	)#	) 'y{3 RRaQbc
 	##E0	@ 	@ 	00&t3U5E5E	
r   c                  ^^^ U R                  U5      n " S S5      mUR                  5       S   n[        [        R                  " [
        R                  U4S jU5      5      m[        US5      (       a   [        U5        [        U5      mS
UU4S jjnOS
U4S jjnS[        U5       S	[        R                  " 5        3nU R                  U5      R                  U[        XQ5      UR                   5        g )Nc                  (    \ rS rSrSS jrSS jrSrg)@GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyComparei	  c                    gr.  r   r   others     r   __eq__GGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyCompare.__eq__	  s    r   c                    gr  r   r*  s     r   __ne__GGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>._AnyCompare.__ne__	  s    r   r   N)r+  objectr   r   )r   r   r   r   r,  r/  r   r   r   r   _AnyComparer(  	  s    r   r2  rP   c                   > T" 5       $ r   r   )r  r2  s    r   r  =GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.<lambda>	  s    r   rd  c                J   > TR                  TU R                  5       S   5      $ r   rk  )r  rg  original_metadatas    r   metadata_checkerEGuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH.<locals>.metadata_checker	  s)    --%q';';'=a'@ r   c                0   > U R                  5       S   T:H  $ r   r.  )r  r6  s    r   r7  r8  	  s    ++-a04EEEr   ___check_metadata__cr  )r  re  r   pytreetree_map_onlyr?  r  r  r   rO  r  r7   current_compile_idr  ro  r  r  )	r   rd  r  rf  r7  r#  r2  rg  r6  s	         @@@r   TENSOR_SUBCLASS_METADATA_MATCH+GuardBuilder.TENSOR_SUBCLASS_METADATA_MATCH	  s    
 	 	 ++-a0$  /FQ
 5.//%e,u+C F +2.>+?*@>CdCdCfBghu%66";6	
r   c                   ^ [        XR                  U5      5      mSU4S jjnS[        U5       3nU R                  U5      R	                  U[        X15      UR                  5        g )Nc                   > [        U T5      $ r   )ru  r  expecteds    r   rw  1GuardBuilder.DTENSOR_SPEC_MATCH.<locals>.guard_fn	  s    %a22r   __dtensor_spec_r  )rp  r  r  r  ro  r  r  )r   rd  rw  r   rD  s       @r   DTENSOR_SPEC_MATCHGuardBuilder.DTENSOR_SPEC_MATCH	  sZ     (xx?	3 !H/u%66,T95;K;K	
r   c                  ^ U R                  U5      n[        X5      mTc  gSU4S jjnS[        U5       S[        R                  " 5        3nU R                  U5      R                  U[        XA5      UR                  5        g)z=Guard on the values returned by the opaque object's guard_fn.Nc                   > [        U T5      $ 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  ry  r  r7   r>  r  ro  r  r  )r   rd  r  rL  r#  rK  s        @r   OPAQUE_OBJ_GUARD_FN_MATCH&GuardBuilder.OPAQUE_OBJ_GUARD_FN_MATCH	  s|     ,U:"	8 2"5I2J1K2nNoNoNqMrsu%66 ";6	
r   c                    U$ r   r   ro  s     r   r  r  	  r  r   c                
    X:H  $ r   r   rt  s     r   r  r  	  r  r   c                D   U R                  U5      nU R                  U5      n[        (       a  [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4nOSn[        [        4n[!        ["        [$        [         [&        [(        [*        [,        [.        R0                  [.        R2                  [.        R4                  R6                  R2                  1	UkUk-  5      n[.        R8                  R;                  5       (       a  SSKJnJ n	  SSK!J"n
J#nJ$nJ%n  UUUUU	U
U4-   nSSK&J'n  X~4-   nSS K(J)s  J*n  [W        XG5      (       dL  URX                  " [%        U5      5      (       d,  [[        [%        U5      5      (       d   S[%        U5       35       e[]        U[^        5      (       am  [`        Rb                  " U5      (       aR  SU SU S	3/nU Re                  UU5        U Rg                  U5      Ri                  [k        UU5      URl                  5        g []        U[n        5      (       am  [        Rb                  " U5      (       aR  SU S
U S	3/nU Re                  UU5        U Rg                  U5      Rq                  [k        UU5      URl                  5        g U SU< 3/n[]        XF5      (       a  [s        U5      n[k        UU5      nU(       a  U Vs/ s H  nU SU S3PM     nnU Rg                  U5      Ru                  UUURl                  5        U Re                  UU5        g s  snf )Nr   r   )_MeshLayout
DeviceMesh)_StridedShardPartial	ReplicateShard)_IntWrapperzUnexpected type z(type(z) is float and __math_isnan(z))z) is complex and __numpy_isnan(rA  r  rl  );r  r  r  int8int16int32int64uint8uint16uint32uint64float16float32float64r  r   rM  r   rO  r  sliceranger   r?  SizeStreamcudastreamsdistributedis_availabletorch.distributed.device_meshrT  rU  (torch.distributed.tensor.placement_typesrV  rW  rX  rY  torch.export.dynamic_shapesrZ  torch.utils._pytreer  rK   r  is_constant_classrC   r   r  r  r  r  r  add_float_is_nan_guardr  r  complexadd_complex_is_nan_guardr   rE  )r   rd  r  r  r  np_typesok_mutable_typesok_typesrT  rU  rV  rW  rX  rY  rZ  r<  r   r   rg  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   
Nc                    U$ r   r   ro  s     r   r  r  M
  r  r   c                
    X:H  $ r   r   rt  s     r   r  r  N
  r  r   c                "   U R                  U5      n[        U[        5      (       a  U R                  U5        g Uc  U R	                  U5        g [        U[
        R                  5      (       a  U R                  U5        g U R                  U5        g r   )	r  r   r   r  r  rE  CodeTyper  ry  r   rd  r  s      r   CONSTANT_MATCHGuardBuilder.CONSTANT_MATCHL
  sf    
 hhuo#tOOE"[OOE"C((MM% e$r   c                    [        U5      $ r   r  ro  s     r   r  r  \
  s
    -J5-Qr   c                    [        U 5      U:H  $ r   r  rt  s     r   r  r  ]
  s    (Ee(L)r   c                X  ^^	 SSK Jn  U R                  U5      nU R                  U5      nSmU H  n[	        X55      (       d  M  Um  O   Tc   eT" U5      m	TR
                   SU ST	< 3/nSUU	4S jjnU R                  U5      R                  U[        Xa5      UR                  5        g)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__.
rP   r  N(r  c                   > T" U 5      T:H  $ 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  ro  r  r  )
r   rd  r  r  r  rq  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                    U$ r   r   ro  s     r   r  r  
  r  r   c                    XL $ r   r   rt  s     r   r  r  
  r  r   c                `   U R                  US5        U R                  U5      n[        US5      (       aU  [        UR                  [
        5      (       d   eU R                  (       d"  U R                  US[        R                  5        g g [        R                  " SSS[        U5       S3S/S9  g )	Nz%[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hints)r  r  r  r   r  r   r  r  r  r  rS   unimplementedrO  r  s      r   	NN_MODULEGuardBuilder.NN_MODULE
  s     	eDEhhuo3
###,,----((((
L<W<WX ) G''+Cyk5 `r   c                    U$ r   r   ro  s     r   r  r  
  r  r   c                    XL $ r   r   rt  s     r   r  r  
  r  r   c                $    U R                  U5      $ )z0things like torch.add and user defined functions)r  re  s     r   FUNCTION_MATCHGuardBuilder.FUNCTION_MATCH
  s     }}U##r   c                    U$ r   r   ro  s     r   r  r  
  r  r   c                    XL $ r   r   rt  s     r   r  r  
  r  r   c                    U R                  U5      n[        R                  " U5      (       d  [        UR                   S35      eU R                  U5        g)zNEquals ID_MATCH on classes - better readability than directly calling ID_MATCHz( is not a class, but CLASS_MATCH is usedN)r  r  isclassrW  r  r  r  s      r   CLASS_MATCHGuardBuilder.CLASS_MATCH
  sL     hhuos## ::,FG  	&r   c                    U$ r   r   ro  s     r   r  r  
  r  r   c                    XL $ r   r   rt  s     r   r  r  
  r  r   c                    U R                  U5      n[        R                  " U5      (       d  [        UR                   S35      eU R                  U5        g)zNEquals ID_MATCH on modules - better readability than directly calling ID_MATCHz* is not a module, but MODULE_MATCH is usedN)r  r  ismodulerW  r  r  r  s      r   MODULE_MATCHGuardBuilder.MODULE_MATCH
  sN     hhuo$$ ::,HI  	&r   c                    U R                  U5      n[        U5      [        R                  L a3  [	        US5      (       a"  U R                  US[        R                  5        gU R                  U5        g)z!matches a closure by __code__ id.r   N)	r  rO  rE  rF  r  r  r  r  r  r  s      r   CLOSURE_MATCHGuardBuilder.CLOSURE_MATCH
  sW     hhuo9***wsJ/G/G $$UJ8S8ST&r   c                    U$ r   r   ro  s     r   r  r  
  r  r   c                    XL $ r   r   rt  s     r   r  r  
  r  r   c                    U R                   (       aX  [        UR                  [        5      (       a9  U R                  R
                  R                  UR                  R                  5        U R                  U5      $ r   )	r  r  r  rb   r  used_builtin_varsr   r   r  re  s     r   BUILTIN_MATCHGuardBuilder.BUILTIN_MATCH
  s]    
 %224EFF%%77;;,,22 &&u--r   c                    [        U5      $ r   r   ro  s     r   r  r  
  s    SZr   c                    [        U 5      U:H  $ r   r  rt  s     r   r  r  
  s    E
h(>r   c                f   U R                  U5      nU R                  U5      n[        U[        5      (       d  U R	                  U5        / n[        U5      S:X  a  UR                  SU 35        O UR                  SU S[        U5       35        U R                  X5        [        U[        5      (       a?  U R                  U5      R                  [        U5      [        XA5      UR                  5        g U R                  U5      R                  [        U5      [        XA5      UR                  5        g )Nr   znot zlen(r  )r  r  r  r1  r  r   r  r  r  add_dict_length_check_guardr  r  add_length_check_guardr   rd  r  r  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                    [        U5      $ r   r   ro  s     r   r  r  
  s
    -?-Fr   c                    [        U 5      U:H  $ r   r  rt  s     r   r  r  
  s    (:5(AX(Mr   c                   U R                  U5      nU R                  U5      n[        U5      n/ nUR                  SU S[	        U5       35        U R                  X5        [        U5      nU R                  USUR                   S35      nU R                  U5      R                  [	        U5      U[        XQ5      UR                  5        g )Nz___tuple_iterator_len(r  r  rl  )r  r  rO  r  r   r  r  r  r  add_tuple_iterator_length_guardr  r  )r   rd  r  r  rq  r   r  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                    [        U5      $ r   r   ro  s     r   r  r    s
    -A%-Hr   c                    [        U 5      U:H  $ r   r  rt  s     r   r  r    s    (<U(Cx(Or   c           
        U R                  U5      nU R                  U5      n[        U5      n/ n[        U5      nUR	                  SU SU 35        U R                  X5        [        U5      nU R                  USUR                   S35      nUu  pn
U R                  U5      R                  UU	U
U[        XQ5      UR                  5        g )Nz___normalize_range_iter(r  r  rl  )r  r  rO  r   r  r  r  r  r  add_range_iterator_match_guardr  r  )r   rd  r  r  rq  r   normalized_range_iterr  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                .    [        U5      [        U5      4$ r   rO  r   ro  s     r   r  r  ,  s    d5k;OPU;V-Wr   c                R    [        U 5      US   L =(       a    [        U 5      US   :H  $ r  r  rt  s     r   r  r  -  s*    K8A;&U+?+F(ST++UUr   c                (  ^^ U R                  U5      nU R                  U5      n[        U5      m[        U5      mSUU4S jjnSU ST 3/nU R	                  X5        U R                  U5      R                  U[        XQ5      UR                  5        g )Nc                H   > [        U 5      TL =(       a    [        U 5      T:H  $ r   r  )r  
count_typenormalized_count_iters    r   rw  3GuardBuilder.COUNT_ITERATOR_MATCH.<locals>.guard_fn7  s(    Q:% E(+/DDr   z___normalize_count_iter(r  r  )	r  r  rO  r   r  r  ro  r  r  )r   rd  r  r  rw  r   r  r  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                   [        UR                  5      (       d  [        U5      (       a  g U R                  (       an  [        U5      =n(       a%  U R                  R
                  R                  U5        [        U5      =n(       a%  U R                  R                  R                  U5        U R                  U5      nU R                  UR                  5      n[        UR                  5      (       d  [        U5      (       a  g XE4nX`R                  ;   a  g U R                  R                  XE45        U R                  R                  XT45        U SU 3/nU R                  X5        [        R                  (       a0  US   n[!        X5      S   n	U R"                  R%                  X45        g ['        U R)                  U5      U R+                  U5      [!        Xq5      UR,                  5        g )N is r   )r1   r  r  r,   r  additional_used_local_varsr   r+   additional_used_global_varsr  r  r0   r  r  rQ   #use_lamba_guard_for_object_aliasingr  r  r  r    r  r<  r  )
r   rd  source_br  ref_aref_br#  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 QI 6y H K,,33Y4RS)&&u-228<&t3  	r   c                    g r   r   ro  s     r   r  r  v  r  r   c                
    U S L$ r   r   rt  s     r   r  r  w  r  r   c                    U R                  U5       S3/nU R                  X5        U R                  U5      R                  [	        X!5      UR
                  5        g r  )r  r  r  r  r  r  r   rd  r   s      r   WEAKREF_ALIVEGuardBuilder.WEAKREF_ALIVEu  sT    
 <<&'|45##E0u%88"4/1A1A	
r   c                4    [        UR                  5       5      $ r   r  r  ro  s     r   r  r    s    T%**,-?r   c                :    [        U R                  5       5      U:H  $ r   r  rt  s     r   r  r    s    UZZ\(:h(Fr   c           	         U R                  U5      nU R                  U5      n/ nUR                  SU S[        UR	                  5       5       35        U R                  X5        U R                  U5      R                  X4UR                  5        g)z7Guard on the key order of types.MappingProxyType objectzlist(z.keys()) == N)	r  r  r  r  r  r  r  add_mapping_keys_guardr  r  s        r   MAPPING_KEYS_CHECKGuardBuilder.MAPPING_KEYS_CHECK  s{     ll5!eC5T%**,-?,@AB##E0u%<<))	
r   c                >    [        [        R                  U5      5      $ r   r  r1  r  ro  s     r   r  r    s    T$))E2B-Cr   c                D    [        [        R                  U 5      5      U:H  $ r   r  rt  s     r   r  r    s    TYYu-=(>((Jr   c           
        U R                  U5      nU R                  U5      nU[        R                  R                  R
                  L a  U R                  U5        gU R                  U5        / nUR                  SU S[        [        U5      5      < 35        U R                  X5        U R                  UR                  5      (       a  U R                  X15        gU R                  X15        g)z6Insert guard to check that the keys of a dict are sameNr&  z)) == )r  r  r?  r  rK   SUPPORTED_NODESr  r  r  r  r   r  r  r  r  r  r  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                    g r   r   ro  s     r   r  r    r  r   c                    [        U 5      S:H  $ r   r  rt  s     r   r  r    s    E
ar   c                R    [         R                  (       a  gU R                  U5        g)z\Special guard to skip guards on empty hooks. This is controlled by skip_nnmodule_hook_guardsN)rQ   skip_nnmodule_hook_guardsr  re  s     r   EMPTY_NN_MODULE_HOOKS_DICT'GuardBuilder.EMPTY_NN_MODULE_HOOKS_DICT  s     ++U#r   c                    g r   r   re  s     r   	GRAD_MODEGuardBuilder.GRAD_MODE      r   c                    g r   r   re  s     r   DETERMINISTIC_ALGORITHMS%GuardBuilder.DETERMINISTIC_ALGORITHMS  r  r   c                    g r   r   re  s     r   FSDP_TRAINING_STATE GuardBuilder.FSDP_TRAINING_STATE  r  r   c                "   U R                   R                  nUc   eUR                  nX0R                   l        SU R                   R                  R	                  5        3/nU R
                  R                  R                  X4UR                  5        g )Nz ___check_global_state() against )	r  r  global_state_guardglobal_state__getstate__rn  r   add_global_state_guardr  )r   rd  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                   U R                   R                  c   e[        U R                   R                  5      U R                   l        U R                  R
                  R                  U R                   R                  S/UR                  5        g )Nz$___check_torch_function_mode_stack())r  torch_function_mode_stack$make_torch_function_mode_stack_guard"torch_function_mode_stack_check_fnrn  r   #add_torch_function_mode_stack_guardr  re  s     r   TORCH_FUNCTION_STATE!GuardBuilder.TORCH_FUNCTION_STATE  sy    $$>>JJJ0%%?? 	@
 	CC!!;;34	
r   c                H   UR                   [        R                  L d   eU R                  R                  c   eSU R                  R                  R
                  < 3/nU R                  X5        U R                  U5      R                  [        X!5      UR                  5        g)z/Guard on CURRENT_DEVICE per torch.utils._deviceNzutils_device.CURRENT_DEVICE == )rp  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                  ^ ^%^&^'^( SSK Jn  UR                  S:X  d   eT R                  R                  m(T(c   eT R                  R
                  bU  T R                  R
                  nUR                  nUR                  nUR                  b  UR                  nUR                  nGO[        T(U5      (       d   eT(R                  c   eT(R                  R                  =(       d    / m&T& Vs/ s H  oR                  PM     snm'SU(4S jjn	T(R                  (       a  0 n
/ n/ n0 n[        5       nT(R                   Hn  nUR                   T(R"                  ;   a<  [$        R&                  R(                  R+                  UU	T(R                  U
UUUU5        MY  [,        R/                  S5        Mp     [1        UU[3        UR5                  5       5      USS9m%OS m%SU%U&U'U(U 4S jjn[6        R8                  (       a   U" S	5      u  pEnSnOS
nU" S5      u  pET(R&                  (       d  T(R                  R=                  5         T R>                  (       aw  [A        5       RC                  S5      nUb  [        U[D        5      (       d   eUc  / O"[3        URF                  RI                  5       5      n[K        UUUUUS9T R                  l        URL                   H  nT RO                  UU/5        M     [P        RR                  " 5       =n(       a%  URT                  RW                  URL                  5        / n/ nU(       d  W(       d   eURL                  URF                  nnU(       d  g URY                  5        H  u  nn[        U[Z        5      (       a  S
nM  T RC                  U0 [\        E[_        5       ES9n[        U[`        5      (       a  URc                  UU45        Mi  [        U[d        5      (       a  URc                  UU45        M  S
nM     U(       Gd  SS K3nSSK4J5n  W(       d   eURL                  URF                  nn[m        UU-   5      n [o        U5       VVs/ s H!  u  nnT Rq                  [s        UU5      5      PM#     nnnSRu                  S [o        U5       5       5      n SRu                  S [o        U5       5       5      n!U (       a  SU  S3n U!(       a  SU! S3n![v        Rx                  " SU  SU! SSRu                  U5       S35      n"[z        R}                  SU"URL                  5        UR                  U"5      n#UR                  U#R                  UR                  5      R                  n$U$(       d   e [        U[        U5      [        U5      U$U#URL                  UR                  5        g URL                  (       a6  T R                  URL                  URL                  0 [\        E[_        5       ES9  g g s  snf ! [:         a    S
nU" S5      u  pE GNf = fs  snnf ! [$        R                  R                  R                   a     Nf = f)Nr   r   r  c                   > TR                   U     Vs/ s H  n[        U[        R                  U5      PM      sn$ s  snf r   )tracked_fakes_id_to_sourcer4   r3   SIZE)t_idr  rp  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           
        > TR                   R                  T Vs/ s H  oR                  PM     snT Vs/ s H  oR                  PM     snTTTR                  TR
                  (       + U S9$ s  snf s  snf )N)input_contextsequalities_inputsr  ignore_staticlangs)	shape_envproduce_guards_verbosefakerp  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.A3
)pythonverbose_pythoncppT)r2  r3  cpp_code_parts)python_code_partsr   r5  python_fallbackshape_env_sources)r   )CppCodeCacherk  c              3  <   #    U  H  u  nu  p#U S U S3v   M     g7f)z = int_values[r(  Nr   r   ir  symbols       r   r$  )GuardBuilder.SHAPE_ENV.<locals>.<genexpr>  s*      ,*I;A hnQCq1*I   c              3  <   #    U  H  u  nu  p#U S U S3v   M     g7f)z = float_values[r(  Nr   r;  s       r   r$  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)r  rB  r  rB  r   list[Source])r+  tuple[str, ...]r   zlist[_ShapeGuardsHelper])Ktorch._dynamo.output_graphr   r  r  r  shape_code_partsr6  r   r5  r7  r  r,  tracked_fakessymbolic_contextexport_constraintsr   r  r  r?  r/  dynamic_shapes_process_equalitiesr  r  rH   r  r3  rQ    enable_cpp_symbolic_shape_guardsOverflowErrorfreezer  localsr  rF   source_to_symbolr  ShapeCodePartsexprsr  r7   try_getshape_env_guardsr2  r   r]   rJ   r  rB  r  r  ctypestorch._inductor.codecacher9  r1  r  r<  r-   ri  textwrapdedentrk  rl  loadcastrd  c_void_pr  r"   r   r  	_inductorrS   InvalidCxxCompilerru  ))r   rd  r   rE  r6  r   r5  r7  r  r   namesr"  r#  r$  r%  
constraintr0  maybe_cpp_code_partsmaybe_shape_env_sourcesr   compile_contextint_source_to_symbolfloat_source_to_symbolr   rO  rp  r=  r?  rT  r9  r<  guard_managersint_symbols_strfloat_symbols_strfunc_strclibcguardr)  r  r(  r  s)   `                                    @@@@r   	SHAPE_ENVGuardBuilder.SHAPE_ENV  sB   @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 ((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 s=   *W74W< X (X=C9X <XXX (Y
	Y
c                    [        U5      $ r   )rb  ro  s     r   r  r    s
    -DU-Kr   c                `    [        U [        R                  5      =(       a    [        U 5      U:H  $ r   )r  r?  r@  rb  rt  s     r   r  r    s'    uell+ ;'.(:;r   c                   [         R                  (       a  UR                  5       (       a  g [        U5      (       a  U R	                  U5        g [        U[        5      (       a  U" 5       nUb  UOU R                  U5      n[        U5      n[        R                  R                  U5      n[        U[        R                  R                  5      (       a2  UR                  b  UR                  nUR                  b  UR                  n[        U[        R                   5      (       d   e[         R"                  (       a  [        U[        R$                  R&                  5      (       am  [)        5       nUR+                  5       (       aN  UR-                  SUR/                  5       5        UR-                  SUR0                  5        UR-                  SS5        U R3                  U5      n/ nU R4                  R6                  c   eU R4                  R6                  R8                  (       a  U R;                  U5        / SQnU H  n	[=        UR>                  U	5      n
U	S:X  a  Sn	[A        U
5      n
U R                  U
5      n[C        U[        RD                  [        RF                  45      (       a&  URI                  SU S	U	 S
[K        U5      < 35        M  URI                  U S	U	 SU 35        M     GOU RM                  U5      n[         RN                  (       aC  [C        U[        R$                  R&                  5      (       do  [Q        UR>                  5      (       dU  [        UR>                  [R        5      (       d6  U RT                  RI                  U5        U RV                  RI                  U5        U R4                  R6                  nURX                  UR>                     n[[        US   5      n[[        US   5      n[]        [_        UUUUUU5      U5      nUR`                  nURc                  UUUUUUUU5        [        U[        R$                  R&                  5      (       d/  U Rd                  Rf                  Ri                  URj                  5        URl                  c   e[o        USUR>                  S9u  nnU(       Gd  [q        US5      (       a`  URr                  nSU SU SU S3nURI                  U5        U RM                  U5      Ru                  U[]        UU5      UR`                  5        OMSU S3nURI                  U5        U RM                  U5      Rw                  S[]        UU5      UR`                  5        [q        US5      (       ae  [y        USS 5      nSU SU< SU S3nURI                  U5        U RM                  U5      R{                  U4S j[]        UU5      UR`                  5        [q        US5      (       ae  [y        USS 5      nSU SU< SU S3nURI                  U5        U RM                  U5      R{                  U4S  j[]        UU5      UR`                  5        [}        U5      S!:  a  U R                  X5        g g )"Nparam_numelparam_bytesparam_countrP   )r  r  r  
ndimensionrr  zndimension()zstr(r  r  rA  sizera  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                H    [        U S5      (       a  [        U SS 5      U:H  $ S$ )Nrw  rx  Tr  rH  rC  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                H    [        U S5      (       a  [        U SS 5      U:H  $ S$ )Nrw  r|  Trz  rC  s     r   r  r{    s1    &q*DEE $A'@$G8S &!%&r   r   )@rQ   _unsafe_skip_fsdp_module_guardsis_fsdp_modulerR  r  r  rO   r  rO  r?  r  _dispatch_keysr  r  r  r  r@  log_compilation_metricsrC  	Parameterr6   in_progress	incrementnumelnbytesr  r  r  r/  r  rV   r  rW   r   r  r  r  r   r  ,skip_no_tensor_aliasing_guards_on_parametersr2   rt   r  r  input_source_to_sizes_stridesr  r  r   r  add_tensor_match_guardrn  r   r   r  rp  r   r  rv  add_dynamic_indices_guardr  rH  ro  r   r  )r   rd  r  r  r  metrics_contexttensor_namer   termstermterm_src
real_valuern  r  rf  rs  ra  r   r  static_reasondynamic_indicesr  	shape_idsunbacked_boundss                            r   TENSOR_MATCHGuardBuilder.TENSOR_MATCH  s    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& "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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 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                n   [        5       nUc   eUR                  nAUc   eU=(       d    UR                  R                  nAXpR                  R
                  ;   d
   SU 35       eUc'  UR                  nU(       d  S OU R                  U5      n	OUn	U	b  [        R                  " [        U	5      5      OS n
S n[        U	R                  SS5      S:g  nU(       aJ  [        U	[        R                  [        [        R                   45      (       d  [        R                  " U	5      nUR#                  UU
UU5        g )NzH_produce_guard_code must be called from inside GuardedCode. Called from __weakrefoffset__r   )r   f_backr  co_namer   r  r  r  weakrefr  rO  rH  r  enumEnumrM  
ProxyTypesset_export_info)r   rd  rU  r  r  	cur_framecaller	func_namer  guarded_objectguarded_object_typeobj_refsupports_weakrefs                r   r  #GuardBuilder._set_guard_export_info  s0    !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  rn  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  )FNN)r  types.CodeTyper  zCallable[[object, str], int]r  zCallable[[Source], str]r  z.Callable[[object], weakref.ref[object] | None]r  dict[str, object]r   r  rn  r   r  CheckFunctionManagerr  r   r  r  r  =Callable[[Sequence[GuardFilterEntry]], Sequence[bool]] | Noner   r   )r?  dict[Any, Any]rd  r:   r   r   )r  r  rd  r:   r   r   )r?  r   r   
Any | None)rp  rV   rG  r   rH  r   r?  r   rI  r   r  r   r@  r;  r   r   )rp  r>   r   r   )rp  r>   r?  zAKeysView[Any] | set[Any] | frozenset[Any] | dict[Any, Any] | Noner   r;  )r  r;  r   r   )r   r   )rp  r>   r   r   )rd  r:   r   r   r.  )
r   r  r   r  r   r  rp  r   r   r   r   )ry  zGuard | Sourcer   dict[str, Any] | Noner   r   )rd  zstr | Guardr   r   )rd  r:   r  r   rw  z(Callable[[GuardBuilderBase, Guard], Any]r   r   )rd  r:   r  r  r   r   )rd  r:   r  r  r   r   )rd  r:   r   r   )rd  r:   r#  r   r   r   )rd  r:   r#  r   r   r   )rd  r:   r  r  r   r   )rd  r:   r  r  r   r   )rd  r:   r  r>   r   r   )NN)
rd  r:   rU  r  r  r  r  r  r   r   )Or   r   r   r   r   r  r  rH  r  r  r  r  r  r   r<  r  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  ri  rm  r?  rp  ru  rG  ry  r{  rO  ry  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  rj  r  r  r   r   r   r   r  r    s    "9=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\+49	<'R  "YY )Y  	Y
 Y Y Y -Y 
Yv9""" 
"0?
\|L 26 YY &Y /	Y
 Y 
YP /3' , 
	&   ;	
 
$ 
 S5050n MF
 0400",0	0	08 8?
	
8 "
 "
 L90	0  L=0	0  L90	0$ L=0	0$ 29	" 15

	

 29>	> :>%?%?,6%?	%?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9^ /3)-1
1
 1
 ",	1

 '1
 
1
 1
r   r  c                     \ rS rSrSr\R                  \R                  \R                  4r	\
R                   " S S5      5       r " S S\R                  5      r " S S\R                  5      rSS	 jrSSS
 jjrSS jrSS jrSrg)PyExprCSEPassi(  rP   c                  *    \ rS rSr% S\S'   S\S'   Srg)PyExprCSEPass.Configi0  zdict[str, int]
expr_countzdict[str, str]expr_to_namer   NrV  r   r   r   Configr  0  s    ""$$r   r  c                  6   ^  \ rS rSrSS jrSU 4S jjrSrU =r$ )PyExprCSEPass.ExprCounteri5  c                    Xl         g r   _config)r   rQ   s     r   r   "PyExprCSEPass.ExprCounter.__init__6  s    !Lr   c                   > [        U[        R                  5      (       a*  U R                  R                  [        U5      ==   S-  ss'   [        TU ]  U5        g r   )r  r  ALLOWED_NODE_TYPESr  r  r  r   r  )r   r   r   s     r   r  PyExprCSEPass.ExprCounter.visit9  sA    $ @ @AA''T(:;q@;GM$r   r  )rQ   r  r   r   )r   ast.ASTr   r   r   r   r   r   r   r  r   r   r   s   @r   ExprCounterr  5  s    	"	  	 r   r  c                  H   ^  \ rS rSr      SU 4S jjrSU 4S jjrSrU =r$ )PyExprCSEPass.Replaceri>  c                H   > [         TU ]  5         Xl        X l        / U l        g r   )r   r   r  	_gen_namepreface)r   rQ   gen_namer   s      r   r   PyExprCSEPass.Replacer.__init__?  s!    
 G!L%N&(DLr   c                J  > [        U[        R                  5      (       a  [        U5      nU R                  R
                  U   [        R                  :  a  X R                  R                  ;  ac  [        TU ]%  U5      n[        U5      nU R                  5       nU R                  R                  U SU 35        XPR                  R                  U'   OU R                  R                  U   n[        R                  " U[        R                  " 5       5      $ [        TU ]%  U5      $ )Nz = )r  r  r  r  r  r  USE_THRESHOLDr  r   r  r  r  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   )r  r  r  )rQ   r  r  zCallable[[], str]r   r   )r   r  r   r   r  r   s   @r   Replacerr  >  s.    	)(	) (	) 		)	' 	'r   r  c                f    SU l         U R                  [        R                  " S 5      0 S9U l        g )Nr   c                     gr   r   r   r   r   r  (PyExprCSEPass.__init__.<locals>.<lambda>f  s    qr   )r  r  )_counterr  r  defaultdictr  r   s    r   r   PyExprCSEPass.__init__c  s.    {{"..y9 # 
r   c                P    U U R                    3nU =R                   S-  sl         U$ r   )r  )r   r   r  s      r   _new_varPyExprCSEPass._new_vari  s'    $--)r   c                    U R                  U R                  5      nU H)  n UR                  [        R                  " U5      5        M+     g ! [
         a'  n[        R                  SUR                  U5        e S nAff = f)Nz#Failed to visit expr at line %s.
%s)	r  r  r  r  parseSyntaxErrorr  	exceptionlineno)r   rQ  countereexs        r   countPyExprCSEPass.countn  sd    ""4<<0Aciil+   DbiiQRSs   %A
A="A88A=c                    U R                  U R                  U R                  5      nUR                  [        R
                  " U5      5      nUR                  [        U5      4$ r   )r  r  r  r  r  r  r  r  )r   r  replacernew_nodes       r   r  PyExprCSEPass.replacew  sF    ==t}}=>>#))D/2h!777r   )r  r  Nr  )_var)r   r   r   r   )rQ  r  r   r   r  r   r   ztuple[list[str], str])r   r   r   r   r  r  	AttributeCall	Subscriptr  dataclasses	dataclassr  NodeVisitorr  NodeTransformerr  r   r  r  r  r   r   r   r   r  r  (  sx     M --3==A% % % coo  #'3&& #'J

8r   r  c                    [        U R                  [        5      =(       d3    [        R                  =(       a    U R
                  [        R                  L $ r   )r  r  ra   rQ    guard_nn_modules_using_dict_tagsr  r  r  )rd  s    r   must_add_nn_module_guardsr  }  s@    
 	5++^< 	
 33 :<#9#99r   c                  6   ^  \ rS rSrSU 4S jjrSS jrSrU =r$ )DeletedGuardManagerWrapperi  c                .   > [         TU ]  5         Xl        g r   )r   r   invalidation_reason)r   reasonr   s     r   r   #DeletedGuardManagerWrapper.__init__  s    #) r   c                    S U l         g r   )r   r   s    r   r  6DeletedGuardManagerWrapper.populate_diff_guard_manager  s
    #r   )r   r  )r  r   r   r   r  )r   r   r   r   r   r  r   r   r   s   @r   r  r    s    *$ $r   r  c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   Srg)rP  i  rG   r6  r   z_CppShapeGuardsHelper | Noner5  r   r7  rB  r8  r   NrV  r   r   r   rP  rP    s     ))**00##r   rP  c                  *    \ rS rSr% S\S'   S\S'   Srg)GuardsStatei  r   r  ShapeCodeParts | NonerE  r   NrV  r   r   r   r   r     s    ((++r   r   c                  @    \ rS rSrSS	S jjrS
S jrS
S jrSS jrSrg)_Missingi  Nc                    Xl         g r   r  )r   r  s     r   r   _Missing.__init__  s    r   c                "    SU R                    S3$ Nz	_Missing(rl  r  r   s    r   __repr___Missing.__repr__      4<<.**r   c                "    SU R                    S3$ r  r  r   s    r   r  _Missing.__str__  r  r   c                    [        5       $ r   )r  )r   r   kwargss      r   __call___Missing.__call__  s
    z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    s    ++
r   r  c                     [         R                  R                  [        R                  4n  U [         R                  R
                  R                  4-  n U $ ! [         a     U $ f = fr   )r?  r  ri  r  r   _distributed_c10dProcessGroupAttributeError)r{  s    r   _get_unsupported_typesr    sa     	C**7799 J  Js   (A 
A$#A$c                  J  ^  \ rS rSr            SU 4S jjr\SS j5       r\            SS j5       r\              SS j5       r\SS j5       r	\SS j5       r
\    SS j5       r\    SS	 j5       r\S S
 j5       r\S!S j5       r\    S"S j5       r\    S#S j5       r\S$S j5       r\S%S j5       r\S&S j5       r\S'S j5       r\S(S j5       r\      S)S j5       r\S*S j5       r\            S+S j5       r    S,S jrSrU =r$ )-GuardsStatePickleri  c                   > [         TU ]  " U0 UD6  [        R                  R	                  5       U l        [        R                  R                  R                  5       U l        Xl	        X l
        X0l        g r   )r   r   r?  r  FakeTensorMode	fake_modefake_tensorFakeTensorConvertertensor_converterr  empty_valuesmissing_values)r   r  r  r   r   r  r   s         r   r   GuardsStatePickler.__init__  s\     	$)&)**99; % 1 1 = = Q Q S!2(,r   c                d    [         R                  R                  5       nUR                  U5        U$ r   )r?  rC  rD  __setstate__)rg  statemods      r   _unpickle_module#GuardsStatePickler._unpickle_module  s%    hhoo
r   c           	        [         R                  R                  5       n[         R                  R                  R	                  5       nUR                  UUUU[         R                  R                  R                  U5      5      nXXl	        U$ r   )
r?  r  r  r  r  from_meta_and_devicer  r   from_raw_reprgrad)	rg  meta_tensorr  r  dispatch_keys_rawr+  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                    [        U5      nUR                  UR                  5       p[        U5      R	                  XuX5      n
X:l        [        R                  R                  R                  U5      U
l
        U
$ r   )r1  r`  ra  rO  __tensor_unflatten__r  r?  r  r   r*  r  )rg  r,  r  r  r-  ctx
inner_data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                .    [         R                  " U5      $ r   )r  r  )rg  aliass     r   _unpickle_python_module*GuardsStatePickler._unpickle_python_module   s    &&u--r   c                T    [         R                  R                  R                  U5      $ r   )r?  r  r   r*  )rg  r  s     r   _unpickle_dispatch_key_set-GuardsStatePickler._unpickle_dispatch_key_set  s    xx&&44X>>r   c                h    [         R                  R                  R                  R	                  U5      $ r   )r?  r  r  CInterpreterdeserialize)rg  jsons     r   _unpickle_functorch_interpreter2GuardsStatePickler._unpickle_functorch_interpreter  s%     xx""//;;DAAr   c                .    [         R                  " U5      $ r   )rE  MappingProxyType)rg  ds     r   _unpickle_mapping_proxy*GuardsStatePickler._unpickle_mapping_proxy  s     %%a((r   c                H    [         R                  U5      R                  5       $ r   )r1  fromkeysr  )rg  elemss     r   _unpickle_dict_keys&GuardsStatePickler._unpickle_dict_keys  s    }}U#((**r   c                .    [         R                  " X5      $ r   )	itertoolsr  )rg  r7  r  s      r   _unpickle_count_iter'GuardsStatePickler._unpickle_count_iter  s    t**r   c                    [         R                  R                  R                  R                  R	                  5       U   $ r   )r?  rl  fsdp_fully_shardget_cls_to_fsdp_cls)rg  original_types     r   _unpickle_fsdp_module_type-GuardsStatePickler._unpickle_fsdp_module_type  s5       %%22??SSU
 	
r   c                    [         R                  R                  R                  nUR	                  U5      n[         R                  R
                  R                  X15        U$ r   )r?  rC  parallelDistributedDataParallel__new__rD  r#  )rg  r$  tyddps       r   _unpickle_ddp_module'GuardsStatePickler._unpickle_ddp_module$  sA     XX66jjn$$S0
r   c                J    [        [        R                  R                  U5      $ r   )rH  r?  opsr  )rg  r  s     r   _unpickle_c_op!GuardsStatePickler._unpickle_c_op-  s    uyy||T**r   c                ^    [        [        [        [        R                  U5      U5      U5      $ r   )rH  r?  rd  )rg  	namespaceopnameoverloadnames       r   _unpickle_opGuardsStatePickler._unpickle_op1  s!    wwuyy)<fE|TTr   c                .    [         R                  " X5      $ r   )rE  rG  )rg  funcr  s      r   _unpickle_bound_method)GuardsStatePickler._unpickle_bound_method5  s    ++r   c                ^    [        [        R                  R                  R                  U 5      $ r   )rH  r?  rC  	attention
SDPBackendr  s    r   _unpickle_sdp_backend(GuardsStatePickler._unpickle_sdp_backend9  s!     uxx))44d;;r   c                P   ^ SU4S jjnUR                   c   eUR                   S   $ )Nc                    > T $ r   r   )r  s   r   r  ,GuardsStatePickler._unpickle_cell.<locals>._@  s    Jr   r   )r   r   )r   )rg  r  r  s    ` r   _unpickle_cell!GuardsStatePickler._unpickle_cell>  s)    	 }}(((}}Qr   c                .    [         R                  " X5      $ r   )r  
namedtuple)rg  r  fieldss      r   _unpickle_named_tuple_type-GuardsStatePickler._unpickle_named_tuple_typeF  s    
 %%d33r   c                2    SSK Jn  UR                  " U5      $ )Nr   r   )torch._dynamo.packager   to_code_object)rg  serialized_coder   s      r   _unpickle_code!GuardsStatePickler._unpickle_codeM  s    8,,_==r   c                r    [         R                  " U5      R                  n[        R                  " XX4U5      $ r   )r  r  r  rE  rF  )rg  r   r`  qualnameargdefsclosurer  s          r   _unpickle_nested_function,GuardsStatePickler._unpickle_nested_functionS  s/     ++F3<<	!!$8gNNr   c                N   SS K n[        U5      U R                  ;   a!  [        U5      R                  [        U5      44$ [
        R                  " U5      (       a.  SSKJn  [        U 5      R                  UR                  " U5      44$ [        U5      U R                  ;   a  [        S4$ [        U[        R                  5      (       Ga  UR                   R                  S:w  Ga  SSKJn  [        U5      U R&                  ;  a  [        S4$ U" U5      (       a  / nUR)                  5       u  pgU HV  n[+        X5      n	[        U	[        R                  5      (       a  XR&                  [        U	5      '   UR-                  X45        MX     [        U 5      R.                  [        R0                  " USS9UR                   [        U5      [        R2                  R5                  U5      R7                  5       UU44$ [        U5      n
[        U[        R8                  R:                  5      (       a)  UR<                  b  UR<                  O[        R                  n
[        U 5      R>                  [        R0                  " USUR@                  S9UR                   U
[        R2                  R5                  U5      R7                  5       URB                  44$ [        U[        RD                  RF                  5      (       Ga  [        U5      U R&                  ;  a  [        S	4$ URH                  RK                  5        H  n[        U[        R                  [        RD                  RF                  45      (       a  M>  [        U5      U R&                  ;   a  MY  [M        U5      (       a  Mk  XR                  [        U5      '   M     [        U[        RD                  RN                  RP                  5      (       a&  [        U 5      RR                  URU                  5       44$ [        U5      RV                  [        U5      RX                  :X  a  [Z        $ UR\                  RT                  [        RD                  RF                  RT                  :X  a&  [        U 5      R^                  URU                  5       44$ GO[
        R`                  " U5      (       a"  [        U 5      Rb                  URX                  44$ [        U[        R2                  Rd                  5      (       a&  [        U 5      Rf                  UR7                  5       44$ [        U[        R2                  Rh                  Rj                  5      (       a&  [        U 5      Rl                  URo                  5       44$ [
        Rp                  " U5      (       aW  [s        XRt                  5      (       a=  [w        US
5      (       a,  [w        US5      (       d   eURx                  URz                  44$ [
        Rp                  " U5      (       am  [s        U[|        5      (       aX  [w        US5      (       aG  URV                  URX                  :w  a-  [        U 5      R~                  URX                  UR                  44$ [        U[        R                  5      (       a  [        SU SUR                   S35      e[        U[        R                  5      (       a&  [        U 5      R                  UR                  5       44$ [        U5      [        L a9  [        U5      u  pU[Z        La!  U[Z        La  [        U 5      R                  X44$ GOK[        U[        R                  R                  R                  5      (       a!  [        U 5      R                  [        U5      44$ [        U[        R                  R                  5      (       aB  UR                  R                  S5      (       a"  [        U 5      R                  URX                  44$ [        U[        R                  R                  5      (       a8  [        U 5      R                  UR                  UR                  UR                  44$ UR\                  R                  S:X  a"  UR\                  RX                  S:X  a  [        S4$ [        U[        5       5      (       a  [        S4$ [
        R                  " U5      (       a  SURV                  ;   aN  [        U 5      R                  UR                  UR                  URV                  UR                  UR                  44$ UR                  [        R                  ;   aW  [        R                  UR                     nURV                  R                  S5       H  n[+        XS 5      nM     XLa  [        S4$ O[
        R                  " U5      (       at  UR                  nUR                  n[+        UURX                  5      n[
        R                  " U5      (       a  UR                  nUULa  [        U 5      R                  UU44$ OP[        U[        S " S5      R                  S   5      5      (       a"  [        U 5      R                  UR                  44$ [w        [        R                  S5      (       aT  [        U[        R                  R                  R                  5      (       a!  [        U5      U R&                  ;  a  [        S4$ [        U[        RD                  R                  R                  5      (       a"  [        U 5      R                  UR                  44$ [        U5      RV                  [        U5      RX                  :w  aT  [        U[|        5      (       d?  [        R                  R                  R                  S[        U5       SU S3S-   S-   5      e[
        Rp                  " U5      (       Ga"  [w        [        R                  S 5      (       Ga  [s        U[        R                  R                  R                  R                  5      (       a  U[        R                  R                  R                  R                  La  UR                  S!   n[s        U[        RD                  RF                  5      (       d   eU[        R                  R                  R                  R                  R                  5       ;   d   e[        U 5      R                  U44$ [Z        $ )"Nr   r   )zmissing valuesmeta)is_traceable_wrapper_subclass)ztensor guard tree)r  )r  r  )zmodule guard tree_torch_handler_name_torch_unpicklerr  zCannot serialize SymInt z (node: rl  z_C::r  	PyCapsule)capsule)unsupportedz<locals>r  )zfqn mismatchc                   ^  U 4S j$ )Nc                    > T $ r   r   r  s   r   r  GGuardsStatePickler.reducer_override.<locals>.<lambda>.<locals>.<lambda>  s    Qr   r   r  s   `r   r  5GuardsStatePickler.reducer_override.<locals>.<lambda>  s    Yr   distributed_c10d)zdistributed_c10d.Workr+  r,  r-  r.  r/  rU  rX  )ysympyr  r  rO  r^  r  iscoder  r   r  from_code_objectr   r  r  r?  r@  r  torch.utils._python_dispatchr  r  re  rH  r  r7  
empty_liker  r  r  r  r  r  r.  r  r+  rC  rD  r  r3  rQ  r\  r]  ra  r	  r   r   NotImplementedr   r&  r  r;  r   r>  r  rA  rD  	serializer  r/  Functionr  r  r  rM  r  r  r  rG  r   rE  rG  rI  r  _COUNT_ITERATOR_TYPEr   rR  r  r  r   rN  r  _opsOpOverloadPacket_qualified_op_name
startswithre  
OpOverloadrk  rh  _opname_overloadnamer   r  
isfunctionr  r   r   r   r  modulesr  ismethodr   __self__ro  rz  r<  rl  r  Workrr  rs  ru  r  rS   PackageErrorrU  rV  
FSDPModuler   rW  rY  )r   r1  r  r   r  r3  attrsr2  r  innerr  r7  r  fr  rn  method_self
inner_funcrX  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  dict[int, Any]r  r  r   r  r   r   r  r   r   r   )r$  r   r   ztorch.nn.Module)r,  torch.Tensorr  torch.devicer  rO  r-  rB  r+  r  r   r  )r,  r  r  r  r  rO  r-  rB  r2  r   r3  zlist[tuple[str, Any]]r   r  )r:  r   r   ztypes.ModuleType)r  rB  r   ztorch._C.DispatchKeySet)rC  bytesr   z torch._C._functorch.CInterpreter)rH  r  r   z types.MappingProxyType[Any, Any])rM  	list[Any]r   r   )r7  rB  r  rB  r   zitertools.count[int])rX  type[torch.nn.Module]r   r  )r$  zdict[str, Any]r   z)torch.nn.parallel.DistributedDataParallel)r  r   r   r   )rh  r   ri  r   rj  r   r   r   )rn  r   r  r   r   r   )r  r   r   ztorch.nn.attention.SDPBackend)r  r   r   r   )r  r   r~  rC  r   ztype[NamedTuple])r  r   r   r  )r   r  r`  r   r  r   r  ztuple[object, ...] | Noner  z!tuple[types.CellType, ...] | Noner   ztypes.FunctionType)r1  r   r   z0tuple[Callable[..., Any], tuple[Any, ...]] | Any)r   r   r   r   r   rI  r&  r.  r7  r;  r>  rD  rI  rN  rR  rY  ra  re  rk  ro  rH  ru  rz  r  r  r  r  r   r   r   s   @r   r  r    s   -)- %- '	-
 - - 
-  
 !  	
   
 ( !  	
   * 
 & . . ? ? BB	)B B
 ))	)) )
 + + + + 
1
	
 
 "	2  + + U U , , < <     44 /4	4 4 > >
 	O	O 	O 		O
 +	O 3	O 
	O 	OII	9I Ir   r  c           
     H   [        5       n[        U R                  5      nUS:X  a  SnUnO UR                  U 5      nSn[	        U R
                  5      S Ln[        UUUU R                  5       U R                  (       a  [        U R                  5      OSUU S9$ !   UnSn Nb= f)Nr  FTr   )r  	has_valuer  
guard_typederived_guard_types	is_global
orig_guard)
r1  strip_local_scoper  r  r+   r  r   create_fn_nameguard_typesrM  )rd  builderMISSINGr  r  r  r  s          r   make_guard_filter_entryr  ,  s    hGUZZ(Drz			
 KK&EI 'u'?'?@LI'')9>9J9JU5#4#45PR 		EIs   B B!c                   [         R                  " 5       n0 n0 nUR                  n[        R                  " U R
                  R                  5      nU H  n[        R                  " U5      (       aa  [        US5      (       aP  UR                  n[        U5      U;  a3   [        U5      R                  [        U5      5        X[        U5      '   M}  M  [        U5      U;  d  M  Xt[        U5      '   M     [        XSXB5      n	[        [         R"                  R%                  U R
                  R&                   V
s/ s H  n
[)        X5      PM     sn
5      5      (       a*  [+        5       U R
                  l        0 U R
                  l         U	R1                  U 5        UR=                  5       $ !    GMZ  = fs  sn
f ! [2         a8  n[         R4                  R6                  R9                  [;        U5      5      UeS nAff = f)Nr  )ioBytesIOr  r<  tree_leavesr  r  r  r  r  r  r  rO  r^  r  r'  r?  compilerkeep_portable_guards_unsafer   r  r   r  r   dumpr  r  rS   r  r   r  )r$  r  bufr  r   r  leavesleafr  picklerrd  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&5F/F4 &F,4
G6>3G11G6c                      \ rS rSr%        S                   SS jjrSrS\S'           SS jr S             SS jjr        SS	 jr	SS
 jr
SS jrSS jrSrg)r  iz  Nc
           
     	  ^ ^^ U(       a  UR                   OS n
0 T l        [        U5      nUT l        T R                  c   eUT l        U(       a  UR
                  OS T l        [        5       T l        [        5       T l        [        5       T l	        UT l
        S T l        S T l        [        S5      (       d  [        R                  S5        [         R"                  R$                  R&                  (       a  U=(       d    S mSU4S jjn[)        U
=(       d    S[*        R,                  S9n[         R.                  R1                  5          U(       a  T R3                  UUUUS5      u  pU" U Vs/ s H  n[5        X5      PM     sn5      n[7        U5      [7        U5      :X  d   e[9        S U 5       5      (       d   e[;        U5       VVs/ s H  u  nnUU   (       d  M  UPM     nnnT R3                  UUUUUUS	9u  pUT l        T R?                  XU5        S S S 5        WR@                  T R<                  l         [B        RE                  S
T R<                  5        UR@                  T R<                  l         SmURF                  (       Gd  URH                  (       d  T R<                  RK                  URL                  5      (       dA  [O        T R<                  URL                  [P        RR                  " 5       S S9n[U        SU 35      e[V        b!  [W        T R<                  URL                  U5        [Y        T R<                  RZ                  URL                  S5      m[B        RE                  STS 5        [\        R^                  " S[a        T5      5        S T l1        U(       aE  SSK2J3n  [i        T R                  U5      (       d   e T Rk                  XT R                  5      T l1        [         R|                  R                  SUU 4S jS9  T R                  R                  5         S T l        g s  snf s  snnf ! , (       d  f       GN#= f! [l        Rn                   a  n[         R"                  R$                  Rp                  (       d  U	(       a  UeT R                  Rs                  S[u        U5       3[v        Rx                  " 5       R{                  S5      S9   S nANS nAff = f)Nr  z9guard_nn_modules is turned off using justknobs killswitchc                2    U  Vs/ s H  nSPM     sn$ s  snf r.  r   )gsgs     r   r  /CheckFunctionManager.__init__.<locals>.<lambda>  s    R>PRtR>P>Ps   c                  > / n[        T" U 5      U 5       H  u  p#U(       d  UR                  S5        M  UR                  S;   d   SUR                  ;   d  SUR                  ;   aH  [        R                  SUR                  UR                  R                  5        UR                  S5        M  UR                  S5        M     U$ )NF)r  r  r  r  r  r  z7%s guard on %s is dropped with caching_precompile=True.T)r(  r  r  r  r  r  r  r  )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   )r#  Fc              3  D   #    U  H  n[        U5      [        L v   M     g 7fr   )rO  r   )r   r  s     r   r$  0CheckFunctionManager.__init__.<locals>.<genexpr>  s     CNq47d?Ns    )r  %sg        )backendziGuard failed on the same frame it was created. This is a bug - please create an issue.Guard fail reason: rP   zGuard eval latency = %s us.2fguard_latency_usr   r  zGuard evaluation failed: r  )	tracebackdynamo_cpp_guards_strc                 *   > TR                    ST S S3$ )Nz
Guard latency = r  z us)rn  )latencyr   s   r   r  r  7  s    $"4"4!55GPS}TWXr   
payload_fn)r   zSequence[GuardFilterEntry]r   zSequence[bool])Ar   	_weakrefs5update_diff_guard_managers_for_existing_cache_entriesr  rE  r  rL   r  r  r  r  r  r  rE   r  r  r?  r  rQ   caching_precompiler   r:   sort_keyr  DisableTorchFunctionbuild_guardsr  r   r'  r  rn  compile_check_fnr   rk  rl  skip_guards_checkr/  r  r  get_guard_fail_reason_helperr7   r>  rW  r   r$   r   r5   increment_toplevelrB  guards_staterD  r   r  serialize_guardsrS   r  strict_precompilebypass_packager   r  
format_excr  _loggingtrace_structuredclear)r   r  r  r   r   r  rE  r  r  strict_errorr   existing_diff_guard_sourcessorted_guardsr  rn  rd  filter_resultsr<  reasonsr   r  r  r  s   `                    @@r   r   CheckFunctionManager.__init__{  s@    )5$$$;= B+N 	$ 7C  ,,, !1
 7CL22 	& 3=,;E<'<FL($8!MQMQ/BCCKKST ==22.Q3P4 v|@ XX**, *.):):!/ *& "1JWX-,U<-X" >*c-.@@@@CNCCCCC*3M*B!*BhanUVFWE*B  !
 &*%6%6+ / &7 &"G "/D!!'-HA -T .5-D-D*t112-4-D-D* ---l6I6I%%++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\G!!00/Ax8'224::4@ 1 sJ   %P0*P%
?AP0P*P*"2P0?!Q %P00
P?SA:SS)r  r  r  r  r  r  r  r  ztuple[LiteralString, ...]%UNSUPPORTED_SERIALIZATION_GUARD_TYPESc                  ^^^^ U H  nUR                  5       nUR                  (       a  [        UR                  5      OSnUS;   a1  UR                  (       a  UR	                  U5      n[        U5        Mp  Mr  U[        R                  ;   a,  [        R                  R                  R                  U S35      e[        S U 5       S 5      =n(       d  M  [        R                  R                  R                  U S35      e   UR                  =(       d    Sm[        5       m[        5       mSUUU4S jjn	UR                  5       n
U Hn  n[!        UR"                  [$        5      (       a:  U R&                  (       d   eU R&                  R(                   H  nU	" U5        M     M\  U	" UR"                  5        Mp     UR*                   H  nU	" U5        M     SS jmU
R,                  R/                  5        VVs0 s H  u  pUT;   d  XR0                  ;   d  M  X_M      nnnU
R,                  T   R/                  5        VVs0 s H  u  pXR2                  ;   d  M  X_M     snnUT'   [4        R6                  " U
U
R8                  R/                  5        VVs0 s H  u  pUT;   d  XR:                  ;   d  M  X_M      snnU[        R<                  R?                  [A        U4S jU 5       5      5      [B        RD                  " [F        U
RH                  5      S	S
9n
[K        U
U R&                  S9n[M        X5      $ s  snnf s  snnf s  snnf )Nr   )r  r  z guard cannot be serialized.c              3  R   #    U  H  nU[         R                  ;   d  M  Uv   M     g 7fr   )r  r  )r   r<  s     r   r$  8CheckFunctionManager.serialize_guards.<locals>.<genexpr>g  s(      00VVV A0s   '	'r  c                   > [        U 5      =n(       a0  [        U[        5      (       d   eUT:w  a  TR                  U5        g g [	        U 5      =n(       a)  [        U[        5      (       d   eTR                  U5        g g r   )r+   r  r   r   r,   )rp  r  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                L  ^ [        U [        R                  5      (       a}  SS jm[        U4S jU R                   5       5      nU R
                  R                  5        VVs0 s H  u  p#UT" U5      _M     nnn[        R                  " U R                  /UQ70 UD6$ U $ s  snnf )Nc                ^    [        U [        [        R                  45      (       a  U " 5       $ U $ r   )r  rO   r  r  r  s    r   _refPCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>._ref  s$    !!mW[[%ABB s
Hr   c              3  4   >#    U  H  nT" U5      v   M     g 7fr   r   )r   r  r  s     r   r$  UCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn.<locals>.<genexpr>  s      9&Qa&s   )r  r   r   r   )r  	functoolspartialrM  r   r  r   rn  )r  new_argskvnew_keywordsr  s        @r   normalize_create_fnBCheckFunctionManager.serialize_guards.<locals>.normalize_create_fn  s    !Y..//
 ! 9!&& 9978zz7G7G7IJ7Itq47
7IJ ((K(KlKKH  Ks   "B c           	   3  r   >#    U  H,  n[         R                  " US S T" UR                  5      S9v   M.     g 7f)N)obj_weakrefguarded_class_weakrefr  )r  r  r  )r   rd  r  s     r   r$  r    s<       "/  ''$(.2"5eoo"F	 "/s   47T)r  r   _guardsr  r  )r  rE  )rp  r>   r   r   )r  Callable[..., None]r   r   )'r  r  rM  r  r  r2  r  r  r?  r  rS   r  next%name_of_builtins_dict_key_in_fglobalsr   dump_guards_stater  r  rw   rE  r8  r  r   r   r  r  r  r  r  r  r  	GuardsSetrL   r<  tree_mapr  r  r   r  )r   r  r   r  rd  r  r  r1  failedr  output_graph_guards_staterp  r  r  global_scope_stater  r	  r  r
  r  s                   @@@@r   r  %CheckFunctionManager.serialize_guardsO  s+    #E--/J>C>O>O%(9(9":UW <<((!++e,C*3/ )
 2XXXmm''44!l">?   0
    mm''44h:; 3 #: *OO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$   7L4L4?L:L:M 2M c                <  ^ [        5       nX'l        S mSU4S jjn[        UU R                  UU R                  UR
                  UR                  UU UU R                  US9n	S	S jn
[        R                  " X5      m[        R                  =(       a    [        S5      nU Hw  nU(       d\  UR                  5       (       aG  SUR                  ;  a7  SUR                  ;  a'  [        R                  (       d  SUR                  ;  a  Mf  UR!                  U	5        My     X4$ )
Nc                   > U R                   nU[        R                  L a  U R                  $ T(       d   eT" 5       nUc   eUR	                  U R                  5      $ r   )guard_sourcer=   CONSTANTr  r  )rp  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                0    U " 5       nU(       a  S Ul         g g r   )r  )weak_br  s     r   cleanup_builder:CheckFunctionManager.build_guards.<locals>.cleanup_builder  s    A r   r  r   r   r  )rp  r>   r   r   )r2  zweakref.ref[GuardBuilder]r   r   )r   r   r  r  r  r  r   r  r  r  rQ   r  rE   rP  r  r  r  )r   r   r  r  r  r  r  rn  r  r  r3  guard_on_nn_modulesrd  r/  s                @r   r  !CheckFunctionManager.build_guards  s     ,-+F(		2 KK  $$%%!%!:!:+
	 KK9	$55 
//;
 #E'2244 #%**4$EJJ655

9RLL! # %%r   c                	  ^^^ UR                   nUS/-  n[        R                  S5        / m/ m/ mU R                  R                  R                  [        [        R                  " 5       5      5        S U l	         S       SUUU4S jjjn[        5       nUR                   HA  nUR                   H.  nX;  d  M
  U" XR                  S5        UR                  U5        M0     MC     UR                  n	S n
S n[!        U	5      S:  a.  [#        UR$                  U	SSR'                  U	5      -   S-   /S 5        [(        R*                  (       aD  UR,                  (       a3  [/        [0        [3        UR,                  6 5      u  pUR5                  X5        U R6                  (       a  U R6                  R8                  O/ nU GH`  n[;        U[<        5      (       al  UR>                  nUR@                  nURB                   S	URB                   3n[E        URG                  U5      URG                  U5      U/S 5        U" US S5        M  [;        U[H        5      (       a  URJ                   Vs/ s H  nURG                  U5      PM     nnURL                   Vs/ s H  nURG                  U5      PM     nnS
SR'                  S URJ                   5       5       SSR'                  S URL                   5       5       S3n[O        UUU/S 5        U" US S5        GMU  [Q        SU 35      e   URR                   H)  nUR                   H  nU" XR                  S5        M     M+     T(       a"  [T        RV                  RY                  SU4S jS9  [Z        R\                  c   [Z        R^                  " 5       R`                  nO[c        U Rd                  SS 5      nU
UUU Rf                  S.[h        E[k        5       EnU R                  Rm                  5         SURn                  S   0n[!        T5      S:X  d   eUU R                  l8        X@R                  l9        U R                  Ru                  5         TU R                  l;        UU R                  l<        X0R                  l=        S U R                  l>        S U R                  l?        XR                  l@        g s  snf s  snf )Nz**___kwargs_ignoredzGUARDS:c                P  >^ ^ [        T T5      n[        R                  SU5        TR                  U U4S j5        [        R                  [        R                  5      (       a  SnSnTbz  TR                  (       a,  SSR                  TR                  R                  5       5       3nTR                  (       a,  SSR                  TR                  R                  5       5       3n[        R                  ST UU5        U(       d#  TR                  T 5        TR                  U5        g g )Nr  c                   > T T(       a?  TR                   (       a.  [        R                  " TR                   R                  5       5      OS T(       a3  TR                  (       a"  [        R                  " TR                  5      S.$ S S.$ )N)r   r  r  )r  rD   from_tracebackr  r  )r  rd  s   r   r  NCheckFunctionManager.compile_check_fn.<locals>.add_code_part.<locals>.<lambda>.  sc    % !U[[ #11%++2E2E2GH! !U%5%5 #11%2B2BC "r   r  z
Stack:
z
User stack:
zGuard: %s%s%s)r  rk  rl  r  verbose_guards_logisEnabledForloggingDEBUGr  ri  formatr  )	r  rd  log_onlyr  maybe_stackmaybe_user_stackr   structured_guard_fnsr   s	   ``    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   TrP   zcheck_no_aliasing(rk  rl  r  zcheck_overlapping(overlapping=[c              3  8   #    U  H  oR                   v   M     g 7fr   rt  r   rr  s     r   r$  8CheckFunctionManager.compile_check_fn.<locals>.<genexpr>  s     /Z@Y1@Y   z], non_overlapping=[c              3  8   #    U  H  oR                   v   M     g 7fr   rt  rH  s     r   r$  rI    s     3bDaqFFDarJ  z])zUnknown GuardEnvExpr: dynamo_guardsc                 <   > T V s/ s H	  o " 5       PM     sn $ s  sn f r   r   )r  rD  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   r   )r  r   rd  Guard | NonerA  r   r   r   )Ar  rk  rl  rn  r   attach_compile_idr   r7   r>  r  r   r   rU  rd  r   r  r   r   r  ri  rQ   r  r  r  r  r(  ru  r  aotautograd_guardsr  r9   input_source_ainput_source_br  r    r<  r?   overlapping_sourcesnon_overlapping_sourcesr!   rG  r  r?  r  r  rR   initial_global_stateGlobalStateGuardr  rH  r  r  rJ   r  r  r  r   r   r  r   r   r   r   r   r   )r   r  
guards_outr   largsrE  seengclr   r  check_tensors_fncheck_tensors_verbose_fnaliasing_code_partsaliasing_verbose_code_partsrU  rd  source_ar  r  rr  overlapping_guard_managersnon_overlapping_guard_managerscheck_global_stater   rt  r   rD  r   s                            @@@r   r  %CheckFunctionManager.compile_check_fn  s      '((# 
CE 	111134	

 *.& CH)	=)	=#/)	=;?)	=)	= )	=V u<<C# "$		48HHTN &   $+#C#C #' '(1, -99(%		2J(KKcQR	" 6633?Bc7>>?@< 88#
 594E4ED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(@%7262Y2Y	

 
  !
 	##% #W]]3%78 :!###*6'"'<<>0B-*>'+8( *.&)-&8P5K.2s   !SS
c                |   [        U S5      (       a  [        U R                  [        5      (       d  U R                  R                  =nbq  U R                  R
                  =nbW  [        U[        5      (       d   e[        U[        5      (       d   eSU S3n[        U5      nUR                  X%5        XPl        g g g g g )Nrn  zCache line invalidated because z got deallocated)	r  r  rn  r  r   r   r   r   
invalidate)r   obj_strr   r   r  deleted_guard_managers         r   rj  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                ,    [        U5      U R                  ;  a`  [        R                  " U5      U R                  [        U5      '   [        R                  " U[
        R                  " U R                  US95        [        U5      $ ! [         a     Nf = f)zadd a weakref, return the id)rk  )	r  r  r  r  r  r  r  rj  r0  )r   r1  rk  s      r   r  CheckFunctionManager.id_ref  sw    
	#wdnn, +2++c*:r#w'  **4??GL
 #w  		s   A9B 
BBc                f    [        U5      U R                  ;   a  U R                  [        U5         $ g)zFLookup the _weakrefs created in id_ref function for ID_MATCH'd objectsN)r  r  )r   r1  s     r   r  $CheckFunctionManager.lookup_weakrefs  s(    c7dnn$>>"S'**r   )r  r  r  r  rn  r  r  r  rE  r  r  r  )NNNNNFF)r  r  r  r   r   CacheEntry | Noner   "Callable[[GuardFail], None] | Noner  r  rE  r  r  r  r  r   r  r   r   r   )r  r  r   list[Guard]r  r   r   r  r   )r   rt  r  r  r  r  r  r   r  r   r  r  r   z(tuple[GuardBuilder, GuardManagerWrapper])r  r  r\  rt  r   rs  r   r   )rk  r   r   r   )r1  r1  rk  r   r   rB  )r1  r1  r   zweakref.ref[object] | None)r   r   r   r   r   r  r   r  r  r  rj  r  r  r   r   r   r   r  r  z  sj   
 *.<@266:!"G!G! (G! '	G!
 :G!G! 0G! 4G! G! G! 
G!R	H)+D 	z:z: #z: (	z:
 
z:H A&"A& &5A& 	A&
 -A& A&A& 
2A&FHQHQ  HQ :	HQ
 
HQT7&r   r  c                V  ^	 SSK Jn  [        5       m	 T	R                  U 5        SU	4S jjnU" 5       nU  H]  nU" U5      u  peUR                  U5        UR                  SU S35        UR                  5          UR                  S5        S S S 5        M_     U" 5       nUR                  S5        UR                  5          UR                  U5        UR                  S	5        S S S 5        U" 5       nUR                  S
U S35        UR                  5          UR                  U5        UR                  S5        S S S 5        UR                  5       UR                  5       4$ ! [         a	    SS jn GNFf = f! , (       d  f       GMQ  = f! , (       d  f       N= f! , (       d  f       Nh= f)Nr   r@   c                &   > TR                  U 5      $ r   )r  )r  csepasss    r   r  %build_guard_function.<locals>.replace  s    ??4((r   c                
    / U 4$ r   r   )r  s    r   r  rx    s    t8Or   zif not (z):zreturn Falsezdef guard(L):zreturn Truezdef ___make_guard_fn(zreturn guardr  )
torch._inductor.utilsrA   r  r  RecursionErrorr~  r   rv  splicer  )
r   closure_argsrA   r  
guard_bodyr  r  rd  make_guard_fnrw  s
            @r   rj  rj    sc   4oG
j!	)  !Jg&xvR01   0 ! 	  E	OOO$	Z & 
 #$M3L>DE				U#/ 
   -"8"8":::?  	 !  
 
 	s5   E  8E6>#F	#F E32E36
F		
F
F(c                 h    [         R                  R                  R                  R	                  S5      $ )Nr   r?  r  	_internal	log_stateis_artifact_enabledr   r   r   is_recompiles_enabledr  -  s#    >>##--AA,OOr   c                 h    [         R                  R                  R                  R	                  S5      $ )Nr   r  r   r   r   is_recompiles_verbose_enabledr  1  s$    >>##--AABVWWr   c                Z   ^ U  Vs/ s H  n[        U5      PM     snmSU4S jjnU$ s  snf )Nc                    > [        5       n [        U 5      [        T5      :w  a  g[        TU 5       H  u  pU[        U5      Ld  M    g   grO  )r   r   r(  rO  )	cur_stackr_  moderE  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   r   r  )initial_stackr  r  rE  s      @r   r  r  6  s/     ,,mT!Wm,E
 +* -s   (Scopec                   U R                   c   e[        U R                   5      n[        R                  " [        5      nU R
                   H/  nXBS'   [        [        XBU5      5      nX5   R                  U5        M1     U Vs/ s H  n[        X6   5      S:  d  M  X6    PM     nnSR                  U5      nSU 3/$ s  snf )N__compile_source__rP   rk  zDuplicate tensors found: )r   r1  r  r  r  r   r  evalr  r   ri  )	rn  r  r   ids_to_sourceru  	tensor_idr#  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   B=	B=c                4    SSK nSnUR                  USU 5      $ )z
Replace occurrences of L[...] with just the inner content.
Handles both single and double quotes.

This is to generate user friendly recompilation messages.
r   NzL\[\s*['\"](.*?)['\"]\s*\]z\1)resub)rr  r  patterns      r   r  r  `  s     +G66'5!$$r   c           	     p   U b  [        U 5      S:X  a  g/ nU  H  nUR                  nUR                  nUR                  nUR                  (       a  UR                  R                  5       OSnUR                  SU SU SU 35        U(       d  Mw  UR                  SU 35        M     SR                  U5      $ )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   r  z  File "z", line z, in     r  )r   r  r  r  r   stripr  ri  )r  linesframer  r  r  source_lines          r   format_user_stack_tracer  m  s     S_1E>>zz,1JJejj&&(Bxz&tfEF;LL4}-.  99Ur   c                   U R                   c   eU R                  c   eXR                   S   S.nUR                  U R                  5        / nSnU R                  (       a  U R                  R                  nSn/ nU R                  U5      n	Sn
U	R                  (       dR  U	R                  n[        U5      S:X  a  SUS   ;   a  S	nOUn/ nU	R                  (       a  [        U	R                  5      n
O,Xc:w  a  S
nUR                  U5        OSnUR                  U5        U(       a  [        X5      nOU H  n[        U R                   5      nXS'   [        5           [        XU5      n SSS5        [%        W[&        5      (       a	  U(       d  Un[%        U[(        5      (       d  Mr  UR                  U5        [#        5       (       a  M    O   [        U5      S:X  a  U SUS    3nOU S3SR+                  U5      -   nU
(       a  USU
 3-  n[-        U5      $ ! [          a    [#        5       (       a   SSS5        GM  e f = f! , (       d  f       N= f)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  rP   zDuplicate tensor foundr   Ta  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  rc  z; z
User stack trace:
)r   r   r  r   r  r  resultr   r   r  r  r  r  r1  rN   r  r  r  r  r   r   ri  r  )rn  f_locals
compile_idr  r  r  cache_entry_backendno_tensor_aliasing_check_failedr   guard_debug_infouser_stack_strr  rg  r   fail_reason
reason_strs                   r   r  r    sK    %%111%%111!;!;C!@AE	LL++,G  +77??&+#$&$228<N
 ""-@@ !"a''+=a+@@26/,%'" &&45E5P5PQN		'N 	 	v2 	 	v&C
 'D : :;L15-./1"&t5"AK 2 +t,,["+s++{+466' '. 7|q"|2gaj\2
"|2&7);;
-n-=>>
Z((/ ! 466  21 	 21s*   H>HH;-H>9H;;H>>
I	c                x   [        U [        5      (       a  U SU R                   3$ [        XX45      nU(       a  U$ [        [
        U      R                  U5         U R                  b+  U R                  [        U=(       d    S[
        U   5      5        U$ ! [         a    [        R                  S5         U$ f = f)Nrc  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   r  r  r  )rn  r   r  r  r  skip_loggingr  s          r   get_guard_fail_reasonr    s     -!;<<R A ABCC-J =&'..z:
&&2''*8(8-:MN   
d	
 
s   8B B98B9c                  ^
 / m
U ba  [        U R                  U R                  UR                  U R                  UU5      nU(       a  T
R                  U5        U R                  n U b  Ma  UR                  nU(       a  T
$ [        5       =(       d
    [        5       nU(       d  [        R                  (       Ga	  [        5       (       a"  SR                  S [        T
5       5       5      nO&[        R                  " SR                  T
5      S5      nSU 3nSUR                    SUR"                   SUR$                   S[        R                  " US	5       3n	U(       a:  [        5       (       a  [&        R)                  U	5        O[*        R)                  U	5        [        R                  (       a  [,        R.                  " U	5      e[0        R2                  R5                  S
S U
4S jS9  T
$ )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  b   #    U  H%  u  pS U S3[         R                  " US5      -   v   M'     g7f)zguard z failures:
- N)rV  rv  )r   r<  r  s      r   r$  :get_and_maybe_log_recompilation_reasons.<locals>.<genexpr>3  s2      #!3IA <(8??64+HH!3s   -/r  r  z-triggered by the following guard failure(s):
zRecompiling function z in :r  artifactc                     SSS.$ )Nrecompile_reasonsrC  )r  encodingr   r   r   r   r  9get_and_maybe_log_recompilation_reasons.<locals>.<lambda>J  s    '
r   c                 0   > [        T 5      S:X  a  T S   $ T $ )NrP   r   r  )r  s   r   r  r  N  s    W):71:GGr   )metadata_fnr  )r  rn  r   r  r  r  r!  r  r  r  rQ   error_on_recompileri  r  rV  rv  r  co_filenameco_firstlinenorecompiles_verbose_logrl  recompiles_logrS   RecompileErrorr?  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-/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                   U n[        5       nU b:  UR                  U R                  R                  5       5        U R                  n U b  M:  Un U b;  X R                  l        U R                  R                  5         U R                  n U b  M;  U$ r   )rL   r  rn  r  r!  r   r  )r   first_cache_entryacc_diff_guard_sourcess      r   r  r  T  s     $
 /9l

!%%%%@@B	
 "&&	 
! $K

!7M!!4!!==?!&& 
! "!r   c                   [        SUR                   SUR                   SUR                   35        [        SSR	                  U R
                  5      -   S-   5        [        SSR	                  U R                  5      5        [        U 5        SU0U R                  EnU R                   H  n [        X`R                  U5        M     g !   [        SU 35         M2  = f)	NzERROR RUNNING GUARDS  r  zlambda rk  z and
  r  zMalformed guard:
)
printr  r  r  ri  r   r   r   r  r   )rn  r   r  r   lastr  rd  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   -CCc              #  j   #    [        5       nU  H  nX!;  d  M
  Uv   UR                  U5        M!     g 7fr   )r   r   )seqr^  r  s      r   uniquer    s+     5D=GHHQK s   33c                8   U(       a  X:w  a  [        U5      n[        U 5      n[        U5      (       d  [        U 5      (       a0  [        R                  " U R                   SUR                   S35      eX#:X  a#  [
        R                  " [        R                  US9$ g )Nz is aliasing zC. This is not supported. Please do a clone for corresponding input.)r  )	r/   r.   rS   UnsafeScriptObjectErrorr  r  r  r  r  )
obj_sourcedupe_source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                   SSK Jn  UR                  5       R                  nUR                  (       a  g[
        R                  [        R                  5      =(       d#    [        R                  [        R                  5      nUR                  R                  nU H@  n[        U[        5      (       d   e[        UR                  5      (       a  M6  U" XdU S-   S9  MB     g)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
r   )TracingContextNrP   )collect_debug_stackr  )torch._guardsr  r  guards_contextskip_installrk  r=  r>  r?  r<  rL  r   r  r:   r1   r  )r  r   r  r  r  r   rd  s          r   install_guardr    s     -#'')88N""$11 8		(	(	7  
&
&
*
*C%''''$U%=%=>>EJ	 r   r  z"dict[str, GuardCheckSpec | object]GUARD_VALUE_DISPATCHr  rX  z9GuardBuilder methods missing guard_check_spec decorator: rk  z[. Use @register_guard_check_spec, @skip_guard_check_spec, or @unsupported_guard_check_spec.)r   r  r   r   r   rB  )r  r   r   r  )r   zset[str])r   r  )r   r  r   r   )r  r   rd  rS  r   r   r   )r   zstr | list[str]rd  rS  r  r  r   r  )rp  Source | Noner   r  )r  r   r   z
int | None)r  r  r   list[int | None])r  r  r  r   r  r  r  r  r  rO  r  r   r   r   )r"  r  r#  r   r   rB  )rp  r   r   r   r   r   )r1  r   r   r
   )r  r   r   r   )rp  z-DictGetItemSource | DictSubclassGetItemSourcerG  r   rH  r   r?  r   r@  r;  r   r   )rd  r:   r   r   )r   r  r   r  )rq  r  r   tuple[Any, ...])rd  r   r  r   r   r  )r  r   rf  r  r   r   )rd  r   r  r   r   r   )r  r   rf  r   r   r   )r  r   r   r   )r   ztuple[type, ...])rd  r:   r  r  r   r   )r$  r   r  r  r   r  )r   r  r}  r   r   ztuple[str, str]r  )r  z'list[torch.overrides.TorchFunctionMode]r   zCallable[[], bool])rn  r   r  r  r   r  )rr  r   r   r   )r  ztraceback.StackSummary | Noner   r   )
rn  r   r  r  r  zCompileId | Noner  zCallable | Noner   r   r   )rn  r   r   r  r  r  r  r8   r  r   r  r   r   r   )
r   rr  r  r   r  r   r  r   r   r  )r   rr  r   r  )rn  r   r   r  r  r  r   rB  r  r   r   r   )r  zSequence[T]r   zGenerator[T, None, None])r  r>   r  r  r   zfunctools.partial[Any] | None)r   r:   r  rB  r   r   (D  r  
__future__r   r  r  r  r  r  r  r  r  r  rQ  r>  r  pickler  rV  r  rE  r  r  
contextlibr   r  r   r   typingr   r	   r
   r   typing_extensionsr   r   r   r   r?  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/   r0   r1   r2   r3   r4   torch._dynamo.utilsr5   r6   r  r7   r8   r9   r:   r;   r<   r=   r>   r?   rz  rA   torch._library.opaque_objectrB   rC   torch._loggingrD   torch._utils_internalrE   %torch.fx.experimental.symbolic_shapesrF   rG   rH   rI   rJ   torch.utilsrK   r<  torch.utils._ordered_setrL   torch.utils._tracebackrM   rN   torch.utils.weakrO   r  rQ   rR   rS   
eval_framerT   rp  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   r   r   collections.abcr   r   r   rO  r  r  numpyr  ModuleNotFoundErrorr   r   r   r  r   torch._Cr   rD  r   r   r  r   r   	getLoggerr   r  r  getArtifactLoggerrk  r  r  r<  rK  r   r   r   r  cacher  r  r  r  r  r  r~  r  r  r  r  r  r   r$  r)  r2  r4  r  r7  rM  rR  rT  r  r;  r   r\  r1  r  rb  ri  rm  rp  ru  ry  r{  r  r  r  r  r  r  r  r  r  r  r  rP  r   r  r  Picklerr  r  r  r  rj  r  r  r  r1  r   r  r  r  r  r  r  r  r  r  r  r  r  dirrH  r  r  isupperr  rQ  _methodr   r  	signature
parameters_paramsr  MISSING_GUARD_SPECSrG  ri  )r  r  r  r  r  s   00000r   <module>r     s7  " # 
        	     
      %    ; ; 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&&:: %6 "&  	<,'K
  	
  " 	*31. d#  $*9*(* * 	*
 )* *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&2/422&
%-0h)&h)h) !h)
 h) 	h)d &
   	   	H B"BB 	B
 B BJ""""600
0  0 	0
 0 
0. % &!!%2!"!H /0 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 
"	  

C99()
* +D	E  m`  	BD`<	sH   \' 8\6\6>\<\<8\<5\<\<\<4\<'\32\3