Ë
    L²jª ã                   ó¸  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZ ddlmZ ddlmZmZ ddlZddlZddlmZ ddlmZ ddlmZ d	d
lmZmZmZmZ d	dlmZm Z m!Z!m"Z" d	dl#m$Z$ d	dl%m&Z&m'Z'm(Z( d	dl)m*Z*m+Z+m,Z,m-Z-m.Z. d	dlm/Z/m0Z0m1Z1m2Z2 d	dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d	dl;m<Z< erddl=m>Z> ddl?m@Z@ ddlAmBZB ej†                  j‰                  eEd«      ZFdeGeef   deGeef   deHddfd„ZIdeJe   deJe   ddfd„ZK G d„ d«      ZLejš                  d d!de
d"   fd#„«       ZNejš                  d d!de
d"   fd$„«       ZOejš                  d d!de
d"   fd%„«       ZPy)&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ÚTYPE_CHECKING©ÚAutogradFunctionContextVariable)Ú
OrderedSet)Úis_structseq_classé   )Ú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)Ú
AttrSourceÚGlobalSourceÚLocalCellSourceÚSourceÚTempLocalSource)Úis_frozen_dataclassÚis_namedtuple_clsÚ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                 ó¬   — t        |«      j                  |   }|j                  |«       | j                  «       D ]  \  }}|j	                  |||«       Œ y ©N)ÚtypeÚ__mro__ÚclearÚitemsÚ__setitem__)r.   r/   r0   Ú
dict_classÚkÚvs         úY/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/side_effects.pyÚ_manual_dict_setitemr=   J   sR   € ô �g“×&Ñ& yÑ1€JØ×Ñ�WÔØ—‘Ó!ò .‰ˆˆ1Ø×Ñ˜w¨¨1Õ-ñ.ó    Ú	list_fromÚlist_toc                 óZ   — t         j                  |«       t         j                  || «       y r3   )Úlistr6   Úextend)r?   r@   s     r<   Ú_manual_list_updaterD   W   s   € Ü‡J�JˆwÔÜ‡K�K�˜Õ#r>   c                   ó   ‡ — e Zd ZU dZeeef   ed<   eeeeef   f   ed<   e	e
   ed<   eee	ej                     f   ed<   	 	 	 	 	 	 dadddeeef   dz  deeeeef   f   dz  deee	ej                     f   dz  de	e
   dz  d	e	eee	e   f      dz  d
eeededef   f   dz  ddfˆ fd„Zdeddfd„Zdeddfd„Zdeddfd„Zdedefd„Zdd dedz  fd„Zdbd„Zde
defd„Zde
defd„Zdefd„Zdefd„Zdefd„Zdeddfd„Zdedefd„Zded ed!eddfd"„Z	 	 dcded ed#ed$edef
d%„Z d&ed!eddfd'„Z!d&edefd(„Z"d)ed edefd*„Z#d)ed ed!eddfd+„Z$e%d,e&defd-„«       Z'dedefd.„Z(dedefd/„Z)ded edefd0„Z*dedefd1„Z+e,fde
d2ed3e&defd4„Z-e-Z.de
d2edefd5„Z/d6e0dz  d7e
d8e
d9eee
f   def
d:„Z1d7e&de&fd;„Z2d<ed=ed>e	e   de
fd?„Z3d<ed=ed>e	e   defd@„Z4defdA„Z5dBe0dz  dCe6dDedefdE„Z7dBe0de
defdF„Z8dGedHe	e   ddfdI„Z9	 	 	 	 dddJ„Z:dedK„Z;deddfdL„Z<defdM„Z=de	e   fdN„Z>dOe?ddfdP„Z@dQddRedSdd eddf
dT„ZAdUeddfdV„ZBdOe?ddfdW„ZCdfdX„ZDdedefdY„ZEdZe	e   ddfd[„ZF	 dgdOe?d\eddfd]„ZGdhd^„ZHdefd_„ZIdhd`„ZJˆ xZKS )iÚSideEffectsah  
    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.RemovableHandleVariabler1   c                 ó2  •— t         ‰| �  «        t        j                  |«      | _        |xs i | _        |xs i | _        |xs i | _        |xs g | _        |xs g | _	        |xs i | _
        d| _        d | _        t        «       | _        t        «       | _        y )NF)ÚsuperÚ__init__ÚweakrefÚrefÚoutput_graph_weakrefrG   rH   rJ   rI   rL   rM   Ú_has_existing_dict_mutationÚca_final_callbacks_varÚsetÚ"ignore_mutation_on_these_variablesr
   Úmutated_sources)	ÚselfrK   rG   rH   rJ   rI   rL   rM   Ú	__class__s	           €r<   rP   zSideEffects.__init__v   sœ   ø€ ô0 	‰ÑÔÜ$+§K¡K°Ó$=ˆÔ!Ø,Ò2°ˆÔØ$8Ò$>¸BˆÔ!Ø$8Ò$>¸BˆÔ!Ø"š bˆŒØ!2Ò!8°bˆÔØ(Ò.¨BˆÔð ,1ˆÔ(ð <@ˆÔ#ô ILËˆÔ/ô 4>³<ˆÕr>   Úvarc                 ó:   — | j                   j                  |«       y)zˆMutations to this variable will be executed but not not tracked,
        typically used for temporary mutations that are later restored.N)rW   Úadd©rY   r[   s     r<   Úignore_mutations_onzSideEffects.ignore_mutations_on©   s   € ð 	×/Ñ/×3Ñ3°CÕ8r>   c                 óX   — || j                   v r| j                   j                  |«       yy)zQRemove a variable from the skip mutation set, restoring normal mutation tracking.N)rW   Úremover^   s     r<   Ústop_ignoring_mutations_onz&SideEffects.stop_ignoring_mutations_on®   s)   € à�$×9Ñ9Ñ9Ø×3Ñ3×:Ñ:¸3Õ?ð :r>   Úkeyc                 óî   — t         j                  dk(  ry|| j                  vrg | j                  |<   | j                  |   j                  t        j
                  j                  j                  «       «       y)z?Capture the current user stack from the instruction translator.ÚsilentN)r   Úside_effect_replay_policyrJ   ÚappendÚtorchÚ_guardsÚTracingContextÚextract_stack)rY   rc   s     r<   Ú_capture_user_stackzSideEffects._capture_user_stack³   s`   € ä×+Ñ+¨xÒ7ØØ�d×/Ñ/Ñ/Ø-/ˆD×%Ñ% cÑ*Ø×!Ñ! #Ñ&×-Ñ-Ü�M‰M×(Ñ(×6Ñ6Ó8õ	
r>   Úotherc                 óú   — t        |t        «      sJ ‚| j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  S r3   )Ú
isinstancerF   rG   rH   rL   rM   )rY   rm   s     r<   Ú__eq__zSideEffects.__eq__½   sz   € Ü˜%¤Ô-Ð-Ð-ð ×Ñ 5×#7Ñ#7Ñ7ò 8Ø×)Ñ)¨U×-GÑ-GÑGò8à×&Ñ&¨%×*AÑ*AÑAò8ð ×!Ñ! U×%7Ñ%7Ñ7ð		
r>   c                 óØ  — | j                   |j                   k7  rB| j                   j                  «       }|j                   j                  «       }||k7  rd|› d|› �S y| j                  |j                  k7  rB| j                  j                  «       }|j                  j                  «       }||k7  rd|› d|› �S y| j                  |j                  k7  ry| j                  |j                  k7  ryy )Nzid_to_variable keys: z != zid_to_variable: unknown diffzstore_attr_mutations keys: z"store_attr_mutations: unknown diffrL   rM   )rG   ÚkeysrH   rL   rM   )rY   rm   Úsk_itvÚok_itvÚsk_samÚok_sams         r<   Údiffz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  — | j                  «       }|€J ‚| j                  |t        | j                  «      | j                  j                  «       D ��ci c]  \  }}|t        |«      “Œ c}}| j                  t        | j                  «      | j                  | j                  ¬«      S c c}}w )zCreate a shallow copy)rK   rG   rH   rJ   rI   rL   rM   )rS   rZ   ÚdictrG   rH   r7   rJ   rB   rI   rL   rM   )rY   rR   r:   r;   s       r<   ÚclonezSideEffects.cloneÝ   s�   € à×'Ñ'Ó)ˆØˆÐˆØ�~‰~ØÜ × 3Ñ 3Ó4à'+×'@Ñ'@×'FÑ'FÓ'H÷"Ù#˜q !�”4˜“7‘
ó"ð "&×!:Ñ!:Ü˜4Ÿ>™>Ó*Ø"×4Ñ4Ø×*Ñ*ð ó 

ð 
	
