Ë
    L²j_t  ã                  ó´  — d dl m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 d dlmZmZmZmZmZ d dlmZmZmZ d dlZd dlmZ d	d
lmZ d	dlmZ er$d dlZd dl m!Z! d dlm"Z" d	dl#m$Z$ d	dl%m&Z& d	dlm'Z'm(Z( dzd„Z) ejT                  e+«      Z,ejZ                  j]                  e+d«      Z/ G d„ de0«      Z1 G d„ de1«      Z2 G d„ de1«      Z3 G d„ de1«      Z4 G d„ de4«      Z5 G d„ de4«      Z6 G d„ d e4«      Z7 G d!„ d"e4«      Z8 G d#„ d$e4«      Z9 G d%„ d&e4«      Z: G d'„ d(e1«      Z; G d)„ d*e1«      Z< G d+„ d,e1«      Z= G d-„ d.e1«      Z> G d/„ d0e1«      Z? G d1„ d2e?«      Z@ G d3„ d4e1«      ZA G d5„ d6e1«      ZB G d7„ d8e1«      ZC G d9„ d:e1«      ZD G d;„ d<e1«      ZE G d=„ d>e	«      ZF G d?„ d@e1«      ZG G dA„ dBe1«      ZH G dC„ dDe1«      ZI G dE„ dFe1«      ZJ G dG„ dHeK«      ZL G dI„ dJe1«      ZM G dK„ dLe1«      ZN G dM„ dNeN«      ZO G dO„ dPeN«      ZP G dQ„ dReP«      ZQ G dS„ dTeP«      ZR G dU„ dVeN«      ZS G dW„ dXeN«      ZT G dY„ dZeN«      ZU G d[„ d\eN«      ZV G d]„ d^eN«      ZWeXeOeYePeZeQe[eSe\eRe]eTe0eUe^eVe_eWi	Z`d{d_„Zaddd`œ	 	 	 	 	 	 	 	 	 d|da„Zbd}db„Zcd~dc„ZdejÊ                  jÌ                  jÎ                  ejÊ                  jÌ                  jÐ                  ejÊ                  jÌ                  jÒ                  ejÊ                  jÌ                  jÔ                  ejÊ                  jÌ                  jÖ                  fZl	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddd„Zm	 	 	 	 	 	 	 	 	 	 d€de„Zn ed	¬f«      d�dg„«       Zod‚dh„Zp eq«       Zrerdididjœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dƒdk„Zs G dl„ dm«      Ztd„dn„Zud…d†do„Zv	 	 	 	 	 	 d‡dp„Zwdˆdq„Zx	 d‰	 	 	 	 	 dŠdr„Zyd‹ds„ZzdŒdt„Z{d�du„Z|	 	 dŽ	 	 	 	 	 	 	 	 	 d�dv„Z}d�dw„Z~d‘dx„Z	 	 dŽ	 	 	 	 	 	 	 	 	 d�dy„Z€y)’é    )ÚannotationsN)ÚautoÚEnum)Ú	lru_cache)ÚPath)Úextract_stackÚ
format_excÚformat_listÚFrameSummaryÚStackSummary)ÚAnyÚNoReturnÚTYPE_CHECKING)Úget_file_path_2é   )Úconfig)Úcounters)ÚVariableTracker)Ú	CompileId)ÚDynamoTracerOutput)ÚInstructionTranslatorBase)ÚDynamoFrameTypeÚFrameExecStrategyc                ó,   — d| j                  dd«      z   S )NzhFor more information about this error, see: https://pytorch.org/docs/main/generated/exportdb/index.html#Ú_ú-)Úreplace)Ú	case_names    úP/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/exc.pyÚexportdb_error_messager    :   s"   € ð	Ià
×
Ñ
˜C Ó
%ñ	&ðó    Úgraph_breaksc                  ó$   ‡ — e Zd ZdZdˆ fd„Zˆ xZS )ÚTorchDynamoExceptiona6  Base exception class for all TorchDynamo-specific exceptions.

    Attributes:
        _torch_dynamo_tracer_output: Optional tracer output attached to the exception
        frame_exec_strategy: Optional frame execution strategy to control how convert_frame
            should handle this exception. When set, convert_frame will use this strategy
            instead of the default behavior. This allows exceptions to signal specific
            execution strategies (e.g., SKIP, RUN_ONLY) without requiring separate
            exception types for control flow.
    c                ó@   •— t        ‰| �  |i |¤Ž d | _        d | _        y ©N)ÚsuperÚ__init__Ú_torch_dynamo_tracer_outputÚframe_exec_strategy)ÚselfÚargsÚkwargsÚ	__class__s      €r   r(   zTorchDynamoException.__init__R   s%   ø€ Ü‰Ñ˜$Ð) &Ò)ØFJˆÔ(Ø=AˆÕ r!   )r,   r   r-   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   Ú__classcell__©r.   s   @r   r$   r$   F   s   ø„ ñ	÷Bñ Br!   r$   c                  ó   — e Zd Zy)ÚInternalTorchDynamoErrorN©r1   r2   r3   © r!   r   r8   r8   X   ó   „ Ør!   r8   c                  ó   — e Zd Zy)ÚResumePrologueTracingErrorNr9   r:   r!   r   r=   r=   \   r;   r!   r=   c                  ó2   ‡ — e Zd ZU ded<   ddœdˆ fd„Zˆ xZS )ÚRestartAnalysisú
