
    9iLd                    8   S SK Jr   S SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	J
r
  S SKJr  S SKJr  S SKJrJrJrJr  S SKJrJrJrJr  S SKrS SKJr  S	S
KJr  S	SKJr  \(       a  S SK r S SKJ!r!  S	SK"J#r#  S	SK$J%r%  S	SK J&r&  S~S jr'\RP                  " \)5      r*\RV                  RY                  \)S5      r- " S S\.5      r/ " S S\/5      r0 " S S\/5      r1 " S S\/5      r2 " S S\25      r3 " S S\25      r4 " S S\25      r5 " S  S!\25      r6 " S" S#\/5      r7 " S$ S%\/5      r8 " S& S'\/5      r9 " S( S)\/5      r: " S* S+\/5      r; " S, S-\;5      r< " S. S/\/5      r= " S0 S1\=5      r> " S2 S3\/5      r? " S4 S5\=5      r@ " S6 S7\=5      rA " S8 S9\=5      rB " S: S;\=5      rC " S< S=\@5      rD " S> S?\
5      rE " S@ SA\=5      rF " SB SC\/5      rG " SD SE\=5      rH " SF SG\/5      rI " SH SI\/5      rJ " SJ SK\K5      rL " SL SM\K5      rM " SN SO\/5      rN " SP SQ\/5      rO " SR SS\O5      rP " ST SU\O5      rQ " SV SW\Q5      rR " SX SY\Q5      rS " SZ S[\O5      rT " S\ S]\O5      rU " S^ S_\O5      rV " S` Sa\O5      rW " Sb Sc\O5      rX\Y\P\Z\Q\[\R\\\T\]\S\^\U\.\V\_\W\`\X0	raSSd jrbSSSe.         SSf jjrcSSg jrd\R                  R                  R                  \R                  R                  R                  \R                  R                  R                  \R                  R                  R                  \R                  R                  R                  4rl        SSh jrm\n" 5       ro\oSSi.       SSj jjrp              SSk jrq          SSl jrr\" S	Sm9SSn j5       rsSSo jrt\oSpSq.             SSr jjru " Ss St5      rvSSSu jjrw      SSv jrxSSw jry S     SSx jjrzSSy jr{SSz jr|SS{ jr}  S         SS| jjr~  S         SS} jjrg)    )annotationsN)autoEnum)	lru_cache)Path)extract_stack
format_excformat_listStackSummary)AnyNoReturnOptionalTYPE_CHECKING)get_file_path_2   )config)counters)	CompileId)DynamoTracerOutput)InstructionTranslatorBase)DynamoFrameTypec                ,    SU R                  SS5      -   $ )NzhFor more information about this error, see: https://pytorch.org/docs/main/generated/exportdb/index.html#_-)replace	case_names    Q/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/_dynamo/exc.pyexportdb_error_messager   :   s"    	I


C
%	&    graph_breaksc                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )TorchDynamoExceptionF   c                4   > [         TU ]  " U0 UD6  S U l        g N)super__init___torch_dynamo_tracer_outputselfargskwargs	__class__s      r   r(   TorchDynamoException.__init__G   s    $)&)IM(r    )r)   r,   r   r-   r   returnNone__name__
__module____qualname____firstlineno__r(   __static_attributes____classcell__r.   s   @r   r#   r#   F   s    N Nr    r#   c                      \ rS rSrSrg)InternalTorchDynamoErrorL    Nr4   r5   r6   r7   r8   r>   r    r   r<   r<   L       r    r<   c                      \ rS rSrSrg)ResumePrologueTracingErrorP   r>   Nr?   r>   r    r   rB   rB   P   r@   r    rB   c                  @   ^  \ rS rSr% S\S'   SS.SU 4S jjjrSrU =r$ )RestartAnalysisT   Optional[str]restart_reasonN)rH   c               ,   > Xl         [        TU ]  " U6   g r&   )rH   r'   r(   )r+   rH   r,   r.   s      r   r(   RestartAnalysis.__init__W   s    ,$r    )r,   r   rH   rG   r1   r2   r4   r5   r6   r7   __annotations__r(   r8   r9   r:   s   @r   rE   rE   T   s    !!CG      r    rE   c                      \ rS rSrSrg)SpeculationRestartAnalysis\   r>   Nr?   r>   r    r   rN   rN   \   r@   r    rN   c                      \ rS rSrSrg)UnspecializeRestartAnalysis`   r>   Nr?   r>   r    r   rQ   rQ   `   r@   r    rQ   c                      \ rS rSrSrg) CompileCollectiveRestartAnalysisd   r>   Nr?   r>   r    r   rT   rT   d   r@   r    rT   c                      \ rS rSrSrg)TensorifyScalarRestartAnalysish   r>   Nr?   r>   r    r   rW   rW   h   r@   r    rW   c                      \ rS rSrSrg)	SkipFramel   r>   Nr?   r>   r    r   rZ   rZ   l   r@   r    rZ   c                      \ rS rSrSrg)TorchRuntimeErrorp   r>   Nr?   r>   r    r   r]   r]   p   r@   r    r]   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )InvalidBackendt   c                .   > [         TU ]  SU< S35        g )NzInvalid backend: z=, see `torch._dynamo.list_backends()` for available backends.r'   r(   )r+   namer.   s     r   r(   InvalidBackend.__init__u   s    x'de	
r    r>   )rd   strr1   r2   r3   r:   s   @r   r`   r`   t   s    
 
r    r`   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ResetRequired{   c                L   > [         TU ]  [        R                  " S5      5        g )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(   ResetRequired.__init__|   s!    OO	
r    r>   r1   r2   r3   r:   s   @r   rh   rh   {   s    
 
r    rh   c                  F   ^  \ rS rSr        SU 4S jjrSS jrSrU =r$ )ShortenTraceback   c               2   > [         TU ]  " U0 UD6  Xl        g r&   )r'   r(   first_useful_frame)r+   rs   r,   r-   r.   s       r   r(   ShortenTraceback.__init__   s     	$)&)"4r    c                   U R                   nU R                  b  Ub  [        R                  (       a  U $ UR                  U R                  La1  UR
                  nUc   S5       eUR                  U R                  La  M1  U R                  U5      $ )Nz#internal error, please report a bug)__traceback__rs   r   verbosetb_frametb_nextwith_traceback)r+   tbs     r   remove_dynamo_frames%ShortenTraceback.remove_dynamo_frames   sz    ""*bjFNNKkk!8!88B>H#HH> kk!8!88 ""2&&r    rs   )r,   r   rs   Optional[types.FrameType]r-   r   r1   r2   )r1   ztyping.Self)r4   r5   r6   r7   r(   r|   r8   r9   r:   s   @r   rp   rp      s2    55.G5SV5	5' 'r    rp   c                  <   ^  \ rS rSr        SU 4S jjrSrU =r$ )BackendCompilerFailed   c                   > [        USS5      U l        X l        SU R                  < S[        U5      R                   SU 3n[
        TU ]  XCS9  g )Nr4   ?zbackend=z	 raised:
z: r~   )getattrbackend_nameinner_exceptiontyper4   r'   r(   )r+   
backend_fnr   rs   msgr.   s        r   r(   BackendCompilerFailed.__init__   sZ     $J
C@.**-Z_8M8V8V7WWYZiYjkDr    )r   r   )r   r   r   	Exceptionrs   r   r1   r2   r3   r:   s   @r   r   r      s9    	E	E #	E 6		E
 
	E 	Er    r   c                  L   ^  \ rS rSrSS.SU 4S jjjrS	S jrS
