
    ^j                       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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 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 m!Z! d dlm"Z" d	dl#m$Z$ d	dl%m&Z& d	dlm'Z'm(Z( ddZ) ejT                  e+      Z,ejZ                  j]                  e+d      Z/ e0d      Z1ddZ2 G d de3      Z4ddZ5ddZ6	 	 	 	 	 	 ddZ7 G d de3      Z8 G d de8      Z9 G d de8      Z: G d  d!e8      Z; G d" d#e;      Z< G d$ d%e;      Z= G d& d'e;      Z> G d( d)e;      Z? G d* d+e;      Z@ G d, d-e;      ZA G d. d/e8      ZB G d0 d1e8      ZC G d2 d3e8      ZD G d4 d5e8      ZE G d6 d7e8      ZF G d8 d9eF      ZG G d: d;e8      ZH G d< d=e8      ZI G d> d?e8      ZJ G d@ dAe8      ZK G dB dCe8      ZL G dD dEe      ZM G dF dGe8      ZN G dH dIe8      ZO G dJ dKe8      ZP G dL dMe8      ZQ G dN dOeR      ZS G dP dQe8      ZT G dR dSe8      ZU G dT dUeU      ZV G dV dWeU      ZW G dX dYeW      ZX G dZ d[eW      ZY G d\ d]eU      ZZ G d^ d_eU      Z[ G d` daeU      Z\ G db dceU      Z] G dd deeU      Z^e_eVe`eWeaeXebeZeceYede[e3e\eee]efe^i	ZgddfZhdddg	 	 	 	 	 	 	 	 	 ddhZiddiZjddjZkddkZlej                  j                  j                  ej                  j                  j                  ej                  j                  j                  ej                  j                  j                  ej                  j                  j                  fZt	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddlZu	 	 	 	 	 	 	 	 	 	 ddmZv ed	n      ddo       ZwddpZx ey       Zzezdqdqdr	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddsZ{ G dt du      Z|ddvZ}dddwZ~	 	 	 	 	 	 ddxZddyZddzZ	 d	 	 	 	 	 dd{Zdd|Zdd}Zdd~Z	 	 d	 	 	 	 	 	 	 	 	 ddZddZddZ	 	 d	 	 	 	 	 	 	 	 	 ddZy)    )annotationsN)autoEnum)	lru_cache)Path)
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    \/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/exc.pyexportdb_error_messager   :   s"    	I


C
%	&    graph_breaks)_torch_dynamo_tracer_outputfirst_useful_frameframe_exec_strategyc                    | S N argss    r   _safe_exception_argsr*   O   s    Kr    c                  ,     e Zd ZU ded<   d fdZ xZS )_SerializedExceptionstr_dynamo_original_exception_typec                    t         |   t        |             t        |      j                   dt        |      j
                   | _        y )N.)super__init__r-   type
__module____qualname__r.   )selfexc	__class__s     r   r2   z_SerializedException.__init__V   s@    S"Cy##$Ad3i&<&<%=> 	,r    )r7   BaseExceptionreturnNone__name__r4   r5   __annotations__r2   __classcell__r8   s   @r   r,   r,   S   s    %((
 
r    r,   c                    t        |       S r&   )r,   )r7   s    r   _safe_inner_exceptionrB   ]   s    $$r    c                    i }| j                         D ]V  \  }}|t        v st        |t        j                        rd ||<   .|dk(  rt        |t
              rt        |      ||<   R|||<   X |S )Ninner_exception)items_EXCEPTION_STATE_ATTRS_TO_DROP
isinstancetypes	FrameTyper9   rB   )stateresultnamevalues       r   _safe_exception_staterN   a   so    F{{} !e11Zu5WF4L&&:e]+K07F4L F4L! Mr    TorchDynamoExceptionc                T    | j                  |       }t        j                  |g|  |S r&   )__new__r9   r2   )exc_typer)   r7   s      r   #_reconstruct_torch_dynamo_exceptionrS   m   s,     