str | NoneÚrestart_reasonN)rA   c               ó,   •— || _         t        ‰| �  |Ž  y r&   )rA   r'   r(   )r+   rA   r,   r.   s      €r   r(   zRestartAnalysis.__init__c   s   ø€ Ø,ˆÔÜ‰Ñ˜$Òr!   )r,   r   rA   r@   r/   r0   ©r1   r2   r3   Ú__annotations__r(   r5   r6   s   @r   r?   r?   `   s   ø… ØÓà@D÷  ó  r!   r?   c                  ó   — e Zd Zy)ÚSpeculationRestartAnalysisNr9   r:   r!   r   rF   rF   h   r;   r!   rF   c                  ó   — e Zd ZdZy)ÚAutogradGradRestartAnalysiszŒRaised when autograd.grad consumed grad_fns that are returned.

    On restart, autograd.grad will graph break instead of being traced.
    N©r1   r2   r3   r4   r:   r!   r   rH   rH   l   s   „ òr!   rH   c                  ó   — e Zd ZdZy)ÚRequiresGradRestartAnalysisz×Raised when a source-less requires_grad_() intermediate leaks as output.

    On restart, requires_grad_() will graph break instead of being traced,
    preserving partial acceleration for code before the call.
    NrI   r:   r!   r   rK   rK   s   s   „ òr!   rK   c                  ó   — e Zd Zy)ÚUnspecializeRestartAnalysisNr9   r:   r!   r   rM   rM   {   r;   r!   rM   c                  ó   — e Zd Zy)Ú CompileCollectiveRestartAnalysisNr9   r:   r!   r   rO   rO      r;   r!   rO   c                  ó   — e Zd Zy)ÚTensorifyScalarRestartAnalysisNr9   r:   r!   r   rQ   rQ   ƒ   r;   r!   rQ   c                  ó   — e Zd Zy)Ú	SkipFrameNr9   r:   r!   r   rS   rS   ‹   r;   r!   rS   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )ÚTorchRuntimeErrorc                ó    •— t         ‰| �  |«       || _        |�|| _        y t        j                  j
                  j                  «       | _        y r&   ©r'   r(   ÚmsgÚtorchÚ_guardsÚTracingContextr   Ú