ùó"s   ÁB&Úitemc                 ó0   — t        |«      | j                  v S r3   )ÚidrG   ©rY   r{   s     r<   Ú__contains__zSideEffects.__contains__í   s   € Ü�$‹x˜4×.Ñ.Ð.Ð.r>   c                 ó2   — | j                   t        |«         S r3   )rG   r}   r~   s     r<   Ú__getitem__zSideEffects.__getitem__ð   s   € Ø×"Ñ"¤2 d£8Ñ,Ð,r>   c                 ó�   — | j                  «       }t        |xr* |j                  j                  j                  j
                  «      S r3   )rS   ÚboolÚ
current_txÚoutputÚcurrent_tracerÚ,unsafe_allow_externally_visible_side_effects©rY   rK   s     r<   Ú9should_allow_externally_visible_side_effects_in_subtracerzESideEffects.should_allow_externally_visible_side_effects_in_subtraceró   sA   € Ø×0Ñ0Ó2ˆÜØò kØ×'Ñ'×.Ñ.×=Ñ=×jÑjó
ð 	
r>   c                 ó�   — | j                  «       }t        |xr* |j                  j                  j                  j
                  «      S r3   )rS   rƒ   r„   r…   r†   Úallow_side_effects_in_hoprˆ   s     r<   Ú should_allow_side_effects_in_hopz,SideEffects.should_allow_side_effects_in_hopú   sA   € Ø×0Ñ0Ó2ˆÜØò XØ×'Ñ'×.Ñ.×=Ñ=×WÑWó
ð 	
r>   c                 ó�   — | j                  «       }t        |xr* |j                  j                  j                  j
                  «      S r3   )rS   rƒ   r„   r…   r†   Úis_reconstructing_generatorrˆ   s     r<   rŽ   z'SideEffects.is_reconstructing_generator  sA   € Ø×0Ñ0Ó2ˆäØò ZØ×'Ñ'×.Ñ.×=Ñ=×YÑYó
ð 	
r>   c                 ó$  — |j                   �„t        |j                   «      sn| j                  «       }|r[|j                  j                  j
                  }|j                  €.t        j                  j                  j                  «       |_        yyyyy)zFRecord the first externally-visible side effect on the current tracer.N)Úmutation_typer%   rS   r„   r…   r†   Úside_effect_stackrh   ri   rj   rk   )rY   r{   rK   Útracers       r<   Ú_maybe_record_side_effectz%SideEffects._maybe_record_side_effect	  s…   € à×ÑÐ)Ô2EØ×Ñô3
ð  ×4Ñ4Ó6ˆLÙØ%×0Ñ0×7Ñ7×FÑF�Ø×+Ñ+Ð3äŸ™×4Ñ4×BÑBÓDð Õ,ð 4ð ð	3
Ð)r>   c                 ó„  — ddl m} t        ||«      ry| j                  «       r| j	                  |«       y| j                  «       r| j	                  |«       y| j                  «       r#t        dd|› �ddgt        j                  ¢¬«       |j                  €J ‚t        |j                  «      st        d	d
|› �ddg¬«       y)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	   ro   r‰   r“   rŒ   rŽ   r   r   ÚFUNDAMENTALr�   r%   )rY   r{   r	   s      r<   Úcheck_allowed_side_effectz%SideEffects.check_allowed_side_effect  sÙ   € ÝPô �dÐ;Ô<ØØ×IÑIÔKØ×*Ñ*¨4Ô0ØØ×0Ñ0Ô2Ø×*Ñ*¨4Ô0ØØ×+Ñ+Ô-ô ØAØ+¨D¨6Ð2ð5ð ;ðä&×2Ñ2ðõ
ð ×!Ñ!Ð-Ð-Ð-Ü" 4×#5Ñ#5Ô6ÜØ1Ø.¨t¨fÐ5Øfðxðõ	
ð r>   ÚnameÚvaluec                 ó6  — | j                  |«      sJ ‚| j                  |«       || j                  vri | j                  |<   || j                  |   |<   | j                  |«       t	        |dd «      }|�&| j
                  j                  t        ||«      «       y y )NÚsource)Úis_attribute_mutationrœ   rH   rl   ÚgetattrrX   r]   r   )rY   r{   r�   rž   Úitem_sources        r<   Ú
store_attrzSideEffects.store_attr@  s›   € ð ×)Ñ)¨$Ô/Ð/Ð/Ø×&Ñ& tÔ,Ø�t×0Ñ0Ñ0Ø.0ˆD×%Ñ% dÑ+Ø05ˆ×!Ñ! $Ñ'¨Ñ-à× Ñ  Ô&Ü˜d H¨dÓ3ˆØÐ"Ø× Ñ ×$Ñ$¤Z°¸TÓ%BÕCð #r>   Ú
deleted_okÚcheckc                 óÖ   — |r| j                  |«      sJ ‚| j                  |   |   }|s?t        |t        j                  «      r%t        dd|› d|› �dg t        j                  ¢¬«       |S )Nz$Attempted to read a deleted variablezitem: z, name: Ú r•   )r¡   rH   ro   r   ÚDeletedVariabler   r   Ú
USER_ERROR)rY   r{   r�   r¥   r¦   Úresults         r<   Ú	load_attrzSideEffects.load_attrN  sv   € ñ Ø×-Ñ-¨dÔ3Ð3Ð3Ø×*Ñ*¨4Ñ0°Ñ6ˆÙœj¨´×1JÑ1JÔKÜØ>Ø    h¨t¨fÐ5ØØ5Ô)×4Ñ4Ð5õ	ð ˆr>   Úcellvarc                 ó  — |j                  «       r%t        dd|› d|› �dg t        j                  ¢¬«       t	        |t
        j                  «      sJ ‚t	        |t
        j                  «      sJ ‚| j                  |d|«       y )NzWrite to immutable cellz	cellvar: z	, value: zFDynamo doesn't support writing to immutable/sourceless cell variables.r•   Úcell_contents)	Úis_immutabler   r   Ú	DIFFICULTro   r   ÚCellVariabler(   r¤   )rY   r­   rž   s      r<   Ú
store_cellzSideEffects.store_cella  sy   € Ø×ÑÔ!ÜØ1Ø# G 9¨I°e°WÐ=ØdØ4Ô)×3Ñ3Ð4õ	ô ˜'¤9×#9Ñ#9Ô:Ð:Ð:Ü˜%¤×!:Ñ!:Ô;Ð;Ð;Ø�‰˜ °%Õ8r>   c                 óÐ  — t        |t        j                  «      sJ ‚| j                  «       }|rRt	        |dd «      }|�C|j
                  j                  j                  j                  j                  t        |d«      «       | j                  |d«      r| j                  |dd¬«      S |j                  r|j                  S t        dt        |«      dg t         j"                  ¢¬«       y )Nr    r¯   F)r¦   zRead uninitialized cellzBAttempted to read a cell variable that has not been populated yet.r•   )ro   r   r²   rS   r¢   r„   r…   r†   Útraced_sourcesr]   r   Úhas_pending_mutation_of_attrr¬   Úpre_existing_contentsr   Ústrr   rª   )rY   r­   rK   Úcell_sources       r<   Ú	load_cellzSideEffects.load_cellm  sÏ   € Ü˜'¤9×#9Ñ#9Ô:Ð:Ð:ð ×0Ñ0Ó2ˆÙÜ! '¨8°TÓ:ˆKØÐ&Ø×'Ñ'×.Ñ.×=Ñ=×LÑL×PÑPÜ˜{¨OÓ<ôð ×,Ñ,¨W°oÔFØ—>‘> '¨?À%�>ÓHÐHØ×(Ò(Ø×0Ñ0Ð0ÜØ-Ü˜“LØ\Ø1Ô%×0Ñ0Ð1ö		
r>   Úgvarc                 ó^   — t        |t        j                  «      sJ ‚| j                  ||«      S r3   )ro   r   r(   r¬   )rY   r»   r�   s      r<   Úload_globalzSideEffects.load_global„  s)   € Ü˜$¤	× 9Ñ 9Ô:Ð:Ð:Ø�~‰~˜d DÓ)Ð)r>   c                 óš   — t        |t        j                  «      sJ ‚t        |t        j                  «      sJ ‚| j                  |||«       y r3   )ro   r   r(   r¤   )rY   r»   r�   rž   s       r<   Ústore_globalzSideEffects.store_globalˆ  s@   € ô ˜$¤	× 9Ñ 9Ô:Ð:Ð:Ü˜%¤×!:Ñ!:Ô;Ð;Ð;Ø�‰˜˜d EÕ*r>   Úclsc           
      óB  — t        j                  | dd «      t        j                  t        j                  t
        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  f	v S )NÚ__getattribute__)ÚinspectÚgetattr_staticÚobjectrÂ   ry   rV   Ú	frozensetÚintr¸   rB   ÚtupleÚBaseException)rÀ   s    r<   Ú"cls_supports_mutation_side_effectsz.SideEffects.cls_supports_mutation_side_effects�  sv   € ä×%Ñ% cÐ+=¸tÓDÜ×#Ñ#Ü×!Ñ!Ü× Ñ Ü×&Ñ&Ü× Ñ Ü× Ñ Ü×!Ñ!Ü×"Ñ"Ü×*Ñ*ð
