ó
    Eñiwê  ã                   ó¨  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJ	r	J
r
  SSKJr  SSKJrJrJ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  SS	KJrJrJrJr  SS
KJ r   SSK!J"r"J#r#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.J/r/J0r0J1r1J2r2J3r3J4r4  SSK5J6r6  \(       a  SSK7J8r8  SSK9J:r:  SSK;J<r<  \Rz                  R}                  \?S5      r@S\A\\4   S\A\\4   S\BSS4S jrCS\D\   S\D\   SS4S jrE " S S5      rF\RŽ                  SSS\	S    4S! j5       rH\RŽ                  SSS\	S    4S" j5       rI\RŽ                  SSS\	S    4S# j5       rJg)$aÛ  
Side effect tracking and management for TorchDynamo's compilation system.

This module provides infrastructure for tracking and managing side effects that occur
during symbolic execution, including:

- Tracking mutations to objects, attributes, and variables
- Managing context changes (cell variables, global namespace modifications)
- Handling aliasing and object identity preservation
- Managing stack frame state and local variable changes
- Tracking function calls with side effects

Key classes:
- SideEffects: Main container for tracking all side effects during execution
- MutableSideEffects: Specialization for mutable object tracking
- AttributeMutation/ValueMutation: Track specific types of mutations
- Various specialized side effect classes for different scenarios