real_stack©r+   rX   r\   r.   s      €r   r(   zTorchRuntimeError.__init__�   óJ   ø€ Ü‰Ñ˜ÔØˆŒð Ð%ð ð 	�ô —‘×-Ñ-×;Ñ;Ó=ð 	�r!   r&   ©rX   Ústrr\   úStackSummary | Noner/   r0   ©r1   r2   r3   r(   r5   r6   s   @r   rU   rU   �   ó   ø„ ÷
ò 
r!   rU   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚInvalidBackendc                ó,   •— t         ‰| �  d|›d�«       y )NzInvalid backend: z=, see `torch._dynamo.list_backends()` for available backends.)r'   r(   )r+   Únamer.   s     €r   r(   zInvalidBackend.__init__›   s   ø€ Ü‰ÑØ ˜xÐ'dÐeõ	
r!   )rg   r`   r/   r0   rb   r6   s   @r   re   re   š   s   ø„ ÷
ñ 
r!   re   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚResetRequiredc                óJ   •— t         ‰| �  t        j                  d«      «       y )NzÃ
                Must call `torch._dynamo.reset()` before changing backends.  Detected two calls to
                `torch.compile()` with a different backend compiler arguments.
                )r'   r(   ÚtextwrapÚdedent)r+   r.   s    €r   r(   zResetRequired.__init__¢   s!   ø€ Ü‰ÑÜ�O‰Oðóõ	
r!   ©r/   r0   rb   r6   s   @r   ri   ri   ¡   s   ø„ ÷
ñ 
r!   ri   c                  ó8   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zˆ xZS )ÚShortenTracebackc               ó2   •— t        ‰| �  |i |¤Ž || _        y r&   )r'   r(   Úfirst_useful_frame)r+   rq   r,   r-   r.   s       €r   r(   zShortenTraceback.__init__®   s   ø€ ô 	‰Ñ˜$Ð) &Ò)Ø"4ˆÕr!   c                ó  — | j                   }| j                  �|�t        j                  r| S |j                  | j                  ur.|j
                  }|€J d«       ‚|j                  | j                  urŒ.| j                  |«      S )Nz#internal error, please report a bug)Ú__traceback__rq   r   ÚverboseÚtb_frameÚtb_nextÚwith_traceback)r+   Útbs     r   Úremove_dynamo_framesz%ShortenTraceback.remove_dynamo_frames´   sz   € Ø×ÑˆØ×"Ñ"Ð*¨b¨j¼F¿NºNØˆKØ�k‰k ×!8Ñ!8Ñ8Ø—‘ˆBØ�>ÐHÐ#HÓH�>ð �k‰k ×!8Ñ!8Ò8ð ×"Ñ" 2Ó&Ð&r!   )r,   r   rq   útypes.FrameType | Noner-   r   r/   r0   )r/   ztyping.Self)r1   r2   r3   r(   ry   r5   r6   s   @r   ro   ro   ­   s-   ø„ ð5Øð5Ø.Dð5ØPSð5à	õ5÷'r!   ro   c                  ó0   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚBackendCompilerFailedc                óª   •— t        |dd«      | _        || _        d| j                  ›dt        |«      j                  › d|› �}t
        ‰| �  ||¬«       y )Nr1   ú?zbackend=z	 raised:
z: )rq   )ÚgetattrÚbackend_nameÚinner_exceptionÚtyper1   r'   r(   )r+   Ú
backend_fnr�   rq   rX   r.   s        €r   r(   zBackendCompilerFailed.__init__¿   s_   ø€ ô $ J°
¸CÓ@ˆÔØ.ˆÔØ˜×*Ñ*Ð-¨Z¼¸_Ó8M×8VÑ8VÐ7WÐWYÐZiÐYjÐkˆÜ‰Ñ˜Ð1CÐÕDr!   )rƒ   r   r�   Ú	Exceptionrq   rz   r/   r0   rb   r6   s   @r   r|   r|   ¾   s9   ø„ ð	Eàð	Eð #ð	Eð 3ð		Eð
 
÷	Eñ 	Er!   r|   c                  óV   ‡ — e Zd Z	 	 ddddœ	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zd	d
d„Zˆ xZS )ÚUnsupportedN)r   r\   c               óì   •— t         ‰| �  |«       |s(t        j                  j                  j                  «       }|| _        || _        || _        d | _	        | j                  «        || _        d| _        y ©NF)r'   r(   rY   rZ   r[   r   r\   rX   Ú
skip_frameÚcategoryÚadd_to_statsÚgb_typeÚlogged)r+   rX   rŒ   r‰   r   r\   r.   s         €r   r(   zUnsupported.__init__Ñ   sc   ø€ ô 	‰Ñ˜ÔÙÜŸ™×5Ñ5×CÑCÓEˆJØ$ˆŒØˆŒØ$ˆŒØ$(ˆŒØ×ÑÔØ#*ˆŒØˆ�r!   c                óô   — | j                   €J ‚t        | j                      | j                  xx   dz  cc<   t        | j                      | j                     dk  rt        | j                      | j                  = y y )Nr   r   ©rŠ   r   rX   ©r+   s    r   Úremove_from_statszUnsupported.remove_from_statsæ   sc   € Ø�}‰}Ð(Ð(Ð(Ü�—‘Ñ §¡Ó)¨QÑ.Ó)Ü�D—M‘MÑ" 4§8¡8Ñ,°Ò1Ü˜Ÿ™Ñ'¨¯©Ñ1ð 2r!   c                óN   — || _         t        |   | j                  xx   dz  cc<   y )Nr   r�   )r+   rŠ   s     r   r‹   zUnsupported.add_to_statsì   s"   € Ø ˆŒÜ�Ñ˜4Ÿ8™8Ó$¨Ñ)Ô$r!   )Ú F)rX   r`   rŒ   r`   r‰   Úboolr   r@   r\   ra   r/   r0   rm   )Úunimplemented)rŠ   r`   r/   r0   )r1   r2   r3   r(   r‘   r‹   r5   r6   s   @r   r†   r†   Ð   sf   ø„ ð
 Ø ðð !%Ø*.ñàðð ð	ð
 ðð ðð (ðð 
õó*2÷*ð *r!   r†   c                  ó   — e Zd Zy)Ú$UnknownPropertiesDuringBackwardTraceNr9   r:   r!   r   r—   r—   ñ   r;   r!   r—   c                  ó   — e Zd Zy)ÚRecompileErrorNr9   r:   r!   r   r™   r™   õ   r;   r!   r™   c                  ó   — e Zd Zy)ÚInfiniteGeneratorErrorNr9   r:   r!   r   r›   r›   ù   ó   „ àr!   r›   c                  ó   — e Zd ZdZy)ÚCondOpArgsMismatchErrorz?
    Internal error from cond() due to arguments mismatch.
    NrI   r:   r!   r   rž   rž   þ   s   „ òr!   rž   c                  ó|   — e Zd Z e«       Z e«       Z e«       Z e«       Z e«       Z e«       Z	 e«       Z
 e«       Zy)ÚUserErrorTypeN)r1   r2   r3   r   ÚDYNAMIC_CONTROL_FLOWÚANTI_PATTERNÚSTANDARD_LIBRARYÚCONSTRAINT_VIOLATIONÚDYNAMIC_DIMÚINVALID_INPUTÚINVALID_OUTPUTÚ*UNSUPPORTED_ALIASED_MUTATED_DYNAMIC_INPUTSr:   r!   r   r    r      s>   „ Ù›6ÐÙ“6€LÙ“vÐÙ›6ÐÙ“&€KÙ“F€MÙ“V€NÙ15³Ñ.r!   r    c                  ó2   ‡ — e Zd Z	 d	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )Ú	UserErrorc                ó@  •— |�<t        |t        «      sJ ‚|j                  d«      r|dz  }n|dz  }|t        |«      z  }t        ‰| �  |«       t        j                  j                  j                  «       | _
        d| _        d| _        || _        || _        || _        y)aG  
        Type of errors that would be valid in Eager, but not supported in TorchDynamo.
        The error message should tell user about next actions.

        error_type: Type of user error
        msg: Actionable error message
        case_name: (Optional) Unique name (snake case) for the usage example in exportdb.
        Nú.ú ú