I
ð 

ð 
	
r>   c                 ó6   — t        |j                  t        «      S r3   )ro   r�   r"   r~   s     r<   r¡   z!SideEffects.is_attribute_mutation�  s   € Ü˜$×,Ñ,Ô.?Ó@Ð@r>   c                 óp   — | j                  |«      xr$ t        | j                  j                  |«      «      S r3   )r¡   rƒ   rH   Úgetr~   s     r<   Úhas_pending_mutationz SideEffects.has_pending_mutation   s5   € Ø×)Ñ)¨$Ó/ò 
´DØ×%Ñ%×)Ñ)¨$Ó/ó5
ð 	
r>   c                 ód   — | j                  |«      xr || j                  j                  |d«      v S )N© )r¡   rH   rÍ   )rY   r{   r�   s      r<   r¶   z(SideEffects.has_pending_mutation_of_attr¥  s8   € Ø×)Ñ)Øó
ò >à�d×/Ñ/×3Ñ3°D¸"Ó=Ð=ð	>r>   c                 ób  — |j                  «       ryt        |j                  t        t        f«      ryt        |t
        j                  «      r!|| j                  v xs |j                  | «      S | j                  |«      r|| j                  v S |j                  €J ‚|j                  j                  S )NFT)r°   ro   r�   r$   r'   r   ÚUserDefinedObjectVariablerH   Úis_base_vt_modifiedr¡   Úis_modifiedr~   s     r<   rÔ   zSideEffects.is_modifiedª  s    € Ø×ÑÔØÜ�d×(Ñ(Ô+?ÔAQÐ*RÔSØä�dœI×?Ñ?Ô@à˜4×4Ñ4Ð4ÒV¸×8PÑ8PÐQUÓ8VÐVà×%Ñ% dÔ+Ø˜4×4Ñ4Ð4Ð4Ø×!Ñ!Ð-Ð-Ð-Ø×!Ñ!×-Ñ-Ð-r>   ÚvariableÚmutation_type_clsc           
      ó.  — t        |«      | j                  v r>t        |› d|j                  › d| j                  t        |«         j                  › d�«      ‚ |«       |_        || j                  t        |«      <   | j
                  j                  |«       |S )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}   rG   ÚAssertionErrorr    r�   rI   rg   )rY   r{   rÕ   rÖ   s       r<   Ú
_track_objz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                 ó2   — | j                  ||t        ¬«      S )N)rÖ   )rÚ   r#   )rY   r{   rÕ   s      r<   Útrack_object_existingz!SideEffects.track_object_existingÐ  s#   € ð �‰ØØÜ7ð ó 
ð 	
r>   Ú
cls_sourceÚuser_clsÚvariable_clsÚoptionsc                 óŠ  — |t         j                  j                  j                  u r>t	        j
                  d¬«      5  t         j                  j                  «       }d d d «       nt        |«      } |fdt        |«      i|¤Ž}|| j                  t        |«      <   | j                  j                  |«       |S # 1 sw Y   ŒRxY w)NT)Úrecordr�   )rh   ÚautogradÚfunctionÚFunctionCtxÚwarningsÚcatch_warningsÚFunctionr!   r$   rG   r}   rI   rg   )rY   rÝ   rÞ   rß   rà   ÚobjrÕ   s          r<   Útrack_object_newzSideEffects.track_object_newÝ  s³   € ð ”u—~‘~×.Ñ.×:Ñ:Ñ:Ü×(Ñ(°Ô5ñ 0Ü—n‘n×-Ñ-Ó/�÷0ð 0ô ˜XÓ&ˆCÙØñ
ä.¨zÓ:ð
ð ñ
ˆð
 (0ˆ×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆ÷0ð 0ús   ½B9Â9Cc                 ó‚  — ddl m} ddlm} ddlm} ddlm} t        j                  }t        ||«      r|j                  |«      r|}�nÙt        |d«      rt        |d«      r ||«      s|}�nµt        |t        j                  j                  «      rt        j                   }�nt        |t"        t$        j&                  f«      rt        j(                  }�nMt        |t*        t,        f«      rt        j.                  }�n%t        |t0        «      r<t3        |«      r t        j4                  j7                  |«      }nêt        j4                  }nÙt        |t8        «      rt        j:                  }n¸t        |t<        «      rt        j>                  }n—tA        |«      rtB        }n…t        |tD        «      rt        jF                  }ndt        |t        jH                  jJ                  «      rt        jL                  }n/t        jN                  jQ                  |«      rt        jN                  }t        |t        j                  «      sJ ‚|S )	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ÚUnspecializedNNModuleVariablery   ÚcollectionsÚOrderedDictÚUserDefinedDictVariablerV   rÆ   ÚUserDefinedSetVariablerÈ   r   ÚUserDefinedTupleVariableÚ
get_vt_clsrB   ÚUserDefinedListVariabler   ÚMutableMappingVariabler   r)   rÉ   Ú"UserDefinedExceptionObjectVariableÚuser_definedÚ_CONSTANT_BASE_TYPESÚUserDefinedConstantVariableÚInspectVariableÚis_matching_class)rY   rÞ   rì   rí   rî   rï   rß   s          r<   Úget_variable_clszSideEffects.get_variable_clsò  sš  € Ý5åIÝGÝHô ×/Ñ/ð 	ô ØÐ'ô
à'×HÑHÈÔRØ4ŠLä�H˜kÔ*Ü˜ *Ô-Ù0°Ô:à9ŠLÜ˜¤%§(¡(§/¡/Ô2Ü$×BÑBŠLÜ˜¤4¬×)@Ñ)@Ð"AÔBÜ$×<Ñ<ŠLÜ˜¤3¬	Ð"2Ô3Ü$×;Ñ;ŠLÜ˜¤%Ô(Ü  Ô*Ü(×AÑA×LÑLÈXÓV‘ä(×AÑA‘Ü˜¤$Ô'Ü$×<Ñ<‰LÜ˜¤.Ô1Ü$×;Ñ;‰LÜ  Ô*Ü2‰LÜ˜¤-Ô0Ü$×GÑG‰LÜØÜ×"Ñ"×7Ñ7ô
ô %×@Ñ@‰LÜ×&Ñ&×8Ñ8¸ÔBÜ$×4Ñ4ˆLÜ˜,¬	×(KÑ(KÔLÐLÐLØÐr>   Úbase_cls_vtÚcls_vtÚ	init_argsc                 óx  — |j                   }t        |t        j                  j                  «      rt        |«      }|S t        |t        j                  «      r|j                  }nwt        |t        j                  «      rt        }nVt        |t        j                  «      rt        }n5t        |t        j                  «      r|j                   }nt        d|› �«      ‚t        j                  j!                  |j"                  «      sJ ‚t%        |«      r |d g|j&                  z  «      }|S |rWt        |t        j(                  j*                  «      r3|D �cg c]  }|j-                  «       ‘Œ }}	  |j"                  |g|¢­Ž }|S |j#                  |«      }|S c c}w # t.        $ r |j#                  |«      }Y |S w xY w)NzUnexpected base_cls_vt )rž   rö   rh   rù   rú   r    ro   r   ÚBuiltinVariableÚfnÚDictBuiltinVariablery   ÚListBuiltinVariablerB   ÚUserDefinedClassVariableÚRuntimeErrorÚis_supported_new_methodÚ__new__r   Ún_fieldsr  r  Úas_python_constantÚ	Exception)	rY   r  r  r  rÞ   ré   Úbase_clsÚargÚexample_argss	            r<   Úget_example_valuezSideEffects.get_example_value#  s§  € ð —<‘<ˆÜ�h¤§¡§¡Ô0ä Ó)ˆCðL ˆ
ôI ˜+¤y×'@Ñ'@ÔAØ&Ÿ>™>‘Ü˜K¬×)FÑ)FÔGÜ‘Ü˜K¬×)FÑ)FÔGÜ‘Ü˜K¬×)KÑ)KÔLØ&×,Ñ,‘ä"Ð%<¸[¸MÐ#JÓKÐKä×5Ñ5×MÑMØ× Ñ ôð ð ô " (Ô+ñ  ˜v¨×(9Ñ(9Ñ9Ó:�ð& ˆ
ñ% œzØÜ×&Ñ&×;Ñ;ô ð ENÖN¸S × 6Ñ 6Õ 8ÐN�ÐNð
Ø*˜(×*Ñ*Ø ðØ#/ò�Cð ˆ
ð ×&Ñ& xÓ0�Øˆ
ùò  Oøô
 !ò ð #×*Ñ*Ø ó‘Cð
 ˆ
ðús   ÅFÅ.F ÆF9Æ8F9c           	      ó$  — |j                   }|j                  }| j                  |«      }| j                  |||«      } |||j                   ||t	        |«      ¬«      }|| j
                  t        |«      <   | j                  j                  |«       |S )aM  
        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$   rG   r}   rI   rg   )	rY   r  r  r  rÝ   rÞ   rß   ré   rÕ   s	            r<   Útrack_new_user_defined_objectz)SideEffects.track_new_user_defined_objectT  s‰   € ð —]‘]ˆ