SS jjrSrU =r$ )Unsupported   Nr   c                  > [         TU ]  U5        [        R                  R                  R                  5       U l        Xl        S U l        U R                  5         X l
        g r&   )r'   r(   torch_guardsTracingContextr   
real_stackr   categoryadd_to_statsr   )r+   r   r   r.   s      r   r(   Unsupported.__init__   sG    --66DDF'+(1r    c                    U R                   c   e[        U R                      U R                  ==   S-  ss'   [        U R                      U R                     S::  a  [        U R                      U R                  	 g g )Nr   r   r   r   r   r+   s    r   remove_from_statsUnsupported.remove_from_stats   sc    }}((()Q.)DMM"488,1'1 2r    c                L    Xl         [        U   U R                  ==   S-  ss'   g )Nr   r   )r+   r   s     r   r   Unsupported.add_to_stats   s      488$)$r    )r   r   r   r   )r   rf   r   rG   r1   r2   rn   )unimplemented)r   rf   r1   r2   )	r4   r5   r6   r7   r(   r   r   r8   r9   r:   s   @r   r   r      s    ?C 2 22* *r    r   c                      \ rS rSrSrg)$UnknownPropertiesDuringBackwardTrace   r>   Nr?   r>   r    r   r   r      r@   r    r   c                      \ rS rSrSrg)RecompileError   r>   Nr?   r>   r    r   r   r      r@   r    r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ArgsMismatchError   c                $   > [         TU ]  U5        g r&   rc   r+   r   r.   s     r   r(   ArgsMismatchError.__init__       r    r>   r   rf   r1   r2   r3   r:   s   @r   r   r           r    r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )AttributeMutationError   c                $   > [         TU ]  U5        g r&   rc   r   s     r   r(   AttributeMutationError.__init__   r   r    r>   r   r3   r:   s   @r   r   r      r   r    r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )InfiniteGeneratorError   c                $   > [         TU ]  U5        g r&   rc   r   s     r   r(   InfiniteGeneratorError.__init__   r   r    r>   r   r3   r:   s   @r   r   r      s     r    r   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )SideEffectsError   c                $   > [         TU ]  U5        g r&   rc   r   s     r   r(   SideEffectsError.__init__   r   r    r>   r   r3   r:   s   @r   r   r      r   r    r   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )CondOpArgsMismatchError   z7
Internal error from cond() due to arguments mismatch.
c                $   > [         TU ]  U5        g r&   rc   r   s     r   r(    CondOpArgsMismatchError.__init__   r   r    r>   r   )r4   r5   r6   r7   __doc__r(   r8   r9   r:   s   @r   r   r      s     r    r   c                      \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       rSrg)UserErrorType   r>   N)r4   r5   r6   r7   r   DYNAMIC_CONTROL_FLOWANTI_PATTERNSTANDARD_LIBRARYCONSTRAINT_VIOLATIONDYNAMIC_DIMINVALID_INPUTINVALID_OUTPUT*UNSUPPORTED_ALIASED_MUTATED_DYNAMIC_INPUTSr8   r>   r    r   r   r      s>    66Lv6&KFMVN15.r    r   c                  @   ^  \ rS rSr S       SU 4S jjjrSrU =r$ )	UserError   c                   > UbF  [        U[        5      (       d   eUR                  S5      (       a  US-  nOUS-  nU[        U5      -  n[        TU ]  U5        Xl        X l        g)a  
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. 
)
isinstancerf   endswithr   r'   r(   
error_typemessage)r+   r   r   r   r.   s       r   r(   UserError.__init__   sf      i----||C  s
t))44C$r    )r   r   r&   )r   r   r   rf   r   rG   r1   r2   r3   r:   s   @r   r   r      s0    NR'.1>K	 r    r   c                      \ rS rSrSrg)SkipCodeRecursiveExceptioni  r>   Nr?   r>   r    r   r   r     r@   r    r   c                      \ rS rSrSrg)RecompileLimitExceededi  r>   Nr?   r>   r    r   r   r     r@   r    r   c                      \ rS rSrSrg)UnsafeScriptObjectErrori
  r>   Nr?   r>   r    r   r   r   
  r@   r    r   c                  0   ^  \ rS rSrSSU 4S jjjrSrU =r$ )UncapturedHigherOrderOpErrori  c                   > [         TU ]  U5        Xl        Ub  UU l        g [        R                  R
                  R                  5       U l        g r&   )r'   r(   r   r   r   r   r   r   )r+   r   r   r.   s      r   r(   %UncapturedHigherOrderOpError.__init__  sH     %  	 --;;= 	r    )r   r   r&   )r   rf   r   Optional[StackSummary]r1   r2   r3   r:   s   @r   r   r     s    
 