F)Ú
isinstancer`   Úendswithr    r'   r(   rY   rZ   r[   r   r\   r‰   r�   Ú
error_typerX   Úmessage)r+   r±   rX   r   r.   s       €r   r(   zUserError.__init__  s“   ø€ ð Ð Ü˜i¬Ô-Ð-Ð-Ø�|‰|˜CÔ Ø�s‘
‘à�t‘�ØÔ)¨)Ó4Ñ4ˆCÜ‰Ñ˜ÔÜŸ-™-×6Ñ6×DÑDÓFˆŒØˆŒØˆŒØ$ˆŒØˆŒØˆ�r!   r&   )r±   r    rX   r`   r   r@   r/   r0   rb   r6   s   @r   rª   rª     s0   ø„ àKOðØ'ðØ.1ðØ>Hðà	÷ñ r!   rª   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )ÚStepUnsupportedc                ó¢   •— t         ‰| �  |«       || _        |s(t        j                  j
                  j                  «       }|| _        d| _        y rˆ   )	r'   r(   rX   rY   rZ   r[   r   r\   r�   r]   s      €r   r(   zStepUnsupported.__init__-  s@   ø€ Ü‰Ñ˜ÔØˆŒÙÜŸ™×5Ñ5×CÑCÓEˆJØ$ˆŒØˆ�r!   r&   r_   rb   r6   s   @r   r´   r´   ,  s   ø„ ÷ò r!   r´   c                  ó   — e Zd Zy)ÚUnsafeScriptObjectErrorNr9   r:   r!   r   r·   r·   6  r;   r!   r·   c                  ó"   ‡ — e Zd Zddˆ fd„Zˆ xZS )ÚUncapturedHigherOrderOpErrorc                ó    •— t         ‰| �  |«       || _        |�|| _        y t        j                  j
                  j                  «       | _        y r&   rW   r]   s      €r   r(   z%UncapturedHigherOrderOpError.__init__;  r^   r!   r&   r_   rb   r6   s   @r   r¹   r¹   :  rc   r!   r¹   c                  ó   — e Zd Zy)ÚFailOnRecompileLimitHitNr9   r:   r!   r   r¼   r¼   H  r;   r!   r¼   c                  ó   — e Zd Zy)ÚPackageErrorNr9   r:   r!   r   r¾   r¾   L  r;   r!   r¾   c                  ó4   ‡ — e Zd Zddœ	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚObservedExceptionN©r\   c               ó’   •— t        ‰| �  |i |¤Ž |�|| _        y t        j                  j                  j                  «       | _        y r&   )r'   r(   rY   rZ   r[   r   r\   ©r+   r\   r,   r-   r.   s       €r   r(   zObservedException.__init__R  sJ   ø€ ô 	‰Ñ˜$Ð) &Ò)ð Ð%ð ð 	�ô —‘×-Ñ-×;Ñ;Ó=ð 	�r!   ©r,   r   r\   ra   r-   r   r/   r0   rb   r6   s   @r   rÀ   rÀ   P  s3   ø„ ð =Añ
Øð
Ø&9ð
ØLOð
à	÷
ñ 
r!   rÀ   c                  ó@   ‡ — e Zd ZU ded<   ddœ	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚObservedUserStopIterationz
Any | NoneÚvalueNrÁ   c               óh   •— t         ‰| �  d|¬«       t        |«      dkD  r|d   | _        y d | _        y )Nzunhandled `raise StopIteration`rÁ   r   )r'   r(   ÚlenrÇ   rÃ   s       €r   r(   z"ObservedUserStopIteration.__init__c  s5   ø€ ô 	‰ÑÐ:ÀzÐÔRÜˆt‹9�qŠ=Ø˜a™ˆD�JàˆD�Jr!   rÄ   rC   r6   s   @r   rÆ   rÆ   ]  s9   ø… àÓð
 =AñØðØ&9ðØLOðà	÷ñ r!   rÆ   c                  ó   — e Zd Zy)ÚObservedLookupErrorNr9   r:   r!   r   rË   rË   m  rœ   r!   rË   c                  ó   — e Zd Zy)ÚObservedIndexErrorNr9   r:   r!   r   rÍ   rÍ   r  rœ   r!   rÍ   c                  ó   — e Zd Zy)ÚObservedKeyErrorNr9   r:   r!   r   rÏ   rÏ   w  rœ   r!   rÏ   c                  ó   — e Zd Zy)ÚObservedGeneratorExitNr9   r:   r!   r   rÑ   rÑ   |  r;   r!   rÑ   c                  ó   — e Zd Zy)ÚObservedAttributeErrorNr9   r:   r!   r   rÓ   rÓ   €  rœ   r!   rÓ   c                  ó   — e Zd Zy)ÚObservedRuntimeErrorNr9   r:   r!   r   rÕ   rÕ   …  rœ   r!   rÕ   c                  ó   — e Zd Zy)ÚObservedNotImplementedErrorNr9   r:   r!   r   r×   r×   Š  r;   r!   r×   c                  ó   — e Zd Zy)ÚObservedTypeErrorNr9   r:   r!   r   rÙ   rÙ   Ž  rœ   r!   rÙ   c                óŠ   — | t         vr3t        | dt        | «      «      }t        d|› d�t        fi «      t         | <   t         |    S )Nr1   ÚObservedÚError)Úobserved_exception_mapr   r`   r‚   rÀ   )Úexc_typerg   s     r   Úget_dynamo_observed_exceptionrß      sN   € ØÔ-Ñ-Ü�x ¬S°«]Ó;ˆÜ+/Ø�t�f˜EÐ"Ô%6Ð$8¸"ó,
Ô˜xÑ(ô " (Ñ+Ð+r!   )r,   r-   c               óz  — ddl m} ddlm} |r2|D �cg c]&  }t	        |t
        «      r|j                  ||«      n|‘Œ( }}ng }|j                  || «      j                  |||xs i «      }t	        ||«      sJ ‚|j                  |«       |j                  j                  |«       t        | «      }	|r |	|Ž ‚|	‚c c}w )Nr   )ÚExceptionVals)ÚSourcelessBuilder)Úsymbolic_convertrá   Úvariables.builderrâ   r¯   r`   ÚcreateÚcall_functionÚ_attach_traceback_to_exceptionÚexn_vt_stackÚset_current_exceptionrß   )
rÞ   Útxr,   r-   rá   râ   ÚargÚargs_Úexception_vtÚ
raised_excs
             r   Úraise_observed_exceptionrï   ª  sÎ   € õ 0Ý4áð ö