Ø—<‘<ˆØ×,Ñ,¨XÓ6ˆØ×$Ñ$ [°&¸)ÓDˆáØØ—}‘}Ø#ØÜ.¨zÓ:ô
ˆð (0ˆ×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆr>   c                 ó¼   — t        «       }t        j                  t        «       ¬«      }|| j                  t        |«      <   | j                  j                  |«       |S )N©r�   )rÅ   r   r²   r$   rG   r}   rI   rg   )rY   ré   rÕ   s      r<   Útrack_cell_newzSideEffects.track_cell_newr  sN   € ô ‹hˆÜ×)Ñ)Ü.Ó0ô
ˆð (0ˆ×ÑœB˜s›GÑ$Ø�‰×Ñ˜cÔ"Øˆr>   r    ÚcellÚcontentsc                 ó´   — t        j                  |€d n	t        «       ||¬«      }|| j                  t	        |«      <   | j
                  j                  |«       |S )N)r�   r·   r    )r   r²   r#   rG   r}   rI   rg   )rY   r    r#  r$  rÕ   s        r<   Útrack_cell_existingzSideEffects.track_cell_existing}  sV   € ô ×)Ñ)ð #) .™$Ô6OÓ6QØ"*Øô
ˆð )1ˆ×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr>   c                 óª   — t        j                  t        «       |¬«      }|| j                  t	        |«      <   | j
                  j                  |«       |S )N)r�   r    )r   ÚNewGlobalVariabler#   rG   r}   rI   rg   )rY   r    r{   rÕ   s       r<   Útrack_global_existingz!SideEffects.track_global_existing‹  sH   € Ü×.Ñ.Ü3Ó5Øô
ˆð )1ˆ×ÑœB˜t›HÑ%Ø�‰×Ñ˜dÔ#Øˆr>   ÚctxÚargsc                 óv   — t        |t        j                  «      sJ ‚| j                  j	                  ||f«       y r3   )ro   r   r	   rL   rg   )rY   r*  r+  s      r<   Útrack_save_for_backwardz#SideEffects.track_save_for_backward”  s2   € ô ˜#œy×HÑHÔIÐIÐIØ×Ñ×%Ñ% s¨D kÕ2r>   c                 óò   — |j                   D ]h  }t        |«      }|j                  |   }|| j                  vsŒ,t        |t        j
                  t        j                  f«      sŒW| j                  ||«       Œj y r3   )rI   r}   rG   ro   r   ÚTensorVariableÚSymNodeVariablerÜ   )rY   rm   Ú
