Ë
    øÿæinq  ã                  ó¤  — 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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&m'Z' dxd„Z( ejR                  e*«      Z+ejX                  j[                  e*d«      Z. G d„ de/«      Z0 G d„ de0«      Z1 G d„ de0«      Z2 G d„ de0«      Z3 G d„ de3«      Z4 G d„ de3«      Z5 G d„ de3«      Z6 G d „ d!e3«      Z7 G d"„ d#e3«      Z8 G d$„ d%e0«      Z9 G d&„ d'e0«      Z: G d(„ d)e0«      Z; G d*„ d+e0«      Z< G d,„ d-e0«      Z= G d.„ d/e=«      Z> G d0„ d1e0«      Z? G d2„ d3e0«      Z@ G d4„ d5e0«      ZA G d6„ d7e0«      ZB G d8„ d9e0«      ZC G d:„ d;e	«      ZD G d<„ d=e?«      ZE G d>„ d?e0«      ZF G d@„ dAe0«      ZG G dB„ dCe0«      ZH G dD„ dEeI«      ZJ G dF„ dGeI«      ZK G dH„ dIe0«      ZL G dJ„ dKe0«      ZM G dL„ dMeM«      ZN G dN„ dOeM«      ZO G dP„ dQeO«      ZP G dR„ dSeO«      ZQ G dT„ dUeM«      ZR G dV„ dWeM«      ZS G dX„ dYeM«      ZT G dZ„ d[eM«      ZU G d\„ d]eM«      ZVeWeNeXeOeYePeZeRe[eQe\eSe/eTe]eUe^eVi	Z_dyd^„Z`ddd_œ	 	 	 	 	 	 	 	 	 dzd`„Zad{da„ZbejÆ                  jÈ                  jÊ                  ejÆ                  jÈ                  jÌ                  ejÆ                  jÈ                  jÎ                  ejÆ                  jÈ                  jÐ                  ejÆ                  jÈ                  jÒ                  fZj	 	 	 	 	 	 	 	 	 	 	 	 	 	 d|db„Zk	 	 	 	 	 	 	 	 	 	 d}dc„Zl ed	¬d«      d~de„«       Zmddf„Zn eo«       Zpepdgdgdhœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d€di„Zq G dj„ dk«      Zrd�dl„Zsd‚dƒdm„Zt	 	 	 	 	 	 d„dn„Zud…do„Zv	 d†	 	 	 	 	 d‡dp„Zwdˆdq„Zxd‰dr„ZydŠds„Zz	 	 d‹	 	 	 	 	 	 	 	 	 dŒdt„Z{d�du„Z|dŽdv„Z}	 	 d‹	 	 	 	 	 	 	 	 	 dŒdw„Z~y)�é    )ÚannotationsN)ÚautoÚEnum)Ú	lru_cache)ÚPath)Úextract_stackÚ
format_excÚformat_listÚFrameSummaryÚStackSummary)ÚAnyÚNoReturnÚOptionalÚTYPE_CHECKING)Úget_file_path_2é   )Úconfig)Úcounters)Ú	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    úf/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/torch/_dynamo/exc.pyÚexportdb_error_messager    9   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__Q   s%   ø€ Ü‰Ñ˜$Ð) &Ò)ØIMˆÔ(Ø=AˆÕ r!   )r,   r   r-   r   ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   Ú__classcell__©r.   s   @r   r$   r$   E   s   ø„ ñ	÷Bñ Br!   r$   c                  ó   — e Zd Zy)ÚInternalTorchDynamoErrorN©r1   r2   r3   © r!   r   r8   r8   W   ó   „ Ø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úOptional[str]Úrestart_reasonN)rA   c               ó,   •— || _         t        ‰| �  |Ž  y r&   )rA   r'   r(   )r+   rA   r,   r.   s      €r   r(   zRestartAnalysis.__init__b   s   ø€ Ø,ˆÔÜ‰Ñ˜$Òr!   )r,   r   rA   r@   r/   r0   ©r1   r2   r3   Ú__annotations__r(   r5   r6   s   @r   r?   r?   _   s   ø… Ø!Ó!àCG÷  ó  r!   r?   c                  ó   — e Zd Zy)ÚSpeculationRestartAnalysisNr9   r:   r!   r   rF   rF   g   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   k   s   „ òr!   rH   c                  ó   — e Zd Zy)ÚUnspecializeRestartAnalysisNr9   r:   r!   r   rK   rK   r   r;   r!   rK   c                  ó   — e Zd Zy)Ú CompileCollectiveRestartAnalysisNr9   r:   r!   r   rM   rM   v   r;   r!   rM   c                  ó   — e Zd Zy)ÚTensorifyScalarRestartAnalysisNr9   r:   r!   r   rO   rO   z   r;   r!   rO   c                  ó   — e Zd Zy)Ú	SkipFrameNr9   r:   r!   r   rQ   rQ   ‚   r;   r!   rQ   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+   rV   rZ   r.   s      €r   r(   zTorchRuntimeError.__init__‡   óJ   ø€ Ü‰Ñ˜ÔØˆŒð Ð%ð ð 	�ô —‘×-Ñ-×;Ñ;Ó=ð 	�r!   r&   ©rV   ÚstrrZ   úStackSummary | Noner/   r0   ©r1   r2   r3   r(   r5   r6   s   @r   rS   rS   †   ó   ø„ ÷
ò 
r!   rS   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!   )re   r^   r/   r0   r`   r6   s   @r   rc   rc   ‘   s   ø„ ÷
ñ 
r!   rc   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   r`   r6   s   @r   rg   rg   ˜   s   ø„ ÷
ñ 
r!   rg   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+   ro   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__ro   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   ro   úOptional[types.FrameType]r-   r   r/   r0   )r/   ztyping.Self)r1   r2   r3   r(   rw   r5   r6   s   @r   rm   rm   ¤   s-   ø„ ð5Øð5Ø.Gð5ØSVð5à	õ5÷'r!   rm   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: )ro   )ÚgetattrÚbackend_nameÚinner_exceptionÚtyper1   r'   r(   )r+   Ú
backend_fnr   ro   rV   r.   s        €r   r(   zBackendCompilerFailed.__init__¶   s_   ø€ ô $ J°
¸CÓ@ˆÔØ.ˆÔØ˜×*Ñ*Ð-¨Z¼¸_Ó8M×8VÑ8VÐ7WÐWYÐZiÐYjÐkˆÜ‰Ñ˜Ð1CÐÕDr!   )r�   r   r   Ú	Exceptionro   rx   r/   r0   r`   r6   s   @r   rz   rz   µ   s9   ø„ ð	Eàð	Eð #ð	Eð 6ð		Eð
 
÷	Eñ 	Er!   rz   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   rZ   c               óì   •— t         ‰| �  |«       |s(t        j                  j                  j                  «       }|| _        || _        || _        d | _	        | j                  «        || _        d| _        y ©NF)r'   r(   rW   rX   rY   r   rZ   rV   Ú
skip_frameÚcategoryÚadd_to_statsÚgb_typeÚlogged)r+   rV   rŠ   r‡   r   rZ   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   rV   ©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)rV   r^   rŠ   r^   r‡   Úboolr   r@   rZ   r_   r/   r0   rk   )Ú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        ‰| �  ||r|n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Ú.Ú Ú
r¨   )Ú
isinstancer^   Úendswithr    r'   r(   Ú
error_typeÚmessage)r+   r¯   rV   r   r.   s       €r   r(   zUserError.__init__  sj   ø€ ð Ð Ü˜i¬Ô-Ð-Ð-Ø�|‰|˜CÔ Ø�s‘
‘à�t‘�ØÔ)¨)Ó4Ñ4ˆCÜ‰Ñ˜©9™i¸+ÔFØ$ˆŒØˆ�r!   r&   )r¯   rž   rV   r^   r   r@   r/   r0   r`   r6   s   @r   r¨   r¨     s0   ø„ àNRðØ'ðØ.1ðØ>Kðà	÷ñ 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(   rV   rW   rX   rY   r   rZ   r‹   r[   s      €r   r(   zStepUnsupported.__init__   s@   ø€ Ü‰Ñ˜ÔØˆŒÙÜŸ™×5Ñ5×CÑCÓEˆJØ$ˆŒØˆ�r!   r&   r]   r`   r6   s   @r   r²   r²     s   ø„ ÷ò r!   r²   c                  ó   — e Zd Zy)ÚUnsafeScriptObjectErrorNr9   r:   r!   r   rµ   rµ   )  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&   rU   r[   s      €r   r(   z%UncapturedHigherOrderOpError.__init__.  r\   r!   r&   r]   r`   r6   s   @r   r·   r·   -  ra   r!   r·   c                  ó   — e Zd Zy)ÚIncorrectUsageNr9   r:   r!   r   rº   rº   8  r;   r!   rº   c                  ó   — e Zd Zy)ÚFailOnRecompileLimitHitNr9   r:   r!   r   r¼   r¼   ?  r;   r!   r¼   c                  ó   — e Zd Zy)ÚPackageErrorNr9   r:   r!   r   r¾   r¾   C  r;   r!   r¾   c                  ó4   ‡ — e Zd Zddœ	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚObservedExceptionN©rZ   c               ó’   •— t        ‰| �  |i |¤Ž |�|| _        y t        j                  j                  j                  «       | _        y r&   )r'   r(   rW   rX   rY   r   rZ   ©r+   rZ   r,   r-   r.   s       €r   r(   zObservedException.__init__I  sJ   ø€ ô 	‰Ñ˜$Ð) &Ò)ð Ð%ð ð 	�ô —‘×-Ñ-×;Ñ;Ó=ð 	�r!   ©r,   r   rZ   úOptional[StackSummary]r-   r   r/   r0   r`   r6   s   @r   rÀ   rÀ   G  s4   ø„ ð @Dñ
Øð
Ø&<ð
ØORð
à	÷
ñ 
r!   rÀ   c                  ó@   ‡ — e Zd ZU ded<   ddœ	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚObservedUserStopIterationzOptional[Any]Ú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__Z  s5   ø€ ô 	‰ÑÐ:ÀzÐÔRÜˆt‹9�qŠ=Ø˜a™ˆD�JàˆD�Jr!   rÄ   rC   r6   s   @r   rÇ   rÇ   T  s:   ø… àÓð
 @DñØðØ&<ðØORðà	÷ñ r!   rÇ   c                  ó   — e Zd Zy)ÚObservedLookupErrorNr9   r:   r!   r   rÌ   rÌ   d  rš   r!   rÌ   c                  ó   — e Zd Zy)ÚObservedIndexErrorNr9   r:   r!   r   rÎ   rÎ   i  rš   r!   rÎ   c                  ó   — e Zd Zy)ÚObservedKeyErrorNr9   r:   r!   r   rÐ   rÐ   n  rš   r!   rÐ   c                  ó   — e Zd Zy)ÚObservedGeneratorExitNr9   r:   r!   r   rÒ   rÒ   s  r;   r!   rÒ   c                  ó   — e Zd Zy)ÚObservedAttributeErrorNr9   r:   r!   r   rÔ   rÔ   w  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_typere   s     r   Úget_dynamo_observed_exceptionrà   —  sN   € ØÔ-Ñ-Ü�x ¬S°«]Ó;ˆÜ+/Ø�t�f˜EÐ"Ô%6Ð$8¸"ó,
Ô˜xÑ(ô " (Ñ+Ð+r!   )r,   r-   c          
     óR  — ddl m} ddlm} |j	                  || «      j                  ||r |D �cg c]  }|j	                  ||«      ‘Œ c}ng |xs i «      }t        ||«      sJ ‚|j                  |«       |j                  j                  |«       t        | «      }|r ||Ž ‚|‚c c}w )Nr   )ÚExceptionVals)ÚSourcelessBuilder)Úsymbolic_convertrâ   Úvariables.builderrã   ÚcreateÚcall_functionr­   Ú_attach_traceback_to_exceptionÚexn_vt_stackÚset_current_exceptionrà   )	rß   Útxr,   r-   râ   rã   ÚaÚexception_vtÚ
raised_excs	            r   Úraise_observed_exceptionrï   ¡  s¬   € õ 0Ý4ð %×+Ñ+¨B°Ó9×GÑGØ
Ù;?±$Ó7±$¨QÐ	×	!Ñ	! " aÕ	(°$Ò7ÀRØŠ�"ó€Lô
 �l MÔ2Ð2Ð2Ø×%Ñ% lÔ3Ø‡O�O×)Ñ)¨,Ô7Ü.¨xÓ8€JáÙ˜$ÐÐØ
Ðùò 	8s   ¯B$
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)re   Ú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_verboserW   Ú_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)ri   ÚindentÚlstrip)Ú.0Úhints     r   Ú	<genexpr>z-format_graph_break_message.<locals>.<genexpr>  s-   è ø€ ð ÙHMÀˆ
”X—_‘_ T¨6Ó2×9Ñ9Ó;Õ;Éùs   ‚13z
  Explanation: z

  Developer debug context: z:

 For more details about this graph break, please visit: )ri   r  r  ÚjoinÚget_gbid_documentation_link)rŠ   rþ   rÿ   r   Ú	hints_strrV   Ú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_mapr-  "  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)r-  r  )rŠ   ÚGRAPH_BREAK_SITE_URLÚgb_type_to_gb_id_maps      r   r  r  =  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.
    NrZ   zJ

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

rÁ   )	r  r"  ÚwarningÚ_NOTHINGÚhasattrrZ   r­   r„   rV   )	rŠ   rþ   rÿ   r   r  r  r‡   rV   Úpast_real_stacks	            r   r“   r“   X  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<  r>  r:   r!   r   r9  r9    s   „ óóôr!   r9  c                ó|   — t        | d«      r/|j                  d«      }|d   › d| j                  › |d   › |d   › �}|S )NÚ	_hop_namez
  Explanation:r   z
  Higher Order Operator: r   é   )r6  Ú	partitionr@  )ÚexcrV   Úliness      r   Ú!augment_exc_message_with_hop_namerE  Š  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').
rZ   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_enabledr6  rH  rr   r   rI  rJ  r,   r^   rE  r­   ÚKeyErrorr9  )rC  rV   ÚexportrK  rZ   Úold_msgÚnew_msgs          r   Úaugment_exc_messagerS  –  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&   )rL  ÚfilenameÚlinenoÚ
compile_id)r  rW  rU  rV  s       r   Úget_exc_messagerX  Ç  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 )NrZ   )r}   r[  r   Ú	from_list)rC  ÚframerZ   Ústack_above_dynamos       r   rM  rM  ×  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   rU  ÚlineÚappend)ÚstackÚ
user_stackr^  s      r   rZ  rZ  ø  sq   € Ü“€JÛˆØ�>‰>Ð!ØØ˜eŸn™nÑ,Øð Ðð ˜5Ÿ>™>Ñ)Ø�JŠJÐ4¸¿
¹
ÑBàØ×Ñ˜%Õ ð ð Ðr!   c                óh   — ddl m} t        j                  |› d�| «      }|r|j	                  d«      S y )Nr   )ÚTORCH_DYNAMO_RESUME_IN_PREFIXz_(\w+)_at_\d+)Úresume_executionrh  ÚreÚmatchÚgroup)re   rh  rk  s      r   Úremove_resume_prefixrm    s2   € Ý?ä�H‰HÐ5Ð6°oÐFÈÓM€EÙØ�{‰{˜1‹~ÐØr!   c                óÔ   — t        «       }| D ]X  }|j                  €Œt        |j                  «      }|r!|r|d   j                  |k(  r||d<   ||_        ŒH|j	                  |«       ŒZ |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>
    rG  )r   rU  rm  re   rd  )re  Ú	new_stackr^  re   s       r   Úcollapse_resume_framesrp    sl   € ô( “€IÛˆØ�>‰>Ð!ØÜ# E§J¡JÓ/ˆÙ™ )¨B¡-×"4Ñ"4¸Ò"<Ø!ˆI�b‰MØˆ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	   rM  r  r
   )rC  r	  rH  r^  rV   rZ   s         r   r  r  3  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 )	Nrt  z	<unknown>z (ru  rs  rv  r   Ú))r}   )r	  s    r   Úformat_frame_infory  N  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: )ry  )r	  ÚreasonÚ
frame_infos      r   Úformat_skip_frame_messager}  V  sB   € ØÐÜ& tÓ,ˆ
àDÀZÀLð QØ�hð ð	
ðØ�hð ð	
r!   c           	     ó¦   — t         j                  rt        | |||«      S d|j                  › d|j                  › d|j
                  › dt        «       › �S )Nrr  r«   rs  z 
due to: 
)r   rr   r  rt  ru  rv  r	   )rC  r	  rH  r^  s       r   Úformat_error_msgr  d  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Optional[list[Any]]r-   zOptional[dict[str, Any]]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   )rC  r‚   rV   r^   r/   r^   )r¬   F)rC  r‚   rV   r^   rP  r’   r/   r0   )r  r‚   rW  r   r/   z#tuple[Optional[str], Optional[int]])r/   r   r&   )rC  r‚   r^  úOptional[DynamoFrameType]r/   rÅ   )re  r   r/   r   )re   r^   r/   r@   )re  z!StackSummary | list[FrameSummary]r/   r   )NN)
rC  r‚   r	  r�  rH  r@   r^  rƒ  r/   r^   )r	  r�  r/   r^   )r	  zOptional[types.CodeType]r{  r^   r/   r^   )Ú
__future__r   r   Úloggingrj  ri   ÚtypingÚenumr   r   Ú	functoolsr   Úpathlibr   rK  r   r	   r
   r   r   r   r   r   r   Útorch._guardsrW   Útorch._utils_internalr   r‘   r   Úutilsr   Útypesr   Úoutput_graphr   rä   r   r   r   r    Ú	getLoggerr1   r"  r  ÚgetArtifactLoggerr  ÚRuntimeErrorr$   r8   r=   r?   rF   rH   rK   rM   rO   rQ   rS   rc   rg   rm   rz   r„   r•   r—   r™   rœ   rž   r¨   r²   rµ   r·   r‚   rº   r¼   r¾   rÀ   rÇ   rÌ   rÎ   rÐ   rÒ   rÔ   rÖ   rØ   rÚ   ÚStopIterationÚLookupErrorÚ
IndexErrorÚGeneratorExitrO  ÚAttributeErrorÚNotImplementedErrorÚ	TypeErrorrÞ   rà   rï   rò   Ú_subclassesÚfake_tensorÚDataDependentOutputExceptionÚDynamicOutputShapeExceptionÚUnsupportedOperatorExceptionÚUnsupportedFakeTensorExceptionÚ$UnsupportedMutationAliasingExceptionÚ!exceptions_allowed_to_be_fallbackr  r  r-  r  Úobjectr5  r“   r9  rE  rS  rX  r[  rM  rZ  rm  rp  r  ry  r}  r  r:   r!   r   Ú<module>r¢     sS  ðÝ "ðó2 Û Û 	Û Û ß Ý Ý ß XÕ Xß 9Ó 9ã Ý 1å Ý ñ Ûå'å0Ý;ß9óð €g×Ñ˜Ó!€Ø—>‘>×3Ñ3°H¸nÓMÐ ôB˜<ô Bô$	Ð3ô 	ô	Ð!5ô 	ô Ð*ô  ô	 ô 	ô /ô ô	 /ô 	ô	 ô 	ô	 _ô 	ô	Ð$ô 	ô
Ð,ô 
ô
Ð)ô 
ô	
Ð(ô 	
ô'Ð+ô 'ô"
EÐ,ô 
Eô$*Ð&ô *ôB	Ð+?ô 	ô	Ð)ô 	ô	Ð1ô 	ô
Ð2ô ô8�Dô 8ô�ô ô2Ð*ô ô	Ð2ô 	ô
Ð#7ô 
ô	�Yô 	ô	˜iô 	ô	Ð'ô 	ô

Ð,ô 

ôÐ 1ô ô 	Ð+ô 	ô
	Ð,ô 	ô
	Ð*ô 	ô
	Ð-ô 	ô	Ð.ô 	ô
	Ð,ô 	ô
	Ð"3ô 	ô	Ð)ô 	ð Ð,ØÐ$ØÐ"ØÐ(ØÐØÐ*ØÐ&ØÐ4ØÐ ð
Ð ó,ð !%Ø'+ñØðà!ðð ð	ð
 %ðð óó6.ð< 
×Ñ×!Ñ!×>Ñ>Ø	×Ñ×!Ñ!×=Ñ=Ø	×Ñ×!Ñ!×>Ñ>Ø	×Ñ×!Ñ!×@Ñ@Ø	×Ñ×!Ñ!×FÑFð%Ð !ð#Øð#à
ð#ð ð	#ð
 ð#ð ð#ð ð#ð ó#ðLØðàðð ðð ð	ð
 	óñ4 �1Ôòó ðó4ñ0 ‹8€ð ØØñ"0àð"0ð ð"0ð ð	"0ð
 ð"0ð ð"0ð ð"0ð ð"0ð ó"0÷Nñ ó	ô.-ðb	Øð	Ø'ð	à(ó	ó)ð
 8<ðCØ	ðCØ4ðCàóCóBó óðJ &*Ø'+ð	Ø	ðà
ðð #ðð %ð	ð
 	óó6ó
ð" &*Ø'+ð		8Ø	ð	8à
ð	8ð #ð	8ð %ð		8ð
 	ô	8r!   