àô 2<¸CÄÔ1EÐ×$Ñ$ R¨Ô-È3ÑNð
ˆñ 
ð
 (*ˆð %×+Ñ+¨B°Ó9×GÑGØ
ˆE�6’<˜Ró€Lô �l MÔ2Ð2Ð2Ø×%Ñ% lÔ3Ø‡O�O×)Ñ)¨,Ô7Ü.¨xÓ8€JáÙ˜%Ð Ð Ø
Ðùò'
s   “+B8c                ó*   — t        t        | |g¬«       y)z:Raise a TypeError as an observed exception during tracing.)r,   N)rï   Ú	TypeError)rê   rX   s     r   Úraise_type_errorrò   Ë  s   € äœY¨°#°Ö7r!   c                ó8   — | j                   j                  «        y r&   )rè   Úclear_current_exception)rê   s    r   Úhandle_observed_exceptionrõ   Ð  s   € ð2 ‡O�O×+Ñ+Õ-r!   c               ó¾   ‡— t        | |«      Št        j                  j                  dd„ ˆfd„¬«       t        j                  d‰«       t        } |||||| d¬«       y )NÚartifactc                 ó   — dddœS )NÚdynamo_graph_break_reasonÚstring)rg   Úencodingr:   r:   r!   r   ú<lambda>z,unimplemented_with_warning.<locals>.<lambda>	  s   € Ø/Ø ñ
€ r!   c                 ó   •— ‰ S r&   r:   )Úgraph_break_msgs   €r   rü   z,unimplemented_with_warning.<locals>.<lambda>  s   ø€ ˜?€ r!   )Úmetadata_fnÚ
payload_fnz%sT)rŒ   ÚcontextÚexplanationÚhintsÚfrom_excÚlog_warning)Úformat_error_msg_verboserY   Ú_loggingÚtrace_structuredÚgraph_breaks_logÚdebugr•   )ÚeÚcoderŒ   r  r  r  Ú_unimplementedrþ   s          @r   Úunimplemented_with_warningr  ö  sf   ø€ ô  /¨q°$Ó7€OÜ	‡N�N×#Ñ#Øñ
ó +ð $ô ô ×Ñ˜4 Ô1Ü"€NáØØØØØØör!   c                ó
  — t        j                  |d«      j                  «       }dj                  d„ |D «       «      }t        j                  |d«      j                  «       }| › d|› d|› d|› �}t	        | «      }|r|d|› �z  }|S )Nú    r®   c              3  ój   K  — | ]+  }d t        j                  |d«      j                  «       z   –— Œ- y­w)z  Hint: r  N)rk   ÚindentÚlstrip)Ú.0Úhints     r   ú	<genexpr>z-format_graph_break_message.<locals>.<genexpr>#  s.   è ø€ ò Ø@Dˆ
”X—_‘_ T¨6Ó2×9Ñ9Ó;Õ;ñùs   ‚13z
  Explanation: z

  Developer debug context: z:

 For more details about this graph break, please visit: )rk   r  r  ÚjoinÚget_gbid_documentation_link)rŒ   r  r  r  Ú	hints_strrX   Údocumentation_links          r   Úformat_graph_break_messager    s¨   € ô —/‘/ +¨vÓ6×=Ñ=Ó?€KØ—	‘	ñ ØHMôó €Iô �o‰o˜g vÓ.×5Ñ5Ó7€Gð 	€	ð 