other_itemÚother_idÚother_variables        r<   Ú-track_runahead_tensor_and_symvar_side_effectsz9SideEffects.track_runahead_tensor_and_symvar_side_effectsš  so   € ð  Ÿ/™/ò 	GˆJÜ˜*“~ˆHØ"×1Ñ1°(Ñ;ˆNØ˜t×2Ñ2Ò2´zØ¤×!9Ñ!9¼9×;TÑ;TÐ Uõ8ð ×*Ñ*¨:°~ÕFñ	Gr>   c                 óf  ‡ ‡	‡
‡— t        «       Št        «       Š	dt        dd fˆ	ˆ ˆ
ˆfd„Š
dt        dt        fˆ	fd„}‰ j                  j	                  «       D �cg c]  }t        |j                  t        «      s|‘Œ  }}g }|}|�k|j                  |j                  |j                  g«       |j                  �)|j                  €J ‚|j                  |j                  «       |j                  }|�Œkt        j                  ‰
|||j                  j                   ‰ j"                  gz   «       ‹
‰ j                  j%                  «       D ��ci c]  \  }} ||«      sŒ||“Œ c}}‰ _        ‰ j&                  j%                  «       D ��ci c]  \  }} ||«      sŒ||“Œ c}}‰ _        y c c}w c c}}w c c}}w )Nr[   r1   c                 óì   •— | ‰v ry ‰j                  | «       t        | j                  t        «      r‰j                  | «       | ‰j                  v r$t        j                  ‰‰j                  |    «       y y r3   )r]   ro   r�   r$   rH   r(   Úvisit)r[   Úlive_new_objectsrY   r7  Úvisiteds    €€€€r<   r7  z0SideEffects.prune_dead_object_new.<locals>.visit­  sl   ø€ Ø�g‰~ØØ�K‰K˜Ôä˜#×+Ñ+Ô-AÔBØ ×$Ñ$ SÔ)ð �d×/Ñ/Ñ/Ü×%Ñ%ØØ×-Ñ-¨cÑ2õð 0r>   c                 óB   •— t        | j                  t        «      r| ‰v S y©NT)ro   r�   r$   )r[   r8  s    €r<   Úis_livez2SideEffects.prune_dead_object_new.<locals>.is_live½  s#   ø€ Ü˜#×+Ñ+Ô-AÔBØÐ.Ð.Ð.Ør>   )rV   r(   rƒ   rG   Úvaluesro   r�   r$   rC   ÚstackÚsymbolic_localsÚparentÚpost_prune_cell_and_freevarsrg   r7  r…   Úbackward_staterM   r7   rH   )rY   Útxr<  r[   Úpre_existing_varsÚinit_live_varsÚcur_txr:   r;   r8  r7  r9  s   `        @@@r<   Úprune_dead_object_newz!SideEffects.prune_dead_object_new¨  s¬  û€ ä(+«ˆÜ14³Ðð	”ð 	¨4÷ 	ð 	ð 	œð 	¬Tõ 	ð ×*Ñ*×1Ñ1Ó3ö
àÜ˜c×/Ñ/Ô1EÔFò ð
Ðð 
ð ˆà35ˆØÐ Ø×!Ñ! 6§<¡<°×1GÑ1GÐ"HÔIØ�}‰}Ð(ð ×:Ñ:ÐFÐFÐFØ×%Ñ% f×&IÑ&IÔJØ—]‘]ˆFð Ñ ô 	×ÑØàà!Ø—	‘	×(Ñ(Ø×!Ñ!ðñô		
ð ð "×0Ñ0×6Ñ6Ó8÷
Ù�Q˜¹GÀA½JˆAˆq‰Dó
ˆÔð "×6Ñ6×<Ñ<Ó>÷%
Ù�Q˜Á'È!Å*ˆAˆq‰Dó%
ˆÕ!ùò[
ùóT
ùó%
s   Á#F"ÅF'ÅF'ÆF-ÆF-c                 ó|  — || j                   v ry | j                  |«       | j                  |«       t        |j                  t
        «      rd|j                  _        |j                  �%| j                  j                  |j                  «       |j                  r#t        |t        j                  «      rd| _        y y y r;  )rW   rœ   rl   ro   r�   r&   rÔ   r    rX   r]   r   ÚConstDictVariablerT   r^   s     r<   ÚmutationzSideEffects.mutationó  s–   € Ø�$×9Ñ9Ñ9Øà×&Ñ& sÔ+à× Ñ  Ô%ä�c×'Ñ'Ô)>Ô?Ø,0ˆC×ÑÔ)Ø�:‰:Ð!Ø× Ñ ×$Ñ$ S§Z¡ZÔ0Ø�:Š:œ* S¬)×*EÑ*EÔFØ/3ˆDÕ,ð Gˆ:r>   c                 ó   — | j                   S r3   )rT   ©rY   s    r<   Úhas_existing_dict_mutationz&SideEffects.has_existing_dict_mutation  s   € Ø×/Ñ/Ð/r>   c                 ó€   — | j                   j                  «       D �cg c]  }| j                  |«      sŒ|‘Œ c}S c c}w r3   )rG   r=  rÔ   r^   s     r<   Ú_get_modified_varszSideEffects._get_modified_vars  s3   € Ø#×2Ñ2×9Ñ9Ó;ÖU˜¸t×?OÑ?OÐPSÕ?T’ÒUÐUùÒUs   �;´;Úcgc           	      ó"  ‡‡— | j                  «       D �]ƒ  Št        ‰j                  t        «      s‰j                  €J ‚Œ-t        ‰t
        j                  t
        j                  f«      r| j                  ‰«      sŒit        ‰t
        j                  «      r“‰j                  €^‰j                  ˆfd„«       ‰j                  t        dd«      «       ‰j                  ‰«       t        ‰j                   ‰   «      ‰_        Œí‰j                  �Œút#        ‰j                  «      ‰_        �Œ‰j%                  «       rpt        ‰t
        j&                  j(                  «      s�ŒL ‰‰d¬«       ‰j                  ‰«       ‰j+                  «        t        ‰j                   ‰   «      ‰_        �Œ–t        ‰t
        j,                  «      rt/        dddg ¬«       �ŒÁt        ‰t
        j0                  «      rdˆˆfd	„}‰j                  |«       n‰j                  ˆfd
„«       ‰j                  j2                  €J ‚ ‰‰j                  j2                  «       ‰j4                  D ]
  } ‰|«       Œ ‰j                  t        dt7        ‰j4                  «      z   d«      «       ‰j                  ‰«       t        ‰j                   ‰   «      ‰_        t        ‰t
        j8                  «      s�ŒÐ‰| j:                  v s�Œà| j:                  ‰   j=                  «       D ]„  \  }}‰j?                  dd«       ‰jA                  d«        ‰‰j                  «        ‰t        jB                  |«      «        ‰|«       ‰j                  g tE        d«      ¢tG        d«      ‘«       Œ† �Œ† | jH                  D ]g  \  }} ‰|j                  «       ‰jA                  d«       |D ]
  } ‰|«       Œ ‰j                  g tE        t7        |«      «      ¢tG        d«      ‘«       Œi y )Nc                  óD   •— ‰ j                  t        j                  d«      S )NÚ	make_cell©Úload_import_fromr   Ú__name__©rP  s   €r<   ú<lambda>z3SideEffects.codegen_save_tempvars.<locals>.<lambda>(  ó   ø€  × 3Ñ 3´E·N±NÀKÓ P€ r>   r   F©Úallow_cachez<AutogradFunctionContextVariable escaped Dynamo-traced regionr¨   zAWe cannot reconstruct a torch.autograd.Function's context object.r•   c                  óˆ   •— ‰j                   €J ‚ ‰ ‰j                   «       ‰ j                  ‰ j                  d«      g«       y )Nr  )r  Úextend_outputÚcreate_load_attr©rP  r[   s   €€r<   Úload_new_methodz:SideEffects.codegen_save_tempvars.<locals>.load_new_methodQ  s;   ø€ à"Ÿ™Ð:Ð:Ð:Ù˜3Ÿ?™?Ô+Ø×(Ñ(¨"×*=Ñ*=¸iÓ*HÐ)IÕJr>   c                  óD   •— ‰ j                  t        j                  d«      S )Nr!   rT  rW  s   €r<   rX  z3SideEffects.codegen_save_tempvars.<locals>.<lambda>Z  s   ø€  × 3Ñ 3´E·N±NÀLÓ Q€ r>   r   ÚbuiltinsrÅ   Ú__setattr__é   ÚPOP_TOPrL   ©r1   N)%rO  ro   r�   r$   r    r   ÚNamedTupleVariableÚStructSequenceVariablerÎ   r²   Ú
local_nameÚadd_push_nullr]  r   Ú	add_cacher   Útempvarsr   Ú	is_tensorÚtorch_functionÚTensorWithTFOverrideVariableÚ	clear_tosr	   r   rÒ   rÝ   r  Úlenr)   rH   r7   rU  Úload_methodÚConstantVariabler   r   rL   )	rY   rP  r`  r  r�   rž   r*  r+  r[   s	    `      @r<   Úcodegen_save_tempvarsz!SideEffects.codegen_save_tempvars  sl  ù€ ð ×*Ñ*Ó,ó l	ˆCÜ˜c×/Ñ/Ô1EÔFØ—z‘zÐ-Ð-Ð-Øô ØÜ×-Ñ-¬y×/OÑ/OÐPôð ×/Ñ/°Ô4Øä˜#œy×5Ñ5Ô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ÜØZØØ cØ÷	ô ˜c¤9×#FÑ#FÔGöKð ×$Ñ$ _Õ5à×$Ñ$ÛQôð ×(Ñ(×3Ñ3Ð?Ð?Ð?Ù�3×$Ñ$×/Ñ/Ô0ð Ÿ=™=ò �CÙ�s•Gðð × Ñ Ô!5°a¼#¸c¿m¹mÓ:LÑ6LÈeÓ!TÔUà—‘˜SÔ!Ü,¨R¯[©[¸Ñ-=Ó>�”
ô ˜s¤I×$EÑ$EÖFØ˜t×8Ñ8Ó8à'+×'@Ñ'@ÀÑ'E×'KÑ'KÓ'Mò ™˜˜eØ×+Ñ+¨J¸ÔAØŸ™ }Ô5Ù˜3Ÿ:™:œÙœ9×5Ñ5°dÓ;Ô<Ù˜5œ	Ø×(Ñ(ØSÔ0°Ó3ÐSÔ5GÈ	Ó5RÐSõòðIl	ð\ ×/Ñ/ò 
	‰IˆC�Ùˆs�z‰zŒNØ�N‰NÐ.Ô/Øò �Ù�3•ðà×ÑðÜ'¬¨D«	Ó2ðä& yÓ1ðõñ
	r>   ÚtensorÚhookÚhandlec                 óÊ  — |j                  «       sJ ‚t        |t        j                  «      sJ ‚t        |t        j                  «      r|j                  «       sJ ‚t        t        j                  |«      sJ ‚t        | j                  j                  «       «      }|| j                  v r|dz  }|| j                  v rŒ||||f| j                  |<   |j                  rJ ‚||_        y )Nr   )rm  ro   r   r(   ÚRemovableHandleVariableÚ
is_mutablerø   rh   ÚTensorrq  rM   rr   Úidx)rY   ru  rv  rw  r�   r|  s         r<   Úregister_hookzSideEffects.register_hook‰  sÔ   € ð ×ÑÔ!Ð!Ð!Ü˜$¤	× 9Ñ 9Ô:Ð:Ð:ä�vœy×@Ñ@ÔAØ×!Ñ!Ô#ð	
ð$ô ”u—|‘| TÔ*Ð*Ð*Ü�$×#Ñ#×(Ñ(Ó*Ó+ˆà�T×&Ñ&Ñ&Ø�1‰HˆCð �T×&Ñ&Ò&à"(¨$°¸Ð!=ˆ×Ñ˜#ÑØ—:’:Ðˆ~Øˆ�
r>   r|  c                 ó   — | j                   |= y r3   )rM   )rY   r|  s     r<   Úremove_hookzSideEffects.remove_hookŸ  s   € Ø×Ñ˜cÑ"r>   c                 ó  ‡‡‡— | j                   j                  «       D ]g  \  Š}}Š‰j                  sJ d«       ‚dˆˆˆfd„}‰j                  |«        ‰|«       ‰j	                  t        dd«      «       ‰j                  |«       Œi y )Nz4Hooks on non input tensors NYI - should not get herec                  óX   •—  ‰ ‰«       ‰ j                  ‰ j                  ‰«      g«       y r3   )r]  r^  )rP  r�   ru  s   €€€r<   Úgen_fnz)SideEffects.codegen_hooks.<locals>.gen_fnÌ  s&   ø€ Ù�6”
Ø× Ñ  "×"5Ñ"5°dÓ";Ð!<Õ=r>   r   Frf  )rM   r=  r    rj  r]  r   rk  )rY   rP  rv  rw  r‚  r�   ru  s    `   @@r<   Úcodegen_hookszSideEffects.codegen_hooks¢  sˆ   ú€ ð ×Ñ×%Ñ%Ó'ò3	!ñ 
ØØØØðF —=’=ÐXÐ"XÓX�=÷>ð ×Ñ˜VÔ$ÙˆtŒHØ×ÑÔ1°!°UÓ;Ô<ð �L‰L˜Õ ñg3	!r>   c                 ó€   — ddl m} | j                  €!t        j                  g  |«       ¬«      | _        | j                  S )Nr   )r'   r!  )Úvariables.baser'   rU   r   r,   )rY   r'   s     r<   Úget_ca_final_callbacks_varz&SideEffects.get_ca_final_callbacks_varØ  s;   € Ý4à×&Ñ&Ð.Ü*3×*@Ñ*@ØÑ"2Ó"4ô+ˆDÔ'ð ×*Ñ*Ð*r>   c                 ód  — t         j                  dk7  sJ ‚| j                  j                  |g «      }d|j	                  «       › �}d}|j
                  �•t        |j
                  t        «      rd}nxt        |t        j                  «      r|j                  �d|j                  › d�}nAt        |t        j                  j                  «      rd}nd|j
                  j                  › d�}|r¿t        «       }g }t        t!        «       «      }|D ]k  }t#        d	„ |D «       «      }	|	|vsŒ|j%                  |	«       t        ||z   «      }
|j'                  d
j)                  t+        j,                  |
«      «      «       Œm dj)                  |«      }|› |› dt/        j0                  |d«      › �}|S |› |› d�}|S )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   óÀ   K  — | ]V  }|j                   |j                  |j                  |j                  t	        |d d«      t	        |dd«      t	        |dd«      f–— ŒX y­w)ÚcolnoNÚ
end_linenoÚ	end_colno)ÚfilenameÚlinenor�   Úliner¢   )Ú.0Úfs     r<   ú	<genexpr>z: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   rJ   rÍ   Úpython_type_namer    ro   r   r   r²   ri  rn  ÚTorchFunctionModeStackVariabler�   rV   r   r   rÈ   r]   rg   ÚjoinÚ	tracebackÚformat_listÚtextwrapÚindent)rY   r[   Ú	locationsÚdescriptionÚsource_infoÚseenÚunique_formatted_stacksÚstack_above_dynamor>  Ústack_tupleÚstack_augmentedÚformatted_linesÚlog_strs                r<   Ú_format_side_effect_messagez'SideEffects._format_side_effect_messageâ  s¹  € ä×/Ñ/°8Ò;Ð;Ð;Ø×-Ñ-×1Ñ1°#°rÓ:ˆ	Ø0°×1EÑ1EÓ1GÐ0HÐIˆØ$ˆØ�:‰:Ð!Ü˜#Ÿ*™*¤oÔ6ØJ‘Ü˜C¤×!7Ñ!7Ô8¸S¿^¹^Ð=WØ *¨3¯>©>Ð*:¸!Ð<‘ÜØ”Y×-Ñ-×LÑLôð N‘ð !0°·
±
·±Ð/@ÀÐB�áä“5ˆDØ13Ð#Ü!7Ô8NÓ8PÓ!QÐØ"ò �ô $ñ $ð #ô$ó �ð  dÒ*Ø—H‘H˜[Ô)Ü&<Ð=OÐRWÑ=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>   Úside_effect_messagesc                 ó�   ‡— ‰sy ‰D ]  }t         j                  |«       Œ t        j                  j	                  dd„ ˆfd„¬«       y )NÚartifactc                  ó   — dddœS )NÚdynamo_side_effectsÚstring)r�   ÚencodingrÐ   rÐ   r>   r<   rX  z8SideEffects._emit_side_effect_messages.<locals>.<lambda>"  s   € Ø-Ø$ñ!€ r>   c                  ó&   •— dj                  ‰ «      S )Nz,

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

)r•  )r¥  s   €r<   rX  z8SideEffects._emit_side_effect_messages.<locals>.<lambda>&  s   ø€ ÐQ×VÑVØ$ó € r>   )Úmetadata_fnÚ
payload_fn)Úside_effects_logÚdebugrh   Ú_loggingÚtrace_structured)rY   r¥  Úmsgs    ` r<   Ú_emit_side_effect_messagesz&SideEffects._emit_side_effect_messages  sL   ø€ Ù#Øà'ò 	(ˆCÜ×"Ñ" 3Õ'ð	(ô 	�‰×'Ñ'Øñóð 	(õ 		
r>   Úlog_side_effectsc           	      ó´  ‡ ‡‡‡‡— g Šdt         dd fˆˆ ˆfd„}g }‰ j                  «       D �]1  Št        j                  st	        ‰j
                  t        «      sŒ/t	        ‰t        j                  «      r} ‰‰d¬«        ‰‰j
                  «       ‰j                  ‰j                  d «      ‰j                  d «      t        dd¬«      g«       |j                  t        d	«      g«        |‰«       ŒÆt	        ‰t        j                  j                  «      rÒ‰j                  j!                  «       st#        d