r    r   c                      \ rS rSrSrg)IncorrectUsagei  r>   Nr?   r>   r    r   r   r     r@   r    r   c                      \ rS rSrSrg)FailOnRecompileLimitHiti   r>   Nr?   r>   r    r   r   r      r@   r    r   c                      \ rS rSrSrg)PackageErrori$  r>   Nr?   r>   r    r   r   r   $  r@   r    r   c                      \ rS rSrSrg)ObservedExceptioni(  r>   Nr?   r>   r    r   r   r   (      r    r   c                  8   ^  \ rS rSr% S\S'   SU 4S jjrSrU =r$ )ObservedUserStopIterationi-  zOptional[Any]valuec                f   > [         TU ]  S5        [        U5      S:  a  US   U l        g S U l        g )Nzunhandled `raise StopIteration`r   )r'   r(   lenr   r*   s      r   r(   "ObservedUserStopIteration.__init__3  s.    :;t9q=aDJDJr    r   r0   rK   r:   s   @r   r   r   -  s     r    r   c                      \ rS rSrSrg)ObservedLookupErrori;  r>   Nr?   r>   r    r   r   r   ;  r   r    r   c                      \ rS rSrSrg)ObservedIndexErrori@  r>   Nr?   r>   r    r   r   r   @  r   r    r   c                      \ rS rSrSrg)ObservedKeyErroriE  r>   Nr?   r>   r    r   r   r   E  r   r    r   c                      \ rS rSrSrg)ObservedGeneratorExitiJ  r>   Nr?   r>   r    r   r   r   J  r@   r    r   c                      \ rS rSrSrg)ObservedAttributeErroriN  r>   Nr?   r>   r    r   r   r   N  r   r    r   c                      \ rS rSrSrg)ObservedRuntimeErroriS  r>   Nr?   r>   r    r   r  r  S  r   r    r  c                      \ rS rSrSrg)ObservedNotImplementedErroriX  r>   Nr?   r>   r    r   r  r  X  r@   r    r  c                      \ rS rSrSrg)ObservedTypeErrori\  r>   Nr?   r>   r    r   r  r  \  r   r    r  c                    U [         ;  a3  [        U S[        U 5      5      n[        SU S3[        40 5      [         U '   [         U    $ )Nr4   ObservedError)observed_exception_mapr   rf   r   r   )exc_typerd   s     r   get_dynamo_observed_exceptionr  n  sN    --xS];+/tfE"%6$8",
x( "(++r    )r,   r-   c                   SSK Jn  U" U 5      R                  X=(       d    / U=(       d    0 5      nUR                  R	                  U5        [        U 5      e)Nr   )BuiltinVariable)	variablesr  call_functionexn_vt_stackset_current_exceptionr  )r
  txr,   r-   r  exception_vts         r   raise_observed_exceptionr  w  sF     + #8,::2zr6<UWXLOO)),7
'
11r    c                8    U R                   R                  5         g r&   )r  clear_current_exception)r  s    r   handle_observed_exceptionr    s    2 OO++-r    c                   ^ [        X5      m[        R                  R                  SS U4S jS9  [        R                  ST5        [        R                  U5        [        X S9  g )Nartifactc                     SSS.$ Ndynamo_graph_break_reasonstring)rd   encodingr>   r>   r    r   <lambda>,unimplemented_with_warning.<locals>.<lambda>      / 
r    c                    > T $ r&   r>   graph_break_msgs   r   r  r         ?r    metadata_fn
payload_fn%s)from_exc)	format_error_msg_verboser   _loggingtrace_structuredgraph_breaks_logdebuglogwarningr   )ecoder   r$  s      @r   unimplemented_with_warningr4    sY     /q7O	NN##
 + $  41KK#"r    )r*  r   c                   U [         R                  R                  SS5      :w  d   eU[        La
  [	        XS9Ue[	        XS9e)NBREAKFr   )osenvironget_NOTHINGr   )r   r*  r   s      r   r   r     sA     "**..%0000x#3A
c
//r    c           	        ^ [        X5      m[        R                  R                  SS U4S jS9  [        R                  ST5        [        X#XEU SS9  g )Nr  c                     SSS.$ r  r>   r>   r    r   r  /unimplemented_v2_with_warning.<locals>.<lambda>  r!  r    c                    > T $ r&   r>   r#  s   r   r  r=    r%  r    r&  r)  Tr*  log_warning)r+  r   r,  r-  r.  r/  unimplemented_v2)r2  r3  gb_typecontextexplanationhintsr$  s         @r   unimplemented_v2_with_warningrF    sT     /q7O	NN##
 + $  41W{ASWXr    c                    [         R                  " US5      R                  5       nSR                  S U 5       5      n[         R                  " US5      R                  5       nU  SU SU SU S3nU$ )N    r   c              3  r   #    U  H-  nS [         R                  " US5      R                  5       -   v   M/     g7f)z  Hint: rH  N)rk   indentlstrip).0hints     r   	<genexpr>-format_graph_break_message.<locals>.<genexpr>  s,      HM
X__T6299;;s   57z
  Explanation: z

  Developer debug context: )rk   rJ  rK  join)rB  rC  rD  rE  	hints_strr   s         r   format_graph_break_messagerR    s     //+v6==?K		 HM I oogv.557G 		 
} 
 #9 %C Jr    )maxsizec                     [        [        5      R                  5       R                  n [	        S[        U 5      S5      n[        U5       n[        R                  " U5      nSSS5        0 nWR                  5        H  u  pgU H
  nXeUS   '   M     M     U$ ! , (       d  f       N;= f! [         a"  n[        R                  SU5        0 n SnANeSnAff = f)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).
 zgraph_break_registry.jsonNz%Error accessing the registry file: %sGb_type)r   __file__resolveparentr   rf   openjsonloadr   r0  erroritems)	