Øˆ}ð Ø
€ð à#˜9ð(€Cô 5°WÓ=ÐáØÐMÐN`ÐMaÐbÑbˆà€Jr!   )Úmaxsizec                 óŠ  — 	 t        t        «      j                  «       j                  } t	        dt        | «      d«      }t        |«      5 }t        j                  |«      }ddd«       i }j                  «       D ]  \  }}|D ]
  }|||d   <   Œ Œ |S # 1 sw Y   Œ4xY w# t        $ r t        j                  d«       i }Y ŒYw xY w)zÑ
    Loads the gb_type to gb_id map from the graph break registry from JSON file with caching.

    Includes historical gb_type (mapping behavior of duplicate gb_types with different gb_ids is undefined).
    r“   zgraph_break_registry.jsonNz!Error accessing the registry fileÚGb_type)r   Ú__file__ÚresolveÚparentr   r`   ÚopenÚjsonÚloadr„   ÚlogÚ	exceptionÚitems)Ú
script_dirÚregistry_pathÚfÚregistryÚmappingÚkÚvÚentrys           r   Ú_load_gb_type_to_gb_id_mapr0  6  sÉ   € ð
Üœ(“^×+Ñ+Ó-×4Ñ4ˆ
Ü'Ø”�J“Ð!<ó
ˆô �-Ó ð 	$ AÜ—y‘y “|ˆH÷	$ð €GØ—‘Ó ò *‰ˆˆ1Øò 	*ˆEØ()ˆG�E˜)Ñ$Ò%ñ	*ð*ð €N÷	$ð 	$ûäò Ü�‰Ð9Ô:àŠðús*   ‚AB Á
BÁ B ÂBÂB Â CÃCc                óX   — d}t        «       }| |v r|› d||    j                  d«      › d�S y)zä
    Retrieves the GBID documentation link for a given graph break type.

    Args:
        gb_type: The graph break type to look up.

    Returns:
        A string containing the documentation URL if found, otherwise None.
    z;https://meta-pytorch.github.io/compile-graph-break-site/gb/ÚgbÚGBz.htmlN)r0  r  )rŒ   ÚGRAPH_BREAK_SITE_URLÚgb_type_to_gb_id_maps      r   r  r  Q  sO   € ð 	Fð ô 6Ó7ÐàÐ&Ñ&à#Ð$ BÐ';¸GÑ'D×'KÑ'KÈDÓ'QÐ&RÐRWÐXð	
ð r!   F)r  r  r‰   c                ó*  — t        | |||«      }|rt        j                  |«       |t        urZd}t	        |d«      r|j
                  }t        |t        «      r |j                  › d|› �}t        || ||¬«      ‚t        || ||¬«      |‚t        || |«      ‚)a  
    Called within dynamo to cause a graph break.
    Args:
        gb_type: Context-free graph break type. It should be a short string without any
                 information specific to the tracing context (i.e. no dynamically-generated strings)
        context: Developer context for the graph break. It can contain tracing context/dynamic strings.
        explanation: User-facing context-dependent explanation for the graph break. Can be dynamic.
        hints: List of user-facing hints for the graph break.
    Nr\   zJ

*** While handling this graph break, another graph break occurred: ***

rÁ   )	r  r%  ÚwarningÚ_NOTHINGÚhasattrr\   r¯   r†   rX   )	rŒ   r  r  r  r  r  r‰   rX   Úpast_real_stacks	            r   r•   r•   l  s¡   € ô( % W¨g°{ÀEÓ
J€CáÜ�‰�CÔØ”xÑØˆÜ�8˜\Ô*Ø&×1Ñ1ˆOÜ�h¤Ô,Ø—\‘\�NÐ"pÐqtÐpuÐvˆCä˜c 7¨JÀ?ÔSÐSäØ�˜*°ô
àð	ô �c˜7 JÓ
/Ð/r!   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚKeyErrorMsgc                ó   — || _         y r&   )rÇ   )r+   rÇ   s     r   r(   zKeyErrorMsg.__init__—  s	   € Øˆ�
r!   c                ó,   — t        | j                  «      S r&   )r`   rÇ   r�   s    r   Ú__str__zKeyErrorMsg.__str__š  s   € Ü�4—:‘:‹Ðr!   c                ó"   — | j                  «       S r&   )r?  r�   s    r   Ú__repr__zKeyErrorMsg.__repr__�  s   € Ø�|‰|‹~Ðr!   N)rÇ   r   r/   r0   )r/   r`   )r1   r2   r3   r(   r?  rA  r:   r!   r   r<  r<  –  s   „ óóôr!   r<  c                ó|   — t        | d«      r/|j                  d«      }|d   › d| j                  › |d   › |d   › �}|S )NÚ	_hop_namez
  Explanation:r   z
  Higher Order Operator: r   é   )r9  Ú	partitionrC  )ÚexcrX   Úliness      r   Ú!augment_exc_message_with_hop_namerH  ¡  sQ   € ô ˆs�KÔ Ø—‘Ð0Ó1ˆà�Q‰xˆjÐ3°C·M±M°?À5ÈÁ8À*ÈUÐSTÉXÈJÐWð 	ð €Jr!   c                óž  — dd l }d | _        t        | «      }|�>t        |«      dkD  r0|d   | _        |ddj	                  |j                  |«      «      › �z  }t        j                  r,t        | d«      r |d| j                  › d| j                  › d�z  }t        j                  st        | d	«      r|d
z  }t        | d«      r~t        | j                  d«      rht        | j                  d«      r5|d| j                  j                  › d| j                  j                  › d�z  }n|d| j                  j                  › d�z  }t        | j                  «      dk(  rdnt        | j                  d   «      }t!        | |«      }t#        | t$        «      r%t'        ||z   «      f| j                  dd  z   | _        y ||z   }|f| j                  dd  z   | _        y )Nr   éÿÿÿÿz
from user code:
 r“   Úrecord_filenamez!