dddg¬«        ‰‰j
                  «       ‰j%                  d«        ‰‰d¬«       |j                  g t'        d«      ¢t        d«      ‘«        ‰‰j
                  «       ‰j%                  d«       |j                  g t'        d«      ¢t        d«      ‘«        |‰«       �Œ¼t	        ‰t        j(                  t        j*                  f«      rÒ‰j-                  «       s�Œø ‰‰j
                  «       ‰j%                  d«        ‰‰d¬«       ‰j.                  r# ‰‰j
                  «       ‰j%                  d«       |j                  g t'        d«      ¢t        d«      ‘«       ‰j.                  r'|j                  g t'        d«      ¢t        d«      ‘«        |‰«       �Œ¸t	        ‰t        j0                  j2                  «      �r‰j5                  ˆfd„«       ‰j7                  dd«       t        j0                  j9                  «       }‰j:                  dxx   |fz  cc<   ‰j=                  t        d|¬«      «       ‰j5                  ˆfd„«       ‰j?                  ‰j@                  «       ‰j=                  t        dtC        ‰j@                  «      ¬«      «       ‰j7                  dd«       ‰j=                  t        d«      «        |‰«       �Œét	        ‰t        jD                  «      rj‰jF                  �^‰‰ jH                  v s�Œ‰ jK                  ‰«      } ‰|«       |j                  ‰jM                  ‰jF                  «      g«        |‰«       �Œm‰ jO                  ‰«      �rt	        ‰jP                  tR        «      rt	        ‰t        jT                  «      r�Œµt	        ‰t        jV                  «      �rv‰ jY                  ‰jZ                  «      �rZi }t\        j^                  j`                  D ])  }‰jb                  jd                  jg                  «       ||<   Œ+ 	 ti        ‰jj                  «      jl                  jo                  tp        jr                  «      }‰j                  t        d|¬«      t        d|d   ¬«      g«        ‰‰j
                  «       ‰j                  t        d|d   ¬«      g«        ‰‰jZ                  d¬«       ‰j                  t        d|d   ¬«      g«       ty        t\        |¬«      }	|j                  g |	¢t        d«      ‘«        |‰jZ                  «       �n%t	        ‰t        jz                  «      �r