8
$C3&&Jr    c                  <     e Zd ZdZd fdZddZddZd	dZ xZS )
rO   a6  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 r&   )r1   r2   r"   r$   )r6   r)   kwargsr8   s      r   r2   zTorchDynamoException.__init__   s%    $)&)FJ(=A r    c                l    t         t        |       t        | j                        f| j	                         fS r&   )rS   r3   r*   r)   __getstate__r6   s    r   
__reduce__zTorchDynamoException.__reduce__   s1    /$Z-dii89
 	
r    c                ,    t        | j                        S r&   )rN   __dict__rY   s    r   rX   z!TorchDynamoException.__getstate__   s    $T]]33r    c               @    || j                   j                  |       y y r&   )r\   update)r6   rJ   s     r   __setstate__z!TorchDynamoException.__setstate__   s    MM  ' r    )r)   r   rV   r   r:   r;   )r:   tuple[Any, ...]r:   dict[str, Any])rJ   zdict[str, Any] | Noner:   r;   )	r=   r4   r5   __doc__r2   rZ   rX   r_   r?   r@   s   @r   rO   rO   u   s    	B

4(r    c                      e Zd Zy)InternalTorchDynamoErrorNr=   r4   r5   r'   r    r   re   re          r    re   c                      e Zd Zy)ResumePrologueTracingErrorNrf   r'   r    r   ri   ri      rg   r    ri   c                  2     e Zd ZU ded<   ddd fdZ xZS )RestartAnalysis
str | Nonerestart_reasonN)rm   c               ,    || _         t        |   |  y r&   )rm   r1   r2   )r6   rm   r)   r8   s      r   r2   zRestartAnalysis.__init__   s    ,$r    )r)   r   rm   rl   r:   r;   r<   r@   s   @r   rk   rk      s    @D    r    rk   c                      e Zd Zy)SpeculationRestartAnalysisNrf   r'   r    r   rp   rp      rg   r    rp   c                      e Zd ZdZy)AutogradGradRestartAnalysiszRaised when autograd.grad consumed grad_fns that are returned.

    On restart, autograd.grad will graph break instead of being traced.
    Nr=   r4   r5   rc   r'   r    r   rr   rr      s    r    rr   c                      e Zd ZdZy)RequiresGradRestartAnalysiszRaised 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.
    Nrs   r'   r    r   ru   ru      s    r    ru   c                      e Zd Zy)UnspecializeRestartAnalysisNrf   r'   r    r   rw   rw      rg   r    rw   c                      e Zd Zy) CompileCollectiveRestartAnalysisNrf   r'   r    r   ry   ry      rg   r    ry   c                      e Zd Zy)TensorifyScalarRestartAnalysisNrf   r'   r    r   r{   r{      rg   r    r{   c                      e Zd Zy)	SkipFrameNrf   r'   r    r   r}   r}      rg   r    r}   c                  "     e Zd Zdd fdZ xZS )TorchRuntimeErrorc                    t         |   |       || _        ||| _        y t        j                  j
                  j                         | _        y r&   r1   r2   msgtorch_guardsTracingContextextract_stack
real_stackr6   r   r   r8   s      r   r2   zTorchRuntimeError.__init__   J     %  	 --;;= 	r    r&   r   r-   r   StackSummary | Noner:   r;   r=   r4   r5   r2   r?   r@   s   @r   r   r          
 
r    r   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.)r1   r2   )r6   rL   r8   s     r   r2   zInvalidBackend.__init__   s    x'de	
r    )rL   r-   r:   r;   r   r@   s   @r   r   r      s    
 
r    r   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.
                )r1   r2   textwrapdedent)r6   r8   s    r   r2   zResetRequired.__init__   s!    OO	
r    r:   r;   r   r@   s   @r   r   r      s    
 