Last frame execution written to zD. To run only this frame while debugging, run torch._dynamo.replay('z').
r\   z´
Set TORCHDYNAMO_VERBOSE=1 for the internal stack trace (please do this especially if you're reporting a bug to PyTorch). For even more developer context, set TORCH_LOGS="+dynamo"
r�   Úminifier_pathÚbuck_commandz
Minifier script written to zW. Run this buck command to find the smallest traced graph which reproduces this error: r®   zQ. Run this script to find the smallest traced graph which reproduces this error.
r   )Ú	tracebackÚinnermost_user_frame_summaryÚget_real_stackrÉ   r  r
   r   Úreplay_record_enabledr9  rK  rt   r�   rL  rM  r,   r`   rH  r¯   ÚKeyErrorr<  )rF  rX   ÚexportrN  r\   Úold_msgÚnew_msgs          r   Úaugment_exc_messagerV  ­  sÜ  € Ûà'+€CÔ$ä Ó$€JØÐ¤# j£/°AÒ"5Ø+5°b©>ˆÔ(ØÐ% b§g¡g¨i×.CÑ.CÀJÓ.OÓ&PÐ%QÐRÑRˆä×#Ò#¬°Ð5FÔ(GØØ0°×1DÑ1DÐ0Eð FØ×+Ñ+Ð,¨Eð3ñ	
ˆô
 �>Š>œg c¨<Ô8ØðJñ	
ˆô ˆsÐ%Ô&¬7Ø×Ñ˜_ô,ô �3×&Ñ&¨Ô7ØØ/°×0CÑ0C×0QÑ0QÐ/Rð S0à03×0CÑ0C×0PÑ0PÐ/QÐQSðUñ‰Cð Ø/°×0CÑ0C×0QÑ0QÐ/Rð S_ð _ñˆCô
 ˜Ÿ™“M QÒ&‰b¬C°·±¸±Ó,<€Gä/°°WÓ=€Gä�#”xÔ Ü ¨#¡Ó.Ð0°3·8±8¸A¸B°<Ñ?ˆ�à˜C‘-ˆØ�: §¡¨¨ Ñ,ˆ�r!   c                ó�   — d }d }| j                   �,| j                   j                  }| j                   j                  }|| _        ||fS r&   )rO  ÚfilenameÚlinenoÚ
compile_id)r  rZ  rX  rY  s       r   Úget_exc_messager[  Þ  sN   € ð €HØ€FØ×%Ñ%Ð1Ø×1Ñ1×:Ñ:ˆØ×/Ñ/×6Ñ6ˆØ€A„LØ�VÐÐr!   c                 ó(   — t        t        «       «      S r&   )Úfilter_stackr   r:   r!   r   Úget_stack_above_dynamor^  ê  s   € Üœ›Ó(Ð(r!   c                ó€   — t        | dd «      }|€y |�t        «       }n
t        «       }t        j                  ||z   «      S )Nr\   )r   r^  r   Ú	from_list)rF  Úframer\   Ústack_above_dynamos       r   rP  rP  î  sM   € ô ˜˜l¨DÓ1€JØÐØð Ðô 4Ó5Ñä)›^Ðä×!Ñ!Ð"4°zÑ"AÓBÐBr!   c                óØ   — t        «       }| D ]Z  }|j                  €Œd|j                  v r |S d|j                  v s|j                  rd|j                  v rŒJ|j                  |«       Œ\ |S )NÚconvert_frameÚ
eval_frameztorch._dynamo.optimize()r   rX  ÚlineÚappend)ÚstackÚ
user_stackra  s      r   r]  r]    sv   € Ü“€JØò 	!ˆØ�>‰>Ð!ØØ˜eŸn™nÑ,Øð Ðð ˜5Ÿ>™>Ñ)Ø�JŠJÐ4¸¿
¹
ÑBàØ×Ñ˜%Õ ð	!ð Ðr!   c                ój   — ddl m} t        j                  |› d�| «      }|r|j	                  d«      S | S )Nr   )ÚTORCH_DYNAMO_RESUME_IN_PREFIXz_(\w+)_at_\d+)Úresume_executionrk  ÚreÚmatchÚgroup)rg   rk  rn  s      r   Úremove_resume_prefixrp    s4   € Ý?ä�H‰HÐ5Ð6°oÐFÈÓM€EÙØ�{‰{˜1‹~ÐØ€Kr!   c                óâ   — t        «       }| D ]_  }|j                  €Œt        |j                  «      }|r!|r|d   j                  |k(  r||d<   ||_        ŒH||_        |j	                  |«       Œa |S )a1  
    When we graph break, we create a resume function and make a regular Python call
    to it, which gets intercepted by Dynamo. This behavior is normally shown in the
    traceback, which can be confusing to a user. So we can filter out resume frames
    for better traceback clarity.

    Example:
    File "..." line 3, in f
        <line 3>
    File "..." line 5, in torch_dynamo_resume_in_f_at_80
        <line 5>
    File "..." line 10, in torch_dynamo_resume_in_f_at_120
        <line 10>

    becomes
    File "..." line 10, in f
        <line 10>
    rJ  )r   rX  rp  rg   rg  )rh  Ú	new_stackra  rg   s       r   Úcollapse_resume_framesrs  (  sx   € ô( “€IØò 	$ˆØ�>‰>Ð!ØÜ# E§J¡JÓ/ˆÙ™ )¨B¡-×"4Ñ"4¸Ò"<Ø!ˆI�b‰MØˆE�JàˆEŒJØ×Ñ˜UÕ#ð	$ð Ðr!   c                óò   — d|j                   › d|j                  › d|j                  › d�}|dz  }|t        «       z  }t	        | |«      }|�,|dz  }|dj                  t        |«      «      z  }|dz  }|dz  }|S )	NúWON'T CONVERT r­   ú line r®   z.========== TorchDynamo Stack Trace ==========
zY
========== The above exception occurred while processing the following code ==========

r“   z
==========)Úco_nameÚco_filenameÚco_firstlinenor	   rP  r  r
   )rF  r  rK  ra  rX   r\   s         r   r  r  K  sŸ   € ð ˜Ÿ™˜ a¨×(8Ñ(8Ð'9¸À×@SÑ@SÐ?TÐTVÐWð ð ÐCÑC€CØŒ:‹<Ñ€CÜ  UÓ+€JØÐØðñ	
ˆð 	ˆr�w‰w”{ :Ó.Ó/Ñ/ˆØˆt‰ˆØˆx‰ˆà€Jr!   c           	     óZ   — t        | dd«      › dt        | dd«      › dt        | dd«      › d�S )	Nrw  z	<unknown>z (rx  rv  ry  r   ú))r   )r  s    r   Úformat_frame_infor|  f  sF   € ä�4˜ KÓ0Ð
1ð 2Ü�D˜-¨Ó5Ð6ð 7Ü˜Ð.°Ó2Ð3°1ð	6ðr!   c                ó6   — | �t        | «      }d|› d|› �S d|› �S )Nz6torch.compile intentionally decided to skip the frame z! and fall back to eager.
Reason: zVtorch.compile intentionally decided to skip the frame and fall back to eager.
Reason: )r|  )r  ÚreasonÚ
frame_infos      r   Úformat_skip_frame_messager€  n  sB   € ØÐÜ& tÓ,ˆ
àDÀZÀLð QØ�hð ð	
ðØ�hð ð	
r!   c           	     ó¦   — t         j                  rt        | |||«      S d|j                  › d|j                  › d|j
                  › dt        «       › �S )Nru  r­   rv  z 
due to: 
)r   rt   r  rw  rx  ry  r	   )rF  r  rK  ra  s       r   Úformat_error_msgr‚  |  sW   € ô ‡~‚~Ü'¨¨T°?ÀEÓJÐJØ˜DŸL™L˜>¨¨4×+;Ñ+;Ð*<ð =Ø×ÑÐ˜=¬«¨ð8ð 8r!   )r   r`   r/   r`   )rÞ   útype[Exception]r/   ztype[ObservedException])
rÞ   rƒ  rê   r   r,   z(list[VariableTracker] | list[str] | Noner-   z!dict[str, VariableTracker] | Noner/   r   )rê   r   rX   r`   r/   r   )rê   r   r/   r0   )r  r„   r  útypes.CodeTyperŒ   r`   r  r`   r  r`   r  ú	list[str]r/   r   )
rŒ   r`   r  r`   r  r`   r  r…  r/   r`   )r/   zdict[str, Any])rŒ   r`   r/   r@   )rŒ   r`   r  r`   r  r`   r  r…  r  r   r  r”   r‰   r”   r/   r   )rF  r„   rX   r`   r/   r`   )r®   F)rF  r„   rX   r`   rS  r”   r/   r0   )r  r„   rZ  r   r/   ztuple[str | None, int | None])r/   r   r&   )rF  r„   ra  úDynamoFrameType | Noner/   ra   )rh  r   r/   r   )rg   r`   r/   r`   )rh  z!StackSummary | list[FrameSummary]r/   r   )NN)
rF  r„   r  r„  rK  r@   ra  r†  r/   r`   )r  r„  r/   r`   )r  ztypes.CodeType | Noner~  r`   r/   r`   )�Ú
__future__r   r#  Úloggingrm  rk   ÚtypingÚenumr   r   Ú	functoolsr   Úpathlibr   rN  r   r	   r
   r   r   r   r   r   Útorch._guardsrY   Útorch._utils_internalr   r“   r   Úutilsr   ÚtypesÚtorch._dynamo.variablesr   r   Úoutput_graphr   rã   r   r   r   r    Ú	getLoggerr1   r%  r  ÚgetArtifactLoggerr	  ÚRuntimeErrorr$   r8   r=   r?   rF   rH   rK   rM   rO   rQ   rS   rU   re   ri   ro   r|   r†   r—   r™   r›   rž   r    rª   r´   r·   r¹   r„   r¼   r¾   rÀ   rÆ   rË   rÍ   rÏ   rÑ   rÓ   rÕ   r×   rÙ   ÚStopIterationÚLookupErrorÚ