‰ jY                  ‰jZ                  «      rïi }t|        j^                  j`                  D ])  }‰jb                  jd                  jg                  «       ||<   Œ+  ‰‰j
                  «       ‰j                  t        d|d    ¬«      g«        ‰‰jZ                  d¬«       ‰j                  t        d|d!   ¬«      g«       ty        t|        |¬«      }
|j                  g |
¢t        d«      ‘«        |‰jZ                  «       d}t        ‰ jH                  j�                  ‰i «      jƒ                  «       «      D �]Ï  \  }}t	        ‰t        j„                  «      ri‰jb                  jd                  j‡                  |«        ‰|«       t	        ‰j
                  tˆ        «      sJ ‚|j                  t        d"|¬«      g«       d#}ŒŠt	        |t        jŠ                  «      r‹t	        ‰jP                  tŒ        «      sŒ¿t�        t‘        ‰d$d «      |«      sŒ×‰jb                  jd                  j‡                  |«        ‰‰j
                  «       |j                  t        d%|¬«      g«       d#}�Œ/t	        ‰t        j’                  «      r†‰j•                  |«      ru‰j5                  ˆfd&„«        ‰‰j
                  «        ‰t        j–                  |«      «        ‰|«       |j                  g t™        d'd«      ¢t        d«      ‘«       d#}�ŒÏt	        ‰t        j’                  «      r“‰j›                  «       rƒ‰j�                  d(d)«       ‰j%                  d*«        ‰‰j
                  «        ‰t        j–                  |«      «        ‰|«       |j                  g t'        d'«      ¢t        d«      ‘«       d#}�Œ|‰jb                  jd                  j‡                  |«        ‰|«        ‰‰«       |j                  t        d+|¬«      g«       d#}�ŒÒ |s�
Œw |‰«       �
Œ�t	        ‰t        jž                  «      rlt¡        ‰jn                  «      D ]J  }‰j5                  ˆfd,„«        ‰‰j
                  «       ‰j7                  dd«       ‰j£                  «        ŒL  |‰«       �Œt	        ‰t        j¤                  «      rlt¡        ‰j¦                  «      D ]J  }‰j5                  ˆfd-„«        ‰‰j
                  «       ‰j7                  dd«       ‰j£                  «        ŒL  |‰«       �Œ�t	        ‰t        j¨                  «      ryd/ˆˆfd.„}‰j5                  |«        ‰‰j«                  ‰j¬                  j¯                  «       «      «       |j                  g t™        dd«      ¢t        d«      ‘«        |‰«       �Œ t±        ti        ‰«      «      ‚ t        |«      D ]  }‰j                  |«       Œ ‰r‰r‰ j³                  ‰«       y y y # tt        $ r6 ti        ‰jj                  «      jl                  jo                  tv        «      }Y �Œ;w xY w)0Nr[   r1   c                 óx   •— t         j                  dk7  r&‰r#‰j                  | «      }‰j                  |«       y y y ©Nre   )r   rf   r¤  rg   )r[   r³  rµ  rY   r¥  s     €€€r<   Ú_maybe_log_side_effectzBSideEffects.codegen_update_mutated.<locals>._maybe_log_side_effect1  s<   ø€ Ü×/Ñ/°8Ò;Ñ@PØ×6Ñ6°sÓ;�Ø$×+Ñ+¨CÕ0ð AQÐ;r>   FrZ  Ú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•   rC   r   re  r6   r   Úupdatec                  óD   •— ‰ j                  t        j                  d«      S )NÚget_torch_function_mode_stackrT  rW  s   €r<   rX  z4SideEffects.codegen_update_mutated.<locals>.<lambda>–  ó   ø€ ˜B×/Ñ/ÜŸ™Ð(Gó€ r>   Úco_varnamesÚ
STORE_FAST)Úargvalc                  óD   •— ‰ j                  t        j                  d«      S )NÚset_torch_function_mode_stackrT  rW  s   €r<   rX  z4SideEffects.codegen_update_mutated.<locals>.<lambda>Ÿ  rÀ  r>   Ú
BUILD_LISTÚ
LOAD_CONSTr0   r/   r.   )Úvarname_mapr@   r?   ÚSTORE_GLOBALTrž   ÚDELETE_ATTRc                  óD   •— ‰ j                  t        j                  d«      S )NÚ object_setattr_ignore_descriptorrT  rW  s   €r<   rX  z4SideEffects.codegen_update_mutated.<locals>.<lambda>O  s   ø€  B×$7Ñ$7Ü %§¡Ð0Ró%€ r>   rd  rb  rÅ   rc  Ú
STORE_ATTRc                  óD   •— ‰ j                  t        j                  d«      S ©NÚ	iter_nextrT  rW  s   €r<   rX  z4SideEffects.codegen_update_mutated.<locals>.<lambda>w  rY  r>   c                  óD   •— ‰ j                  t        j                  d«      S rÏ  rT  rW  s   €r<   rX  z4SideEffects.codegen_update_mutated.<locals>.<lambda>€  rY  r>   c                  óL   •—  ‰ ‰j                   «       ‰ j                  d«       y )NÚsetstate)r    r¬   r_  s   €€r<   r‚  z2SideEffects.codegen_update_mutated.<locals>.gen_fnˆ  s   ø€ Ù�s—z‘z”NØ—L‘L Õ,r>   rf  )Zr(   rO  r   Úreplay_side_effectsro   r    r   r   r,   r]  Úcreate_load_constr   rg   ÚlistsÚDequeVariableÚmaxlenÚis_constant_noner   rr  r   rI  ÚSetVariableÚhas_new_itemsÚshould_reconstruct_allrn  r”  rj  Úcall_functionÚget_prev_stack_var_nameÚcode_optionsÚappend_outputÚforeachÚsymbolic_stackrq  r²   ri  rH   rº   Úcreate_store_derefr¡   r�   r$   r)   rþ   rÔ   Ú_base_vtr=   Ú__code__rÁ  rC  r…   Únew_varr4   rž   r5   Úindexrü   rý   Ú
ValueErrorry   r   r  rD   ÚreversedrÍ   r7   r(  Úupdate_co_namesr   r©   r#   rø   r¢   rÒ   Úshould_skip_descriptor_setterrs  r   Úneeds_slow_setattrrU  ÚListIteratorVariableÚrangeÚpop_topÚCountIteratorVariableÚadvance_countÚRandomVariableÚ
wrap_stateÚrandomÚgetstaterÙ   r´  )rY   rP  rµ  r¹  Úsuffixesr�   Úcontents_varrÈ  r0   Údict_update_instsÚlist_update_instsÚside_effect_occurredrž   Ú_r‚  Úsuffixr¥  r[   s   ```             @@r<   Úcodegen_update_mutatedz"SideEffects.codegen_update_mutated+  s  ü€ ð +-Ðð	1¬ð 	1¸D÷ 	1ð
 ˆØ×*Ñ*Ó,ó `	0ˆCä×-Ò-´jØ—
‘
œOô7ð Ü˜#œy×5Ñ5Ô6á�3 EÕ*Ù�3—:‘:”Ø× Ñ à×,Ñ,¨TÓ2Ø×,Ñ,¨TÓ2Ü*¨=¸aÔ@ðôð —‘Ô!3°NÓ!CÐ DÔEÙ& sÕ+Ü˜C¤§¡×!>Ñ!>Ô?ð —z‘z×2Ñ2Ô4Ü!Ø SØ "Ø$<àHðõ	ñ �3—:‘:”Ø—‘˜xÔ(Ù�3 EÕ*Ø—‘ðÜ+¨AÓ.ðä*¨9Ó5ðôñ �3—:‘:”Ø—‘˜wÔ'Ø—‘ðÜ+¨AÓ.ðä*¨9Ó5ðôñ ' sÖ+ä˜C¤)×"=Ñ"=¼y×?TÑ?TÐ!UÔVð ×$Ñ$Ö&Ù�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Ö/äØ”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¸S¿^¹^Ð=Wð ˜$×3Ñ3Ó3Ø#'§>¡>°#Ó#6�LÙ�|Ô$Ø—O‘O R×%:Ñ%:¸3¿>¹>Ó%JÐ$KÔLÙ*¨3Ö/à×+Ñ+¨CÕ0ô ˜c×/Ñ/Ô1EÔFÌ:Øœ×:Ñ:ôLñ äØÜ×5Ñ5õð ×&Ñ&Ø—L‘Lõð
 #%�KÜ 4× =Ñ =× IÑ Iò C˜Ø,.¯E©E¯L©L×,@Ñ,@Ó,B˜ DÒ)ðCðHÜ$(¨¯©£O×$;Ñ$;×$AÑ$AÜ'×3Ñ3ó%˜	ð ×$Ñ$ä.¨|ÀIÔNÜ.Ø ,°[ÀÑ5Môðôñ �s—z‘z”NØ×$Ñ$ä.Ø ,°[ÀÑ5Kôðôñ �s—|‘|°Õ7Ø×$Ñ$ä.Ø ,°[ÀÑ5Môðôô )?Ü,¸+ô)Ð%ð —O‘OðØ.ðä.¨yÓ9ðôñ +ØŸ™öô  ØÜ×5Ñ5õð ×&Ñ&Ø—L‘Lôð
 #%�KÜ 3× <Ñ <× HÑ Hò C˜Ø,.¯E©E¯L©L×,@Ñ,@Ó,B˜ DÒ)ðCñ �s—z‘z”NØ×$Ñ$ä.Ø ,°[ÀÑ5Kôðôñ �s—|‘|°Õ7Ø×$Ñ$ä.Ø ,°[ÀÑ5Môðôô )?Ü+¸ô)Ð%ð —O‘OðØ.ðä.¨yÓ9ðôñ +ØŸ™ôð( (-Ð$Ü#+Ø×-Ñ-×1Ñ1°#°rÓ:×@Ñ@ÓBó$ó :4‘K�D˜%ô " #¤y×'BÑ'BÔCØŸ™Ÿ™×4Ñ4°TÔ:Ù˜5œ	Ü)¨#¯*©*´lÔCÐCÐCØ Ÿ™Ü/°ÀtÔLÐMôð 04Ñ,Ü# E¬9×+DÑ+DÔEÜ%Ø×-Ñ-Ô/Hõä%¤g¨c°7¸DÓ&AÀ4ÕHØŸE™EŸL™L×8Ñ8¸Ô>Ù˜sŸz™zœNØ$ŸO™OÜ!3°MÈ$Ô!OÐ Pôð 48Ò0Ü#ØœY×@Ñ@ôà×;Ñ;¸DÔAØ×(Ñ(óôñ
 ˜3Ÿ:™:œÙœ9×5Ñ5°dÓ;Ô<Ù˜5œ	Ø Ÿ™ðÜ!5°a¸Ó!?ðä 2°9Ó =ðôð 04Ò,ä" 3¬	×(KÑ(KÔLØ×2Ñ2Ô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:4óx (Ù*¨3Ö/Ü˜C¤×!?Ñ!?Ô@Ü˜sŸy™yÓ)ò !�AØ×$Ñ$ÛPôñ �s—z‘z”NØ×$Ñ$ Q¨Ô.Ø—J‘J•Lð!ñ ' sÖ+Ü˜C¤×!@Ñ!@ÔAÜ˜s×0Ñ0Ó1ò !�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Ó/Ð/ðA`	0ôF ˜xÓ(ò 	%ˆFØ×Ñ˜VÕ$ð	%ñ Ñ 4Ø×+Ñ+Ð,@ÕAð !5Ðøôa &ò HÜ$(¨¯©£O×$;Ñ$;×$AÑ$AÄ$Ó$G›	ðHús   Õ<rò;sósc                 óê   — t         j                  dk(  ry t        j                  t        j
                  «      sy | j                  «       D ](  }| j                  |«      }t        j                  |«       Œ* y r¸  )	r   rf   r¯  ÚisEnabledForÚloggingÚDEBUGrO  r¤  r°  )rY   r[   r³  s      r<   Úlog_side_effects_summaryz$SideEffects.log_side_effects_summary¡  s^   € Ü×+Ñ+¨xÒ7ØÜ×,Ñ,¬W¯]©]Ô;ØØ×*Ñ*Ó,ò 	(ˆCØ×2Ñ2°3Ó7ˆCÜ×"Ñ" 3Õ'ñ	(r>   c                 óÆ   — t        t        | j                  | j                  j	                  «       «      «      xs( | j
                  xs | j                  xs | j
                   S r3   )ÚanyÚmaprÔ   rG   r=  rM   rL   rL  s    r<   Úis_emptyzSideEffects.is_emptyª  s\   € ä”�D×$Ñ$ d×&9Ñ&9×&@Ñ&@Ó&BÓCÓDò !Ø× Ñ ò!à×%Ñ%ò!ð × Ñ ð	