r    r   c                  8     e Zd Z	 	 	 	 	 	 	 	 d fdZddZ xZS )ShortenTracebackc               2    t        |   |i | || _        y r&   )r1   r2   r#   )r6   r#   r)   rV   r8   s       r   r2   zShortenTraceback.__init__   s     	$)&)"4r    c                   | j                   }| j                  |t        j                  r| S |j                  | j                  ur2|j
                  }|t        d      |j                  | j                  ur2| j                  |      S )Nz#internal error, please report a bug)__traceback__r#   r   verbosetb_frametb_nextAssertionErrorwith_traceback)r6   tbs     r   remove_dynamo_framesz%ShortenTraceback.remove_dynamo_frames   s{    ""*bjFNNKkk!8!88Bz$%JKK kk!8!88 ""2&&r    )r)   r   r#   types.FrameType | NonerV   r   r:   r;   )r:   ztyping.Self)r=   r4   r5   r2   r   r?   r@   s   @r   r   r      s-    55.D5PS5	5'r    r   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 )Nr=   ?zbackend=z	 raised:
z: )r#   )getattrbackend_namerD   r3   r=   r1   r2   )r6   
backend_fnrD   r#   r   r8   s        r   r2   zBackendCompilerFailed.__init__   s_     $J
C@.**-Z_8M8V8V7WWYZiYjk1CDr    )r   r   rD   	Exceptionr#   r   r:   r;   r   r@   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)r1   r2   r   r   r   r   r   r   
skip_framecategoryadd_to_statsgb_typelogged)r6   r   r   r   r   r   r8   s         r   r2   zUnsupported.__init__  sc     	55CCEJ$$$(#*r    c                   | j                   t        d      t        | j                      | j                  xx   dz  cc<   t        | j                      | j                     dk  rt        | j                      | j                  = y y )Nz/category must be set before removing from statsr   r   )r   r   r   r   rY   s    r   remove_from_statszUnsupported.remove_from_stats$  si    ==  !RSS)Q.)DMM"488,1'1 2r    c                N    || _         t        |   | j                  xx   dz  cc<   y )Nr   )r   r   r   )r6   r   s     r   r   zUnsupported.add_to_stats+  s"     488$)$r    ) F)r   r-   r   r-   r   boolr   rl   r   r   r:   r;   r   )unimplemented)r   r-   r:   r;   )r=   r4   r5   r2   r   r   r?   r@   s   @r   r   r     sf    
   !%*. 	
   ( 
*2* *r    r   c                      e Zd Zy)$UnknownPropertiesDuringBackwardTraceNrf   r'   r    r   r   r   0  rg   r    r   c                      e Zd Zy)RecompileErrorNrf   r'   r    r   r   r   4  rg   r    r   c                      e Zd Zy)InfiniteGeneratorErrorNrf   r'   r    r   r   r   8      r    r   c                      e Zd ZdZy)CondOpArgsMismatchErrorz?
    Internal error from cond() due to arguments mismatch.
    Nrs   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)r=   r4   r5   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   C  s>    66Lv6&KFMVN15.r    r   c                  2     e Zd Z	 d	 	 	 	 	 	 	 d fdZ xZS )	UserErrorc                j   |Qt        |t              st        dt        |             |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.
        Nzcase_name must be a str, got r0    