The side effect system ensures that mutations performed during symbolic execution
are properly replayed during runtime, maintaining the correctness of compiled code
while enabling optimizations where safe.
é    N)Ú	GeneratorÚMutableMapping)ÚCellType)ÚAnyÚOptionalÚTYPE_CHECKING©ÚAutogradFunctionContextVariableé   )ÚconfigÚgraph_break_hintsÚutilsÚ	variables)Úbytecode_from_templateÚcreate_call_functionÚcreate_call_methodÚcreate_instruction)Ú	PyCodegen)Úcollapse_resume_framesÚget_stack_above_dynamoÚunimplemented)ÚGlobalSourceÚLocalCellSourceÚSourceÚTempLocalSource)Úis_frozen_dataclassÚnn_module_newÚ
object_new)ÚAttributeMutationÚAttributeMutationExistingÚAttributeMutationNewÚis_side_effect_safeÚValueMutationExistingÚValueMutationNewÚVariableTracker)ÚFrozenDataClassVariable)ÚOutputGraph)ÚInstructionTranslatorBase)ÚListVariableÚside_effectsÚ	dict_fromÚdict_toÚ	mro_indexÚreturnc                 ó¬   • [        U5      R                  U   nUR                  U5        U R                  5        H  u  pEUR	                  XU5        M     g ©N)ÚtypeÚ__mro__ÚclearÚitemsÚ__setitem__)r+   r,   r-   Ú
dict_classÚkÚvs         ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dynamo/side_effects.pyÚ_manual_dict_setitemr:   G   sI   € ô �g“×&Ñ& yÑ1€JØ×Ñ�WÔØ—‘Ö!‰ˆØ×Ñ˜w¨1Ö-ò "ó    Ú	list_fromÚlist_toc                 óX   • [         R                  U5        [         R                  X5        g r0   )Úlistr3   Úextend)r<   r=   s     r9   Ú_manual_list_updaterA   T   s   € Ü‡J�JˆwÔÜ‡K�K�Õ#r;   c                   óD  ^ • \ rS rSr% Sr\\\4   \S'   \\\\	\4   4   \S'   \
\   \S'   \\\
\R                     4   \S'         S_SS	S\\\\4      S\\\\\	\4   4      S\\\
\R                     4   S-  S\\
\      S
\\
\\\
\   4         S\\\\S\S\	4   4      SS4U 4S jjjrS\SS4S jrS\SS4S jrS\SS4S jrS\S\4S jrSS S\\	   4S jrS`S jrS\S\4S jrS\S\4S jrS\4S jrS\4S jrS\4S jrS\S\4S jrS\S \	S!\SS4S" jr   SaS\S \	S#\S$\S\4
S% jjr!S&\S!\SS4S' jr"S&\S\4S( jr#S)\S \	S\4S* jr$S)\S \	S!\SS4S+ jr%\&S,\'S\4S- j5       r(S\S\4S. jr)S\S\4S/ jr*S\S \	S\4S0 jr+S\S\4S1 jr,\-4S\S2\S3\'S\4S4 jjr.\.r/S\S2\S\4S5 jr0S6\1S-  S7\S8\S9\\	\4   S\4
S: jr2S7\'S\'4S; jr3S<\S=\S>\
\   S\4S? jr4S<\S=\S>\
\   S\4S@ jr5S\4SA jr6SB\\1   SC\7SD\S\4SE jr8SB\1S\S\4SF jr9SG\SH\
\   SS4SI jr:    SbSJ jr;ScSK jr<S\SS4SL jr=S\4SM jr>S\
\   4SN jr?SO\@SS4SP jrASQSSR\SSSS \	SS4
ST jrBSU\SS4SV jrCSO\@SS4SW jrDSdSX jrES\S\	4SY jrF SeSO\@SZ\SS4S[ jjrGS\4S\ jrHSfS] jrIS^rJU =rK$ )gÚSideEffectséY   a0  
Maintain records of mutations and provide methods to apply them during code generation.

Handles tracking and applying side effects during PyTorch Dynamo compilation,
maintaining Python semantics by managing mutations, attribute modifications,
and other side effects that occur during program execution.

Key responsibilities:
- Tracks mutations to Python objects, lists, and dictionaries that need to be
applied after an FX graph is run.
- Manages attribute modifications and deletions
- Handles tensor hooks and backward pass state
- Tracks cell variable mutations and global variable changes
- Ensures correct ordering and application of side effects after graph execution

This ensures that optimized code behaves identically to the original Python code with
respect to object mutations and other side effects.
Úid_to_variableÚstore_attr_mutationsÚ	keepaliveÚmutation_user_stacksNÚoutput_graphr'   Úsave_for_backwardÚtensor_hookszvariables.TensorVariablez!variables.RemovableHandleVariabler.   c                 óR  >• [         TU ]  5         [        R                  " U5      U l        U=(       d    0 U l        U=(       d    0 U l        U=(       d    0 U l        U=(       d    / U l        U=(       d    / U l	        U=(       d    0 U l
        SU l        S U l        [        5       U l        g )NF)ÚsuperÚ__init__ÚweakrefÚrefÚoutput_graph_weakrefrE   rF   rH   rG   rJ   rK   Ú_has_existing_dict_mutationÚca_final_callbacks_varÚsetÚ"ignore_mutation_on_these_variables)	ÚselfrI   rE   rF   rH   rG   rJ   rK   Ú	__class__s	           €r9   rN   ÚSideEffects.__init__s   s�   ø€ ô2 	‰ÑÔÜ$+§K¢K°Ó$=ˆÔ!Ø,×2°ˆÔØ$8×$>¸BˆÔ!Ø$8×$>¸BˆÔ!Ø"Ÿ bˆŒØ!2×!8°bˆÔØ(×.¨BˆÔð ,1ˆÔ(ð ?CˆÔ#ô ILËˆÕ/r;   Úvarc                 ó:   • U R                   R                  U5        g)z€Mutations to this variable will be executed but not not tracked,
typically used for temporary mutations that are later restored.N)rU   Úadd©rV   rY   s     r9   Úignore_mutations_onÚSideEffects.ignore_mutations_on¤   s   € ð 	×/Ñ/×3Ñ3°CÕ8r;   c                 óZ   • XR                   ;   a  U R                   R                  U5        gg)zQRemove a variable from the skip mutation set, restoring normal mutation tracking.N)rU   Úremover\   s     r9   Ústop_ignoring_mutations_onÚ&SideEffects.stop_ignoring_mutations_on©   s'   € à×9Ñ9Ó9Ø×3Ñ3×:Ñ:¸3Õ?ð :r;   Úkeyc                 óò   • [         R                  S:X  a  gXR                  ;  a  / U R                  U'   U R                  U   R                  [        R
                  R                  R                  5       5        g)z?Capture the current user stack from the instruction translator.ÚsilentN)r   Úside_effect_replay_policyrH   ÚappendÚtorchÚ_guardsÚTracingContextÚextract_stack)rV   rc   s     r9   Ú_capture_user_stackÚSideEffects._capture_user_stack®   s^   € ä×+Ñ+¨xÓ7ØØ×/Ñ/Ó/Ø-/ˆD×%Ñ% cÑ*Ø×!Ñ! #Ñ&×-Ñ-Ü�M‰M×(Ñ(×6Ñ6Ó8õ	
r;   Úotherc                 ó"  • [        U[        5      (       d   eU R                  UR                  :H  =(       aY    U R                  UR                  :H  =(       a9    U R                  UR                  :H  =(       a    U R
                  UR
                  :H  $ r0   )Ú
isinstancerC   rE   rF   rJ   rK   )rV   rn   s     r9   Ú__eq__ÚSideEffects.__eq__¸   s}   € Ü˜%¤×-Ñ-Ð-Ð-ð ×Ñ 5×#7Ñ#7Ñ7÷ 8Ø×)Ñ)¨U×-GÑ-GÑG÷8à×&Ñ&¨%×*AÑ*AÑA÷8ð ×!Ñ! U×%7Ñ%7Ñ7ð		
r;   c                 óà  • U R                   UR                   :w  aB  U R                   R                  5       nUR                   R                  5       nX#:w  a  SU SU 3$ gU R                  UR                  :w  aB  U R                  R                  5       nUR                  R                  5       nXE:w  a  SU SU 3$ gU R                  UR                  :w  a  gU R                  UR                  :w  a  gg )Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffrJ   rK   )rE   ÚkeysrF   rJ   rK   )rV   rn   Úsk_itvÚok_itvÚsk_samÚok_sams         r9   ÚdiffÚSideEffects.diffÂ   så   € Ø×Ñ %×"6Ñ"6Ó6Ø×(Ñ(×-Ñ-Ó/ˆFØ×)Ñ)×.Ñ.Ó0ˆFØÓØ.¨v¨h°d¸6¸(ÐCÐCð 2Ø×&Ñ&¨%×*DÑ*DÓDØ×.Ñ.×3Ñ3Ó5ˆFØ×/Ñ/×4Ñ4Ó6ˆFØÓØ4°V°H¸DÀÀÐIÐIØ7Ø×#Ñ# u×'>Ñ'>Ó>Ø&Ø×Ñ %×"4Ñ"4Ó4Ø!àr;   c                 óX  • U R                  5       nUc   eU R                  U[        U R                  5      U R                  R                  5        VVs0 s H  u  p#U[        U5      _M     snnU R                  [        U R                  5      U R                  U R                  S9$ s  snnf )zCreate a shallow copy)rI   rE   rF   rH   rG   rJ   rK   )rQ   rW   ÚdictrE   rF   r4   rH   r?   rG   rJ   rK   )rV   rP   r7   r8   s       r9   ÚcloneÚSideEffects.cloneØ   s    € à×'Ñ'Ó)ˆØ‰ÐˆØ�~‰~ØÜ × 3Ñ 3Ó4à'+×'@Ñ'@×'FÑ'FÔ'Hô"Ú'H™t˜q�”4˜“7’
Ñ'Hò"ð "&×!:Ñ!:Ü˜4Ÿ>™>Ó*Ø"×4Ñ4Ø×*Ñ*ð ð 

ð 
	
ùó"s   ÁB&Úitemc                 ó2   • [        U5      U R                  ;   $ r0   )ÚidrE   ©rV   r   s     r9   Ú__contains__ÚSideEffects.__contains__è   s   € Ü�$‹x˜4×.Ñ.Ñ.Ð.r;   c                 ó2   • U R                   [        U5         $ r0   )rE   r�   r‚   s     r9   Ú__getitem__ÚSideEffects.__getitem__ë   s   € Ø×"Ñ"¤2 d£8Ñ,Ð,r;   c                 óš   • U R                  5       n[        U=(       a*    UR                  R                  R                  R
                  5      $ r0   )rQ   ÚboolÚ
current_txÚoutputÚcurrent_tracerÚ,unsafe_allow_externally_visible_side_effects©rV   rI   s     r9   Ú9should_allow_externally_visible_side_effects_in_subtracerÚESideEffects.should_allow_externally_visible_side_effects_in_subtracerî   sA   € Ø×0Ñ0Ó2ˆÜØ÷ kØ×'Ñ'×.Ñ.×=Ñ=×jÑjó
ð 	
r;   c                 óš   • U R                  5       n[        U=(       a*    UR                  R                  R                  R
                  5      $ r0   )rQ   r‰   rŠ   r‹   rŒ   Úallow_side_effects_in_hoprŽ   s     r9   Ú should_allow_side_effects_in_hopÚ,SideEffects.should_allow_side_effects_in_hopõ   sA   € Ø×0Ñ0Ó2ˆÜØ÷ XØ×'Ñ'×.Ñ.×=Ñ=×WÑWó
ð 	
r;   c                 óš   • U R                  5       n[        U=(       a*    UR                  R                  R                  R
                  5      $ r0   )rQ   r‰   rŠ   r‹   rŒ   Úis_reconstructing_generatorrŽ   s     r9   r–   Ú'SideEffects.is_reconstructing_generatorü   sA   € Ø×0Ñ0Ó2ˆäØ÷ ZØ×'Ñ'×.Ñ.×=Ñ=×YÑYó
ð 	
r;   c                 óf  • SSK Jn  [        X5      (       a  gU R                  5       (       a  gU R	                  5       (       a  gU R                  5       (       a   [        SSU 3SS/[        R                  QS9  UR                  c   e[        UR                  5      (       d  [        S	S
U 3SS/S9  g)Nr   r	   Tz'Generator reconstruction with mutationszmutating object: z—Cannot reconstruct a generator with variable mutations. Dynamo needs to fully exhaust the generator, which may cause unintended variable modifications.z$Remove mutations from the generator.©Úgb_typeÚcontextÚexplanationÚhintszHOP: Unsafe side effectzAttempted to mutate zHMutating a variable from outside the scope of this HOP is not supported.aw  If the HOP is activation checkpointing (torch.utils.checkpoint.checkpoint), this points to a side effect in forward method. Eager activation checkpointing replays that side-effect while recomputing the forward in the backward. If you are ok with side-effect not replayed in the backward, try setting `torch._dynamo.config.skip_fwd_side_effects_in_bwd_under_checkpoint = True`F)Útorch._dynamo.variables.miscr
   rp   r�   r“   r–   r   r   ÚFUNDAMENTALÚmutation_typer"   )rV   r   r
   s      r9   Úcheck_allowed_side_effectÚ%SideEffects.check_allowed_side_effect  sÉ   € ÝPô �d×<Ñ<ØØ×IÑI×KÑKØØ×0Ñ0×2Ñ2ØØ×+Ñ+×-Ñ-ô ØAØ+¨D¨6Ð2ð5ð ;ðä&×2Ñ2ðò
ð ×!Ñ!Ñ-Ð-Ð-Ü" 4×#5Ñ#5×6Ñ6ÜØ1Ø.¨t¨fÐ5Øfðxðò	
ð r;   ÚnameÚvaluec                 óÖ   • U R                  U5      (       d   eU R                  U5        XR                  ;  a  0 U R                  U'   X0R                  U   U'   U R                  U5        g r0   )Úis_attribute_mutationr¡   rF   rl   )rV   r   r£   r¤   s       r9   Ú
store_attrÚSideEffects.store_attr,  sf   € ð ×)Ñ)¨$×/Ñ/Ð/Ð/Ø×&Ñ& tÔ,Ø×0Ñ0Ó0Ø.0ˆD×%Ñ% dÑ+Ø05×!Ñ! $Ñ'¨Ñ-à× Ñ  Õ&r;   Ú
deleted_okÚcheckc                 óø   • U(       a  U R                  U5      (       d   eU R                  U   U   nU(       dA  [        U[        R                  5      (       a"  [        SSU SU 3S/ [        R                  QS9  U$ )Nz$Attempted to read a deleted variablezitem: z, name: Ú r™   )r¦   rF   rp   r   ÚDeletedVariabler   r   Ú
USER_ERROR)rV   r   r£   r©   rª   Úresults         r9   Ú	load_attrÚSideEffects.load_attr7  s|   € ö Ø×-Ñ-¨d×3Ñ3Ð3Ð3Ø×*Ñ*¨4Ñ0°Ñ6ˆÞœj¨´×1JÑ1J×KÑKÜØ>Ø    h¨t¨fÐ5ØØ5Ô)×4Ñ4Ð5ò	ð ˆr;   Úcellvarc                 ó  • UR                  5       (       a"  [        SSU SU 3S/ [        R                  QS9  [	        U[
        R                  5      (       d   e[	        U[
        R                  5      (       d   eU R                  USU5        g )NzWrite to immutable cellz	cellvar: z	, value: zFDynamo doesn't support writing to immutable/sourceless cell variables.r™   Úcell_contents)	Úis_immutabler   r   Ú	DIFFICULTrp   r   ÚCellVariabler%   r§   )rV   r²   r¤   s      r9   Ú
store_cellÚSideEffects.store_cellJ  s‚   € Ø×Ñ×!Ñ!ÜØ1Ø# G 9¨I°e°WÐ=ØdØ4Ô)×3Ñ3Ð4ò	ô ˜'¤9×#9Ñ#9×:Ñ:Ð:Ð:Ü˜%¤×!:Ñ!:×;Ñ;Ð;Ð;Ø�‰˜ °%Õ8r;   c                 ó  • [        U[        R                  5      (       d   eU R                  US5      (       a  U R	                  USSS9$ UR
                  (       a  UR
                  $ [        S[        U5      S/ [        R                  QS9  g )Nr´   F)rª   zRead uninitialized cellzBAttempted to read a cell variable that has not been populated yet.r™   )
rp   r   r·   Úhas_pending_mutation_of_attrr°   Úpre_existing_contentsr   Ústrr   r®   )rV   r²   s     r9   Ú	load_cellÚSideEffects.load_cellV  s|   € Ü˜'¤9×#9Ñ#9×:Ñ:Ð:Ð:Ø×,Ñ,¨W°o×FÑFØ—>‘> '¨?À%�>ÐHÐHØ×(×(Ø×0Ñ0Ð0ÜØ-Ü˜“LØ\Ø1Ô%×0Ñ0Ð1ó		
r;   Úgvarc                 óf   • [        U[        R                  5      (       d   eU R                  X5      $ r0   )rp   r   r%   r°   )rV   rÀ   r£   s      r9   Úload_globalÚSideEffects.load_globalc  s*   € Ü˜$¤	× 9Ñ 9×:Ñ:Ð:Ð:Ø�~‰~˜dÓ)Ð)r;   c                 ó¬   • [        U[        R                  5      (       d   e[        U[        R                  5      (       d   eU R                  XU5        g r0   )rp   r   r%   r§   )rV   rÀ   r£   r¤   s       r9   Ústore_globalÚSideEffects.store_globalg  sD   € ô ˜$¤	× 9Ñ 9×:Ñ:Ð:Ð:Ü˜%¤×!:Ñ!:×;Ñ;Ð;Ð;Ø�‰˜ EÕ*r;   Úclsc           
      óF  • [         R                  " U SS 5      [        R                  [        R                  [
        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  4	;   $ )NÚ__getattribute__)ÚinspectÚgetattr_staticÚobjectrÉ   r|   rT   Ú	frozensetÚintr½   r?   ÚtupleÚBaseException)rÇ   s    r9   Ú"cls_supports_mutation_side_effectsÚ.SideEffects.cls_supports_mutation_side_effectsn  sv   € ä×%Ò% cÐ+=¸tÓDÜ×#Ñ#Ü×!Ñ!Ü× Ñ Ü×&Ñ&Ü× Ñ Ü× Ñ Ü×!Ñ!Ü×"Ñ"Ü×*Ñ*ð
I
ñ 

ð 
	
r;   c                 ó6   • [        UR                  [        5      $ r0   )rp   r    r   r‚   s     r9   r¦   Ú!SideEffects.is_attribute_mutation|  s   € Ü˜$×,Ñ,Ô.?Ó@Ð@r;   c                 óz   • U R                  U5      =(       a$    [        U R                  R                  U5      5      $ r0   )r¦   r‰   rF   Úgetr‚   s     r9   Úhas_pending_mutationÚ SideEffects.has_pending_mutation  s5   € Ø×)Ñ)¨$Ó/÷ 
´DØ×%Ñ%×)Ñ)¨$Ó/ó5
ð 	
r;   c                 ón   • U R                  U5      =(       a    X R                  R                  US5      ;   $ )N© )r¦   rF   rÖ   )rV   r   r£   s      r9   r»   Ú(SideEffects.has_pending_mutation_of_attr„  s6   € Ø×)Ñ)Øó
÷ >à×/Ñ/×3Ñ3°D¸"Ó=Ñ=ð	>r;   c                 ó–  • UR                  5       (       a  g[        UR                  [        [        45      (       a  g[        U[
        R                  5      (       a&  XR                  ;   =(       d    UR                  U 5      $ U R                  U5      (       a  XR                  ;   $ UR                  c   eUR                  R                  $ )NFT)rµ   rp   r    r!   r$   r   ÚUserDefinedObjectVariablerF   Úis_underlying_vt_modifiedr¦   Úis_modifiedr‚   s     r9   rß   ÚSideEffects.is_modified‰  s°   € Ø×Ñ×ÑØÜ�d×(Ñ(Ô+?ÔAQÐ*R×SÑSØä�dœI×?Ñ?×@Ñ@à×4Ñ4Ñ4÷ ¸×8VÑ8VØó9ð ð ×%Ñ% d×+Ñ+Ø×4Ñ4Ñ4Ð4Ø×!Ñ!Ñ-Ð-Ð-Ø×!Ñ!×-Ñ-Ð-r;   ÚvariableÚmutation_type_clsc           
      ó0  • [        U5      U R                  ;   a>  [        U SUR                   SU R                  [        U5         R                   S35      eU" 5       Ul        X R                  [        U5      '   U R
                  R                  U5        U$ )z7Start tracking an existing or new variable for mutationz“ is already tracked for mutation. This could be because you are not using VariableBuilder to construct the variable tracker. Source of new object: z'. Source of previously tracked object: Ú.)r�   rE   ÚAssertionErrorÚsourcer    rG   rg   )rV   r   rá   râ   s       r9   Ú
_track_objÚSideEffects._track_objš  s˜   € ô ˆd‹8�t×*Ñ*Ó*Ü Ø�*ð )ð *2¯©Ð(9ð :8Ø8<×8KÑ8KÌBÈtËHÑ8U×8\Ñ8\Ð7]Ð]^ð	`óð ñ "3Ó!4ˆÔØ(0×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr;   c                 ó,   • U R                  UU[        S9$ )N)râ   )rç   r    )rV   r   rá   s      r9   Útrack_object_existingÚ!SideEffects.track_object_existing±  s#   € ð �‰ØØÜ7ð ð 
ð 	
r;   Ú
cls_sourceÚuser_clsÚvariable_clsÚoptionsc                 ó�  • U[         R                  R                  R                  L a<  [        R
                  " SS9   [         R                  R                  5       nS S S 5        O[        U5      nU" W4S[        U5      0UD6nX`R                  [        U5      '   U R                  R                  U5        U$ ! , (       d  f       NV= f)NT)Úrecordr    )rh   ÚautogradÚfunctionÚFunctionCtxÚwarningsÚcatch_warningsÚFunctionr   r!   rE   r�   rG   rg   )rV   rì   rí   rî   rï   Úobjrá   s          r9   Útrack_object_newÚSideEffects.track_object_new¾  s¨   € ð ”u—~‘~×.Ñ.×:Ñ:Ò:Ü×(Ò(°Ó5Ü—n‘n×-Ñ-Ó/�÷ 6Ð5ô ˜XÓ&ˆCÙØñ
ä.¨zÓ:ð
ð ñ
ˆð
 (0×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆ÷ 6Õ5ús   ¼B7Â7
Cc                 óT  • SSK Jn  SSKJn  SSKJn  SSKJn  [        R                  n[        X5      (       a  UR                  U5      (       a  UnGO´[        US5      (       a"  [        US5      (       a  U" U5      (       d  UnGO�[        U[        R                  R                  5      (       a  [        R                   nGOF[        U["        [$        R&                  45      (       a  [        R(                  nGO[        U[*        [,        45      (       a  [        R.                  nOã[        U[0        5      (       a  [        R2                  nO½[        U[4        5      (       a  [        R6                  nO—[        U[8        5      (       a  [        R:                  nOq[=        U5      (       a  [>        nOZ[        U[@        5      (       a  [        RB                  nO4[        RD                  RG                  U5      (       a  [        RD                  n[        U[        R                  5      (       d   eU$ )	Nr   )ÚTorchFunctionModer   )ÚGenericContextWrappingVariable)ÚTorchFunctionModeVariable)Úis_forbidden_context_managerÚ	__enter__Ú__exit__)$Útorch.overridesrü   Úvariables.ctx_managerrý   Úvariables.torch_functionrþ   Úvariables.user_definedrÿ   r   rÝ   Ú
issubclassÚ is_supported_torch_function_modeÚhasattrrh   ÚnnÚModuleÚUnspecializedNNModuleVariabler|   ÚcollectionsÚOrderedDictÚUserDefinedDictVariablerT   rÍ   ÚUserDefinedSetVariablerÏ   ÚUserDefinedTupleVariabler?   ÚUserDefinedListVariabler   ÚMutableMappingVariabler   r&   rÐ   Ú"UserDefinedExceptionObjectVariableÚInspectVariableÚis_matching_class)rV   rí   rü   rý   rþ   rÿ   rî   s          r9   Úget_variable_clsÚSideEffects.get_variable_clsÓ  s�  € Ý5åIÝGÝHô ×/Ñ/ð 	ô Ø÷
ñ 
à'×HÑHÈ×RÑRØ4ŠLä�H˜k×*Ñ*Ü˜ *×-Ñ-Ù0°×:Ñ:à9ŠLÜ˜¤%§(¡(§/¡/×2Ñ2Ü$×BÑBŠLÜ˜¤4¬×)@Ñ)@Ð"A×BÑBÜ$×<Ñ<ŠLÜ˜¤3¬	Ð"2×3Ñ3Ü$×;Ñ;‰LÜ˜¤%×(Ñ(Ü$×=Ñ=‰LÜ˜¤$×'Ñ'Ü$×<Ñ<‰LÜ˜¤.×1Ñ1Ü$×;Ñ;‰LÜ  ×*Ñ*Ü2‰LÜ˜¤-×0Ñ0Ü$×GÑG‰LÜ×&Ñ&×8Ñ8¸×BÑBÜ$×4Ñ4ˆLÜ˜,¬	×(KÑ(K×LÑLÐLÐLØÐr;   Úbase_cls_vtÚcls_vtÚ	init_argsc                 óØ  • UR                   n[        U[        R                  R                  5      (       a  [        U5      nU$ [        U[        R                  5      (       a  UR                  nO:[        U[        R                  5      (       a  UR                   nO[        SU 35      e[        R                  R                  UR                  5      (       d   eUR                  U5      nU$ )NzUnexpected base_cls_vt )r¤   r  rh   r	  r
  r   rp   r   ÚBuiltinVariableÚfnÚUserDefinedClassVariableÚRuntimeErrorÚis_supported_new_methodÚ__new__)rV   r  r  r  rí   rø   Úbase_clss          r9   Úget_example_valueÚSideEffects.get_example_valueü  sÅ   € ð —<‘<ˆÜ�h¤§¡§¡×0Ñ0ä Ó)ˆCð( ˆ
ô% ˜+¤y×'@Ñ'@×AÑAØ&Ÿ>™>‘Ü˜K¬×)KÑ)K×LÑLØ&×,Ñ,‘ä"Ð%<¸[¸MÐ#JÓKÐKä×5Ñ5×MÑMØ× Ñ ÷ñ ð ð ð ×"Ñ" 8Ó,ˆCØˆ
r;   c           	      ó  • UR                   nUR                  nU R                  U5      nU R                  XU5      nU" UUR                   UU[	        U5      S9nX€R
                  [        U5      '   U R                  R                  U5        U$ )a  
Creates a UserDefinedObjectVariable (or its subclass) variable tracker
and mark it for attribute mutation tracking.

Also records the variable trackers to call __new__ method on
reconstruction. Roughly, the reconstruction looks like this
    base_cls_vt.__new__(user_cls, *init_args)
)rì   r  r  r    )	ræ   r¤   r  r#  r!   rE   r�   rG   rg   )	rV   r  r  r  rì   rí   rî   rø   rá   s	            r9   Útrack_new_user_defined_objectÚ)SideEffects.track_new_user_defined_object  s…   € ð —]‘]ˆ
Ø—<‘<ˆØ×,Ñ,¨XÓ6ˆØ×$Ñ$ [¸)ÓDˆáØØ—}‘}Ø#ØÜ.¨zÓ:ñ
ˆð (0×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆr;   c                 ó¶   • [        5       n[        R                  " [        5       S9nX R                  [        U5      '   U R                  R                  U5        U$ )N©r    )rÌ   r   r·   r!   rE   r�   rG   rg   )rV   rø   rá   s      r9   Útrack_cell_newÚSideEffects.track_cell_new9  sL   € ô ‹hˆÜ×)Ò)Ü.Ó0ñ
ˆð (0×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆr;   ræ   ÚcellÚcontentsc                 ó°   • [         R                  " Uc  S O	[        5       UUS9nX@R                  [	        U5      '   U R
                  R                  U5        U$ )N)r    r¼   ræ   )r   r·   r    rE   r�   rG   rg   )rV   ræ   r,  r-  rá   s        r9   Útrack_cell_existingÚSideEffects.track_cell_existingD  sT   € ô ×)Ò)ð #)¡.™$Ô6OÓ6QØ"*Øñ
ˆð )1×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr;   c                 ó¤   • [         R                  " [        5       US9nX0R                  [	        U5      '   U R
                  R                  U5        U$ )N)r    ræ   )r   ÚNewGlobalVariabler    rE   r�   rG   rg   )rV   ræ   r   rá   s       r9   Útrack_global_existingÚ!SideEffects.track_global_existingR  sF   € Ü×.Ò.Ü3Ó5Øñ
ˆð )1×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr;   ÚctxÚargsc                 ó~   • [        U[        R                  5      (       d   eU R                  R	                  X45        g r0   )rp   r   r
   rJ   rg   )rV   r5  r6  s      r9   Útrack_save_for_backwardÚ#SideEffects.track_save_for_backward[  s3   € ô ˜#œy×HÑH×IÑIÐIÐIØ×Ñ×%Ñ% s kÕ2r;   c                 ó  • UR                    Hp  n[        U5      nUR                  U   nX0R                  ;  d  M.  [        U[        R
                  [        R                  45      (       d  M_  U R                  X$5        Mr     g r0   )rG   r�   rE   rp   r   ÚTensorVariableÚSymNodeVariablerê   )rV   rn   Ú
other_itemÚother_idÚother_variables        r9   Ú-track_runahead_tensor_and_symvar_side_effectsÚ9SideEffects.track_runahead_tensor_and_symvar_side_effectsa  si   € ð  Ÿ/œ/ˆJÜ˜*“~ˆHØ"×1Ñ1°(Ñ;ˆNØ×2Ñ2Õ2´zØ¤×!9Ñ!9¼9×;TÑ;TÐ U÷8ó 8ð ×*Ñ*¨:ÖFò *r;   c                 óª  ^ ^	^
^• [        5       m[        5       m	S[        SS 4U	U U
U4S jjm
S[        S[        4U	4S jjnT R                  R	                  5        Vs/ s H&  n[        UR                  [        5      (       a  M$  UPM(     nn/ nUnUbo  UR                  UR                  UR                  /5        UR                  b*  UR                  c   eUR                  UR                  5        UR                  nUb  Mo  [        R                  " T
UUUR                  R                   T R"                  /-   5        @
T R                  R%                  5        VVs0 s H  u  pxU" U5      (       d  M  Xx_M     snnT l        T R&                  R%                  5        VVs0 s H  u  pxU" U5      (       d  M  Xx_M     snnT l        g s  snf s  snnf s  snnf )NrY   r.   c                 ó   >• U T;   a  g TR                  U 5        [        U R                  [        5      (       a  TR                  U 5        U TR                  ;   a%  [
        R                  " TTR                  U    5        g g r0   )r[   rp   r    r!   rF   r%   Úvisit)rY   Úlive_new_objectsrV   rD  Úvisiteds    €€€€r9   rD  Ú0SideEffects.prune_dead_object_new.<locals>.visitt  so   ø€ Ø�g‹~ØØ�K‰K˜Ôä˜#×+Ñ+Ô-A×BÑBØ ×$Ñ$ SÔ)ð �d×/Ñ/Ó/Ü×%Ò%ØØ×-Ñ-¨cÑ2õð 0r;   c                 óN   >• [        U R                  [        5      (       a  U T;   $ g©NT)rp   r    r!   )rY   rE  s    €r9   Úis_liveÚ2SideEffects.prune_dead_object_new.<locals>.is_live„  s&   ø€ Ü˜#×+Ñ+Ô-A×BÑBØÐ.Ñ.Ð.Ør;   )rT   r%   r‰   rE   Úvaluesrp   r    r!   r@   ÚstackÚsymbolic_localsÚparentÚpost_prune_cell_and_freevarsrg   rD  r‹   Úbackward_staterK   r4   rF   )rV   ÚtxrJ  rY   Úpre_existing_varsÚinit_live_varsÚcur_txr7   r8   rE  rD  rF  s   `        @@@r9   Úprune_dead_object_newÚ!SideEffects.prune_dead_object_newo  s´  û€ ä(+«ˆÜ14³Ðð	”ð 	¨4÷ 	ò 	ð 	œð 	¬T÷ 	ð ×*Ñ*×1Ñ1Ô3ó
â3�Ü˜c×/Ñ/Ô1E×F÷ Ù3ð 	ð 
ð ˆà68ˆØÑ Ø×!Ñ! 6§<¡<°×1GÑ1GÐ"HÔIØ�}‰}Ñ(ð ×:Ñ:ÑFÐFÐFØ×%Ñ% f×&IÑ&IÔJØ—]‘]ˆFð Ó ô 	×ÒØàà!Ø—	‘	×(Ñ(Ø×!Ñ!ðñô		
ð ð "×0Ñ0×6Ñ6Ô8ô
Ú8‘T�Q¹GÀA¿J‹DˆAŠDÑ8ò
ˆÔð "×6Ñ6×<Ñ<Ô>ô%
Ú>‘T�QÁ'È!Ç*‹DˆAŠDÑ>ò%
ˆÕ!ùò[
ùóT
ùó%
s$   Á#GÂGÅG	Å1G	ÆGÆ4Gc                 óz  • XR                   ;   a  g U R                  U5        U R                  U5        [        UR                  [
        5      (       a  SUR                  l        UR                  (       aH  [        U[        R                  5      (       a(  [        U[        R                  5      (       d  SU l        g g g g rI  )rU   r¡   rl   rp   r    r#   rß   ræ   r   ÚConstDictVariableÚSetVariablerR   r\   s     r9   ÚmutationÚSideEffects.mutationº  s“   € Ø×9Ñ9Ó9Øà×&Ñ& sÔ+à× Ñ  Ô%ä�c×'Ñ'Ô)>×?Ñ?Ø,0ˆC×ÑÔ)à�J�JÜ˜3¤	× ;Ñ ;×<Ñ<Ü˜s¤I×$9Ñ$9×:Ñ:à/3ˆDÕ,ð ;ð =ð r;   c                 ó   • U R                   $ r0   )rR   ©rV   s    r9   Úhas_existing_dict_mutationÚ&SideEffects.has_existing_dict_mutationË  s   € Ø×/Ñ/Ð/r;   c                 ó�   • U R                   R                  5        Vs/ s H  oR                  U5      (       d  M  UPM     sn$ s  snf r0   )rE   rL  rß   r\   s     r9   Ú_get_modified_varsÚSideEffects._get_modified_varsÎ  s7   € Ø#×2Ñ2×9Ñ9Ô;ÓUÒ;˜×?OÑ?OÐPS×?T—Ñ;ÑUÐUùÒUs
   �AºAÚcgc           	      ód  ^^• U R                  5        GH   m[        TR                  [        5      (       d  TR                  c   eM4  [        T[
        R                  5      (       a˜  TR                  c`  TR                  U4S j5        TR                  [        SS5      5        TR                  T5        [        TR                  T   5      Tl        MÀ  TR                  c  [        TR                  5      Tl        Mé  Më  TR                  5       (       at  [        T[
        R                   R"                  5      (       aH  T" TSS9  TR                  T5        TR%                  5         [        TR                  T   5      Tl        GMq  GMt  [        T[
        R&                  5      (       a  [)        SSS/ S9  GM¢  [        T[
        R*                  5      (       a  SUU4S	 jjnTR                  U5        OTR                  U4S
 j5        TR                  R,                  c   eT" TR                  R,                  5        TR.                   H  nT" U5        M     TR                  [        S[1        TR.                  5      -   S5      5        TR                  T5        [        TR                  T   5      Tl        GM£     U R2                   Hi  u  pET" UR                  5        TR5                  S5        U H  nT" U5        M     TR                  / [7        [1        U5      5      Q[9        S5      P5        Mk     g )Nc                  óD   >• T R                  [        R                  S5      $ )NÚ	make_cell©Úload_import_fromr   Ú__name__©rd  s   €r9   Ú<lambda>Ú3SideEffects.codegen_save_tempvars.<locals>.<lambda>ä  ó   ø€  × 3Ñ 3´E·N±NÀKÔ Pr;   r   F©Úallow_cachez<AutogradFunctionContextVariable escaped Dynamo-traced regionr¬   zAWe cannot reconstruct a torch.autograd.Function's context object.r™   c                  óŠ   >• TR                   c   eT " TR                   5        T R                  T R                  S5      /5        g )Nr!  )r  Úextend_outputÚcreate_load_attr©rd  rY   s   €€r9   Úload_new_methodÚ:SideEffects.codegen_save_tempvars.<locals>.load_new_method  s;   ø€ à"Ÿ™Ñ:Ð:Ð:Ù˜3Ÿ?™?Ô+Ø×(Ñ(¨"×*=Ñ*=¸iÓ*HÐ)IÕJr;   c                  óD   >• T R                  [        R                  S5      $ )Nr   rh  rk  s   €r9   rl  rm    s   ø€  × 3Ñ 3´E·N±NÀLÔ Qr;   r   rJ   ÚPOP_TOP©r.   N)rb  rp   r    r!   ræ   r   r·   Ú
local_nameÚadd_push_nullrr  r   Ú	add_cacher   Útempvarsr   Ú	is_tensorÚtorch_functionÚTensorWithTFOverrideVariableÚ	clear_tosr
   r   rÝ   rì   r  ÚlenrJ   Úload_methodr   r   )rV   rd  ru  Úargr5  r6  rY   s    `    @r9   Úcodegen_save_tempvarsÚ!SideEffects.codegen_save_tempvarsÑ  s–  ù€ ð ×*Ñ*×,ˆCÜ˜c×/Ñ/Ô1E×FÑFØ—z‘zÑ-Ð-Ð-Ùä˜#œy×5Ñ5×6Ñ6ð
 —>‘>Ñ)Ø×$Ñ$ÜPôð ×$Ñ$Ô%9¸!¸UÓ%CÔDØ—L‘L Ô%Ü!0°·±¸SÑ1AÓ!B�C–JØ—Z‘ZÑ'Ü!0°·±Ó!@�C–Jñ (à—‘—‘ô Øœ×1Ñ1×NÑN÷ñ ñ �s¨Ò.Ø—L‘L Ô%ð —L‘L”NÜ!0°·±¸SÑ1AÓ!B�C—Jòô ˜C¤×!JÑ!J×KÑKÜØZØØ cØõ	ô ˜c¤9×#FÑ#F×GÑG÷Kð Kð ×$Ñ$ _Õ5à×$Ñ$ÜQôð ×(Ñ(×3Ñ3Ñ?Ð?Ð?Ù�3×$Ñ$×/Ñ/Ô0ð Ÿ=œ=�CÙ�s–Gñ )ð × Ñ Ô!5°a¼#¸c¿m¹mÓ:LÑ6LÈeÓ!TÔUà—‘˜SÔ!Ü,¨R¯[©[¸Ñ-=Ó>�—
ñW -ðZ ×/Ô/‰IˆCÙˆs�z‰zŒNØ�N‰NÐ.Ô/Û�Ù�3–ñ à×ÑðÜ'¬¨D«	Ó2ðä& yÓ1ðöò 0r;   ÚtensorÚhookÚhandlec                 ó  • UR                  5       (       d   e[        U[        R                  5      (       d   e[        U[        R                  5      (       a  UR                  5       (       d   e[        [        R                  U5      (       d   e[        U R                  R                  5       5      nXPR                  ;   a  US-  nXPR                  ;   a  M  XX44U R                  U'   UR                  (       a   eXSl        g )Nr   )r~  rp   r   r%   ÚRemovableHandleVariableÚ
is_mutabler  rh   ÚTensorr‚  rK   rt   Úidx)rV   r‡  rˆ  r‰  r£   rŽ  s         r9   Úregister_hookÚSideEffects.register_hook1  sÙ   € ð ×Ñ×!Ñ!Ð!Ð!Ü˜$¤	× 9Ñ 9×:Ñ:Ð:Ð:ä�vœy×@Ñ@×AÑAØ×!Ñ!×#Ñ#ð	
ð$ô ”u—|‘| T×*Ñ*Ð*Ð*Ü�$×#Ñ#×(Ñ(Ó*Ó+ˆà×&Ñ&Ó&Ø�1‰HˆCð ×&Ñ&Õ&à"(°Ð!=ˆ×Ñ˜#ÑØ—:—:Ðˆ~Ø�
r;   rŽ  c                 ó   • U R                   U	 g r0   )rK   )rV   rŽ  s     r9   Úremove_hookÚSideEffects.remove_hookG  s   € Ø×Ñ˜cÑ"r;   c                 ó$  ^^^• U R                   R                  5        Ho  u  mnnmTR                  (       d   S5       eSUUU4S jjnTR                  U5        T" U5        TR	                  [        SS5      5        TR                  U5        Mq     g )Nz4Hooks on non input tensors NYI - should not get herec                  óX   >• T " T5        T R                  T R                  T5      /5        g r0   )rr  rs  )rd  r£   r‡  s   €€€r9   Úgen_fnÚ)SideEffects.codegen_hooks.<locals>.gen_fnt  s&   ø€ Ù�6”
Ø× Ñ  "×"5Ñ"5°dÓ";Ð!<Õ=r;   r   Fry  )rK   rL  ræ   r{  rr  r   r|  )rV   rd  rˆ  r‰  r–  r£   r‡  s    `   @@r9   Úcodegen_hooksÚSideEffects.codegen_hooksJ  sˆ   ú€ ð ×Ñ×%Ñ%Ö'ñ
ØØØØðF —=—=ÐXÐ"XÓX�=÷>ñ >ð ×Ñ˜VÔ$ÙˆtŒHØ×ÑÔ1°!°UÓ;Ô<ð �L‰L˜Ö ò] (r;   c                 ó~   • SSK Jn  U R                  c  [        R                  " / U" 5       S9U l        U R                  $ )Nr   )r$   r)  )Úvariables.baser$   rS   r   r)   )rV   r$   s     r9   Úget_ca_final_callbacks_varÚ&SideEffects.get_ca_final_callbacks_var€  s;   € Ý4à×&Ñ&Ñ.Ü*3×*@Ò*@ØÑ"2Ó"4ñ+ˆDÔ'ð ×*Ñ*Ð*r;   c                 óœ  • [         R                  S:w  d   eU R                  R                  U/ 5      nSUR	                  5        3nSnUR
                  b¥  [        UR
                  [        5      (       a  SnOƒ[        U[        R                  5      (       a  UR                  b  SUR                   S3nOF[        U[        R                  R                  5      (       a  SnOSUR
                  R                   S3nU(       aÄ  [        5       n/ n[        [!        5       5      nU Hn  n[#        S	 U 5       5      n	X•;  d  M  UR%                  U	5        [        Xx-   5      n
UR'                  S
R)                  [*        R,                  " U
5      5      5        Mp     SR)                  U5      nU U S[.        R0                  " US5       3nU$ U U S3nU$ )z1Format a side effect log message with user stack.re   zMutating object of type z (no source)z* (source: created in torch.compile region)z
 (source: Ú)z- (source: torch function mode stack mutation)z (source name: c              3   óÆ   #   • U  HW  nUR                   UR                  UR                  UR                  [	        US S5      [	        USS5      [	        USS5      4v •  MY     g7f)ÚcolnoNÚ
end_linenoÚ	end_colno)ÚfilenameÚlinenor£   ÚlineÚgetattr)Ú.0Úfs     r9   Ú	<genexpr>Ú:SideEffects._format_side_effect_message.<locals>.<genexpr>¦  s]   é € ð $ò #˜ð Ÿ
™
ØŸ™ØŸ™ØŸ™Ü  7¨DÓ1Ü  <°Ó6Ü  ;°Ó5õò #ùs   ‚AA!r¬   z
********

z

z    z+ (unable to find user stacks for mutations))r   rf   rH   rÖ   Úpython_type_nameræ   rp   r   r   r·   rz  r  ÚTorchFunctionModeStackVariabler£   rT   r   r   rÏ   r[   rg   ÚjoinÚ	tracebackÚformat_listÚtextwrapÚindent)rV   rY   Ú	locationsÚdescriptionÚsource_infoÚseenÚunique_formatted_stacksÚstack_above_dynamorM  Ústack_tupleÚstack_augmentedÚformatted_linesÚlog_strs                r9   Ú_format_side_effect_messageÚ'SideEffects._format_side_effect_messageŠ  sº  € ä×/Ñ/°8Ó;Ð;Ð;Ø×-Ñ-×1Ñ1°#°rÓ:ˆ	Ø0°×1EÑ1EÓ1GÐ0HÐIˆØ$ˆØ�:‰:Ñ!Ü˜#Ÿ*™*¤o×6Ñ6ØJ‘Ü˜C¤×!7Ñ!7×8Ñ8¸S¿^¹^Ñ=WØ *¨3¯>©>Ð*:¸!Ð<‘ÜØ”Y×-Ñ-×LÑL÷ñ ð N‘ð !0°·
±
·±Ð/@ÀÐB�æä“5ˆDØ13Ð#Ü!7Ô8NÓ8PÓ!QÐÛ"�ô $ñ $ñ #ó$ó �ð Õ*Ø—H‘H˜[Ô)Ü&<Ð=OÑ=WÓ&X�OØ+×2Ñ2ØŸ™¤	× 5Ò 5°oÓ FÓGöñ' #ð, $4×#8Ñ#8Ð9PÓ#QˆOØ$˜ k ]°$´x·²ÀÐX^Ó7_Ð6`ÐaˆGð ˆð �- ˜}Ð,WÐXð ð ˆr;   Úlog_side_effectsc           
      ón  ^ ^^^^^• / mS[         SS 4UU U4S jjn/ nT R                  5        GHÙ  m[        R                  (       d!  [	        TR
                  [        5      (       d  M:  [	        T[        R                  5      (       ax  T" TSS9  T" TR
                  5        TR                  TR                  S 5      TR                  S 5      [        SSS9/5        UR                  [        S	5      /5        U" T5        MÑ  [	        T[        R                  R                  5      (       aÒ  TR                  R!                  5       (       d  [#        S
SSS/S9  T" TR
                  5        TR%                  S5        T" TSS9  UR                  / ['        S5      Q[        S5      P5        T" TR
                  5        TR%                  S5        UR                  / ['        S5      Q[        S5      P5        U" T5        GMÌ  [	        T[        R(                  5      (       aà  TR+                  5       (       aÈ  T" TR
                  5        TR%                  S5        T" TSS9  TR,                  (       a#  T" TR
                  5        TR%                  S5        UR                  / ['        S5      Q[        S5      P5        TR,                  (       a'  UR                  / ['        S5      Q[        S5      P5        U" T5        GMÈ  GMË  [	        T[        R.                  R0                  5      (       Ga	  TR3                  U4S j5        TR5                  SS5        [        R.                  R7                  5       nTR8                  S==   U4-  ss'   TR;                  [        SUS95        TR3                  U4S j5        TR=                  TR>                  5        TR;                  [        S[A        TR>                  5      S95        TR5                  SS5        TR;                  [        S5      5        U" T5        GMþ  [	        T[        RB                  5      (       ao  TRD                  bb  TT RF                  ;   aO  T RI                  T5      nT" U5        UR                  TRK                  TRD                  5      /5        U" T5        GM‰  GMŒ  T RM                  T5      (       Gaû  [	        T[        RN                  5      (       Gaj  T RQ                  TRR                  5      (       GaI  0 n[T        RV                  RX                   H)  nTRZ                  R\                  R_                  5       Xu'   M+      [a        TRb                  5      Rd                  Rg                  [h        Rj                  5      nTR                  [        SUS9[        SUS   S9/5        T" TR
                  5        TR                  [        SUS   S9/5        T" TRR                  SS9  TR                  [        SUS   S9/5        [q        [T        US9n	UR                  / U	Q[        S5      P5        U" TRR                  5        GO$[	        T[        Rr                  5      (       Ga  T RQ                  TRt                  5      (       aä  0 n[v        RV                  RX                   H)  nTRZ                  R\                  R_                  5       Xu'   M+     T" TR
                  5        TR                  [        SUS    S9/5        T" TRt                  SS9  TR                  [        SUS!   S9/5        [q        [v        US9n
UR                  / U
Q[        S5      P5        U" TRt                  5        Sn[y        T RF                  R{                  T0 5      R}                  5       5       GHþ  u  p\[	        T[        R~                  5      (       al  TRZ                  R\                  R�                  U5        T" U5        [	        TR
                  [‚        5      (       d   eUR                  [        S"US9/5        S#nM‘  [	        U[        R„                  5      (       a—  [	        TR†                  [ˆ        5      (       au  [‹        [�        TS$S 5      U5      (       aV  TRZ                  R\                  R�                  U5        T" TR
                  5        UR                  [        S%US9/5        S#nGMA  GMD  GMG  [	        T[        RŽ                  5      (       aŽ  TR‘                  U5      (       ax  TR3                  U4S& j5        T" TR
                  5        T" [        R’                  " U5      5        T" U5        UR                  / [•        S'S5      Q[        S5      P5        S#nGMô  [	        T[        RŽ                  5      (       aš  TR—                  5       (       a…  TR™                  S(S)5        TR%                  S*5        T" TR
                  5        T" [        R’                  " U5      5        T" U5        UR                  / ['        S'5      Q[        S5      P5        S#nGM­  TRZ                  R\                  R�                  U5        T" U5        T" T5        UR                  [        S+US9/5        S#nGM     U(       a  U" T5        G
M›  G
Mž  [	        T[        Rš                  5      (       ap  [�        TRf                  5       HL  nTR3                  U4S, j5        T" TR
                  5        TR5                  SS5        TRŸ                  5         MN     U" T5        GM-  [	        T[        R                   5      (       a|  S3UU4S- jjnTR3                  U5        T" TR£                  TR¤                  R§                  5       5      5        UR                  / [•        SS5      Q[        S5      P5        U" T5        GMÈ  [©        [a        T5      5      e   [y        U5       H  nTR                  U5        M     T(       a>  T(       a6  S.R«                  T5      m[¬        R®                  R±                  S/S0 U4S1 jS29  g g g ! [l         a6    [a        TRb                  5      Rd                  Rg                  [n        5      n GNf = f)4NrY   r.   c                 ó®   >• [         R                  S:w  a@  T(       a8  TR                  U 5      nTR                  U5        [        R                  U5        g g g )Nre   )r   rf   r½  rg   Úside_effects_logÚdebug)rY   Úmsgr¿  rV   Úside_effect_messagess     €€€r9   Ú_maybe_log_side_effectÚBSideEffects.codegen_update_mutated.<locals>._maybe_log_side_effectÇ  sJ   ø€ Ü×/Ñ/°8Ó;Ö@PØ×6Ñ6°sÓ;�Ø$×+Ñ+¨CÔ0ä ×&Ñ& sÕ+ð	 AQÐ;r;   Fro  ÚBUILD_SLICEé   )r„  ÚSTORE_SUBSCRz1Side effect on existing deque with limited maxlenr¬   zThis is not supported.z*Don't use a deque with `maxlen` specified.r™   r@   r   rx  r3   r   Úupdatec                  óD   >• T R                  [        R                  S5      $ )NÚget_torch_function_mode_stackrh  rk  s   €r9   rl  Ú4SideEffects.codegen_update_mutated.<locals>.<lambda>.  ó   ø€ ˜B×/Ñ/ÜŸ™Ð(Gôr;   Úco_varnamesÚ
STORE_FAST)Úargvalc                  óD   >• T R                  [        R                  S5      $ )NÚset_torch_function_mode_stackrh  rk  s   €r9   rl  rÎ  7  rÏ  r;   Ú
BUILD_LISTÚ
LOAD_CONSTr-   r,   r+   )Úvarname_mapr=   r<   ÚSTORE_GLOBALTr¤   ÚDELETE_ATTRc                  óD   >• T R                  [        R                  S5      $ )NÚ object_setattr_ignore_descriptorrh  rk  s   €r9   rl  rÎ  ×  s   ø€  B×$7Ñ$7Ü %§¡Ð0Rô%r;   é   ÚbuiltinsrÌ   Ú__setattr__Ú
STORE_ATTRc                  óD   >• T R                  [        R                  S5      $ )NÚ	iter_nextrh  rk  s   €r9   rl  rÎ  ÿ  rn  r;   c                  óL   >• T " TR                   5        T R                  S5        g )NÚsetstate)ræ   r°   rt  s   €€r9   r–  Ú2SideEffects.codegen_update_mutated.<locals>.gen_fn  s   ø€ Ù�s—z‘z”NØ—L‘L Õ,r;   z,

========================================

Úartifactc                  ó   • SSS.$ )NÚdynamo_side_effectsÚstring)r£   ÚencodingrÚ   rÚ   r;   r9   rl  rÎ  #  s   € Ø1Ø (ò%r;   c                  ó   >• T $ r0   rÚ   )Úcombined_msgs   €r9   rl  rÎ  '  s   ø€ ¡<r;   )Úmetadata_fnÚ
payload_fnry  )Yr%   rb  r   Úreplay_side_effectsrp   ræ   r   r   r)   rr  Úcreate_load_constr   rg   ÚlistsÚDequeVariableÚmaxlenÚis_constant_noner   rƒ  r   rY  Úhas_new_itemsÚshould_reconstruct_allr  r­  r{  Úcall_functionÚget_prev_stack_var_nameÚcode_optionsÚappend_outputÚforeachÚsymbolic_stackr‚  r·   rz  rF   r¾   Úcreate_store_derefr¦   r  rß   Ú_dict_vtr:   Ú__code__rÐ  rR  r‹   Únew_varr1   r¤   r2   Úindexr  r  Ú
ValueErrorr|   r   r  Ú_list_vtrA   ÚreversedrÖ   r4   r2  Úupdate_co_namesr   r­   r    r    r  r§  rÝ   Úshould_skip_descriptor_setterÚConstantVariabler   Úneeds_slow_setattrri  ÚListIteratorVariableÚrangeÚpop_topÚRandomVariableÚ
wrap_stateÚrandomÚgetstaterå   r®  rh   Ú_loggingÚtrace_structured)rV   rd  r¿  rÆ  Úsuffixesr£   Úcontents_varr×  r-   Údict_update_instsÚlist_update_instsÚside_effect_occurredr¤   Ú_r–  Úsuffixrë  rÅ  rY   s   ```             @@@r9   Úcodegen_update_mutatedÚ"SideEffects.codegen_update_mutatedÁ  sè
  ý€ ð +-Ðð	,¬ð 	,¸D÷ 	,ñ 	,ð ˆØ×*Ñ*×,ˆCä×-×-´jØ—
‘
œO÷7ñ 7ñ Ü˜#œy×5Ñ5×6Ñ6á�3 EÒ*Ù�3—:‘:”Ø× Ñ à×,Ñ,¨TÓ2Ø×,Ñ,¨TÓ2Ü*¨=¸aÑ@ðôð —‘Ô!3°NÓ!CÐ DÔEÙ& sÖ+Ü˜C¤§¡×!>Ñ!>×?Ñ?ð —z‘z×2Ñ2×4Ñ4Ü!Ø SØ "Ø$<àHðò	ñ �3—:‘:”Ø—‘˜xÔ(Ù�3 EÒ*Ø—‘ðÜ+¨AÓ.ðä*¨9Ó5ðôñ �3—:‘:”Ø—‘˜wÔ'Ø—‘ðÜ+¨AÓ.ðä*¨9Ó5ðôñ ' s×+ä˜C¤×!<Ñ!<×=Ñ=ð ×$Ñ$×&Ñ&Ù�s—z‘z”NØ—N‘N 8Ô,Ù�s¨Ò.à×1×1Ù˜3Ÿ:™:œØŸ™ wÔ/à—O‘OðÜ/°Ó2ðä.¨yÓ9ðôð ×1×1ð !Ÿ™ðÜ!3°AÓ!6ðä 2°9Ó =ðôñ +¨3×/ò3 'ô6 Ø”Y×-Ñ-×LÑL÷ò ð × Ñ ôôð
 × Ñ   EÔ*Ü ×/Ñ/×GÑGÓI�Ø—‘ Ó.°4°'Ñ9Ó.Ø× Ñ Ô!3°LÈÑ!NÔOØ× Ñ ôôð —
‘
˜3×-Ñ-Ô.Ø× Ñ Ü& |¼¸S×=OÑ=OÓ9PÑQôð × Ñ   EÔ*Ø× Ñ Ô!3°IÓ!>Ô?Ù& s×+ä˜C¤×!7Ñ!7×8Ñ8¸S¿^¹^Ñ=Wð ˜$×3Ñ3Ó3Ø#'§>¡>°#Ó#6�LÙ�|Ô$Ø—O‘O R×%:Ñ%:¸3¿>¹>Ó%JÐ$KÔLÙ*¨3×/ò	 4ð ×+Ñ+¨C×0Ò0ÜØÜ×5Ñ5÷ò ð ×&Ñ& s§|¡|×4Ò4ð #%�KÜ 4× =Ñ =× IÔ I˜Ø,.¯E©E¯L©L×,@Ñ,@Ó,B˜Ó)ñ !JðHÜ$(¨¯©£O×$;Ñ$;×$AÑ$AÜ'×3Ñ3ó%˜	ð ×$Ñ$ä.¨|ÀIÑNÜ.Ø ,°[ÀÑ5Mñðôñ �s—z‘z”NØ×$Ñ$ä.Ø ,°[ÀÑ5Kñðôñ �s—|‘|°Ò7Ø×$Ñ$ä.Ø ,°[ÀÑ5Mñðôô )?Ü,¸+ñ)Ð%ð —O‘OðØ.ðä.¨yÓ9ðôñ +¨3¯<©<Ö8ÜØÜ×5Ñ5÷ò ð ×&Ñ& s§|¡|×4Ñ4ð #%�KÜ 3× <Ñ <× HÔ H˜Ø,.¯E©E¯L©L×,@Ñ,@Ó,B˜Ó)ñ !Iñ �s—z‘z”NØ×$Ñ$ä.Ø ,°[ÀÑ5Kñðôñ �s—|‘|°Ò7Ø×$Ñ$ä.Ø ,°[ÀÑ5Mñðôô )?Ü+¸ñ)Ð%ð —O‘OðØ.ðä.¨yÓ9ðôñ +¨3¯<©<Ô8ð$ (-Ð$Ü#+Ø×-Ñ-×1Ñ1°#°rÓ:×@Ñ@ÓB÷$‘K�Dô " #¤y×'BÑ'B×CÑCØŸ™Ÿ™×4Ñ4°TÔ:Ù˜5œ	Ü)¨#¯*©*´l×CÑCÐCÐCØ Ÿ™Ü/°ÀtÑLÐMôð 04Ò,Ü# E¬9×+DÑ+D×EÑEÜ%Ø×-Ñ-Ô/H÷ñ ä%¤g¨c°7¸DÓ&AÀ4×HÑHØŸE™EŸL™L×8Ñ8¸Ô>Ù˜sŸz™zœNØ$ŸO™OÜ!3°MÈ$Ñ!OÐ Pôð 48Ó0ò Iòô $ØœY×@Ñ@÷ñ à×;Ñ;¸D×AÑAØ×(Ñ(ôôñ
 ˜3Ÿ:™:œÙœ9×5Ò5°dÓ;Ô<Ù˜5œ	Ø Ÿ™ðÜ!5°a¸Ó!?ðä 2°9Ó =ðôð 04Ó,ä" 3¬	×(KÑ(K×LÑLØ×2Ñ2×4Ñ4ð ×+Ñ+¨J¸ÔAØŸ™ }Ô5Ù˜3Ÿ:™:œÙœ9×5Ò5°dÓ;Ô<Ù˜5œ	Ø Ÿ™ØSÔ0°Ó3ÐSÔ5GÈ	Ó5RÐSôð 04Ó,àŸ™Ÿ™×4Ñ4°TÔ:Ù˜5œ	Ù˜3œØ Ÿ™Ô);¸LÐQUÑ)VÐ(WÔXØ/3Ó,ñu$öx (Ù*¨3×/ò (ä˜C¤×!?Ñ!?×@Ñ@Ü˜sŸy™yÖ)�AØ×$Ñ$ÜPôñ �s—z‘z”NØ×$Ñ$ Q¨Ô.Ø—J‘J–Lñ *ñ ' s×+Ü˜C¤×!9Ñ!9×:Ñ:÷-ð -ð × Ñ  Ô(Ù�3—>‘> #§*¡*×"5Ñ"5Ó"7Ó8Ô9à—‘ðÜ-¨a°Ó7ðä*¨9Ó5ðôñ ' s×+ä$¤T¨#£YÓ/Ð/ñO
 -ôT
 ˜xÖ(ˆFØ×Ñ˜VÖ$ñ )ö Ö 4ØM×RÑRØ$óˆLô �N‰N×+Ñ+Øñô 0ð ,ò ð	 !5ÐøôC &ó HÜ$(¨¯©£O×$;Ñ$;×$AÑ$AÄ$Ó$G›	ðHús   Õ<q4ñ4<r4ò3r4c                 óì   • [        [        U R                  U R                  R	                  5       5      5      =(       d2    U R
                  =(       d    U R                  =(       d    U R
                  (       + $ r0   )ÚanyÚmaprß   rE   rL  rK   rJ   r^  s    r9   Úis_emptyÚSideEffects.is_empty*  s\   € ä”�D×$Ñ$ d×&9Ñ&9×&@Ñ&@Ó&BÓCÓD÷ !Ø× Ñ ÷!à×%Ñ%÷!ð × Ñ ô	
ð 	
r;   c                 ól   • U R                   R                  5         U R                  R                  5         g r0   )rG   r3   rE   r^  s    r9   r3   ÚSideEffects.clear2  s$   € Ø�‰×ÑÔØ×Ñ×!Ñ!Õ#r;   )
rR   rS   rE   rU   rG   rH   rQ   rJ   rF   rK   )NNNNNN)r.   rC   )FF)rn   rC   r.   N)rR  r(   r.   N)r.   zvariables.ListVariable)Fry  )Lrj  Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r|   rÎ   r%   Ú__annotations__r½   r?   r   r¯  ÚStackSummaryr   rÏ   r
   rN   r]   ra   rl   rÌ   r‰   rq   ry   r}   rƒ   r†   r�   r“   r–   r¡   r§   r°   r¸   r¾   rÂ   rÅ   Ústaticmethodr1   rÑ   r¦   r×   r»   rß   r#   rç   Útrack_mutablerê   r   rù   r  r#  r&  r*  r   r/  r3  r8  r@  rV  r[  r_  rb  r   r…  r�  r’  r˜  rœ  r½  r  r  r3   Ú__static_attributes__Ú__classcell__)rW   s   @r9   rC   rC   Y   s  ø‡ ñð& ˜˜oÐ-Ñ.Ó.Ø˜°°S¸/Ð5IÑ0JÐJÑKÓKØ�C‰yÓà˜°°Y×5KÑ5KÑ0LÐLÑMÓMð
 @Dð àØ)-ð ð ñ//Nà#ð/Nð !  c¨?Ð&:Ñ!;Ñ<ð/Nð 'Ø� $ s¨OÐ';Ñ"<Ð<Ñ=ñ
ð	/Nð # ?°D¸×9OÑ9OÑ4PÐ#PÑQØ
ñð/Nð ˜D ™IÑ&ð/Nð $Ø�Ð6¸¸_Ñ8MÐMÑNÑOñ
ð/Nð ØØØØ.Ø#Ø7Øðñðññ

ð/Nð0 
÷1/Nð /Nðb9 ð 9¸4ô 9ð
@¨oð @À$ô @ð

 ð 
¸4ô 
ð
˜Fð 
 tô 
ð˜-ð ¨H°S©Mô ô,
ð / ð /¨ô /ð- ð -¨ô -ð
È4ô 
ð
°$ô 
ð
¨Tô 
ð&¨oð &À$ô &ðP	'Ø#ð	'Ø+.ð	'Ø7Fð	'à	ô	'ð !Øñàðð ðð ð	ð
 ðð 
õð&
9 /ð 
9¸/ð 
9Èdô 
9ð
 ð 
°_ô 
ð* ð *°sð *¸ô *ð+Ø#ð+Ø+.ð+Ø7Fð+à	ô+ð ð
°ð 
¸ó 
ó ð
ðA¨/ð A¸dô Að
¨ð 
¸Tô 
ð
>°ð >Èð >ÐPTô >ð
. ð .°Dô .ð* #8ñ	àðð "ðð  ð	ð
 
õð* €Mð
àð
ð "ð
ð 
ô	
ðà˜T‘Mðð ðð ð	ð
 �c˜3�h‘ðð 
ôð*'¨ð '°$ô 'ðRà$ðð  ðð ˜Ñ(ð	ð
 
ôð>à$ðð  ðð ˜Ñ(ð	ð
 
ôð<	à	ô	ðØ˜vÑ&ðØ.6ðØBQðà	ôð¨Fð ¸#ð À/ô ð3Ø"ð3Ø*.¨Ñ*?ð3à	ô3ðGØ"ðGà	ôGôI
ðV4˜Oð 4°ô 4ð"0¨Dô 0ðV D¨Ñ$9ô Vð^¨	ð ^°dô ^ð@à*ðð ðð 4ð	ð
 ðð 
ôð,#˜sð # tô #ð4! 	ð 4!¨dô 4!ôl+ð5¨ð 5À3ô 5ðp 7<ñgØðgØ/3ðgà	õgðR
˜$ô 
÷$ò $r;   rC   rR  r(   )NNNc              #   óþ   #   • U R                   R                  R                  n SU R                   R                  l        Sv •  XR                   R                  l        g! XR                   R                  l        f = f7f)zÐContext manager to temporarily allow side effects with extra outputs.

This is used for special cases (like FSDP functions) that need to perform
side effects even when the general policy is to disallow them.
TN)r‹   rŒ   r’   ©rR  Úorig_vals     r9   r’   r’   7  sW   é € ð �y‰y×'Ñ'×AÑA€HðFØ=Aˆ�	‰	× Ñ Ô:Ûà=E�	‰	× Ñ Õ:ø¸X�	‰	× Ñ Õ:üó   ‚!A=¤A ÁA=ÁA:Á:A=c              #   ó4  #   • U R                   R                  R                  n SU R                   R                  l        SU R                   R                  l        S v •  XR                   R                  l        g ! XR                   R                  l        f = f7frI  )r‹   rŒ   r�   Ú+traced_with_externally_visible_side_effectsr,  s     r9   Ú2allow_externally_visible_side_effects_in_subtracerr1  H  sj   é € ð �y‰y×'Ñ'×TÑT€HðYØPTˆ�	‰	× Ñ ÔMØOSˆ�	‰	× Ñ ÔLÛàPX�	‰	× Ñ ÕMøÐPX�	‰	× Ñ ÕMüs   ‚!B¤:A9 ÁBÁ9BÂBc              #   óþ   #   • U R                   R                  R                  n SU R                   R                  l        S v •  XR                   R                  l        g ! XR                   R                  l        f = f7frI  )r‹   rŒ   r–   r,  s     r9   Ú"disallow_side_effects_in_generatorr3  U  sW   é € ð �y‰y×'Ñ'×CÑC€HðHØ?Cˆ�	‰	× Ñ Ô<Ûà?G�	‰	× Ñ Õ<ø¸x�	‰	× Ñ Õ<ür.  )Kr$  r  Ú
contextlibrÊ   r±  r¯  rõ   rO   Úcollections.abcr   r   Útypesr   Útypingr   r   r   rh   Útorch.nnrž   r
   r¬   r   r   r   r   Úbytecode_transformationr   r   r   r   Úcodegenr   Úexcr   r   r   ræ   r   r   r   r   r   r   r   r›  r   r    r!   r"   r#   r$   r%   r  r&   Útorch._dynamo.output_graphr'   Útorch._dynamo.symbolic_convertr(   Útorch._dynamo.variables.listsr)   r  ÚgetArtifactLoggerrj  rÂ  r|   rÎ   r:   r?   rA   rC   Úcontextmanagerr’   r1  r3  rÚ   r;   r9   Ú<module>rA     s˜  ðñó. Û Û Û Û Û Û ß 5Ý ß /Ñ /ã Û Ý Hç 9Ó 9÷ó õ ß NÑ Nß JÓ Jß AÑ A÷÷ ñ õ <ö Ý6ÝHÝ:ð —>‘>×3Ñ3°H¸nÓMÐ ð
.Ø�C˜�H‰~ð
.Ø(,¨S°#¨X©ð
.ØCFð
.à	ô
.ð$ 4¨¡9ð $°t¸C±yð $ÀTô $÷
[$ñ [$ð|& ×ÑðFØ#ðFàÐÑ óFó ðFð  ×Ñð	YØ#ð	YàÐÑ ó	Yó ð	Yð ×ÑðHØ#ðHàÐÑ óHó ñHr;   