IndexErrorÚGeneratorExitrR  ÚAttributeErrorÚNotImplementedErrorrñ   rÝ   rß   rï   rò   rõ   Ú_subclassesÚfake_tensorÚDataDependentOutputExceptionÚDynamicOutputShapeExceptionÚUnsupportedOperatorExceptionÚUnsupportedFakeTensorExceptionÚ$UnsupportedMutationAliasingExceptionÚ!exceptions_allowed_to_be_fallbackr  r  r0  r  Úobjectr8  r•   r<  rH  rV  r[  r^  rP  r]  rp  rs  r  r|  r€  r‚  r:   r!   r   ú<module>r¥     s]  ðÝ "ðó2 Û Û 	Û Û ß Ý Ý ß XÕ Xß /Ñ /ã Ý 1å Ý ñ Ûå7Ý'å0Ý;ß9óð €g×Ñ˜Ó!€Ø—>‘>×3Ñ3°H¸nÓMÐ ôB˜<ô Bô$	Ð3ô 	ô	Ð!5ô 	ô Ð*ô  ô	 ô 	ô /ô ô /ô ô	 /ô 	ô	 ô 	ô	 _ô 	ô	Ð$ô 	ô
Ð,ô 
ô
Ð)ô 
ô	
Ð(ô 	
ô'Ð+ô 'ô"
EÐ,ô 
Eô$*Ð&ô *ôB	Ð+?ô 	ô	Ð)ô 	ô	Ð1ô 	ô
Ð2ô ô8�Dô 8ôÐ$ô ô:Ð*ô ô	Ð2ô 	ô
Ð#7ô 
ô	˜iô 	ô	Ð'ô 	ô

Ð,ô 

ôÐ 1ô ô 	Ð+ô 	ô
	Ð,ô 	ô
	Ð*ô 	ô
	Ð-ô 	ô	Ð.ô 	ô
	Ð,ô 	ô
	Ð"3ô 	ô	Ð)ô 	ð Ð,ØÐ$ØÐ"ØÐ(ØÐØÐ*ØÐ&ØÐ4ØÐ ð
Ð ó,ð 6:Ø04ñØðà!ðð 3ð	ð
 .ðð óóB8ó
.ð< 
×Ñ×!Ñ!×>Ñ>Ø	×Ñ×!Ñ!×=Ñ=Ø	×Ñ×!Ñ!×>Ñ>Ø	×Ñ×!Ñ!×@Ñ@Ø	×Ñ×!Ñ!×FÑFð%Ð !ð#Øð#à
ð#ð ð	#ð
 ð#ð ð#ð ð#ð ó#ðLØðàðð ðð ð	ð
 	óñ4 �1Ôòó ðó4ñ0 ‹8€ð ØØñ%0àð%0ð ð%0ð ð	%0ð
 ð%0ð ð%0ð ð%0ð ð%0ð ó%0÷Tñ ó	ô.-ðb	Øð	Ø'ð	à"ó	ó)ð
 59ðCØ	ðCØ1ðCàóCóBó ó ðL #'Ø$(ð	Ø	ðà
ðð  ðð "ð	ð
 	óó6ó
ð" #'Ø$(ð		8Ø	ð	8à
ð	8ð  ð	8ð "ð		8ð
 	ô	8r!   