F)rG   r-   r   r3   endswithr   r1   r2   r   r   r   r   r   r   r   
error_typer   message)r6   r   r   r   r8   s       r   r2   zUserError.__init__O  s      i-$'DT)_DU%VWW||C s
t))44C--66DDF$r    r&   )r   r   r   r-   r   rl   r:   r;   r   r@   s   @r   r   r   N  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   )	r1   r2   r   r   r   r   r   r   r   r   s      r   r2   zStepUnsupported.__init__m  s@    55CCEJ$r    r&   r   r   r@   s   @r   r   r   l  s     r    r   c                      e Zd Zy)UnsafeScriptObjectErrorNrf   r'   r    r   r   r   v  rg   r    r   c                  "     e Zd Zdd fdZ xZS )UncapturedHigherOrderOpErrorc                    t         |   |       || _        ||| _        y t        j                  j
                  j                         | _        y r&   r   r   s      r   r2   z%UncapturedHigherOrderOpError.__init__{  r   r    r&   r   r   r@   s   @r   r   r   z  r   r    r   c                      e Zd Zy)FailOnRecompileLimitHitNrf   r'   r    r   r   r     rg   r    r   c                      e Zd Zy)PackageErrorNrf   r'   r    r   r   r     rg   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&   )r1   r2   r   r   r   r   r   r6   r   r)   rV   r8   s       r   r2   zObservedException.__init__  sJ     	$)&) %  	 --;;= 	r    r)   r   r   r   rV   r   r:   r;   r   r@   s   @r   r   r     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 | NonerM   Nr   c               h    t         |   d|       t        |      dkD  r|d   | _        y d | _        y )Nzunhandled `raise StopIteration`r   r   )r1   r2   lenrM   r   s       r   r2   z"ObservedUserStopIteration.__init__  s5     	:zRt9q=aDJDJr    r   r<   r@   s   @r   r   r     s9    
 =A&9LO	 r    r   c                      e Zd Zy)ObservedLookupErrorNrf   r'   r    r   r   r     r   r    r   c                      e Zd Zy)ObservedIndexErrorNrf   r'   r    r   r   r     r   r    r   c                      e Zd Zy)ObservedKeyErrorNrf   r'   r    r   r   r     r   r    r   c                      e Zd Zy)ObservedGeneratorExitNrf   r'   r    r   r   r     rg   r    r   c                      e Zd Zy)ObservedAttributeErrorNrf   r'   r    r   r   r     r   r    r   c                      e Zd Zy)ObservedRuntimeErrorNrf   r'   r    r   r   r     r   r    r   c                      e Zd Zy)ObservedNotImplementedErrorNrf   r'   r    r   r   r     rg   r    r   c                      e Zd Zy)ObservedTypeErrorNrf   r'   r    r   r   r     r   r    r   c                    | t         vr3t        | dt        |             }t        d| dt        fi       t         | <   t         |    S )Nr=   ObservedError)observed_exception_mapr   r-   r3   r   )rR   rL   s     r   get_dynamo_observed_exceptionr     sN    --xS];+/tfE"%6$8",
x( "(++r    )r)   rV   c                  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t        dt        |             |j                  |       |j                  j                  |       t        |       }	|r |	| |	c c}w )Nr   )ExceptionVals)SourcelessBuilderzexpected ExceptionVals, got )symbolic_convertr  variables.builderr  rG   r-   createcall_functionr   r3   _attach_traceback_to_exceptionexn_vt_stackset_current_exceptionr   )
rR   txr)   rV   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
E6<RL lM2;D<N;OPQQ%%l3OO)),7.x8J%  
)
s   +Cc                *    t        t        | |g       y)z:Raise a TypeError as an observed exception during tracing.r(   N)r  	TypeErrorr  r   s     r   raise_type_errorr    s    Y#7r    c                *    t        t        | |g       y)z;Raise a ValueError as an observed exception during tracing.r(   N)r  
ValueErrorr  s     r   raise_value_errorr    s    Z3%8r    c                8    | j                   j                          y r&   )r	  clear_current_exception)r  s    r   handle_observed_exceptionr    s    2 OO++-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)rL   encodingr'   r'   r    r   <lambda>z,unimplemented_with_warning.<locals>.<lambda>O  s    / 
 r    c                      S r&   r'   )graph_break_msgs   r   r!  z,unimplemented_with_warning.<locals>.<lambda>S  s    ? r    )metadata_fn
payload_fnz%sT)r   contextexplanationhintsfrom_exclog_warning)format_error_msg_verboser   _loggingtrace_structuredgraph_breaks_logdebugr   )ecoder   r&  r'  r(  _unimplementedr#  s          @r   unimplemented_with_warningr3  <  sf      /q$7O	NN##
 + $  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: r5  N)r   indentlstrip).0hints     r   	<genexpr>z-format_graph_break_message.<locals>.<genexpr>i  s.      @D
X__T6299;;s   13z
  Explanation: z

  Developer debug context: z:

 For more details about this graph break, please visit: )r   r7  r8  joinget_gbid_documentation_link)r   r&  r'  r(  	hints_strr   documentation_links          r   format_graph_break_messager@  b  s     //+v6==?K		 HM I oogv.557G 		 
} 
 #9(C 5W=MN`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	exceptionrE   )