ð 	
r>   c                 ól   — | j                   j                  «        | j                  j                  «        y r3   )rI   r6   rG   rL  s    r<   r6   zSideEffects.clear²  s$   € Ø�‰×ÑÔØ×Ñ×!Ñ!Õ#r>   )NNNNNN)r1   rF   )FF)rm   rF   r1   N)rC  r+   r1   N)r1   zvariables.ListVariable)Frf  )LrV  Ú
__module__Ú__qualname__Ú__doc__ry   rÇ   r(   Ú__annotations__r¸   rB   r   r–  ÚStackSummaryrÈ   r	   rP   r_   rb   rl   rÅ   rƒ   rp   rw   rz   r   r�   r‰   rŒ   rŽ   r“   rœ   r¤   r¬   r³   rº   r½   r¿   Ústaticmethodr4   rÊ   r¡   rÎ   r¶   rÔ   r&   rÚ   Útrack_mutablerÜ   r   rê   r
  r  r  r"  r   r&  r)  r-  r4  rG  rJ  rM  rO  r   rt  r}  r  rƒ  r†  r¤  r´  rý  r  r  r6   Ú__classcell__)rZ   s   @r<   rF   rF   \   sO  ø… ñð& ˜˜oÐ-Ñ.Ó.Ø˜°°S¸/Ð5IÑ0JÐJÑKÓKØ�C‰yÓà˜°°Y×5KÑ5KÑ0LÐLÑMÓMð
 =AààØ&*ð ð ñ-1@à#ð1@ð ˜S /Ð1Ñ2°TÑ9ð1@ð # ?°D¸¸oÐ9MÑ4NÐ#NÑOØ
ñð	1@ð # ?°D¸×9OÑ9OÑ4PÐ#PÑQØ
ñð1@ð ˜‘9˜tÑ#ð1@ð  ØÐ1°4¸Ñ3HÐHÑIñ
ð ñð1@ð ØØØ*ØØ3Øðñðñ
ð ñ	ð1@ð. 
õ/1@ðf9 ð 9¸4ó 9ð
@¨oð @À$ó @ð

 ð 
¸4ó 
ð
˜Fð 
 tó 
ð˜-ð ¨C°$©Jó ó,
ð / ð /¨ó /ð- ð -¨ó -ð
È4ó 
ð
°$ó 
ð
¨Tó 
ð¨oð À$ó ð(¨oð (À$ó (ðTDØ#ðDØ+.ðDØ7FðDà	óDð$ !Øñàðð ðð ð	ð
 ðð 
óð&
9 /ð 
9¸/ð 
9Èdó 
9ð
 ð 
°_ó 
ð.* ð *°sð *¸ó *ð+Ø#ð+Ø+.ð+Ø7Fð+à	ó+ð ð
°ð 
¸ò 
ó ð
ðA¨/ð A¸dó Að
¨ð 
¸Tó 
ð
>°ð >Èð >ÐPTó >ð
. ð .°Dó .ð& #8ñ	àðð "ðð  ð	ð
 
óð* €Mð
àð
ð "ð
ð 
ó	
ðà˜T‘Mðð ðð ð	ð
 �c˜3�h‘ðð 
óð*/¨ð /°$ó /ðb/à$ð/ð  ð/ð ˜Ñ(ð	/ð
 
ó/ðbà$ðð  ðð ˜Ñ(ð	ð
 
óð<	à	ó	ðØ˜t‘mðØ+3ðØ?Nðà	óð¨Fð ¸#ð À/ó ð3Ø"ð3Ø*.¨Ñ*?ð3à	ó3ðGØ"ðGà	óGóI
ðV4˜Oð 4°ó 4ð0¨Dó 0ðV D¨Ñ$9ó Vð¨	ð °dó ðBà*ðð ðð 4ð	ð
 ðð 
óð,#˜sð # tó #ð4! 	ð 4!¨dó 4!ól+ð5¨ð 5À3ó 5ðn
¸tÀC¹yð 
ÈTó 
ð& 7<ñtBØðtBØ/3ðtBà	ótBól(ð
˜$ó 
÷$r>   rF   rC  r+   )NNNc              #   ó  K  — | j                   j                  j                  }	 d| j                   j                  _        d–— || j                   j                  _        y# || j                   j                  _        w xY w­w)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‹   ©rC  Úorig_vals     r<   r‹   r‹   ·  s\   è ø€ ð �y‰y×'Ñ'×AÑA€HðFØ=Aˆ�	‰	× Ñ Ô:Ûà=Eˆ�	‰	× Ñ Õ:ø¸Xˆ�	‰	× Ñ Õ:üó   ‚!A?¤A ÁA?ÁA<Á<A?c              #   ó8  K  — | j                   j                  j                  }	 d| j                   j                  _        d| j                   j                  _        d –— || j                   j                  _        y # || j                   j                  _        w xY w­wr;  )r…   r†   r‡   Ú+traced_with_externally_visible_side_effectsr  s     r<   Ú2allow_externally_visible_side_effects_in_subtracerr  È  so   è ø€ ð �y‰y×'Ñ'×TÑT€HðYØPTˆ�	‰	× Ñ ÔMØOSˆ�	‰	× Ñ ÔLÛàPXˆ�	‰	× Ñ ÕMøÐPXˆ�	‰	× Ñ ÕMüs   ‚!B¤:A: ÁBÁ:BÂBc              #   ó  K  — | j                   j                  j                  }	 d| j                   j                  _        d –— || j                   j                  _        y # || j                   j                  _        w xY w­wr;  )r…   r†   rŽ   r  s     r<   Ú"disallow_side_effects_in_generatorr  Õ  s\   è ø€ ð �y‰y×'Ñ'×CÑC€HðHØ?Cˆ�	‰	× Ñ Ô<Ûà?Gˆ�	‰	× Ñ Õ<ø¸xˆ�	‰	× Ñ Õ<ür  )Qr
  rü   Ú
contextlibrÃ   r   r˜  r–  ræ   rQ   Úcollections.abcr   r   Útypesr   Útypingr   r   rh   Útorch.nnrš   r	   Útorch.utils._ordered_setr
   Útorch.utils._pytreer   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(   rõ   r)   Útorch._dynamo.output_graphr*   Útorch._dynamo.symbolic_convertr+   Útorch._dynamo.variables.listsr,   r±  ÚgetArtifactLoggerrV  r¯  ry   rÇ   r=   rB   rD   rF   Úcontextmanagerr‹   r  r  rÐ   r>   r<   ú<module>r(     sž  ðñó. Û Û Û Û Û Û Û ß 5Ý ß %ã Û Ý HÝ /Ý 2ç 9Ó 9÷ó õ ß NÑ Nß VÕ Vß TÓ T÷÷ ñ õ <ñ Ý6ÝHÝ:ð —>‘>×3Ñ3°H¸nÓMÐ ð
.Ø�C˜�H‰~ð
.Ø(,¨S°#¨X©ð
.ØCFð
.à	ó
.ð$ 4¨¡9ð $°t¸C±yð $ÀTó $÷
X$ñ X$ðv* ×ÑðFØ#ðFàÐÑ òFó ðFð  ×Ñð	YØ#ð	YàÐÑ ò	Yó ð	Yð ×ÑðHØ#ðHàÐÑ òHó ñHr>   