script_dirregistry_pathfregistryr2  mappingkventrys	            r   _load_gb_type_to_gb_id_maprg    s    	(^++-44
'J!<
 - Ayy|H ! G E()E)$%  ! N !  		91=s6   AB' 
B!B' 
B$ B' $B' '
C1CCc                X    Sn[        5       nX;   a  U SX    R                  S5       S3$ g)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)rg  rK  )rB  GRAPH_BREAK_SITE_URLgb_type_to_gb_id_maps      r   get_gbid_documentation_linkrm    sJ     	F  67&#$B';'D'K'KD'Q&RRWX	
 r    Fr?  c                   [        XX#5      n[        U 5      nU(       a  USU 3-  nU(       a  [        R                  U5        U[        La  [        U5      Ue[        U5      e)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.
z9
 For more details about this graph break, please visit: )rR  rm  r0  r1  r:  r   )rB  rC  rD  rE  r*  r@  r   documentation_links           r   rA  rA  6  sa    & %W{
JC4W=KL^K_``Cx#H,
c
r    c                  2    \ rS rSrSS jrSS jrSS jrSrg)	KeyErrorMsgiY  c                    Xl         g r&   r   )r+   r   s     r   r(   KeyErrorMsg.__init__Z  s    
r    c                ,    [        U R                  5      $ r&   )rf   r   r   s    r   __str__KeyErrorMsg.__str__]  s    4::r    c                "    U R                  5       $ r&   )ru  r   s    r   __repr__KeyErrorMsg.__repr__`  s    ||~r    r   N)r   r   r1   r2   )r1   rf   )r4   r5   r6   r7   r(   ru  rx  r8   r>   r    r   rq  rq  Y  s    r    rq  c                   SS K nS U l        [        U 5      nUb?  [        U5      S:  a0  US   U l        USSR	                  UR                  U5      5       3-  n[        R                  (       a1  [        U S5      (       a   USU R                   SU R                   S3-  n[        R                  (       d  [        U S	5      (       a  US
-  n[        U S5      (       a  [        U R                  S5      (       am  [        U R                  S5      (       a5  USU R                  R                   SU R                  R                   S3-  nOUSU R                  R                   S3-  n[        U R                  5      S:X  a  SO[        U R                  S   5      n[!        U ["        5      (       a$  [%        XQ-   5      4U R                  SS  -   U l        g XQ-   nU4U R                  SS  -   U l        g )Nr   z
from user code:
 rU  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   rP  r
   r   replay_record_enabledhasattrr|  rw   r   r}  r~  r,   rf   r   KeyErrorrq  )excr   exportr  r   old_msgnew_msgs          r   augment_exc_messager  d  s   '+C$$J#j/A"5+5b>(%bggi.C.CJ.O&P%QRR##5F(G(G01D1D0E F++,E3	

 >>gc<88J	
 s%&&7_, , 3&&77/0C0C0Q0Q/R S0030C0C0P0P/QQSUC /0C0C0Q0Q/R S_ _C
 MQ&bC,<G#x  .0388AB<?-:,r    c                    S nS nU R                   b,  U R                   R                  nU R                   R                  nXl        X#4$ r&   )r  filenamelineno
compile_id)r2  r  r  r  s       r   get_exc_messager    sJ     HF%%111:://66Lr    c                 (    [        [        5       5      $ r&   )filter_stackr   r>   r    r   get_stack_above_dynamor    s    ((r    c                    [        U SS 5      nUc  g Ub  [        5       nO
[        5       n[        R                  " X2-   5      $ )Nr   )r   r  r   	from_list)r  framer   stack_above_dynamos       r   r  r    sK     lD1J  45)^!!"4"ABBr    c                    [        5       nU  Hi  nUR                  c  M  SUR                  ;   a    U$ SUR                  ;   d!  UR                  (       a  SUR                  ;   a  MX  UR                  U5        Mk     U$ )Nconvert_frame
eval_frameztorch._dynamo.optimize()r   r  lineappend)stack
user_stackr  s      r   r  r    sq    J>>!enn,  5>>)JJ4

B%   r    c                t    SSK Jn  [        R                  " U S3U 5      nU(       a  UR	                  S5      $ g )Nr   )TORCH_DYNAMO_RESUME_IN_PREFIXz_(\w+)_at_\d+)resume_executionr  rematchgroup)rd   r  r  s      r   remove_resume_prefixr    s2    ?HH56oFME{{1~r    c                    [        5       nU  He  nUR                  c  M  [        UR                  5      nU(       a&  U(       a  US   R                  U:X  a  X!S'   X2l        MT  UR	                  U5        Mg     U$ )a  
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>
r{  )r   r  r  rd   r  )r  	new_stackr  rd   s       r   collapse_resume_framesr    sh    ( I>>!#EJJ/)B-"4"4"<!bMJU#  r    c                    SUR                    SUR                   SUR                   S3nUS-  nU[        5       -  n[	        X5      nUb,  US-  nUSR                  [        U5      5      -  nUS-  nUS-  nU$ )	NWON'T CONVERT r    line r   z.========== TorchDynamo Stack Trace ==========
zY
========== The above exception occurred while processing the following code ==========

rU  z
==========)co_nameco_filenameco_firstlinenor	   r  rP  r
   )r  r3  r|  r  r   r   s         r   r+  r+    s     a(8(8'9@S@S?TTVW  CCC:<C+J	
 	rww{:.//txJr    c           	         [         R                  (       a  [        XX#5      $ SUR                   SUR                   SUR
                   S[        5        3$ )Nr  r   r  z 
due to: 
)r   rw   r+  r  r  r  r	   )r  r3  r|  r  s       r   format_error_msgr    sS     ~~'?JJDLL>4+;+;*< ==8 8r    )r   rf   r1   rf   )r
  type[Exception]r1   ztype[ObservedException])
r
  r  r  r   r,   zOptional[list[Any]]r-   zOptional[dict[str, Any]]r1   r   )r  r   r1   r2   )r2  r   r3  types.CodeTyper   rf   r1   r   )r   rf   r*  r   r   rG   r1   r   )r2  r   r3  r  rB  rf   rC  rf   rD  rf   rE  	list[str]r1   r   )
rB  rf   rC  rf   rD  rf   rE  r  r1   rf   )r1   zdict[str, Any])rB  rf   r1   rG   )rB  rf   rC  rf   rD  rf   rE  r  r*  r   r@  boolr1   r   )r   F)r  r   r   rf   r  r  r1   r2   )r2  r   r  r   r1   z#tuple[Optional[str], Optional[int]])r1   r   r&   )r  r   r  Optional[DynamoFrameType]r1   r   )r  r   r1   r   )rd   rf   r1   rG   )NN)
r  r   r3  r  r|  rG   r  r  r1   rf   )
__future__r   r[  loggingr7  r  rk   typingenumr   r   	functoolsr   pathlibr   r  r   r	   r
   r   r   r   r   r   torch._guardsr   torch._utils_internalr   rU  r   utilsr   typesr   output_graphr   symbolic_convertr   r   r   	getLoggerr4   r0  r,  getArtifactLoggerr.  RuntimeErrorr#   r<   rB   rE   rN   rQ   rT   rW   rZ   r]   r`   rh   rp   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GeneratorExitr  AttributeErrorNotImplementedError	TypeErrorr	  r  r  r  _subclassesfake_tensorDataDependentOutputExceptionDynamicOutputShapeExceptionUnsupportedOperatorExceptionUnsupportedFakeTensorException$UnsupportedMutationAliasingException!exceptions_allowed_to_be_fallbackr4  objectr:  r   rF  rR  rg  rm  rA  rq  r  r  r  r  r  r  r  r+  r  r>   r    r   <module>r     s   "2   	 	      J J 9 9  1   '0;& !>>33HnM N< N	3 		!5 	 *  	 		/ 		 		_ 		$ 		, 	
) 
	
( 	
'+ '"
E, 
E*& *(	; 		) 	 
[ 
[ { 
/ 8D 8 0	!5 		[ 		2 	
#7 
	Y 		i 		' 		, 	
 1 	+ 	
	, 	
	* 	
	- 		. 	
	, 	
	"3 		) 	 ,$"(*&4 
 , !%'+22!2 	2
 %2 2 .< 
!!>>	!!==	!!>>	!!@@	!!FF% !##&#-0##0 8 "*d0	006C00YY
Y Y 	Y
 Y Y Y8  	
 	, 1 2>   	   F ,-^		'	(	)
 8<C	C4CCB J &*'+		
 # %	
 	< &*'+		8		8
	8 #	8 %		8
 		8r    