script_dirregistry_pathfregistrymappingkventrys           r   _load_gb_type_to_gb_id_maprT  |  s    
(^++-44
'J!<
 -  	$Ayy|H	$ G  *1 	*E()GE)$%	** 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)rT  r8  )r   GRAPH_BREAK_SITE_URLgb_type_to_gb_id_maps      r   r=  r=    sO     	F  67&&#$B';G'D'K'KD'Q&RRW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@  rJ  warning_NOTHINGhasattrr   rG   r   r   )	r   r&  r'  r(  r)  r*  r   r   past_real_stacks	            r   r   r     s    ( %Wg{E
JCCx8\*&11Oh,\\N"pqtpuvCc7J?SS*
	 c7J
//r    c                  $    e Zd ZddZddZddZy)KeyErrorMsgc                    || _         y r&   )rM   )r6   rM   s     r   r2   zKeyErrorMsg.__init__  s	    
r    c                ,    t        | j                        S r&   )r-   rM   rY   s    r   __str__zKeyErrorMsg.__str__  s    4::r    c                "    | j                         S r&   )rc  rY   s    r   __repr__zKeyErrorMsg.__repr__  s    ||~r    N)rM   r   r:   r;   )r:   r-   )r=   r4   r5   r2   rc  re  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      )r]  	partitionrg  )r7   r   liness      r   !augment_exc_message_with_hop_namerk    sQ     sK 01Qxj3CMM?58*USTXJ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"
rD   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_enabledr]  rn  r   rD   ro  rp  r)   r-   rk  rG   KeyErrorr`  )r7   r   exportrq  r   old_msgnew_msgs          r   augment_exc_messagery    s   '+C$$J#j/A"5+5b>(%bggi.C.CJ.O&P%QRR##5F(G01D1D0E F++,E3	

 >>gc<8J	
 s%&7_, 3&&7/0C0C0Q0Q/R S0030C0C0P0P/QQSUC /0C0C0Q0Q/R S_ _C
 MQ&bC,<G/W=G#x #.0388AB<?C-:,r    c                    d }d }| j                   ,| j                   j                  }| j                   j                  }|| _        ||fS r&   )rr  filenamelineno
compile_id)r0  r}  r{  r|  s       r   get_exc_messager~  $  sN     HF%%111:://66ALVr    c                    t               } t        j                  d      }||j                  }i }t        j                  dk\  rU|j
                  dk\  rFt        |j                               }|j
                  dz  }|t        |      k  r||   \  }}|d<   |d<   | j                  t        |j                  |j                  |j                  fddi|       |j                  }|| j                          | S )	Nr   )      r   rh  colno	end_colnolookup_lineF)r   sys	_getframef_codeversion_infof_lastilistco_positionsr   appendr
   co_filenamef_linenoco_namef_backreverse)stackframer1  rV   	positionsidxr   s          r   _extract_stack_with_positionsr  0  s     NEMM!E

||!#w&5==A+=T..01I--1$CS^#=Fs^:1fWovk':   "	
 	
 % 
& 
MMOLr    c                 (    t        t                     S r&   )filter_stackr  r'   r    r   get_stack_above_dynamor  O  s    5788r    c                    t        | dd       }|y |t               }n
t               }t        j                  ||z         S )Nr   )r   r  r   	from_list)r7   r  r   stack_above_dynamos       r   rs  rs  S  sM     lD1J  45)^!!"4z"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   r{  liner  )r  
user_stackr  s      r   r  r  t  sv    J 	!>>!enn,  5>>)JJ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_executionr  rematchgroup)rL   r  r  s      r   remove_resume_prefixr    s4    ?HH56oFME{{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>
    rm  )r   r{  r  rL   r  )r  	new_stackr  rL   s       r   collapse_resume_framesr    sx    ( I 	$>>!#EJJ/)B-"4"4"<!IbMEJEJ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
==========)r  r  co_firstlinenor   rs  r<  r	   )r7   r1  rn  r  r   r   s         r   r+  r+    s     a(8(8'9@S@S?TTVW  CCC:<CU+J	
 	rww{:.//txJr    c           	     Z    t        | dd       dt        | dd       dt        | dd       dS )	Nr  z	<unknown>z (r  r  r  r   ))r   )r1  s    r   format_frame_infor    sF    4K0
1 2D-56 7.231	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  )r1  reason
frame_infos      r   format_skip_frame_messager    sB    &t,
DZL Qh 	
h 	
r    c           	         t         j                  rt        | |||      S d|j                   d|j                   d|j
                   dt                S )Nr  r   r  z 
due to: 
)r   r   r+  r  r  r  r   )r7   r1  rn  r  s       r   format_error_msgr    sW     ~~'T?EJJDLL>4+;+;*< ==8 8r    )r   r-   r:   r-   )r)   r`   r:   r`   )r7   r9   r:   r,   )rJ   rb   r:   rb   )rR   ztype[TorchDynamoException]r)   r`   r:   rO   )rR   type[Exception]r:   ztype[ObservedException])
rR   r  r  r   r)   z(list[VariableTracker] | list[str] | NonerV   z!dict[str, VariableTracker] | Noner:   r   )r  r   r   r-   r:   r   )r  r   r:   r;   )r0  r   r1  types.CodeTyper   r-   r&  r-   r'  r-   r(  	list[str]r:   r   )
r   r-   r&  r-   r'  r-   r(  r  r:   r-   ra   )r   r-   r:   rl   )r   r-   r&  r-   r'  r-   r(  r  r)  r   r*  r   r   r   r:   r   )r7   r   r   r-   r:   r-   )r   F)r7   r   r   r-   rv  r   r:   r;   )r0  r   r}  r   r:   ztuple[str | None, int | None])r:   r   r&   )r7   r   r  DynamoFrameType | Noner:   r   )r  r   r:   r   )rL   r-   r:   r-   )r  z!StackSummary | list[FrameSummary]r:   r   )NN)
r7   r   r1  r  rn  rl   r  r  r:   r-   )r1  r  r:   r-   )r1  ztypes.CodeType | Noner  r-   r:   r-   )
__future__r   rH  loggingr  r  r   rH   typingenumr   r   	functoolsr   pathlibr   rq  r   r	   r
   r   r   r   r   torch._guardsr   torch._utils_internalr   r   r   utilsr   torch._dynamo.variablesr   r   output_graphr   r  r   r   r   r   	getLoggerr=   rJ  r,  getArtifactLoggerr.  	frozensetrF   r*   RuntimeErrorr,   rB   rN   rS   rO   re   ri   rk   rp   rr   ru   rw   ry   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   StopIterationLookupError
IndexErrorGeneratorExitru  AttributeErrorNotImplementedErrorr  r   r   r  r  r  r  _subclassesfake_tensorDataDependentOutputExceptionDynamicOutputShapeExceptionUnsupportedOperatorExceptionUnsupportedFakeTensorException$UnsupportedMutationAliasingException!exceptions_allowed_to_be_fallbackr3  r@  rT  r=  objectr\  r   r`  rk  ry  r~  r  r  rs  r  r  r  r+  r  r  r  r'   r    r   <module>r     s   "2   	 
       I I / /  1   7'0;9 g!>>33HnM  "+" 
< 
%	(0?(< (@	3 		!5 	 *  	 	/ / 	/ 		 		_ 		$ 	
, 

) 
	
( 	
'+ '$
E, 
E$*& *D	+? 		) 		1 	
2 8D 8$ <* 	2 	
#7 
	i 		' 	

, 

 1  	+ 	
	, 	
	* 	
	- 		. 	
	, 	
	"3 		) 	 ,$"(*&4 
 , 6:04! 3	
 . D8
9
.< 
!!>>	!!==	!!>>	!!@@	!!FF% !##
# 	#
 # # # #L  	
 	4 1 40 8 %0%0 %0 	%0
 %0 %0 %0 %0 %0T 	.-b		'	"	>9
 59C	C1CCB  L #'$(		
   "	
 	6
" #'$(		8		8
	8  	8 "		8
 		8r    